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 |
-
请 注册 或 登录 后发表评论