Browse Source

no message

zhangchuanxing 3 days ago
parent
commit
f3ae4d717d

+ 37 - 14
controllers/company_apply_v2.go

@@ -455,6 +455,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		br.ErrMsg = "参数解析失败,Err:" + err.Error()
 		return
 	}
+	wxUserId := req.WxUserId
 	if req.CompanyId <= 0 {
 		br.Msg = "参数错误"
 		br.ErrMsg = "参数错误,客户id小于等于0"
@@ -512,7 +513,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		br.ErrMsg = "客户不存在,不可提交审批:companyId:" + strconv.Itoa(req.CompanyId) + ";productId:" + strconv.Itoa(productId)
 		return
 	}
-	if companyProduct.Status != utils.COMPANY_STATUS_TRY_OUT && companyProduct.InitStatus != utils.COMPANY_STATUS_FOREVER {
+	if companyProduct.Status != utils.COMPANY_STATUS_TRY_OUT && companyProduct.InitStatus != utils.COMPANY_STATUS_FOREVER && wxUserId == 0 {
 		br.Msg = "客户状态为:" + companyProduct.Status + ";不可进行转正申请"
 		br.ErrMsg = "客户状态为:" + companyProduct.Status + ";不可进行转正申请"
 		return
@@ -684,7 +685,12 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			if raicontractType != "新签合同" {
 				//startDateTime, _ := time.Parse(utils.FormatDate, req.StartDate)
 				//startDateTime = startDateTime.AddDate(-1, 0, 0)
-				totalLastYear, err := contractService.GetCompanyContractCountRaiByLastYear(req.CompanyId, req.StartDate)
+				var totalLastYear int
+				if wxUserId == 0 {
+					totalLastYear, err = contractService.GetCompanyContractCountRaiByLastYear(req.CompanyId, req.StartDate)
+				} else {
+					totalLastYear, err = contractService.GetCompanyContractCountRaiByLastYearUserId(wxUserId, req.StartDate)
+				}
 				if err != nil {
 					br.Msg = "获取合同信息失败"
 					br.ErrMsg = "获取合同信息失败,Err:" + err.Error()
@@ -840,6 +846,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		contract.SellerNameLast = companyProduct.SellerName
 		contract.ShareSellerLast = companyProduct.ShareSeller
 		contract.ShareSellerIdLast = companyProduct.ShareSellerId
+		contract.WxUserId = wxUserId
 		newId, err := company.AddCompanyContract(contract)
 		if err != nil {
 			br.Msg = "新增合同失败"
@@ -868,6 +875,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		for _, v := range permissionArr {
 			item := new(company.CompanyContractPermission)
 			item.CompanyId = req.CompanyId
+			item.WxUserId = req.WxUserId
 			item.CompanyContractId = int(newId)
 
 			chartPermissionId, tmpErr := strconv.Atoi(v)
@@ -902,6 +910,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 			//新增日志
 			itemLog := new(company.CompanyContractPermissionLog)
 			itemLog.CompanyId = req.CompanyId
+			itemLog.WxUserId = req.WxUserId
 			itemLog.CompanyContractId = int(newId)
 			itemLog.ChartPermissionId = v
 			itemLog.StartDate = req.StartDate
@@ -929,7 +938,18 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		approval.ApproveRoleTypeCode = approveRoleTypeCode
 		approval.ApproveRealName = ""
 		approval.ApproveTime = time.Now()
-		approval.ApproveContent = "试用转正式"
+		if wxUserId == 0 {
+			approval.ApproveContent = "试用转正式"
+		} else {
+			approval.ApproveContent = "个人转正"
+			userInfo, err := models.GetWxUserByUserId(wxUserId)
+			if err != nil {
+				br.Msg = "获取联系人异常!"
+				br.ErrMsg = "获取联系人异常,Err:" + err.Error()
+				return
+			}
+			approval.WxUserName = userInfo.RealName
+		}
 		approval.ApplyMethod = applyMethod
 		approval.ApplyReasons = ""
 		approval.ApplyUserId = sysUser.AdminId
@@ -938,6 +958,7 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		approval.ModifyTime = time.Now()
 		approval.CompanyContractId = int(newId)
 		approval.IsFormal = companyProduct.IsFormal
+		approval.WxUserId = wxUserId
 		companyApprovalId, err = company.AddCompanyApproval(approval)
 		if err != nil {
 			br.Msg = "申请失败"
@@ -960,17 +981,19 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 		}
 		companyApprovalId = req.CompanyApprovalId
 	}
-	//新增操作记录
-	{
-		remark := "申请转正"
-		operation := "turn_positive"
-		services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, approveUserId, companyProduct.CompanyName,
-			companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, approveUserRealName, "", companyProduct.Status)
-	}
-	//新增客户产品日志
-	{
-		logType := "modify"
-		go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType)
+	if wxUserId == 0 {
+		//新增操作记录
+		{
+			remark := "申请转正"
+			operation := "turn_positive"
+			services.AddCompanyOperationRecord(req.CompanyId, companyProduct.SellerId, sysUser.AdminId, productId, approveUserId, companyProduct.CompanyName,
+				companyProduct.ProductName, sysUser.RealName, remark, operation, approveContent, approveUserRealName, "", companyProduct.Status)
+		}
+		//新增客户产品日志
+		{
+			logType := "modify"
+			go services.AddCompanyProductLog(companyProduct, this.SysUser.AdminId, logType)
+		}
 	}
 
 	//新增申请单

+ 4 - 0
controllers/company_approval.go

@@ -512,6 +512,10 @@ func (this *CompanyApprovalController) List() {
 			if item.CompanyProductStatus == utils.COMPANY_STATUS_FOREVER {
 				item.CompanyProductStatus = utils.COMPANY_STATUS_X_CLASS_TRY_OUT
 			}
+			if item.WxUserId > 0 {
+				item.CompanyName = item.WxUserName + "(" + item.CompanyName + ")"
+				item.ApplyContent = "个人转正"
+			}
 
 			respTmp := &company.CompanyApprovalList{
 				CompanyId:         item.CompanyId,

+ 1 - 0
models/company/company_apply.go

@@ -265,6 +265,7 @@ func ApproveRefuse(companyId, productId int, approveStatus, approveRemark string
 // 申请转正请求参数
 type CompanyApplyTurnPositiveReq struct {
 	CompanyId         int
+	WxUserId          int                       `description:"用户ID"`
 	CompanyApprovalId int                       `description:"申请单id,没有传0"`
 	ContractType      string                    `description:"合同类型,枚举值:'新签合同','续约合同','补充协议'"`
 	StartDate         string                    `description:"合同开始日期"`

+ 2 - 0
models/company/company_approval.go

@@ -30,6 +30,8 @@ type CompanyApproval struct {
 	ModifyTime          time.Time `description:"修改时间"`
 	CompanyContractId   int       `description:"合同id"`
 	IsFormal            int       `description:"是否已经转正式,0是没有转正式,1是已经转过正式"`
+	WxUserId            int       `description:"用户ID,开通个人权限使用"`
+	WxUserName          string    `description:"用户姓名,针对某份合同仅对单个用户使用的时候的场景"`
 }
 
 // AddCompanyApproval 新增客户产品

+ 19 - 0
models/company/company_contract.go

@@ -36,6 +36,7 @@ type CompanyContract struct {
 	SellerNameLast    string    `description:"合同到期之前最后所属销售名称"`
 	ShareSellerLast   string    `description:"合同到期之前最后所属共享销售员"`
 	ShareSellerIdLast int       `description:"合同到期之前最后所属共享销售员id"`
+	WxUserId          int       `description:"用户ID,开通个人权限使用"`
 }
 
 // 新增客户合同
@@ -78,6 +79,7 @@ type CompanyContractPermission struct {
 	ContractType      string    `description:"签约合同时,当前行业类型:枚举值:'行业新签','行业续约'"`
 	PermissionName    string    `description:"权限名称"`
 	Points            float64   `description:"研选扣点包点数"`
+	WxUserId          int       `description:"用户ID,开通个人权限使用"`
 }
 
 // 新增客户合同
@@ -107,6 +109,7 @@ type CompanyContractPermissionLog struct {
 	CreateTime        time.Time `description:"创建时间"`
 	ModifyTime        time.Time `description:"修改时间"`
 	LogCreateTime     time.Time
+	WxUserId          int `description:"用户ID,开通个人权限使用"`
 }
 
 // 新增客户合同
@@ -370,6 +373,14 @@ func GetFirstContractRai(companyId int) (item *CompanyContract, err error) {
 	return
 }
 
+// GetFirstContractRaiByUser 权益获取第一份合同(用户个人)
+func GetFirstContractRaiByUser(userId int) (item *CompanyContract, err error) {
+	o := orm.NewOrm()
+	sql := " SELECT * FROM company_contract WHERE wx_user_id = ?  AND product_id= 2  AND status = 1   ORDER BY   start_date  ASC  LIMIT  1  "
+	err = o.Raw(sql, userId).QueryRow(&item)
+	return
+}
+
 // GetLastContractRai 权益获取最后一份合同
 func GetLastContractRai(companyId int) (item *CompanyContract, err error) {
 	o := orm.NewOrm()
@@ -378,6 +389,14 @@ func GetLastContractRai(companyId int) (item *CompanyContract, err error) {
 	return
 }
 
+// GetLastContractRaiByUser 权益获取最后一份合同 (用户个人)
+func GetLastContractRaiByUser(userId int) (item *CompanyContract, err error) {
+	o := orm.NewOrm()
+	sql := " SELECT * FROM company_contract WHERE wx_user_id = ?  AND product_id= 2  AND status = 1   ORDER BY   end_date  DESC  LIMIT  1  "
+	err = o.Raw(sql, userId).QueryRow(&item)
+	return
+}
+
 // 更新合同类型
 func UpdateCompanyContractTypeinit16_1_01(share_seller_init string, share_seller_id_init, companyId int) (err error) {
 	o := orm.NewOrm()

+ 6 - 4
models/contract/company_contract_approval.go

@@ -5,7 +5,7 @@ import (
 	"time"
 )
 
-//获取审批列表数据数量
+// 获取审批列表数据数量
 func GetCompanyApprovalListCount(condition string, pars []interface{}) (count int, err error) {
 	o := orm.NewOrm()
 	sql := `
@@ -21,7 +21,7 @@ WHERE
 	return
 }
 
-//审批列表
+// 审批列表
 type CompanyApprovalList struct {
 	ContractApprovalId       int            `description:"审批单id"`
 	ContractId               int            `description:"客户单id"`
@@ -71,14 +71,16 @@ type CompanyApprovalList struct {
 	CompanyContractId    int    `description:"合同id"`
 	DelayPermission      string `description:"延期申请品种"`
 	ApplyRealName        string `description:"申请人姓名"`
+	WxUserId             int    `description:"用户id,针对某份合同仅对单个用户使用的时候的场景"`
+	WxUserName           string `description:"用户姓名,针对某份合同仅对单个用户使用的时候的场景"`
 }
 
-//获取审批列表数据
+// 获取审批列表数据
 func GetCompanyApprovalList(childCondition, condition string, childPars, pars []interface{}, startSize, pageSize int) (list []*CompanyApprovalList, 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,a.curr_node_id,a.start_node_id,a.apply_user_id,c.approve_time,c.company_approval_id,c.approve_status,c.company_id,c.product_id,c.apply_real_name,d.company_type,d.industry_name,d.seller_name,d.status company_product_status,c.approve_status,c.apply_method,c.apply_reasons,d.freeze_start_date,d.freeze_end_date,e.address,d.source,c.approve_remark,d.start_date,d.end_date,c.company_contract_id,e.company_name,e.credit_code
+a.contract_approval_id,a.contract_id,a.apply_content,a.contract_detail,a.approve_remark,a.create_time,a.modify_time,a.status,a.curr_node_id,a.start_node_id,a.apply_user_id,c.approve_time,c.company_approval_id,c.approve_status,c.company_id,c.product_id,c.apply_real_name,d.company_type,d.industry_name,d.seller_name,d.status company_product_status,c.approve_status,c.apply_method,c.apply_reasons,d.freeze_start_date,d.freeze_end_date,e.address,d.source,c.approve_remark,d.start_date,d.end_date,c.company_contract_id,e.company_name,e.credit_code,c.wx_user_name,c.wx_user_id
 from contract_approval a
 	join  ( SELECT max( contract_approval_id ) max_id,contract_id FROM contract_approval where 1=1 and approval_type="company" `
 	sql += childCondition

+ 33 - 0
services/contract/contract.go

@@ -1824,6 +1824,39 @@ func GetCompanyContractCountRaiByLastYear(companyId int, startDate string) (tota
 	return
 }
 
+// 获取权益近一年是否有新签合同
+func GetCompanyContractCountRaiByLastYearUserId(userId int, startDate string) (total int, err error) {
+	firstContractRai, err := company.GetFirstContractRaiByUser(userId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+	//没有合同这第一份合同就属于新签合同
+	if firstContractRai == nil {
+		err = nil
+		total = 1
+		return
+	}
+	//判断是否是在一年以内
+	startDateTime, _ := time.Parse(utils.FormatDate, startDate)
+	startDateTime = startDateTime.AddDate(-1, 0, 0)
+	startDateTimeFirst, _ := time.Parse(utils.FormatDate, firstContractRai.StartDate)
+	if startDateTime.Before(startDateTimeFirst) {
+		total = 1
+		return
+	}
+	//当前合同的开始时间,距离上一份合同的结束时间,超过一年,就属于新签
+	lastContractRai, err := company.GetLastContractRaiByUser(userId)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+
+	startDateTimeLast, _ := time.Parse(utils.FormatDate, lastContractRai.EndDate)
+	if startDateTime.After(startDateTimeLast) {
+		total = 1
+	}
+	return
+}
+
 func initCRM15_5() {
 	var condition string
 	var pars []interface{}