Merge remote-tracking branch 'origin/dev' into test
正在显示
18 个修改的文件
包含
739 行增加
和
57 行删除
models/audit_flow_log.go
0 → 100644
1 | +package models | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "time" | ||
6 | + | ||
7 | + "github.com/astaxie/beego/orm" | ||
8 | +) | ||
9 | + | ||
10 | +type AuditFlowLog struct { | ||
11 | + Id int `orm:"column(id);auto" description:"唯一编号"` | ||
12 | + ChanceId int64 `orm:"column(chance_id)" description:"表chance.id 所属机会编号"` | ||
13 | + Content string `orm:"column(content);size(500)" description:"内容 json"` | ||
14 | + ApproveUserId int64 `orm:"column(approve_user_id)" description:"审核人用户编号"` | ||
15 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"` | ||
16 | + Code int `orm:"column(code)" description:"消息编码"` | ||
17 | +} | ||
18 | + | ||
19 | +func (t *AuditFlowLog) TableName() string { | ||
20 | + return "audit_flow_log" | ||
21 | +} | ||
22 | + | ||
23 | +func init() { | ||
24 | + orm.RegisterModel(new(AuditFlowLog)) | ||
25 | +} | ||
26 | + | ||
27 | +// AddAuditFlowLog insert a new AuditFlowLog into database and returns | ||
28 | +// last inserted Id on success. | ||
29 | +func AddAuditFlowLog(m *AuditFlowLog) (id int64, err error) { | ||
30 | + o := orm.NewOrm() | ||
31 | + id, err = o.Insert(m) | ||
32 | + return | ||
33 | +} | ||
34 | + | ||
35 | +// GetAuditFlowLogById retrieves AuditFlowLog by Id. Returns error if | ||
36 | +// Id doesn't exist | ||
37 | +func GetAuditFlowLogById(id int) (v *AuditFlowLog, err error) { | ||
38 | + o := orm.NewOrm() | ||
39 | + v = &AuditFlowLog{Id: id} | ||
40 | + if err = o.Read(v); err == nil { | ||
41 | + return v, nil | ||
42 | + } | ||
43 | + return nil, err | ||
44 | +} | ||
45 | + | ||
46 | +// UpdateAuditFlowLog updates AuditFlowLog by Id and returns error if | ||
47 | +// the record to be updated doesn't exist | ||
48 | +func UpdateAuditFlowLogById(m *AuditFlowLog) (err error) { | ||
49 | + o := orm.NewOrm() | ||
50 | + v := AuditFlowLog{Id: m.Id} | ||
51 | + // ascertain id exists in the database | ||
52 | + if err = o.Read(&v); err == nil { | ||
53 | + var num int64 | ||
54 | + if num, err = o.Update(m); err == nil { | ||
55 | + fmt.Println("Number of records updated in database:", num) | ||
56 | + } | ||
57 | + } | ||
58 | + return | ||
59 | +} | ||
60 | + | ||
61 | +// DeleteAuditFlowLog deletes AuditFlowLog by Id and returns error if | ||
62 | +// the record to be deleted doesn't exist | ||
63 | +func DeleteAuditFlowLog(id int) (err error) { | ||
64 | + o := orm.NewOrm() | ||
65 | + v := AuditFlowLog{Id: id} | ||
66 | + // ascertain id exists in the database | ||
67 | + if err = o.Read(&v); err == nil { | ||
68 | + var num int64 | ||
69 | + if num, err = o.Delete(&AuditFlowLog{Id: id}); err == nil { | ||
70 | + fmt.Println("Number of records deleted in database:", num) | ||
71 | + } | ||
72 | + } | ||
73 | + return | ||
74 | +} |
@@ -131,10 +131,9 @@ func GetAuditFlowProcessList(chanceId int64) (v []*AuditFlowProcess, err error) | @@ -131,10 +131,9 @@ func GetAuditFlowProcessList(chanceId int64) (v []*AuditFlowProcess, err error) | ||
131 | } | 131 | } |
132 | 132 | ||
133 | //删除机会时关闭所有审核信息 | 133 | //删除机会时关闭所有审核信息 |
134 | -func CloseAuditFlowProcess(chanceId int64) (err error) { | ||
135 | - o := orm.NewOrm() | 134 | +func CloseAuditFlowProcess(orm orm.Ormer, chanceId int64) (err error) { |
136 | sql := "update audit_flow_process set enable_status =0,is_active=0,update_at=now() where chance_id=?" | 135 | sql := "update audit_flow_process set enable_status =0,is_active=0,update_at=now() where chance_id=?" |
137 | - if err = utils.ExecuteSQLWithOrmer(o, sql, chanceId); err != nil { | 136 | + if err = utils.ExecuteSQLWithOrmer(orm, sql, chanceId); err != nil { |
138 | return | 137 | return |
139 | } | 138 | } |
140 | return | 139 | return |
@@ -154,7 +153,7 @@ func GetAuditFlowProcessApproved(chanceId int64, level int) (v *[]AuditFlowProce | @@ -154,7 +153,7 @@ func GetAuditFlowProcessApproved(chanceId int64, level int) (v *[]AuditFlowProce | ||
154 | func GetAuditFlowProcessByReview(chanceId int64, level int, reviewStatus int) (v *AuditFlowProcess, err error) { | 153 | func GetAuditFlowProcessByReview(chanceId int64, level int, reviewStatus int) (v *AuditFlowProcess, err error) { |
155 | o := orm.NewOrm() | 154 | o := orm.NewOrm() |
156 | sql := "select * from audit_flow_process where chance_id=? and level=? and is_active=1 and review_status=? and enable_status=1" | 155 | sql := "select * from audit_flow_process where chance_id=? and level=? and is_active=1 and review_status=? and enable_status=1" |
157 | - if err = o.Raw(sql, chanceId, level, reviewStatus).QueryRow(&v); err != nil { | 156 | + if err = utils.ExecuteQueryOneWithOrmer(o, &v, sql, chanceId, level, reviewStatus); err != nil { |
158 | return | 157 | return |
159 | } | 158 | } |
160 | return | 159 | return |
@@ -12,6 +12,7 @@ type AuditTemplate struct { | @@ -12,6 +12,7 @@ type AuditTemplate struct { | ||
12 | CompanyId int `orm:"column(company_id)" description:"公司id"` | 12 | CompanyId int `orm:"column(company_id)" description:"公司id"` |
13 | ChanceTypeId int `orm:"column(chance_type_id)" description:"机会类型编号"` | 13 | ChanceTypeId int `orm:"column(chance_type_id)" description:"机会类型编号"` |
14 | Name string `orm:"column(name);size(20)" description:"子分类名称"` | 14 | Name string `orm:"column(name);size(20)" description:"子分类名称"` |
15 | + Code string `orm:"column(code);size(50);null" description:"编码"` | ||
15 | Doc string `orm:"column(doc);size(255)" description:"说明"` | 16 | Doc string `orm:"column(doc);size(255)" description:"说明"` |
16 | Icon string `orm:"column(icon);size(255)" description:"图标"` | 17 | Icon string `orm:"column(icon);size(255)" description:"图标"` |
17 | NoticeType int8 `orm:"column(notice_type)" description:"通知方式"` | 18 | NoticeType int8 `orm:"column(notice_type)" description:"通知方式"` |
@@ -32,6 +32,8 @@ type Chance struct { | @@ -32,6 +32,8 @@ type Chance struct { | ||
32 | PublishStatus int `orm:"column(publish_status)" description:"公开状态 0未公开、1部门公开、2公司公开"` | 32 | PublishStatus int `orm:"column(publish_status)" description:"公开状态 0未公开、1部门公开、2公司公开"` |
33 | ApproveData string `orm:"column(approve_data)" description:"审核数据 冗余"` | 33 | ApproveData string `orm:"column(approve_data)" description:"审核数据 冗余"` |
34 | AuditLevel int `orm:"column(audit_level)" description:"当前审批步骤"` | 34 | AuditLevel int `orm:"column(audit_level)" description:"当前审批步骤"` |
35 | + ApproveTime time.Time `orm:"column(approve_time);type(timestamp)" description:"审批时间"` | ||
36 | + Code string `orm:"column(code)" description:"机会编码 一级编码+二级编码"` | ||
35 | } | 37 | } |
36 | 38 | ||
37 | func (t *Chance) TableName() string { | 39 | func (t *Chance) TableName() string { |
@@ -103,7 +105,7 @@ func DeleteChance(id int64) (err error) { | @@ -103,7 +105,7 @@ func DeleteChance(id int64) (err error) { | ||
103 | func GetChanceMyChance(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) { | 105 | func GetChanceMyChance(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) { |
104 | sql := `select a.*,b.images,speechs,videos | 106 | sql := `select a.*,b.images,speechs,videos |
105 | from ( | 107 | from ( |
106 | -select id,user_id,create_at,source_content,approve_data,review_status from chance | 108 | +select id,user_id,create_at,update_at,approve_time chance_approve_time,source_content,approve_data,review_status from chance |
107 | where user_id=? and company_id=? and review_status in (?) and (?=0 or id<?) | 109 | where user_id=? and company_id=? and review_status in (?) and (?=0 or id<?) |
108 | order by create_at desc | 110 | order by create_at desc |
109 | limit ? | 111 | limit ? |
@@ -112,7 +114,6 @@ limit ? | @@ -112,7 +114,6 @@ limit ? | ||
112 | sqlCount := fmt.Sprintf(`select count(0) from ( | 114 | sqlCount := fmt.Sprintf(`select count(0) from ( |
113 | select id,user_id,create_at,source_content from chance | 115 | select id,user_id,create_at,source_content from chance |
114 | where user_id=? and company_id=? and review_status in (%v) | 116 | where user_id=? and company_id=? and review_status in (%v) |
115 | -order by create_at desc | ||
116 | ) a left JOIN chance_data b on a.id =b.chance_id`, utils.JoinInt8s(reviewStatus, ",")) | 117 | ) a left JOIN chance_data b on a.id =b.chance_id`, utils.JoinInt8s(reviewStatus, ",")) |
117 | if err = utils.ExecuteQueryOne(&total, sqlCount, uid, cid); err != nil { | 118 | if err = utils.ExecuteQueryOne(&total, sqlCount, uid, cid); err != nil { |
118 | return | 119 | return |
@@ -127,7 +128,7 @@ order by create_at desc | @@ -127,7 +128,7 @@ order by create_at desc | ||
127 | 128 | ||
128 | func GetChanceMyApproveChance(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) { | 129 | func GetChanceMyApproveChance(uid, cid int64, reviewStatus []int8, lastId int64, pageSize int, v interface{}) (total int, err error) { |
129 | sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from ( | 130 | sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from ( |
130 | -select a.*,b.user_id,b.source_content,b.enable_status,b.review_status from ( | 131 | +select a.*,b.user_id,b.source_content,b.enable_status,b.review_status,b.create_at,b.update_at,b.approve_time chance_approve_time from ( |
131 | select id,approve_time,approve_data,uid,chance_id,approve_message,create_at process_create_time | 132 | select id,approve_time,approve_data,uid,chance_id,approve_message,create_at process_create_time |
132 | from audit_flow_process where uid=? and enable_status =1 and review_status in (%v) and (?=0 or id<?) | 133 | from audit_flow_process where uid=? and enable_status =1 and review_status in (%v) and (?=0 or id<?) |
133 | )a left outer join chance b on a.chance_id = b.id | 134 | )a left outer join chance b on a.chance_id = b.id |
@@ -177,7 +178,7 @@ order by create_at desc | @@ -177,7 +178,7 @@ order by create_at desc | ||
177 | func GetChanceCollect(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) { | 178 | func GetChanceCollect(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) { |
178 | sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from ( | 179 | sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from ( |
179 | select a.*,b.user_id,b.id,b.create_at,b.source_content,b.enable_status,b.review_status,b.audit_template_id,b.chance_type_id,comment_total,zan_total,view_total from ( | 180 | select a.*,b.user_id,b.id,b.create_at,b.source_content,b.enable_status,b.review_status,b.audit_template_id,b.chance_type_id,comment_total,zan_total,view_total from ( |
180 | -select id collect_id,source_id,create_at collect_time from chance_favorite where (0=? or id<?) and user_id =? and enable_status=1 | 181 | +select id collect_id,source_id,create_at collect_time,chance_id from chance_favorite where (0=? or id<?) and user_id =? and enable_status=1 |
181 | and source_type=1 | 182 | and source_type=1 |
182 | and (mark_flag&2)>0 | 183 | and (mark_flag&2)>0 |
183 | )a left outer join chance b on a.source_id = b.id | 184 | )a left outer join chance b on a.source_id = b.id |
@@ -208,7 +209,7 @@ and (mark_flag&1)>0 | @@ -208,7 +209,7 @@ and (mark_flag&1)>0 | ||
208 | order by collect_time desc | 209 | order by collect_time desc |
209 | limit ?`) | 210 | limit ?`) |
210 | 211 | ||
211 | - sqlCount := `select count(0) from chance_favorite where user_id =? and enable_status=1 and (mark_flag&1)>0` | 212 | + sqlCount := `select count(0) from chance_favorite where user_id =? and enable_status=1 and (mark_flag&1)>0 and source_type=1` |
212 | if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil { | 213 | if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil { |
213 | return | 214 | return |
214 | } | 215 | } |
@@ -220,6 +221,15 @@ limit ?`) | @@ -220,6 +221,15 @@ limit ?`) | ||
220 | return | 221 | return |
221 | } | 222 | } |
222 | 223 | ||
224 | +//我点赞的 | ||
225 | +func GetChanceThumbup(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) { | ||
226 | + sqlCount := `select count(0) from chance_favorite where user_id =? and enable_status=1 and (mark_flag&1)>0 and source_type=1` | ||
227 | + if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil { | ||
228 | + return | ||
229 | + } | ||
230 | + return | ||
231 | +} | ||
232 | + | ||
223 | //我的评论 | 233 | //我的评论 |
224 | func GetChanceComment(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) { | 234 | func GetChanceComment(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) { |
225 | sql := fmt.Sprintf(`select a.*,b.content commented_content,b.create_at commented_time,b.user_id commented_user_id | 235 | sql := fmt.Sprintf(`select a.*,b.content commented_content,b.create_at commented_time,b.user_id commented_user_id |
@@ -20,6 +20,7 @@ type ChanceFavorite struct { | @@ -20,6 +20,7 @@ type ChanceFavorite struct { | ||
20 | EnableStatus int `orm:"column(enable_status)" description:"1:有效 0:无效"` | 20 | EnableStatus int `orm:"column(enable_status)" description:"1:有效 0:无效"` |
21 | CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | 21 | CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` |
22 | UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"删除时间"` | 22 | UpdateAt time.Time `orm:"column(update_at);type(timestamp);null" description:"删除时间"` |
23 | + ChanceId int64 `orm:"column(chance_id)" description:"机会编号"` | ||
23 | } | 24 | } |
24 | 25 | ||
25 | func (t *ChanceFavorite) TableName() string { | 26 | func (t *ChanceFavorite) TableName() string { |
@@ -9,6 +9,7 @@ import ( | @@ -9,6 +9,7 @@ import ( | ||
9 | type ChanceType struct { | 9 | type ChanceType struct { |
10 | Id int `orm:"column(id);auto" json:"id"` | 10 | Id int `orm:"column(id);auto" json:"id"` |
11 | Name string `orm:"column(name);size(50)" description:"机会类型名称" json:"name"` | 11 | Name string `orm:"column(name);size(50)" description:"机会类型名称" json:"name"` |
12 | + Code string `orm:"column(code);size(50);null" description:"编码"` | ||
12 | Icon string `orm:"column(icon);size(500);null" description:"图标地址" json:"icon"` | 13 | Icon string `orm:"column(icon);size(500);null" description:"图标地址" json:"icon"` |
13 | CompanyId int `orm:"column(company_id)" description:"表company.id 公司编号" json:"-"` | 14 | CompanyId int `orm:"column(company_id)" description:"表company.id 公司编号" json:"-"` |
14 | SortNum int `orm:"column(sort_num);null" description:"序号 公司下的序号" json:"-"` | 15 | SortNum int `orm:"column(sort_num);null" description:"序号 公司下的序号" json:"-"` |
@@ -92,7 +92,7 @@ func GetUserCompanyByUserId(uid int64, companyId int64) (v *UserCompany, err err | @@ -92,7 +92,7 @@ func GetUserCompanyByUserId(uid int64, companyId int64) (v *UserCompany, err err | ||
92 | //获取公司信息 | 92 | //获取公司信息 |
93 | func GetUserCompanyBy(id int64, companyId int64) (v *UserCompany, err error) { | 93 | func GetUserCompanyBy(id int64, companyId int64) (v *UserCompany, err error) { |
94 | o := orm.NewOrm() | 94 | o := orm.NewOrm() |
95 | - sql := "select * from user_company where id=? and company_id=? and enable=1" // | 95 | + sql := "select * from user_company where id=? and company_id=? " //and enable=1 |
96 | if err = o.Raw(sql, id, companyId).QueryRow(&v); err == nil { | 96 | if err = o.Raw(sql, id, companyId).QueryRow(&v); err == nil { |
97 | return v, nil | 97 | return v, nil |
98 | } | 98 | } |
@@ -20,6 +20,7 @@ type UserMsg struct { | @@ -20,6 +20,7 @@ type UserMsg struct { | ||
20 | IsPublic int8 `orm:"column(is_public)" description:"1:公开 0:不公开"` | 20 | IsPublic int8 `orm:"column(is_public)" description:"1:公开 0:不公开"` |
21 | IsRead int8 `orm:"column(is_read)" description:"1:已读 0:未读"` | 21 | IsRead int8 `orm:"column(is_read)" description:"1:已读 0:未读"` |
22 | CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"` | 22 | CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"` |
23 | + ChanceId int64 `orm:"column(chance_id)" description:"机会编号"` | ||
23 | } | 24 | } |
24 | 25 | ||
25 | const ( | 26 | const ( |
@@ -105,9 +106,9 @@ func DeleteUserMsg(id int64) (err error) { | @@ -105,9 +106,9 @@ func DeleteUserMsg(id int64) (err error) { | ||
105 | func GetUserMsgTotals(userId int64, companyId int64, msgType int, v interface{}) (err error) { | 106 | func GetUserMsgTotals(userId int64, companyId int64, msgType int, v interface{}) (err error) { |
106 | o := orm.NewOrm() | 107 | o := orm.NewOrm() |
107 | sql := `select COUNT(*) as total,msg_type from user_msg | 108 | sql := `select COUNT(*) as total,msg_type from user_msg |
108 | -where (msg_type & ?)>0 and receive_user_id = ? and is_public=1 and is_read=0 and company_id=? | 109 | +where (msg_type & ?)>0 and receive_user_id = ? and is_read=0 and company_id=? |
109 | GROUP BY msg_type` | 110 | GROUP BY msg_type` |
110 | - if _, err = o.Raw(sql, msgType, userId, companyId).QueryRows(v); err == nil { | 111 | + if err = utils.ExecuteQueryAllWithOrmer(o, v, sql, msgType, userId, companyId); err == nil { |
111 | return | 112 | return |
112 | } | 113 | } |
113 | return | 114 | return |
@@ -180,11 +181,11 @@ func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pag | @@ -180,11 +181,11 @@ func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pag | ||
180 | func GetChanceMsg(uid, lastId int64, pageSize int, msgType int, v interface{}) (total int, err error) { | 181 | func GetChanceMsg(uid, lastId int64, pageSize int, msgType int, v interface{}) (total int, err error) { |
181 | sql := `select a.*,b.images,b.speechs,b.videos from ( | 182 | sql := `select a.*,b.images,b.speechs,b.videos from ( |
182 | select a.*,b.source_content,b.enable_status,b.user_id chance_user_id,b.create_at,b.review_status,b.approve_data from ( | 183 | select a.*,b.source_content,b.enable_status,b.user_id chance_user_id,b.create_at,b.review_status,b.approve_data from ( |
183 | -select id,company_id,receive_user_id,message,source_id,is_read | 184 | +select id,company_id,receive_user_id,message,source_id,is_read,chance_id,create_at msg_time |
184 | from user_msg where receive_user_id=? and source_type=1 and (?=0 or id<?) and msg_type=? | 185 | from user_msg where receive_user_id=? and source_type=1 and (?=0 or id<?) and msg_type=? |
185 | )a left outer join chance b on a.source_id = b.id | 186 | )a left outer join chance b on a.source_id = b.id |
186 | )a left outer join chance_data b on a.source_id =b.chance_id | 187 | )a left outer join chance_data b on a.source_id =b.chance_id |
187 | -order by a.create_at desc | 188 | +order by a.msg_time desc |
188 | LIMIT ?` | 189 | LIMIT ?` |
189 | 190 | ||
190 | sqlCount := `select count(0) | 191 | sqlCount := `select count(0) |
@@ -205,12 +206,12 @@ func GetChanceCommentMsg(uid, lastId int64, pageSize int, msgType int, v interfa | @@ -205,12 +206,12 @@ func GetChanceCommentMsg(uid, lastId int64, pageSize int, msgType int, v interfa | ||
205 | sql := `select a.*,b.content commented_content,b.create_at commented_time,b.user_id commented_user_id from ( | 206 | sql := `select a.*,b.content commented_content,b.create_at commented_time,b.user_id commented_user_id from ( |
206 | select a.*,b.images,b.speechs,b.videos from ( | 207 | select a.*,b.images,b.speechs,b.videos from ( |
207 | select a.*,b.source_content,b.enable_status,b.user_id chance_user_id,b.create_at,b.review_status from ( | 208 | select a.*,b.source_content,b.enable_status,b.user_id chance_user_id,b.create_at,b.review_status from ( |
208 | -select id,message content,source_type,source_id,create_at comment_time from user_msg | 209 | +select id,message content,source_type,source_id,is_read,create_at comment_time,chance_id from user_msg |
209 | where receive_user_id =? and (?=0 or id<?) and msg_type=? | 210 | where receive_user_id =? and (?=0 or id<?) and msg_type=? |
210 | )a left outer join chance b on a.source_id = b.id and source_type=1 | 211 | )a left outer join chance b on a.source_id = b.id and source_type=1 |
211 | )a left outer join chance_data b on a.source_id = b.chance_id and source_type = 1 | 212 | )a left outer join chance_data b on a.source_id = b.chance_id and source_type = 1 |
212 | )a left outer join comment b on a.source_id = b.id and a.source_type=2 | 213 | )a left outer join comment b on a.source_id = b.id and a.source_type=2 |
213 | -order by create_at desc | 214 | +order by a.comment_time desc |
214 | LIMIT ?` | 215 | LIMIT ?` |
215 | 216 | ||
216 | sqlCount := `select count(0) | 217 | sqlCount := `select count(0) |
@@ -73,6 +73,7 @@ type SympathyActionRequest struct { | @@ -73,6 +73,7 @@ type SympathyActionRequest struct { | ||
73 | SourceType int `json:"sourceType" valid:"Required"` //protocol.SourceType //1.机会 2.评论 | 73 | SourceType int `json:"sourceType" valid:"Required"` //protocol.SourceType //1.机会 2.评论 |
74 | Id int64 `json:"id" valid:"Required"` //机会编号 / 评论编号 | 74 | Id int64 `json:"id" valid:"Required"` //机会编号 / 评论编号 |
75 | SympathyType int `json:"sympathyType"` //1:标记 0:取消标记 | 75 | SympathyType int `json:"sympathyType"` //1:标记 0:取消标记 |
76 | + ChanceId int64 `json:"chanceId"` //机会编号 | ||
76 | } | 77 | } |
77 | type SympathyActionResponse struct { | 78 | type SympathyActionResponse struct { |
78 | } | 79 | } |
@@ -132,7 +133,7 @@ type ChanceUpdateRequest struct { | @@ -132,7 +133,7 @@ type ChanceUpdateRequest struct { | ||
132 | Speechs []Speech `json:"speechs"` | 133 | Speechs []Speech `json:"speechs"` |
133 | Pictures []Picture `json:"pictures"` | 134 | Pictures []Picture `json:"pictures"` |
134 | Videos []Video `json:"videos"` | 135 | Videos []Video `json:"videos"` |
135 | - RelatedDepartment int64 `json:"relatedDepartments" valid:"Required"` | 136 | + RelatedDepartment int64 `json:"relatedDepartments"` |
136 | 137 | ||
137 | IsPublish bool `json:"isPublish"` //是否重新发布 | 138 | IsPublish bool `json:"isPublish"` //是否重新发布 |
138 | } | 139 | } |
@@ -184,6 +185,8 @@ type ChanceItemOrm struct { | @@ -184,6 +185,8 @@ type ChanceItemOrm struct { | ||
184 | Id int64 `orm:"column(id)"` | 185 | Id int64 `orm:"column(id)"` |
185 | Uid int64 `orm:"column(user_id)"` | 186 | Uid int64 `orm:"column(user_id)"` |
186 | CreateTime time.Time `orm:"column(create_at)"` | 187 | CreateTime time.Time `orm:"column(create_at)"` |
188 | + UpdateTime time.Time `orm:"column(update_at)"` | ||
189 | + ApproveTime time.Time `orm:"column(chance_approve_time)"` | ||
187 | SourceContent string `orm:"column(source_content)"` | 190 | SourceContent string `orm:"column(source_content)"` |
188 | Images string `orm:"column(images)"` | 191 | Images string `orm:"column(images)"` |
189 | Voices string `orm:"column(speechs)"` | 192 | Voices string `orm:"column(speechs)"` |
@@ -207,6 +210,9 @@ type MyApproveChanceResponse struct { | @@ -207,6 +210,9 @@ type MyApproveChanceResponse struct { | ||
207 | //我的审核机会列表 | 210 | //我的审核机会列表 |
208 | type ChanceApproveItemOrm struct { | 211 | type ChanceApproveItemOrm struct { |
209 | ChanceUserId int64 `orm:"column(user_id)"` | 212 | ChanceUserId int64 `orm:"column(user_id)"` |
213 | + CreateTime time.Time `orm:"column(create_at)"` | ||
214 | + UpdateTime time.Time `orm:"column(update_at)"` | ||
215 | + ChanceApproveTime time.Time `orm:"column(chance_approve_time)"` | ||
210 | SourceContent string `orm:"column(source_content)"` | 216 | SourceContent string `orm:"column(source_content)"` |
211 | ChanceEnableStatus int `orm:"column(enable_status)"` | 217 | ChanceEnableStatus int `orm:"column(enable_status)"` |
212 | Images string `orm:"column(images)"` | 218 | Images string `orm:"column(images)"` |
@@ -295,6 +301,9 @@ type ChanceCollectItemOrm struct { | @@ -295,6 +301,9 @@ type ChanceCollectItemOrm struct { | ||
295 | 301 | ||
296 | CollectId int64 `orm:"column(collect_id)"` //收藏id | 302 | CollectId int64 `orm:"column(collect_id)"` //收藏id |
297 | CollectTime time.Time `orm:"column(collect_time)"` //收藏时间 | 303 | CollectTime time.Time `orm:"column(collect_time)"` //收藏时间 |
304 | + | ||
305 | + //chance_id | ||
306 | + //ChanceId int64 `orm:"column(id)"` | ||
298 | } | 307 | } |
299 | 308 | ||
300 | //机会池收藏列表项 | 309 | //机会池收藏列表项 |
@@ -323,7 +332,7 @@ type ChanceThumbUpItemOrm struct { | @@ -323,7 +332,7 @@ type ChanceThumbUpItemOrm struct { | ||
323 | 332 | ||
324 | //我的评论 | 333 | //我的评论 |
325 | type ChanceCommentItemOrm struct { | 334 | type ChanceCommentItemOrm struct { |
326 | - //ChanceId int64 `orm:"column(id)"` | 335 | + ChanceId int64 `orm:"column(chance_id)"` |
327 | Uid int64 `orm:"column(chance_user_id)"` | 336 | Uid int64 `orm:"column(chance_user_id)"` |
328 | CreateTime time.Time `orm:"column(create_at)"` | 337 | CreateTime time.Time `orm:"column(create_at)"` |
329 | SourceContent string `orm:"column(source_content)"` | 338 | SourceContent string `orm:"column(source_content)"` |
@@ -349,6 +358,7 @@ type ChanceCommentItemOrm struct { | @@ -349,6 +358,7 @@ type ChanceCommentItemOrm struct { | ||
349 | //评论对象类型 | 358 | //评论对象类型 |
350 | SourceType int `orm:"column(source_type)"` | 359 | SourceType int `orm:"column(source_type)"` |
351 | SourceId int64 `orm:"column(source_id)"` | 360 | SourceId int64 `orm:"column(source_id)"` |
361 | + IsRead int64 `orm:"column(is_read)"` | ||
352 | } | 362 | } |
353 | 363 | ||
354 | /*ChanceDetail 机会详情*/ | 364 | /*ChanceDetail 机会详情*/ |
@@ -518,10 +528,43 @@ type CommonListItem struct { | @@ -518,10 +528,43 @@ type CommonListItem struct { | ||
518 | 528 | ||
519 | ChanceStatus int `json:"chanceStatus"` //0:正常 1.删除 2.关闭 | 529 | ChanceStatus int `json:"chanceStatus"` //0:正常 1.删除 2.关闭 |
520 | ReviewStatus int `json:"reviewStatus"` //审核状态 | 530 | ReviewStatus int `json:"reviewStatus"` //审核状态 |
531 | + | ||
532 | + ChanceId int64 `json:"chanceId"` //机会编号 | ||
533 | +} | ||
534 | + | ||
535 | +type MsgCommonListItem struct { | ||
536 | + MsgId int64 `json:"msgId"` //消息id | ||
537 | + Chance ChanceItem `json:"chance,omitempty"` //机会详情 | ||
538 | + //ChanceData interface{} `json:"statisticData,omitempty"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData | ||
539 | + //Approve interface{} `json:"approve,omitempty"` //审核人 审核信息(时间) Approve | ||
540 | + //ApproveData interface{} `json:"approveData,omitempty"` //审核数据(公开状态 评分) ApproveData | ||
541 | + Message interface{} `json:"message,omitempty"` //消息 | ||
542 | + CommentData interface{} `json:"commentData,omitempty"` //评论 | ||
543 | + CollectData interface{} `json:"collectData,omitempty"` //收藏数据 | ||
544 | + ThumbUpData interface{} `json:"thumbUpData,omitempty"` //点赞数据 | ||
545 | + //我审核的-通过 | ||
546 | + Score interface{} `json:"score,omitempty"` | ||
547 | + | ||
548 | + //模板 | ||
549 | + //ChanceType interface{} `json:"chanceType,omitempty"` //机会类型 | ||
550 | + //ChanceTemplate interface{} `json:"template,omitempty"` //机会模板 | ||
551 | + | ||
552 | + //我评论的 评论数据 | ||
553 | + CommentedData interface{} `json:"commentedData,omitempty"` | ||
554 | + | ||
555 | + SourceType int `json:"sourceType,omitempty"` //类型 1:机会 2:评论 | ||
556 | + ChanceStatus int `json:"chanceStatus"` //0:正常 1.删除 2.关闭 | ||
557 | + ReviewStatus int `json:"reviewStatus"` //审核状态 | ||
558 | + | ||
559 | + IsRead bool `json:"isRead"` | ||
560 | + ChanceId int64 `json:"chanceId"` //机会编号 | ||
521 | } | 561 | } |
522 | type ChanceItem struct { | 562 | type ChanceItem struct { |
523 | Id int64 `json:"id"` | 563 | Id int64 `json:"id"` |
524 | CreateTime int64 `json:"createTime"` | 564 | CreateTime int64 `json:"createTime"` |
565 | + CreateTimeCopy int64 `json:"createTimeCopy"` | ||
566 | + UpdateTime int64 `json:"updateTime"` | ||
567 | + ApproveTime int64 `json:"approveTime"` | ||
525 | Provider *BaseUserInfo `json:"provider"` | 568 | Provider *BaseUserInfo `json:"provider"` |
526 | FormList []*Form `json:"formList" valid:"Required"` | 569 | FormList []*Form `json:"formList" valid:"Required"` |
527 | Speechs []Speech `json:"speechs"` | 570 | Speechs []Speech `json:"speechs"` |
@@ -548,6 +591,7 @@ type ThumbUpData struct { | @@ -548,6 +591,7 @@ type ThumbUpData struct { | ||
548 | Id int64 `json:"id"` | 591 | Id int64 `json:"id"` |
549 | Content string `json:"content"` //点赞内容 | 592 | Content string `json:"content"` //点赞内容 |
550 | ThumbUpTime int64 `json:"thumbUpTime"` //收藏时间 | 593 | ThumbUpTime int64 `json:"thumbUpTime"` //收藏时间 |
594 | + //IsRead bool `json:"is_read"` //是否已读 | ||
551 | } | 595 | } |
552 | 596 | ||
553 | //评论内容 | 597 | //评论内容 |
@@ -555,4 +599,6 @@ type CommentData struct { | @@ -555,4 +599,6 @@ type CommentData struct { | ||
555 | Id int64 `json:"id"` //评论编号 | 599 | Id int64 `json:"id"` //评论编号 |
556 | Content string `json:"content"` //评论内容 | 600 | Content string `json:"content"` //评论内容 |
557 | CommentTime int64 `json:"commentTime"` //评论时间 | 601 | CommentTime int64 `json:"commentTime"` //评论时间 |
602 | + //IsRead bool `json:"isRead"` //是否已读 | ||
603 | + Provider interface{} `json:"provider,omitempty"` | ||
558 | } | 604 | } |
@@ -68,7 +68,7 @@ type Comments struct { | @@ -68,7 +68,7 @@ type Comments struct { | ||
68 | ViewTotal int `json:"pageViewTotal"` | 68 | ViewTotal int `json:"pageViewTotal"` |
69 | CommentTotal int `json:"commentTotal"` | 69 | CommentTotal int `json:"commentTotal"` |
70 | ZanTotal int `json:"thumbsupTotal"` | 70 | ZanTotal int `json:"thumbsupTotal"` |
71 | - IsZan int `json:"isThumbsUp"` //0:未点赞 1:点赞 | 71 | + IsZan bool `json:"isThumbsUp"` //0:未点赞 1:点赞 |
72 | } | 72 | } |
73 | 73 | ||
74 | type Thumbups struct { | 74 | type Thumbups struct { |
@@ -43,6 +43,7 @@ var errmessge ErrorMap = map[int]string{ | @@ -43,6 +43,7 @@ var errmessge ErrorMap = map[int]string{ | ||
43 | 5204: "评分或者公开状态不能为空", | 43 | 5204: "评分或者公开状态不能为空", |
44 | 5205: "机会未审核通过,不能修改评分或者公开状态", | 44 | 5205: "机会未审核通过,不能修改评分或者公开状态", |
45 | 5206: "未找到审批节点或者无权限", | 45 | 5206: "未找到审批节点或者无权限", |
46 | + 5207: "公司管理员未设置", | ||
46 | 47 | ||
47 | //模板相关 | 48 | //模板相关 |
48 | 5301: "机会模板不存在", | 49 | 5301: "机会模板不存在", |
@@ -125,7 +126,7 @@ type UserMsg struct { | @@ -125,7 +126,7 @@ type UserMsg struct { | ||
125 | MsgId int64 `json:"msgId"` | 126 | MsgId int64 `json:"msgId"` |
126 | BulletinId int64 `json:"-"` | 127 | BulletinId int64 `json:"-"` |
127 | SourceType int `json:"msgType"` | 128 | SourceType int `json:"msgType"` |
128 | - Content string `json:"content"` | 129 | + Content string `json:"title"` |
129 | CreateAt int64 `json:"msgTime"` | 130 | CreateAt int64 `json:"msgTime"` |
130 | IsRead int `json:"isRead"` | 131 | IsRead int `json:"isRead"` |
131 | //机会 //评论 | 132 | //机会 //评论 |
@@ -222,7 +223,7 @@ type MsgChanceApproveRequest struct { | @@ -222,7 +223,7 @@ type MsgChanceApproveRequest struct { | ||
222 | PageSize int `json:"pageSize" valid:"Required"` | 223 | PageSize int `json:"pageSize" valid:"Required"` |
223 | } | 224 | } |
224 | type MsgChanceApproveResponse struct { | 225 | type MsgChanceApproveResponse struct { |
225 | - List []CommonListItem `json:"list"` | 226 | + List []MsgCommonListItem `json:"list"` |
226 | Total int `json:"total"` | 227 | Total int `json:"total"` |
227 | } | 228 | } |
228 | 229 | ||
@@ -232,7 +233,7 @@ type MsgChanceSubmitRequest struct { | @@ -232,7 +233,7 @@ type MsgChanceSubmitRequest struct { | ||
232 | PageSize int `json:"pageSize" valid:"Required"` | 233 | PageSize int `json:"pageSize" valid:"Required"` |
233 | } | 234 | } |
234 | type MsgChanceSubmitResponse struct { | 235 | type MsgChanceSubmitResponse struct { |
235 | - List []CommonListItem `json:"list"` | 236 | + List []MsgCommonListItem `json:"list"` |
236 | Total int `json:"total"` | 237 | Total int `json:"total"` |
237 | } | 238 | } |
238 | 239 | ||
@@ -242,7 +243,7 @@ type MsgChanceCommentRequest struct { | @@ -242,7 +243,7 @@ type MsgChanceCommentRequest struct { | ||
242 | PageSize int `json:"pageSize" valid:"Required"` | 243 | PageSize int `json:"pageSize" valid:"Required"` |
243 | } | 244 | } |
244 | type MsgChanceCommentResponse struct { | 245 | type MsgChanceCommentResponse struct { |
245 | - List []CommonListItem `json:"list"` | 246 | + List []MsgCommonListItem `json:"list"` |
246 | Total int `json:"total"` | 247 | Total int `json:"total"` |
247 | } | 248 | } |
248 | 249 | ||
@@ -252,7 +253,7 @@ type MsgChanceThumbUpRequest struct { | @@ -252,7 +253,7 @@ type MsgChanceThumbUpRequest struct { | ||
252 | PageSize int `json:"pageSize" valid:"Required"` | 253 | PageSize int `json:"pageSize" valid:"Required"` |
253 | } | 254 | } |
254 | type MsgChanceThumbUpResponse struct { | 255 | type MsgChanceThumbUpResponse struct { |
255 | - List []CommonListItem `json:"list"` | 256 | + List []MsgCommonListItem `json:"list"` |
256 | Total int `json:"total"` | 257 | Total int `json:"total"` |
257 | } | 258 | } |
258 | 259 | ||
@@ -272,7 +273,7 @@ type MsgChanceApproveItemOrm struct { | @@ -272,7 +273,7 @@ type MsgChanceApproveItemOrm struct { | ||
272 | CreateTime time.Time `orm:"column(create_at)"` | 273 | CreateTime time.Time `orm:"column(create_at)"` |
273 | Message string `orm:"column(message)"` | 274 | Message string `orm:"column(message)"` |
274 | IsRead int64 `orm:"column(isRead)"` | 275 | IsRead int64 `orm:"column(isRead)"` |
275 | - ChanceId int64 `orm:"column(source_id)"` // 机会id | 276 | + ChanceId int64 `orm:"column(chance_id)"` // 机会id |
276 | //EnableStatus int `orm:"column(enable_status)"` | 277 | //EnableStatus int `orm:"column(enable_status)"` |
277 | } | 278 | } |
278 | 279 |
@@ -51,6 +51,7 @@ func SendApproveMsg(receiverId int64, name string, companyId int64, chanceId int | @@ -51,6 +51,7 @@ func SendApproveMsg(receiverId int64, name string, companyId int64, chanceId int | ||
51 | SourceType: protocol.SourceTypeChance, | 51 | SourceType: protocol.SourceTypeChance, |
52 | IsPublic: 0, | 52 | IsPublic: 0, |
53 | CreateAt: time.Now(), | 53 | CreateAt: time.Now(), |
54 | + ChanceId: chanceId, | ||
54 | } | 55 | } |
55 | if _, err = models.AddUserMsg(userMsg); err != nil { | 56 | if _, err = models.AddUserMsg(userMsg); err != nil { |
56 | return | 57 | return |
@@ -110,11 +111,11 @@ func SendApprovedMsg(receiverId int64, name string, companyId int64, chanceId in | @@ -110,11 +111,11 @@ func SendApprovedMsg(receiverId int64, name string, companyId int64, chanceId in | ||
110 | return | 111 | return |
111 | } | 112 | } |
112 | format = fmt.Sprintf(format, chanceType.Name) | 113 | format = fmt.Sprintf(format, chanceType.Name) |
113 | - return SendMsg(receiverId, name, companyId, chanceId, protocol.SourceTypeChance, format, msgType) | 114 | + return SendMsg(receiverId, name, companyId, chanceId, protocol.SourceTypeChance, format, msgType, chanceId) |
114 | } | 115 | } |
115 | 116 | ||
116 | //发送消息 | 117 | //发送消息 |
117 | -func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sourceType int, message string, msgType int) (err error) { | 118 | +func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sourceType int, message string, msgType int, chanceId int64) (err error) { |
118 | var ( | 119 | var ( |
119 | userMsg *models.UserMsg | 120 | userMsg *models.UserMsg |
120 | ) | 121 | ) |
@@ -128,6 +129,7 @@ func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sou | @@ -128,6 +129,7 @@ func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sou | ||
128 | SourceType: sourceType, | 129 | SourceType: sourceType, |
129 | IsPublic: 0, | 130 | IsPublic: 0, |
130 | CreateAt: time.Now(), | 131 | CreateAt: time.Now(), |
132 | + ChanceId: chanceId, | ||
131 | } | 133 | } |
132 | if _, err = models.AddUserMsg(userMsg); err != nil { | 134 | if _, err = models.AddUserMsg(userMsg); err != nil { |
133 | return | 135 | return |
@@ -151,3 +153,27 @@ func logMsg(msg *models.UserMsg, name string) { | @@ -151,3 +153,27 @@ func logMsg(msg *models.UserMsg, name string) { | ||
151 | log.Info(fmt.Sprintf("发送消息 消息类型:%v Receiver:%v(%v) Message:%v SourceId:%v SourceType:%v", | 153 | log.Info(fmt.Sprintf("发送消息 消息类型:%v Receiver:%v(%v) Message:%v SourceId:%v SourceType:%v", |
152 | msg.MsgType, msg.ReceiveUserId, name, msg.Message, msg.SourceId, msg.SourceType)) | 154 | msg.MsgType, msg.ReceiveUserId, name, msg.Message, msg.SourceId, msg.SourceType)) |
153 | } | 155 | } |
156 | + | ||
157 | +//保查审核日志 | ||
158 | +func SaveApproveLog(orm orm.Ormer, code int, userId int64, chanceId int64, param ...interface{}) (err error) { | ||
159 | + var ( | ||
160 | + message string | ||
161 | + ok bool | ||
162 | + ) | ||
163 | + if message, ok = protocol.ApproveLog[code]; !ok { | ||
164 | + err = fmt.Errorf("approve log not exists code:%v", code) | ||
165 | + return | ||
166 | + } | ||
167 | + message = fmt.Sprintf(message, param...) | ||
168 | + if _, err = orm.Insert(&models.AuditFlowLog{ | ||
169 | + ChanceId: chanceId, | ||
170 | + Content: message, | ||
171 | + ApproveUserId: userId, | ||
172 | + CreateAt: time.Now(), | ||
173 | + Code: code, | ||
174 | + }); err != nil { | ||
175 | + log.Error(err) | ||
176 | + } | ||
177 | + log.Debug(fmt.Sprintf("保存审核日志: code:%v userId:%v chanceId:%v message:%v", code, userId, chanceId, message)) | ||
178 | + return | ||
179 | +} |
services/agg/permission.go
0 → 100644
1 | +package agg | ||
2 | + | ||
3 | +import ( | ||
4 | + "encoding/json" | ||
5 | + "fmt" | ||
6 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
7 | + "opp/internal/utils" | ||
8 | +) | ||
9 | + | ||
10 | +//模块编号 | ||
11 | +const ( | ||
12 | + M_ENTERPRISE string = "ENTERPRISE" //企业基础设置 | ||
13 | + M_SYSTEM string = "SYSTEM" //系统设置 | ||
14 | + M_SYSTEM_OPPORTUNITY string = "SYSTEM_OPPORTUNITY" //机会管理 | ||
15 | + M_ENTERPRISE_PROFILE string = "ENTERPRISE_PROFILE" //企业信息维护 | ||
16 | + M_ENTERPRISE_ORGANIZATION string = "ENTERPRISE_ORGANIZATION" //组织架构设置 | ||
17 | + M_ENTERPRISE_EMPLOYEE_POST string = "ENTERPRISE_EMPLOYEE-POST" //员工职位设置 | ||
18 | + M_ENTERPRISE_EMPLOYEE_ROLE string = "ENTERPRISE_EMPLOYEE-ROLE" //员工角色/权限设置 | ||
19 | + M_ENTERPRISE_EMPLOYEE string = "ENTERPRISE_EMPLOYEE" //员工设置 | ||
20 | + M_SYSTEM_OPPORTUNITY_TEMPLATE string = "SYSTEM_OPPORTUNITY-TEMPLATE" //机会模板管理 | ||
21 | + M_SYSTEM_RATING string = "SYSTEM_RATING" //评分模式设置 | ||
22 | + M_SYSTEM_ANNOUNCEMENT string = "SYSTEM_ANNOUNCEMENT" //公告管理 | ||
23 | +) | ||
24 | + | ||
25 | +type CodeToObject func() PermissionOptionObject | ||
26 | + | ||
27 | +var CodePermissionObject = map[string]CodeToObject{ | ||
28 | + M_ENTERPRISE_ORGANIZATION: NewPermissionOptionBase, //公司组织架构设置 | ||
29 | + M_ENTERPRISE_EMPLOYEE_POST: NewPermissionOptionBase, //公司职务管理 | ||
30 | + M_ENTERPRISE_EMPLOYEE_ROLE: NewPermissionOptionBase, //员工角色/权限设置 | ||
31 | + M_ENTERPRISE_EMPLOYEE: NewPermissionOptionBase, //公司员工管理 | ||
32 | + M_ENTERPRISE: NewPermissionOptionBase, //企业基础设置(大节点) | ||
33 | + M_SYSTEM: NewPermissionOptionBase, //系统设置(大节点) | ||
34 | + M_ENTERPRISE_PROFILE: NewPermissionOptionBase, //企业信息维护 | ||
35 | + M_SYSTEM_OPPORTUNITY_TEMPLATE: NewPermissionOptionBase, //机会模板管理 | ||
36 | + M_SYSTEM_RATING: NewPermissionOptionBase, //评分模式 | ||
37 | + M_SYSTEM_OPPORTUNITY: NewOptionOpportunity, //机会管理 | ||
38 | + M_SYSTEM_ANNOUNCEMENT: NewPermissionOptionBase, //公告管理 | ||
39 | +} | ||
40 | + | ||
41 | +type PermissionOptionObject interface { | ||
42 | + // StringUnmarshal(string) error | ||
43 | + // ObjectMarshal() string | ||
44 | + GetValidFunc(string) func(UserObject) bool | ||
45 | + MergeObject(string) error | ||
46 | +} | ||
47 | + | ||
48 | +type UserObject struct { | ||
49 | + UserId int64 `json:"user_id"` | ||
50 | + CompanyId int64 `json:"company_id"` | ||
51 | + UserCompanyId int64 `json:"user_company_id"` | ||
52 | +} | ||
53 | + | ||
54 | +//PermissionOptionBase 基本权限 | ||
55 | +type PermissionOptionBase struct { | ||
56 | + Check int8 `json:"check"` | ||
57 | +} | ||
58 | + | ||
59 | +var ( | ||
60 | + _ PermissionOptionObject = &PermissionOptionBase{} | ||
61 | +) | ||
62 | + | ||
63 | +func NewPermissionOptionBase() PermissionOptionObject { | ||
64 | + return &PermissionOptionBase{ | ||
65 | + Check: 1, | ||
66 | + } | ||
67 | +} | ||
68 | + | ||
69 | +func (p *PermissionOptionBase) ValidDefault(obj UserObject) bool { | ||
70 | + if p.Check == 1 { | ||
71 | + return true | ||
72 | + } | ||
73 | + return false | ||
74 | +} | ||
75 | + | ||
76 | +//GetValidFunc PermissionOptionBase 接口实现 | ||
77 | +func (p *PermissionOptionBase) GetValidFunc(k string) func(UserObject) bool { | ||
78 | + m := map[string]func(UserObject) bool{ | ||
79 | + "default": p.ValidDefault, | ||
80 | + } | ||
81 | + if _, ok := m[k]; ok { | ||
82 | + return m[k] | ||
83 | + } | ||
84 | + return nil | ||
85 | +} | ||
86 | + | ||
87 | +func (p *PermissionOptionBase) MergeObject(jsonString string) error { | ||
88 | + var obj PermissionOptionBase | ||
89 | + err := json.Unmarshal([]byte(jsonString), &obj) | ||
90 | + if err != nil { | ||
91 | + return err | ||
92 | + } | ||
93 | + if obj.Check > p.Check { | ||
94 | + p.Check = obj.Check | ||
95 | + } | ||
96 | + return nil | ||
97 | +} | ||
98 | + | ||
99 | +// //StringUnmarshal PermissionOptionBase 接口实现 | ||
100 | +// func (p *PermissionOptionBase) StringUnmarshal(s string) error { | ||
101 | +// err := json.Unmarshal([]byte(s), p) | ||
102 | +// return err | ||
103 | +// } | ||
104 | + | ||
105 | +// //ObjectMarshal PermissionOptionBase 接口实现 | ||
106 | +// func (p *PermissionOptionBase) ObjectMarshal() string { | ||
107 | +// bt, err := json.Marshal(p) | ||
108 | +// if err != nil { | ||
109 | +// return "" | ||
110 | +// } | ||
111 | +// return string(bt) | ||
112 | +// } | ||
113 | + | ||
114 | +/* | ||
115 | +机会管理模块 | ||
116 | +CheckOpp | ||
117 | +CheckDeparment | ||
118 | +OptionOpportunity | ||
119 | +*/ | ||
120 | + | ||
121 | +//CheckDeparment 特殊的查看条件设定中关于部门的设定 | ||
122 | +type CheckDeparment struct { | ||
123 | + Id int64 `json:"id"` | ||
124 | + Name string `json:"name,omitempty"` | ||
125 | + Wait int `json:"wait"` | ||
126 | + OpenAll int `json:"open_all"` | ||
127 | + OpenDepart int `json:"open_depart"` | ||
128 | +} | ||
129 | + | ||
130 | +//CheckOpp 特殊的查看条件设定 | ||
131 | +type CheckOpp struct { | ||
132 | + Departments []CheckDeparment `json:"departments"` | ||
133 | +} | ||
134 | + | ||
135 | +//OptionOpportunity 机会管理 高级权限设置 | ||
136 | +type OptionOpportunity struct { | ||
137 | + Check int `json:"check"` | ||
138 | + CheckMap map[int]int `json:"-"` | ||
139 | + CheckOption CheckOpp `json:"check_option"` | ||
140 | + EditSorce int `json:"edit_sorce"` | ||
141 | + EditPublicStatus int `json:"edit_public_status"` | ||
142 | + CloseChance int `json:"close_chance"` | ||
143 | + EditChance int `json:"edit_chance"` | ||
144 | +} | ||
145 | + | ||
146 | +/* | ||
147 | +机会管理高级设置中的 check | ||
148 | +1:禁止查看所有机会:禁止查看所有机会(除自己提交过的机会及可执行审核操作的机会) | ||
149 | +2:仅查看自己部门和公开机会:查看对自己部门公开的机会+公司公开的机会 | ||
150 | +3:特定部门的机会:自由配置选定部门的待审核、公司公开、部门公开的机会+查看对自己部门公开的机会 | ||
151 | +4:查看所有机会:查看所有部门的待审核机会、公开机会及部门公开机会 | ||
152 | +*/ | ||
153 | +const ( | ||
154 | + OpportunityCheckLv1 int = 1 | ||
155 | + OpportunityCheckLv2 int = 2 | ||
156 | + OpportunityCheckLv3 int = 3 | ||
157 | + OpportunityCheckLv4 int = 4 | ||
158 | +) | ||
159 | + | ||
160 | +var ( | ||
161 | + _ PermissionOptionObject = &OptionOpportunity{} | ||
162 | +) | ||
163 | + | ||
164 | +func NewOptionOpportunity() PermissionOptionObject { | ||
165 | + return &OptionOpportunity{ | ||
166 | + Check: OpportunityCheckLv4, | ||
167 | + CheckMap: make(map[int]int), | ||
168 | + CheckOption: CheckOpp{ | ||
169 | + Departments: []CheckDeparment{}, | ||
170 | + }, | ||
171 | + } | ||
172 | +} | ||
173 | + | ||
174 | +//GetValidFunc PermissionOptionBase 接口实现 | ||
175 | +func (p *OptionOpportunity) GetValidFunc(k string) func(UserObject) bool { | ||
176 | + m := map[string]func(UserObject) bool{ | ||
177 | + "check": p.ValidCheck, | ||
178 | + } | ||
179 | + if _, ok := m[k]; ok { | ||
180 | + return m[k] | ||
181 | + } | ||
182 | + return nil | ||
183 | +} | ||
184 | + | ||
185 | +//MergeObject PermissionOptionBase 接口实现 | ||
186 | +func (p *OptionOpportunity) MergeObject(jsonString string) error { | ||
187 | + var obj OptionOpportunity | ||
188 | + err := json.Unmarshal([]byte(jsonString), &obj) | ||
189 | + if err != nil { | ||
190 | + return err | ||
191 | + } | ||
192 | + if p.CheckMap == nil { | ||
193 | + p.CheckMap = make(map[int]int) | ||
194 | + } | ||
195 | + p.CheckMap[obj.Check] = 1 | ||
196 | + departMap := make(map[int64]*CheckDeparment) | ||
197 | + for k := range p.CheckOption.Departments { | ||
198 | + i := p.CheckOption.Departments[k].Id | ||
199 | + departMap[i] = &p.CheckOption.Departments[k] | ||
200 | + } | ||
201 | + //列表合并 | ||
202 | + for k := range obj.CheckOption.Departments { | ||
203 | + i := obj.CheckOption.Departments[k].Id | ||
204 | + if _, ok := departMap[i]; ok { | ||
205 | + if obj.CheckOption.Departments[k].OpenAll > departMap[i].OpenAll { | ||
206 | + departMap[i].OpenAll = obj.CheckOption.Departments[k].OpenAll | ||
207 | + } | ||
208 | + if obj.CheckOption.Departments[k].OpenDepart > departMap[i].OpenDepart { | ||
209 | + departMap[i].OpenDepart = obj.CheckOption.Departments[k].OpenDepart | ||
210 | + } | ||
211 | + if obj.CheckOption.Departments[k].Wait > departMap[i].Wait { | ||
212 | + departMap[i].Wait = obj.CheckOption.Departments[k].Wait | ||
213 | + } | ||
214 | + } else { | ||
215 | + | ||
216 | + departMap[i] = &obj.CheckOption.Departments[k] | ||
217 | + | ||
218 | + } | ||
219 | + } | ||
220 | + p.CheckOption.Departments = make([]CheckDeparment, 0) | ||
221 | + for k := range departMap { | ||
222 | + p.CheckOption.Departments = append(p.CheckOption.Departments, *departMap[k]) | ||
223 | + } | ||
224 | + if obj.CloseChance > p.CloseChance { | ||
225 | + p.CloseChance = obj.CloseChance | ||
226 | + } | ||
227 | + if obj.EditPublicStatus > p.EditPublicStatus { | ||
228 | + p.EditPublicStatus = obj.EditPublicStatus | ||
229 | + } | ||
230 | + if obj.EditSorce > p.EditSorce { | ||
231 | + p.EditSorce = obj.EditSorce | ||
232 | + } | ||
233 | + if obj.EditChance > p.EditChance { | ||
234 | + p.EditChance = obj.EditChance | ||
235 | + } | ||
236 | + return nil | ||
237 | +} | ||
238 | + | ||
239 | +func (p *OptionOpportunity) ValidCheck(obj UserObject) bool { | ||
240 | + if p.Check > 0 { | ||
241 | + return true | ||
242 | + } | ||
243 | + return false | ||
244 | +} | ||
245 | + | ||
246 | +func (p *OptionOpportunity) ValidEditSorce(obj UserObject) bool { | ||
247 | + if p.EditSorce > 0 { | ||
248 | + return true | ||
249 | + } | ||
250 | + return false | ||
251 | +} | ||
252 | +func (p *OptionOpportunity) ValidEditPublicStatus(obj UserObject) bool { | ||
253 | + if p.EditPublicStatus > 0 { | ||
254 | + return true | ||
255 | + } | ||
256 | + return false | ||
257 | +} | ||
258 | + | ||
259 | +func GetUserPermission(userCompanyid int64) (map[string]PermissionOptionObject, error) { | ||
260 | + type CodeOpptionData struct { | ||
261 | + Code string `orm:"column(code)"` | ||
262 | + Opption string `orm:"column(opption)"` | ||
263 | + } | ||
264 | + const datasql string = `SELECT a.code,a.opption | ||
265 | + FROM role_menu AS a | ||
266 | + JOIN user_role AS b ON a.role_id = b.role_id | ||
267 | + JOIN role AS c ON a.role_id = c.id | ||
268 | + WHERE b.user_company_id=? AND c.delete_at =0` | ||
269 | + var ( | ||
270 | + data []CodeOpptionData | ||
271 | + err error | ||
272 | + objMap = make(map[string]PermissionOptionObject) | ||
273 | + ) | ||
274 | + err = utils.ExecuteQueryAll(&data, datasql, userCompanyid) | ||
275 | + if err != nil { | ||
276 | + e := fmt.Errorf("EXCUTE SQL ERR:%s", err) | ||
277 | + return nil, e | ||
278 | + } | ||
279 | + for _, v := range data { | ||
280 | + if _, ok := objMap[v.Code]; ok { | ||
281 | + err = objMap[v.Code].MergeObject(v.Opption) | ||
282 | + if err != nil { | ||
283 | + log.Warn(err.Error()) | ||
284 | + } | ||
285 | + continue | ||
286 | + } | ||
287 | + if fn, ok := CodePermissionObject[v.Code]; ok { | ||
288 | + obj := fn() | ||
289 | + if err = json.Unmarshal([]byte(v.Opption), obj); err != nil { | ||
290 | + log.Debug("解析权限配置option 失败%s", err) | ||
291 | + } | ||
292 | + objMap[v.Code] = obj | ||
293 | + } else { | ||
294 | + log.Error("未知code:%s", v.Code) | ||
295 | + } | ||
296 | + | ||
297 | + } | ||
298 | + return objMap, nil | ||
299 | +} |
@@ -15,6 +15,7 @@ import ( | @@ -15,6 +15,7 @@ import ( | ||
15 | "opp/models" | 15 | "opp/models" |
16 | "opp/protocol" | 16 | "opp/protocol" |
17 | "opp/services/agg" | 17 | "opp/services/agg" |
18 | + "strings" | ||
18 | "time" | 19 | "time" |
19 | ) | 20 | ) |
20 | 21 | ||
@@ -320,6 +321,8 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro | @@ -320,6 +321,8 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro | ||
320 | { | 321 | { |
321 | mapProcess["ReviewStatus"] = int8(request.ReviewStatus) | 322 | mapProcess["ReviewStatus"] = int8(request.ReviewStatus) |
322 | mapProcess["ApproveTime"] = time.Now() | 323 | mapProcess["ApproveTime"] = time.Now() |
324 | + mapProcess["IsActive"] = int8(0) | ||
325 | + mapChance["ApproveTime"] = time.Now() | ||
323 | if request.ReviewStatus == protocol.ReviewStatusPass { | 326 | if request.ReviewStatus == protocol.ReviewStatusPass { |
324 | mapProcess["BasicScore"] = request.ApproveData.Score.BasicScore | 327 | mapProcess["BasicScore"] = request.ApproveData.Score.BasicScore |
325 | mapProcess["ExtraScore"] = request.ApproveData.Score.ExtraScore | 328 | mapProcess["ExtraScore"] = request.ApproveData.Score.ExtraScore |
@@ -408,6 +411,11 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro | @@ -408,6 +411,11 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro | ||
408 | } | 411 | } |
409 | } | 412 | } |
410 | } | 413 | } |
414 | + if err = saveApproveMsgByApproveData(orm, request.ReviewStatus, chance, request.ApproveData); err != nil { | ||
415 | + orm.Rollback() | ||
416 | + log.Error("发送审核日志失败", err) | ||
417 | + return | ||
418 | + } | ||
411 | if err = utils.UpdateTableByMapWithOrmer(orm, process, mapProcess); err != nil { | 419 | if err = utils.UpdateTableByMapWithOrmer(orm, process, mapProcess); err != nil { |
412 | log.Error("更新机会审核流程 状态失败 process_id:", process.Id, err) | 420 | log.Error("更新机会审核流程 状态失败 process_id:", process.Id, err) |
413 | orm.Rollback() | 421 | orm.Rollback() |
@@ -465,6 +473,40 @@ func ProcessIntegrate(header *protocol.RequestHeader, request *ProcessIntegrateR | @@ -465,6 +473,40 @@ func ProcessIntegrate(header *protocol.RequestHeader, request *ProcessIntegrateR | ||
465 | return | 473 | return |
466 | } | 474 | } |
467 | 475 | ||
476 | +//发送审核日志 | ||
477 | +func saveApproveMsgByApproveData(orm orm.Ormer, reviewStatus int, chance *models.Chance, approveData protocol.ApproveData) (err error) { | ||
478 | + var ( | ||
479 | + parames = make([]interface{}, 0) | ||
480 | + code = 0 | ||
481 | + ) | ||
482 | + if reviewStatus == protocol.ReviewStatusReturn { | ||
483 | + //发送退回日志 | ||
484 | + code = 3 | ||
485 | + } | ||
486 | + if reviewStatus == protocol.ReviewStatusPass { | ||
487 | + //发送通过日志 | ||
488 | + score := approveData.Score | ||
489 | + parames = append(parames, []interface{}{score.BasicScore, score.ExtraScore, score.ValueScore}...) | ||
490 | + if approveData.PublicData.PublishStatus == protocol.PublicToCompany { | ||
491 | + code = 4 | ||
492 | + } | ||
493 | + if approveData.PublicData.PublishStatus == protocol.PublicToDepartment { | ||
494 | + code = 5 | ||
495 | + var department []string | ||
496 | + for i := range approveData.PublicData.VisibleObjects { | ||
497 | + v := approveData.PublicData.VisibleObjects[i] | ||
498 | + department = append(department, v.Name) | ||
499 | + } | ||
500 | + parames = append(parames, strings.Join(department, ",")) | ||
501 | + } | ||
502 | + } | ||
503 | + if err = agg.SaveApproveLog(orm, code, chance.UserId, chance.Id, parames...); err != nil { | ||
504 | + log.Error(err) | ||
505 | + return | ||
506 | + } | ||
507 | + return | ||
508 | +} | ||
509 | + | ||
468 | //系统审核状态转为审核类型 reviewStatus - > approveType | 510 | //系统审核状态转为审核类型 reviewStatus - > approveType |
469 | func ConverReviewStatus(reviewStatus int) (approveType int) { | 511 | func ConverReviewStatus(reviewStatus int) (approveType int) { |
470 | if reviewStatus == protocol.ReviewStatusPass { | 512 | if reviewStatus == protocol.ReviewStatusPass { |
@@ -513,7 +555,7 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance) | @@ -513,7 +555,7 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance) | ||
513 | if item.ReviewStatus != protocol.ReviewStatusAuditging { | 555 | if item.ReviewStatus != protocol.ReviewStatusAuditging { |
514 | item.ApproveTime = process.ApproveTime.Unix() * 1000 | 556 | item.ApproveTime = process.ApproveTime.Unix() * 1000 |
515 | } | 557 | } |
516 | - switch item.ApproveWay { | 558 | + switch item.ApproveType { |
517 | case protocol.AuditByDepartmentor: | 559 | case protocol.AuditByDepartmentor: |
518 | break | 560 | break |
519 | case protocol.AuditByUser: | 561 | case protocol.AuditByUser: |
@@ -12,6 +12,7 @@ import ( | @@ -12,6 +12,7 @@ import ( | ||
12 | "opp/models" | 12 | "opp/models" |
13 | "opp/protocol" | 13 | "opp/protocol" |
14 | "opp/services/agg" | 14 | "opp/services/agg" |
15 | + "strings" | ||
15 | "time" | 16 | "time" |
16 | ) | 17 | ) |
17 | 18 | ||
@@ -76,13 +77,18 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc | @@ -76,13 +77,18 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc | ||
76 | log.Error(err) | 77 | log.Error(err) |
77 | return | 78 | return |
78 | } | 79 | } |
79 | - if request.SourceType == protocol.SourceTypeChance { | ||
80 | - message = protocol.MessageZanChance | ||
81 | - if chance, err = models.GetChanceById(request.Id); err != nil { | 80 | + if chance, err = models.GetChanceById(request.ChanceId); err != nil { |
82 | log.Error(request.Id, "机会不存在", err) | 81 | log.Error(request.Id, "机会不存在", err) |
83 | err = protocol.NewErrWithMessage(5101) | 82 | err = protocol.NewErrWithMessage(5101) |
84 | return | 83 | return |
85 | } | 84 | } |
85 | + if request.SourceType == protocol.SourceTypeChance { | ||
86 | + message = protocol.MessageZanChance | ||
87 | + //if chance, err = models.GetChanceById(request.Id); err != nil { | ||
88 | + // log.Error(request.Id, "机会不存在", err) | ||
89 | + // err = protocol.NewErrWithMessage(5101) | ||
90 | + // return | ||
91 | + //} | ||
86 | sourceId = chance.Id | 92 | sourceId = chance.Id |
87 | userId = chance.UserId | 93 | userId = chance.UserId |
88 | chanceType = chance.ChanceTypeId | 94 | chanceType = chance.ChanceTypeId |
@@ -140,6 +146,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc | @@ -140,6 +146,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc | ||
140 | ChanceType: chanceType, | 146 | ChanceType: chanceType, |
141 | CreateAt: time.Now(), | 147 | CreateAt: time.Now(), |
142 | EnableStatus: 1, | 148 | EnableStatus: 1, |
149 | + ChanceId: request.ChanceId, | ||
143 | } | 150 | } |
144 | if _, err = models.AddChanceFavorite(chanceFavoirte); err != nil { | 151 | if _, err = models.AddChanceFavorite(chanceFavoirte); err != nil { |
145 | log.Error(err) | 152 | log.Error(err) |
@@ -159,7 +166,9 @@ END: | @@ -159,7 +166,9 @@ END: | ||
159 | agg.DeleteSendedMsg(sourceId, request.SourceType, userId, protocol.MsgTypeThumbUp) | 166 | agg.DeleteSendedMsg(sourceId, request.SourceType, userId, protocol.MsgTypeThumbUp) |
160 | } else { | 167 | } else { |
161 | //发送点赞消息 | 168 | //发送点赞消息 |
162 | - agg.SendMsg(userId, fmt.Sprintf("%v", userId), header.CompanyId, request.Id, 1, message, protocol.MsgTypeThumbUp) | 169 | + if header.UserId != userId { |
170 | + agg.SendMsg(userId, fmt.Sprintf("%v", userId), header.CompanyId, request.Id, request.SourceType, message, protocol.MsgTypeThumbUp, request.ChanceId) | ||
171 | + } | ||
163 | } | 172 | } |
164 | if !utils.ExecuteSqlByRoll(true, agg.GetIncrementSql(table, "zan_total", incre, request.Id)) { | 173 | if !utils.ExecuteSqlByRoll(true, agg.GetIncrementSql(table, "zan_total", incre, request.Id)) { |
165 | // | 174 | // |
@@ -336,6 +345,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit | @@ -336,6 +345,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit | ||
336 | AuditLevel: 1, | 345 | AuditLevel: 1, |
337 | ReviewStatus: protocol.ReviewStatusAuditging, | 346 | ReviewStatus: protocol.ReviewStatusAuditging, |
338 | DepartmentId: request.RelatedDepartment, | 347 | DepartmentId: request.RelatedDepartment, |
348 | + Code: fmt.Sprintf("%v%v", chanceType.Code, template.Code), | ||
339 | } | 349 | } |
340 | if _, err = orm.Insert(chance); err != nil { | 350 | if _, err = orm.Insert(chance); err != nil { |
341 | log.Error(err) | 351 | log.Error(err) |
@@ -403,6 +413,12 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit | @@ -403,6 +413,12 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit | ||
403 | return | 413 | return |
404 | } | 414 | } |
405 | } | 415 | } |
416 | + //发送提交日志 | ||
417 | + if err = agg.SaveApproveLog(orm, 1, header.UserId, chance.Id); err != nil { | ||
418 | + log.Error(err) | ||
419 | + orm.Rollback() | ||
420 | + return | ||
421 | + } | ||
406 | orm.Commit() | 422 | orm.Commit() |
407 | 423 | ||
408 | rsp = &protocol.ChanceSubmitResponse{} | 424 | rsp = &protocol.ChanceSubmitResponse{} |
@@ -448,14 +464,19 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | @@ -448,14 +464,19 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | ||
448 | //} | 464 | //} |
449 | if _, e := models.GetAuditFlowProcessByReview(request.Id, 0, protocol.ReviewStatusWait); e == nil { | 465 | if _, e := models.GetAuditFlowProcessByReview(request.Id, 0, protocol.ReviewStatusWait); e == nil { |
450 | request.IsPublish = true | 466 | request.IsPublish = true |
467 | + updateMap["DepartmentId"] = request.RelatedDepartment | ||
468 | + //log.Info(fmt.Sprintf("机会编辑 is_publish:%v chance.review_status:%v 是否是本人:%v",request.IsPublish,chance.ReviewStatus,chance.UserId==header.UserId)) | ||
469 | + } else { | ||
470 | + log.Info(fmt.Sprintf("机会编辑 chance_id:%v chance.review_status:%v 无待处理 审核数据", request.Id, chance.ReviewStatus)) | ||
451 | } | 471 | } |
452 | } else { | 472 | } else { |
453 | request.IsPublish = false | 473 | request.IsPublish = false |
474 | + log.Info(fmt.Sprintf("机会编辑 is_publish:%v chance.review_status:%v 是否是本人:%v", request.IsPublish, chance.ReviewStatus, chance.UserId == header.UserId)) | ||
454 | } | 475 | } |
455 | //TODO:非本人 1.需要验证角色权限 2是否是审核人 3.是否是本人 (目前本人才可以审核) | 476 | //TODO:非本人 1.需要验证角色权限 2是否是审核人 3.是否是本人 (目前本人才可以审核) |
456 | - if chance.UserId != header.Uid { | 477 | + if chance.UserId != header.UserId { |
457 | err = protocol.NewErrWithMessage(5206) | 478 | err = protocol.NewErrWithMessage(5206) |
458 | - log.Error(fmt.Sprintf("user:%v 无权限操作机会 chance:%v", header.Uid, chance.Id)) | 479 | + log.Error(fmt.Sprintf("user:%v 无权限操作机会 chance:%v", header.UserId, chance.Id)) |
459 | return | 480 | return |
460 | } | 481 | } |
461 | //1.模板是否存在 | 482 | //1.模板是否存在 |
@@ -474,7 +495,6 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | @@ -474,7 +495,6 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | ||
474 | updateMap["AuditTemplateConfig"] = common.AssertJson(auditConfig) | 495 | updateMap["AuditTemplateConfig"] = common.AssertJson(auditConfig) |
475 | updateMap["Content"] = request.Content | 496 | updateMap["Content"] = request.Content |
476 | updateMap["SourceContent"] = common.AssertJson(request.FormList) | 497 | updateMap["SourceContent"] = common.AssertJson(request.FormList) |
477 | - updateMap["DepartmentId"] = request.RelatedDepartment | ||
478 | 498 | ||
479 | if err = utils.UpdateTableByMapWithOrmer(orm, &models.Chance{Id: chance.Id}, updateMap); err != nil { | 499 | if err = utils.UpdateTableByMapWithOrmer(orm, &models.Chance{Id: chance.Id}, updateMap); err != nil { |
480 | log.Error(err) | 500 | log.Error(err) |
@@ -560,6 +580,12 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | @@ -560,6 +580,12 @@ func ChanceUpdate(header *protocol.RequestHeader, request *protocol.ChanceUpdate | ||
560 | } | 580 | } |
561 | } | 581 | } |
562 | } | 582 | } |
583 | + //发送提交日志 | ||
584 | + if err = agg.SaveApproveLog(orm, 1, chance.UserId, chance.Id); err != nil { | ||
585 | + log.Error(err) | ||
586 | + orm.Rollback() | ||
587 | + return | ||
588 | + } | ||
563 | } | 589 | } |
564 | } | 590 | } |
565 | orm.Commit() | 591 | orm.Commit() |
@@ -620,12 +646,43 @@ func ChanceChangePublish(header *protocol.RequestHeader, request *protocol.Chanc | @@ -620,12 +646,43 @@ func ChanceChangePublish(header *protocol.RequestHeader, request *protocol.Chanc | ||
620 | } | 646 | } |
621 | } | 647 | } |
622 | } | 648 | } |
649 | + | ||
650 | + if err = saveApproveMsgChangePublic(orm, chance, request.PublicData); err != nil { | ||
651 | + log.Error(err) | ||
652 | + orm.Rollback() | ||
653 | + return | ||
654 | + } | ||
623 | orm.Commit() | 655 | orm.Commit() |
624 | //TODO:添加log | 656 | //TODO:添加log |
625 | rsp = &protocol.ChanceChangePublishResponse{} | 657 | rsp = &protocol.ChanceChangePublishResponse{} |
626 | return | 658 | return |
627 | } | 659 | } |
628 | 660 | ||
661 | +//发送审核日志 | ||
662 | +func saveApproveMsgChangePublic(orm orm.Ormer, chance *models.Chance, approveData protocol.PublicData) (err error) { | ||
663 | + var ( | ||
664 | + parames = make([]interface{}, 0) | ||
665 | + code = 0 | ||
666 | + ) | ||
667 | + if approveData.PublishStatus == protocol.PublicToCompany { | ||
668 | + code = 7 | ||
669 | + } | ||
670 | + if approveData.PublishStatus == protocol.PublicToDepartment { | ||
671 | + code = 8 | ||
672 | + var department []string | ||
673 | + for i := range approveData.VisibleObjects { | ||
674 | + v := approveData.VisibleObjects[i] | ||
675 | + department = append(department, v.Name) | ||
676 | + } | ||
677 | + parames = append(parames, strings.Join(department, ",")) | ||
678 | + } | ||
679 | + if err = agg.SaveApproveLog(orm, code, chance.UserId, chance.Id, parames...); err != nil { | ||
680 | + log.Error(err) | ||
681 | + return | ||
682 | + } | ||
683 | + return | ||
684 | +} | ||
685 | + | ||
629 | //修改评分 | 686 | //修改评分 |
630 | func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceChangeScoreRequest) (rsp *protocol.ChanceChangeScoreResponse, err error) { | 687 | func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceChangeScoreRequest) (rsp *protocol.ChanceChangeScoreResponse, err error) { |
631 | var ( | 688 | var ( |
@@ -667,6 +724,17 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC | @@ -667,6 +724,17 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC | ||
667 | orm.Rollback() | 724 | orm.Rollback() |
668 | return | 725 | return |
669 | } | 726 | } |
727 | + //修改评分日志 | ||
728 | + if err = agg.SaveApproveLog(orm, 9, chance.UserId, chance.Id, request.Score.BasicScore, request.Score.ExtraScore, request.Score.ValueScore); err != nil { | ||
729 | + log.Error(err) | ||
730 | + return | ||
731 | + } | ||
732 | + | ||
733 | + //if err = agg.SaveApproveLog(orm,9,chance.UserId,chance.Id,request.Score.BasicScore,request.Score.ExtraScore,request.Score.ValueScore);err!=nil{ | ||
734 | + // log.Error(err) | ||
735 | + // return | ||
736 | + //} | ||
737 | + | ||
670 | orm.Commit() | 738 | orm.Commit() |
671 | rsp = &protocol.ChanceChangeScoreResponse{ | 739 | rsp = &protocol.ChanceChangeScoreResponse{ |
672 | DiscoveryScore: result.DiscoveryScore, | 740 | DiscoveryScore: result.DiscoveryScore, |
@@ -781,6 +849,7 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | @@ -781,6 +849,7 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | ||
781 | approver *models.User | 849 | approver *models.User |
782 | roleIds []int | 850 | roleIds []int |
783 | roleId int | 851 | roleId int |
852 | + admin *models.UserCompany | ||
784 | ) | 853 | ) |
785 | if configs, err = models.GetAuditFlowConfigsLevel(templateId, 1); err != nil { | 854 | if configs, err = models.GetAuditFlowConfigsLevel(templateId, 1); err != nil { |
786 | if err == orm.ErrNoRows { | 855 | if err == orm.ErrNoRows { |
@@ -842,8 +911,16 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | @@ -842,8 +911,16 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | ||
842 | 911 | ||
843 | if company.AdminId == 0 { | 912 | if company.AdminId == 0 { |
844 | err = fmt.Errorf("GenAuditFlowProcess:company.admin is not set") | 913 | err = fmt.Errorf("GenAuditFlowProcess:company.admin is not set") |
914 | + err = protocol.NewErrWithMessage(5207) | ||
845 | return | 915 | return |
846 | } | 916 | } |
917 | + | ||
918 | + if admin, err = models.GetUserCompanyByUserId(company.AdminId, header.CompanyId); err != nil { | ||
919 | + err = fmt.Errorf("GenAuditFlowProcess:company.admin is not set") | ||
920 | + err = protocol.NewErrWithMessage(5207) | ||
921 | + return | ||
922 | + } | ||
923 | + | ||
847 | //3.生成审核列表 | 924 | //3.生成审核列表 |
848 | for i := range configs { | 925 | for i := range configs { |
849 | config := configs[i] | 926 | config := configs[i] |
@@ -882,14 +959,14 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | @@ -882,14 +959,14 @@ func GenAuditFlowProcess(header *protocol.RequestHeader, chanceId int64, related | ||
882 | for j := 0; j < len(userIds); j++ { | 959 | for j := 0; j < len(userIds); j++ { |
883 | uid := userIds[j] | 960 | uid := userIds[j] |
884 | if uid == 0 && auditConfig.NoApprover == protocol.NoApproverToAdmin { //审批人为空 转交给管理员 | 961 | if uid == 0 && auditConfig.NoApprover == protocol.NoApproverToAdmin { //审批人为空 转交给管理员 |
885 | - uid = company.AdminId | 962 | + uid = admin.Id |
886 | } | 963 | } |
887 | if uid == 0 { | 964 | if uid == 0 { |
888 | - uid = company.AdminId | 965 | + uid = admin.Id |
889 | } | 966 | } |
890 | if uid == header.UserId { //审核人自己 转交给管理员 | 967 | if uid == header.UserId { //审核人自己 转交给管理员 |
891 | log.Info(fmt.Sprintf("生成机会审批流-转给管理员:chance_id:%v audit_level:%v audit_user:%v -> admin:%v", chanceId, config.Level, uid, company.AdminId)) | 968 | log.Info(fmt.Sprintf("生成机会审批流-转给管理员:chance_id:%v audit_level:%v audit_user:%v -> admin:%v", chanceId, config.Level, uid, company.AdminId)) |
892 | - uid = company.AdminId | 969 | + uid = admin.Id |
893 | } | 970 | } |
894 | if approver, err = models.GetUserByUcid(uid); err != nil { | 971 | if approver, err = models.GetUserByUcid(uid); err != nil { |
895 | log.Error(uid, err) | 972 | log.Error(uid, err) |
@@ -935,6 +1012,7 @@ func resolveActionType(t uint) string { | @@ -935,6 +1012,7 @@ func resolveActionType(t uint) string { | ||
935 | func getDepartmentors(header *protocol.RequestHeader, relatedDeparmentId int64) (ids []int64, err error) { | 1012 | func getDepartmentors(header *protocol.RequestHeader, relatedDeparmentId int64) (ids []int64, err error) { |
936 | var ( | 1013 | var ( |
937 | departments *models.Department | 1014 | departments *models.Department |
1015 | + lastDepartmentId int | ||
938 | ) | 1016 | ) |
939 | //if err = models.GetUserDepartments(header.UserId, header.CompanyId, &departments); err != nil { | 1017 | //if err = models.GetUserDepartments(header.UserId, header.CompanyId, &departments); err != nil { |
940 | // log.Error(header.UserId,header.CompanyId,err) | 1018 | // log.Error(header.UserId,header.CompanyId,err) |
@@ -944,19 +1022,37 @@ func getDepartmentors(header *protocol.RequestHeader, relatedDeparmentId int64) | @@ -944,19 +1022,37 @@ func getDepartmentors(header *protocol.RequestHeader, relatedDeparmentId int64) | ||
944 | log.Error(relatedDeparmentId, err) | 1022 | log.Error(relatedDeparmentId, err) |
945 | return | 1023 | return |
946 | } | 1024 | } |
1025 | + //部门长 | ||
1026 | + for { | ||
947 | if len(departments.Managers) > 0 { | 1027 | if len(departments.Managers) > 0 { |
948 | var tmpIds []int64 | 1028 | var tmpIds []int64 |
949 | - if err = json.Unmarshal([]byte(departments.Managers), &tmpIds); err == nil { | 1029 | + if e := json.Unmarshal([]byte(departments.Managers), &tmpIds); e == nil { |
950 | if len(tmpIds) > 0 { | 1030 | if len(tmpIds) > 0 { |
951 | ids = append(ids, tmpIds...) | 1031 | ids = append(ids, tmpIds...) |
952 | } | 1032 | } |
1033 | + break | ||
1034 | + } else { | ||
1035 | + log.Error(e) | ||
1036 | + } | ||
1037 | + //break | ||
1038 | + } | ||
1039 | + if departments.ParentId != 0 { | ||
1040 | + //relatedDeparmentId = int64departments.ParentId | ||
1041 | + lastDepartmentId = departments.ParentId | ||
1042 | + if departments, err = models.GetDepartmentById(int(departments.ParentId)); err != nil { | ||
1043 | + log.Error(relatedDeparmentId, err) | ||
1044 | + err = nil | ||
1045 | + break | ||
1046 | + } | ||
1047 | + } else { | ||
1048 | + break | ||
953 | } | 1049 | } |
954 | } | 1050 | } |
955 | //部门长不存在 | 1051 | //部门长不存在 |
956 | if len(ids) == 0 { | 1052 | if len(ids) == 0 { |
957 | ids = append(ids, 0) | 1053 | ids = append(ids, 0) |
958 | } | 1054 | } |
959 | - log.Info(fmt.Sprintf("生成机会审批流-部门:department_id:%v managers:%v ids:%v", relatedDeparmentId, departments.Managers, ids)) | 1055 | + log.Info(fmt.Sprintf("生成机会审批流-部门:department_id:%v managers:%v ids:%v last_department_id:%v", relatedDeparmentId, departments.Managers, ids, lastDepartmentId)) |
960 | return | 1056 | return |
961 | } | 1057 | } |
962 | 1058 | ||
@@ -1060,6 +1156,11 @@ func MySubmitChance(header *protocol.RequestHeader, request *protocol.MySubmitCh | @@ -1060,6 +1156,11 @@ func MySubmitChance(header *protocol.RequestHeader, request *protocol.MySubmitCh | ||
1060 | Id: chance.Id, | 1156 | Id: chance.Id, |
1061 | Provider: provider, | 1157 | Provider: provider, |
1062 | CreateTime: chance.CreateTime.Unix() * 1000, | 1158 | CreateTime: chance.CreateTime.Unix() * 1000, |
1159 | + UpdateTime: chance.UpdateTime.Unix() * 1000, | ||
1160 | + ApproveTime: chance.ApproveTime.Unix() * 1000, | ||
1161 | + } | ||
1162 | + if item.ApproveTime < 0 { | ||
1163 | + item.ApproveTime = 0 | ||
1063 | } | 1164 | } |
1064 | jsonUnmarshal(chance.SourceContent, &item.FormList) | 1165 | jsonUnmarshal(chance.SourceContent, &item.FormList) |
1065 | item.FormList = clearEmptyForm(item.FormList) | 1166 | item.FormList = clearEmptyForm(item.FormList) |
@@ -1187,8 +1288,15 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove | @@ -1187,8 +1288,15 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove | ||
1187 | item := protocol.ChanceItem{ | 1288 | item := protocol.ChanceItem{ |
1188 | Id: chance.ChanceId, | 1289 | Id: chance.ChanceId, |
1189 | Provider: provider, | 1290 | Provider: provider, |
1291 | + CreateTime: chance.CreateTime.Unix() * 1000, | ||
1292 | + UpdateTime: chance.UpdateTime.Unix() * 1000, | ||
1293 | + ApproveTime: chance.ChanceApproveTime.Unix() * 1000, | ||
1294 | + //CreateTime:chance.c | ||
1190 | //CreateTime: chance.CreateTime.Unix() * 1000, | 1295 | //CreateTime: chance.CreateTime.Unix() * 1000, |
1191 | } | 1296 | } |
1297 | + if item.ApproveTime < 0 { | ||
1298 | + item.ApproveTime = 0 | ||
1299 | + } | ||
1192 | jsonUnmarshal(chance.SourceContent, &item.FormList) | 1300 | jsonUnmarshal(chance.SourceContent, &item.FormList) |
1193 | item.FormList = clearEmptyForm(item.FormList) | 1301 | item.FormList = clearEmptyForm(item.FormList) |
1194 | jsonUnmarshal(chance.Images, &item.Pictures) | 1302 | jsonUnmarshal(chance.Images, &item.Pictures) |
@@ -1287,6 +1395,7 @@ func MyCollectChance(header *protocol.RequestHeader, request *protocol.MyCollect | @@ -1287,6 +1395,7 @@ func MyCollectChance(header *protocol.RequestHeader, request *protocol.MyCollect | ||
1287 | Id: chance.CollectId, | 1395 | Id: chance.CollectId, |
1288 | CollectTime: chance.CollectTime.Unix() * 1000, | 1396 | CollectTime: chance.CollectTime.Unix() * 1000, |
1289 | } | 1397 | } |
1398 | + //commItem.ChanceId = chance.ChanceId | ||
1290 | } | 1399 | } |
1291 | rsp.List = append(rsp.List, commItem) | 1400 | rsp.List = append(rsp.List, commItem) |
1292 | } | 1401 | } |
@@ -1614,15 +1723,26 @@ func ChanceDelete(header *protocol.RequestHeader, request *protocol.ChanceDelete | @@ -1614,15 +1723,26 @@ func ChanceDelete(header *protocol.RequestHeader, request *protocol.ChanceDelete | ||
1614 | err = protocol.NewErrWithMessage(5202) | 1723 | err = protocol.NewErrWithMessage(5202) |
1615 | return | 1724 | return |
1616 | } | 1725 | } |
1617 | - if err = utils.UpdateTableByMap(chance, map[string]interface{}{ | 1726 | + orm := orm.NewOrm() |
1727 | + orm.Begin() | ||
1728 | + //发送提交日志 | ||
1729 | + if err = agg.SaveApproveLog(orm, 2, chance.UserId, chance.Id); err != nil { | ||
1730 | + log.Error(err) | ||
1731 | + orm.Rollback() | ||
1732 | + return | ||
1733 | + } | ||
1734 | + if err = utils.UpdateTableByMapWithOrmer(orm, chance, map[string]interface{}{ | ||
1618 | "EnableStatus": int8(0), | 1735 | "EnableStatus": int8(0), |
1619 | }); err != nil { | 1736 | }); err != nil { |
1620 | log.Error(err) | 1737 | log.Error(err) |
1738 | + orm.Rollback() | ||
1621 | return | 1739 | return |
1622 | } | 1740 | } |
1623 | - if err = models.CloseAuditFlowProcess(chance.Id); err != nil { | 1741 | + if err = models.CloseAuditFlowProcess(orm, chance.Id); err != nil { |
1624 | log.Error(err) | 1742 | log.Error(err) |
1743 | + orm.Rollback() | ||
1625 | return | 1744 | return |
1626 | } | 1745 | } |
1746 | + orm.Commit() | ||
1627 | return | 1747 | return |
1628 | } | 1748 | } |
@@ -74,7 +74,7 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) | @@ -74,7 +74,7 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) | ||
74 | return | 74 | return |
75 | } | 75 | } |
76 | } | 76 | } |
77 | - if err = agg.SendMsg(recevierId, "", header.CompanyId, sourceId, request.SourceType, request.Content, protocol.MsgTypeComment); err != nil { | 77 | + if err = agg.SendMsg(recevierId, "", header.CompanyId, sourceId, request.SourceType, request.Content, protocol.MsgTypeComment, request.Id); err != nil { |
78 | log.Error(err) | 78 | log.Error(err) |
79 | orm.Rollback() | 79 | orm.Rollback() |
80 | return | 80 | return |
@@ -140,6 +140,7 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) | @@ -140,6 +140,7 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) | ||
140 | } | 140 | } |
141 | rsp = &protocol.CommentsResponse{ | 141 | rsp = &protocol.CommentsResponse{ |
142 | Total: total, | 142 | Total: total, |
143 | + Comments: make([]*protocol.Comments, 0), | ||
143 | } | 144 | } |
144 | for i := range comments { | 145 | for i := range comments { |
145 | comment := comments[i] | 146 | comment := comments[i] |
@@ -155,9 +156,10 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) | @@ -155,9 +156,10 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) | ||
155 | ViewTotal: comment.ViewTotal, | 156 | ViewTotal: comment.ViewTotal, |
156 | ZanTotal: comment.ZanTotal, | 157 | ZanTotal: comment.ZanTotal, |
157 | CommentTotal: comment.CommentTotal, | 158 | CommentTotal: comment.CommentTotal, |
159 | + IsZan: false, | ||
158 | } | 160 | } |
159 | if exists, _ = models.ExitsChanceFavorite(header.UserId, header.CompanyId, comment.Id, protocol.MarkFlagZan); exists { | 161 | if exists, _ = models.ExitsChanceFavorite(header.UserId, header.CompanyId, comment.Id, protocol.MarkFlagZan); exists { |
160 | - item.IsZan = 1 | 162 | + item.IsZan = true |
161 | } | 163 | } |
162 | rsp.Comments = append(rsp.Comments, item) | 164 | rsp.Comments = append(rsp.Comments, item) |
163 | } | 165 | } |
@@ -221,9 +223,10 @@ func CommentDetailsSingle(header *protocol.RequestHeader, request *protocol.Comm | @@ -221,9 +223,10 @@ func CommentDetailsSingle(header *protocol.RequestHeader, request *protocol.Comm | ||
221 | ViewTotal: comment.ViewTotal, | 223 | ViewTotal: comment.ViewTotal, |
222 | ZanTotal: comment.ZanTotal, | 224 | ZanTotal: comment.ZanTotal, |
223 | CommentTotal: comment.CommentTotal, | 225 | CommentTotal: comment.CommentTotal, |
226 | + IsZan: false, | ||
224 | } | 227 | } |
225 | if exists, _ = models.ExitsChanceFavorite(header.UserId, header.CompanyId, comment.Id, protocol.MarkFlagZan); exists { | 228 | if exists, _ = models.ExitsChanceFavorite(header.UserId, header.CompanyId, comment.Id, protocol.MarkFlagZan); exists { |
226 | - rsp.Comment.IsZan = 1 | 229 | + rsp.Comment.IsZan = true |
227 | } | 230 | } |
228 | return | 231 | return |
229 | } | 232 | } |
@@ -15,9 +15,43 @@ import ( | @@ -15,9 +15,43 @@ import ( | ||
15 | ) | 15 | ) |
16 | 16 | ||
17 | func MessageCenter(header *protocol.RequestHeader, request *protocol.MessageCenterRequest) (rsp *protocol.MessageCenterResponse, err error) { | 17 | func MessageCenter(header *protocol.RequestHeader, request *protocol.MessageCenterRequest) (rsp *protocol.MessageCenterResponse, err error) { |
18 | - var () | 18 | + var ( |
19 | + list []*protocol.MessageTotal | ||
20 | + interactionCount int | ||
21 | + ) | ||
19 | rsp = &protocol.MessageCenterResponse{} | 22 | rsp = &protocol.MessageCenterResponse{} |
23 | + if request.MsgType&protocol.MsgTypeInteraction > 0 { | ||
24 | + if request.MsgType&protocol.MsgTypeThumbUp == 0 { | ||
25 | + request.MsgType |= protocol.MsgTypeThumbUp | ||
26 | + } | ||
27 | + if request.MsgType&protocol.MsgTypeComment == 0 { | ||
28 | + request.MsgType |= protocol.MsgTypeComment | ||
29 | + } | ||
30 | + if request.MsgType&protocol.MsgTypeAuditBy == 0 { | ||
31 | + request.MsgType |= protocol.MsgTypeAuditBy | ||
32 | + } | ||
33 | + } | ||
20 | err = models.GetUserMsgTotals(header.UserId, header.CompanyId, request.MsgType, &rsp.Totals) | 34 | err = models.GetUserMsgTotals(header.UserId, header.CompanyId, request.MsgType, &rsp.Totals) |
35 | + for i := range rsp.Totals { | ||
36 | + item := rsp.Totals[i] | ||
37 | + if item.MsgType == protocol.MsgTypeThumbUp { | ||
38 | + interactionCount += item.MsgTotal | ||
39 | + continue | ||
40 | + } | ||
41 | + if item.MsgType == protocol.MsgTypeComment { | ||
42 | + interactionCount += item.MsgTotal | ||
43 | + continue | ||
44 | + } | ||
45 | + if item.MsgType == protocol.MsgTypeAuditBy { | ||
46 | + interactionCount += item.MsgTotal | ||
47 | + continue | ||
48 | + } | ||
49 | + list = append(list, item) | ||
50 | + } | ||
51 | + if interactionCount > 0 { | ||
52 | + list = append(list, &protocol.MessageTotal{MsgType: protocol.MsgTypeInteraction, MsgTotal: interactionCount}) | ||
53 | + } | ||
54 | + rsp.Totals = list | ||
21 | return | 55 | return |
22 | } | 56 | } |
23 | 57 | ||
@@ -215,13 +249,14 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -215,13 +249,14 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
215 | rsp = &protocol.MsgChanceApproveResponse{Total: total} | 249 | rsp = &protocol.MsgChanceApproveResponse{Total: total} |
216 | for i := 0; i < len(myChances); i++ { | 250 | for i := 0; i < len(myChances); i++ { |
217 | chance := myChances[i] | 251 | chance := myChances[i] |
218 | - commItem := protocol.CommonListItem{} | 252 | + commItem := protocol.MsgCommonListItem{} |
219 | commItem.ReviewStatus = chance.ReviewStatus | 253 | commItem.ReviewStatus = chance.ReviewStatus |
220 | if len(chance.SourceContent) == 0 { //机会删除 | 254 | if len(chance.SourceContent) == 0 { //机会删除 |
221 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 255 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
222 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 | 256 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 |
223 | commItem.ChanceStatus = protocol.ChanceStatusClose | 257 | commItem.ChanceStatus = protocol.ChanceStatusClose |
224 | - } else { | 258 | + } |
259 | + | ||
225 | if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil { | 260 | if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil { |
226 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 261 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
227 | log.Error(err) | 262 | log.Error(err) |
@@ -239,7 +274,6 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -239,7 +274,6 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
239 | utils.JsonUnmarshal(chance.Videos, &item.Videos) | 274 | utils.JsonUnmarshal(chance.Videos, &item.Videos) |
240 | commItem.Chance = item | 275 | commItem.Chance = item |
241 | } | 276 | } |
242 | - } | ||
243 | 277 | ||
244 | if chance.ReviewStatus == protocol.ReviewStatusPass { | 278 | if chance.ReviewStatus == protocol.ReviewStatusPass { |
245 | var approveData *protocol.ApproveData | 279 | var approveData *protocol.ApproveData |
@@ -248,8 +282,11 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -248,8 +282,11 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
248 | commItem.Score = approveData.Score | 282 | commItem.Score = approveData.Score |
249 | } | 283 | } |
250 | } | 284 | } |
285 | + commItem.MsgId = chance.Id | ||
251 | //审核完有审核数据 | 286 | //审核完有审核数据 |
252 | commItem.Message = chance.Message | 287 | commItem.Message = chance.Message |
288 | + commItem.IsRead = chance.IsRead == 1 | ||
289 | + commItem.ChanceId = chance.ChanceId | ||
253 | rsp.List = append(rsp.List, commItem) | 290 | rsp.List = append(rsp.List, commItem) |
254 | } | 291 | } |
255 | return | 292 | return |
@@ -273,13 +310,14 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | @@ -273,13 +310,14 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | ||
273 | rsp = &protocol.MsgChanceSubmitResponse{Total: total} | 310 | rsp = &protocol.MsgChanceSubmitResponse{Total: total} |
274 | for i := 0; i < len(myChances); i++ { | 311 | for i := 0; i < len(myChances); i++ { |
275 | chance := myChances[i] | 312 | chance := myChances[i] |
276 | - commItem := protocol.CommonListItem{} | 313 | + commItem := protocol.MsgCommonListItem{} |
277 | commItem.ReviewStatus = chance.ReviewStatus | 314 | commItem.ReviewStatus = chance.ReviewStatus |
278 | if len(chance.SourceContent) == 0 { //机会删除 | 315 | if len(chance.SourceContent) == 0 { //机会删除 |
279 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 316 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
280 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 | 317 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 |
281 | commItem.ChanceStatus = protocol.ChanceStatusClose | 318 | commItem.ChanceStatus = protocol.ChanceStatusClose |
282 | - } else { | 319 | + } |
320 | + | ||
283 | if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil { | 321 | if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil { |
284 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 322 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
285 | log.Error(err) | 323 | log.Error(err) |
@@ -297,7 +335,6 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | @@ -297,7 +335,6 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | ||
297 | utils.JsonUnmarshal(chance.Videos, &item.Videos) | 335 | utils.JsonUnmarshal(chance.Videos, &item.Videos) |
298 | commItem.Chance = item | 336 | commItem.Chance = item |
299 | } | 337 | } |
300 | - } | ||
301 | 338 | ||
302 | if chance.ReviewStatus == protocol.ReviewStatusPass { | 339 | if chance.ReviewStatus == protocol.ReviewStatusPass { |
303 | var approveData *protocol.ApproveData | 340 | var approveData *protocol.ApproveData |
@@ -306,8 +343,11 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | @@ -306,8 +343,11 @@ func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChance | ||
306 | commItem.Score = approveData.Score | 343 | commItem.Score = approveData.Score |
307 | } | 344 | } |
308 | } | 345 | } |
346 | + commItem.IsRead = chance.IsRead == 1 | ||
309 | //审核完有审核数据 | 347 | //审核完有审核数据 |
310 | commItem.Message = chance.Message | 348 | commItem.Message = chance.Message |
349 | + commItem.MsgId = chance.Id | ||
350 | + commItem.ChanceId = chance.ChanceId | ||
311 | rsp.List = append(rsp.List, commItem) | 351 | rsp.List = append(rsp.List, commItem) |
312 | } | 352 | } |
313 | return | 353 | return |
@@ -331,7 +371,7 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -331,7 +371,7 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
331 | rsp = &protocol.MsgChanceCommentResponse{Total: total} | 371 | rsp = &protocol.MsgChanceCommentResponse{Total: total} |
332 | for i := 0; i < len(myChances); i++ { | 372 | for i := 0; i < len(myChances); i++ { |
333 | chance := myChances[i] | 373 | chance := myChances[i] |
334 | - commItem := protocol.CommonListItem{} | 374 | + commItem := protocol.MsgCommonListItem{} |
335 | if chance.SourceType == protocol.SourceTypeChance { | 375 | if chance.SourceType == protocol.SourceTypeChance { |
336 | commItem.ReviewStatus = chance.ReviewStatus | 376 | commItem.ReviewStatus = chance.ReviewStatus |
337 | if len(chance.SourceContent) == 0 { //机会删除 | 377 | if len(chance.SourceContent) == 0 { //机会删除 |
@@ -360,10 +400,16 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -360,10 +400,16 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
360 | commItem.ReviewStatus = chance.ReviewStatus | 400 | commItem.ReviewStatus = chance.ReviewStatus |
361 | } | 401 | } |
362 | if chance.SourceType == protocol.SourceTypeComment { | 402 | if chance.SourceType == protocol.SourceTypeComment { |
403 | + if provider, err = agg.GetUserBaseInfo(chance.CommentedUserId, header.CompanyId); err != nil { | ||
404 | + commItem.ChanceStatus = protocol.ChanceStatusDelete | ||
405 | + log.Error(err) | ||
406 | + //return | ||
407 | + } | ||
363 | commItem.CommentedData = protocol.CommentData{ | 408 | commItem.CommentedData = protocol.CommentData{ |
364 | Id: chance.SourceId, | 409 | Id: chance.SourceId, |
365 | Content: chance.CommentedContent, | 410 | Content: chance.CommentedContent, |
366 | CommentTime: chance.CommentedTime.Unix() * 1000, | 411 | CommentTime: chance.CommentedTime.Unix() * 1000, |
412 | + Provider: provider, | ||
367 | } | 413 | } |
368 | } | 414 | } |
369 | commItem.CommentData = protocol.CommentData{ | 415 | commItem.CommentData = protocol.CommentData{ |
@@ -371,7 +417,10 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -371,7 +417,10 @@ func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
371 | CommentTime: chance.CommentTime.Unix() * 1000, | 417 | CommentTime: chance.CommentTime.Unix() * 1000, |
372 | Content: chance.CommentContent, | 418 | Content: chance.CommentContent, |
373 | } | 419 | } |
420 | + commItem.IsRead = chance.IsRead == 1 | ||
374 | commItem.SourceType = chance.SourceType | 421 | commItem.SourceType = chance.SourceType |
422 | + commItem.MsgId = chance.CommentId | ||
423 | + commItem.ChanceId = chance.ChanceId | ||
375 | rsp.List = append(rsp.List, commItem) | 424 | rsp.List = append(rsp.List, commItem) |
376 | } | 425 | } |
377 | return | 426 | return |
@@ -395,14 +444,15 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -395,14 +444,15 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
395 | rsp = &protocol.MsgChanceThumbUpResponse{Total: total} | 444 | rsp = &protocol.MsgChanceThumbUpResponse{Total: total} |
396 | for i := 0; i < len(myChances); i++ { | 445 | for i := 0; i < len(myChances); i++ { |
397 | chance := myChances[i] | 446 | chance := myChances[i] |
398 | - commItem := protocol.CommonListItem{} | 447 | + commItem := protocol.MsgCommonListItem{} |
399 | if chance.SourceType == protocol.SourceTypeChance { | 448 | if chance.SourceType == protocol.SourceTypeChance { |
400 | commItem.ReviewStatus = chance.ReviewStatus | 449 | commItem.ReviewStatus = chance.ReviewStatus |
401 | if len(chance.SourceContent) == 0 { //机会删除 | 450 | if len(chance.SourceContent) == 0 { //机会删除 |
402 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 451 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
403 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 | 452 | } else if chance.ChanceEnableStatus == 0 { //机会关闭 |
404 | commItem.ChanceStatus = protocol.ChanceStatusClose | 453 | commItem.ChanceStatus = protocol.ChanceStatusClose |
405 | - } else { | 454 | + } |
455 | + | ||
406 | if provider, err = agg.GetUserBaseInfo(chance.Uid, header.CompanyId); err != nil { | 456 | if provider, err = agg.GetUserBaseInfo(chance.Uid, header.CompanyId); err != nil { |
407 | commItem.ChanceStatus = protocol.ChanceStatusDelete | 457 | commItem.ChanceStatus = protocol.ChanceStatusDelete |
408 | log.Error(err) | 458 | log.Error(err) |
@@ -420,14 +470,19 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -420,14 +470,19 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
420 | utils.JsonUnmarshal(chance.Videos, &item.Videos) | 470 | utils.JsonUnmarshal(chance.Videos, &item.Videos) |
421 | commItem.Chance = item | 471 | commItem.Chance = item |
422 | } | 472 | } |
423 | - } | ||
424 | commItem.ReviewStatus = chance.ReviewStatus | 473 | commItem.ReviewStatus = chance.ReviewStatus |
425 | } | 474 | } |
426 | if chance.SourceType == protocol.SourceTypeComment { | 475 | if chance.SourceType == protocol.SourceTypeComment { |
476 | + if provider, err = agg.GetUserBaseInfo(chance.CommentedUserId, header.CompanyId); err != nil { | ||
477 | + commItem.ChanceStatus = protocol.ChanceStatusDelete | ||
478 | + log.Error(err) | ||
479 | + //return | ||
480 | + } | ||
427 | commItem.CommentedData = protocol.CommentData{ | 481 | commItem.CommentedData = protocol.CommentData{ |
428 | Id: chance.SourceId, | 482 | Id: chance.SourceId, |
429 | Content: chance.CommentedContent, | 483 | Content: chance.CommentedContent, |
430 | CommentTime: chance.CommentedTime.Unix() * 1000, | 484 | CommentTime: chance.CommentedTime.Unix() * 1000, |
485 | + Provider: provider, | ||
431 | } | 486 | } |
432 | } | 487 | } |
433 | commItem.ThumbUpData = protocol.ThumbUpData{ | 488 | commItem.ThumbUpData = protocol.ThumbUpData{ |
@@ -435,7 +490,10 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | @@ -435,7 +490,10 @@ func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanc | ||
435 | ThumbUpTime: chance.CommentTime.Unix() * 1000, | 490 | ThumbUpTime: chance.CommentTime.Unix() * 1000, |
436 | Content: chance.CommentContent, | 491 | Content: chance.CommentContent, |
437 | } | 492 | } |
493 | + commItem.IsRead = chance.IsRead == 1 | ||
438 | commItem.SourceType = chance.SourceType | 494 | commItem.SourceType = chance.SourceType |
495 | + commItem.MsgId = chance.CommentId | ||
496 | + commItem.ChanceId = chance.ChanceId | ||
439 | rsp.List = append(rsp.List, commItem) | 497 | rsp.List = append(rsp.List, commItem) |
440 | } | 498 | } |
441 | return | 499 | return |
@@ -89,7 +89,7 @@ func UploadFile(request *protocol.FileRequest) (rsp *protocol.FileResponse, err | @@ -89,7 +89,7 @@ func UploadFile(request *protocol.FileRequest) (rsp *protocol.FileResponse, err | ||
89 | log.Error(err) | 89 | log.Error(err) |
90 | return | 90 | return |
91 | } | 91 | } |
92 | - rsp.Paths = append(rsp.Paths, filepath.Join(virtualPath, filename)) | 92 | + rsp.Paths = append(rsp.Paths, virtualPath+"/"+filename) |
93 | ResizeImage(request.FileType, sourcePath, prefix, subfix, f) | 93 | ResizeImage(request.FileType, sourcePath, prefix, subfix, f) |
94 | } | 94 | } |
95 | return | 95 | return |
-
请 注册 或 登录 后发表评论