正在显示
14 个修改的文件
包含
666 行增加
和
65 行删除
controllers/v1/achievement.go
0 → 100644
| 1 | +package v1 | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "encoding/json" | ||
| 5 | + | ||
| 6 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 7 | + "opp/controllers" | ||
| 8 | + "opp/protocol" | ||
| 9 | + "opp/services/chance" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +//成果 | ||
| 13 | +type AchievementController struct { | ||
| 14 | + controllers.BaseController | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +//AchievementPool 成果池 | ||
| 18 | +// @router /achievementPool [post] | ||
| 19 | +func (this *AchievementController) AchievementPool() { | ||
| 20 | + var msg *protocol.ResponseMessage | ||
| 21 | + defer func() { | ||
| 22 | + this.Resp(msg) | ||
| 23 | + }() | ||
| 24 | + var request *protocol.AchievementPoolRequest | ||
| 25 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 26 | + log.Error(err) | ||
| 27 | + msg = protocol.BadRequestParam(1) | ||
| 28 | + return | ||
| 29 | + } | ||
| 30 | + if b, m := this.Valid(request); !b { | ||
| 31 | + msg = m | ||
| 32 | + return | ||
| 33 | + } | ||
| 34 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 35 | + msg = protocol.NewReturnResponse(chance.AchievementPool(header, request)) | ||
| 36 | +} | ||
| 37 | + | ||
| 38 | +//MyGrasp 我把握的 | ||
| 39 | +// @router /myGrasp [post] | ||
| 40 | +func (this *AchievementController) MyGrasp() { | ||
| 41 | + var msg *protocol.ResponseMessage | ||
| 42 | + defer func() { | ||
| 43 | + this.Resp(msg) | ||
| 44 | + }() | ||
| 45 | + var request *protocol.MyGraspRequest | ||
| 46 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 47 | + log.Error(err) | ||
| 48 | + msg = protocol.BadRequestParam(1) | ||
| 49 | + return | ||
| 50 | + } | ||
| 51 | + if b, m := this.Valid(request); !b { | ||
| 52 | + msg = m | ||
| 53 | + return | ||
| 54 | + } | ||
| 55 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 56 | + msg = protocol.NewReturnResponse(chance.MyGrasp(header, request)) | ||
| 57 | +} | ||
| 58 | + | ||
| 59 | +//AchievementDetail 成果详情 | ||
| 60 | +// @router /achievementDetail [post] | ||
| 61 | +func (this *AchievementController) AchievementDetail() { | ||
| 62 | + var msg *protocol.ResponseMessage | ||
| 63 | + defer func() { | ||
| 64 | + this.Resp(msg) | ||
| 65 | + }() | ||
| 66 | + var request *protocol.AchievementDetailRequest | ||
| 67 | + if err := json.Unmarshal(this.ByteBody, &request); err != nil { | ||
| 68 | + log.Error(err) | ||
| 69 | + msg = protocol.BadRequestParam(1) | ||
| 70 | + return | ||
| 71 | + } | ||
| 72 | + if b, m := this.Valid(request); !b { | ||
| 73 | + msg = m | ||
| 74 | + return | ||
| 75 | + } | ||
| 76 | + header := controllers.GetRequestHeader(this.Ctx) | ||
| 77 | + msg = protocol.NewReturnResponse(chance.AchievementDetail(header, request)) | ||
| 78 | +} |
models/achievement.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "bytes" | ||
| 5 | + "fmt" | ||
| 6 | + "opp/internal/utils" | ||
| 7 | + "time" | ||
| 8 | + | ||
| 9 | + "github.com/astaxie/beego/orm" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +type Achievement struct { | ||
| 13 | + Id int64 `orm:"column(id);pk" description:"id 主键"` | ||
| 14 | + CompanyId int64 `orm:"column(company_id);null" description:"公司编号 表company.id"` | ||
| 15 | + UserCompanyId int64 `orm:"column(user_company_id)" description:"把握人 表user_company.id id"` | ||
| 16 | + ChanceTypeId int `orm:"column(chance_type_id);null" description:"表chance_type.id 机会类型 "` | ||
| 17 | + AuditTemplateId int `orm:"column(audit_template_id);null" description:"表audit_template.id 所属审批模板编号"` | ||
| 18 | + SourceContent string `orm:"column(source_content);null" description:"成果详情文本"` | ||
| 19 | + GraspScore float64 `orm:"column(grasp_score);digits(4);decimals(1)" description:"把握分"` | ||
| 20 | + UserGraspScore float64 `orm:"column(user_grasp_score);digits(4);decimals(1)" description:"把握人得分"` | ||
| 21 | + UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"` | ||
| 22 | + CreateAt time.Time `orm:"column(create_at);type(timestamp)" description:"创建时间"` | ||
| 23 | + ViewTotal int `orm:"column(view_total);null" description:"查看总数"` | ||
| 24 | + CommentTotal int `orm:"column(comment_total);null" description:"评论总数"` | ||
| 25 | + ZanTotal int `orm:"column(zan_total);null" description:"点赞总数"` | ||
| 26 | + Status int8 `orm:"column(status);null" description:"机会状态 1:开启 2:关闭 0:删除"` | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +func (t *Achievement) TableName() string { | ||
| 30 | + return "new_achievement" | ||
| 31 | +} | ||
| 32 | + | ||
| 33 | +func init() { | ||
| 34 | + orm.RegisterModel(new(Achievement)) | ||
| 35 | +} | ||
| 36 | + | ||
| 37 | +// GetAchievementById retrieves Achievement by Id. Returns error if | ||
| 38 | +// Id doesn't exist | ||
| 39 | +func GetAchievementById(id int64) (v *Achievement, err error) { | ||
| 40 | + o := orm.NewOrm() | ||
| 41 | + v = &Achievement{Id: id} | ||
| 42 | + if err = o.Read(v); err == nil { | ||
| 43 | + return v, nil | ||
| 44 | + } | ||
| 45 | + return nil, err | ||
| 46 | +} | ||
| 47 | + | ||
| 48 | +// UpdateAchievement updates Achievement by Id and returns error if | ||
| 49 | +// the record to be updated doesn't exist | ||
| 50 | +func UpdateAchievementById(m *Achievement) (err error) { | ||
| 51 | + o := orm.NewOrm() | ||
| 52 | + v := Achievement{Id: m.Id} | ||
| 53 | + // ascertain id exists in the database | ||
| 54 | + if err = o.Read(&v); err == nil { | ||
| 55 | + var num int64 | ||
| 56 | + if num, err = o.Update(m); err == nil { | ||
| 57 | + fmt.Println("Number of records updated in database:", num) | ||
| 58 | + } | ||
| 59 | + } | ||
| 60 | + return | ||
| 61 | +} | ||
| 62 | + | ||
| 63 | +//成果列表 | ||
| 64 | +//@uid 成果把握人 | ||
| 65 | +//@cid 公司编号 | ||
| 66 | +//@lastId 最后编号 | ||
| 67 | +//@chanceTypeId 机会一级分类编号 | ||
| 68 | +//@departmentId 部门编号 | ||
| 69 | +func GetAchievementAll(uid, cid int64, chanceTypeId int, lastId int64, departmentId int, pageSize int, v interface{}) (total int, err error) { | ||
| 70 | + var whereString bytes.Buffer | ||
| 71 | + if departmentId > 0 { | ||
| 72 | + | ||
| 73 | + } | ||
| 74 | + if uid > 0 { | ||
| 75 | + whereString.WriteString(fmt.Sprintf(` and user_company_id=%v `, uid)) | ||
| 76 | + } | ||
| 77 | + sql := fmt.Sprintf(` | ||
| 78 | +select id,user_company_id,create_at,source_content,audit_template_id,chance_type_id,grasp_score,user_grasp_score,comment_total,zan_total,view_total,images from new_achievement | ||
| 79 | +where company_id=%v and (%v=0 or id<%v) and (%v=0 or chance_type_id =%v) and status=1 %v | ||
| 80 | +order by create_at desc | ||
| 81 | +limit %v | ||
| 82 | +`, cid, lastId, lastId, chanceTypeId, chanceTypeId, whereString.String(), pageSize) | ||
| 83 | + | ||
| 84 | + sqlCount := fmt.Sprintf(` | ||
| 85 | +select count(0) from new_achievement | ||
| 86 | +where company_id=%v and (%v=0 or chance_type_id =%v) and status=1 %v | ||
| 87 | +`, cid, chanceTypeId, chanceTypeId, whereString.String()) | ||
| 88 | + | ||
| 89 | + if err = utils.ExecuteQueryOne(&total, sqlCount); err != nil { | ||
| 90 | + return | ||
| 91 | + } | ||
| 92 | + if v != nil { | ||
| 93 | + if err = utils.ExecuteQueryAll(v, sql); err != nil { | ||
| 94 | + return | ||
| 95 | + } | ||
| 96 | + } | ||
| 97 | + return | ||
| 98 | +} | ||
| 99 | + | ||
| 100 | +//成果详情 | ||
| 101 | +func GetCommAchievementItemOrmId(id int64, v interface{}) (err error) { | ||
| 102 | + o := orm.NewOrm() | ||
| 103 | + sql := "select * from new_achievement where id=?" | ||
| 104 | + if _, err = o.Raw(sql, id).QueryRows(v); err == nil { | ||
| 105 | + return nil | ||
| 106 | + } | ||
| 107 | + return err | ||
| 108 | +} |
models/achievement_chance.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "time" | ||
| 5 | + | ||
| 6 | + "github.com/astaxie/beego/orm" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type AchievementChance struct { | ||
| 10 | + Id int64 `orm:"column(id);pk"` | ||
| 11 | + AchievementId int64 `orm:"column(achievement_id);null" description:"成果编号 表achievement.id"` | ||
| 12 | + ChanceId int64 `orm:"column(chance_id);null" description:"机会编号 表chance.id"` | ||
| 13 | + ChanceCode string `orm:"column(chance_code);size(255);null" description:"机会编号 表chance.code"` | ||
| 14 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (t *AchievementChance) TableName() string { | ||
| 18 | + return "new_achievement_chance" | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func init() { | ||
| 22 | + orm.RegisterModel(new(AchievementChance)) | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +// GetAchievementChanceById retrieves AchievementChance by Id. Returns error if | ||
| 26 | +// Id doesn't exist | ||
| 27 | +func GetAchievementChanceById(id int64) (v *AchievementChance, err error) { | ||
| 28 | + o := orm.NewOrm() | ||
| 29 | + v = &AchievementChance{Id: id} | ||
| 30 | + if err = o.Read(v); err == nil { | ||
| 31 | + return v, nil | ||
| 32 | + } | ||
| 33 | + return nil, err | ||
| 34 | +} |
models/achievement_provider.go
0 → 100644
| 1 | +package models | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "time" | ||
| 5 | + | ||
| 6 | + "github.com/astaxie/beego/orm" | ||
| 7 | +) | ||
| 8 | + | ||
| 9 | +type AchievementProvider struct { | ||
| 10 | + Id int64 `orm:"column(id);pk" description:"主键id"` | ||
| 11 | + AchievementId int64 `orm:"column(achievement_id);null" description:"表achievement.id"` | ||
| 12 | + UserCompanyId int64 `orm:"column(user_company_id);null" description:"user_company.id"` | ||
| 13 | + UserGraspScore float64 `orm:"column(user_grasp_score);null;digits(4);decimals(1)" description:"把握人得分"` | ||
| 14 | + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"` | ||
| 15 | +} | ||
| 16 | + | ||
| 17 | +func (t *AchievementProvider) TableName() string { | ||
| 18 | + return "new_achievement_provider" | ||
| 19 | +} | ||
| 20 | + | ||
| 21 | +func init() { | ||
| 22 | + orm.RegisterModel(new(AchievementProvider)) | ||
| 23 | +} | ||
| 24 | + | ||
| 25 | +// GetAchievementProviderById retrieves AchievementProvider by Id. Returns error if | ||
| 26 | +// Id doesn't exist | ||
| 27 | +func GetAchievementProviderById(id int64) (v *AchievementProvider, err error) { | ||
| 28 | + o := orm.NewOrm() | ||
| 29 | + v = &AchievementProvider{Id: id} | ||
| 30 | + if err = o.Read(v); err == nil { | ||
| 31 | + return v, nil | ||
| 32 | + } | ||
| 33 | + return nil, err | ||
| 34 | +} | ||
| 35 | + | ||
| 36 | +//查询成果提供者列表 | ||
| 37 | +func GetAchievementProviders(achievementId int64) (v []*AchievementProvider, err error) { | ||
| 38 | + o := orm.NewOrm() | ||
| 39 | + sql := "select * from new_achievement_provider where achievement_id=?" | ||
| 40 | + if _, err = o.Raw(sql, achievementId).QueryRows(&v); err == nil { | ||
| 41 | + return v, nil | ||
| 42 | + } | ||
| 43 | + return nil, err | ||
| 44 | +} |
protocol/achievement.go
0 → 100644
| 1 | +package protocol | ||
| 2 | + | ||
| 3 | +import "time" | ||
| 4 | + | ||
| 5 | +const ( | ||
| 6 | + Grasper = 1 //把握人 | ||
| 7 | + Provider = 2 //提供者 | ||
| 8 | +) | ||
| 9 | + | ||
| 10 | +//成果项 | ||
| 11 | +type AchievementItem struct { | ||
| 12 | + Id int64 `json:"id"` | ||
| 13 | + CreateTime int64 `json:"createTime"` | ||
| 14 | + Provider *BaseUserInfo `json:"provider"` | ||
| 15 | + Content string `json:"content"` | ||
| 16 | + Pictures []Picture `json:"pictures"` | ||
| 17 | + GraspScore float64 `json:"graspScore"` //把握分 | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +//机会列表 通用项 | ||
| 21 | +type AchievementCommonListItem struct { | ||
| 22 | + Achievement AchievementItem `json:"achievement,omitempty"` //成果详情 | ||
| 23 | + StatisticData interface{} `json:"statisticData,omitempty"` //统计数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData | ||
| 24 | + //我审核的-通过 | ||
| 25 | + Score interface{} `json:"score,omitempty"` | ||
| 26 | + //模板 | ||
| 27 | + ChanceType interface{} `json:"chanceType,omitempty"` //机会类型 | ||
| 28 | + ChanceTemplate interface{} `json:"template,omitempty"` //机会模板 | ||
| 29 | + | ||
| 30 | + Message interface{} `json:"message,omitempty"` //消息 | ||
| 31 | + CommentData interface{} `json:"commentData,omitempty"` //评论 | ||
| 32 | + CollectData interface{} `json:"collectData,omitempty"` //收藏数据 | ||
| 33 | + ThumbUpData interface{} `json:"thumbUpData,omitempty"` //点赞数据 | ||
| 34 | + //我评论的 评论数据 | ||
| 35 | + CommentedData interface{} `json:"commentedData,omitempty"` | ||
| 36 | + | ||
| 37 | + SourceType int `json:"sourceType,omitempty"` //类型 1:机会 2:评论 | ||
| 38 | + Status int `json:"-"` //0:删除 1:开启 2:关闭 | ||
| 39 | +} | ||
| 40 | + | ||
| 41 | +/*AchievementPool 成果池*/ | ||
| 42 | +type AchievementPoolRequest struct { | ||
| 43 | + UserId int64 `json:"userId"` | ||
| 44 | + LastId int64 `json:"lastId"` | ||
| 45 | + PageSize int `json:"pageSize" valid:"Required"` | ||
| 46 | + ChanceTypeId int `json:"chanceTypeId"` //0:所有机会 编号:对应机会类型编号的机会 | ||
| 47 | + DepartmentId int `json:"departmentId"` | ||
| 48 | +} | ||
| 49 | +type AchievementPoolResponse struct { | ||
| 50 | + List []*AchievementCommonListItem `json:"list"` | ||
| 51 | + Total int `json:"total"` | ||
| 52 | +} | ||
| 53 | + | ||
| 54 | +//通用 机会orm对象 | ||
| 55 | +type CommAchievementItemOrm struct { | ||
| 56 | + AchievementItemOrm | ||
| 57 | + StaticDataOrm | ||
| 58 | +} | ||
| 59 | +type AchievementItemOrm struct { | ||
| 60 | + AchievementId int64 `orm:"column(id)"` | ||
| 61 | + UserId int64 `orm:"column(user_company_id)"` | ||
| 62 | + CreateTime time.Time `orm:"column(create_at)"` | ||
| 63 | + SourceContent string `orm:"column(source_content)"` | ||
| 64 | + Images string `orm:"column(images)"` | ||
| 65 | + GraspScore float64 `orm:"column(grasp_score)"` | ||
| 66 | + UserGraspScore float64 `orm:"column(user_grasp_score)"` | ||
| 67 | + | ||
| 68 | + TemplateId int `orm:"column(audit_template_id)"` | ||
| 69 | + ChanceTypeId int `orm:"column(chance_type_id)"` | ||
| 70 | + Status int `orm:"column(status)"` | ||
| 71 | +} | ||
| 72 | + | ||
| 73 | +type StaticDataOrm struct { | ||
| 74 | + CommentTotal int `orm:"column(comment_total)"` | ||
| 75 | + ZanTotal int `orm:"column(zan_total)"` | ||
| 76 | + ViewTotal int `orm:"column(view_total)"` | ||
| 77 | +} | ||
| 78 | + | ||
| 79 | +//机会池收藏列表项 | ||
| 80 | +//type AchievementsOrm struct { | ||
| 81 | +// CommAchievementItemOrm | ||
| 82 | +//} | ||
| 83 | + | ||
| 84 | +/*MyGrasp 我把握的*/ | ||
| 85 | +type MyGraspRequest struct { | ||
| 86 | + AchievementPoolRequest | ||
| 87 | +} | ||
| 88 | +type MyGraspResponse struct { | ||
| 89 | + AchievementPoolResponse | ||
| 90 | +} | ||
| 91 | + | ||
| 92 | +/*AchievementDetail 成果详情*/ | ||
| 93 | +type AchievementDetailRequest struct { | ||
| 94 | + Id int64 `json:"id" valid:"Required"` | ||
| 95 | +} | ||
| 96 | +type AchievementDetailResponse struct { | ||
| 97 | + Achievement AchievementItem `json:"achievement,omitempty"` //成果详情 | ||
| 98 | + StatisticData interface{} `json:"statisticData,omitempty"` //统计数据(是否收藏/点赞 浏览数 点赞总数 评论数 | ||
| 99 | + //模板 | ||
| 100 | + ChanceType interface{} `json:"chanceType,omitempty"` //机会类型 | ||
| 101 | + ChanceTemplate interface{} `json:"template,omitempty"` //机会模板 | ||
| 102 | + Status int `json:"-"` //0:删除 1:开启 2:关闭 | ||
| 103 | + SourceChance []ChanceItem `json:"sourceChance"` //机会来源 | ||
| 104 | + Participants []UserGraspInfo //参与人 | ||
| 105 | +} | ||
| 106 | + | ||
| 107 | +type UserGraspInfo struct { | ||
| 108 | + Provider *BaseUserInfo `json:"provider"` | ||
| 109 | + GraspScore float64 `json:"graspScore"` //把握分 | ||
| 110 | + Type int `json:"type"` //1:把握人 2:提供者 | ||
| 111 | +} |
| 1 | package protocol | 1 | package protocol |
| 2 | 2 | ||
| 3 | const ( | 3 | const ( |
| 4 | - SourceTypeChance = 1 | ||
| 5 | - SourceTypeComment = 2 | ||
| 6 | - SourceTypeBulletin = 3 | 4 | + SourceTypeChance = 1 //机会 |
| 5 | + SourceTypeComment = 2 //机会评论 | ||
| 6 | + SourceTypeBulletin = 3 | ||
| 7 | + SourceTypeAchievement = 4 //成果 | ||
| 8 | + SourceTypeAchievementComment = 5 //成果评论 | ||
| 7 | ) | 9 | ) |
| 8 | 10 | ||
| 9 | /*IComment */ | 11 | /*IComment */ |
| @@ -37,6 +37,7 @@ const ( | @@ -37,6 +37,7 @@ const ( | ||
| 37 | MyAuditChanceWait //我审核的机会-待我审批 | 37 | MyAuditChanceWait //我审核的机会-待我审批 |
| 38 | MyAuditChancePass //我审核的机会-已通过 | 38 | MyAuditChancePass //我审核的机会-已通过 |
| 39 | MyAuditChanceReturn //我审核的机会-已退回 | 39 | MyAuditChanceReturn //我审核的机会-已退回 |
| 40 | + MyGraspAchievement //我把握的成果 | ||
| 40 | ) | 41 | ) |
| 41 | 42 | ||
| 42 | var MapStaticName map[int64]string | 43 | var MapStaticName map[int64]string |
| @@ -7,6 +7,30 @@ import ( | @@ -7,6 +7,30 @@ import ( | ||
| 7 | 7 | ||
| 8 | func init() { | 8 | func init() { |
| 9 | 9 | ||
| 10 | + beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"], | ||
| 11 | + beego.ControllerComments{ | ||
| 12 | + Method: "AchievementDetail", | ||
| 13 | + Router: `/achievementDetail`, | ||
| 14 | + AllowHTTPMethods: []string{"post"}, | ||
| 15 | + MethodParams: param.Make(), | ||
| 16 | + Params: nil}) | ||
| 17 | + | ||
| 18 | + beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"], | ||
| 19 | + beego.ControllerComments{ | ||
| 20 | + Method: "AchievementPool", | ||
| 21 | + Router: `/achievementPool`, | ||
| 22 | + AllowHTTPMethods: []string{"post"}, | ||
| 23 | + MethodParams: param.Make(), | ||
| 24 | + Params: nil}) | ||
| 25 | + | ||
| 26 | + beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AchievementController"], | ||
| 27 | + beego.ControllerComments{ | ||
| 28 | + Method: "MyGrasp", | ||
| 29 | + Router: `/myGrasp`, | ||
| 30 | + AllowHTTPMethods: []string{"post"}, | ||
| 31 | + MethodParams: param.Make(), | ||
| 32 | + Params: nil}) | ||
| 33 | + | ||
| 10 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], | 34 | beego.GlobalControllerRouter["opp/controllers/v1:AuthController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:AuthController"], |
| 11 | beego.ControllerComments{ | 35 | beego.ControllerComments{ |
| 12 | Method: "AccessToken", | 36 | Method: "AccessToken", |
| @@ -24,6 +24,7 @@ func init() { | @@ -24,6 +24,7 @@ func init() { | ||
| 24 | beego.NSNamespace("department", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.DepartmentController{})), | 24 | beego.NSNamespace("department", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.DepartmentController{})), |
| 25 | beego.NSNamespace("config", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.ConfigController{})), | 25 | beego.NSNamespace("config", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.ConfigController{})), |
| 26 | beego.NSNamespace("file", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.FileController{})), | 26 | beego.NSNamespace("file", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.FileController{})), |
| 27 | + beego.NSNamespace("achievement", beego.NSBefore(controllers.FilterComm), beego.NSInclude(&v1.AchievementController{})), | ||
| 27 | ) | 28 | ) |
| 28 | beego.AddNamespace(nsV1) | 29 | beego.AddNamespace(nsV1) |
| 29 | 30 |
| @@ -195,6 +195,21 @@ func GetChanceMarkData(userId, companyId int64, sourceId int64) (flag int, err e | @@ -195,6 +195,21 @@ func GetChanceMarkData(userId, companyId int64, sourceId int64) (flag int, err e | ||
| 195 | return v.MarkFlag, nil | 195 | return v.MarkFlag, nil |
| 196 | } | 196 | } |
| 197 | 197 | ||
| 198 | +//获取机会标记数据 点赞 / 收藏 | ||
| 199 | +func GetMarkData(userId, companyId int64, sourceId int64, sourceType int) (flag int, err error) { | ||
| 200 | + var ( | ||
| 201 | + v *models.ChanceFavorite | ||
| 202 | + ) | ||
| 203 | + if v, err = models.GetChanceFavorite(userId, companyId, sourceId, sourceType); err != nil { | ||
| 204 | + if err == orm.ErrNoRows { | ||
| 205 | + //log.Error(userId, companyId, sourceId, err) | ||
| 206 | + return 0, nil | ||
| 207 | + } | ||
| 208 | + return | ||
| 209 | + } | ||
| 210 | + return v.MarkFlag, nil | ||
| 211 | +} | ||
| 212 | + | ||
| 198 | //构建统计sql语句 | 213 | //构建统计sql语句 |
| 199 | func GetIncrementSql(table string, column string, incre int, id int64) *utils.SqlData { | 214 | func GetIncrementSql(table string, column string, incre int, id int64) *utils.SqlData { |
| 200 | var sql *bytes.Buffer | 215 | var sql *bytes.Buffer |
| @@ -45,3 +45,17 @@ func MyApproveEnableStatic(header *protocol.RequestHeader, reviewStatus ...int8) | @@ -45,3 +45,17 @@ func MyApproveEnableStatic(header *protocol.RequestHeader, reviewStatus ...int8) | ||
| 45 | } | 45 | } |
| 46 | return | 46 | return |
| 47 | } | 47 | } |
| 48 | + | ||
| 49 | +//我把握的统计 | ||
| 50 | +func MyGraspStatic(header *protocol.RequestHeader) (total int, err error) { | ||
| 51 | + var () | ||
| 52 | + if total, err = models.GetAchievementAll(header.UserId, header.CompanyId, 0, 0, 0, 0, nil); err != nil { | ||
| 53 | + if err == orm.ErrNoRows { | ||
| 54 | + err = nil | ||
| 55 | + return | ||
| 56 | + } | ||
| 57 | + log.Error(err) | ||
| 58 | + return | ||
| 59 | + } | ||
| 60 | + return | ||
| 61 | +} |
services/chance/achievement.go
0 → 100644
| 1 | +package chance | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/astaxie/beego/orm" | ||
| 5 | + "opp/internal/utils" | ||
| 6 | + "opp/models" | ||
| 7 | + "opp/protocol" | ||
| 8 | + "opp/services/agg" | ||
| 9 | + | ||
| 10 | + "gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log" | ||
| 11 | +) | ||
| 12 | + | ||
| 13 | +//成果池 | ||
| 14 | +func AchievementPool(header *protocol.RequestHeader, request *protocol.AchievementPoolRequest) (rsp *protocol.AchievementPoolResponse, err error) { | ||
| 15 | + var ( | ||
| 16 | + ormItems []protocol.CommAchievementItemOrm | ||
| 17 | + total int | ||
| 18 | + ) | ||
| 19 | + rsp = &protocol.AchievementPoolResponse{} | ||
| 20 | + rsp.List = make([]*protocol.AchievementCommonListItem, 0) | ||
| 21 | + if total, err = models.GetAchievementAll(request.UserId, header.CompanyId, request.ChanceTypeId, request.LastId, request.DepartmentId, request.PageSize, &ormItems); err != nil { | ||
| 22 | + if err == orm.ErrNoRows { | ||
| 23 | + err = nil | ||
| 24 | + return | ||
| 25 | + } | ||
| 26 | + log.Error(err) | ||
| 27 | + return | ||
| 28 | + } | ||
| 29 | + rsp.Total = total | ||
| 30 | + for i := range ormItems { | ||
| 31 | + item := ormItems[i] | ||
| 32 | + rspItem := &protocol.AchievementCommonListItem{ | ||
| 33 | + Achievement: GetAchievementItem(header, item), | ||
| 34 | + StatisticData: GetStatisticData(header, item.StaticDataOrm, item.AchievementId), | ||
| 35 | + ChanceTemplate: getTemplate(item.TemplateId), | ||
| 36 | + ChanceType: getChanceType(item.ChanceTypeId), | ||
| 37 | + } | ||
| 38 | + rsp.List = append(rsp.List, rspItem) | ||
| 39 | + } | ||
| 40 | + return | ||
| 41 | +} | ||
| 42 | + | ||
| 43 | +//获取成果项 | ||
| 44 | +func GetAchievementItem(header *protocol.RequestHeader, from protocol.CommAchievementItemOrm) (item protocol.AchievementItem) { | ||
| 45 | + var ( | ||
| 46 | + provider *protocol.BaseUserInfo | ||
| 47 | + err error | ||
| 48 | + ) | ||
| 49 | + if from.UserId > 0 { | ||
| 50 | + if provider, err = agg.GetUserBaseInfo(from.UserId, header.CompanyId); err != nil { | ||
| 51 | + log.Error(err) | ||
| 52 | + return | ||
| 53 | + } else { | ||
| 54 | + item = protocol.AchievementItem{ | ||
| 55 | + Id: from.AchievementId, | ||
| 56 | + Provider: provider, | ||
| 57 | + CreateTime: from.CreateTime.Unix() * 1000, | ||
| 58 | + Content: from.SourceContent, | ||
| 59 | + GraspScore: from.GraspScore, | ||
| 60 | + } | ||
| 61 | + jsonUnmarshal(from.Images, &item.Pictures) | ||
| 62 | + } | ||
| 63 | + } | ||
| 64 | + return | ||
| 65 | +} | ||
| 66 | + | ||
| 67 | +//获取统计数据 | ||
| 68 | +func GetStatisticData(header *protocol.RequestHeader, from protocol.StaticDataOrm, sourceId int64) (chanceData protocol.ChanceData) { | ||
| 69 | + chanceData = protocol.ChanceData{ | ||
| 70 | + ThumbsUpTotal: from.ZanTotal, | ||
| 71 | + CommentTotal: from.CommentTotal, | ||
| 72 | + PageViewTotal: from.ViewTotal, | ||
| 73 | + } | ||
| 74 | + chanceData.IsThumbsUp, chanceData.IsCollect, _ = getMarkFlag(header, sourceId, protocol.SourceTypeAchievement) | ||
| 75 | + return | ||
| 76 | +} | ||
| 77 | + | ||
| 78 | +//我把握的 | ||
| 79 | +func MyGrasp(header *protocol.RequestHeader, request *protocol.MyGraspRequest) (rsp *protocol.MyGraspResponse, err error) { | ||
| 80 | + var ( | ||
| 81 | + achievementPool *protocol.AchievementPoolResponse | ||
| 82 | + ) | ||
| 83 | + request.UserId = header.UserId | ||
| 84 | + if achievementPool, err = AchievementPool(header, &request.AchievementPoolRequest); err != nil { | ||
| 85 | + log.Error(err) | ||
| 86 | + return | ||
| 87 | + } | ||
| 88 | + rsp = &protocol.MyGraspResponse{} | ||
| 89 | + rsp.AchievementPoolResponse = *achievementPool | ||
| 90 | + return | ||
| 91 | +} | ||
| 92 | + | ||
| 93 | +//成果详情 | ||
| 94 | +func AchievementDetail(header *protocol.RequestHeader, request *protocol.AchievementDetailRequest) (rsp *protocol.AchievementDetailResponse, err error) { | ||
| 95 | + var ( | ||
| 96 | + items []protocol.CommAchievementItemOrm | ||
| 97 | + participants []*models.AchievementProvider | ||
| 98 | + ) | ||
| 99 | + if err = models.GetCommAchievementItemOrmId(request.Id, &items); err != nil { | ||
| 100 | + log.Error(err) | ||
| 101 | + return | ||
| 102 | + } | ||
| 103 | + if len(items) == 0 { | ||
| 104 | + err = protocol.NewErrWithMessage(1) | ||
| 105 | + log.Error("items not empty", request.Id) | ||
| 106 | + return | ||
| 107 | + } | ||
| 108 | + item := items[0] | ||
| 109 | + if item.Status != 1 { | ||
| 110 | + //错误 成果删除或关闭 | ||
| 111 | + } | ||
| 112 | + rsp = &protocol.AchievementDetailResponse{} | ||
| 113 | + { | ||
| 114 | + rsp.Achievement = GetAchievementItem(header, item) | ||
| 115 | + rsp.StatisticData = GetStatisticData(header, item.StaticDataOrm, item.AchievementId) | ||
| 116 | + rsp.ChanceTemplate = getTemplate(item.TemplateId) | ||
| 117 | + rsp.ChanceType = getChanceType(item.ChanceTypeId) | ||
| 118 | + } | ||
| 119 | + | ||
| 120 | + if participants, err = models.GetAchievementProviders(request.Id); err != nil && err != orm.ErrNoRows { | ||
| 121 | + log.Error(err) | ||
| 122 | + return | ||
| 123 | + } | ||
| 124 | + newParticipant := func(user *protocol.BaseUserInfo, score float64, t int) protocol.UserGraspInfo { | ||
| 125 | + return protocol.UserGraspInfo{ | ||
| 126 | + Provider: user, | ||
| 127 | + GraspScore: score, | ||
| 128 | + Type: t, | ||
| 129 | + } | ||
| 130 | + } | ||
| 131 | + addParticipants := func(item protocol.UserGraspInfo) { | ||
| 132 | + rsp.Participants = append(rsp.Participants, item) | ||
| 133 | + } | ||
| 134 | + addParticipants(newParticipant(rsp.Achievement.Provider, item.UserGraspScore, protocol.Grasper)) | ||
| 135 | + for i := range participants { | ||
| 136 | + p := participants[i] | ||
| 137 | + if provider, e := agg.GetUserBaseInfo(p.UserCompanyId, header.CompanyId); e != nil { | ||
| 138 | + log.Error(e) | ||
| 139 | + return | ||
| 140 | + } else { | ||
| 141 | + addParticipants(newParticipant(provider, p.UserGraspScore, protocol.Provider)) | ||
| 142 | + } | ||
| 143 | + } | ||
| 144 | + | ||
| 145 | + //查看数量 | ||
| 146 | + utils.ExecuteSqlByRoll(true, agg.GetIncrementSql((&models.Achievement{}).TableName(), "view_total", 1, request.Id)) | ||
| 147 | + | ||
| 148 | + return | ||
| 149 | +} |
| @@ -1792,6 +1792,18 @@ func getChanceMarkFlag(header *protocol.RequestHeader, chanceId int64) (isThumbs | @@ -1792,6 +1792,18 @@ func getChanceMarkFlag(header *protocol.RequestHeader, chanceId int64) (isThumbs | ||
| 1792 | return | 1792 | return |
| 1793 | } | 1793 | } |
| 1794 | 1794 | ||
| 1795 | +//获取机会点赞/收藏状态 | ||
| 1796 | +func getMarkFlag(header *protocol.RequestHeader, sourceId int64, sourceType int) (isThumbsUp, isCollect bool, err error) { | ||
| 1797 | + var flag int | ||
| 1798 | + if flag, err = agg.GetMarkData(header.UserId, header.CompanyId, sourceId, sourceType); err != nil { | ||
| 1799 | + log.Error(err) | ||
| 1800 | + return | ||
| 1801 | + } | ||
| 1802 | + isThumbsUp = (flag & protocol.MarkFlagZan) == protocol.MarkFlagZan | ||
| 1803 | + isCollect = (flag & protocol.MarkFlagCollect) == protocol.MarkFlagCollect | ||
| 1804 | + return | ||
| 1805 | +} | ||
| 1806 | + | ||
| 1795 | //获取模板 | 1807 | //获取模板 |
| 1796 | func getTemplate(templateId int) protocol.NameItem { | 1808 | func getTemplate(templateId int) protocol.NameItem { |
| 1797 | if template, e := models.GetAuditTemplateById(int64(templateId)); e == nil { | 1809 | if template, e := models.GetAuditTemplateById(int64(templateId)); e == nil { |
| @@ -370,70 +370,78 @@ func UserStatistics(header *protocol.RequestHeader, request *protocol.UserStatis | @@ -370,70 +370,78 @@ func UserStatistics(header *protocol.RequestHeader, request *protocol.UserStatis | ||
| 370 | rsp = &protocol.UserStatisticsResponse{} | 370 | rsp = &protocol.UserStatisticsResponse{} |
| 371 | //buf :=bytes.NewBuffer(nil) | 371 | //buf :=bytes.NewBuffer(nil) |
| 372 | //buf.WriteString(fmt.Sprintf("用户中心-统计信息 user:%v type_total:%v \n",header.UserId,request.TypeTotal)) | 372 | //buf.WriteString(fmt.Sprintf("用户中心-统计信息 user:%v type_total:%v \n",header.UserId,request.TypeTotal)) |
| 373 | - for flag = 1; flag <= (protocol.MyAuditChanceReturn); flag = flag << 1 { | 373 | + for flag = 1; flag <= (protocol.MyGraspAchievement); flag = flag << 1 { |
| 374 | total = 0 | 374 | total = 0 |
| 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 | ||
| 391 | - case protocol.MyCommitChance: | ||
| 392 | - if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil { | ||
| 393 | - log.Error(err) | ||
| 394 | - } | ||
| 395 | - break | ||
| 396 | - case protocol.MyCommitChanceWait: | ||
| 397 | - if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 398 | - log.Error(err) | ||
| 399 | - } | ||
| 400 | - break | ||
| 401 | - case protocol.MyCommitChancePass: | ||
| 402 | - if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusPass); err != nil { | ||
| 403 | - log.Error(err) | ||
| 404 | - } | ||
| 405 | - break | ||
| 406 | - case protocol.MyCommitChanceReturn: | ||
| 407 | - if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusReturn); err != nil { | ||
| 408 | - log.Error(err) | ||
| 409 | - } | ||
| 410 | - break | ||
| 411 | - case protocol.MyAuditChance: | ||
| 412 | - var total1, total2 int | ||
| 413 | - if total1, err = agg.MyApproveStatic(header, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil { | ||
| 414 | - log.Error(err) | ||
| 415 | - } | ||
| 416 | - if total2, err = agg.MyApproveEnableStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 417 | - log.Error(err) | ||
| 418 | - } | ||
| 419 | - total = total1 + total2 | ||
| 420 | - break | ||
| 421 | - case protocol.MyAuditChanceWait: | ||
| 422 | - if total, err = agg.MyApproveEnableStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 423 | - log.Error(err) | ||
| 424 | - } | ||
| 425 | - break | ||
| 426 | - case protocol.MyAuditChancePass: | ||
| 427 | - if total, err = agg.MyApproveStatic(header, protocol.ReviewStatusPass); err != nil { | ||
| 428 | - log.Error(err) | ||
| 429 | - } | ||
| 430 | - break | ||
| 431 | - case protocol.MyAuditChanceReturn: | ||
| 432 | - if total, err = agg.MyApproveStatic(header, protocol.ReviewStatusReturn); err != nil { | ||
| 433 | - log.Error(err) | 375 | + if flag&request.TypeTotal > 0 { |
| 376 | + switch flag { | ||
| 377 | + case protocol.CollectStatic: //收藏 | ||
| 378 | + if total, err = models.GetChanceCollect(header.UserId, 0, 0, nil); err != nil { | ||
| 379 | + log.Error(err) | ||
| 380 | + } | ||
| 381 | + break | ||
| 382 | + case protocol.ZanStatic: //点赞 | ||
| 383 | + if total, err = models.GetChanceThumbUp(header.UserId, 0, 0, nil); err != nil { | ||
| 384 | + log.Error(err) | ||
| 385 | + } | ||
| 386 | + break | ||
| 387 | + case protocol.CommentStatic: //评论 | ||
| 388 | + if total, err = models.GetChanceComment(header.UserId, 0, 0, nil); err != nil { | ||
| 389 | + log.Error(err) | ||
| 390 | + } | ||
| 391 | + break | ||
| 392 | + case protocol.MyCommitChance: | ||
| 393 | + if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil { | ||
| 394 | + log.Error(err) | ||
| 395 | + } | ||
| 396 | + break | ||
| 397 | + case protocol.MyCommitChanceWait: | ||
| 398 | + if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 399 | + log.Error(err) | ||
| 400 | + } | ||
| 401 | + break | ||
| 402 | + case protocol.MyCommitChancePass: | ||
| 403 | + if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusPass); err != nil { | ||
| 404 | + log.Error(err) | ||
| 405 | + } | ||
| 406 | + break | ||
| 407 | + case protocol.MyCommitChanceReturn: | ||
| 408 | + if total, err = agg.MyChanceStatic(header, protocol.ReviewStatusReturn); err != nil { | ||
| 409 | + log.Error(err) | ||
| 410 | + } | ||
| 411 | + break | ||
| 412 | + case protocol.MyAuditChance: | ||
| 413 | + var total1, total2 int | ||
| 414 | + if total1, err = agg.MyApproveStatic(header, protocol.ReviewStatusReturn, protocol.ReviewStatusPass); err != nil { | ||
| 415 | + log.Error(err) | ||
| 416 | + } | ||
| 417 | + if total2, err = agg.MyApproveEnableStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 418 | + log.Error(err) | ||
| 419 | + } | ||
| 420 | + total = total1 + total2 | ||
| 421 | + break | ||
| 422 | + case protocol.MyAuditChanceWait: | ||
| 423 | + if total, err = agg.MyApproveEnableStatic(header, protocol.ReviewStatusAuditging); err != nil { | ||
| 424 | + log.Error(err) | ||
| 425 | + } | ||
| 426 | + break | ||
| 427 | + case protocol.MyAuditChancePass: | ||
| 428 | + if total, err = agg.MyApproveStatic(header, protocol.ReviewStatusPass); err != nil { | ||
| 429 | + log.Error(err) | ||
| 430 | + } | ||
| 431 | + break | ||
| 432 | + case protocol.MyAuditChanceReturn: | ||
| 433 | + if total, err = agg.MyApproveStatic(header, protocol.ReviewStatusReturn); err != nil { | ||
| 434 | + log.Error(err) | ||
| 435 | + } | ||
| 436 | + break | ||
| 437 | + case protocol.MyGraspAchievement: | ||
| 438 | + if total, err = agg.MyGraspStatic(header); err != nil { | ||
| 439 | + log.Error(err) | ||
| 440 | + } | ||
| 441 | + break | ||
| 442 | + default: | ||
| 443 | + break | ||
| 434 | } | 444 | } |
| 435 | - break | ||
| 436 | - | ||
| 437 | } | 445 | } |
| 438 | if flag&request.TypeTotal > 0 { | 446 | if flag&request.TypeTotal > 0 { |
| 439 | rsp.Totals = append(rsp.Totals, protocol.TypeTotalItem{ | 447 | rsp.Totals = append(rsp.Totals, protocol.TypeTotalItem{ |
-
请 注册 或 登录 后发表评论