作者 yangfu

机会池修改

... ... @@ -185,6 +185,27 @@ func (this *ChanceController) ChanceType() {
msg = protocol.NewReturnResponse(chance.ChanceType(header, request))
}
//Permission 机会权限
//@router /permission [post]
func (this *ChanceController) Permission() {
var msg *protocol.ResponseMessage
defer func() {
this.Resp(msg)
}()
var request *protocol.ChancePermissionRequest
if err := json.Unmarshal(this.ByteBody, &request); err != nil {
log.Error(err)
msg = protocol.BadRequestParam(1)
return
}
if b, m := this.Valid(request); !b {
msg = m
return
}
header := controllers.GetRequestHeader(this.Ctx)
msg = protocol.NewReturnResponse(chance.ChancePermission(header, request))
}
//Templates
//@router /templates [post]
func (this *ChanceController) Templates() {
... ... @@ -273,6 +294,27 @@ func (this *ChanceController) MySubmitChance() {
msg = protocol.NewReturnResponse(chance.MySubmitChance(header, request))
}
//ChancePool 机会池
//@router /chancePool [post]
func (this *ChanceController) ChancePool() {
var msg *protocol.ResponseMessage
defer func() {
this.Resp(msg)
}()
var request *protocol.ChancePoolRequest
if err := json.Unmarshal(this.ByteBody, &request); err != nil {
log.Error(err)
msg = protocol.BadRequestParam(1)
return
}
if b, m := this.Valid(request); !b {
msg = m
return
}
header := controllers.GetRequestHeader(this.Ctx)
msg = protocol.NewReturnResponse(chance.ChancePool(header, request))
}
//ChanceDetail 机会详情
//@router /chanceDetail [post]
func (this *ChanceController) ChanceDetail() {
... ...
... ... @@ -147,3 +147,29 @@ from audit_flow_process where uid=? and enable_status =1 and review_status in (%
}
return
}
func GetChancePool(uid, cid int64, chanceTypeId int, lastId int64, pageSize int, v interface{}) (total int, err error) {
sql := `select a.*,b.images,speechs,videos
from (
select id,user_id,create_at,source_content,review_status,audit_template_id,chance_type_id,comment_total,zan_total,view_total from chance
where user_id=? and company_id=? and review_status=3 and (?=0 or chance_type_id =?) and (?=0 or id>?) and enable_status=1
order by create_at desc
limit ?
) a left JOIN chance_data b on a.id =b.chance_id`
//if public==protocol.pu
sqlCount := fmt.Sprintf(`select count(0) from (
select id from chance
where user_id=? and company_id=? and review_status=3 and (%v=0 or chance_type_id =%v) and enable_status=1
order by create_at desc
) a left JOIN chance_data b on a.id =b.chance_id`, chanceTypeId, chanceTypeId)
if err = utils.ExecuteQueryOne(&total, sqlCount, uid, cid); err != nil {
return
}
if v != nil {
if err = utils.ExecuteQueryAll(v, sql, uid, cid, chanceTypeId, chanceTypeId, lastId, lastId, pageSize); err != nil {
return
}
}
return
}
... ...
... ... @@ -133,6 +133,27 @@ type MySubmitChanceResponse struct {
Total int `json:"total"`
}
/*ChancePool 机会池*/
type ChancePoolRequest struct {
LastId int64 `json:"lastId"`
PageSize int `json:"pageSize" valid:"Required"`
ChanceTypeId int `json:"chanceTypeId"` //0:所有机会 编号:对应机会类型编号的机会
}
type ChancePoolResponse struct {
List []CommonListItem `json:"list"`
Total int `json:"total"`
}
/*Permission 机会权限*/
type ChancePermissionRequest struct {
}
type ChancePermissionResponse struct {
EditScore int `json:"editScore"`
EditChance int `json:"editChance"`
EditPublic int `json:"editPublic"`
CloseChance int `json:"closeChance"`
}
//我的机会列表
type ChanceItemOrm struct {
Id int64 `orm:"column(id)"`
... ... @@ -177,6 +198,26 @@ type ChanceApproveItemOrm struct {
ChanceId int64 `orm:"column(chance_id)"` // 机会id
}
//机会池列表
type ChancePoolItemOrm struct {
Id int64 `orm:"column(id)"`
Uid int64 `orm:"column(user_id)"`
CreateTime time.Time `orm:"column(create_at)"`
SourceContent string `orm:"column(source_content)"`
Images string `orm:"column(images)"`
Voices string `orm:"column(speechs)"`
Videos string `orm:"column(videos)"`
ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
//ApproveData string `json:"approveData"` //审核数据
TemplateId int `orm:"column(audit_template_id)"`
ChanceTypeId int `orm:"column(chance_type_id)"`
CommentTotal int `orm:"column(comment_total)"`
ZanTotal int `orm:"column(zan_total)"`
ViewTotal int `orm:"column(view_total)"`
}
/*ChanceDetail 机会详情*/
type ChanceDetailRequest struct {
Id int64 `json:"id"` //机会编号
... ... @@ -186,8 +227,16 @@ type ChanceDetailResponse struct {
ChanceData interface{} `json:"chanceData,omitempty"` //机会数据(是否收藏/点赞 浏览数 点赞总数 评论数)ChanceData
ApproveData *ApproveData `json:"approveData"`
ApproveProcess []*ProcessItem `json:"approveProcess"`
ApproveAccess *ApproveAccess `json:"approveAccess"` //
ReviewStatus int `orm:"column(review_status)"` //审核状态 1:待审核 2:被退回 3:已通过
ApproveAccess *ApproveAccess `json:"approveAccess"` //
ChanceType NameItem `json:"chanceType"` //机会类型
ChanceTemplate NameItem `json:"template"` //机会模板
ReviewStatus int `json:"review_status"` //审核状态 1:待审核 2:被退回 3:已通过
}
type ChanceType struct {
Id int `json:"id"`
Name string `json:"name"`
Template
}
/*ChanceChangePublish 修改公开状态*/
... ... @@ -309,6 +358,10 @@ type CommonListItem struct {
//我审核的-通过
Score interface{} `json:"score,omitempty"`
//模板
ChanceType interface{} `json:"chanceType,omitempty"` //机会类型
ChanceTemplate interface{} `json:"template,omitempty"` //机会模板
}
type ChanceItem struct {
Id int64 `json:"id"`
... ... @@ -324,6 +377,6 @@ type ChanceData struct {
CommentTotal int `json:"commentTotal"` //评论总数
PageViewTotal int `json:"pageViewTotal"` //评论总数
IsThumbsUp int `json:"isThumbsUp"` //是否点赞 1 点赞, 0 没有点赞
IsCollect int `json:"isCollect"` //是否收藏 1 是 0 否
IsThumbsUp bool `json:"isThumbsUp"` //是否点赞 1 点赞, 0 没有点赞
IsCollect bool `json:"isCollect"` //是否收藏 1 是 0 否
}
... ...
... ... @@ -65,3 +65,8 @@ type Role struct {
Id int `json:"id"`
Name string `json:"name"`
}
type NameItem struct {
Id int `json:"id"`
Name string `json:"name"`
}
... ...
... ... @@ -81,6 +81,14 @@ func init() {
beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
beego.ControllerComments{
Method: "ChancePool",
Router: `/chancePool`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Params: nil})
beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
beego.ControllerComments{
Method: "ChanceType",
Router: `/chanceType`,
AllowHTTPMethods: []string{"post"},
... ... @@ -177,6 +185,14 @@ func init() {
beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
beego.ControllerComments{
Method: "Permission",
Router: `/permission`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
Params: nil})
beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"] = append(beego.GlobalControllerRouter["opp/controllers/v1:ChanceController"],
beego.ControllerComments{
Method: "ChanceStatistics",
Router: `/statistics`,
AllowHTTPMethods: []string{"post"},
... ...
... ... @@ -3,6 +3,7 @@ package agg
import (
"bytes"
"fmt"
"github.com/astaxie/beego/orm"
"gitlab.fjmaimaimai.com/mmm-go/gocomm/pkg/log"
"opp/internal/utils"
"opp/models"
... ... @@ -177,6 +178,20 @@ func GetChance(chanceId int64, companyId int64) (v *protocol.ChanceDetail, err e
return
}
//获取机会标记数据 点赞 / 收藏
func GetChanceMarkData(userId, companyId int64, sourceId int64) (flag int, err error) {
var (
v *models.ChanceFavorite
)
if v, err = models.GetChanceFavorite(userId, companyId, sourceId, protocol.SourceTypeChance); err != nil {
if err == orm.ErrNoRows {
return 0, nil
}
return
}
return v.MarkFlag, nil
}
//构建统计sql语句
func GetIncrementSql(table string, column string, incre int, id int64) *utils.SqlData {
var sql *bytes.Buffer
... ...
... ... @@ -528,6 +528,19 @@ func ChanceCalculateScore(header *protocol.RequestHeader, request *protocol.Chan
return
}
//机会权限
func ChancePermission(header *protocol.RequestHeader, request *protocol.ChancePermissionRequest) (rsp *protocol.ChancePermissionResponse, err error) {
var ()
rsp = &protocol.ChancePermissionResponse{}
{
rsp.EditChance = 1
rsp.EditScore = 1
rsp.EditPublic = 1
rsp.CloseChance = 1
}
return
}
//生成审批流-提交记录
func GenAuditFlowProcess_Submit(header *protocol.RequestHeader, chanceId int64, templateId int64) (v *models.AuditFlowProcess) {
v = &models.AuditFlowProcess{
... ... @@ -809,6 +822,80 @@ func MySubmitChance(header *protocol.RequestHeader, request *protocol.MySubmitCh
return
}
//机会池
func ChancePool(header *protocol.RequestHeader, request *protocol.ChancePoolRequest) (rsp *protocol.ChancePoolResponse, err error) {
var (
myChances []protocol.ChancePoolItemOrm
total int
provider *protocol.BaseUserInfo
flag int
)
if total, err = models.GetChancePool(header.UserId, header.CompanyId, request.ChanceTypeId, request.LastId, request.PageSize, &myChances); err != nil {
if err == orm.ErrNoRows {
err = nil
return
}
log.Error(err)
return
}
if provider, err = agg.GetUserBaseInfo(header.UserId, header.CompanyId); err != nil {
log.Error(err)
return
}
rsp = &protocol.ChancePoolResponse{Total: total}
for i := 0; i < len(myChances); i++ {
chance := myChances[i]
commItem := protocol.CommonListItem{}
{
item := protocol.ChanceItem{
Id: chance.Id,
Provider: provider,
CreateTime: chance.CreateTime.Unix() * 1000,
}
jsonUnmarshal(chance.SourceContent, &item.FormList)
item.FormList = clearEmptyForm(item.FormList)
jsonUnmarshal(chance.Images, &item.Pictures)
jsonUnmarshal(chance.Voices, &item.Speechs)
jsonUnmarshal(chance.Videos, &item.Videos)
commItem.Chance = item
}
commItem.ReviewStatus = chance.ReviewStatus
{
var chanceData = protocol.ChanceData{
ThumbsUpTotal: chance.ZanTotal,
CommentTotal: chance.CommentTotal,
PageViewTotal: chance.ViewTotal,
}
if flag, err = agg.GetChanceMarkData(header.UserId, header.CompanyId, chance.Id); err != nil {
log.Error(err)
continue
}
chanceData.IsThumbsUp = (flag & protocol.MarkFlagZan) == protocol.MarkFlagZan
chanceData.IsCollect = (flag & protocol.MarkFlagCollect) == protocol.MarkFlagCollect
commItem.ChanceData = chanceData
}
{
//做一次查询 查回所有的模板数据
if template, e := models.GetAuditTemplateById(int64(chance.TemplateId)); e == nil {
commItem.ChanceTemplate = protocol.NameItem{
Id: int(template.Id),
Name: template.Name,
}
}
if chanceType, e := models.GetChanceTypeById(chance.ChanceTypeId); e == nil {
commItem.ChanceType = protocol.NameItem{
Id: int(chanceType.Id),
Name: chanceType.Name,
}
}
}
rsp.List = append(rsp.List, commItem)
}
return
}
//我审核的机会
func MyApproveChance(header *protocol.RequestHeader, request *protocol.MyApproveChanceRequest) (rsp *protocol.MyApproveChanceResponse, err error) {
var (
... ... @@ -909,6 +996,8 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
chanceData *models.ChanceData
provider *protocol.BaseUserInfo
approveProcess *protocol.ChanceApproveProcessResponse
//chanceType *models.ChanceType
//tempalte *models.AuditTemplate
)
rsp = &protocol.ChanceDetailResponse{}
if chance, err = models.GetChanceById(request.Id); err != nil {
... ... @@ -919,6 +1008,18 @@ func ChanceDetail(header *protocol.RequestHeader, request *protocol.ChanceDetail
log.Error(err)
return
}
if template, e := models.GetAuditTemplateById(chance.AuditTemplateId); e == nil {
rsp.ChanceTemplate = protocol.NameItem{
Id: int(template.Id),
Name: template.Name,
}
}
if chanceType, e := models.GetChanceTypeById(chance.ChanceTypeId); e == nil {
rsp.ChanceType = protocol.NameItem{
Id: int(chanceType.Id),
Name: chanceType.Name,
}
}
if chance.EnableStatus == 0 {
err = protocol.NewErrWithMessage(5101)
return
... ...