Kaynağa Gözat

Merge branch 'crm/crm_16.8' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 4 gün önce
ebeveyn
işleme
1b34517981

+ 153 - 0
controllers/seal/seal_approval.go

@@ -13,6 +13,7 @@ import (
 	sealModels "hongze/hz_crm_api/models/seal"
 	"hongze/hz_crm_api/models/seal/request"
 	"hongze/hz_crm_api/models/seal/response"
+	"hongze/hz_crm_api/services"
 	contractService "hongze/hz_crm_api/services/contract"
 	"hongze/hz_crm_api/services/seal"
 	"hongze/hz_crm_api/utils"
@@ -501,6 +502,7 @@ func (this *SealApprovalController) Apply() {
 		} else {
 			req.ServiceType = "续约合同"
 		}
+		reqVerify["Money"] = []string{utils.NotEmpty()}
 	} else {
 		reqVerify["ServiceType"] = []string{utils.NotEmpty()}
 	}
@@ -1053,3 +1055,154 @@ func (this *SealApprovalController) AffiliatedCompanyList() {
 	br.Msg = "获取成功"
 	br.Data = list
 }
+
+// 用印客户名称检索
+// @Title 用印客户名称检索列表
+// @Description 关联公司列表
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Success 200 {object} company.CompanySearchView
+// @router /company/search [get]
+func (this *SealApprovalController) CompanySearch() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser is Empty"
+		br.Ret = 408
+		return
+	}
+	KeyWord := this.GetString("KeyWord")
+	if KeyWord == "" {
+		br.Msg = "请输入搜索词!"
+		return
+	}
+	KeyWord = "%" + KeyWord + "%"
+	productId := services.GetProductId(sysUser.RoleTypeCode)
+	var groupId int
+	if sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_FICC_GROUP || sysUser.RoleTypeCode == utils.ROLE_TYPE_CODE_RAI_GROUP {
+		groupId = sysUser.GroupId
+	} else {
+		groupId = -1
+	}
+
+	list, err := company.GetCompanySearchBySeal(productId, sysUser.AdminId, groupId, KeyWord)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "搜索客户失败!"
+		br.ErrMsg = "搜索客户失败!Err:" + err.Error()
+		return
+	}
+	if list == nil {
+		list = make([]*company.CompanySearchView, 0)
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = list
+}
+
+// 用印合同编号检索
+// @Title 用印合同编号检索
+// @Description 关联用印信息列表
+// @Param   KeyWord   query   string  true       "搜索关键词"
+// @Success 200 {object} sealModels.SealSearCodeViewListResp
+// @router /sealcode/search [get]
+func (this *SealApprovalController) SealCodeSearch() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser is Empty"
+		br.Ret = 408
+		return
+	}
+	KeyWord := this.GetString("KeyWord")
+	if KeyWord == "" {
+		br.Msg = "请输入搜索词!"
+		return
+	}
+	KeyWord = "%" + KeyWord + "%"
+	var condition string
+	var pars []interface{}
+	condition += ` AND code LIKE ?  AND  user_id = ?   `
+	pars = append(pars, KeyWord, sysUser.AdminId)
+
+	list, err := sealModels.GetList(condition, pars, 0, 100)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "搜索客户失败!"
+		br.ErrMsg = "搜索客户失败!Err:" + err.Error()
+		return
+	}
+	resp := new(sealModels.SealSearCodeViewListResp)
+	if list == nil {
+		resp.List = make([]*sealModels.SealSearCodeView, 0)
+	} else {
+		for _, v := range list {
+			item := new(sealModels.SealSearCodeView)
+			item.SealId = v.SealId
+			item.Code = v.Code
+			item.StartDate = v.StartDate
+			item.EndDate = v.EndDate
+			item.Money = v.Money
+			resp.List = append(resp.List, item)
+		}
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
+// 通过ID获取用印对应详情
+// @Title 通过ID获取用印对应详情接口
+// @Description 获取用印对应详情
+// @Param   SealId   query   int	  true       "用印ID"
+// @Success 200 {object} response.SealSearCodeViewDetailResp
+// @router /sealdetail/by_sealid [get]
+func (this *SealApprovalController) SealdetailById() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser is Empty"
+		br.Ret = 408
+		return
+	}
+	sealId, _ := this.GetInt("SealId")
+	if sealId == 0 {
+		br.Msg = "请输入用印ID!"
+		return
+	}
+
+	sealInfo, err := sealModels.GetSealInfoById(sealId)
+	if err != nil {
+		br.Msg = "获取用印失败!"
+		br.ErrMsg = "获取用印失败!Err:" + err.Error()
+		return
+	}
+
+	resp := new(sealModels.SealSearCodeViewDetailResp)
+
+	item := new(sealModels.SealSearCodeView)
+	item.SealId = sealInfo.SealId
+	item.Code = sealInfo.Code
+	item.StartDate = sealInfo.StartDate
+	item.EndDate = sealInfo.EndDate
+	item.Money = sealInfo.Money
+	resp.Detail = item
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}

+ 30 - 0
models/company/company.go

@@ -2017,3 +2017,33 @@ func GetCompanyListByCompanyId(companyId []int) (items []*Company, err error) {
 	_, err = o.Raw(sql, companyId).QueryRows(&items)
 	return
 }
+
+type CompanySearchView struct {
+	CompanyId      int    `orm:"column(company_id);pk"`
+	CompanyName    string `description:"客户名称"`
+	CreditCode     string `description:"社会统一信用码"`
+	CompanyCode    string `description:"客户编码"`
+	EnglishCompany int    `description:"是否为英文客户"`
+}
+
+func GetCompanySearchBySeal(productId, sellerId, groupId int, keyWord string) (items []*CompanySearchView, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+				b.company_id,
+				a.company_name,
+				a.credit_code
+			FROM
+				company AS a
+			INNER JOIN company_product AS b ON a.company_id = b.company_id 
+			WHERE
+			     1=1 
+				 AND  b.product_id = ?
+				 AND (b.seller_id = ?   OR b.group_id =  ?  ) 
+			  	 AND a.company_name LIKE ?
+			GROUP BY b.company_id `
+	_, err = o.Raw(sql, productId, sellerId, groupId, keyWord).QueryRows(&items)
+	if err != nil {
+		return
+	}
+	return
+}

+ 6 - 4
models/seal/request/seal_approval.go

@@ -13,9 +13,10 @@ type SealApprovalApplyReq struct {
 	FileUrls          []string `description:"多个文件附件地址"`
 	FileNum           int      `description:"文件份数"`
 	AffiliatedCompany string   `description:"归属公司"`
-	CompanyId         int      `description:"客户id."`
+	CompanyId         int      `description:"客户id"`
 	StartDate         string   `description:"开始日期."`
-	EndDate           string   `description:"结束日期."`
+	EndDate           string   `description:"结束日期"`
+	Money             float64  `description:"合同金额"`
 }
 
 // 用印审批编辑请求
@@ -32,8 +33,9 @@ type SealApprovalEditReq struct {
 	FileUrls          []string `description:"多个文件附件地址"`
 	FileNum           int      `description:"文件份数"`
 	AffiliatedCompany string   `description:"归属公司"`
-	StartDate         string   `description:"开始日期."`
-	EndDate           string   `description:"结束日期."`
+	StartDate         string   `description:"开始日期"`
+	EndDate           string   `description:"结束日期"`
+	Money             float64  `description:"合同金额"`
 }
 
 // 用印审批撤回请求

+ 20 - 0
models/seal/seal.go

@@ -39,6 +39,7 @@ type Seal struct {
 	StartDate         string    `description:"开始日期."`
 	EndDate           string    `description:"结束日期。"`
 	CompanyContractId int       `description:"合同id"`
+	Money             float64   `description:"合同金额"`
 }
 
 var EnumUse = []string{"销售合同", "渠道合同", "付款通知函", "招投标", "战略合作协议", "代付合同", "总对总协议"}
@@ -403,3 +404,22 @@ WHERE c.is_delete = 0 AND a.approval_type="seal" `
 
 	return
 }
+
+// Seal 用印结构体
+type SealSearCodeView struct {
+	SealId    int     `orm:"column(seal_id);pk"`
+	Code      string  `description:"用印编号,长度32位"`
+	StartDate string  `description:"开始日期."`
+	EndDate   string  `description:"结束日期。"`
+	Money     float64 `description:"合同金额"`
+}
+
+// Seal 用印结构体
+type SealSearCodeViewListResp struct {
+	List []*SealSearCodeView
+}
+
+// Seal 用印结构体
+type SealSearCodeViewDetailResp struct {
+	Detail *SealSearCodeView
+}

+ 27 - 0
routers/commentsRouter.go

@@ -8044,6 +8044,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
+        beego.ControllerComments{
+            Method: "CompanySearch",
+            Router: `/company/search`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
         beego.ControllerComments{
             Method: "Del",
@@ -8116,6 +8125,24 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
+        beego.ControllerComments{
+            Method: "SealCodeSearch",
+            Router: `/sealcode/search`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
+    beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
+        beego.ControllerComments{
+            Method: "SealdetailById",
+            Router: `/sealdetail/by_sealid`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"] = append(beego.GlobalControllerRouter["hongze/hz_crm_api/controllers/seal:SealApprovalController"],
         beego.ControllerComments{
             Method: "VerifierEdit",

+ 8 - 65
services/seal/seal.go

@@ -123,7 +123,7 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	}()
 
 	// 添加用印
-	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate)
+	sealInfo, err := addSeal(sysUser.AdminId, req.ContractId, req.FileNum, req.CompanyId, sysUser.RealName, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate, req.Money)
 	if err != nil {
 		return
 	}
@@ -139,67 +139,8 @@ func ApplySeal(sysUser *system.Admin, req request.SealApprovalApplyReq) (err err
 	return
 }
 
-//func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string) (sealInfo *seal.Seal, err error) {
-//	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
-//		err = errors.New("用印用途异常")
-//		return
-//	}
-//	if !strings.Contains(strings.Join(seal.EnumServiceType, ","), serviceType) {
-//		err = errors.New("业务类型异常")
-//		return
-//	}
-//
-//	sealCode, err := seal.GetSealCode()
-//	if err != nil {
-//		return
-//	}
-//	fileUrl := ""
-//	now := time.Now()
-//	attachments := make([]*seal.Attachment, 0)
-//	if len(fileUrls) == 1 {
-//		fileUrl = fileUrls[0]
-//	}
-//
-//	sealInfo = &seal.Seal{
-//		Code:              sealCode,
-//		UserId:            userId,
-//		UserName:          userName,
-//		Use:               use,
-//		CompanyName:       companyName,
-//		UseCompanyName:    useCompanyName,
-//		CreditCode:        creditCode,
-//		ServiceType:       serviceType,
-//		SealType:          sealType,
-//		Status:            "待提交",
-//		Remark:            remark,
-//		FileUrl:           fileUrl,
-//		FileNum:           fileNum,
-//		ContractId:        contractId,
-//		ModifyTime:        now,
-//		CreateTime:        now,
-//		AffiliatedCompany: affiliatedCompany,
-//	}
-//	err = seal.AddSeal(sealInfo)
-//	if err != nil {
-//		return
-//	}
-//	if len(fileUrls) > 1 {
-//		for _, v := range fileUrls {
-//			tmp := &seal.Attachment{
-//				SealId:     sealInfo.SealId,
-//				FileUrl:    v,
-//				ModifyTime: now,
-//				CreateTime: now,
-//			}
-//			attachments = append(attachments, tmp)
-//		}
-//		err = seal.AddAttachments(attachments)
-//	}
-//	return
-//}
-
-// addSeal 新增用印.
-func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string) (sealInfo *seal.Seal, err error) {
+// addSeal 新增用印
+func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyName, useCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string, money float64) (sealInfo *seal.Seal, err error) {
 	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
 		err = errors.New("用印用途异常")
 		return
@@ -261,6 +202,7 @@ func addSeal(userId, contractId, fileNum, companyId int, userName, use, companyN
 		CompanyId:         companyId,
 		StartDate:         startDate,
 		EndDate:           endDate,
+		Money:             money,
 	}
 
 	err = seal.AddSeal(sealInfo)
@@ -298,7 +240,7 @@ func EditApply(sysUser *system.Admin, req request.SealApprovalEditReq) (err erro
 	}()
 
 	// 编辑用印
-	sealInfo, err := editSeal(req.SealId, sysUser.AdminId, req.ContractId, req.FileNum, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate)
+	sealInfo, err := editSeal(req.SealId, sysUser.AdminId, req.ContractId, req.FileNum, req.Use, req.CompanyName, req.UseCompanyName, req.CreditCode, req.ServiceType, req.SealType, req.Remark, req.FileUrls, req.AffiliatedCompany, req.StartDate, req.EndDate, req.Money)
 	if err != nil {
 		return
 	}
@@ -315,7 +257,7 @@ func EditApply(sysUser *system.Admin, req request.SealApprovalEditReq) (err erro
 }
 
 // editSeal 编辑用印申请
-func editSeal(sealId, userId, contractId, fileNum int, use, companyName, userCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string) (sealInfo *seal.Seal, err error) {
+func editSeal(sealId, userId, contractId, fileNum int, use, companyName, userCompanyName, creditCode, serviceType, sealType, remark string, fileUrls []string, affiliatedCompany, startDate, endDate string, money float64) (sealInfo *seal.Seal, err error) {
 	if !strings.Contains(strings.Join(seal.EnumUse, ","), use) {
 		err = errors.New("用印用途异常")
 		return
@@ -364,7 +306,8 @@ func editSeal(sealId, userId, contractId, fileNum int, use, companyName, userCom
 	sealInfo.AffiliatedCompany = affiliatedCompany
 	sealInfo.StartDate = startDate
 	sealInfo.EndDate = endDate
-	err = sealInfo.Update([]string{"Use", "CompanyName", "UseCompanyName", "CreditCode", "ServiceType", "SealType", "Remark", "FileUrl", "FileNum", "ContractId", "ModifyTime", "CreateTime", "Status", "AffiliatedCompany", "StartDate", "EndDate"})
+	sealInfo.Money = money
+	err = sealInfo.Update([]string{"Use", "CompanyName", "UseCompanyName", "CreditCode", "ServiceType", "SealType", "Remark", "FileUrl", "FileNum", "ContractId", "ModifyTime", "CreateTime", "Status", "AffiliatedCompany", "StartDate", "EndDate", "Money"})
 	if err != nil {
 		return
 	}