Browse Source

no message

zhangchuanxing 4 weeks ago
parent
commit
18523e44c4
5 changed files with 119 additions and 7 deletions
  1. 74 3
      controller/crm/contract.go
  2. 27 1
      models/crm/seal.go
  3. 1 0
      routers/crm.go
  4. 3 3
      services/crm/seal.go
  5. 14 0
      utils/common.go

+ 74 - 3
controller/crm/contract.go

@@ -273,14 +273,85 @@ func (rg *ContractController) ServiceDetail(c *gin.Context) {
 	resp.OkData("获取成功", contractDetail, c)
 }
 
+// SealList
+// @Title 权益搜索合规合同
+// @Description 权益搜索合规合同
+// @Param   keyword		query	string	false	"关键词"
+// @Success 200 {object} crm.ContractSearchListResp
+// @router /crm/contract/seal_list [get]
+func (rg *ContractController) SealList(c *gin.Context) {
+	var req crm.ContractSearchListReq
+	if e := c.BindQuery(&req); e != nil {
+		err, ok := e.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+e.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", err.Translate(global.Trans), c)
+		return
+	}
+	keyword := req.Keyword
+	if keyword == "" {
+		resp.FailMsg("获取失败", "合同编号不能为空", c)
+		return
+	}
+
+	if !utils.CheckRaiContractCode(keyword) {
+		resp.FailMsg("获取失败", "合同编号不符合规范", c)
+		return
+	}
+
+	cond := ``
+	pars := make([]interface{}, 0)
+	kw := "%" + req.Keyword + "%"
+	cond += `  code  LIKE ? `
+	pars = append(pars, kw)
+	if req.ProductId > 0 {
+		cond += `  product_id = ?`
+		pars = append(pars, req.ProductId)
+	}
+	page := new(base.Page)
+	page.SetPageSize(req.PageSize)
+	page.SetCurrent(req.Current)
+	page.AddOrderItem(base.OrderItem{Column: "create_time", Asc: false})
+
+	ob := new(crm.Seal)
+	total, list, e := ob.PageList(page, cond, pars)
+	if e != nil {
+		resp.FailMsg("获取失败", "获取合同列表失败, Err: "+e.Error(), c)
+		return
+	}
+
+	respList := make([]*crm.ContractSearchListResp, 0)
+	for i := range list {
+		respItem := &crm.ContractSearchListResp{
+			ContractId:   list[i].SealId,
+			ContractCode: list[i].Code,
+			ProductId:    list[i].ProductId,
+			CompanyName:  list[i].CompanyName,
+			SellerId:     list[i].UserId,
+			SellerName:   list[i].UserName,
+			StartDate:    utils.TimeTransferString(utils.FormatDate, list[i].StartDate),
+			EndDate:      utils.TimeTransferString(utils.FormatDate, list[i].EndDate),
+		}
+		respItem.ContractBusinessTypeInt = 2
+		respList = append(respList, respItem)
+	}
+	page.SetTotal(total)
+	baseData := new(base.BaseData)
+	baseData.SetPage(page)
+	baseData.SetList(respList)
+	resp.OkData("获取成功", baseData, c)
+}
+
 // SealDetail
 // @Title 获取合同的套餐及品种权限
 // @Description 获取合同的套餐及品种权限
-// @Param   ContractCode  query  string  true  "合同编号"
+// @Param   ContractId  query  int  true  "合同ID"
 // @Success 200 {object} crm.ContractDetail
 // @router /crm/contract/seal_detail [get]
 func (rg *ContractController) SealDetail(c *gin.Context) {
-	var req crm.SealServiceDetailReq
+	var req crm.ContractServiceDetailReq
 	if e := c.BindQuery(&req); e != nil {
 		err, ok := e.(validator.ValidationErrors)
 		if !ok {
@@ -291,7 +362,7 @@ func (rg *ContractController) SealDetail(c *gin.Context) {
 		return
 	}
 
-	contractDetail, e := crmService.GetSealDetail(req.ContractCode)
+	contractDetail, e := crmService.GetSealDetail(req.ContractId)
 	if e != nil {
 		global.LOG.Error(e.Error())
 		resp.FailMsg("获取失败", "获取合同套餐及品种信息失败, Err: "+e.Error(), c)

+ 27 - 1
models/crm/seal.go

@@ -2,6 +2,7 @@ package crm
 
 import (
 	"hongze/fms_api/global"
+	"hongze/fms_api/models/base"
 	"time"
 )
 
@@ -51,7 +52,20 @@ type SealServiceDetailReq struct {
 	ContractCode string `json:"contract_code" form:"contract_code"  description:"合同编号"`
 }
 
-// GetContractDetailById 根据合同ID获取合同详情信息
+func (c *Seal) PageList(page base.IPage, condition string, pars []interface{}) (count int64, results []*Seal, err error) {
+	results = make([]*Seal, 0)
+	query := global.MYSQL["report"].Model(Seal{}).
+		Where("is_delete = 0").
+		Where(condition, pars...)
+	query.Count(&count)
+	if len(page.GetOrderItemsString()) > 0 {
+		query = query.Order(page.GetOrderItemsString())
+	}
+	err = query.Limit(int(page.GetPageSize())).Offset(int(page.Offset())).Find(&results).Error
+	return
+}
+
+// GetSealInfoByCode 根据合同ID获取合同详情信息
 func GetSealInfoByCode(code string) (item *Seal, err error) {
 	//detail = new(SealDetail)
 	//item := new(Seal)
@@ -65,3 +79,15 @@ func GetSealInfoByCode(code string) (item *Seal, err error) {
 
 	return
 }
+
+// GetSealInfoById 根据合同ID获取合同详情信息
+func GetSealInfoById(sealId int) (item *Seal, err error) {
+	query := global.MYSQL["report"].
+		Model(Seal{}).
+		Where(" seal_id  = ?", sealId)
+	err = query.Find(&item).Error
+	if err != nil {
+		return
+	}
+	return
+}

+ 1 - 0
routers/crm.go

@@ -13,6 +13,7 @@ func InitCrm(rg *gin.RouterGroup) {
 	crGroup.GET("search_list", ct.SearchList)
 	crGroup.GET("permission_list", ct.PermissionList)
 	crGroup.GET("service_detail", ct.ServiceDetail)
+	crGroup.GET("seal_list", ct.SealList)
 	crGroup.GET("seal_detail", ct.SealDetail)
 
 	// 销售

+ 3 - 3
services/crm/seal.go

@@ -5,9 +5,9 @@ import (
 	"hongze/fms_api/models/crm"
 )
 
-// GetContractDetail 根据id获取合同详情(包含服务)
-func GetSealDetail(contractCode string) (itemRsp crm.ContractDetail, err error) {
-	sealDetail, tmpErr := crm.GetSealInfoByCode(contractCode)
+// GetSealDetail 根据id获取合同详情(包含服务)
+func GetSealDetail(sealId int) (itemRsp crm.ContractDetail, err error) {
+	sealDetail, tmpErr := crm.GetSealInfoById(sealId)
 	if tmpErr != nil {
 		err = errors.New("查询业务关联合同异常:" + tmpErr.Error())
 		return

+ 14 - 0
utils/common.go

@@ -1098,3 +1098,17 @@ func PublicGetRequest(url, authorization string) (body []byte, err error) {
 	}
 	return
 }
+
+// CheckRaiContractCode 校验权益合规编号是否符合规范
+func CheckRaiContractCode(contractCode string) (has bool) {
+	has = true
+	if !strings.Contains(contractCode, "HZEQ") { //校验是否包含必须得字符串
+		has = false
+		return
+	}
+	if len(contractCode) < 12 { //校验字符串长度
+		has = false
+		return
+	}
+	return
+}