Przeglądaj źródła

Merge branch 'crm/crm_17.1_rai' of http://8.136.199.33:3000/hongze/hz_crm_api into debug

zhangchuanxing 10 godzin temu
rodzic
commit
f3ce8eca26

+ 8 - 1
controllers/company_apply_v2.go

@@ -581,8 +581,15 @@ func (this *CompanyApplyController) ApplyTurnPositive() {
 				if subObjMap[subId] > 0 {
 					strPermissionIdArr = append(strPermissionIdArr, strconv.Itoa(subObjMap[subId]))
 				}
+			} else if wxUserId > 0 {
+				//联系人主客观权限都开
+				subId := permissionId
+				strPermissionIdArr = append(strPermissionIdArr, strconv.Itoa(subId))
+				if subObjMap[subId] > 0 {
+					strPermissionIdArr = append(strPermissionIdArr, strconv.Itoa(subObjMap[subId]))
+				}
+				permissionIdOnly = permissionId
 			} else {
-				//permissionIdsNew += strconv.Itoa(permissionId) + ","
 				strPermissionIdArr = append(strPermissionIdArr, v)
 				permissionIdOnly = permissionId
 			}

+ 11 - 13
controllers/company_user.go

@@ -1305,12 +1305,10 @@ func (this *CompanyUserController) List() {
 			return
 		}
 
-		mapRaiUserStatus := services.GetRaiUserStatus(userIds)
-
 		if isUserYanXuanButtonShow {
-			userYanxuanPermissionMap := cygxService.GetCygxUserYanxuanPermissionMapItem(userIds) // 如果是权益部门下的人,则展示研选相关的信息
-			userInteractionNumMap := cygxService.GetUserInteractionNumMap(userIds)               // 如果是权益部门下的人,展示互动量相关的信息
-
+			//userYanxuanPermissionMap := cygxService.GetCygxUserYanxuanPermissionMapItem(userIds) // 如果是权益部门下的人,则展示研选相关的信息
+			userInteractionNumMap := cygxService.GetUserInteractionNumMap(userIds) // 如果是权益部门下的人,展示互动量相关的信息
+			mapRaiUserStatus := services.GetRaiUserStatus(userIds)
 			mfyxuserRecordRegisterMap := make(map[int]string)
 			mfyxuserRecordRegisterTimeMap := make(map[int]time.Time)
 			if len(userIdSlice) > 0 {
@@ -1362,14 +1360,14 @@ func (this *CompanyUserController) List() {
 				list[i].MfyxInteractionNum = userInteractionNumMap[int(item.UserId)]
 				list[i].RaiUserStatus = mapRaiUserStatus[int(item.UserId)]
 				//权益销售查看用户研选的信息
-				if userYanxuanPermissionMap[int(item.UserId)] != nil {
-					mfyxItem := userYanxuanPermissionMap[int(item.UserId)]
-					list[i].MfyxStatus = mfyxItem.Status
-					list[i].MfyxStartDate = mfyxItem.StartDate
-					list[i].MfyxEndDate = mfyxItem.EndDate
-				} else {
-					list[i].MfyxStatus = "未开通"
-				}
+				//if userYanxuanPermissionMap[int(item.UserId)] != nil {
+				//	mfyxItem := userYanxuanPermissionMap[int(item.UserId)]
+				//	list[i].MfyxStatus = mfyxItem.Status
+				//	list[i].MfyxStartDate = mfyxItem.StartDate
+				//	list[i].MfyxEndDate = mfyxItem.EndDate
+				//} else {
+				//	list[i].MfyxStatus = "未开通"
+				//}
 				if mfyxuserRecordRegisterMap[int(item.UserId)] != "" {
 					list[i].MfyxIsBinding = true
 					list[i].MfyxBindingTime = mfyxuserRecordRegisterMap[int(item.UserId)]

+ 1 - 1
models/company/company_approval.go

@@ -1284,7 +1284,7 @@ func ApplyApproveContract(companyId, productId, companyApprovalId, companyContra
 	return
 }
 
-// ApplyApproveContract 更新审批单、合同状态
+// ApplyApproveContractByUser 更新审批单、合同状态
 func ApplyApproveContractByUser(companyId, productId, companyApprovalId, companyContractId int) (err error) {
 	o := orm.NewOrm()
 	to, err := o.Begin()

+ 2 - 0
models/company/company_approval_message.go

@@ -23,6 +23,8 @@ type CompanyApprovalMessage struct {
 	OperationStatus   int       `description:"消息状态:1:待审批,2:已审批"`
 	MessageType       int       `description:"1:申请消息,2:审批结果,3:文字消息"`
 	MessageInfo       string    `description:"消息主要内容,json数据"`
+	WxUserId          int       `description:"用户id,针对某份合同仅对单个用户使用的时候的场景"`
+	WxUserName        string    `description:"用户姓名,针对某份合同仅对单个用户使用的时候的场景"`
 }
 
 // 添加审批消息

+ 7 - 0
models/company/user_product.go

@@ -62,3 +62,10 @@ func GetUserProductDetailByProductIdUserId(userId, productId int) (item *UserPro
 	err = o.Raw(sql, userId, productId).QueryRow(&item)
 	return
 }
+
+func UpdateUserProductEndDate(endDate, status string, userId, productId int) (err error) {
+	o := orm.NewOrm()
+	sql := `UPDATE user_product SET end_date=? ,status = ? WHERE user_id=? AND  product_id =  ?  `
+	_, err = o.Raw(sql, endDate, status, userId, productId).Exec()
+	return
+}

+ 7 - 0
models/company/user_report_permission.go

@@ -55,3 +55,10 @@ func GetUserReportPermissionListByUserId(productId, userId int) (items []*Permis
 	_, err = o.Raw(sql, productId, userId).QueryRows(&items)
 	return
 }
+
+func GetUserReportPermissionLastTry(userId, productId int) (item *UserReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM user_report_permission AS a WHERE user_id = ?  AND  product_id =  ? `
+	err = o.Raw(sql, userId, productId).QueryRow(&item)
+	return
+}

+ 16 - 0
models/cygx/user_yanxuan_permission.go

@@ -2,6 +2,7 @@ package cygx
 
 import (
 	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -68,6 +69,21 @@ func GetCygxUserYanxuanPermissionCountByUserId(userId int) (count int, err error
 	return
 }
 
+// 根据用户ID获取是否开通过研选权限
+func GetCygxUserYanxuanPermissionCountByUserIdStatus(userId int) (count int, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := ` SELECT COUNT(1) FROM cygx_user_yanxuan_permission WHERE user_id = ? AND status = '试用'  AND end_date >= ? `
+	err = o.Raw(sql, userId, time.Now().Format(utils.FormatDate)).QueryRow(&count)
+	return
+}
+
+func GetCygxUserYanxuanPermissionDetail(userId int) (item *CygxUserYanxuanPermission, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_user_yanxuan_permission AS a WHERE user_id = ?  `
+	err = o.Raw(sql, userId).QueryRow(&item)
+	return
+}
+
 // 将研选权限状态改为未开通
 func UpdateCygxUserYanxuanPermissionClose(userId int) (err error) {
 	o := orm.NewOrmUsingDB("hz_cygx")

+ 2 - 9
services/company_apply/company_approval.go

@@ -696,16 +696,9 @@ func afterApproved(companyApprovalId int, opUserId int, opUserName string) (err
 					err = errors.New("试用转正式失败,Err:" + tmpErr.Error())
 					return
 				}
-				//不添加日志
-				isAddCompanyProductUpdateLog = false
-			}
-			//如果合同中的结束日期大于产品中的合同结束日期,那么就去修改产品中的合同结束日期
-			if contractEndDate.After(companyProduct.ContractEndDate) {
-				companyProduct.ContractEndDate = contractEndDate
-				cols := make([]string, 0)
-				cols = append(cols, "ContractEndDate")
-				_ = companyProduct.Update(cols)
 			}
+			//不添加日志
+			isAddCompanyProductUpdateLog = false
 		} else {
 			//如果是权益的用户客户转正审批单独走
 			if companyProduct.Status == utils.COMPANY_STATUS_FOREVER && companyProduct.ProductId == 2 {

+ 7 - 0
services/company_approval_message.go

@@ -63,6 +63,9 @@ func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyAp
 	if msgType == 2 {
 		company.ModifyCompanyApprovalMessage(companyApprovalId, sourceType)
 	}
+
+	approvalRecord, _ := company.GetCompanyApprovalByCompanyApprovalId(companyApprovalId)
+
 	msgItem := new(company.CompanyApprovalMessage)
 	msgItem.CreateUserId = createUserId
 	msgItem.ReceiveUserId = receiveUserId
@@ -78,6 +81,10 @@ func AddCompanyApprovalMessage(createUserId, receiveUserId, companyId, companyAp
 	msgItem.MessageType = msgType           //1:申请消息,2:审批结果,3:文字消息
 	msgItem.SourceType = sourceType         //消息来源
 	msgItem.ApprovalStatus = approvalStatus //审批状态,1:待审批,2:已审批,3:已驳回
+	if approvalRecord != nil {
+		msgItem.WxUserId = approvalRecord.WxUserId
+		msgItem.WxUserName = approvalRecord.WxUserName
+	}
 	err = company.AddCompanyApprovalMessage(msgItem)
 
 	if mobile != "" {

+ 94 - 0
services/cygx/user_yanxuan_permission.go

@@ -3,6 +3,8 @@ package cygx
 import (
 	"errors"
 	"fmt"
+	"hongze/hz_crm_api/models"
+	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/services/alarm_msg"
 	"hongze/hz_crm_api/utils"
@@ -70,3 +72,95 @@ func GetCygxUserYanxuanPermissionMapItem(userIds []int) (mapResp map[int]*cygx.C
 	}
 	return
 }
+
+// 更新权益用户个人权限信息
+func UddateUserProductRai(userId int) (err error) {
+	defer func() {
+		if err != nil {
+			go alarm_msg.SendAlarmMsg("更新权益用户个人权限信息失败 ,UddateUserProductRai,Err:"+err.Error()+fmt.Sprint("userId:", userId), 3)
+		}
+	}()
+	productId := utils.COMPANY_PRODUCT_RAI_ID
+	total, e := cygx.GetCygxUserYanxuanPermissionCountByUserIdStatus(userId)
+	if e != nil {
+		err = errors.New("GetCygxUserYanxuanPermissionCountByUserIdStatus, Err: " + e.Error())
+		return
+	}
+	totalUp, e := company.GetUserProductCountRaiByProductIdUserId(userId, productId)
+	if e != nil {
+		err = errors.New("GetCygxUserYanxuanPermissionCountByUserIdStatus, Err: " + e.Error())
+		return
+	}
+
+	if total == 0 {
+		if totalUp == 0 {
+			return
+		} else {
+
+		}
+
+	} else {
+		yanxuanPermissionDetail, e := cygx.GetCygxUserYanxuanPermissionDetail(userId)
+		if e != nil {
+			err = errors.New("GetCygxUserYanxuanPermissionCountByUserIdStatus, Err: " + e.Error())
+			return
+		}
+
+		if totalUp == 0 {
+			wxUser, e := models.GetWxUserItemByUserId(userId)
+			if e != nil {
+				err = errors.New("GetWxUserItemByUserId, Err: " + e.Error())
+				return
+			}
+			item := new(company.UserProduct)
+			item.CompanyId = wxUser.CompanyId
+			item.ProductId = productId
+			item.ProductName = utils.COMPANY_PRODUCT_RAI_NAME
+			item.CompanyName = wxUser.CompanyName
+			item.Status = "试用"
+			item.CreateTime = time.Now()
+			item.ModifyTime = time.Now()
+			item.StartDate = yanxuanPermissionDetail.StartDate
+			item.EndDate = yanxuanPermissionDetail.EndDate
+			item.RealName = wxUser.RealName
+			item.Mobile = wxUser.Mobile
+			item.Email = wxUser.Email
+			_, e = company.AddUserProduct(item)
+			if e != nil {
+				err = errors.New("AddUserProduct, Err: " + e.Error())
+				return
+			}
+		} else {
+			detailUp, e := company.GetUserProductDetailByProductIdUserId(userId, productId)
+			if e != nil {
+				err = errors.New("GetUserProductDetailByProductIdUserId, Err: " + e.Error())
+				return
+			}
+
+			var updateEndDate string
+			if detailUp.Status == "关闭" {
+				updateEndDate = yanxuanPermissionDetail.EndDate
+			} else {
+				startDateTimeYx, _ := time.ParseInLocation(utils.FormatDate, yanxuanPermissionDetail.EndDate, time.Local)
+				startDateTimeUp, _ := time.ParseInLocation(utils.FormatDate, detailUp.EndDate, time.Local)
+				if startDateTimeYx.After(startDateTimeUp) {
+					updateEndDate = yanxuanPermissionDetail.EndDate
+				} else {
+					updateEndDate = detailUp.EndDate
+				}
+			}
+
+			if detailUp.Status == "正式" {
+				return
+			} else {
+				e = company.UpdateUserProductEndDate(updateEndDate, "试用", userId, productId)
+				if e != nil {
+					err = errors.New("UpdateUserProductEndDate, Err: " + e.Error())
+					return
+				}
+			}
+		}
+	}
+
+	return
+}

+ 18 - 0
services/user.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hz_crm_api/models"
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/company_user"
+	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
 	"hongze/hz_crm_api/models/yb"
 	"hongze/hz_crm_api/services/alarm_msg"
@@ -501,5 +502,22 @@ func GetRaiUserStatus(userIds []int) (mapUserStatus map[int]string) {
 	for _, v := range listUserProduct {
 		mapUserStatus[v.UserId] = v.Status
 	}
+
+	var condition string
+	var pars []interface{}
+	condition += "  AND	status = '试用' AND user_id IN(" + utils.GetOrmInReplace(lenArr) + ") "
+	pars = append(pars, userIds)
+	list, e := cygx.GetCygxUserYanxuanPermissionList(condition, pars, 0, lenArr)
+	if e != nil {
+		err = errors.New("GetCygxUserYanxuanPermissionList, Err: " + e.Error())
+		return
+	}
+
+	for _, v := range list {
+		if mapUserStatus[v.UserId] == "关闭" {
+			mapUserStatus[v.UserId] = "试用"
+		}
+	}
+
 	return
 }