Browse Source

Merge branch 'master' of http://8.136.199.33:3000/hongze/hz_crm_api into cygx/cygx_need_p1-885

xingzai 1 year ago
parent
commit
18f46ad206

+ 8 - 0
models/chart_permission.go

@@ -152,3 +152,11 @@ func GetChartPermissionListRai() (items []*ChartPermission, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+// 获取权益主观权限
+func GetChartPermissionListRaiSubjectivity() (items []*ChartPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM chart_permission WHERE product_id=2  AND permission_type = 1  ORDER BY sort ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 66 - 0
models/cygx/activity_special_permission_points.go

@@ -2,6 +2,8 @@ package cygx
 
 import (
 	//"github.com/beego/beego/v2/client/orm"
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hz_crm_api/utils"
 	"time"
 )
 
@@ -15,3 +17,67 @@ type CygxActivitySpecialPermissionPoints struct {
 	CreateTime          time.Time `description:"创建时间"`
 	ModifyTime          time.Time `description:"更新时间"`
 }
+
+// MultiAddCygxActivitySpecialPermissionPoints 批量添加
+func MultiAddCygxActivitySpecialPermissionPoints(items []*CygxActivitySpecialPermissionPoints) (err error) {
+	if len(items) == 0 {
+		return
+	}
+
+	var chartPermissionIds []int
+	var companyId int
+	for _, v := range items {
+		companyId = v.CompanyId
+		if v.ChartPermissionId > 0 {
+			chartPermissionIds = append(chartPermissionIds, v.ChartPermissionId)
+		}
+	}
+	lenchartPermissionIds := len(chartPermissionIds)
+	o, err := orm.NewOrmUsingDB("hz_cygx").Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	var condition string
+	var pars []interface{}
+	pars = make([]interface{}, 0)
+	condition = " AND  company_id  = ?  "
+	pars = append(pars, companyId)
+	if lenchartPermissionIds > 0 {
+		condition += " AND  chart_permission_id IN (" + utils.GetOrmInReplace(lenchartPermissionIds) + ")   "
+		pars = append(pars, chartPermissionIds)
+	}
+	//删除历史记录
+	sql := ""
+	if condition != "" {
+		sql = " DELETE FROM cygx_activity_special_permission_points  WHERE 1= 1 " + condition
+		_, err = o.Raw(sql, pars).Exec()
+		if err != nil {
+			return
+		}
+	}
+	//批量插入
+	_, err = o.InsertMulti(len(items), items)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 获取公司每个行业剩余研选点数列表
+func GetCygxActivitySpecialPermissionPointsList(condition string, pars []interface{}) (items []*CygxActivitySpecialPermissionPoints, err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `SELECT * FROM cygx_activity_special_permission_points WHERE 1 = 1  `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}

+ 1 - 0
models/db.go

@@ -465,6 +465,7 @@ func initCygx() {
 		new(cygx.CygxQuestionnaireTheme),
 		new(cygx.CygxAskserieVideo),
 		new(cygx.CygxIndustrialAskserieVideoGroupManagement),
+		new(cygx.CygxActivitySpecialPermissionPoints),
 	)
 }
 

+ 2 - 1
services/company_apply/company_approval.go

@@ -410,7 +410,8 @@ func Approved(approvalRecord *contract.ContractApprovalRecord, opUser *system.Ad
 						return
 					}
 					if time.Now().After(contractStartDate) {
-						cygxService.ActivitySpecialCompanyApproval(recordInfo.CompanyId, companyInfo.CompanyName) //审批通过的时候专项调研次数更新
+						cygxService.ActivitySpecialCompanyApproval(recordInfo.CompanyId, recordInfo.CompanyContractId, companyInfo.CompanyName) //审批通过的时候专项调研次数更新
+						//cygxService.ActivitySpecialCompanyApproval(recordInfo.CompanyContractId) //审批通过的时候专项调研次数更新
 					}
 				}
 

+ 76 - 67
services/cygx/activity_special.go

@@ -539,15 +539,19 @@ func GetChartPermissionSpecialSurplusByCompany(companyId int) (userType int, tri
 	return
 }
 
+//func init() {
+//	ActivitySpecialCompanyApproval(7012, 1213, "10.11添加客户升级")
+//}
+
 // 审批通过的时候专项调研次数更新
-func ActivitySpecialCompanyApproval(companyId int, companyName string) (err error) {
+func ActivitySpecialCompanyApproval(companyId, companyContractId int, companyName string) (err error) {
 	userType, packageType, _, _, _ := GetUserType(companyId)
 	// 获取继承点数
-	inheritList, e := cygx.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}
+	//inheritList, e := cygx.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}
 	var items []*cygx.CygxActivitySpecialPermissionPoints
 
 	itemBill := new(cygx.CygxActivitySpecialTripBill)
@@ -560,18 +564,7 @@ func ActivitySpecialCompanyApproval(companyId int, companyName string) (err erro
 	if userType == 2 {
 		packageTypeMap := map[int]int{1: 16, 2: 10}
 		totalTrip := packageTypeMap[packageType]
-		if len(inheritList) > 0 {
-			for _, v := range inheritList {
-				if v.ChartPermissionId == 0 {
-					itemBill.BillDetailed = totalTrip + v.Points
-				} else {
-					itemBill.BillDetailed = totalTrip
-				}
-			}
-		} else {
-			itemBill.BillDetailed = totalTrip
-		}
-
+		itemBill.BillDetailed = totalTrip
 		itemBill.Total = strconv.Itoa(itemBill.BillDetailed) + "次"
 		if totalTrip == 10 {
 			itemBill.Content = "45w大套餐转正"
@@ -589,76 +582,92 @@ func ActivitySpecialCompanyApproval(companyId int, companyName string) (err erro
 		items = append(items, item)
 
 	} else {
-		list, e := company.GetCompanyReportPermissionByCompanyIdAndProductId(companyId, 2)
+		//list, e := company.GetCompanyReportPermissionByCompanyIdAndProductId(companyId, 2)
+		//if e != nil && e.Error() != utils.ErrNoRow() {
+		//	err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
+		//}
+		//if len(list) == 0 {
+		//	return
+		//}
+
+		var condition string
+		var pars []interface{}
+		pars = make([]interface{}, 0)
+		condition = " AND  company_contract_id = ?  AND  is_upgrade = 1  "
+		pars = append(pars, companyContractId)
+		list, e := company.GetCompanyContractPermissionList(condition, pars) // 获取带有升级的权限
 		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
+			err = errors.New("GetCompanyContractPermissionList, Err: " + e.Error())
+			return
 		}
-		if len(list) == 0 {
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxAllocationCompanyContractPermissionListById, Err: " + e.Error())
 			return
 		}
-		var chartPermissionIdSlice []string
-		mapChartName := make(map[string]int)
-		mapUpgradeId := make(map[int]int)
-		mapInheritChartName := 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))
-			//是升级套餐才有点数
-			if v.IsUpgrade == 1 {
-				mapUpgradeId[v.ChartPermissionId] = 1
-			}
+
+		if len(list) == 0 {
+			return
 		}
-		chartList := make([]*models.ChartPermission, 0)
-		if len(chartPermissionIdSlice) > 0 {
-			chartList, e = models.GetChartPermissionByIds(chartPermissionIdSlice)
-			if e != nil {
-				err = errors.New("获取品种信息失败, Err:" + e.Error())
-				return
-			}
+
+		//获取权益主观权限
+		listRaiSubjectivity, e := models.GetChartPermissionListRaiSubjectivity()
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetChartPermissionListRaiSubjectivity, Err: " + e.Error())
 		}
-		if len(chartList) == 0 {
-			return
+		mapRaiSubjectivity := make(map[int]bool)
+		mapPermissionName := make(map[int]string)
+		for _, v := range listRaiSubjectivity {
+			mapRaiSubjectivity[v.ChartPermissionId] = true
+			mapPermissionName[v.ChartPermissionId] = v.ChartPermissionName
 		}
-		for _, v := range chartList {
+		for _, v := range list {
 			//如果是升级则加点
-			if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
-				mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
+			if v.IsUpgrade == 1 && mapRaiSubjectivity[v.ChartPermissionId] {
 				item := new(cygx.CygxActivitySpecialPermissionPoints)
 				item.Points = 5
 				item.CompanyId = companyId
 				item.CompanyName = companyName
+				item.ChartPermissionId = v.ChartPermissionId
+				item.ChartPermissionName = mapPermissionName[v.ChartPermissionId]
 				item.CreateTime = time.Now()
 				item.ModifyTime = time.Now()
 				items = append(items, item)
-			} else {
-				mapChartName[v.PermissionName] = 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 = cygx.AddCygxActivitySpecialTripBill(itemBill)
-	if err != nil {
+
+	e := cygx.MultiAddCygxActivitySpecialPermissionPoints(items)
+	if e != nil {
+		err = errors.New("MultiAddCygxActivitySpecialPermissionPoints, Err:" + e.Error())
 		return
 	}
+	if userType != 2 && len(items) > 0 {
+		var condition string
+		var pars []interface{}
+		pars = make([]interface{}, 0)
+		condition = " AND  company_id  = ?  AND points  > 0 "
+		pars = append(pars, companyId)
+		activitySpecialPermissionPointsList, e := cygx.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err:" + e.Error())
+			return
+		}
+		var itemBillTotal []string
+		for _, v := range activitySpecialPermissionPointsList {
+			itemBillTotal = append(itemBillTotal, fmt.Sprint(v.ChartPermissionName, v.Points, "次"))
+		}
+		itemBill.Total = strings.Join(itemBillTotal, "+")
+	}
+
+	//如果有升级行业权限,或者大套餐客户就写入流水信息
+	if itemBill.Total != "" {
+		e := cygx.AddCygxActivitySpecialTripBill(itemBill)
+		if e != nil {
+			err = errors.New("AddCygxActivitySpecialTripBill, Err:" + e.Error())
+			return
+		}
+	}
 	return
 }