员工激励管理系统DB
@(吉毅、陈旭山)[闫朝伟|徐旺]
数据库设计
* 后台:PHP
* 数据库:MySQL
更新日志:
2016-03-24更新
usertasks里的taskstate任务状态0表示正在进行,1表示申请审核,2表示审核成功,3表示审核不通过,4表示取消,5表示任务过期。
当检测到taskstate=0并且过期(当天过期,在一定时期内过期,每天的过期,每月的过期)然后将taskstate=5;用户已经选择了的任务过期表示不让用户再看到正在进行的过期任务,而任务可否选择是由任务的taskdatetype决定的。
comtasks里的过期将curtimes置为0即可
2016-03-15更新
- companyinfos表里修改totalmoney为curmoney表示当前所剩金额,
2016-03-14更新
1.orders表里新增sendtime,confirmtime分别为发货时间和确认收货时间
orders里的state:0表示创建订单(提醒发货,时间为createat),1表示已经发货,sendtime为发货时间,2表示已经收货但未付款,confirmtime为确认收货时间,3表示已经收货,已经付款(由系统管理员),付款后updateat为付款时间。
2016-03-13更新
- 新增comsupplys表,表示公司所有福利所关联的提供商id信息,当用户获得福利时,在该表的needcount上加1,并将state置为1(可提醒发货)。当管理员点击发货后,将该表里的信息添加到orders表里,将need加到remaing字段上,并清空neecount。remaing将是该公司剩余品的件数,如果用户领取了某件,则在该字段上减1(userwelfares表里记录了对应的discountsid).
- 删除orders表中comwelfareid字段,因为多个福利可以对应一个供应商,并且福利id
- comwelfares表新增state字段,0表示福利正常,1表示福利已经被替换
2016-03-11更新
- 表comwelfares表里加入fromsyswfid字段表示从系统福利里导入的id,加入money价值字段.
2016-03-11更新
- 表users,admins里增加state字段,0表示正常,1表示用户被删除。
2016-03-10更新
- 表syswelfares新增supplytypeid和supplyid
- 表feedbacks新增comid
2016-03-07变更更新
- 表usertasks里新增comid公司id,增加finishtime任务结束时间,新增taskname,taskdesc,taskscore,needpic
2016-03-06变更更新
- 删除begintkbags直接用类型表作为初始大任务包,删除comtasks表里的companynum字段
- 在comtasks表里增加selected字段默认全为1,在systasks表里增加selected字段,默认全为0,为便于区别已经被公司选入的任务
2016-03-05变更更新
- companyinfos表里加入allmoney(历史总金额)字段,isremind(是否被提醒充值0未,1已提醒),remindtime(提醒时间),typename(类型名称)
2.
2016-03-03变更更新
- 员工:
- 员工注册需要输入性别和年龄--users表里加入sex和age字段。
- 企业:
- 企业注册---类型选择其他,则不能初始化任务。
- 企业审核---需管理员登录,并给出友情提示: 申请企业审核,必须成功介绍1家新企业加入益趣平台,数据库表之前已经给出了数据字段
- 企业福利---初始化福利不需要输入公司性别比例、年龄结构,这些信息由系统自动完成,导入福利包时两大类福利包内各提供3个福利包让其选择。福利积分不能修改。
- 企业页面---右上角增加联系客服:显示客服电话。
- 企业信息---企业信息设定里,加入“已介绍新企业加入”的数量----companyinfos表里加入introcount字段;
- 系统:
- 查询---按照公司名查询到的页面加入已成功介绍几家企业,取消下面的提醒发货按钮;在供应商里也取消提醒发货按钮
- 福利--生成福利,确定年龄段和性别属性,都单选。
公司所处年龄阶段的判别公式:
40岁以下员工比例高于60%: 偏青年;
40岁以下员工比例处于30%-60%:均衡;
40岁以下员工比例低于30%:偏中年。
公司所处性别结构的公式:
男性员工比例高于60%:偏男性;
男性员工比例处于30%-60%:均衡;
男性员工比例低于30%:偏女性。
- 2016-03-02更新
在companyinfos表中增加了如下字段:
totalstaff(总员工)默认为0 //便于查询(每次新用户要自增1)
totalclick(总点击量)默认为0
manager管理者姓名 //公司注册界面没有密码
email管理者email
phone管理者手机号
一、表结构设计
前言:
* 每张表建议都加入createdat(创建时间)与updatedat(更新时间)字段,时间记录是不可少的,下面的表中默认都没有写,但是实际建表应该加上
* 服务器触发器:
1. 用户日月积分到时间自动清0;
2. 公司任务表里的时间为每天,每月或者时间段的到时间自动清零(将属性totaltime清零,让用户无法看到)
1、users
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| (FK)companyid(公司id) |
|
与companyinfos表关联 |
| companynum(公司代码) |
|
为便于查询,将公司代码也直接记录 |
| username(姓名) |
|
|
| phonenum(手机号) |
|
|
| sex(性别) |
|
1男,2女(单选) |
| age(年龄) |
|
|
| email(邮箱) |
|
|
| password(密码) |
|
|
| jobinfo(职位描述) |
|
|
| headpicuri(头像) |
|
单个字符串,以用户id作为图片名称如:1.png |
| level(等级) |
|
像QQ等级一样 |
| idtype(第三方登录类型) |
|
第三方登录类型(1QQ,2微信,3新浪) |
| idnumber(第三方登录唯一id) |
|
第三方登录唯一id |
| dayscores(当日积分) |
|
过日要清零,需要定时器 |
| monthscores(当月积分) |
|
过月要清零,需要定时器 |
| totalscores(总积分) |
|
不清零 |
2、admins
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| (FK)companyid(公司id) |
|
关联companyinfos表 |
| companynum(企业代码) |
|
|
| username(用户名) |
|
|
| phonenum(手机号) |
|
|
| email(邮箱) |
|
|
| password(密码) |
|
|
| headpicuri(头像) |
|
|
| idtype(第三方登录类型) |
|
第三方登录类型(1QQ,2微信,3新浪) |
| idnumber(第三方登录唯一id) |
|
第三方登录唯一id |
3、roots
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| username(用户名) |
|
|
| phonenum(手机号) |
|
|
| email(邮件) |
|
|
| password(密码) |
|
|
| headpicuri(头像) |
|
|
| idtype(第三方登录类型) |
|
第三方登录类型(1QQ,2微信,3新浪) |
| idnumber(第三方登录唯一id) |
|
第三方登录唯一id |
4、companyinfos
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| companynum(企业代码) |
|
|
| companyname(公司名称) |
|
|
| **(FK)**typeid(公司类型) |
|
与companytypes表id关联 |
| typename(类型名称) |
|
|
| intronum(介绍人企业代码) |
|
|
| address(企业地址) |
|
|
| postcode(邮编) |
|
|
| idfrontpic(身份证正面照) |
|
|
| idbackpic(身份证反面照) |
|
|
| licencepic(营业执照照片) |
|
|
| state(认证状态) |
|
0未申请认证,1等待审核,2已认证 |
| allmoney(历史总金额) |
|
|
| curmoney(总金额) |
|
充钱的剩余金额 |
| totalstaff(总员工) |
|
默认为0 |
| totalclick(总点击量) |
|
默认为0 |
| manager |
|
管理者姓名 |
| email |
|
管理者email |
| phone |
|
管理者手机号 |
| introcount(已经介绍的企业数) |
|
|
| isremind |
|
是否被提醒充值,0未提醒,1已经提醒 |
| remindtime |
|
提醒的时间 |
admins(企业管理员)------companyinfos(公司信息):多对1
一个公司可以有多个管理员
5、companytypes
- 表名:公司类型表
- 说明:在注册的时候需要用到。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| typename(类型名称) |
|
如:培训类机构 |
删除 6、begintkbags
- 表名:初始化大任务包的任务包
- 说明:之前说不需要的,因为可以用公司类型就行了,但是不是所有的公司类型都被设置了任务包,所以要有字段表名哪些类型已经设置了大任务包。
- 表字段:
| 字段 |
类型 |
说明 |
| id(id字段) |
int |
autoincrement |
| name(大大任务包名称) |
|
就是companytypes里的类型名,为便于查询直接记录一次 |
| (FK)companytypeid(公司类别id) |
|
关联companytypes表id |
7、systaskbags
- 表名:系统管理员添加的任务包
- 说明:隶属于begintkbags包下,完全由系统管理员提供,里面的每项都是systasks表中数据的一个集合。
- 表字段:
| 字段 |
类型 |
说明 |
| id(id字段) |
int |
autoincrement |
| bagname(任务包名称) |
|
|
| (FK)begintkbagid(初始化大包id) |
|
关联begintkbags表id |
8、systasks
- 表名:系统管理员添加的任务表
- 说明:系统管理添加任务表的对象是公司
- 表字段:
| 字段 |
类型 |
说明 |
| id(id字段) |
int |
autoincrement |
| taskname(任务名) |
|
|
| taskdesc(任务描述) |
|
|
| taskscore(任务分数) |
|
|
| isneedpic(是否需要附件) |
|
|
| taskdatetype(有效期类型) |
|
两种1每天 2每月 |
| tasktarget(任务对象) |
|
默认为0代表全员(默认) |
| totaltimes(该任务可领取次数) |
|
-1为任意次数,1为1次,当减到0则不能被用户选择了 |
| (FK)bagtypes(包类型) |
|
这里直接在该表里写了类型,表名了任务只能设置在特定的包下,因为系统管理员在发布任务的时候都是在任务包里设置的,所以这里可以看做是完全一对一了systaskbags的id |
9、comtasks
- 表名:公司发布任务表
- 说明:在公司管理后台和系统管理后台都可以发布任务,字段也从中而来。
- 页面展示方式:
- 公司管理界面:直接查询该表
- 员工界面:可选任务列表==>通过对本表tasktarget查询筛选出的任务---usertasks表查询已经选择的任务==得到需要展示的任务列表
- 表字段:
| 字段 |
类型 |
说明 |
| id(id字段) |
int |
autoincrement |
| **(FK)**companyid(公司id) |
|
与companyinfos表id关联 |
| 删除companynum(公司代码) |
varchar(10) |
|
| taskname(任务名) |
|
|
| taskdesc(任务描述) |
|
|
| taskscore(任务分数) |
|
|
| isneedpic(是否需要附件) |
|
|
| taskdatetype(有效期类型) |
|
三种1当天 2每天 3起始时间到结束时间 |
| startdate(起始时间) |
|
|
| enddate(结束时间) |
|
|
| tasktarget(任务对象) |
|
,0,为全员 ,1,2,3,为指定用户1,2,3;查询是用,id,查询可简便查询 |
| totaltimes(总可领取次数) |
|
-1为任意次数,正整数为所表示次数(任务属性,值不变) |
| currtimes(当前可领次数) |
|
-1为任意次数,1为1次,当减到0则不能被用户选择了 |
| **(FK)**fromtaskid(从培训包里导入时,记录systasks里的id) |
|
关联systasks表id,便于实现区别导入和未导入的任务 |
10、usertasks
- 表名:用户选择后任务表
- 说明:用户从可选择的任务列表里选择做任务后,该任务id将记录在该表
- 表字段:
| 字段 |
类型 |
说明 |
| id(id字段) |
int |
autoincrement |
| userid(用户id) |
|
|
| **(FK)**comtaskid(公司任务id) |
|
关联comtasks表id |
| taskstate(任务状态) |
|
0正在进行,1申请审核(员工界面显示待审核),2审核通过,3审核不通过(将任务放入可选任务中,用户必须重新选择该任务重做),4撤销(扣除积分,从用户总积分里减去(日月总都要减掉),然后插入到用户积分表一条扣一分记录。) |
| remark(备注) |
|
如果是撤销,可能会有备注 |
11、beginwfbags
- 表名:初始福利包表
- 说明:该表是在系统管理员界面设置初始福利包界面要显示的列表数据,然后通过点击该项,显示月福利包和生涯福利包。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| beginbagname(初始福利包名) |
|
|
beginwfbags(初始福利包名表)------>welfarebags(福利包表)------->welfares(福利表)
系统管理员点击初始福利包-------显示一系列福利包--------单个福利包下显示一系列福利
(去掉)welfarebags
- 表名:福利包去掉,因为只有两种福利,直接将包字段加入syswelfares表,便于查询
- 说明:单项福利只能通过福利包展现,而此福利包又包含在初始福利包里
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| bagname(福利包名) |
|
|
| beginbagid(初始福利包id) |
|
与初始福利包表id关联 |
只有两个福利包,一个是每月福利包,一个是生涯福利包
12、syswelfares
- 表名:系统管理员生成的福利项表
- 说明:只能由系统管理员添加,企业管理员可以在新福利中修改,而在初始化福利时只能选择的。单项福利只能通过福利包展现给企业管理员。所以添加都是在福利包添加的。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| welfarename(福利名) |
|
|
| welfaredesc(福利描述) |
|
|
| needscore(需要积分数) |
|
|
| encourage(激励指数) |
|
里面保存数值,展示用百分比 |
| age(年龄段) |
|
1偏青年,2均衡,3偏中年(单选) |
| sex(适合性别) |
|
1偏男性,2均衡,3偏女性(单选) |
| discountid(优惠id) |
|
对应discounts表id |
| picuris(图片地址) |
|
数组,如:123.png,234.png,345.jpg等 |
| (FK)eginbagid(初始大福利包id) |
|
关联beginwfbags表id |
| welfaretype(福利类型) |
|
1月度福利,2生涯福利 |
welfares(福利)------>discounts(优惠)------>supplys(供应商))
供应商只通过优惠展现,优惠只通过福利发放,福利只通过福利包给管理员选择
13、comwelfares
- 表名:公司福利表
- 说明:公司只能导入系统管理员设置好的福利,在导入的时候写入该表。也就是说福利与公司挂了钩,公司不能修改积分只能查重替换
并且该表里同一个公司id下的福利不能有相同的积分数目的福利(同一个积分数只能有一个福利)
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| companyid(公司id) |
|
|
| welfarename(福利名) |
|
|
| welfaredesc(福利描述) |
|
|
| needscore(需要积分数) |
|
与welfares表主要该字段不同 |
| encourage(激励指数) |
|
里面保存数值,展示用百分比 |
| age(年龄段) |
|
?1青年,2中年,3老年(应该可多选,均用数组展示) |
| sex(适合性别) |
|
0男女均适合,1男,2女 |
| **(FK)**discountid(优惠id) |
|
对应discounts表id |
| picuris(图片地址) |
|
数组,如:123.png,234.png,345.jpg等 |
| welfaretype(福利类型) |
|
1月度福利,2生涯福利 |
14、userwelfares
- 表名:用户取得的福利表
- 说明:为便于查询是否领取福利等信息
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| userid(用户id) |
|
|
| **(FK)**comwelfareid(公司福利id) |
|
关联comwelfares表id |
| discountid(福利所关联的优惠id) |
|
|
| getidentify(领取福利的唯一标识) |
|
通常为二维码展示 |
| state(取得状态) |
|
0未领取,1已领取 |
| welfaretype(福利类型) |
|
1月度福利,2生涯福利 |
加了福利类型,可以清楚知道用户已经获得的月度福利和生涯福利
这个userwelfares关联了comwelfare表的公司福利id,公司福利又关联了discounts优惠表,所以公司字段和优惠是否为发货字段都可以查询到,但是为了便于查询,可以在userwelfares表里加入companyid公司id,和是否需要发货isneedsend,因为有了companyid可以在员工界面查询已经领取的福利快捷,在通知发货界面可以清楚知道哪些人已经获得了需要发货的福利
15、supplys
- 表名:供应商表
- 说明:只能由系统管理员添加,由其联系
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| supplyname(供应商名称) |
|
|
| supplytypeid(供应商类被) |
int |
与supplytypes表关联外键 |
| name(联系人) |
|
|
| phone(联系电话) |
|
|
| email(联系邮箱) |
|
|
16、supplytypes
- 表名:供应商类别表
- 说明:类别是可以添加的,只能在系统管理员界面,与supplys表是1对多关系
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| typename(类别名称) |
|
如:美食、购物等 |
17、discounts
- 表名:优惠表
- 说明:优惠只能在系统管理界面添加,与supplys供应商表是多对1关系
并且,优惠是给福利用的,与任务无关的。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| discountname(优惠名称) |
|
如:手机1部、洗澡票、交通补贴等 |
| **(FK)**supplyid(供应商id) |
|
与supplys表id关联 |
| type(类型) |
|
1表示需发货,2表示第三方优惠 |
| discountdesc(优惠描述) |
|
长文本 |
| money(关联金额) |
|
|
| picuris(图片地址) |
|
数组,如:12345.png,23456.jpg,34567.jpg表示图片地址uri,可以设定默认保存的位置,只记录图片的名称 |
18、feedbacks
- 表名:反馈表
- 说明:员工和公司管理员都可以反馈,但是查看的只能是系统管理员
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| companyname(公司名称) |
|
|
| username(员工名称) |
|
|
| usertype(用户类型) |
|
1公司反馈,2员工反馈 |
| contenttype(内容类型) |
|
1福利期望,2请求建议 |
| conten(内容) |
|
|
19、notifys
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| (FK)companyid(公司id) |
|
关联companyinfos表的id |
| title(标题) |
|
|
| content(内容) |
|
|
20、userscores
- 表名:用户积分表
- 说明:一旦插入不能修改,撤销积分则新插入一条记录就行了
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| userid(用户id) |
|
|
| taskid(任务id) |
|
|
| score(积分) |
|
|
| type(类型) |
|
默认为1收入,2撤销 |
| remark(备注) |
|
撤销时,可能会有备注 |
| finishday(完成日期) |
|
格式:20160222,便于查天月总积分 |
当要查询当天的总积分时,只要以当天的时间戳与finishday匹配就累加起来,再排序;要查询当月的总积分时,只要获取当月时间与finishday转化的月时间戳对比,再排序就可以了。
21、recharges
- 表名:企业充值表
- 说明:由企业管理员充钱到系统管理员账户(支付宝或者微信),然后由系统管理员充值(填数据)到企业管理员的账户上。在系统管理员点击公司头像或者搜索公司时,会显示冲值历史就查询该表。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| companyid(公司id) |
|
|
| money(充值金额) |
|
|
| passcode(唯一验证口令) |
|
在企业管理员支付宝转账时,留言该字段,系统管理员查询到后,可以根据该口令验证是哪一笔充值。由系统生成 |
| state(充值状态) |
|
1申请充值,2完成充值 |
| time(充值时间) |
|
应精确到时间,也可以放在createat字段上 |
系统管理员的消费情况是否要显示
22、consums
- 表名:企业消费表
- 说明:企业每收到货后,由系统管理员付款,付款的金额要从企业金额里减去,此表只记录每笔消费
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| companyid(公司id) |
|
|
| discountid(福利优惠id) |
|
这个就是消费的对象id |
| money(消费的钱数) |
|
与discount里的对象金额一致,为便于搜索就加了该字段 |
| time(消费时间收货的时间) |
|
格式:20160223 10:40 |
23、orders
- 表名:订单表
- 说明:该订单在手动要求发货后,在商家发货前是没有订单号的,在商家发货后由系统管理员填写发货单号。
- 表字段:
| 字段 |
类型 |
说明 |
| id |
int |
autoincrement |
| **(FK)**companyid(公司id) |
|
关联companyinfos的id |
| supplyid(供应商id) |
|
|
| comwelfareid(公司福利id) |
|
|
| discountid(优惠id) |
|
|
| count(发货数量) |
|
|
| state(发货状态) |
|
0已下订单而没发货或者(是需求人说的已提醒发货,它这个提醒实际意思是下订单),1商家已发货(订单号由系统管理员填写),2已收货 |