package controllers import ( "encoding/json" "fmt" "hongze/hongze_mobile_admin/models/response/message" "hongze/hongze_mobile_admin/models/tables/company_approval" "hongze/hongze_mobile_admin/models/tables/company_approval_message" "hongze/hongze_mobile_admin/models/tables/contract_approval" "hongze/hongze_mobile_admin/utils" "rdluck_tools/paging" "strconv" "strings" ) //消息模块 type MessageCommon struct { BaseAuth } // @Title 消息列表汇总页 // @Description 消息列表汇总页接口 // @Success 200 {object} message.SummaryMessageListResp // @router /summaryMessageList [get] func (this *MessageCommon) SummaryMessageList() { sysUser := this.AdminWx sysUserId := sysUser.AdminId SummaryMessageListResp := message.SummaryMessageListResp{} sourceTypeList := [...]int{1, 2, 3} for _, sourceType := range sourceTypeList { //最近一条消息 tmpMessage := `` messageInfo, err := company_approval_message.GetLastMessage(sysUserId, sourceType) if err != nil { if err.Error() != utils.ErrNoRow() { this.FailWithMessage("获取失败", "获取消息失败,Err:"+err.Error()) return } } else { tmpMessage = fmt.Sprint(messageInfo.RealName, messageInfo.CreateTime, messageInfo.Content) } notReadTotal, err := company_approval_message.GetNotReadMessageTotal(sysUserId, sourceType) if err != nil { this.FailWithMessage("获取失败", "获取未读消息数失败,Err:"+err.Error()) return } switch sourceType { case 1: SummaryMessageListResp.CompanyMessage.Message = tmpMessage SummaryMessageListResp.CompanyMessage.Total = int(notReadTotal) case 2: SummaryMessageListResp.ContractMessage.Message = tmpMessage SummaryMessageListResp.ContractMessage.Total = int(notReadTotal) case 3: SummaryMessageListResp.SealMessage.Message = tmpMessage SummaryMessageListResp.SealMessage.Total = int(notReadTotal) } } this.OkDetailed(SummaryMessageListResp, "获取成功") } // @Title 消息列表 // @Description 消息列表接口 // @Param SourceType query int true "消息类型" // @Param CurrentIndex query int true "当前页码" // @Param pageSize query int true "每页数量" // @Success 200 {object} message.CompanyApprovalMessageListResp // @router /list [get] func (this *MessageCommon) MessageList() { sysUser := this.AdminWx sysUserId := sysUser.AdminId sourceType, err := this.GetInt("SourceType", 1) if err != nil { this.FailWithMessage("获取失败", "获取消息类型失败,Err:"+err.Error()) return } pageSize, _ := this.GetInt("PageSize") currentIndex, _ := this.GetInt("CurrentIndex") var startSize int if pageSize <= 0 { pageSize = utils.PageSize20 } if currentIndex <= 0 { currentIndex = 1 } startSize = paging.StartIndex(currentIndex, pageSize) total, err := company_approval_message.GetCompanyApprovalMessageCount(sysUserId, sourceType) if err != nil { this.FailWithMessage("获取失败", "获取消息总数失败,Err:"+err.Error()) return } list, err := company_approval_message.GetCompanyApprovalMessageList(sysUserId, sourceType, startSize, pageSize) if err != nil { this.FailWithMessage("获取失败", "获取消息列表失败,Err:"+err.Error()) return } companyApprovalIds := make([]string, 0) newApprovalIds := make([]string, 0) companyApprovalMap := make(map[int]*company_approval.CompanyApproval) newApprovalMap := make(map[int]*contract_approval.ContractApproval) for _, message := range list { if message.SourceType == 1 { companyApprovalIds = append(companyApprovalIds, strconv.Itoa(message.CompanyApprovalId)) } else { //如果不是文字消息 if message.MessageType != 3 { newApprovalIds = append(newApprovalIds, strconv.Itoa(message.CompanyApprovalId)) } } } //客户信息 if len(companyApprovalIds) > 0 { companyApprovalList, err := company_approval.GetApprovalListByApprovalIds(strings.Join(companyApprovalIds, ",")) if err != nil { this.FailWithMessage("获取失败", "获取申请列表信息失败,Err:"+err.Error()) } for _, companyApproval := range companyApprovalList { companyApprovalMap[companyApproval.CompanyApprovalId] = companyApproval } } //新的审批单信息 if len(newApprovalIds) > 0 { contractApprovalList, err := contract_approval.GetContractApprovalByIds(strings.Join(newApprovalIds, ",")) if err != nil { this.FailWithMessage("获取失败", "获取申请列表信息失败,Err:"+err.Error()) } for _, contractApproval := range contractApprovalList { newApprovalMap[contractApproval.ContractApprovalId] = contractApproval } } for _, message := range list { approvalInfo := company_approval_message.ApprovalInfo{} if message.SourceType == 1 { if companyApproval, ok := companyApprovalMap[message.CompanyApprovalId]; ok { switch companyApproval.ApplyMethod { case 1: approvalInfo.Type = "申请转正" case 2: approvalInfo.Type = "冻结转试用" case 3: approvalInfo.Type = "流失转正式" case 4: approvalInfo.Type = "申请延期" case 5: approvalInfo.Type = "原销售申请领取流失客户" case 6: approvalInfo.Type = "服务更新" } approvalInfo.ApplyName = companyApproval.ApplyRealName approvalInfo.ApplyTime = companyApproval.CreateTime.Format(utils.FormatDateTime) approvalInfo.ApprovalTime = companyApproval.ApproveTime.Format(utils.FormatDateTime) } } else { if message.MessageType != 3 { if newApproval, ok := newApprovalMap[message.CompanyApprovalId]; ok { approvalInfo.Type = newApproval.ApplyContent approvalInfo.ApplyName = newApproval.ApplyUserName approvalInfo.ApplyTime = newApproval.CreateTime.Format(utils.FormatDateTime) approvalInfo.ApprovalTime = newApproval.ModifyTime.Format(utils.FormatDateTime) } } } message.ApprovalInfo = approvalInfo } // resp := message.CompanyApprovalMessageListResp{ List: list, Total: total, } this.OkDetailed(resp, "获取成功") } // @Title 消息已读 // @Description 消息已读接口 // @Param request body company.CompanyApprovalMessageReadReq true "type json string" // @Success Ret=200 申请成功 // @router /read [post] func (this *MessageCommon) MessageRead() { //sysUser := this.AdminWx var req company_approval_message.CompanyApprovalMessageReadReq err := json.Unmarshal(this.Ctx.Input.RequestBody, &req) if err != nil { this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error()) return } if req.Id <= 0 { this.FailWithMessage("参数错误", "参数错误,客户id小于等于0") return } err = company_approval_message.ModifyCompanyApprovalMessageStatus(req.Id) if err != nil { this.FailWithMessage("修改失败!", "修改已读失败,Err:"+err.Error()) return } this.OkWithMessage("已读成功") }