作者 yangfu

Merge remote-tracking branch 'origin/dev' into test

# Conflicts:
#	conf/dev.conf
@@ -12,7 +12,7 @@ aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}" @@ -12,7 +12,7 @@ aliyun_logs_access ="${aliyun_logs_access||F:/log/app.log}"
12 12
13 13
14 #redis相关配置 14 #redis相关配置
15 -redis_add = "${REDIS_HOST||192.168.100.102}" 15 +redis_add = "${REDIS_HOST||127.0.0.1}"
16 redis_add_port = "${REDIS_PORT||6379}" 16 redis_add_port = "${REDIS_PORT||6379}"
17 redis_auth = "123456" 17 redis_auth = "123456"
18 18
@@ -38,7 +38,7 @@ user_center_app_secret ="cykbjnfqgctn" @@ -38,7 +38,7 @@ user_center_app_secret ="cykbjnfqgctn"
38 38
39 39
40 #Html5 40 #Html5
41 -h5_host = "http://web-open-test.fjmaimaimai.com" 41 +h5_host = "http://mmm-web-open-test.fjmaimaimai.com"
42 42
43 #审核中心 43 #审核中心
44 suplus_approve_host ="http://suplus-approve-dev.fjmaimaimai.com" 44 suplus_approve_host ="http://suplus-approve-dev.fjmaimaimai.com"
@@ -305,3 +305,9 @@ func (this *BaseController) Finish() { @@ -305,3 +305,9 @@ func (this *BaseController) Finish() {
305 log.Debug(fmt.Sprintf("<====Send to uid(%d) ucid(%v) client: %d byte\nRequestId:%s RspBodyData: %s", this.Header.Uid, this.Header.UserId, length, this.Header.GetRequestId(), string(strByte))) 305 log.Debug(fmt.Sprintf("<====Send to uid(%d) ucid(%v) client: %d byte\nRequestId:%s RspBodyData: %s", this.Header.Uid, this.Header.UserId, length, this.Header.GetRequestId(), string(strByte)))
306 } 306 }
307 } 307 }
  308 +
  309 +//func(this *BaseController)Get(){
  310 +// if strings.HasSuffix(this.Ctx.Request.RequestURI,".mp3"){
  311 +// this.Ctx.ResponseWriter.Header().Set("Content-Type","audio/mpeg")
  312 +// }
  313 +//}
@@ -12,7 +12,7 @@ type ChanceController struct { @@ -12,7 +12,7 @@ type ChanceController struct {
12 controllers.BaseController 12 controllers.BaseController
13 } 13 }
14 14
15 -//IComment 15 +//IComment 我来评论
16 // @router /iComment [post] 16 // @router /iComment [post]
17 func (this *ChanceController) IComment() { 17 func (this *ChanceController) IComment() {
18 var msg *protocol.ResponseMessage 18 var msg *protocol.ResponseMessage
@@ -54,7 +54,7 @@ func (this *ChanceController) IComments() { @@ -54,7 +54,7 @@ func (this *ChanceController) IComments() {
54 msg = protocol.NewReturnResponse(chance.IComments(header, request)) 54 msg = protocol.NewReturnResponse(chance.IComments(header, request))
55 } 55 }
56 56
57 -//Comments 57 +//Comments 评论列表
58 // @router /comments [post] 58 // @router /comments [post]
59 func (this *ChanceController) Comments() { 59 func (this *ChanceController) Comments() {
60 var msg *protocol.ResponseMessage 60 var msg *protocol.ResponseMessage
@@ -72,10 +72,31 @@ func (this *ChanceController) Comments() { @@ -72,10 +72,31 @@ func (this *ChanceController) Comments() {
72 return 72 return
73 } 73 }
74 header := controllers.GetRequestHeader(this.Ctx) 74 header := controllers.GetRequestHeader(this.Ctx)
75 - request.SourceType = protocol.SourceTypeChance 75 + //request.SourceType = protocol.SourceTypeChance
76 msg = protocol.NewReturnResponse(chance.Comments(header, request)) 76 msg = protocol.NewReturnResponse(chance.Comments(header, request))
77 } 77 }
78 78
  79 +//Thumbsups 点赞列表
  80 +// @router /thumbsups [post]
  81 +func (this *ChanceController) Thumbsups() {
  82 + var msg *protocol.ResponseMessage
  83 + defer func() {
  84 + this.Resp(msg)
  85 + }()
  86 + var request *protocol.ThumbsupsRequest
  87 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  88 + log.Error(err)
  89 + msg = protocol.BadRequestParam(1)
  90 + return
  91 + }
  92 + if b, m := this.Valid(request); !b {
  93 + msg = m
  94 + return
  95 + }
  96 + header := controllers.GetRequestHeader(this.Ctx)
  97 + msg = protocol.NewReturnResponse(chance.Thumbsups(header, request))
  98 +}
  99 +
79 //Favorite 100 //Favorite
80 // @router /favorite [post] 101 // @router /favorite [post]
81 func (this *ChanceController) Favorite() { 102 func (this *ChanceController) Favorite() {
@@ -139,7 +160,7 @@ func (this *ChanceController) CommentDetailsMulti() { @@ -139,7 +160,7 @@ func (this *ChanceController) CommentDetailsMulti() {
139 msg = protocol.NewReturnResponse(chance.CommentDetailsMulti(header, request)) 160 msg = protocol.NewReturnResponse(chance.CommentDetailsMulti(header, request))
140 } 161 }
141 162
142 -//SympathyAction 163 +//SympathyAction 机会点赞/收藏
143 //@router /sympathyAction [post] 164 //@router /sympathyAction [post]
144 func (this *ChanceController) SympathyAction() { 165 func (this *ChanceController) SympathyAction() {
145 var msg *protocol.ResponseMessage 166 var msg *protocol.ResponseMessage
@@ -294,27 +315,6 @@ func (this *ChanceController) MySubmitChance() { @@ -294,27 +315,6 @@ func (this *ChanceController) MySubmitChance() {
294 msg = protocol.NewReturnResponse(chance.MySubmitChance(header, request)) 315 msg = protocol.NewReturnResponse(chance.MySubmitChance(header, request))
295 } 316 }
296 317
297 -//ChancePool 机会池  
298 -//@router /chancePool [post]  
299 -func (this *ChanceController) ChancePool() {  
300 - var msg *protocol.ResponseMessage  
301 - defer func() {  
302 - this.Resp(msg)  
303 - }()  
304 - var request *protocol.ChancePoolRequest  
305 - if err := json.Unmarshal(this.ByteBody, &request); err != nil {  
306 - log.Error(err)  
307 - msg = protocol.BadRequestParam(1)  
308 - return  
309 - }  
310 - if b, m := this.Valid(request); !b {  
311 - msg = m  
312 - return  
313 - }  
314 - header := controllers.GetRequestHeader(this.Ctx)  
315 - msg = protocol.NewReturnResponse(chance.ChancePool(header, request))  
316 -}  
317 -  
318 //ChanceDetail 机会详情 318 //ChanceDetail 机会详情
319 //@router /chanceDetail [post] 319 //@router /chanceDetail [post]
320 func (this *ChanceController) ChanceDetail() { 320 func (this *ChanceController) ChanceDetail() {
@@ -488,3 +488,87 @@ func (this *ChanceController) MyApproveChance() { @@ -488,3 +488,87 @@ func (this *ChanceController) MyApproveChance() {
488 header := controllers.GetRequestHeader(this.Ctx) 488 header := controllers.GetRequestHeader(this.Ctx)
489 msg = protocol.NewReturnResponse(chance.MyApproveChance(header, request)) 489 msg = protocol.NewReturnResponse(chance.MyApproveChance(header, request))
490 } 490 }
  491 +
  492 +//MyCollectChance 我的收藏
  493 +//@router /myCollectChance [post]
  494 +func (this *ChanceController) MyCollectChance() {
  495 + var msg *protocol.ResponseMessage
  496 + defer func() {
  497 + this.Resp(msg)
  498 + }()
  499 + var request *protocol.MyCollectChanceRequest
  500 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  501 + log.Error(err)
  502 + msg = protocol.BadRequestParam(1)
  503 + return
  504 + }
  505 + if b, m := this.Valid(request); !b {
  506 + msg = m
  507 + return
  508 + }
  509 + header := controllers.GetRequestHeader(this.Ctx)
  510 + msg = protocol.NewReturnResponse(chance.MyCollectChance(header, request))
  511 +}
  512 +
  513 +//MyThumbUpChance 我点赞的机会
  514 +//@router /myThumbUpChance [post]
  515 +func (this *ChanceController) MyThumbUpChance() {
  516 + var msg *protocol.ResponseMessage
  517 + defer func() {
  518 + this.Resp(msg)
  519 + }()
  520 + var request *protocol.MyThumbUpChanceRequest
  521 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  522 + log.Error(err)
  523 + msg = protocol.BadRequestParam(1)
  524 + return
  525 + }
  526 + if b, m := this.Valid(request); !b {
  527 + msg = m
  528 + return
  529 + }
  530 + header := controllers.GetRequestHeader(this.Ctx)
  531 + msg = protocol.NewReturnResponse(chance.MyThumbUpChance(header, request))
  532 +}
  533 +
  534 +//MyComment 我的评论
  535 +//@router /myComment [post]
  536 +func (this *ChanceController) MyComment() {
  537 + var msg *protocol.ResponseMessage
  538 + defer func() {
  539 + this.Resp(msg)
  540 + }()
  541 + var request *protocol.MyCommentRequest
  542 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  543 + log.Error(err)
  544 + msg = protocol.BadRequestParam(1)
  545 + return
  546 + }
  547 + if b, m := this.Valid(request); !b {
  548 + msg = m
  549 + return
  550 + }
  551 + header := controllers.GetRequestHeader(this.Ctx)
  552 + msg = protocol.NewReturnResponse(chance.MyComment(header, request))
  553 +}
  554 +
  555 +//ChancePool 机会池
  556 +//@router /chancePool [post]
  557 +func (this *ChanceController) ChancePool() {
  558 + var msg *protocol.ResponseMessage
  559 + defer func() {
  560 + this.Resp(msg)
  561 + }()
  562 + var request *protocol.ChancePoolRequest
  563 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  564 + log.Error(err)
  565 + msg = protocol.BadRequestParam(1)
  566 + return
  567 + }
  568 + if b, m := this.Valid(request); !b {
  569 + msg = m
  570 + return
  571 + }
  572 + header := controllers.GetRequestHeader(this.Ctx)
  573 + msg = protocol.NewReturnResponse(chance.ChancePool(header, request))
  574 +}
@@ -12,7 +12,7 @@ type MessageController struct { @@ -12,7 +12,7 @@ type MessageController struct {
12 controllers.BaseController 12 controllers.BaseController
13 } 13 }
14 14
15 -//MessageCenter 15 +//MessageCenter 消息中心
16 // @router /messageCenter [post] 16 // @router /messageCenter [post]
17 func (this *MessageController) MessageCenter() { 17 func (this *MessageController) MessageCenter() {
18 var msg *protocol.ResponseMessage 18 var msg *protocol.ResponseMessage
@@ -159,7 +159,7 @@ func (this *MessageController) MsgCompanyNotice() { @@ -159,7 +159,7 @@ func (this *MessageController) MsgCompanyNotice() {
159 msg = protocol.NewReturnResponse(message.MsgCompanyNotice(header, request)) 159 msg = protocol.NewReturnResponse(message.MsgCompanyNotice(header, request))
160 } 160 }
161 161
162 -//MsgChanceApprove 机会审核消息 162 +//MsgChanceApprove 消息中心-机会审核消息
163 //@router /msgChanceApprove [post] 163 //@router /msgChanceApprove [post]
164 func (this *MessageController) MsgChanceApprove() { 164 func (this *MessageController) MsgChanceApprove() {
165 var msg *protocol.ResponseMessage 165 var msg *protocol.ResponseMessage
@@ -179,3 +179,66 @@ func (this *MessageController) MsgChanceApprove() { @@ -179,3 +179,66 @@ func (this *MessageController) MsgChanceApprove() {
179 header := controllers.GetRequestHeader(this.Ctx) 179 header := controllers.GetRequestHeader(this.Ctx)
180 msg = protocol.NewReturnResponse(message.MsgChanceApprove(header, request)) 180 msg = protocol.NewReturnResponse(message.MsgChanceApprove(header, request))
181 } 181 }
  182 +
  183 +//MsgChanceSubmit 消息中心-我提交的
  184 +//@router /msgChanceSubmit [post]
  185 +func (this *MessageController) MsgChanceSubmit() {
  186 + var msg *protocol.ResponseMessage
  187 + defer func() {
  188 + this.Resp(msg)
  189 + }()
  190 + var request *protocol.MsgChanceSubmitRequest
  191 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  192 + log.Error(err)
  193 + msg = protocol.BadRequestParam(1)
  194 + return
  195 + }
  196 + if b, m := this.Valid(request); !b {
  197 + msg = m
  198 + return
  199 + }
  200 + header := controllers.GetRequestHeader(this.Ctx)
  201 + msg = protocol.NewReturnResponse(message.MsgChanceSubmit(header, request))
  202 +}
  203 +
  204 +//MsgChanceComment 消息中心-互动消息.评论
  205 +//@router /msgChanceComment [post]
  206 +func (this *MessageController) MsgChanceComment() {
  207 + var msg *protocol.ResponseMessage
  208 + defer func() {
  209 + this.Resp(msg)
  210 + }()
  211 + var request *protocol.MsgChanceCommentRequest
  212 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  213 + log.Error(err)
  214 + msg = protocol.BadRequestParam(1)
  215 + return
  216 + }
  217 + if b, m := this.Valid(request); !b {
  218 + msg = m
  219 + return
  220 + }
  221 + header := controllers.GetRequestHeader(this.Ctx)
  222 + msg = protocol.NewReturnResponse(message.MsgChanceComment(header, request))
  223 +}
  224 +
  225 +//MsgChanceThumbUp 消息中心-互动消息.点赞
  226 +//@router /msgChanceThumbUp [post]
  227 +func (this *MessageController) MsgChanceThumbUp() {
  228 + var msg *protocol.ResponseMessage
  229 + defer func() {
  230 + this.Resp(msg)
  231 + }()
  232 + var request *protocol.MsgChanceThumbUpRequest
  233 + if err := json.Unmarshal(this.ByteBody, &request); err != nil {
  234 + log.Error(err)
  235 + msg = protocol.BadRequestParam(1)
  236 + return
  237 + }
  238 + if b, m := this.Valid(request); !b {
  239 + msg = m
  240 + return
  241 + }
  242 + header := controllers.GetRequestHeader(this.Ctx)
  243 + msg = protocol.NewReturnResponse(message.MsgChanceThumbUp(header, request))
  244 +}
@@ -49,7 +49,7 @@ spec: @@ -49,7 +49,7 @@ spec:
49 volumeMounts: 49 volumeMounts:
50 - mountPath: /opt/logs 50 - mountPath: /opt/logs
51 name: accesslogs 51 name: accesslogs
52 - - mountPath: /var/www/opp-dev/file 52 + - mountPath: /var/www/opp/file
53 name: mmmjihuitest-pvc1 53 name: mmmjihuitest-pvc1
54 ports: 54 ports:
55 - containerPort: 8080 55 - containerPort: 8080
@@ -3,6 +3,7 @@ package main @@ -3,6 +3,7 @@ package main
3 import ( 3 import (
4 "fmt" 4 "fmt"
5 "github.com/astaxie/beego" 5 "github.com/astaxie/beego"
  6 + "github.com/astaxie/beego/context"
6 _ "github.com/go-sql-driver/mysql" 7 _ "github.com/go-sql-driver/mysql"
7 "gitlab.fjmaimaimai.com/mmm-go/gocomm/common" 8 "gitlab.fjmaimaimai.com/mmm-go/gocomm/common"
8 "gitlab.fjmaimaimai.com/mmm-go/gocomm/config" 9 "gitlab.fjmaimaimai.com/mmm-go/gocomm/config"
@@ -13,6 +14,7 @@ import ( @@ -13,6 +14,7 @@ import (
13 "opp/internal/utils" 14 "opp/internal/utils"
14 _ "opp/routers" 15 _ "opp/routers"
15 "os" 16 "os"
  17 + "strings"
16 "time" 18 "time"
17 ) 19 )
18 20
@@ -71,6 +73,8 @@ func init() { @@ -71,6 +73,8 @@ func init() {
71 log.Info(fmt.Sprintf("env REDIS_HOST:%v", os.Getenv("REDIS_HOST"))) 73 log.Info(fmt.Sprintf("env REDIS_HOST:%v", os.Getenv("REDIS_HOST")))
72 log.Info(fmt.Sprintf("env REDIS_PORT:%v", os.Getenv("REDIS_PORT"))) 74 log.Info(fmt.Sprintf("env REDIS_PORT:%v", os.Getenv("REDIS_PORT")))
73 log.Info(fmt.Sprintf("env aliyun_file_access:%v", os.Getenv("aliyun_file_access"))) 75 log.Info(fmt.Sprintf("env aliyun_file_access:%v", os.Getenv("aliyun_file_access")))
  76 +
  77 + //mime.AddExtensionType(".mp3","audio/mpeg")
74 } 78 }
75 79
76 func main() { 80 func main() {
@@ -79,6 +83,14 @@ func main() { @@ -79,6 +83,14 @@ func main() {
79 }() 83 }()
80 log.Info("app on start!") 84 log.Info("app on start!")
81 log.Info("Beego Run Mode:", beego.BConfig.RunMode) 85 log.Info("Beego Run Mode:", beego.BConfig.RunMode)
82 - 86 + beego.InsertFilter("file/opp/*", beego.BeforeStatic, FilterBeforeStatic)
83 beego.Run() 87 beego.Run()
84 } 88 }
  89 +
  90 +var FilterBeforeStatic = func(ctx *context.Context) {
  91 + if strings.HasSuffix(ctx.Request.RequestURI, ".mp3") {
  92 + //If-Modified-Since
  93 + //ctx.Request.Header.Add("If-Modified-Since","")
  94 + ctx.ResponseWriter.Header().Add("Content-Type", "audio/mpeg")
  95 + }
  96 +}
@@ -103,8 +103,7 @@ func GetAuditFlowProcessBy(processId, uid int64) (v *AuditFlowProcess, err error @@ -103,8 +103,7 @@ func GetAuditFlowProcessBy(processId, uid int64) (v *AuditFlowProcess, err error
103 } 103 }
104 104
105 //当前审批批次已经结束 唤醒下一批次审批人 105 //当前审批批次已经结束 唤醒下一批次审批人
106 -func UpdatetAuditFlowProcessToNext(chanceId int64, level int, uids []int64) (err error) {  
107 - o := orm.NewOrm() 106 +func UpdatetAuditFlowProcessToNext(o orm.Ormer, chanceId int64, level int, uids []int64) (err error) {
108 sql := "update audit_flow_process set enable_status =1,is_active=1,update_at=now() where chance_id=? and level=? and uid in (?)" 107 sql := "update audit_flow_process set enable_status =1,is_active=1,update_at=now() where chance_id=? and level=? and uid in (?)"
109 if err = utils.ExecuteSQLWithOrmer(o, sql, chanceId, level, utils.JoinInt64s(uids, ",")); err != nil { 108 if err = utils.ExecuteSQLWithOrmer(o, sql, chanceId, level, utils.JoinInt64s(uids, ",")); err != nil {
110 return 109 return
@@ -113,8 +112,7 @@ func UpdatetAuditFlowProcessToNext(chanceId int64, level int, uids []int64) (err @@ -113,8 +112,7 @@ func UpdatetAuditFlowProcessToNext(chanceId int64, level int, uids []int64) (err
113 } 112 }
114 113
115 //或签 有一人已经通过 同批次在审核状态置为无效 114 //或签 有一人已经通过 同批次在审核状态置为无效
116 -func UpdatetAuditFlowProcessNoApprove(chanceId int64, level int, reviewStatus int) (err error) {  
117 - o := orm.NewOrm() 115 +func UpdatetAuditFlowProcessNoApprove(o orm.Ormer, chanceId int64, level int, reviewStatus int) (err error) {
118 sql := "update audit_flow_process set enable_status =0,is_active=0,update_at=now() where chance_id=? and level=? and review_status=?" 116 sql := "update audit_flow_process set enable_status =0,is_active=0,update_at=now() where chance_id=? and level=? and review_status=?"
119 if err = utils.ExecuteSQLWithOrmer(o, sql, chanceId, level, reviewStatus); err != nil { 117 if err = utils.ExecuteSQLWithOrmer(o, sql, chanceId, level, reviewStatus); err != nil {
120 return 118 return
@@ -152,7 +152,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, @@ -152,7 +152,7 @@ func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int,
152 sql := `select a.*,b.images,speechs,videos 152 sql := `select a.*,b.images,speechs,videos
153 from ( 153 from (
154 select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total from chance 154 select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total from chance
155 -where user_id=? and company_id=? and review_status=3 and (?=0 or chance_type_id =?) and (?=0 or id>?) and enable_status=1 155 +where company_id=? and review_status=3 and (?=0 or chance_type_id =?) and (?=0 or id>?) and enable_status=1
156 order by create_at desc 156 order by create_at desc
157 limit ? 157 limit ?
158 ) a left JOIN chance_data b on a.id =b.chance_id` 158 ) a left JOIN chance_data b on a.id =b.chance_id`
@@ -160,14 +160,87 @@ limit ? @@ -160,14 +160,87 @@ limit ?
160 160
161 sqlCount := fmt.Sprintf(`select count(0) from ( 161 sqlCount := fmt.Sprintf(`select count(0) from (
162 select id from chance 162 select id from chance
163 -where user_id=? and company_id=? and review_status=3 and (%v=0 or chance_type_id =%v) and enable_status=1 163 +where company_id=? and review_status=3 and (%v=0 or chance_type_id =%v) and enable_status=1
164 order by create_at desc 164 order by create_at desc
165 ) a left JOIN chance_data b on a.id =b.chance_id`, chanceTypeId, chanceTypeId) 165 ) a left JOIN chance_data b on a.id =b.chance_id`, chanceTypeId, chanceTypeId)
166 - if err = utils.ExecuteQueryOne(&total, sqlCount, uid, cid); err != nil { 166 + if err = utils.ExecuteQueryOne(&total, sqlCount, cid); err != nil {
167 return 167 return
168 } 168 }
169 if v != nil { 169 if v != nil {
170 - if err = utils.ExecuteQueryAll(v, sql, uid, cid, chanceTypeId, chanceTypeId, lastId, lastId, pageSize); err != nil { 170 + if err = utils.ExecuteQueryAll(v, sql, cid, chanceTypeId, chanceTypeId, lastId, lastId, pageSize); err != nil {
  171 + return
  172 + }
  173 + }
  174 + return
  175 +}
  176 +
  177 +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 +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 +and source_type=1
  182 +and (mark_flag&2)>0
  183 +)a left outer join chance b on a.source_id = b.id
  184 +)a left outer join chance_data b on a.source_id =b.chance_id
  185 +order by collect_time desc
  186 +limit ?`)
  187 +
  188 + sqlCount := `select count(0) from chance_favorite where user_id =? and enable_status=1 and (mark_flag&2)>0`
  189 + if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil {
  190 + return
  191 + }
  192 + if v != nil {
  193 + if err = utils.ExecuteQueryAll(v, sql, lastId, lastId, uid, pageSize); err != nil {
  194 + return
  195 + }
  196 + }
  197 + return
  198 +}
  199 +
  200 +func GetChanceThumbUp(uid int64, lastId int64, pageSize int, v interface{}) (total int, err error) {
  201 + sql := fmt.Sprintf(`select a.*,b.images,b.speechs,b.videos from (
  202 +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 (
  203 +select id collect_id,source_id,create_at collect_time from chance_favorite where (0=? or id>?) and user_id =? and enable_status=1
  204 +and source_type=1
  205 +and (mark_flag&1)>0
  206 +)a left outer join chance b on a.source_id = b.id
  207 +)a left outer join chance_data b on a.source_id =b.chance_id
  208 +order by collect_time desc
  209 +limit ?`)
  210 +
  211 + sqlCount := `select count(0) from chance_favorite where user_id =? and enable_status=1 and (mark_flag&2)>0`
  212 + if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil {
  213 + return
  214 + }
  215 + if v != nil {
  216 + if err = utils.ExecuteQueryAll(v, sql, lastId, lastId, uid, pageSize); err != nil {
  217 + return
  218 + }
  219 + }
  220 + return
  221 +}
  222 +
  223 +//我的评论
  224 +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
  226 +from (
  227 +select a.*,b.images,b.speechs,b.videos from (
  228 +select a.*,b.source_content,b.enable_status,b.user_id chance_user_id,b.create_at,b.review_status,b.approve_data from (
  229 +select id,content,view_total,zan_total,comment_total,source_type,source_id,create_at comment_time from comment
  230 +where user_id =? and (?=0 or id>?)
  231 +)a left outer join chance b on a.source_id = b.id and source_type=1
  232 +)a left outer join chance_data b on a.source_id = b.chance_id and source_type = 1
  233 +)a left outer join comment b on a.source_id = b.id and a.source_type=2
  234 +order by create_at desc
  235 +limit ?`)
  236 +
  237 + sqlCount := `select count(0) from comment
  238 +where user_id =?`
  239 + if err = utils.ExecuteQueryOne(&total, sqlCount, uid); err != nil {
  240 + return
  241 + }
  242 + if v != nil {
  243 + if err = utils.ExecuteQueryAll(v, sql, uid, lastId, lastId, pageSize); err != nil {
171 return 244 return
172 } 245 }
173 } 246 }
@@ -81,12 +81,12 @@ func DeleteChanceFavorite(id int64) (err error) { @@ -81,12 +81,12 @@ func DeleteChanceFavorite(id int64) (err error) {
81 81
82 //按1.用户id 2.公司id 3.标记类型 4.机会类型编号 5.最后编号 6.页数 82 //按1.用户id 2.公司id 3.标记类型 4.机会类型编号 5.最后编号 6.页数
83 //获取用户点赞收藏机会 83 //获取用户点赞收藏机会
84 -func GetChanceFavorites(userId, companyId int64, markFlag, chanceType int, lastId int64, pageSize int) (v []*ChanceFavorite, total int, err error) { 84 +func GetChanceFavorites(userId, companyId int64, markFlag, sourceType int, lastId int64, pageSize int) (v []*ChanceFavorite, total int, err error) {
85 sql := mybeego.NewSqlExutor().Table("chance_favorite").Order("create_at desc") 85 sql := mybeego.NewSqlExutor().Table("chance_favorite").Order("create_at desc")
86 sql.Where(fmt.Sprintf("user_id=%d", userId)) 86 sql.Where(fmt.Sprintf("user_id=%d", userId))
87 sql.Where(fmt.Sprintf("company_id=%d", companyId)) 87 sql.Where(fmt.Sprintf("company_id=%d", companyId))
88 - if chanceType > 0 {  
89 - sql.Where(fmt.Sprintf("chance_type=%d", chanceType)) 88 + if sourceType > 0 {
  89 + sql.Where(fmt.Sprintf("source_type=%d", sourceType))
90 } 90 }
91 if markFlag > 0 { 91 if markFlag > 0 {
92 sql.Where(fmt.Sprintf("mark_flag&%d>0", markFlag)) 92 sql.Where(fmt.Sprintf("mark_flag&%d>0", markFlag))
@@ -40,6 +40,8 @@ const ( @@ -40,6 +40,8 @@ const (
40 SqlUserMsgUnRead = "select * from user_msg where source_id=? and company_id=? and receive_user_id=? and msg_type=? and is_read=0 order by create_at desc" //特定未读消息 40 SqlUserMsgUnRead = "select * from user_msg where source_id=? and company_id=? and receive_user_id=? and msg_type=? and is_read=0 order by create_at desc" //特定未读消息
41 //用户消息 - 按 1.源id 2.接收者id 3.消息类型 41 //用户消息 - 按 1.源id 2.接收者id 3.消息类型
42 SqlUserMsg = "select * from user_msg where source_id=? and receive_user_id=? and msg_type=? " //特定未读消息 42 SqlUserMsg = "select * from user_msg where source_id=? and receive_user_id=? and msg_type=? " //特定未读消息
  43 + //删除消息
  44 + SqlDeleteUserMsg = "delete from user_msg where source_id=? and source_type=? and receive_user_id=? and msg_type=? " //特定未读消息
43 ) 45 )
44 46
45 func (t *UserMsg) TableName() string { 47 func (t *UserMsg) TableName() string {
@@ -115,7 +117,7 @@ GROUP BY msg_type` @@ -115,7 +117,7 @@ GROUP BY msg_type`
115 func UpdateUserMsgSetRead(userId int64, companyId int64, msgType int, msgId int64) (err error) { 117 func UpdateUserMsgSetRead(userId int64, companyId int64, msgType int, msgId int64) (err error) {
116 o := orm.NewOrm() 118 o := orm.NewOrm()
117 sql := `update user_msg set is_read = 1 119 sql := `update user_msg set is_read = 1
118 - where receive_user_id = ? and company_id=? and is_public=1 ` 120 + where receive_user_id = ? and company_id=? `
119 if msgType > 0 { 121 if msgType > 0 {
120 sql += fmt.Sprintf(" and (msg_type & %v)>0", msgType) 122 sql += fmt.Sprintf(" and (msg_type & %v)>0", msgType)
121 } 123 }
@@ -153,7 +155,7 @@ func GetUserMsgs(userId, companyId int64, msgType int, sourceType int, lastId in @@ -153,7 +155,7 @@ func GetUserMsgs(userId, companyId int64, msgType int, sourceType int, lastId in
153 155
154 //获取公告消息列表 156 //获取公告消息列表
155 func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pageSize int, v interface{}) (total int, err error) { 157 func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pageSize int, v interface{}) (total int, err error) {
156 - sql := `select b.id,b.title,unix_timestamp(b.update_at) update_at,a.is_read ` 158 + sql := `select a.id msg_id,b.id,b.title,unix_timestamp(a.create_at)*1000 update_at,a.is_read `
157 sqlCount := `select count(0) ` 159 sqlCount := `select count(0) `
158 where := `from user_msg a,bulletin b where a.receive_user_id =? and a.company_id=? and a.source_id = b.id and a.msg_type=? and a.company_id=? and b.status=2 ` 160 where := `from user_msg a,bulletin b where a.receive_user_id =? and a.company_id=? and a.source_id = b.id and a.msg_type=? and a.company_id=? and b.status=2 `
159 sqlCount += where 161 sqlCount += where
@@ -166,7 +168,7 @@ func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pag @@ -166,7 +168,7 @@ func GetUserMsgsBulletin(userId, companyId int64, msgType int, lastId int64, pag
166 if v == nil { 168 if v == nil {
167 return 169 return
168 } 170 }
169 - where += ` order by b.update_at desc` 171 + where += ` order by a.create_at desc`
170 sql += where + " limit ?" 172 sql += where + " limit ?"
171 if err = utils.ExecuteQueryAll(v, sql, userId, companyId, msgType, companyId, pageSize); err != nil { 173 if err = utils.ExecuteQueryAll(v, sql, userId, companyId, msgType, companyId, pageSize); err != nil {
172 return 174 return
@@ -197,3 +199,29 @@ from user_msg where receive_user_id=? and source_type=1 and msg_type=? ` @@ -197,3 +199,29 @@ from user_msg where receive_user_id=? and source_type=1 and msg_type=? `
197 } 199 }
198 return 200 return
199 } 201 }
  202 +
  203 +//获取机会评论消息
  204 +func GetChanceCommentMsg(uid, lastId int64, pageSize int, msgType int, v interface{}) (total int, err error) {
  205 + 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.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 +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_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 +order by create_at desc
  214 +LIMIT ?`
  215 +
  216 + sqlCount := `select count(0)
  217 +from user_msg where receive_user_id=? and source_type=1 and msg_type=? `
  218 + if err = utils.ExecuteQueryOne(&total, sqlCount, uid, msgType); err != nil {
  219 + return
  220 + }
  221 + if v != nil {
  222 + if err = utils.ExecuteQueryAll(v, sql, uid, lastId, lastId, msgType, pageSize); err != nil {
  223 + return
  224 + }
  225 + }
  226 + return
  227 +}
@@ -69,10 +69,10 @@ type FavoriteResponse struct { @@ -69,10 +69,10 @@ type FavoriteResponse struct {
69 69
70 /*SympathyAction 点赞,收藏*/ 70 /*SympathyAction 点赞,收藏*/
71 type SympathyActionRequest struct { 71 type SympathyActionRequest struct {
72 - MarkType int `json:"mark_type" valid:"Required"` // 1.赞 2.收藏  
73 - SourceType int `json:"source_type" valid:"Required"` //protocol.SourceType //机会 评论  
74 - Id int64 `json:"id" valid:"Required"`  
75 - SympathyType int `json:"sympathy_type"` //1:标记 0:取消标记 72 + MarkType int `json:"markType" valid:"Required"` // 1.赞 2.收藏
  73 + SourceType int `json:"sourceType" valid:"Required"` //protocol.SourceType //1.机会 2.评论
  74 + Id int64 `json:"id" valid:"Required"` //机会编号 / 评论编号
  75 + SympathyType int `json:"sympathyType"` //1:标记 0:取消标记
76 } 76 }
77 type SympathyActionResponse struct { 77 type SympathyActionResponse struct {
78 } 78 }
@@ -181,7 +181,7 @@ type MyApproveChanceResponse struct { @@ -181,7 +181,7 @@ type MyApproveChanceResponse struct {
181 181
182 //我的审核机会列表 182 //我的审核机会列表
183 type ChanceApproveItemOrm struct { 183 type ChanceApproveItemOrm struct {
184 - ChanceUserId int64 `orm:"column(chance_user_id)"` 184 + ChanceUserId int64 `orm:"column(user_id)"`
185 SourceContent string `orm:"column(source_content)"` 185 SourceContent string `orm:"column(source_content)"`
186 ChanceEnableStatus int `orm:"column(enable_status)"` 186 ChanceEnableStatus int `orm:"column(enable_status)"`
187 Images string `orm:"column(images)"` 187 Images string `orm:"column(images)"`
@@ -198,9 +198,39 @@ type ChanceApproveItemOrm struct { @@ -198,9 +198,39 @@ type ChanceApproveItemOrm struct {
198 ChanceId int64 `orm:"column(chance_id)"` // 机会id 198 ChanceId int64 `orm:"column(chance_id)"` // 机会id
199 } 199 }
200 200
  201 +/*MyCollectChance 我的收藏*/
  202 +type MyCollectChanceRequest struct {
  203 + LastId int64 `json:"lastId"`
  204 + PageSize int `json:"pageSize" valid:"Required"`
  205 +}
  206 +type MyCollectChanceResponse struct {
  207 + List []CommonListItem `json:"list"`
  208 + Total int `json:"total"`
  209 +}
  210 +
  211 +/*MyThumbUpChance 我点赞的机会*/
  212 +type MyThumbUpChanceRequest struct {
  213 + LastId int64 `json:"lastId"`
  214 + PageSize int `json:"pageSize" valid:"Required"`
  215 +}
  216 +type MyThumbUpChanceResponse struct {
  217 + List []CommonListItem `json:"list"`
  218 + Total int `json:"total"`
  219 +}
  220 +
  221 +/*MyComment 我的评论*/
  222 +type MyCommentRequest struct {
  223 + LastId int64 `json:"lastId"`
  224 + PageSize int `json:"pageSize" valid:"Required"`
  225 +}
  226 +type MyCommentResponse struct {
  227 + List []CommonListItem `json:"list"`
  228 + Total int `json:"total"`
  229 +}
  230 +
201 //机会池列表 231 //机会池列表
202 type ChancePoolItemOrm struct { 232 type ChancePoolItemOrm struct {
203 - Id int64 `orm:"column(id)"` 233 + ChanceId int64 `orm:"column(id)"`
204 Uid int64 `orm:"column(user_id)"` 234 Uid int64 `orm:"column(user_id)"`
205 CreateTime time.Time `orm:"column(create_at)"` 235 CreateTime time.Time `orm:"column(create_at)"`
206 SourceContent string `orm:"column(source_content)"` 236 SourceContent string `orm:"column(source_content)"`
@@ -210,12 +240,90 @@ type ChancePoolItemOrm struct { @@ -210,12 +240,90 @@ type ChancePoolItemOrm struct {
210 ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过 240 ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
211 241
212 //ApproveData string `json:"approveData"` //审核数据 242 //ApproveData string `json:"approveData"` //审核数据
  243 + TemplateId int `orm:"column(audit_template_id)"`
  244 + ChanceTypeId int `orm:"column(chance_type_id)"`
  245 +
  246 + CommentTotal int `orm:"column(comment_total)"`
  247 + ZanTotal int `orm:"column(zan_total)"`
  248 + ViewTotal int `orm:"column(view_total)"`
  249 +}
  250 +
  251 +//机会池收藏列表项
  252 +type ChanceCollectItemOrm struct {
  253 + ChanceId int64 `orm:"column(id)"`
  254 + ChanceUserId int64 `orm:"column(user_id)"`
  255 + CreateTime time.Time `orm:"column(create_at)"`
  256 + SourceContent string `orm:"column(source_content)"`
  257 + ChanceEnableStatus int `orm:"column(enable_status)"`
  258 + ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
  259 + Images string `orm:"column(images)"`
  260 + Voices string `orm:"column(speechs)"`
  261 + Videos string `orm:"column(videos)"`
  262 +
  263 + //ApproveData string `json:"approveData"` //审核数据
  264 + TemplateId int `orm:"column(audit_template_id)"`
  265 + ChanceTypeId int `orm:"column(chance_type_id)"`
  266 +
  267 + CommentTotal int `orm:"column(comment_total)"`
  268 + ZanTotal int `orm:"column(zan_total)"`
  269 + ViewTotal int `orm:"column(view_total)"`
  270 +
  271 + CollectId int64 `orm:"column(collect_id)"` //收藏id
  272 + CollectTime time.Time `orm:"column(collect_time)"` //收藏时间
  273 +}
213 274
  275 +//机会池收藏列表项
  276 +type ChanceThumbUpItemOrm struct {
  277 + ChanceId int64 `orm:"column(id)"`
  278 + ChanceUserId int64 `orm:"column(user_id)"`
  279 + CreateTime time.Time `orm:"column(create_at)"`
  280 + SourceContent string `orm:"column(source_content)"`
  281 + ChanceEnableStatus int `orm:"column(enable_status)"`
  282 + ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
  283 + Images string `orm:"column(images)"`
  284 + Voices string `orm:"column(speechs)"`
  285 + Videos string `orm:"column(videos)"`
  286 +
  287 + //ApproveData string `json:"approveData"` //审核数据
214 TemplateId int `orm:"column(audit_template_id)"` 288 TemplateId int `orm:"column(audit_template_id)"`
215 ChanceTypeId int `orm:"column(chance_type_id)"` 289 ChanceTypeId int `orm:"column(chance_type_id)"`
  290 +
  291 + CommentTotal int `orm:"column(comment_total)"`
  292 + ZanTotal int `orm:"column(zan_total)"`
  293 + ViewTotal int `orm:"column(view_total)"`
  294 +
  295 + CollectId int64 `orm:"column(collect_id)"` //收藏id
  296 + CollectTime time.Time `orm:"column(collect_time)"` //收藏时间
  297 +}
  298 +
  299 +//我的评论
  300 +type ChanceCommentItemOrm struct {
  301 + //ChanceId int64 `orm:"column(id)"`
  302 + Uid int64 `orm:"column(chance_user_id)"`
  303 + CreateTime time.Time `orm:"column(create_at)"`
  304 + SourceContent string `orm:"column(source_content)"`
  305 + ChanceEnableStatus int `orm:"column(enable_status)"`
  306 + ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
  307 + Images string `orm:"column(images)"`
  308 + Voices string `orm:"column(speechs)"`
  309 + Videos string `orm:"column(videos)"`
  310 +
216 CommentTotal int `orm:"column(comment_total)"` 311 CommentTotal int `orm:"column(comment_total)"`
217 ZanTotal int `orm:"column(zan_total)"` 312 ZanTotal int `orm:"column(zan_total)"`
218 ViewTotal int `orm:"column(view_total)"` 313 ViewTotal int `orm:"column(view_total)"`
  314 +
  315 + CommentId int64 `orm:"column(id)"`
  316 + CommentContent string `orm:"column(content)"`
  317 + CommentTime time.Time `orm:"column(comment_time)"`
  318 +
  319 + //被评论的对象
  320 + CommentedUserId int64 `orm:"column(commented_user_id)"`
  321 + CommentedContent string `orm:"column(commented_content)"`
  322 + CommentedTime time.Time `orm:"column(commented_time)"` //收藏时间
  323 +
  324 + //评论对象类型
  325 + SourceType int `orm:"column(source_type)"`
  326 + SourceId int64 `orm:"column(source_id)"`
219 } 327 }
220 328
221 /*ChanceDetail 机会详情*/ 329 /*ChanceDetail 机会详情*/
@@ -224,13 +332,13 @@ type ChanceDetailRequest struct { @@ -224,13 +332,13 @@ type ChanceDetailRequest struct {
224 } 332 }
225 type ChanceDetailResponse struct { 333 type ChanceDetailResponse struct {
226 ChanceDetail ChanceItem `json:"chance"` 334 ChanceDetail ChanceItem `json:"chance"`
227 - ChanceData interface{} `json:"chanceData,omitempty"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData 335 + StatisticData interface{} `json:"statisticData"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData
228 ApproveData *ApproveData `json:"approveData"` 336 ApproveData *ApproveData `json:"approveData"`
229 ApproveProcess []*ProcessItem `json:"approveProcess"` 337 ApproveProcess []*ProcessItem `json:"approveProcess"`
230 ApproveAccess *ApproveAccess `json:"approveAccess"` // 338 ApproveAccess *ApproveAccess `json:"approveAccess"` //
231 ChanceType NameItem `json:"chanceType"` //机会类型 339 ChanceType NameItem `json:"chanceType"` //机会类型
232 ChanceTemplate NameItem `json:"template"` //机会模板 340 ChanceTemplate NameItem `json:"template"` //机会模板
233 - ReviewStatus int `json:"review_status"` //审核状态 1:待审核 2:被退回 3:已通过 341 + ReviewStatus int `json:"reviewStatus"` //审核状态 1:待审核 2:被退回 3:已通过
234 } 342 }
235 343
236 type ChanceType struct { 344 type ChanceType struct {
@@ -260,7 +368,8 @@ type ChanceCalculateScoreRequest struct { @@ -260,7 +368,8 @@ type ChanceCalculateScoreRequest struct {
260 Score Score `json:"score"` 368 Score Score `json:"score"`
261 } 369 }
262 type ChanceCalculateScoreResponse struct { 370 type ChanceCalculateScoreResponse struct {
263 - DiscoveryScore float64 `json:"discoveryScore"` //发现分 371 + DiscoveryScore float64 `json:"discoveryScore"` //发现分
  372 + DiscoveryScorePercent int `json:"discoveryScorePercent"` //发现分-百分比
264 } 373 }
265 374
266 /*ChanceDelete 机会删除*/ 375 /*ChanceDelete 机会删除*/
@@ -313,6 +422,20 @@ type Form struct { @@ -313,6 +422,20 @@ type Form struct {
313 Required int8 `json:"required"` 422 Required int8 `json:"required"`
314 } 423 }
315 424
  425 +//清楚未填写的表单数据
  426 +func ClearEmptyForm(inputFormList []*Form) (FormList []*Form) {
  427 + if len(inputFormList) == 0 {
  428 + return
  429 + }
  430 + for i := range inputFormList {
  431 + item := inputFormList[i]
  432 + if len(item.Value) > 0 {
  433 + FormList = append(FormList, item)
  434 + }
  435 + }
  436 + return
  437 +}
  438 +
316 //语音 439 //语音
317 type Speech struct { 440 type Speech struct {
318 Path string `json:"path"` 441 Path string `json:"path"`
@@ -347,21 +470,27 @@ type ChanceTotalItem struct { @@ -347,21 +470,27 @@ type ChanceTotalItem struct {
347 470
348 //机会列表 通用项 471 //机会列表 通用项
349 type CommonListItem struct { 472 type CommonListItem struct {
350 - Chance ChanceItem `json:"chance,omitempty"` //机会详情  
351 - ChanceData interface{} `json:"chanceData,omitempty"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData  
352 - Approve interface{} `json:"approve,omitempty"` //审核人 审核信息(时间) Approve  
353 - ApproveData interface{} `json:"approveData,omitempty"` //审核数据(公开状态 评分) ApproveData  
354 - Message interface{} `json:"message,omitempty"` //消息  
355 - Comment interface{} `json:"comment,omitempty"` //评论  
356 - ChanceStatus int `json:"chanceStatus"` //0:正常 1.删除 2.关闭  
357 - ReviewStatus int `json:"reviewStatus"` //审核状态  
358 - 473 + Chance ChanceItem `json:"chance,omitempty"` //机会详情
  474 + ChanceData interface{} `json:"statisticData,omitempty"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData
  475 + Approve interface{} `json:"approve,omitempty"` //审核人 审核信息(时间) Approve
  476 + ApproveData interface{} `json:"approveData,omitempty"` //审核数据(公开状态 评分) ApproveData
  477 + Message interface{} `json:"message,omitempty"` //消息
  478 + CommentData interface{} `json:"commentData,omitempty"` //评论
  479 + CollectData interface{} `json:"collectData,omitempty"` //收藏数据
  480 + ThumbUpData interface{} `json:"thumbUpData,omitempty"` //点赞数据
359 //我审核的-通过 481 //我审核的-通过
360 Score interface{} `json:"score,omitempty"` 482 Score interface{} `json:"score,omitempty"`
361 483
362 //模板 484 //模板
363 ChanceType interface{} `json:"chanceType,omitempty"` //机会类型 485 ChanceType interface{} `json:"chanceType,omitempty"` //机会类型
364 ChanceTemplate interface{} `json:"template,omitempty"` //机会模板 486 ChanceTemplate interface{} `json:"template,omitempty"` //机会模板
  487 +
  488 + //我评论的 评论数据
  489 + CommentedData interface{} `json:"commentedData,omitempty"`
  490 + SourceType int `json:"sourceType,omitempty"` //类型 1:机会 2:评论
  491 +
  492 + ChanceStatus int `json:"chanceStatus"` //0:正常 1.删除 2.关闭
  493 + ReviewStatus int `json:"reviewStatus"` //审核状态
365 } 494 }
366 type ChanceItem struct { 495 type ChanceItem struct {
367 Id int64 `json:"id"` 496 Id int64 `json:"id"`
@@ -375,8 +504,28 @@ type ChanceItem struct { @@ -375,8 +504,28 @@ type ChanceItem struct {
375 type ChanceData struct { 504 type ChanceData struct {
376 ThumbsUpTotal int `json:"thumbsupTotal"` //点赞总数 505 ThumbsUpTotal int `json:"thumbsupTotal"` //点赞总数
377 CommentTotal int `json:"commentTotal"` //评论总数 506 CommentTotal int `json:"commentTotal"` //评论总数
378 - PageViewTotal int `json:"pageView"` //评论总数 507 + PageViewTotal int `json:"pageViewTotal"` //评论总数
  508 +
  509 + IsThumbsUp bool `json:"isThumbsUp"` //是否点赞 1 点赞, 0 没有点赞
  510 + IsCollect bool `json:"isCollect"` //是否收藏 1 是 0 否
  511 +}
  512 +
  513 +//收藏数据
  514 +type CollectData struct {
  515 + Id int64 `json:"id"`
  516 + CollectTime int64 `json:"collectTime"` //收藏时间
  517 +}
  518 +
  519 +//点赞数据
  520 +type ThumbUpData struct {
  521 + Id int64 `json:"id"`
  522 + Content string `json:"content"` //点赞内容
  523 + ThumbUpTime int64 `json:"thumbUpTime"` //收藏时间
  524 +}
379 525
380 - IsThumbsUp bool `json:"thumbsup"` //是否点赞 1 点赞, 0 没有点赞  
381 - IsCollect bool `json:"isCollect"` //是否收藏 1 是 0 否 526 +//评论内容
  527 +type CommentData struct {
  528 + Id int64 `json:"id"` //评论编号
  529 + Content string `json:"content"` //评论内容
  530 + CommentTime int64 `json:"commentTime"` //评论时间
382 } 531 }
@@ -90,8 +90,9 @@ type VisibleObject struct { @@ -90,8 +90,9 @@ type VisibleObject struct {
90 90
91 //评分 91 //评分
92 type Score struct { 92 type Score struct {
93 - BasicScore float64 `json:"basicScore"` //基础评分  
94 - ExtraScore float64 `json:"extraScore"` //额外分  
95 - ValueScore float64 `json:"valueScore"` //价值分  
96 - DiscoveryScore float64 `json:"discoveryScore"` //发现分 93 + BasicScore float64 `json:"basicScore"` //基础评分
  94 + ExtraScore float64 `json:"extraScore"` //额外分
  95 + ValueScore float64 `json:"valueScore"` //价值分
  96 + DiscoveryScore float64 `json:"discoveryScore"` //发现分
  97 + DiscoveryScorePercent int `json:"discoveryScorePercent"` //发现分-百分比
97 } 98 }
@@ -9,7 +9,7 @@ const ( @@ -9,7 +9,7 @@ const (
9 /*IComment */ 9 /*IComment */
10 type ICommentRequest struct { 10 type ICommentRequest struct {
11 Content string `json:"content" valid:"Required"` 11 Content string `json:"content" valid:"Required"`
12 - SourceType int `json:"type" valid:"Required"` 12 + SourceType int `json:"type" valid:"Required"` //1.机会 2:评论
13 Id int64 `json:"id" valid:"Required"` 13 Id int64 `json:"id" valid:"Required"`
14 } 14 }
15 type ICommentResponse struct { 15 type ICommentResponse struct {
@@ -39,23 +39,42 @@ type CommentsRequest struct { @@ -39,23 +39,42 @@ type CommentsRequest struct {
39 LastId int64 `json:"lastId"` 39 LastId int64 `json:"lastId"`
40 PageSize int `json:"pageSize" valid:"Required"` 40 PageSize int `json:"pageSize" valid:"Required"`
41 SourceId int64 `json:"id" valid:"Required"` 41 SourceId int64 `json:"id" valid:"Required"`
42 - SourceType int 42 + SourceType int `json:"sourceType" valid:"Required"` //1:机会 2:评论
43 } 43 }
44 type CommentsResponse struct { 44 type CommentsResponse struct {
45 - Total int `json:"total"`  
46 Comments []*Comments `json:"comments"` 45 Comments []*Comments `json:"comments"`
  46 + Total int `json:"total"`
  47 +}
  48 +
  49 +/*Thumbsups 点赞列表*/
  50 +type ThumbsupsRequest struct {
  51 + LastId int64 `json:"lastId"`
  52 + PageSize int `json:"pageSize" valid:"Required"`
  53 + SourceId int64 `json:"id" valid:"Required"`
  54 + SourceType int `json:"sourceType" valid:"Required"` //1:机会 2:评论
  55 +}
  56 +type ThumbsupsResponse struct {
  57 + Thumbups []*Thumbups `json:"thumbups"`
  58 + Total int `json:"total"`
47 } 59 }
48 60
49 /*评论列表*/ 61 /*评论列表*/
50 type Comments struct { 62 type Comments struct {
51 - Id int64 `json:"id"`  
52 - Provider *BaseUserInfo `json:"provider"`  
53 - Content string `json:"content"`  
54 - ViewTotal int `json:"pageView"`  
55 - CommentTotal int `json:"commentTotal"`  
56 - ZanTotal int `json:"zanTotal"`  
57 - CreateTime int64 `json:"createTime"`  
58 - IsZan int `json:"is_zan"` //0:未点赞 1:点赞 63 + Id int64 `json:"id"`
  64 + CreateTime int64 `json:"createTime"`
  65 + Content string `json:"content"`
  66 + Provider *BaseUserInfo `json:"provider"`
  67 +
  68 + ViewTotal int `json:"pageViewTotal"`
  69 + CommentTotal int `json:"commentTotal"`
  70 + ZanTotal int `json:"thumbsupTotal"`
  71 + IsZan int `json:"isThumbsUp"` //0:未点赞 1:点赞
  72 +}
  73 +
  74 +type Thumbups struct {
  75 + Id int64 `json:"id"`
  76 + CreateTime int64 `json:"createTime"`
  77 + Provider *BaseUserInfo `json:"provider"`
59 } 78 }
60 79
61 /*CommentDetailsMulti */ 80 /*CommentDetailsMulti */
@@ -13,3 +13,11 @@ func Test_Err(t *testing.T) { @@ -13,3 +13,11 @@ func Test_Err(t *testing.T) {
13 bt2, _ := json.Marshal(normalmsg) 13 bt2, _ := json.Marshal(normalmsg)
14 t.Log(string(bt2)) 14 t.Log(string(bt2))
15 } 15 }
  16 +
  17 +func Test_Ceil(t *testing.T) {
  18 + value := 90.12
  19 + intValue := int(value)
  20 + t.Log(intValue)
  21 +
  22 + t.Log(0.38 * 0.3)
  23 +}
@@ -42,9 +42,21 @@ var errmessge ErrorMap = map[int]string{ @@ -42,9 +42,21 @@ var errmessge ErrorMap = map[int]string{
42 5203: "审批服务器操作失败", 42 5203: "审批服务器操作失败",
43 5204: "评分或者公开状态不能为空", 43 5204: "评分或者公开状态不能为空",
44 5205: "机会未审核通过,不能修改评分或者公开状态", 44 5205: "机会未审核通过,不能修改评分或者公开状态",
  45 + 5206: "未找到审批节点或者无权限",
45 46
46 //模板相关 47 //模板相关
47 5301: "机会模板不存在", 48 5301: "机会模板不存在",
  49 +
  50 + //消息相关
  51 + 5401: "消息不存在",
  52 +
  53 + //评分相关
  54 + 5501: "基础评分不符合要求",
  55 + 5502: "附加评分不符合要求",
  56 + 5503: "价值评分不符合要求",
  57 +
  58 + 5510: "评分配置不存在,请联系管理员",
  59 + 5511: "发现分计算不一致,请重新提交",
48 } 60 }
49 61
50 const ( 62 const (
@@ -52,7 +64,7 @@ const ( @@ -52,7 +64,7 @@ const (
52 MsgTypeCommend = 2 //表彰 64 MsgTypeCommend = 2 //表彰
53 MsgTypeInteraction = 4 //互动消息 65 MsgTypeInteraction = 4 //互动消息
54 MsgTypeAudit = 8 //机会审核 66 MsgTypeAudit = 8 //机会审核
55 - MsgTypeAuditBy = 16 //机会被审核消息 67 + MsgTypeAuditBy = 16 //机会被审核消息-我提交的
56 MsgTypeComment = 32 //评论 68 MsgTypeComment = 32 //评论
57 MsgTypeThumbUp = 64 //点赞 69 MsgTypeThumbUp = 64 //点赞
58 ) 70 )
@@ -61,6 +73,9 @@ var ( @@ -61,6 +73,9 @@ var (
61 MessageApproving = "提交了一条%v机会消息,需要您审核" 73 MessageApproving = "提交了一条%v机会消息,需要您审核"
62 MessageApproveSuccess = "审核通过你提交的%v机会" 74 MessageApproveSuccess = "审核通过你提交的%v机会"
63 MessageApproveReject = "退回您了提交的%v机会" 75 MessageApproveReject = "退回您了提交的%v机会"
  76 +
  77 + MessageZanChance = "点赞了您发布的机会"
  78 + MessageZanComment = "点赞了您发布的评论"
64 ) 79 )
65 80
66 /*MessageCenter */ 81 /*MessageCenter */
@@ -104,12 +119,14 @@ type MsgInteractiveResponse struct { @@ -104,12 +119,14 @@ type MsgInteractiveResponse struct {
104 } 119 }
105 120
106 type UserMsg struct { 121 type UserMsg struct {
107 - Id int64 `json:"msgId"` 122 + MsgId int64 `json:"msgId"`
  123 + BulletinId int64 `json:"-"`
108 SourceType int `json:"msgType"` 124 SourceType int `json:"msgType"`
109 Content string `json:"content"` 125 Content string `json:"content"`
110 CreateAt int64 `json:"msgTime"` 126 CreateAt int64 `json:"msgTime"`
111 IsRead int `json:"isRead"` 127 IsRead int `json:"isRead"`
112 //机会 //评论 128 //机会 //评论
  129 + Link string `json:"link,omitempty"`
113 } 130 }
114 131
115 type Message struct { 132 type Message struct {
@@ -206,6 +223,36 @@ type MsgChanceApproveResponse struct { @@ -206,6 +223,36 @@ type MsgChanceApproveResponse struct {
206 Total int `json:"total"` 223 Total int `json:"total"`
207 } 224 }
208 225
  226 +/*MsgChanceSubmit 我提交的*/
  227 +type MsgChanceSubmitRequest struct {
  228 + LastId int64 `json:"lastId"`
  229 + PageSize int `json:"pageSize" valid:"Required"`
  230 +}
  231 +type MsgChanceSubmitResponse struct {
  232 + List []CommonListItem `json:"list"`
  233 + Total int `json:"total"`
  234 +}
  235 +
  236 +/*MsgChanceComment 消息中心-互动消息.评论*/
  237 +type MsgChanceCommentRequest struct {
  238 + LastId int64 `json:"lastId"`
  239 + PageSize int `json:"pageSize" valid:"Required"`
  240 +}
  241 +type MsgChanceCommentResponse struct {
  242 + List []CommonListItem `json:"list"`
  243 + Total int `json:"total"`
  244 +}
  245 +
  246 +/*MsgChanceThumbUp 息中心-互动消息.点赞*/
  247 +type MsgChanceThumbUpRequest struct {
  248 + LastId int64 `json:"lastId"`
  249 + PageSize int `json:"pageSize" valid:"Required"`
  250 +}
  251 +type MsgChanceThumbUpResponse struct {
  252 + List []CommonListItem `json:"list"`
  253 + Total int `json:"total"`
  254 +}
  255 +
209 //我的审核机会列表 256 //我的审核机会列表
210 type MsgChanceApproveItemOrm struct { 257 type MsgChanceApproveItemOrm struct {
211 ChanceUserId int64 `orm:"column(chance_user_id)"` 258 ChanceUserId int64 `orm:"column(chance_user_id)"`
@@ -177,6 +177,22 @@ func init() { @@ -177,6 +177,22 @@ func init() {
177 177
178 beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], 178 beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
179 beego.ControllerComments{ 179 beego.ControllerComments{
  180 + Method: "MyCollectChance",
  181 + Router: `/myCollectChance`,
  182 + AllowHTTPMethods: []string{"post"},
  183 + MethodParams: param.Make(),
  184 + Params: nil})
  185 +
  186 + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
  187 + beego.ControllerComments{
  188 + Method: "MyComment",
  189 + Router: `/myComment`,
  190 + AllowHTTPMethods: []string{"post"},
  191 + MethodParams: param.Make(),
  192 + Params: nil})
  193 +
  194 + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
  195 + beego.ControllerComments{
180 Method: "MySubmitChance", 196 Method: "MySubmitChance",
181 Router: `/mySubmitChance`, 197 Router: `/mySubmitChance`,
182 AllowHTTPMethods: []string{"post"}, 198 AllowHTTPMethods: []string{"post"},
@@ -185,6 +201,14 @@ func init() { @@ -185,6 +201,14 @@ func init() {
185 201
186 beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"], 202 beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
187 beego.ControllerComments{ 203 beego.ControllerComments{
  204 + Method: "MyThumbUpChance",
  205 + Router: `/myThumbUpChance`,
  206 + AllowHTTPMethods: []string{"post"},
  207 + MethodParams: param.Make(),
  208 + Params: nil})
  209 +
  210 + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
  211 + beego.ControllerComments{
188 Method: "Permission", 212 Method: "Permission",
189 Router: `/permission`, 213 Router: `/permission`,
190 AllowHTTPMethods: []string{"post"}, 214 AllowHTTPMethods: []string{"post"},
@@ -223,6 +247,14 @@ func init() { @@ -223,6 +247,14 @@ func init() {
223 MethodParams: param.Make(), 247 MethodParams: param.Make(),
224 Params: nil}) 248 Params: nil})
225 249
  250 + beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
  251 + beego.ControllerComments{
  252 + Method: "Thumbsups",
  253 + Router: `/thumbsups`,
  254 + AllowHTTPMethods: []string{"post"},
  255 + MethodParams: param.Make(),
  256 + Params: nil})
  257 +
226 beego.GlobalControllerRouter["opp/controllers/v1:CommendController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:CommendController"], 258 beego.GlobalControllerRouter["opp/controllers/v1:CommendController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:CommendController"],
227 beego.ControllerComments{ 259 beego.ControllerComments{
228 Method: "Company", 260 Method: "Company",
@@ -297,6 +329,30 @@ func init() { @@ -297,6 +329,30 @@ func init() {
297 329
298 beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"], 330 beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"],
299 beego.ControllerComments{ 331 beego.ControllerComments{
  332 + Method: "MsgChanceComment",
  333 + Router: `/msgChanceComment`,
  334 + AllowHTTPMethods: []string{"post"},
  335 + MethodParams: param.Make(),
  336 + Params: nil})
  337 +
  338 + beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"],
  339 + beego.ControllerComments{
  340 + Method: "MsgChanceSubmit",
  341 + Router: `/msgChanceSubmit`,
  342 + AllowHTTPMethods: []string{"post"},
  343 + MethodParams: param.Make(),
  344 + Params: nil})
  345 +
  346 + beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"],
  347 + beego.ControllerComments{
  348 + Method: "MsgChanceThumbUp",
  349 + Router: `/msgChanceThumbUp`,
  350 + AllowHTTPMethods: []string{"post"},
  351 + MethodParams: param.Make(),
  352 + Params: nil})
  353 +
  354 + beego.GlobalControllerRouter["opp/controllers/v1:MessageController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:MessageController"],
  355 + beego.ControllerComments{
300 Method: "MsgCompanyNotice", 356 Method: "MsgCompanyNotice",
301 Router: `/msgCompanyNotice`, 357 Router: `/msgCompanyNotice`,
302 AllowHTTPMethods: []string{"post"}, 358 AllowHTTPMethods: []string{"post"},
@@ -185,6 +185,7 @@ func GetChanceMarkData(userId, companyId int64, sourceId int64) (flag int, err e @@ -185,6 +185,7 @@ func GetChanceMarkData(userId, companyId int64, sourceId int64) (flag int, err e
185 ) 185 )
186 if v, err = models.GetChanceFavorite(userId, companyId, sourceId, protocol.SourceTypeChance); err != nil { 186 if v, err = models.GetChanceFavorite(userId, companyId, sourceId, protocol.SourceTypeChance); err != nil {
187 if err == orm.ErrNoRows { 187 if err == orm.ErrNoRows {
  188 + //log.Error(userId, companyId, sourceId, err)
188 return 0, nil 189 return 0, nil
189 } 190 }
190 return 191 return
@@ -2,8 +2,10 @@ package agg @@ -2,8 +2,10 @@ package agg
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/astaxie/beego/orm"
5 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/idgen" 6 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/idgen"
6 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" 7 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
  8 + "opp/internal/utils"
7 "opp/models" 9 "opp/models"
8 "opp/protocol" 10 "opp/protocol"
9 "time" 11 "time"
@@ -134,6 +136,16 @@ func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sou @@ -134,6 +136,16 @@ func SendMsg(receiverId int64, name string, companyId int64, sourceId int64, sou
134 return 136 return
135 } 137 }
136 138
  139 +//删除已发送的消息
  140 +func DeleteSendedMsg(sourceId int64, sourceType int, receiverId int64, msgType int) (err error) {
  141 + o := orm.NewOrm()
  142 + log.Info(fmt.Sprintf("删除消息 接收者:%v 来源编号:%v 来源类型:%v 消息类型:%v", receiverId, sourceId, sourceType, msgType))
  143 + if err = utils.ExecuteSQLWithOrmer(o, models.SqlDeleteUserMsg, sourceId, sourceType, receiverId, msgType); err != nil {
  144 + log.Error(err)
  145 + }
  146 + return
  147 +}
  148 +
137 //打印消息日志 149 //打印消息日志
138 func logMsg(msg *models.UserMsg, name string) { 150 func logMsg(msg *models.UserMsg, name string) {
139 log.Info(fmt.Sprintf("发送消息 消息类型:%v Receiver:%v(%v) Message:%v SourceId:%v SourceType:%v", 151 log.Info(fmt.Sprintf("发送消息 消息类型:%v Receiver:%v(%v) Message:%v SourceId:%v SourceType:%v",
@@ -52,7 +52,7 @@ func (s SuplusApprove) NewApproveInstance(header *protocol.RequestHeader, proces @@ -52,7 +52,7 @@ func (s SuplusApprove) NewApproveInstance(header *protocol.RequestHeader, proces
52 Approver: userCompany.NickName, 52 Approver: userCompany.NickName,
53 Uid: userCompany.Id, 53 Uid: userCompany.Id,
54 Sign: ApproveSign, 54 Sign: ApproveSign,
55 - Type: 1, 55 + Type: 2,
56 } 56 }
57 for i := range process { 57 for i := range process {
58 var ( 58 var (
@@ -274,6 +274,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -274,6 +274,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
274 approveItemResponse ApproveItemResponse 274 approveItemResponse ApproveItemResponse
275 mapProcess = make(map[string]interface{}) 275 mapProcess = make(map[string]interface{})
276 mapChance = make(map[string]interface{}) 276 mapChance = make(map[string]interface{})
  277 + result *protocol.ChanceCalculateScoreResponse
277 ) 278 )
278 rsp = &protocol.ChanceApproveResponse{} 279 rsp = &protocol.ChanceApproveResponse{}
279 //TODO:测试注入 280 //TODO:测试注入
@@ -298,7 +299,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -298,7 +299,7 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
298 } 299 }
299 if process, err = models.GetAuditFlowProcessBy(request.ProcessId, header.UserId); err != nil { 300 if process, err = models.GetAuditFlowProcessBy(request.ProcessId, header.UserId); err != nil {
300 log.Error(request.ProcessId, header.UserId, err) 301 log.Error(request.ProcessId, header.UserId, err)
301 - err = protocol.NewErrWithMessage(5202) 302 + err = protocol.NewErrWithMessage(5206)
302 return 303 return
303 } 304 }
304 if chance.ReviewStatus != protocol.ReviewStatusAuditging { 305 if chance.ReviewStatus != protocol.ReviewStatusAuditging {
@@ -307,6 +308,16 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -307,6 +308,16 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
307 return 308 return
308 } 309 }
309 { 310 {
  311 + //计算发现分
  312 + if result, err = ChanceCalculateScore(header, &protocol.ChanceCalculateScoreRequest{Score: request.ApproveData.Score}); err != nil {
  313 + log.Error("计算发现分错误:", err)
  314 + //err = protocol.NewErrWithMessage(5511)
  315 + return
  316 + }
  317 + request.ApproveData.Score.DiscoveryScore = result.DiscoveryScore
  318 + request.ApproveData.Score.DiscoveryScorePercent = result.DiscoveryScorePercent
  319 + }
  320 + {
310 mapProcess["ReviewStatus"] = int8(request.ReviewStatus) 321 mapProcess["ReviewStatus"] = int8(request.ReviewStatus)
311 mapProcess["ApproveTime"] = time.Now() 322 mapProcess["ApproveTime"] = time.Now()
312 if request.ReviewStatus == protocol.ReviewStatusPass { 323 if request.ReviewStatus == protocol.ReviewStatusPass {
@@ -332,29 +343,42 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -332,29 +343,42 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
332 return 343 return
333 } 344 }
334 log.Info(fmt.Sprintf("用户%v 更新机会审核状态 process_id:%v 状态:%v", header.UserId, process.Id, request.ReviewStatus)) 345 log.Info(fmt.Sprintf("用户%v 更新机会审核状态 process_id:%v 状态:%v", header.UserId, process.Id, request.ReviewStatus))
  346 + orm := orm.NewOrm()
  347 + orm.Begin()
  348 + if request.ReviewStatus == protocol.ReviewStatusReturn {
  349 + mapChance["ReviewStatus"] = int8(request.ReviewStatus) //退回也要更新审核状态
  350 + //增加一条待处理记录到审核列表
  351 + //生成提交记录
  352 + if _, err = orm.Insert(GenAuditFlowProcess_Submit(header, chance.Id, chance.AuditTemplateId, protocol.ReviewStatusWait)); err != nil {
  353 + log.Error(err)
  354 + orm.Rollback()
  355 + return
  356 + }
  357 + }
335 { 358 {
336 //更新下一批次的审核人 359 //更新下一批次的审核人
337 var nextApprovers []int64 360 var nextApprovers []int64
  361 + if err = agg.SendApprovedMsg(chance.UserId, "",
  362 + header.CompanyId, chance.Id, chance.ChanceTypeId, request.ReviewStatus, protocol.MsgTypeAuditBy); err != nil {
  363 + log.Error(err)
  364 + orm.Rollback()
  365 + return
  366 + }
338 if approveItemResponse.IsOver == 1 { 367 if approveItemResponse.IsOver == 1 {
339 //结束审批 368 //结束审批
340 { 369 {
341 mapChance["ReviewStatus"] = int8(request.ReviewStatus) 370 mapChance["ReviewStatus"] = int8(request.ReviewStatus)
342 } 371 }
343 //发送审核结果消息给提交人 372 //发送审核结果消息给提交人
344 - for i := range approveItemResponse.MessageData.ApplyUserMessage {  
345 - message := approveItemResponse.MessageData.ApplyUserMessage[i]  
346 - nextApprovers = append(nextApprovers, message.ReceiverInfo.ReceiverUid)  
347 - if err = agg.SendApproveMsg(message.ReceiverInfo.ReceiverUid, message.ReceiverInfo.ReceiverName,  
348 - header.CompanyId, chance.Id, chance.ChanceTypeId, request.ReviewStatus); err != nil {  
349 - log.Error(err)  
350 - return  
351 - }  
352 - }  
353 - //更新同批次的为审核的状态置为无效  
354 - if err = models.UpdatetAuditFlowProcessNoApprove(chance.Id, chance.AuditLevel, protocol.ReviewStatusAuditging); err != nil {  
355 - log.Error(err)  
356 - return  
357 - } 373 + //for i := range approveItemResponse.MessageData.ApplyUserMessage {
  374 + // message := approveItemResponse.MessageData.ApplyUserMessage[i]
  375 + // nextApprovers = append(nextApprovers, message.ReceiverInfo.ReceiverUid)
  376 + // if err = agg.SendApprovedMsg(message.ReceiverInfo.ReceiverUid, message.ReceiverInfo.ReceiverName,
  377 + // header.CompanyId, chance.Id, chance.ChanceTypeId, request.ReviewStatus, protocol.MsgTypeAuditBy); err != nil {
  378 + // log.Error(err)
  379 + // return
  380 + // }
  381 + //}
358 } else { 382 } else {
359 //发送下一个消息给下一流程的审核人 383 //发送下一个消息给下一流程的审核人
360 for i := range approveItemResponse.MessageData.ApproveMessage { 384 for i := range approveItemResponse.MessageData.ApproveMessage {
@@ -363,26 +387,27 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -363,26 +387,27 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
363 if err = agg.SendApproveMsg(message.ReceiverInfo.ReceiverUid, message.ReceiverInfo.ReceiverName, 387 if err = agg.SendApproveMsg(message.ReceiverInfo.ReceiverUid, message.ReceiverInfo.ReceiverName,
364 header.CompanyId, chance.Id, chance.ChanceTypeId, protocol.ReviewStatusAuditging); err != nil { 388 header.CompanyId, chance.Id, chance.ChanceTypeId, protocol.ReviewStatusAuditging); err != nil {
365 log.Error(err) 389 log.Error(err)
  390 + orm.Rollback()
366 return 391 return
367 } 392 }
368 } 393 }
369 //更新下一批次的审核人 同批次的为审核的状态置为无效 394 //更新下一批次的审核人 同批次的为审核的状态置为无效
370 if len(nextApprovers) != 0 { 395 if len(nextApprovers) != 0 {
371 - if err = models.UpdatetAuditFlowProcessToNext(chance.Id, chance.AuditLevel+1, nextApprovers); err != nil { 396 + if err = models.UpdatetAuditFlowProcessToNext(orm, chance.Id, chance.AuditLevel+1, nextApprovers); err != nil {
372 log.Error(err) 397 log.Error(err)
  398 + orm.Rollback()
373 log.Info(fmt.Sprintf("更新机会失败 chance_id:%v 下一批次审批人员:%v", chance.Id, nextApprovers)) 399 log.Info(fmt.Sprintf("更新机会失败 chance_id:%v 下一批次审批人员:%v", chance.Id, nextApprovers))
374 return 400 return
375 } 401 }
376 log.Info(fmt.Sprintf("更新机会 chance_id:%v 下一批次审批人员:%v", chance.Id, nextApprovers)) 402 log.Info(fmt.Sprintf("更新机会 chance_id:%v 下一批次审批人员:%v", chance.Id, nextApprovers))
377 - if err = models.UpdatetAuditFlowProcessNoApprove(chance.Id, chance.AuditLevel, protocol.ReviewStatusAuditging); err != nil { 403 + if err = models.UpdatetAuditFlowProcessNoApprove(orm, chance.Id, chance.AuditLevel, protocol.ReviewStatusAuditging); err != nil {
378 log.Error(err) 404 log.Error(err)
  405 + orm.Rollback()
379 return 406 return
380 } 407 }
381 } 408 }
382 } 409 }
383 } 410 }
384 - orm := orm.NewOrm()  
385 - orm.Begin()  
386 if err = utils.UpdateTableByMapWithOrmer(orm, process, mapProcess); err != nil { 411 if err = utils.UpdateTableByMapWithOrmer(orm, process, mapProcess); err != nil {
387 log.Error("更新机会审核流程 状态失败 process_id:", process.Id, err) 412 log.Error("更新机会审核流程 状态失败 process_id:", process.Id, err)
388 orm.Rollback() 413 orm.Rollback()
@@ -393,6 +418,14 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro @@ -393,6 +418,14 @@ func ChanceApprove(header *protocol.RequestHeader, request *protocol.ChanceAppro
393 log.Error("更新机会审核状态失败 chance_id:", chance.Id, err) 418 log.Error("更新机会审核状态失败 chance_id:", chance.Id, err)
394 return 419 return
395 } 420 }
  421 + if request.ReviewStatus == protocol.ReviewStatusReturn || approveItemResponse.IsOver == 1 {
  422 + //更新同批次的为审核的状态置为无效
  423 + if err = models.UpdatetAuditFlowProcessNoApprove(orm, chance.Id, chance.AuditLevel, protocol.ReviewStatusAuditging); err != nil {
  424 + log.Error(err)
  425 + orm.Rollback()
  426 + return
  427 + }
  428 + }
396 if request.ApproveData.PublicData.PublishStatus == protocol.PublicToDepartment { 429 if request.ApproveData.PublicData.PublishStatus == protocol.PublicToDepartment {
397 if err = utils.ExecuteSQLWithOrmer(orm, models.SqlDeleteChanceDepartment, chance.Id); err != nil { 430 if err = utils.ExecuteSQLWithOrmer(orm, models.SqlDeleteChanceDepartment, chance.Id); err != nil {
398 log.Error(err) 431 log.Error(err)
@@ -469,12 +502,13 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance) @@ -469,12 +502,13 @@ func ChanceApproveProcess(header *protocol.RequestHeader, chance *models.Chance)
469 item := &protocol.ProcessItem{ 502 item := &protocol.ProcessItem{
470 Id: process.Id, 503 Id: process.Id,
471 ReviewStatus: int(process.ReviewStatus), 504 ReviewStatus: int(process.ReviewStatus),
472 - ApproveWay: int(process.AuditFlowType), 505 + ApproveWay: int(process.ActionType),
  506 + ApproveType: process.AuditFlowType,
473 Uid: process.Uid, 507 Uid: process.Uid,
474 Name: process.UserName, 508 Name: process.UserName,
475 } 509 }
476 - if item.ApproveWay == protocol.AuditBySpecailUser {  
477 - item.ApproveWay = protocol.AuditByUser 510 + if item.ApproveType == protocol.AuditBySpecailUser {
  511 + item.ApproveType = protocol.AuditByUser
478 } 512 }
479 if item.ReviewStatus != protocol.ReviewStatusAuditging { 513 if item.ReviewStatus != protocol.ReviewStatusAuditging {
480 item.ApproveTime = process.ApproveTime.Unix() * 1000 514 item.ApproveTime = process.ApproveTime.Unix() * 1000
@@ -65,13 +65,15 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc @@ -65,13 +65,15 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc
65 chanceType int 65 chanceType int
66 incre int = 1 66 incre int = 1
67 table string = "comment" 67 table string = "comment"
  68 + message string = protocol.MessageZanComment
68 ) 69 )
69 rsp = &protocol.SympathyActionResponse{} 70 rsp = &protocol.SympathyActionResponse{}
70 - if chanceFavoirte, err = models.GetChanceFavorite(header.Uid, header.CompanyId, request.Id, request.SourceType); err != nil && err != orm.ErrNoRows { 71 + if chanceFavoirte, err = models.GetChanceFavorite(header.UserId, header.CompanyId, request.Id, request.SourceType); err != nil && err != orm.ErrNoRows {
71 log.Error(err) 72 log.Error(err)
72 return 73 return
73 } 74 }
74 if request.SourceType == protocol.SourceTypeChance { 75 if request.SourceType == protocol.SourceTypeChance {
  76 + message = protocol.MessageZanChance
75 if chance, err = models.GetChanceById(request.Id); err != nil { 77 if chance, err = models.GetChanceById(request.Id); err != nil {
76 log.Error("机会不存在", err) 78 log.Error("机会不存在", err)
77 return 79 return
@@ -102,7 +104,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc @@ -102,7 +104,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc
102 } 104 }
103 } 105 }
104 if exists { 106 if exists {
105 - if err = models.UpdateChanceFavorite(header.Uid, header.CompanyId, request.Id, 1<<(uint(request.MarkType-1))); err != nil { 107 + if err = models.UpdateChanceFavorite(header.UserId, header.CompanyId, request.Id, 1<<(uint(request.MarkType-1))); err != nil {
106 log.Error(request.MarkType, err) 108 log.Error(request.MarkType, err)
107 return 109 return
108 } 110 }
@@ -111,7 +113,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc @@ -111,7 +113,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc
111 //add 113 //add
112 chanceFavoirte = &models.ChanceFavorite{ 114 chanceFavoirte = &models.ChanceFavorite{
113 Id: idgen.Next(), 115 Id: idgen.Next(),
114 - UserId: header.Uid, 116 + UserId: header.UserId,
115 CompanyId: header.CompanyId, 117 CompanyId: header.CompanyId,
116 MarkFlag: request.SympathyType, 118 MarkFlag: request.SympathyType,
117 SourceType: request.SourceType, 119 SourceType: request.SourceType,
@@ -124,7 +126,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc @@ -124,7 +126,7 @@ func SympathyAction(header *protocol.RequestHeader, request *protocol.SympathyAc
124 log.Error(err) 126 log.Error(err)
125 return 127 return
126 } else { 128 } else {
127 - log.Debug(fmt.Sprintf("SympathyAction user:%d id:%d sympathy:%v", header.Uid, request.Id, request.SympathyType)) 129 + log.Debug(fmt.Sprintf("SympathyAction user:%d id:%d sympathy:%v", header.UserId, request.Id, request.SympathyType))
128 goto END 130 goto END
129 } 131 }
130 END: 132 END:
@@ -134,6 +136,11 @@ END: @@ -134,6 +136,11 @@ END:
134 } 136 }
135 if request.SympathyType == protocol.UnMarkFlag { 137 if request.SympathyType == protocol.UnMarkFlag {
136 incre = -1 138 incre = -1
  139 + //删除点赞消息
  140 + agg.DeleteSendedMsg(chance.Id, protocol.SourceTypeChance, chance.UserId, protocol.MsgTypeThumbUp)
  141 + } else {
  142 + //发送点赞消息
  143 + agg.SendMsg(chance.UserId, fmt.Sprintf("%v", chance.UserId), chance.CompanyId, chance.Id, 1, message, protocol.MsgTypeThumbUp)
137 } 144 }
138 if !utils.ExecuteSqlByRoll(true, agg.GetIncrementSql(table, "zan_total", incre, request.Id)) { 145 if !utils.ExecuteSqlByRoll(true, agg.GetIncrementSql(table, "zan_total", incre, request.Id)) {
139 // 146 //
@@ -276,7 +283,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit @@ -276,7 +283,7 @@ func ChanceSubmit(header *protocol.RequestHeader, request *protocol.ChanceSubmit
276 } 283 }
277 284
278 //生成提交记录 285 //生成提交记录
279 - if _, err = orm.Insert(GenAuditFlowProcess_Submit(header, chance.Id, template.Id)); err != nil { 286 + if _, err = orm.Insert(GenAuditFlowProcess_Submit(header, chance.Id, template.Id, protocol.ReviewStatusSubmit)); err != nil {
280 log.Error(err) 287 log.Error(err)
281 orm.Rollback() 288 orm.Rollback()
282 return 289 return
@@ -487,6 +494,7 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC @@ -487,6 +494,7 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC
487 chance *models.Chance 494 chance *models.Chance
488 mapChance = make(map[string]interface{}) 495 mapChance = make(map[string]interface{})
489 approveData protocol.ApproveData 496 approveData protocol.ApproveData
  497 + result *protocol.ChanceCalculateScoreResponse
490 ) 498 )
491 if chance, err = models.GetChanceByIdAndEnable(request.ChanceId); err != nil { 499 if chance, err = models.GetChanceByIdAndEnable(request.ChanceId); err != nil {
492 err = protocol.NewErrWithMessage(5101) //不存在 500 err = protocol.NewErrWithMessage(5101) //不存在
@@ -496,6 +504,13 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC @@ -496,6 +504,13 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC
496 err = protocol.NewErrWithMessage(5205) 504 err = protocol.NewErrWithMessage(5205)
497 return 505 return
498 } 506 }
  507 + if result, err = ChanceCalculateScore(header, &protocol.ChanceCalculateScoreRequest{Score: request.Score}); err != nil {
  508 + log.Error("计算发现分错误:", err)
  509 + //err = protocol.NewErrWithMessage(5511)
  510 + return
  511 + }
  512 + request.Score.DiscoveryScore = result.DiscoveryScore
  513 + request.Score.DiscoveryScorePercent = result.DiscoveryScorePercent
499 //TODO:角色检查权限 514 //TODO:角色检查权限
500 if e := json.Unmarshal([]byte(chance.ApproveData), &approveData); e == nil { 515 if e := json.Unmarshal([]byte(chance.ApproveData), &approveData); e == nil {
501 approveData.Score = request.Score 516 approveData.Score = request.Score
@@ -505,7 +520,7 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC @@ -505,7 +520,7 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC
505 mapChance["BasicScore"] = request.Score.BasicScore 520 mapChance["BasicScore"] = request.Score.BasicScore
506 mapChance["ExtraScore"] = request.Score.ExtraScore 521 mapChance["ExtraScore"] = request.Score.ExtraScore
507 mapChance["ValueScore"] = request.Score.ValueScore 522 mapChance["ValueScore"] = request.Score.ValueScore
508 - mapChance["DiscoveryScore"] = request.Score.DiscoveryScore 523 + mapChance["DiscoveryScore"] = result.DiscoveryScore
509 } 524 }
510 orm := orm.NewOrm() 525 orm := orm.NewOrm()
511 orm.Begin() 526 orm.Begin()
@@ -521,10 +536,60 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC @@ -521,10 +536,60 @@ func ChanceChangeScore(header *protocol.RequestHeader, request *protocol.ChanceC
521 536
522 //计算发现分 537 //计算发现分
523 func ChanceCalculateScore(header *protocol.RequestHeader, request *protocol.ChanceCalculateScoreRequest) (rsp *protocol.ChanceCalculateScoreResponse, err error) { 538 func ChanceCalculateScore(header *protocol.RequestHeader, request *protocol.ChanceCalculateScoreRequest) (rsp *protocol.ChanceCalculateScoreResponse, err error) {
524 - var ()  
525 - //TODO:取配置数据 539 + var (
  540 + config *models.SysConfig
  541 + scoreConfig protocol.ScoreConfig
  542 + sum float64
  543 + )
526 rsp = &protocol.ChanceCalculateScoreResponse{} 544 rsp = &protocol.ChanceCalculateScoreResponse{}
527 - rsp.DiscoveryScore = request.Score.BasicScore*1.0 + request.Score.ExtraScore*1.0 + request.Score.ValueScore*1.0 545 + if config, err = models.GetSysConfigByCompanyId(int(header.CompanyId), models.KeyScore); err != nil {
  546 + err = protocol.NewErrWithMessage(5510)
  547 + log.Error(header.CompanyId, err)
  548 + return
  549 + }
  550 + if err = json.Unmarshal([]byte(config.Content), &scoreConfig); err != nil {
  551 + err = protocol.NewErrWithMessage(5510)
  552 + log.Error(err)
  553 + return
  554 + }
  555 + {
  556 + basic := request.Score.BasicScore
  557 + if basic < scoreConfig.BasicScore.Min || basic > scoreConfig.BasicScore.Max {
  558 + err = protocol.NewErrWithMessage(5501)
  559 + log.Error(fmt.Sprintf("%v out range[%v:%v]", basic, scoreConfig.BasicScore.Min, scoreConfig.BasicScore.Max))
  560 + return
  561 + }
  562 + sum += scoreConfig.BasicScore.Max * scoreConfig.DiscoveryScore.BasicFactor
  563 + }
  564 + {
  565 + extral := request.Score.ExtraScore
  566 + if extral < scoreConfig.ExtraScore.Min || extral > scoreConfig.ExtraScore.Max {
  567 + err = protocol.NewErrWithMessage(5502)
  568 + log.Error(fmt.Sprintf("%v out range[%v:%v]", extral, scoreConfig.ExtraScore.Min, scoreConfig.ExtraScore.Max))
  569 + return
  570 + }
  571 + sum += scoreConfig.ExtraScore.Max * scoreConfig.DiscoveryScore.ExtraFactor
  572 + }
  573 + {
  574 + value := request.Score.ValueScore
  575 + if value < scoreConfig.ValueScore.Min || value > scoreConfig.ValueScore.Max {
  576 + err = protocol.NewErrWithMessage(5502)
  577 + log.Error(fmt.Sprintf("%v out range[%v:%v]", value, scoreConfig.ValueScore.Min, scoreConfig.ValueScore.Max))
  578 + return
  579 + }
  580 + sum += scoreConfig.ValueScore.Max * scoreConfig.DiscoveryScore.ValueFactor
  581 + }
  582 + rsp.DiscoveryScore = request.Score.BasicScore*scoreConfig.DiscoveryScore.BasicFactor + request.Score.ExtraScore*scoreConfig.DiscoveryScore.ExtraFactor + request.Score.ValueScore*scoreConfig.DiscoveryScore.ValueFactor
  583 + rsp.DiscoveryScorePercent = int((rsp.DiscoveryScore / sum) * 100)
  584 + log.Debug(fmt.Sprintf("计算发现-> score_config:%v score:%v 总分:%v 发现分:%v 发现分百分比:%v", common.AssertJson(scoreConfig), common.AssertJson(request.Score), sum, rsp.DiscoveryScore, rsp.DiscoveryScorePercent))
  585 + //发现分不为0
  586 + if request.Score.DiscoveryScore != 0 {
  587 + if request.Score.DiscoveryScore != 0 && rsp.DiscoveryScore != request.Score.DiscoveryScore {
  588 + log.Error(fmt.Sprintf("input :%v out:%v want:%v", request.Score.DiscoveryScore, rsp.DiscoveryScore, request.Score.DiscoveryScore))
  589 + err = protocol.NewErrWithMessage(5511)
  590 + return
  591 + }
  592 + }
528 return 593 return
529 } 594 }
530 595
@@ -542,7 +607,7 @@ func ChancePermission(header *protocol.RequestHeader, request *protocol.ChancePe @@ -542,7 +607,7 @@ func ChancePermission(header *protocol.RequestHeader, request *protocol.ChancePe
542 } 607 }
543 608
544 //生成审批流-提交记录 609 //生成审批流-提交记录
545 -func GenAuditFlowProcess_Submit(header *protocol.RequestHeader, chanceId int64, templateId int64) (v *models.AuditFlowProcess) { 610 +func GenAuditFlowProcess_Submit(header *protocol.RequestHeader, chanceId int64, templateId int64, reviewStatus int) (v *models.AuditFlowProcess) {
546 v = &models.AuditFlowProcess{ 611 v = &models.AuditFlowProcess{
547 Id: idgen.Next(), 612 Id: idgen.Next(),
548 ChanceId: chanceId, 613 ChanceId: chanceId,
@@ -551,7 +616,7 @@ func GenAuditFlowProcess_Submit(header *protocol.RequestHeader, chanceId int64, @@ -551,7 +616,7 @@ func GenAuditFlowProcess_Submit(header *protocol.RequestHeader, chanceId int64,
551 UpdateAt: time.Now(), 616 UpdateAt: time.Now(),
552 ApproveTime: time.Now(), 617 ApproveTime: time.Now(),
553 EnableStatus: 1, 618 EnableStatus: 1,
554 - ReviewStatus: protocol.ReviewStatusSubmit, 619 + ReviewStatus: int8(reviewStatus),
555 } 620 }
556 if approver, err := models.GetUsersById(header.Uid); err != nil { 621 if approver, err := models.GetUsersById(header.Uid); err != nil {
557 log.Error(err) 622 log.Error(err)
@@ -759,6 +824,8 @@ func getParentDepartmentors(pid int) (ids []int64) { @@ -759,6 +824,8 @@ func getParentDepartmentors(pid int) (ids []int64) {
759 func ChanceStatistics(header *protocol.RequestHeader, request *protocol.ChanceStatisticsRequest) (rsp *protocol.ChanceStatisticsResponse, err error) { 824 func ChanceStatistics(header *protocol.RequestHeader, request *protocol.ChanceStatisticsRequest) (rsp *protocol.ChanceStatisticsResponse, err error) {
760 var ( 825 var (
761 chanceType []*models.ChanceType 826 chanceType []*models.ChanceType
  827 + total int
  828 + sum int
762 ) 829 )
763 if chanceType, err = models.GetChanceTypeAll(header.CompanyId); err != nil { 830 if chanceType, err = models.GetChanceTypeAll(header.CompanyId); err != nil {
764 log.Error(err) 831 log.Error(err)
@@ -767,12 +834,18 @@ func ChanceStatistics(header *protocol.RequestHeader, request *protocol.ChanceSt @@ -767,12 +834,18 @@ func ChanceStatistics(header *protocol.RequestHeader, request *protocol.ChanceSt
767 rsp = &protocol.ChanceStatisticsResponse{} 834 rsp = &protocol.ChanceStatisticsResponse{}
768 for i := range chanceType { 835 for i := range chanceType {
769 item := chanceType[i] 836 item := chanceType[i]
  837 + if total, err = models.GetChancePool(header.UserId, header.CompanyId, item.Id, 0, 0, nil); err != nil {
  838 + log.Error(err)
  839 + return
  840 + }
  841 + sum += total
770 rsp.List = append(rsp.List, protocol.ChanceTotalItem{ 842 rsp.List = append(rsp.List, protocol.ChanceTotalItem{
771 Id: item.Id, 843 Id: item.Id,
772 Name: item.Name, 844 Name: item.Name,
773 - Total: i * 2, 845 + Total: total,
774 }) 846 })
775 } 847 }
  848 + rsp.ChanceTotal = sum
776 return 849 return
777 } 850 }
778 851
@@ -849,7 +922,7 @@ func ChancePool(header *protocol.RequestHeader, request *protocol.ChancePoolRequ @@ -849,7 +922,7 @@ func ChancePool(header *protocol.RequestHeader, request *protocol.ChancePoolRequ
849 commItem := protocol.CommonListItem{} 922 commItem := protocol.CommonListItem{}
850 { 923 {
851 item := protocol.ChanceItem{ 924 item := protocol.ChanceItem{
852 - Id: chance.Id, 925 + Id: chance.ChanceId,
853 Provider: provider, 926 Provider: provider,
854 CreateTime: chance.CreateTime.Unix() * 1000, 927 CreateTime: chance.CreateTime.Unix() * 1000,
855 } 928 }
@@ -867,7 +940,7 @@ func ChancePool(header *protocol.RequestHeader, request *protocol.ChancePoolRequ @@ -867,7 +940,7 @@ func ChancePool(header *protocol.RequestHeader, request *protocol.ChancePoolRequ
867 CommentTotal: chance.CommentTotal, 940 CommentTotal: chance.CommentTotal,
868 PageViewTotal: chance.ViewTotal, 941 PageViewTotal: chance.ViewTotal,
869 } 942 }
870 - if flag, err = agg.GetChanceMarkData(header.UserId, header.CompanyId, chance.Id); err != nil { 943 + if flag, err = agg.GetChanceMarkData(header.UserId, header.CompanyId, chance.ChanceId); err != nil {
871 log.Error(err) 944 log.Error(err)
872 continue 945 continue
873 } 946 }
@@ -903,7 +976,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -903,7 +976,6 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
903 total int 976 total int
904 provider *protocol.BaseUserInfo 977 provider *protocol.BaseUserInfo
905 ) 978 )
906 - rsp = &protocol.MyApproveChanceResponse{}  
907 if total, err = models.GetChanceMyApproveChance(header.UserId, header.CompanyId, []int8{request.ReviewStatus}, request.LastId, request.PageSize, &myChances); err != nil { 979 if total, err = models.GetChanceMyApproveChance(header.UserId, header.CompanyId, []int8{request.ReviewStatus}, request.LastId, request.PageSize, &myChances); err != nil {
908 if err == orm.ErrNoRows { 980 if err == orm.ErrNoRows {
909 err = nil 981 err = nil
@@ -922,9 +994,10 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -922,9 +994,10 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
922 } else if chance.ChanceEnableStatus == 0 { //机会关闭 994 } else if chance.ChanceEnableStatus == 0 { //机会关闭
923 commItem.ChanceStatus = protocol.ChanceStatusClose 995 commItem.ChanceStatus = protocol.ChanceStatusClose
924 } else { 996 } else {
925 - if provider, err = agg.GetUserBaseInfo(header.UserId, header.CompanyId); err != nil { 997 + if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil {
926 commItem.ChanceStatus = protocol.ChanceStatusDelete 998 commItem.ChanceStatus = protocol.ChanceStatusDelete
927 - log.Error(err) 999 + log.Error(chance.ChanceUserId, header.CompanyId, err)
  1000 + err = nil
928 //return 1001 //return
929 } else { 1002 } else {
930 item := protocol.ChanceItem{ 1003 item := protocol.ChanceItem{
@@ -966,6 +1039,264 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove @@ -966,6 +1039,264 @@ func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApprove
966 return 1039 return
967 } 1040 }
968 1041
  1042 +// 我的收藏
  1043 +func MyCollectChance(header *protocol.RequestHeader, request *protocol.MyCollectChanceRequest) (rsp *protocol.MyCollectChanceResponse, err error) {
  1044 + var (
  1045 + myChances []protocol.ChanceCollectItemOrm
  1046 + total int
  1047 + provider *protocol.BaseUserInfo
  1048 + )
  1049 + if total, err = models.GetChanceCollect(header.UserId, request.LastId, request.PageSize, &myChances); err != nil {
  1050 + if err == orm.ErrNoRows {
  1051 + err = nil
  1052 + return
  1053 + }
  1054 + log.Error(err)
  1055 + return
  1056 + }
  1057 + rsp = &protocol.MyCollectChanceResponse{Total: total}
  1058 + for i := 0; i < len(myChances); i++ {
  1059 + chance := myChances[i]
  1060 + commItem := protocol.CommonListItem{}
  1061 + commItem.ReviewStatus = chance.ReviewStatus
  1062 + if len(chance.SourceContent) == 0 { //机会删除
  1063 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1064 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  1065 + commItem.ChanceStatus = protocol.ChanceStatusClose
  1066 + } else {
  1067 + if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil {
  1068 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1069 + log.Error(err)
  1070 + //return
  1071 + } else {
  1072 + item := protocol.ChanceItem{
  1073 + Id: chance.ChanceId,
  1074 + Provider: provider,
  1075 + //CreateTime: chance.CreateTime.Unix() * 1000,
  1076 + }
  1077 + jsonUnmarshal(chance.SourceContent, &item.FormList)
  1078 + item.FormList = clearEmptyForm(item.FormList)
  1079 + jsonUnmarshal(chance.Images, &item.Pictures)
  1080 + jsonUnmarshal(chance.Voices, &item.Speechs)
  1081 + jsonUnmarshal(chance.Videos, &item.Videos)
  1082 + commItem.Chance = item
  1083 + }
  1084 + }
  1085 + commItem.ReviewStatus = chance.ReviewStatus
  1086 + {
  1087 + var chanceData = protocol.ChanceData{
  1088 + ThumbsUpTotal: chance.ZanTotal,
  1089 + CommentTotal: chance.CommentTotal,
  1090 + PageViewTotal: chance.ViewTotal,
  1091 + }
  1092 + chanceData.IsThumbsUp, chanceData.IsCollect, _ = getChanceMarkFlag(header, chance.ChanceId)
  1093 + commItem.ChanceData = chanceData
  1094 + }
  1095 + {
  1096 + //做一次查询 查回所有的模板数据
  1097 + commItem.ChanceTemplate = getTemplate(chance.TemplateId)
  1098 + commItem.ChanceType = getChanceType(chance.ChanceTypeId)
  1099 + }
  1100 + {
  1101 + //收藏数据
  1102 + commItem.CollectData = protocol.CollectData{
  1103 + Id: chance.CollectId,
  1104 + CollectTime: chance.CollectTime.Unix() * 1000,
  1105 + }
  1106 + }
  1107 + rsp.List = append(rsp.List, commItem)
  1108 + }
  1109 + return
  1110 +}
  1111 +
  1112 +//我点赞的机会
  1113 +func MyThumbUpChance(header *protocol.RequestHeader, request *protocol.MyThumbUpChanceRequest) (rsp *protocol.MyThumbUpChanceResponse, err error) {
  1114 + var (
  1115 + myChances []protocol.ChanceThumbUpItemOrm
  1116 + total int
  1117 + provider *protocol.BaseUserInfo
  1118 + )
  1119 + if total, err = models.GetChanceThumbUp(header.UserId, request.LastId, request.PageSize, &myChances); err != nil {
  1120 + if err == orm.ErrNoRows {
  1121 + err = nil
  1122 + return
  1123 + }
  1124 + log.Error(err)
  1125 + return
  1126 + }
  1127 + rsp = &protocol.MyThumbUpChanceResponse{Total: total}
  1128 + for i := 0; i < len(myChances); i++ {
  1129 + chance := myChances[i]
  1130 + commItem := protocol.CommonListItem{}
  1131 + commItem.ReviewStatus = chance.ReviewStatus
  1132 + if len(chance.SourceContent) == 0 { //机会删除
  1133 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1134 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  1135 + commItem.ChanceStatus = protocol.ChanceStatusClose
  1136 + } else {
  1137 + if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil {
  1138 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1139 + log.Error(err)
  1140 + //return
  1141 + } else {
  1142 + item := protocol.ChanceItem{
  1143 + Id: chance.ChanceId,
  1144 + Provider: provider,
  1145 + CreateTime: chance.CreateTime.Unix() * 1000,
  1146 + }
  1147 + jsonUnmarshal(chance.SourceContent, &item.FormList)
  1148 + item.FormList = clearEmptyForm(item.FormList)
  1149 + jsonUnmarshal(chance.Images, &item.Pictures)
  1150 + jsonUnmarshal(chance.Voices, &item.Speechs)
  1151 + jsonUnmarshal(chance.Videos, &item.Videos)
  1152 + commItem.Chance = item
  1153 + }
  1154 + }
  1155 + commItem.ReviewStatus = chance.ReviewStatus
  1156 + {
  1157 + var chanceData = protocol.ChanceData{
  1158 + ThumbsUpTotal: chance.ZanTotal,
  1159 + CommentTotal: chance.CommentTotal,
  1160 + PageViewTotal: chance.ViewTotal,
  1161 + }
  1162 + chanceData.IsThumbsUp, chanceData.IsCollect, _ = getChanceMarkFlag(header, chance.ChanceId)
  1163 + commItem.ChanceData = chanceData
  1164 + }
  1165 + {
  1166 + //做一次查询 查回所有的模板数据
  1167 + commItem.ChanceTemplate = getTemplate(chance.TemplateId)
  1168 + commItem.ChanceType = getChanceType(chance.ChanceTypeId)
  1169 + }
  1170 + {
  1171 + //收藏数据
  1172 + commItem.ThumbUpData = protocol.ThumbUpData{
  1173 + Id: chance.CollectId,
  1174 + ThumbUpTime: chance.CollectTime.Unix() * 1000,
  1175 + }
  1176 + }
  1177 + rsp.List = append(rsp.List, commItem)
  1178 + }
  1179 + return
  1180 +}
  1181 +
  1182 +//我的评论
  1183 +func MyComment(header *protocol.RequestHeader, request *protocol.MyCommentRequest) (rsp *protocol.MyCommentResponse, err error) {
  1184 + var (
  1185 + myChances []protocol.ChanceCommentItemOrm
  1186 + total int
  1187 + provider *protocol.BaseUserInfo
  1188 + )
  1189 + if total, err = models.GetChanceComment(header.UserId, request.LastId, request.PageSize, &myChances); err != nil {
  1190 + if err == orm.ErrNoRows {
  1191 + err = nil
  1192 + return
  1193 + }
  1194 + log.Error(err)
  1195 + return
  1196 + }
  1197 + rsp = &protocol.MyCommentResponse{Total: total}
  1198 + for i := 0; i < len(myChances); i++ {
  1199 + chance := myChances[i]
  1200 + commItem := protocol.CommonListItem{}
  1201 + if chance.SourceType == protocol.SourceTypeChance {
  1202 + commItem.ReviewStatus = chance.ReviewStatus
  1203 + if len(chance.SourceContent) == 0 { //机会删除
  1204 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1205 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  1206 + commItem.ChanceStatus = protocol.ChanceStatusClose
  1207 + } else {
  1208 + if provider, err = agg.GetUserBaseInfo(chance.Uid, header.CompanyId); err != nil {
  1209 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  1210 + log.Error(err)
  1211 + //return
  1212 + } else {
  1213 + item := protocol.ChanceItem{
  1214 + Id: chance.SourceId,
  1215 + Provider: provider,
  1216 + CreateTime: chance.CreateTime.Unix() * 1000,
  1217 + }
  1218 + jsonUnmarshal(chance.SourceContent, &item.FormList)
  1219 + item.FormList = clearEmptyForm(item.FormList)
  1220 + jsonUnmarshal(chance.Images, &item.Pictures)
  1221 + jsonUnmarshal(chance.Voices, &item.Speechs)
  1222 + jsonUnmarshal(chance.Videos, &item.Videos)
  1223 + commItem.Chance = item
  1224 + }
  1225 + }
  1226 + commItem.ReviewStatus = chance.ReviewStatus
  1227 + //{
  1228 + // var chanceData = protocol.ChanceData{
  1229 + // ThumbsUpTotal: chance.ZanTotal,
  1230 + // CommentTotal: chance.CommentTotal,
  1231 + // PageViewTotal: chance.ViewTotal,
  1232 + // }
  1233 + // chanceData.IsThumbsUp, chanceData.IsCollect, _ = getChanceMarkFlag(header, chance.SourceType)
  1234 + // commItem.ChanceData = chanceData
  1235 + //}
  1236 + //{
  1237 + // //做一次查询 查回所有的模板数据
  1238 + // commItem.ChanceTemplate = getTemplate(chance.TemplateId)
  1239 + // commItem.ChanceType = getChanceType(chance.ChanceTypeId)
  1240 + //}
  1241 + }
  1242 + if chance.SourceType == protocol.SourceTypeComment {
  1243 + commItem.CommentedData = protocol.CommentData{
  1244 + Id: chance.SourceId,
  1245 + Content: chance.CommentedContent,
  1246 + CommentTime: chance.CommentedTime.Unix() * 1000,
  1247 + }
  1248 + }
  1249 + commItem.CommentData = protocol.CommentData{
  1250 + Id: chance.CommentId,
  1251 + CommentTime: chance.CommentTime.Unix() * 1000,
  1252 + Content: chance.CommentContent,
  1253 + }
  1254 + commItem.SourceType = chance.SourceType
  1255 + rsp.List = append(rsp.List, commItem)
  1256 + }
  1257 + return
  1258 +}
  1259 +
  1260 +//获取机会点赞/收藏状态
  1261 +func getChanceMarkFlag(header *protocol.RequestHeader, chanceId int64) (isThumbsUp, isCollect bool, err error) {
  1262 + var flag int
  1263 + if flag, err = agg.GetChanceMarkData(header.UserId, header.CompanyId, chanceId); err != nil {
  1264 + log.Error(err)
  1265 + return
  1266 + }
  1267 + isThumbsUp = (flag & protocol.MarkFlagZan) == protocol.MarkFlagZan
  1268 + isCollect = (flag & protocol.MarkFlagCollect) == protocol.MarkFlagCollect
  1269 + return
  1270 +}
  1271 +
  1272 +//获取模板
  1273 +func getTemplate(templateId int) protocol.NameItem {
  1274 + if template, e := models.GetAuditTemplateById(int64(templateId)); e == nil {
  1275 + item := protocol.NameItem{
  1276 + Id: int(template.Id),
  1277 + Name: template.Name,
  1278 + }
  1279 + return item
  1280 + } else {
  1281 + log.Error(templateId, e)
  1282 + }
  1283 + return protocol.NameItem{}
  1284 +}
  1285 +
  1286 +//获取机会一级分类
  1287 +func getChanceType(chanceTypeId int) protocol.NameItem {
  1288 + if template, e := models.GetChanceTypeById(chanceTypeId); e == nil {
  1289 + item := protocol.NameItem{
  1290 + Id: int(template.Id),
  1291 + Name: template.Name,
  1292 + }
  1293 + return item
  1294 + } else {
  1295 + log.Error(chanceTypeId, e)
  1296 + }
  1297 + return protocol.NameItem{}
  1298 +}
  1299 +
969 func jsonUnmarshal(jsonData string, v interface{}) { 1300 func jsonUnmarshal(jsonData string, v interface{}) {
970 if len(jsonData) == 0 { 1301 if len(jsonData) == 0 {
971 return 1302 return
@@ -998,6 +1329,7 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail @@ -998,6 +1329,7 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
998 approveProcess *protocol.ChanceApproveProcessResponse 1329 approveProcess *protocol.ChanceApproveProcessResponse
999 //chanceType *models.ChanceType 1330 //chanceType *models.ChanceType
1000 //tempalte *models.AuditTemplate 1331 //tempalte *models.AuditTemplate
  1332 + table string = "chance"
1001 ) 1333 )
1002 rsp = &protocol.ChanceDetailResponse{} 1334 rsp = &protocol.ChanceDetailResponse{}
1003 if chance, err = models.GetChanceById(request.Id); err != nil { 1335 if chance, err = models.GetChanceById(request.Id); err != nil {
@@ -1024,6 +1356,11 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail @@ -1024,6 +1356,11 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
1024 err = protocol.NewErrWithMessage(5101) 1356 err = protocol.NewErrWithMessage(5101)
1025 return 1357 return
1026 } 1358 }
  1359 + if chance.ReviewStatus == protocol.ReviewStatusPass {
  1360 + if !utils.ExecuteSqlByRoll(true, agg.GetIncrementSql(table, "view_total", 1, request.Id)) {
  1361 + //
  1362 + }
  1363 + }
1027 //用户信息 1364 //用户信息
1028 if provider, err = agg.GetUserBaseInfo(chance.UserId, header.CompanyId); err != nil { 1365 if provider, err = agg.GetUserBaseInfo(chance.UserId, header.CompanyId); err != nil {
1029 log.Error(err) 1366 log.Error(err)
@@ -1051,6 +1388,22 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail @@ -1051,6 +1388,22 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
1051 rsp.ApproveProcess = approveProcess.ApproveProcess 1388 rsp.ApproveProcess = approveProcess.ApproveProcess
1052 rsp.ApproveAccess = approveProcess.ApproveAccess 1389 rsp.ApproveAccess = approveProcess.ApproveAccess
1053 } 1390 }
  1391 +
  1392 + {
  1393 + var flag int
  1394 + var chanceData = protocol.ChanceData{
  1395 + ThumbsUpTotal: chance.ZanTotal,
  1396 + CommentTotal: chance.CommentTotal,
  1397 + PageViewTotal: chance.ViewTotal,
  1398 + }
  1399 + if flag, err = agg.GetChanceMarkData(header.UserId, header.CompanyId, chance.Id); err != nil {
  1400 + log.Error(err)
  1401 + return
  1402 + }
  1403 + chanceData.IsThumbsUp = (flag & protocol.MarkFlagZan) == protocol.MarkFlagZan
  1404 + chanceData.IsCollect = (flag & protocol.MarkFlagCollect) == protocol.MarkFlagCollect
  1405 + rsp.StatisticData = chanceData
  1406 + }
1054 return 1407 return
1055 } 1408 }
1056 1409
@@ -2,6 +2,7 @@ package chance @@ -2,6 +2,7 @@ package chance
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/astaxie/beego/orm"
5 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/idgen" 6 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/idgen"
6 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" 7 "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
7 "opp/internal/utils" 8 "opp/internal/utils"
@@ -19,6 +20,8 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) @@ -19,6 +20,8 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest)
19 chance *models.Chance 20 chance *models.Chance
20 updateTable interface{} 21 updateTable interface{}
21 updateMap = make(map[string]interface{}) 22 updateMap = make(map[string]interface{})
  23 + recevierId int64
  24 + sourceId int64
22 ) 25 )
23 switch request.SourceType { 26 switch request.SourceType {
24 case protocol.SourceTypeChance: 27 case protocol.SourceTypeChance:
@@ -28,15 +31,22 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) @@ -28,15 +31,22 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest)
28 } 31 }
29 updateTable = chance 32 updateTable = chance
30 updateMap["CommentTotal"] = chance.CommentTotal + 1 33 updateMap["CommentTotal"] = chance.CommentTotal + 1
  34 + recevierId = chance.UserId
  35 + sourceId = chance.Id
  36 + break
31 case protocol.SourceTypeComment: 37 case protocol.SourceTypeComment:
32 if comment, err = models.GetCommentById(request.Id); err != nil { 38 if comment, err = models.GetCommentById(request.Id); err != nil {
33 log.Error(err) 39 log.Error(err)
34 return 40 return
35 } 41 }
36 updateTable = comment 42 updateTable = comment
  43 + recevierId = comment.UserId
  44 + sourceId = comment.Id
37 updateMap["CommentTotal"] = comment.CommentTotal + 1 45 updateMap["CommentTotal"] = comment.CommentTotal + 1
  46 + break
38 default: 47 default:
39 err = fmt.Errorf("unknow source_type:%v", request.SourceType) 48 err = fmt.Errorf("unknow source_type:%v", request.SourceType)
  49 + return
40 } 50 }
41 newComment := &models.Comment{ 51 newComment := &models.Comment{
42 Id: idgen.Next(), 52 Id: idgen.Next(),
@@ -46,8 +56,11 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) @@ -46,8 +56,11 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest)
46 CreateAt: time.Now(), 56 CreateAt: time.Now(),
47 SourceId: request.Id, 57 SourceId: request.Id,
48 } 58 }
49 - if _, err = models.AddComment(newComment); err != nil { 59 + orm := orm.NewOrm()
  60 + orm.Begin()
  61 + if _, err = orm.Insert(newComment); err != nil {
50 log.Error(err) 62 log.Error(err)
  63 + orm.Rollback()
51 return 64 return
52 } 65 }
53 if baseUserInfo, err = agg.GetUserBaseInfo(header.Uid, header.CompanyId); err != nil { 66 if baseUserInfo, err = agg.GetUserBaseInfo(header.Uid, header.CompanyId); err != nil {
@@ -55,12 +68,22 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest) @@ -55,12 +68,22 @@ func IComment(header *protocol.RequestHeader, request *protocol.ICommentRequest)
55 return 68 return
56 } 69 }
57 if updateTable != nil { 70 if updateTable != nil {
58 - utils.UpdateTableByMap(updateTable, updateMap) 71 + if err = utils.UpdateTableByMapWithOrmer(orm, updateTable, updateMap); err != nil {
  72 + log.Error(err)
  73 + orm.Rollback()
  74 + return
  75 + }
  76 + }
  77 + if err = agg.SendMsg(recevierId, "", header.CompanyId, sourceId, request.SourceType, request.Content, protocol.MsgTypeComment); err != nil {
  78 + log.Error(err)
  79 + orm.Rollback()
  80 + return
59 } 81 }
  82 + orm.Commit()
60 rsp = &protocol.ICommentResponse{ 83 rsp = &protocol.ICommentResponse{
61 Id: newComment.Id, 84 Id: newComment.Id,
62 Content: newComment.Content, 85 Content: newComment.Content,
63 - CreateTime: newComment.CreateAt.Unix(), 86 + CreateTime: newComment.CreateAt.Unix() * 1000,
64 Provider: baseUserInfo, 87 Provider: baseUserInfo,
65 } 88 }
66 return 89 return
@@ -128,7 +151,7 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) @@ -128,7 +151,7 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest)
128 Id: comment.Id, 151 Id: comment.Id,
129 Provider: baseUserInfo, 152 Provider: baseUserInfo,
130 Content: comment.Content, 153 Content: comment.Content,
131 - CreateTime: comment.CreateAt.Unix(), 154 + CreateTime: comment.CreateAt.Unix() * 1000,
132 ViewTotal: comment.ViewTotal, 155 ViewTotal: comment.ViewTotal,
133 ZanTotal: comment.ZanTotal, 156 ZanTotal: comment.ZanTotal,
134 CommentTotal: comment.CommentTotal, 157 CommentTotal: comment.CommentTotal,
@@ -141,6 +164,39 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest) @@ -141,6 +164,39 @@ func Comments(header *protocol.RequestHeader, request *protocol.CommentsRequest)
141 return 164 return
142 } 165 }
143 166
  167 +//点赞列表
  168 +func Thumbsups(header *protocol.RequestHeader, request *protocol.ThumbsupsRequest) (rsp *protocol.ThumbsupsResponse, err error) {
  169 + var (
  170 + favorites []*models.ChanceFavorite
  171 + total int
  172 + baseUserInfo *protocol.BaseUserInfo
  173 + )
  174 + rsp = &protocol.ThumbsupsResponse{}
  175 + if favorites, total, err = models.GetChanceFavorites(header.UserId, header.CompanyId, protocol.MarkFlagZan, request.SourceType, request.LastId, request.PageSize); err != nil {
  176 + if err == orm.ErrNoRows {
  177 + err = nil
  178 + return
  179 + }
  180 + return
  181 + }
  182 + for i := range favorites {
  183 + f := favorites[i]
  184 + if baseUserInfo, err = agg.GetUserBaseInfo(f.UserId, header.CompanyId); err != nil {
  185 + log.Error(err)
  186 + //return
  187 + continue
  188 + }
  189 + item := &protocol.Thumbups{
  190 + Id: f.Id,
  191 + Provider: baseUserInfo,
  192 + CreateTime: f.CreateAt.Unix() * 1000,
  193 + }
  194 + rsp.Thumbups = append(rsp.Thumbups, item)
  195 + }
  196 + rsp.Total = total
  197 + return
  198 +}
  199 +
144 //评论详情-不带地下评论 200 //评论详情-不带地下评论
145 func CommentDetailsSingle(header *protocol.RequestHeader, request *protocol.CommentDetailsSingleRequest) (rsp *protocol.CommentDetailsSingleResponse, err error) { 201 func CommentDetailsSingle(header *protocol.RequestHeader, request *protocol.CommentDetailsSingleRequest) (rsp *protocol.CommentDetailsSingleResponse, err error) {
146 var ( 202 var (
@@ -17,15 +17,25 @@ import ( @@ -17,15 +17,25 @@ import (
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 rsp = &protocol.MessageCenterResponse{} 19 rsp = &protocol.MessageCenterResponse{}
20 - err = models.GetUserMsgTotals(header.Uid, header.CompanyId, request.MsgType, &rsp.Totals) 20 + err = models.GetUserMsgTotals(header.UserId, header.CompanyId, request.MsgType, &rsp.Totals)
21 return 21 return
22 } 22 }
23 23
24 //标记已读 24 //标记已读
25 func MsgCenterRead(header *protocol.RequestHeader, request *protocol.MsgCenterReadRequest) (rsp *protocol.MsgCenterReadResponse, err error) { 25 func MsgCenterRead(header *protocol.RequestHeader, request *protocol.MsgCenterReadRequest) (rsp *protocol.MsgCenterReadResponse, err error) {
26 - var ()  
27 - //rsp =&protocol.MsgCenterReadResponse{}  
28 - err = models.UpdateUserMsgSetRead(header.Uid, header.CompanyId, request.MsgType, request.MsgId) 26 + var (
  27 + msg *models.UserMsg
  28 + )
  29 + rsp = &protocol.MsgCenterReadResponse{}
  30 + if msg, err = models.GetUserMsgById(request.MsgId); err != nil {
  31 + log.Error(err)
  32 + err = protocol.NewErrWithMessage(5401)
  33 + return
  34 + }
  35 + if msg.IsRead == 1 {
  36 + return
  37 + }
  38 + err = models.UpdateUserMsgSetRead(header.UserId, header.CompanyId, request.MsgType, request.MsgId)
29 if err != nil { 39 if err != nil {
30 log.Error(err) 40 log.Error(err)
31 } 41 }
@@ -35,7 +45,8 @@ func MsgCenterRead(header *protocol.RequestHeader, request *protocol.MsgCenterRe @@ -35,7 +45,8 @@ func MsgCenterRead(header *protocol.RequestHeader, request *protocol.MsgCenterRe
35 //标记全部已读 45 //标记全部已读
36 func MsgCenterAllRead(header *protocol.RequestHeader, request *protocol.MsgCenterAllReadRequest) (rsp *protocol.MsgCenterAllReadResponse, err error) { 46 func MsgCenterAllRead(header *protocol.RequestHeader, request *protocol.MsgCenterAllReadRequest) (rsp *protocol.MsgCenterAllReadResponse, err error) {
37 var () 47 var ()
38 - err = models.UpdateUserMsgSetRead(header.Uid, header.CompanyId, request.MsgType, 0) 48 + rsp = &protocol.MsgCenterAllReadResponse{}
  49 + err = models.UpdateUserMsgSetRead(header.UserId, header.CompanyId, request.MsgType, 0)
39 if err != nil { 50 if err != nil {
40 log.Error(err) 51 log.Error(err)
41 } 52 }
@@ -48,7 +59,7 @@ func MsgInteractive(header *protocol.RequestHeader, request *protocol.MsgInterac @@ -48,7 +59,7 @@ func MsgInteractive(header *protocol.RequestHeader, request *protocol.MsgInterac
48 userMsgs []*models.UserMsg 59 userMsgs []*models.UserMsg
49 ) 60 )
50 rsp = &protocol.MsgInteractiveResponse{} 61 rsp = &protocol.MsgInteractiveResponse{}
51 - userMsgs, rsp.Total, err = models.GetUserMsgs(header.Uid, header.CompanyId, request.MsgType, request.SourceType, request.LastId, request.PageSize) 62 + userMsgs, rsp.Total, err = models.GetUserMsgs(header.UserId, header.CompanyId, request.MsgType, request.SourceType, request.LastId, request.PageSize)
52 if err != nil { 63 if err != nil {
53 log.Error(err) 64 log.Error(err)
54 return 65 return
@@ -60,7 +71,7 @@ func MsgInteractive(header *protocol.RequestHeader, request *protocol.MsgInterac @@ -60,7 +71,7 @@ func MsgInteractive(header *protocol.RequestHeader, request *protocol.MsgInterac
60 for i := range userMsgs { 71 for i := range userMsgs {
61 msg := userMsgs[i] 72 msg := userMsgs[i]
62 userMsg := &protocol.UserMsg{ 73 userMsg := &protocol.UserMsg{
63 - Id: msg.Id, 74 + BulletinId: msg.Id,
64 Content: msg.Message, 75 Content: msg.Message,
65 CreateAt: msg.CreateAt.Unix(), 76 CreateAt: msg.CreateAt.Unix(),
66 IsRead: int(msg.IsRead), 77 IsRead: int(msg.IsRead),
@@ -155,6 +166,7 @@ func AnnouncementRead(header *protocol.RequestHeader, request *protocol.Announce @@ -155,6 +166,7 @@ func AnnouncementRead(header *protocol.RequestHeader, request *protocol.Announce
155 //消息中心-公司公告 166 //消息中心-公司公告
156 func MsgCompanyNotice(header *protocol.RequestHeader, request *protocol.MsgCompanyNoticeRequest) (rsp *protocol.MsgCompanyNoticeResponse, err error) { 167 func MsgCompanyNotice(header *protocol.RequestHeader, request *protocol.MsgCompanyNoticeRequest) (rsp *protocol.MsgCompanyNoticeResponse, err error) {
157 type MsgBulletin struct { 168 type MsgBulletin struct {
  169 + MsgId int64 `orm:"column(msg_id)"`
158 Id int `orm:"column(id)"` 170 Id int `orm:"column(id)"`
159 Title string `orm:"column(title)"` 171 Title string `orm:"column(title)"`
160 UpdateTime int64 `orm:"column(update_at)"` 172 UpdateTime int64 `orm:"column(update_at)"`
@@ -173,11 +185,13 @@ func MsgCompanyNotice(header *protocol.RequestHeader, request *protocol.MsgCompa @@ -173,11 +185,13 @@ func MsgCompanyNotice(header *protocol.RequestHeader, request *protocol.MsgCompa
173 for i := range msgBulletins { 185 for i := range msgBulletins {
174 tmp := msgBulletins[i] 186 tmp := msgBulletins[i]
175 rsp.Lists = append(rsp.Lists, protocol.UserMsg{ 187 rsp.Lists = append(rsp.Lists, protocol.UserMsg{
176 - Id: int64(tmp.Id), 188 + MsgId: tmp.MsgId,
  189 + BulletinId: int64(tmp.Id),
177 SourceType: models.MsgTypeBulletin, 190 SourceType: models.MsgTypeBulletin,
178 Content: tmp.Title, 191 Content: tmp.Title,
179 CreateAt: tmp.UpdateTime, 192 CreateAt: tmp.UpdateTime,
180 IsRead: int(tmp.IsRead), 193 IsRead: int(tmp.IsRead),
  194 + Link: fmt.Sprintf("%v/#/ability/announcement?id=%v&uid=%v&oppo=", beego.AppConfig.String("h5_host"), tmp.Id, header.UserId),
181 }) 195 })
182 } 196 }
183 return 197 return
@@ -241,6 +255,192 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc @@ -241,6 +255,192 @@ func MsgChanceApprove(header *protocol.RequestHeader, request *protocol.MsgChanc
241 return 255 return
242 } 256 }
243 257
  258 +// 消息中心-我提交的
  259 +func MsgChanceSubmit(header *protocol.RequestHeader, request *protocol.MsgChanceSubmitRequest) (rsp *protocol.MsgChanceSubmitResponse, err error) {
  260 + var (
  261 + myChances []protocol.MsgChanceApproveItemOrm
  262 + total int
  263 + provider *protocol.BaseUserInfo
  264 + )
  265 + if total, err = models.GetChanceMsg(header.UserId, request.LastId, request.PageSize, protocol.MsgTypeAuditBy, &myChances); err != nil {
  266 + if err == orm.ErrNoRows {
  267 + err = nil
  268 + return
  269 + }
  270 + log.Error(err)
  271 + return
  272 + }
  273 + rsp = &protocol.MsgChanceSubmitResponse{Total: total}
  274 + for i := 0; i < len(myChances); i++ {
  275 + chance := myChances[i]
  276 + commItem := protocol.CommonListItem{}
  277 + commItem.ReviewStatus = chance.ReviewStatus
  278 + if len(chance.SourceContent) == 0 { //机会删除
  279 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  280 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  281 + commItem.ChanceStatus = protocol.ChanceStatusClose
  282 + } else {
  283 + if provider, err = agg.GetUserBaseInfo(chance.ChanceUserId, header.CompanyId); err != nil {
  284 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  285 + log.Error(err)
  286 + continue
  287 + } else {
  288 + item := protocol.ChanceItem{
  289 + Id: chance.ChanceId,
  290 + Provider: provider,
  291 + CreateTime: chance.CreateTime.Unix() * 1000,
  292 + }
  293 + utils.JsonUnmarshal(chance.SourceContent, &item.FormList)
  294 + item.FormList = agg.ClearEmptyForm(item.FormList)
  295 + utils.JsonUnmarshal(chance.Images, &item.Pictures)
  296 + utils.JsonUnmarshal(chance.Voices, &item.Speechs)
  297 + utils.JsonUnmarshal(chance.Videos, &item.Videos)
  298 + commItem.Chance = item
  299 + }
  300 + }
  301 +
  302 + if chance.ReviewStatus == protocol.ReviewStatusPass {
  303 + var approveData *protocol.ApproveData
  304 + utils.JsonUnmarshal(chance.ApproveData, &approveData)
  305 + if approveData != nil {
  306 + commItem.Score = approveData.Score
  307 + }
  308 + }
  309 + //审核完有审核数据
  310 + commItem.Message = chance.Message
  311 + rsp.List = append(rsp.List, commItem)
  312 + }
  313 + return
  314 +}
  315 +
  316 +// 消息中心-互动消息.评论
  317 +func MsgChanceComment(header *protocol.RequestHeader, request *protocol.MsgChanceCommentRequest) (rsp *protocol.MsgChanceCommentResponse, err error) {
  318 + var (
  319 + myChances []protocol.ChanceCommentItemOrm
  320 + total int
  321 + provider *protocol.BaseUserInfo
  322 + )
  323 + if total, err = models.GetChanceCommentMsg(header.UserId, request.LastId, request.PageSize, protocol.MsgTypeComment, &myChances); err != nil {
  324 + if err == orm.ErrNoRows {
  325 + err = nil
  326 + return
  327 + }
  328 + log.Error(err)
  329 + return
  330 + }
  331 + rsp = &protocol.MsgChanceCommentResponse{Total: total}
  332 + for i := 0; i < len(myChances); i++ {
  333 + chance := myChances[i]
  334 + commItem := protocol.CommonListItem{}
  335 + if chance.SourceType == protocol.SourceTypeChance {
  336 + commItem.ReviewStatus = chance.ReviewStatus
  337 + if len(chance.SourceContent) == 0 { //机会删除
  338 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  339 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  340 + commItem.ChanceStatus = protocol.ChanceStatusClose
  341 + } else {
  342 + if provider, err = agg.GetUserBaseInfo(chance.Uid, header.CompanyId); err != nil {
  343 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  344 + log.Error(err)
  345 + //return
  346 + } else {
  347 + item := protocol.ChanceItem{
  348 + Id: chance.SourceId,
  349 + Provider: provider,
  350 + CreateTime: chance.CreateTime.Unix() * 1000,
  351 + }
  352 + utils.JsonUnmarshal(chance.SourceContent, &item.FormList)
  353 + item.FormList = protocol.ClearEmptyForm(item.FormList)
  354 + utils.JsonUnmarshal(chance.Images, &item.Pictures)
  355 + utils.JsonUnmarshal(chance.Voices, &item.Speechs)
  356 + utils.JsonUnmarshal(chance.Videos, &item.Videos)
  357 + commItem.Chance = item
  358 + }
  359 + }
  360 + commItem.ReviewStatus = chance.ReviewStatus
  361 + }
  362 + if chance.SourceType == protocol.SourceTypeComment {
  363 + commItem.CommentedData = protocol.CommentData{
  364 + Id: chance.SourceId,
  365 + Content: chance.CommentedContent,
  366 + CommentTime: chance.CommentedTime.Unix() * 1000,
  367 + }
  368 + }
  369 + commItem.CommentData = protocol.CommentData{
  370 + Id: chance.CommentId,
  371 + CommentTime: chance.CommentTime.Unix() * 1000,
  372 + Content: chance.CommentContent,
  373 + }
  374 + commItem.SourceType = chance.SourceType
  375 + rsp.List = append(rsp.List, commItem)
  376 + }
  377 + return
  378 +}
  379 +
  380 +//消息中心-互动消息.点赞
  381 +func MsgChanceThumbUp(header *protocol.RequestHeader, request *protocol.MsgChanceThumbUpRequest) (rsp *protocol.MsgChanceThumbUpResponse, err error) {
  382 + var (
  383 + myChances []protocol.ChanceCommentItemOrm
  384 + total int
  385 + provider *protocol.BaseUserInfo
  386 + )
  387 + if total, err = models.GetChanceCommentMsg(header.UserId, request.LastId, request.PageSize, protocol.MsgTypeThumbUp, &myChances); err != nil {
  388 + if err == orm.ErrNoRows {
  389 + err = nil
  390 + return
  391 + }
  392 + log.Error(err)
  393 + return
  394 + }
  395 + rsp = &protocol.MsgChanceThumbUpResponse{Total: total}
  396 + for i := 0; i < len(myChances); i++ {
  397 + chance := myChances[i]
  398 + commItem := protocol.CommonListItem{}
  399 + if chance.SourceType == protocol.SourceTypeChance {
  400 + commItem.ReviewStatus = chance.ReviewStatus
  401 + if len(chance.SourceContent) == 0 { //机会删除
  402 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  403 + } else if chance.ChanceEnableStatus == 0 { //机会关闭
  404 + commItem.ChanceStatus = protocol.ChanceStatusClose
  405 + } else {
  406 + if provider, err = agg.GetUserBaseInfo(chance.Uid, header.CompanyId); err != nil {
  407 + commItem.ChanceStatus = protocol.ChanceStatusDelete
  408 + log.Error(err)
  409 + //return
  410 + } else {
  411 + item := protocol.ChanceItem{
  412 + Id: chance.SourceId,
  413 + Provider: provider,
  414 + CreateTime: chance.CreateTime.Unix() * 1000,
  415 + }
  416 + utils.JsonUnmarshal(chance.SourceContent, &item.FormList)
  417 + item.FormList = protocol.ClearEmptyForm(item.FormList)
  418 + utils.JsonUnmarshal(chance.Images, &item.Pictures)
  419 + utils.JsonUnmarshal(chance.Voices, &item.Speechs)
  420 + utils.JsonUnmarshal(chance.Videos, &item.Videos)
  421 + commItem.Chance = item
  422 + }
  423 + }
  424 + commItem.ReviewStatus = chance.ReviewStatus
  425 + }
  426 + if chance.SourceType == protocol.SourceTypeComment {
  427 + commItem.CommentedData = protocol.CommentData{
  428 + Id: chance.SourceId,
  429 + Content: chance.CommentedContent,
  430 + CommentTime: chance.CommentedTime.Unix() * 1000,
  431 + }
  432 + }
  433 + commItem.ThumbUpData = protocol.ThumbUpData{
  434 + Id: chance.CommentId,
  435 + ThumbUpTime: chance.CommentTime.Unix() * 1000,
  436 + Content: chance.CommentContent,
  437 + }
  438 + commItem.SourceType = chance.SourceType
  439 + rsp.List = append(rsp.List, commItem)
  440 + }
  441 + return
  442 +}
  443 +
244 //H5公告详情 444 //H5公告详情
245 func H5Announcement(header *protocol.RequestHeader, request *protocol.AnnouncementRequest) (rsp *protocol.AnnouncementResponse, err error) { 445 func H5Announcement(header *protocol.RequestHeader, request *protocol.AnnouncementRequest) (rsp *protocol.AnnouncementResponse, err error) {
246 var ( 446 var (
@@ -299,7 +499,10 @@ func H5Announcement(header *protocol.RequestHeader, request *protocol.Announceme @@ -299,7 +499,10 @@ func H5Announcement(header *protocol.RequestHeader, request *protocol.Announceme
299 return 499 return
300 } 500 }
301 if userMsg.IsRead == 0 { //判断是否可以置为 已读 501 if userMsg.IsRead == 0 { //判断是否可以置为 已读
302 - if bulletin.AllowClose == 2 && bulletin != nil && bulletin.Id != 0 { 502 + //if bulletin.AllowClose == 2 && bulletin != nil && bulletin.Id != 0 {
  503 + // setRead = true
  504 + //}
  505 + if bulletin.AllowClose == 0 {
303 setRead = true 506 setRead = true
304 } 507 }
305 } 508 }
@@ -373,6 +373,21 @@ func UserStatistics(header *protocol.RequestHeader, request *protocol.UserStatis @@ -373,6 +373,21 @@ func UserStatistics(header *protocol.RequestHeader, request *protocol.UserStatis
373 for flag = 1; flag <= (protocol.MyAuditChanceReturn); flag = flag << 1 { 373 for flag = 1; flag <= (protocol.MyAuditChanceReturn); flag = flag << 1 {
374 total = 0 374 total = 0
375 switch flag { 375 switch flag {
  376 + case protocol.CollectStatic: //收藏
  377 + if total, err = models.GetChanceCollect(header.UserId, 0, 0, nil); err != nil {
  378 + log.Error(err)
  379 + }
  380 + break
  381 + case protocol.ZanStatic: //点赞
  382 + if total, err = models.GetChanceThumbUp(header.UserId, 0, 0, nil); err != nil {
  383 + log.Error(err)
  384 + }
  385 + break
  386 + case protocol.CommentStatic: //评论
  387 + if total, err = models.GetChanceComment(header.UserId, 0, 0, nil); err != nil {
  388 + log.Error(err)
  389 + }
  390 + break
376 case protocol.MyCommitChance: 391 case protocol.MyCommitChance:
377 if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil { 392 if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil {
378 log.Error(err) 393 log.Error(err)