ziwen 1 年之前
父節點
當前提交
0830659cff
共有 4 個文件被更改,包括 212 次插入14 次删除
  1. 1 0
      models/db.go
  2. 29 5
      services/cygx/activity_points_set.go
  3. 173 7
      services/cygx/activity_special.go
  4. 9 2
      utils/constants.go

+ 1 - 0
models/db.go

@@ -179,6 +179,7 @@ func initCygx() {
 		new(data_manage.CygxArticle),
 		new(data_manage.CygxArticleType),
 		new(data_manage.CygxActivitySpecialTripBill),
+		new(data_manage.CygxActivitySpecialInheritPointsCompany),
 	)
 }
 

+ 29 - 5
services/cygx/activity_points_set.go

@@ -82,6 +82,13 @@ func ActivitySpecialCompanyApproval(companyId int) (err error) {
 		err = errors.New("GetCompanyById err:" + e.Error())
 		return
 	}
+	// 获取继承点数
+	inheritList, e := data_manage.GetCygxActivitySpecialInheritPointsByCompanyId(companyId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialInheritPointsByCompanyId, Err: " + e.Error())
+	}
+	chartNameMap := map[string]int{utils.YI_YAO_NAME: 0, utils.XIAO_FEI_NAME: 0, utils.KE_JI_NAME: 0, utils.ZHI_ZAO_NAME: 0}
+
 	userType, packageType, _, _, _ := GetUserType(companyId)
 	itemBill := new(data_manage.CygxActivitySpecialTripBill)
 	itemBill.CreateTime = time.Now()
@@ -90,14 +97,17 @@ func ActivitySpecialCompanyApproval(companyId int) (err error) {
 	itemBill.Source = 2
 	itemBill.DoType = 2
 	itemBill.Way = 3
-	itemBill.Content = "套餐转正"
 	if userType == 2{
 		packageTypeMap := map[int]int{1: 16, 2: 10}
 		totalTrip := packageTypeMap[packageType]
 		itemBill.BillDetailed = totalTrip
 		itemBill.Total = strconv.Itoa(totalTrip) + "次"
+		if totalTrip == 10 {
+			itemBill.Content = "45w大套餐转正"
+		} else {
+			itemBill.Content = "70w大套餐转正"
+		}
 	} else {
-		itemBill.BillDetailed = 15
 		list, e := GetCompanyReportPermissionUpgrade(companyId, 2)
 		if e != nil && e.Error() != utils.ErrNoRow() {
 			err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
@@ -107,6 +117,7 @@ func ActivitySpecialCompanyApproval(companyId int) (err error) {
 		}
 		var chartPermissionIdSlice []string
 		mapChartName := make(map[string]int)
+		mapInheritChartName := make(map[string]int)
 		mapPermissionNameTrip := make(map[string]int)
 		//mapPermissionName := make(map[int]string)
 		for _, v := range list {
@@ -117,17 +128,30 @@ func ActivitySpecialCompanyApproval(companyId int) (err error) {
 			err = errors.New("获取品种信息失败, Err:" + e.Error())
 			return
 		}
-		if len(chartList) == 0 {
-			return
-		}
+		// 10.9.1本身升级套餐没有也可能通过继承获得
+		//if len(chartList) == 0 {
+		//	return
+		//}
 		for _, v := range chartList {
 			mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
 		}
+		for _, v := range inheritList {
+			mapInheritChartName[v.ChartPermissionName] = v.Points
+		}
+		for k, _ := range chartNameMap {
+			if _, ok := mapChartName[k]; ok {
+				if inherit, ok2 := mapInheritChartName[k]; ok2 {
+					mapChartName[k] += inherit
+				}
+			}
+		}
 		for k, v := range mapChartName {
 			if v > 0 {
+				itemBill.BillDetailed += v
 				itemBill.Total += k + strconv.Itoa(v) + "次+"
 			}
 		}
+		itemBill.Content = "行业升级套餐转正"
 		itemBill.Total = strings.TrimRight(itemBill.Total, "+")
 	}
 	err = data_manage.AddCygxActivitySpecialTripBill(itemBill)

+ 173 - 7
services/cygx/activity_special.go

@@ -12,8 +12,8 @@ import (
 	"time"
 )
 
-// tripRemaining 获取公司专项调研次数
-func GetChartPermissiontripRemainingByCompany(companyId int) (tripRemaining int, err error) {
+// GetChartPermissionTripRemainingByCompany 获取公司专项调研次数
+func GetChartPermissionTripRemainingByCompany(companyId int) (tripRemaining int, err error) {
 	companyDetail, e := data_manage.GetCompanyDetailByIdGroup(companyId)
 	if e != nil {
 		err = errors.New("GetCompanyDetailByIdGroup, Err: " + e.Error())
@@ -69,9 +69,6 @@ func GetChartPermissiontripRemainingByCompany(companyId int) (tripRemaining int,
 		//}
 		var TripBillNum int
 		for _, v := range listTripBill {
-			//if v.ActivityId == 0 {
-			//	continue
-			//}
 			TripBillNum += v.BillDetailed
 		}
 		// CRM13.2 70w客户有16次专项调研, 45w有10次
@@ -159,9 +156,9 @@ func ActivitySpecialCompanyTryOutReduce(comapnyId int) (err error) {
 		err = errors.New("GetCompanyById err:" + e.Error())
 		return
 	}
-	tripRemaining, err := GetChartPermissiontripRemainingByCompany(comapnyId)
+	userType, tripRemaining, mapChartName, err := GetChartPermissionSpecialSurplusByCompany(comapnyId)
 	if e != nil {
-		err = errors.New("GetChartPermissiontripRemainingByCompany err:" + e.Error())
+		err = errors.New("GetChartPermissionSpecialSurplusByCompany err:" + e.Error())
 		return
 	}
 	//获取需要添加的流水信息
@@ -180,6 +177,43 @@ func ActivitySpecialCompanyTryOutReduce(comapnyId int) (err error) {
 		return
 	}
 
+	// 删除公司之前的继承表
+	err = data_manage.DelCygxActivitySpecialInheritPointsByCompanyId(comapnyId)
+	if err != nil {
+		return
+	}
+	chartMap := map[string]int{utils.YI_YAO_NAME:utils.YI_YAO_ID, utils.XIAO_FEI_NAME:utils.XIAO_FEI_ID, utils.KE_JI_NAME:utils.KE_JI_ID, utils.ZHI_ZAO_NAME:utils.ZHI_ZAO_ID}
+	//添加继承点数表
+	inheritItems := make([]*data_manage.CygxActivitySpecialInheritPointsCompany,0)
+	if userType == 2 {
+		inheritItem := new(data_manage.CygxActivitySpecialInheritPointsCompany)
+		inheritItem.CompanyId = comapnyId
+		inheritItem.CompanyName = comapny.CompanyName
+		inheritItem.CreateTime = time.Now()
+		inheritItem.ModifyTime = time.Now()
+		inheritItem.Points = tripRemaining
+		inheritItems = append(inheritItems, inheritItem)
+	} else {
+		for k, v := range mapChartName {
+			inheritItem := new(data_manage.CygxActivitySpecialInheritPointsCompany)
+			inheritItem.CompanyId = comapnyId
+			inheritItem.CompanyName = comapny.CompanyName
+			inheritItem.CreateTime = time.Now()
+			inheritItem.ModifyTime = time.Now()
+			inheritItem.Points = v
+			inheritItem.ChartPermissionName = k
+			if _, ok := chartMap[k]; ok {
+				inheritItem.ChartPermissionId = chartMap[k]
+			}
+			inheritItems = append(inheritItems, inheritItem)
+		}
+	}
+	if len(inheritItems) > 0 {
+		err = data_manage.AddCygxActivitySpecialInheritPointsCompanyMulti(inheritItems)
+		if err != nil {
+			return
+		}
+	}
 	return
 }
 
@@ -275,3 +309,135 @@ func GetUserType(companyId int) (userType, packageType int, permissionStrnew, co
 	permissionStrnew = permissionStr
 	return
 }
+
+// GetChartPermissionSpecialSurplusByCompany 获取公司专项调研次数-分品种-无视正式状态
+func GetChartPermissionSpecialSurplusByCompany(companyId int) (userType int, tripRemaining int, mapChartName map[string]int, err error) {
+	companyDetail, e := data_manage.GetCompanyDetailByIdGroup(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyDetailByIdGroup, Err: " + e.Error())
+	}
+	if companyDetail == nil {
+		return
+	}
+	if companyDetail.Status != "永续" && companyDetail.Status != "正式" {
+		return
+	}
+	//var specialSurplus string
+	//if companyDetail.Status == "永续" {
+	//	specialSurplus = "不限次数"
+	//}
+	//chartMap := map[int]string{utils.YI_YAO_ID:utils.YI_YAO_NAME, utils.XIAO_FEI_ID:utils.XIAO_FEI_NAME, utils.KE_JI_ID:utils.KE_JI_NAME, utils.ZHI_ZAO_ID:utils.ZHI_ZAO_NAME}
+	//chartNumMap := map[int]int{utils.YI_YAO_ID:0, utils.XIAO_FEI_ID:0, utils.KE_JI_ID:0, utils.ZHI_ZAO_ID:0}
+	//var packageType int
+	userType, _, _, _, _ = GetUserType(companyId)
+	var condition string
+	var pars []interface{}
+
+	condition += ` AND company_id = ? `
+	pars = append(pars, companyId)
+
+	//查询当年的数据
+	condition += ` AND b.create_time >= ?  `
+	pars = append(pars, time.Now().Format("2006")+"-01-01")
+	listTripBill, e := data_manage.GetCygxActivitySpecialTripBillList(condition, pars)
+	if e != nil {
+		err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+		return
+	}
+	if userType == 2 {
+		//airborneList, e := cygx.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
+		//if e != nil {
+		//	err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
+		//	return
+		//}
+		//ariborneMap := make(map[int]int)
+		//for _, v := range airborneList {
+		//	ariborneMap[v.ChartPermissionId] = v.Count
+		//}
+		//到会空降的也加入流水记录表,这里不在做单独计算 2023-07-10
+		//airborneTotal, e := cygx.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
+		//if e != nil {
+		//	err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
+		//	return
+		//}
+		//condition += ` AND is_valid = 1 `
+		//TripBillNumMap := make(map[int]int)
+		//for _, v := range listTripBill {
+		//	TripBillNumMap[v.ChartPermissionId] += v.BillDetailed
+		//}
+		var TripBillNum int
+		for _, v := range listTripBill {
+			TripBillNum += v.BillDetailed
+		}
+		// CRM13.2 70w客户有16次专项调研, 45w有10次
+		//packageTypeMap := map[int]int{1: 16, 2: 10}
+		//totalTrip := packageTypeMap[packageType]
+
+		tripRemaining = TripBillNum
+		if tripRemaining < 0 {
+			tripRemaining = 0
+		}
+
+		//for k, _ := range chartNumMap {
+		//	tripRemaining := totalTrip - ariborneMap[k] + TripBillNumMap[k]
+		//	if tripRemaining < 0 {
+		//		tripRemaining = 0
+		//	}
+		//	specialSurplus += chartMap[k] + strconv.Itoa(tripRemaining) + "次,"
+		//}
+		//specialSurplus = strings.TrimRight(specialSurplus, ",")
+
+		//tripRemaining = 12 - tripTota
+	} else {
+		list, e := GetCompanyReportPermissionUpgrade(companyId, 2)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
+		}
+		if len(list) == 0 {
+			return
+		}
+		var chartPermissionIdSlice []string
+		mapChartName = make(map[string]int)
+		mapPermissionNameTrip := make(map[string]int)
+		//mapPermissionName := make(map[int]string)
+		for _, v := range list {
+			chartPermissionIdSlice = append(chartPermissionIdSlice, strconv.Itoa(v.ChartPermissionId))
+
+		}
+		chartList, e := models.GetChartPermissionByIds(chartPermissionIdSlice)
+		if e != nil {
+			err = errors.New("获取品种信息失败, Err:" + e.Error())
+			return
+		}
+		if len(chartList) == 0 {
+			return
+		}
+		//到会空降的也加入流水记录表,这里不在做单独计算 2023-07-10
+		//airborneList, e := cygx.GetCygxActivitySpecialTripAirborneListByComapnyId(companyId)
+		//if e != nil {
+		//	err = errors.New("获取品种信息失败, Err:" + e.Error())
+		//	return
+		//}
+		//for _, v := range airborneList {
+		//	mapPermissionNameTrip[v.ChartPermissionName] += 1
+		//}
+
+		//var TripBillNum int
+		for _, v := range listTripBill {
+			if v.ActivityId == 0 {
+				continue
+			}
+			mapPermissionNameTrip[v.ChartPermissionName] += v.BillDetailed
+		}
+		for _, v := range chartList {
+			mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
+		}
+		for _, v := range mapChartName {
+			if v > 0 {
+				tripRemaining += v
+			}
+		}
+
+	}
+	return
+}

+ 9 - 2
utils/constants.go

@@ -173,7 +173,14 @@ const (
 	TEMPLATE_MSG_YB_VOICE_BROADCAST = 20 //研报语音播报
 )
 
-
 const (
-	CYGX_YANXUAN_POINTS_KEY          string = "CYGX_YANXUAN_POINTS_KEY"                                       //查研观向研选活动扣点KEY
+	CYGX_YANXUAN_POINTS_KEY string = "CYGX_YANXUAN_POINTS_KEY" //查研观向研选活动扣点KEY
+	YI_YAO_NAME             string = "医药"
+	YI_YAO_ID               int    = 22
+	XIAO_FEI_NAME           string = "消费"
+	XIAO_FEI_ID             int    = 21
+	KE_JI_NAME              string = "科技"
+	KE_JI_ID                int    = 20
+	ZHI_ZAO_NAME            string = "智造"
+	ZHI_ZAO_ID              int    = 19
 )