|
@@ -0,0 +1,618 @@
|
|
|
+package controllers
|
|
|
+
|
|
|
+import (
|
|
|
+ "encoding/json"
|
|
|
+ "fmt"
|
|
|
+ approval2 "hongze/hongze_mobile_admin/models/request/approval"
|
|
|
+ "hongze/hongze_mobile_admin/models/response/approval"
|
|
|
+ "hongze/hongze_mobile_admin/models/response/message"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/admin"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_approval"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_approval_message"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_contract"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_delay_permission"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_product"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_product_log"
|
|
|
+ "hongze/hongze_mobile_admin/models/tables/company_report_permission"
|
|
|
+ "hongze/hongze_mobile_admin/services"
|
|
|
+ "hongze/hongze_mobile_admin/utils"
|
|
|
+ "rdluck_tools/paging"
|
|
|
+ "strconv"
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+//消息模块
|
|
|
+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
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 /message/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("已读成功")
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 获取审批列表接口
|
|
|
+// @Description 获取审批列表接口
|
|
|
+// @Param PageSize query int true "每页数据条数"
|
|
|
+// @Param CurrentIndex query int true "当前页页码,从1开始"
|
|
|
+// @Param Status query string true "状态:'全部','待审批','已审批','驳回','已撤回'"
|
|
|
+// @Param KeyWord query string true "搜索关键词"
|
|
|
+// @Success 200 {object} approval.CompanyApprovalListResp
|
|
|
+// @router /list [get]
|
|
|
+func (this *MessageCommon) List() {
|
|
|
+ sysUser := this.AdminWx
|
|
|
+ roleTypeCode := sysUser.RoleTypeCode
|
|
|
+
|
|
|
+ pageSize, _ := this.GetInt("PageSize")
|
|
|
+ currentIndex, _ := this.GetInt("CurrentIndex")
|
|
|
+ status := this.GetString("Status")
|
|
|
+ keyWord := this.GetString("KeyWord")
|
|
|
+
|
|
|
+ var startSize int
|
|
|
+ if pageSize <= 0 {
|
|
|
+ pageSize = utils.PageSize20
|
|
|
+ }
|
|
|
+ if currentIndex <= 0 {
|
|
|
+ currentIndex = 1
|
|
|
+ }
|
|
|
+ startSize = paging.StartIndex(currentIndex, pageSize)
|
|
|
+
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ if status != "" {
|
|
|
+ if status == "已审批" {
|
|
|
+ condition += ` AND c.approve_status IN('已审批','驳回') `
|
|
|
+ } else {
|
|
|
+ condition += ` AND c.approve_status=? `
|
|
|
+ pars = append(pars, status)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
|
|
|
+ condition += ` AND c.approve_role_type_code=? `
|
|
|
+ pars = append(pars, roleTypeCode)
|
|
|
+ } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
|
|
|
+ condition += ` AND c.apply_user_id=? `
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+
|
|
|
+ if keyWord != "" {
|
|
|
+ condition += ` AND (a.company_name LIKE '%` + keyWord + `%' OR a.credit_code LIKE '%` + keyWord + `%') `
|
|
|
+ }
|
|
|
+
|
|
|
+ total, err := company_approval.GetApprovalCount(condition, pars)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ list, err := company_approval.GetApprovalList(condition, pars, startSize, pageSize)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ listLen := len(list)
|
|
|
+ for i := 0; i < listLen; i++ {
|
|
|
+ item := list[i]
|
|
|
+ if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
|
|
|
+ freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
|
|
|
+ if time.Now().Before(freezeEndDate) {
|
|
|
+ expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
|
|
|
+ list[i].FreezeExpireDays = int(expireDays)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if item.StartDate != "" && item.EndDate != "" {
|
|
|
+ endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
|
|
|
+ if time.Now().Before(endDate) {
|
|
|
+ expireDays := endDate.Sub(time.Now()).Hours() / 24
|
|
|
+ list[i].ExpireDay = int(expireDays)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list[i].ApprovalCount = approvalCount
|
|
|
+
|
|
|
+ if item.ApplyMethod == 3 {
|
|
|
+ delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ list[i].DelayPermission = delayPermission
|
|
|
+ }
|
|
|
+ if item.ApproveRoleTypeCode == roleTypeCode {
|
|
|
+ list[i].OpButton = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ page := paging.GetPaging(currentIndex, pageSize, total)
|
|
|
+ resp := approval.CompanyApprovalListResp{
|
|
|
+ Paging: page,
|
|
|
+ List: list,
|
|
|
+ }
|
|
|
+ this.OkDetailed(resp, "获取成功")
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 获取审批单详情接口
|
|
|
+// @Description 获取审批单详情接口
|
|
|
+// @Param ApprovalId query int true "审批单id"
|
|
|
+// @Success 200 {object} approval.CompanyApprovalDetailResp
|
|
|
+// @router /detail [get]
|
|
|
+func (this *MessageCommon) Detail() {
|
|
|
+ sysUser := this.AdminWx
|
|
|
+ roleTypeCode := sysUser.RoleTypeCode
|
|
|
+
|
|
|
+ companyApprovalId, _ := this.GetInt("ApprovalId")
|
|
|
+ var condition string
|
|
|
+ var pars []interface{}
|
|
|
+
|
|
|
+ if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //审批
|
|
|
+ condition += ` AND c.approve_role_type_code=? `
|
|
|
+ pars = append(pars, roleTypeCode)
|
|
|
+ } else if roleTypeCode == utils.ROLE_TYPE_CODE_FICC_SELLER || roleTypeCode == utils.ROLE_TYPE_CODE_RAI_SELLER { //销售
|
|
|
+ condition += ` AND c.apply_user_id=? `
|
|
|
+ pars = append(pars, sysUser.AdminId)
|
|
|
+ }
|
|
|
+
|
|
|
+ item, err := company_approval.GetApprovalListByApprovalId(condition, pars, companyApprovalId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取数据失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if item.FreezeStartDate != "" && item.FreezeEndDate != "" && item.Status == utils.COMPANY_STATUS_FREEZE {
|
|
|
+ freezeEndDate, _ := time.Parse(utils.FormatDate, item.FreezeEndDate)
|
|
|
+ if time.Now().Before(freezeEndDate) {
|
|
|
+ expireDays := freezeEndDate.Sub(time.Now()).Hours() / 24
|
|
|
+ item.FreezeExpireDays = int(expireDays)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if item.StartDate != "" && item.EndDate != "" {
|
|
|
+ endDate, _ := time.Parse(utils.FormatDate, item.EndDate)
|
|
|
+ if time.Now().Before(endDate) {
|
|
|
+ expireDays := endDate.Sub(time.Now()).Hours() / 24
|
|
|
+ item.ExpireDay = int(expireDays)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ approvalCount, err := company_approval.GetCompanyApprovalCount(item.CompanyId, item.ProductId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("获取失败", "获取延期审批次数失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ item.ApprovalCount = approvalCount
|
|
|
+
|
|
|
+ //if item.ApplyMethod == 3 {
|
|
|
+ // delayPermission, err := company_delay_permission.GetApplyDelayPermission(item.CompanyApprovalId)
|
|
|
+ // if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ // this.FailWithMessage("获取失败", "获取延期审批权限失败,Err:"+err.Error())
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ // item.DelayPermission = delayPermission
|
|
|
+ //}
|
|
|
+
|
|
|
+ resp := approval.CompanyApprovalDetailResp{
|
|
|
+ CompanyApprovalDetail: item,
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取权限列表
|
|
|
+
|
|
|
+ //子权限切片集合
|
|
|
+ var permissionClassifyArr []string
|
|
|
+ if item.ProductId == 1 {
|
|
|
+ for _, v := range utils.PermissionFiccClassifyArr {
|
|
|
+ permissionClassifyArr = append(permissionClassifyArr, v)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ permissionClassifyArr = append(permissionClassifyArr, "权益")
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取需要审批的权限
|
|
|
+ delayPermissionList, err := company_delay_permission.GetDelayPermissionItems(item.CompanyId, item.CompanyApprovalId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("获取失败", "获取审批权限失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ delayPermissionIdMap := make(map[int]int)
|
|
|
+ for _, delayPermission := range delayPermissionList {
|
|
|
+ delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ //遍历获取
|
|
|
+ for _, v := range permissionClassifyArr {
|
|
|
+ checkList := make([]int, 0)
|
|
|
+ plist := new(company_report_permission.PermissionLookList)
|
|
|
+ items, err := company_report_permission.GetPermissionLookItems(item.ProductId, v)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, n := range items {
|
|
|
+ if _, ok := delayPermissionIdMap[n.ChartPermissionId]; ok {
|
|
|
+ checkList = append(checkList, n.ChartPermissionId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ plist.Items = items
|
|
|
+ plist.ClassifyName = v
|
|
|
+ plist.CheckList = checkList
|
|
|
+
|
|
|
+ if item.ProductId == 1 {
|
|
|
+ resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
|
|
|
+ } else {
|
|
|
+ resp.PermissionList = append(resp.PermissionList, plist)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ this.OkDetailed(resp, "获取成功")
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 获取审批单中的权限列表
|
|
|
+// @Description 获取审批单中的权限列表接口
|
|
|
+// @Param ApprovalId query int true "审批单id"
|
|
|
+// @Success 200 {object} approval.CompanyPermissionResp
|
|
|
+// @router /getApprovalPermissionList [get]
|
|
|
+func (this *MessageCommon) GetApprovalPermissionList() {
|
|
|
+ //this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
|
|
|
+ //返回基础参数
|
|
|
+ resp := new(approval.CompanyPermissionResp)
|
|
|
+
|
|
|
+ //获取审批单信息
|
|
|
+ approvalId, _ := this.GetInt("ApprovalId")
|
|
|
+ if approvalId <= 0 {
|
|
|
+ this.FailWithMessage("审批单参数异常", "提交审批单参数异常")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ approvalInfo, err := company_approval.GetCompanyApprovalByApprovalId(approvalId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取审批单数据失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ //子权限切片集合
|
|
|
+ var permissionClassifyArr []string
|
|
|
+ if approvalInfo.ProductId == 1 {
|
|
|
+ for _, v := range utils.PermissionFiccClassifyArr {
|
|
|
+ permissionClassifyArr = append(permissionClassifyArr, v)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ permissionClassifyArr = append(permissionClassifyArr, "权益")
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取需要审批的权限
|
|
|
+ delayPermissionList, err := company_delay_permission.GetDelayPermissionItems(approvalInfo.CompanyId, approvalInfo.CompanyApprovalId)
|
|
|
+ if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("获取失败", "获取审批权限失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ delayPermissionIdMap := make(map[int]int)
|
|
|
+ for _, delayPermission := range delayPermissionList {
|
|
|
+ delayPermissionIdMap[delayPermission.ChartPermissionId] = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ //遍历获取
|
|
|
+ for _, v := range permissionClassifyArr {
|
|
|
+ checkList := make([]int, 0)
|
|
|
+ plist := new(company_report_permission.PermissionLookList)
|
|
|
+ items, err := company_report_permission.GetPermissionLookItems(approvalInfo.ProductId, v)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取失败", "获取权限信息失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ for _, n := range items {
|
|
|
+ if _, ok := delayPermissionIdMap[n.ChartPermissionId]; ok {
|
|
|
+ checkList = append(checkList, n.ChartPermissionId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ plist.Items = items
|
|
|
+ plist.ClassifyName = v
|
|
|
+ plist.CheckList = checkList
|
|
|
+
|
|
|
+ if approvalInfo.ProductId == 1 {
|
|
|
+ resp.FiccPermissionList = append(resp.FiccPermissionList, plist)
|
|
|
+ } else {
|
|
|
+ resp.PermissionList = append(resp.PermissionList, plist)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ this.OkDetailed(resp, "获取成功")
|
|
|
+}
|
|
|
+
|
|
|
+// @Title 审批
|
|
|
+// @Description 审批接口
|
|
|
+// @Param request body approval.CompanyApplyApproveReq true "type json string"
|
|
|
+// @Success Ret=200 审批成功
|
|
|
+// @router /approve [post]
|
|
|
+func (this *MessageCommon) ApplyApprove() {
|
|
|
+ sysUser := this.AdminWx
|
|
|
+ var req approval2.CompanyApplyApproveReq
|
|
|
+ err := json.Unmarshal(this.Ctx.Input.RequestBody, &req)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("参数解析异常!", "参数解析失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ roleTypeCode := sysUser.RoleTypeCode
|
|
|
+ productId := services.GetProductId(roleTypeCode)
|
|
|
+ if productId == 0 {
|
|
|
+ this.FailWithMessage("参数错误", "参数解析失败,Err:"+"客户类型为:"+roleTypeCode)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.CompanyId <= 0 {
|
|
|
+ this.FailWithMessage("参数错误", "客户Id小于等于0")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if req.Status != 1 && req.Status != 2 {
|
|
|
+ this.FailWithMessage("参数错误", "审批状态Id小于等于0")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ companyProduct, err := company_product.GetCompanyProductByCompanyIdAndProductId(req.CompanyId, productId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if companyProduct == nil {
|
|
|
+ this.FailWithMessage("获取审批信息失败", "获取信息失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ approvalItem, err := company_approval.GetCompanyApprovalByCompanyId(req.CompanyId, productId)
|
|
|
+ if err != nil {
|
|
|
+ if err.Error() == utils.ErrNoRow() {
|
|
|
+ this.FailWithMessage("订单已审批,请刷新页面查看最新状态", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
|
|
|
+ } else {
|
|
|
+ this.FailWithMessage("获取信息失败", "获取信息失败,Err:"+err.Error())
|
|
|
+ }
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if approvalItem == nil {
|
|
|
+ this.FailWithMessage("订单已审批,请刷新页面查看最新状态", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if approvalItem.ApproveRoleTypeCode != roleTypeCode {
|
|
|
+ this.FailWithMessage("您无权审批", "ApproveRoleTypeCode:"+approvalItem.ApproveRoleTypeCode+";roleTypeCode:"+roleTypeCode)
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ var approveStatus, approveContent string
|
|
|
+
|
|
|
+ if req.Status == 1 { //通过
|
|
|
+ //申请类型:1:试用->正式,2:冻结—>试用,3:试用延期,4:原销售申请领取流失客户,5:正式客户申请服务更新
|
|
|
+ if approvalItem.ApplyMethod == 1 { //试用转正式
|
|
|
+ //获取合同信息
|
|
|
+ contract, err := company_contract.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("待审批信息不存在", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId)+";Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if contract == nil {
|
|
|
+ this.FailWithMessage("待审批信息不存在", "待审批信息不存在,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+strconv.Itoa(productId))
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = company_approval.TryOutToFormal(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, contract.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if approvalItem.ApplyMethod == 2 { //冻结->试用
|
|
|
+ err = company_approval.FreezeToTryOut(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName, companyProduct.ProductName)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if approvalItem.ApplyMethod == 3 { //试用延期
|
|
|
+ err = company_approval.TryOutDelay(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, sysUser.RealName, companyProduct.EndDate, companyProduct.ProductName)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if approvalItem.ApplyMethod == 4 { //原销售申请领取流失客户
|
|
|
+ err = company_approval.ApplyReceive(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, approvalItem.ApplyUserId, sysUser.RealName, companyProduct.ProductName)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else if approvalItem.ApplyMethod == 5 { //正式客户申请服务更新
|
|
|
+ //获取合同信息
|
|
|
+ contract, err := company_contract.GetCompanyContractDetail(req.CompanyId, productId, req.CompanyContractId)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if contract == nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = company_approval.ApplyServiceUpdate(req.CompanyId, productId, sysUser.AdminId, approvalItem.CompanyApprovalId, contract.CompanyContractId, companyProduct.StartDate, contract.EndDate, sysUser.RealName, companyProduct.ProductName)
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.FailWithMessage("审批失败", "无效的审批状态,CompanyId:"+strconv.Itoa(req.CompanyId)+";productId:"+
|
|
|
+ strconv.Itoa(productId)+";ApplyMethod:"+strconv.Itoa(approvalItem.ApplyMethod)+" ApproveStatus;"+approvalItem.ApproveStatus)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ approveContent = "审批通过"
|
|
|
+ } else { //拒绝
|
|
|
+ if req.Remark == "" {
|
|
|
+ this.FailWithMessage("请填写驳回理由", "请填写驳回理由")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ approveStatus = "驳回"
|
|
|
+ err = company_approval.ApproveRefuse(req.CompanyId, productId, approveStatus, req.Remark)
|
|
|
+ approveContent = "审批驳回"
|
|
|
+ if err != nil {
|
|
|
+ this.FailWithMessage("审批失败", "审批失败,Err:"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //新增客户产品日志
|
|
|
+ {
|
|
|
+ productLog := new(company_product_log.CompanyProductLog)
|
|
|
+ productLog.CompanyProductId = companyProduct.CompanyProductId
|
|
|
+ productLog.CompanyId = companyProduct.CompanyId
|
|
|
+ productLog.ProductId = companyProduct.ProductId
|
|
|
+ productLog.ProductName = companyProduct.ProductName
|
|
|
+ productLog.CompanyName = companyProduct.CompanyName
|
|
|
+ productLog.CompanyName = companyProduct.CompanyName
|
|
|
+ productLog.Source = companyProduct.Source
|
|
|
+ productLog.Reasons = companyProduct.Reasons
|
|
|
+ productLog.Status = companyProduct.Status
|
|
|
+ productLog.IndustryId = companyProduct.IndustryId
|
|
|
+ productLog.IndustryName = companyProduct.IndustryName
|
|
|
+ productLog.SellerId = companyProduct.SellerId
|
|
|
+ productLog.SellerName = companyProduct.SellerName
|
|
|
+ productLog.GroupId = companyProduct.GroupId
|
|
|
+ productLog.DepartmentId = companyProduct.DepartmentId
|
|
|
+ productLog.IsSuspend = companyProduct.IsSuspend
|
|
|
+ productLog.SuspendTime = companyProduct.SuspendTime
|
|
|
+ productLog.ApproveStatus = companyProduct.ApproveStatus
|
|
|
+ productLog.FreezeTime = companyProduct.FreezeTime
|
|
|
+ productLog.Remark = companyProduct.Remark
|
|
|
+ productLog.StartDate = companyProduct.StartDate
|
|
|
+ productLog.EndDate = companyProduct.EndDate
|
|
|
+ productLog.CreateTime = companyProduct.CreateTime
|
|
|
+ productLog.ModifyTime = companyProduct.ModifyTime
|
|
|
+ productLog.LoseReason = companyProduct.LoseReason
|
|
|
+ productLog.LossTime = companyProduct.LossTime
|
|
|
+ productLog.LogType = "modify"
|
|
|
+ productLog.LogCreateTime = time.Now()
|
|
|
+ productLog.AdminId = this.AdminWx.AdminId
|
|
|
+ go company_product_log.AddCompanyProductLog(productLog)
|
|
|
+ }
|
|
|
+ //新增操作记录
|
|
|
+ {
|
|
|
+ remark := "审批"
|
|
|
+ operation := "approve"
|
|
|
+ services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, sysUser.AdminId, companyProduct.CompanyName,
|
|
|
+ companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, sysUser.RealName, req.Remark, companyProduct.Status)
|
|
|
+ }
|
|
|
+ //待办通知
|
|
|
+ {
|
|
|
+ content := companyProduct.CompanyName + " " + approvalItem.ApproveContent + approveContent
|
|
|
+ approvalSysUser, _ := admin.GetAdminById(approvalItem.ApplyUserId)
|
|
|
+ if sysUser != nil {
|
|
|
+ go services.AddCompanyApprovalMessage(sysUser.AdminId, approvalItem.ApplyUserId, req.CompanyId, approvalItem.CompanyApprovalId, 2, companyProduct.CompanyName, content, content, approvalSysUser.Mobile)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.OkWithMessage("审批操作成功")
|
|
|
+}
|