Переглянути джерело

fix(消息列表):调整消息列表页接口返回数据

Roc 3 роки тому
батько
коміт
98e69a4d81

+ 1 - 1
controllers/company_contract.go

@@ -14,7 +14,7 @@ type CompanyContractCommon struct {
 }
 
 // @Title 合同详情详情
-// @Description 合同详情接口接口
+// @Description 合同详情接口
 // @Param   CompanyId   query   int  true       "客户ID"
 // @Param   CompanyContractId   query   int  true       "合同id"
 // @Success 200 {object} company_contract.CompanyContractDetail

+ 1 - 1
controllers/contract.go

@@ -12,7 +12,7 @@ type ContractCommon struct {
 }
 
 // @Title 上传签回附件
-// @Description 上传签回附件接口接口
+// @Description 上传签回附件接口
 // @Param	request	body contract.UploadCheckBackFileReq true "type json string"
 // @Success Ret=200 驳回成功
 // @router /upload_check_back_file [get]

+ 18 - 14
controllers/contract_approval.go

@@ -47,19 +47,22 @@ func (this *ContractApprovalCommon) List() {
 	condition := ""
 	childPars := make([]interface{}, 0)
 	pars := make([]interface{}, 0)
-	//如果不是超管或者合规,那么只能查看自己的合同
-	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //权益管理员
-		condition += ` AND c.product_id = ? `
-		pars = append(pars, 2)
-	} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN { //ficc管理员
-		condition += ` AND c.product_id = ? `
-		pars = append(pars, 1)
-	} else {
-		if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
-			condition += ` AND c.seller_id = ? `
-			pars = append(pars, sysUser.AdminId)
-		}
-	}
+	////如果不是超管或者合规,那么只能查看自己的合同
+	//if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_ADMIN { //权益管理员
+	//	condition += ` AND c.product_id = ? `
+	//	pars = append(pars, 2)
+	//} else if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_ADMIN { //ficc管理员
+	//	condition += ` AND c.product_id = ? `
+	//	pars = append(pars, 1)
+	//} else {
+	//	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_COMPLIANCE && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+	//		condition += ` AND c.seller_id = ? `
+	//		pars = append(pars, sysUser.AdminId)
+	//	}
+	//}
+
+	condition += ` AND (c.seller_id = ? or d.approve_user_id = ?)`
+	pars = append(pars, sysUser.AdminId, sysUser.AdminId)
 
 	//合同类型、、更新时间、所选销售
 	//关键字:合同编号、客户名称,社会信用码
@@ -121,7 +124,8 @@ func (this *ContractApprovalCommon) List() {
 	}
 	startSize = paging.StartIndex(currentIndex, pageSize)
 
-	total, err := contract_approval.GetContractApprovalListCount(condition, pars)
+	//total, err := contract_approval.GetContractApprovalListCount(condition, pars)
+	total, err := contract_approval.GetContractApprovalListCount(childCondition, condition, childPars, pars)
 	if err != nil {
 		this.FailWithMessage("获取失败", "获取数据总数失败,Err:"+err.Error())
 		return

+ 74 - 0
controllers/message.go

@@ -4,9 +4,13 @@ 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"
 )
 
 //消息模块
@@ -96,6 +100,76 @@ func (this *MessageCommon) MessageList() {
 		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,

+ 8 - 0
models/tables/company_approval/company_approval.go

@@ -806,3 +806,11 @@ func GetCompanyApprovalCount(companyId, productId int) (count int, err error) {
 	err = o.Raw(sql, companyId, productId).QueryRow(&count)
 	return
 }
+
+//根据申请id字符串来获取申请单列表
+func GetApprovalListByApprovalIds(companyApprovalIds string) (list []*CompanyApproval, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * from company_approval WHERE  company_approval_id in (` + companyApprovalIds + `)`
+	_, err = o.Raw(sql).QueryRows(&list)
+	return
+}

+ 21 - 12
models/tables/company_approval_message/company_approval_message.go

@@ -41,18 +41,27 @@ WHERE company_approval_id=? AND source_type=?  AND message_type=1 AND operation_
 
 //消息列表结果
 type CompanyApprovalMessageList struct {
-	Id                int    `orm:"column(id);pk"`
-	CreateUserId      int    `description:"申请者id"`
-	MessageStatus     int    `description:"消息状态:0未读,1:已读,2:作废"`
-	MessageType       int    `description:"1:申请消息,2:审批结果"`
-	ApprovalStatus    int    `description:"审批结果:1:待审批,2:已审批,3:已驳回"`
-	SourceType        int    `description:"消息来源类型,1:客户,2:合同,3:用印"`
-	Remark            string `description:"备注信息"`
-	Content           string `description:"消息内容"`
-	CompanyName       string `description:"客户名称"`
-	CreateTime        string `description:"创建时间"`
-	RealName          string `description:"销售名称"`
-	CompanyApprovalId int    `description:"审批单id"`
+	Id                int          `orm:"column(id);pk"`
+	CreateUserId      int          `description:"申请者id"`
+	MessageStatus     int          `description:"消息状态:0未读,1:已读,2:作废"`
+	MessageType       int          `description:"1:申请消息,2:审批结果,3:文字消息"`
+	ApprovalStatus    int          `description:"审批结果:1:待审批,2:已审批,3:已驳回"`
+	SourceType        int          `description:"消息来源类型,1:客户,2:合同,3:用印"`
+	Remark            string       `description:"备注信息"`
+	Content           string       `description:"消息内容"`
+	CompanyName       string       `description:"客户名称"`
+	CreateTime        string       `description:"创建时间"`
+	RealName          string       `description:"销售名称"`
+	CompanyApprovalId int          `description:"审批单id"`
+	ApprovalInfo      ApprovalInfo `description:"审批单信息"`
+}
+
+//消息审批单信息
+type ApprovalInfo struct {
+	ApplyName    string `description:"申请人姓名"`
+	Type         string `description:"类型"`
+	ApplyTime    string `description:"提交时间"`
+	ApprovalTime string `description:"审批时间"`
 }
 
 type CompanyApprovalMessageListResp struct {

+ 31 - 2
models/tables/contract_approval/contract_approval.go

@@ -50,7 +50,7 @@ func GetRejectContractCountByContractId(contractId int) (total int64, err error)
 }
 
 //获取审批列表数据数量
-func GetContractApprovalListCount(condition string, pars []interface{}) (count int, err error) {
+func GetContractApprovalListCountOld(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `
 SELECT a.* from contract_approval a
@@ -63,6 +63,26 @@ WHERE
 	err = o.Raw(sql, pars).QueryRow(&count)
 	return
 }
+func GetContractApprovalListCount(childCondition, condition string, childPars, pars []interface{}) (count int, err error) {
+	o := orm.NewOrm()
+	sql := `
+SELECT
+a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
+c.contract_type,c.start_date,c.end_date,c.price,c.company_name,c.seller_id,c.seller_name,c.file_url,c.contract_code from contract_approval a
+	join 
+	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
+	sql += childCondition
+	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
+	JOIN contract c ON a.contract_id = c.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
+WHERE c.is_delete = 0 `
+	sql += condition
+	sql += ` group by contract_id `
+
+	sql = `select count(*) count from (` + sql + `) g`
+	err = o.Raw(sql, pars).QueryRow(&count)
+	return
+}
 
 //审批列表
 type ContractApprovalList struct {
@@ -101,13 +121,14 @@ func GetContractApprovalList(childCondition, condition string, childPars, pars [
 	o := orm.NewOrm()
 	sql := `
 SELECT
-a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
+a.contract_approval_id,a.contract_id,a.approve_remark,a.create_time,a.modify_time,a.status,c.status contract_status,c.product_id,
 c.contract_type,c.start_date,c.end_date,c.price,c.company_name,c.seller_id,c.seller_name,c.file_url,c.contract_code from contract_approval a
 	join 
 	( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 `
 	sql += childCondition
 	sql += `  GROUP BY contract_id ) b on a.contract_approval_id=b.max_id
 	JOIN contract c ON a.contract_id = c.contract_id 
+	JOIN contract_approval_record d on a.contract_approval_id=d.contract_approval_id
 WHERE c.is_delete = 0 `
 	sql += condition
 	sql += ` group by contract_id order by modify_time desc LIMIT ?,? `
@@ -499,3 +520,11 @@ func (ContractApproval) ApprovedByCc(contractApprovalInfo *ContractApproval, con
 
 	return
 }
+
+//根据合同审批单id集合获取合同审批单信息列表
+func GetContractApprovalByIds(contractApprovalIds string) (contractApprovalList []*ContractApproval, err error) {
+	o := orm.NewOrm()
+	sql := `select * from contract_approval where contract_approval_id in (` + contractApprovalIds + `) `
+	_, err = o.Raw(sql).QueryRows(&contractApprovalList)
+	return
+}