作者 tangxvhui

补充机会详情

@@ -142,3 +142,29 @@ func (c *AuditController) AllowForbidAudit() { @@ -142,3 +142,29 @@ func (c *AuditController) AllowForbidAudit() {
142 msg = protocol.NewReturnResponse(nil, err) 142 msg = protocol.NewReturnResponse(nil, err)
143 return 143 return
144 } 144 }
  145 +
  146 +//GetChanceReviseLog
  147 +//@router /v1/audit/revise/info
  148 +func (c *AuditController) GetChanceReviseLog() {
  149 + var msg *protocol.ResponseMessage
  150 + defer func() {
  151 + c.ResposeJson(msg)
  152 + }()
  153 + type Parameter struct {
  154 + FlowLogId int64 `json:"flow_log_id"`
  155 + ChanceId string `json:"chance_id"`
  156 + }
  157 + var param Parameter
  158 + if err := json.Unmarshal(c.Ctx.Input.RequestBody, &param); err != nil {
  159 + log.Error("json 解析失败", err)
  160 + msg = protocol.BadRequestParam("1")
  161 + return
  162 + }
  163 + chanceId, _ := strconv.ParseInt(param.ChanceId, 10, 64)
  164 + companyId := c.GetCompanyId()
  165 + rspData, err := serveaudit.GetChanceReviseLog(param.FlowLogId, chanceId, companyId)
  166 + msg = protocol.NewReturnResponse(rspData, err)
  167 + return
  168 +}
  169 +
  170 +// GetChanceReviseLog
@@ -183,3 +183,21 @@ func (c *CommonController) SelectorRoleUser() { @@ -183,3 +183,21 @@ func (c *CommonController) SelectorRoleUser() {
183 msg = protocol.NewReturnResponse(list, err) 183 msg = protocol.NewReturnResponse(list, err)
184 return 184 return
185 } 185 }
  186 +
  187 +//SelectorChanceType 获取机会类型列表
  188 +func (c *CommonController) SelectorChanceType() {
  189 + var msg *protocol.ResponseMessage
  190 + defer func() {
  191 + c.ResposeJson(msg)
  192 + }()
  193 +
  194 + companyid := c.GetCompanyId()
  195 + templatelist := servecommon.SelectGetTemplateList(companyid)
  196 + chanceTypeList := servecommon.SeleteGetChanceTypeList(companyid)
  197 + data := map[string]interface{}{
  198 + "template": templatelist,
  199 + "chance_type": chanceTypeList,
  200 + }
  201 + msg = protocol.NewReturnResponse(data, nil)
  202 + return
  203 +}
  1 +package models
  2 +
  3 +import (
  4 + "encoding/json"
  5 + "time"
  6 +
  7 + "github.com/astaxie/beego/orm"
  8 +)
  9 +
  10 +type ChanceReviseLog struct {
  11 + Id int64 `orm:"column(id);pk" description:"id 主键"`
  12 + ChanceId int64 `orm:"column(chance_id)" description:"机会编号"`
  13 + UserCompanyId int64 `orm:"column(user_company_id);null" description:"用户编号 编辑机会的人"`
  14 + Data string `orm:"column(data);null" description:"机会数据"`
  15 + CreateAt time.Time `orm:"column(create_at);type(timestamp);null" description:"创建时间"`
  16 + AuditFlowLogId int64 `orm:"column(audit_flow_log_id);null" description:"表audit_flow_log.id "`
  17 +}
  18 +
  19 +func (t *ChanceReviseLog) TableName() string {
  20 + return "chance_revise_log"
  21 +}
  22 +
  23 +func init() {
  24 + orm.RegisterModel(new(ChanceReviseLog))
  25 +}
  26 +
  27 +type ReviseContentsItem struct {
  28 + Content string `json:"content"`
  29 +}
  30 +
  31 +type ChanceReviseLogData struct {
  32 + ReviseContents []ReviseContentsItem `json:"reviseContents"`
  33 + Speechs []ChanceDataSpeechs `json:"speechs"`
  34 + Pictures []ChanceDataImage `json:"pictures"`
  35 + Videos []ChanceDataVideos `json:"videos"`
  36 +}
  37 +
  38 +// GetChanceReviseLogById retrieves ChanceReviseLog by Id. Returns error if
  39 +// Id doesn't exist
  40 +func GetChanceReviseLogById(id int64) (v *ChanceReviseLog, err error) {
  41 + o := orm.NewOrm()
  42 + v = &ChanceReviseLog{Id: id}
  43 + if err = o.Read(v); err == nil {
  44 + return v, nil
  45 + }
  46 + return nil, err
  47 +}
  48 +
  49 +func GetChanceReviseLogData(flowLogId int64) (*ChanceReviseLog, *ChanceReviseLogData, error) {
  50 + o := orm.NewOrm()
  51 + var (
  52 + err error
  53 + )
  54 + reviseLog := &ChanceReviseLog{}
  55 + err = o.QueryTable(&ChanceReviseLog{}).
  56 + Filter("audit_flow_log_id", flowLogId).
  57 + One(reviseLog)
  58 + if err != nil {
  59 + return nil, nil, err
  60 + }
  61 + reviseLogData := &ChanceReviseLogData{
  62 + ReviseContents: make([]ReviseContentsItem, 0),
  63 + Speechs: make([]ChanceDataSpeechs, 0),
  64 + Pictures: make([]ChanceDataImage, 0),
  65 + Videos: make([]ChanceDataVideos, 0),
  66 + }
  67 + json.Unmarshal([]byte(reviseLog.Data), reviseLogData)
  68 + return reviseLog, reviseLogData, err
  69 +}
@@ -275,4 +275,5 @@ type ChanceFlowLog struct { @@ -275,4 +275,5 @@ type ChanceFlowLog struct {
275 CreateAt string `json:"create_at" orm:"column(create_at)"` 275 CreateAt string `json:"create_at" orm:"column(create_at)"`
276 Content string `json:"content" orm:"column(content)"` 276 Content string `json:"content" orm:"column(content)"`
277 NickName string `json:"nick_name" orm:"column(nick_name)"` 277 NickName string `json:"nick_name" orm:"column(nick_name)"`
  278 + Code int `json:"code" orm:"column(code)"`
278 } 279 }
@@ -75,6 +75,7 @@ func init() { @@ -75,6 +75,7 @@ func init() {
75 beego.NSRouter("/user_and_department", &controllers.CommonController{}, "post:SelectorUserAndDepart"), 75 beego.NSRouter("/user_and_department", &controllers.CommonController{}, "post:SelectorUserAndDepart"),
76 beego.NSRouter("/default_image", &controllers.CommonController{}, "post:DefaultImage"), 76 beego.NSRouter("/default_image", &controllers.CommonController{}, "post:DefaultImage"),
77 beego.NSRouter("/role/user", &controllers.CommonController{}, "post:SelectorRoleUser"), 77 beego.NSRouter("/role/user", &controllers.CommonController{}, "post:SelectorRoleUser"),
  78 + beego.NSRouter("/chance_type", &controllers.CommonController{}, "post:SelectorChanceType"),
78 ), 79 ),
79 beego.NSNamespace("/template", 80 beego.NSNamespace("/template",
80 beego.NSRouter("/add", &controllers.TemplateController{}, "post:TemplateAdd"), 81 beego.NSRouter("/add", &controllers.TemplateController{}, "post:TemplateAdd"),
@@ -102,6 +103,7 @@ func init() { @@ -102,6 +103,7 @@ func init() {
102 beego.NSRouter("/list/before", &controllers.AuditController{}, "post:AuditListBefore"), 103 beego.NSRouter("/list/before", &controllers.AuditController{}, "post:AuditListBefore"),
103 beego.NSRouter("/info", &controllers.AuditController{}, "post:AuditInfo"), 104 beego.NSRouter("/info", &controllers.AuditController{}, "post:AuditInfo"),
104 beego.NSRouter("/allow_forbid", &controllers.AuditController{}, "post:AllowForbidAudit"), 105 beego.NSRouter("/allow_forbid", &controllers.AuditController{}, "post:AllowForbidAudit"),
  106 + beego.NSRouter("/revise/info", &controllers.AuditController{}, "post:GetChanceReviseLog"),
105 ), 107 ),
106 beego.NSNamespace("/rank", 108 beego.NSNamespace("/rank",
107 beego.NSRouter("/type/list", &controllers.RankController{}, "post:GetRankType"), 109 beego.NSRouter("/type/list", &controllers.RankController{}, "post:GetRankType"),
@@ -425,7 +425,7 @@ func getAuditFlowLog(chanceid int64) ([]protocol.ChanceFlowLog, error) { @@ -425,7 +425,7 @@ func getAuditFlowLog(chanceid int64) ([]protocol.ChanceFlowLog, error) {
425 flowLogs = make([]protocol.ChanceFlowLog, 0) 425 flowLogs = make([]protocol.ChanceFlowLog, 0)
426 err error 426 err error
427 ) 427 )
428 - const datasql string = `SELECT a.chance_id,a.content,a.create_at,c.nick_name 428 + const datasql string = `SELECT a.chance_id,a.content,a.create_at,c.nick_name,a.code
429 FROM audit_flow_log AS a 429 FROM audit_flow_log AS a
430 LEFT JOIN user_company AS b ON a.approve_user_id=b.id 430 LEFT JOIN user_company AS b ON a.approve_user_id=b.id
431 LEFT JOIN user AS c ON b.user_id = c.id 431 LEFT JOIN user AS c ON b.user_id = c.id
@@ -525,3 +525,50 @@ func GetPermissionInAuditPage(userid int64, companyid int64) serverabc.OptionOpp @@ -525,3 +525,50 @@ func GetPermissionInAuditPage(userid int64, companyid int64) serverabc.OptionOpp
525 } 525 }
526 return option 526 return option
527 } 527 }
  528 +
  529 +type ChanceReviseLogInfo struct {
  530 + UserName string `json:"user_name"`
  531 + UserComapnyId int64 `json:"user_company_id"`
  532 + CreateTime string `json:"create_time"`
  533 + models.ChanceReviseLogData
  534 +}
  535 +
  536 +//GetChanceReviseLog 获取对机会的操作记录,补充机会的详情
  537 +func GetChanceReviseLog(flowLogId int64, chanceId int64, companyId int64) (*ChanceReviseLogInfo, error) {
  538 + var (
  539 + reviseLog *models.ChanceReviseLog
  540 + reviseLogData *models.ChanceReviseLogData
  541 + usercompanyData *models.UserCompany
  542 + chanceData *models.Chance
  543 + err error
  544 + )
  545 + chanceData, err = models.GetChanceById(chanceId)
  546 + if err != nil {
  547 + log.Error("获取机会数据chance失败:%s", err)
  548 + return nil, protocol.NewErrWithMessage("1")
  549 + }
  550 + if chanceData.CompanyId != companyId {
  551 + log.Error("机会的公司不匹配")
  552 + }
  553 + reviseLog, reviseLogData, err = models.GetChanceReviseLogData(flowLogId)
  554 + if err != nil {
  555 + log.Error("获取chance_revise_log失败,err:%s", err)
  556 + return nil, protocol.NewErrWithMessage("1")
  557 + }
  558 + if reviseLog.ChanceId != chanceId {
  559 + log.Error("日志与机会不匹配")
  560 + return nil, protocol.NewErrWithMessage("1")
  561 + }
  562 + rspData := &ChanceReviseLogInfo{
  563 + UserComapnyId: reviseLog.UserCompanyId,
  564 + CreateTime: reviseLog.CreateAt.Format("2006-01-02 15:04:05"),
  565 + ChanceReviseLogData: *reviseLogData,
  566 + }
  567 + usercompanyData, err = models.GetUserCompanyById(reviseLog.UserCompanyId)
  568 + if err != nil {
  569 + log.Error("获取用户数据user_company失败;%s", err)
  570 + } else {
  571 + rspData.UserName = usercompanyData.NickName
  572 + }
  573 + return rspData, nil
  574 +}