Browse Source

no message

xingzai 10 months ago
parent
commit
bff03a6187

+ 16 - 0
controllers/company_apply.go

@@ -470,6 +470,22 @@ func (this *CompanyApplyController) ApplyContractDetail() {
 		// 未选大套餐, 走老逻辑
 		var points float64
 		if detail.RaiPackageType == 0 {
+
+			totalForever, err := company.GetCompanyProductRaiForeverCount(companyId) //判断是否是权益的永续客户
+			if err != nil {
+				br.Msg = "获取失败"
+				br.ErrMsg = "获取客户信息失败,Err:" + err.Error()
+				return
+			}
+
+			if totalForever > 0 {
+				detail.Quarter, err = utils.GetQuarterStrStartDatesInRange(detail.StartDate, detail.EndDate) //通过开始时间,结束时间,获取对应季度的拼接字符串
+				if err != nil {
+					br.Msg = "获取失败"
+					br.ErrMsg = "获取季度息失败,Err:" + err.Error()
+					return
+				}
+			}
 			mapUpgrade := make(map[int]bool) // 通过合同获取所勾选的升级行业权限
 
 			for _, v := range permissionList {

+ 48 - 1
controllers/cygx/enter_score.go

@@ -10,6 +10,7 @@ import (
 	"hongze/hz_crm_api/models/company"
 	"hongze/hz_crm_api/models/cygx"
 	"hongze/hz_crm_api/models/system"
+	cygxService "hongze/hz_crm_api/services/cygx"
 	"hongze/hz_crm_api/utils"
 	"os"
 	"path/filepath"
@@ -471,6 +472,7 @@ func (this *EnterScoreController) EnterScoreUpdate() {
 // @Param   PageSize   query   int  true       "每页数据条数"
 // @Param   CurrentIndex   query   int  true       "当前页页码,从1开始"
 // @Param   KeyWord   query   string  true       "搜索关键词"
+// @Param   CompanyName   query   string  true       "客户名称"
 // @Param   AdminId   query   string  true       "销售id,多个用英文逗号隔开,空字符串为全部"
 // @Success 200 {object} cygx.GetCygxEnterScoreListRep
 // @router /enterScore/list [get]
@@ -499,10 +501,30 @@ func (this *EnterScoreController) EnterScoreList() {
 	if currentIndex <= 0 {
 		currentIndex = 1
 	}
-
 	startSize = utils.StartIndex(currentIndex, pageSize)
 	var condition string
 	var pars []interface{}
+	//如果不是权益管理员和admin,就做可见权限限制
+	if sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_RAI_ADMIN && sysUser.RoleTypeCode != utils.ROLE_TYPE_CODE_ADMIN {
+		var conditionAdmin string
+		var parsAdmin []interface{}
+		conditionAdmin = "  AND product_id = 2  AND   status = '永续'  AND seller_id =  ?  "
+		parsAdmin = append(parsAdmin, sysUser.AdminId)
+		listProduct, err := company.GetCompanyProductList(conditionAdmin, parsAdmin)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取失败,Err:" + err.Error()
+			return
+		}
+		var companyIds []int
+		for _, v := range listProduct {
+			companyIds = append(companyIds, v.CompanyId)
+		}
+		companyIds = append(companyIds, 0)
+		condition += ` AND company_id  IN (` + utils.GetOrmInReplace(len(companyIds)) + `) `
+		pars = append(pars, companyIds)
+	}
+
 	if keyWord != "" {
 		condition += ` AND company_name LIKE '%` + keyWord + `%' `
 	}
@@ -638,6 +660,19 @@ func (this *EnterScoreController) EnterScoreScoreOverview() {
 	companyCondition += ` AND b.status = ? `
 	companypars = append(companypars, "永续")
 
+	//权益申请销售只能看到自己名下的客户的申请
+	companyIds, err := cygxService.GetAdminLookUserCompanyIdsBySelf(AdminUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+	lencompanyIds := len(companyIds)
+	if lencompanyIds > 0 {
+		companyCondition += ` AND a.company_id IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+		companypars = append(companypars, companyIds)
+	}
+
 	if keyWord != "" {
 		companyCondition += ` AND a.company_name LIKE '%` + keyWord + `%' `
 	}
@@ -1027,6 +1062,18 @@ func (this *EnterScoreController) EnterScoreRankingOverview() {
 		companyCondition += ` AND a.city = ? `
 		companypars = append(companypars, city)
 	}
+	//权益申请销售只能看到自己名下的客户的申请
+	companyIds, err := cygxService.GetAdminLookUserCompanyIdsBySelf(AdminUser)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取失败,GetAdminLookUserCompanyIds Err:" + err.Error()
+		return
+	}
+	lencompanyIds := len(companyIds)
+	if lencompanyIds > 0 {
+		companyCondition += ` AND a.company_id IN (` + utils.GetOrmInReplace(lencompanyIds) + `)`
+		companypars = append(companypars, companyIds)
+	}
 
 	companyList, err := company.GetCompanyIdListByproductName(companyCondition, companypars)
 	if err != nil {

+ 1 - 0
models/company/company_apply.go

@@ -105,6 +105,7 @@ type CompanyContractDetail struct {
 	ContractType      string    `description:"合同类型:枚举值:'新签合同','续约合同','补充协议'"`
 	StartDate         string    `description:"合同开始时间"`
 	EndDate           string    `description:"合同结束时间"`
+	Quarter           string    `comment:"季度(X类试用客户使用)"`
 	Money             float64   `description:"合同金额"`
 	PayMethod         string    `description:"支付方式"`
 	PayChannel        string    `description:"支付渠道"`

+ 8 - 0
models/company/company_product.go

@@ -660,3 +660,11 @@ func GetCompanyProductListByCompanyIds(companyIds []int, productId int) (items [
 	_, err = o.Raw(sql, companyIds, productId).QueryRows(&items)
 	return
 }
+
+// 获取权益用户客户数量
+func GetCompanyProductRaiForeverCount(companyId int) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM company_product  WHERE 1= 1  AND product_id  = 2  AND   status = '永续' AND company_id  = ?  `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, companyId).QueryRow(&count)
+	return
+}

+ 38 - 3
utils/common.go

@@ -2225,14 +2225,49 @@ func GetQuarterStartDatesInRange(startTimeStr, endTimeStr string) ([]string, err
 		for quarter := 1; quarter <= 4; quarter++ {
 			firstMonth := (quarter-1)*3 + 1
 			quarterStartDate := time.Date(year, time.Month(firstMonth), 1, 0, 0, 0, 0, time.UTC)
-
-			// Check if quarter start date is within the range
 			if quarterStartDate.After(endTime) || quarterStartDate.AddDate(0, 3, -1).Before(adjustedStartTime) {
 				continue
 			}
-
 			quarters = append(quarters, quarterStartDate.Format(FormatDate))
 		}
 	}
 	return quarters, nil
 }
+
+// 通过开始时间,结束时间,获取对应季度的拼接字符串
+func GetQuarterStrStartDatesInRange(startTimeStr, endTimeStr string) (quartersStar string, err error) {
+	startTime, err := time.Parse("2006-01-02", startTimeStr)
+	if err != nil {
+		return
+	}
+
+	endTime, err := time.Parse("2006-01-02", endTimeStr)
+	if err != nil {
+		return
+	}
+
+	adjustedStartTime := startTime.AddDate(0, -int(startTime.Month()-1)%3, -startTime.Day()+1)
+
+	startYear, _, _ := adjustedStartTime.Date()
+	endYear, _, _ := endTime.Date()
+
+	var quarters []string
+	//quarters := []string
+	for year := startYear; year <= endYear; year++ {
+		for quarter := 1; quarter <= 4; quarter++ {
+			firstMonth := (quarter-1)*3 + 1
+			quarterStartDate := time.Date(year, time.Month(firstMonth), 1, 0, 0, 0, 0, time.UTC)
+			if quarterStartDate.After(endTime) || quarterStartDate.AddDate(0, 3, -1).Before(adjustedStartTime) {
+				continue
+			}
+			quartersYear := quarterStartDate.Year()
+			yearStr := strconv.Itoa(quartersYear)
+			yearStr = yearStr[len(yearStr)-2:]
+
+			quarters = append(quarters, fmt.Sprint(yearStr, "Q", quarter))
+		}
+	}
+
+	quartersStar = strings.Join(quarters, "+")
+	return quartersStar, nil
+}