Переглянути джерело

Merge branch 'cygx_need_p1_885' of http://8.136.199.33:3000/hongze/hongze_task into debug

xingzai 1 рік тому
батько
коміт
65cc847a82

+ 8 - 0
models/chart_permission.go

@@ -99,3 +99,11 @@ func GetChartPermissionList() (list []*ChartPermission, err error) {
 	_, err = o.Raw(sql).QueryRows(&list)
 	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
+}

+ 90 - 0
models/cygx/activity_special_permission_points.go

@@ -0,0 +1,90 @@
+package cygx
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"hongze/hongze_task/utils"
+	"time"
+)
+
+type CygxActivitySpecialPermissionPoints struct {
+	Id                  int       `orm:"column(id);pk"`
+	CompanyId           int       `description:"公司ID"`
+	Points              int       `description:"剩余点数"`
+	CompanyName         string    `description:"公司名称"`
+	ChartPermissionId   int       `description:"行业id"`
+	ChartPermissionName string    `description:"行业名称"`
+	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
+}
+
+// 到期清零
+func UpdateCygxActivitySpecialPermissionPointsTryOutReduce( companyId int) (err error) {
+	o := orm.NewOrmUsingDB("hz_cygx")
+	sql := `UPDATE cygx_activity_special_permission_points SET points = 0  WHERE company_id=? `
+	_, err = o.Raw(sql, companyId ).Exec()
+	return
+}

+ 1 - 0
models/db.go

@@ -214,6 +214,7 @@ func initCygx() {
 		new(cygx.CygxAllocationCompanyContractLog),
 		new(cygx.CygxAllocationCompanyContractPermission),
 		new(cygx.CygxAllocationCompanyContractPermissionLog),
+		new(cygx.CygxActivitySpecialPermissionPoints),
 	)
 }
 

+ 1 - 1
services/company_contract/company_contract.go

@@ -135,7 +135,7 @@ func HandleCompanyContract(cont context.Context) (err error) {
 		//研选审批通过的时候研选扣点更新
 		{
 			cygx.YanXuanCompanyApproval(v.CompanyId)
-			cygx.ActivitySpecialCompanyApproval(v.CompanyId)
+			cygx.ActivitySpecialCompanyApproval(v.CompanyId,  v.CompanyContractId, companyProduct.CompanyName) //审批通过的时候专项调研次数更新
 			cygx.HandleAllocationCompanyContractByYanXuan(v.CompanyContractId) //如果合同只有研选的时候,自动处理派点
 			cygx.HandleCompanyContractPackageDifference(v.CompanyContractId) //更新与上一份合同的金额的对比 '增加套餐','减少套餐','维持套餐'
 			cygx.HandleCompanyContractPermissionContractType(v.CompanyContractId) //更新合同权限表中的权限名称,以及对应的行业权限类型(行业新签、行业续约)

+ 211 - 82
services/cygx/activity_points_set.go

@@ -4,6 +4,8 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/models/company_contract"
+	"hongze/hongze_task/models/cygx"
 	"hongze/hongze_task/models/data_manage"
 	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
@@ -76,118 +78,245 @@ func YanXuanCompanyCompanyTryOut(comapnyId int) (err error) {
 }
 
 // 审批通过的时候专项调研次数更新
-func ActivitySpecialCompanyApproval(companyId int) (err error) {
-	defer func() {
-		if err != nil {
-			fmt.Println(err)
-			msg := fmt.Sprint("companyId:", companyId)
-			go alarm_msg.SendAlarmMsg("审批通过试用转正式时专项调研次数更新失败:"+err.Error()+msg, 2)
-		}
-	}()
-	comapny, e := models.GetCompanyById(companyId)
-	if e != nil {
-		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}
+//func ActivitySpecialCompanyApproval(companyId int) (err error) {
+//	defer func() {
+//		if err != nil {
+//			fmt.Println(err)
+//			msg := fmt.Sprint("companyId:", companyId)
+//			go alarm_msg.SendAlarmMsg("审批通过试用转正式时专项调研次数更新失败:"+err.Error()+msg, 2)
+//		}
+//	}()
+//	comapny, e := models.GetCompanyById(companyId)
+//	if e != nil {
+//		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()
+//	itemBill.CompanyId = companyId
+//	itemBill.CompanyName = comapny.CompanyName
+//	itemBill.Source = 2
+//	itemBill.DoType = 2
+//	itemBill.Way = 3
+//	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.Total = strconv.Itoa(itemBill.BillDetailed) + "次"
+//		if totalTrip == 10 {
+//			itemBill.Content = "45w大套餐转正"
+//		} else {
+//			itemBill.Content = "70w大套餐转正"
+//		}
+//	} else {
+//		list, e := GetCompanyReportPermission(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)
+//		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
+//			}
+//		}
+//		chartList := make([]*models.ChartPermission, 0)
+//		if len(chartPermissionIdSlice) > 0 {
+//			chartList, e = models.GetChartPermissionByIds(chartPermissionIdSlice)
+//			if e != nil {
+//				err = errors.New("获取品种信息失败, Err:" + e.Error())
+//				return
+//			}
+//		}
+//		if len(chartList) == 0 {
+//			return
+//		}
+//		for _, v := range chartList {
+//			//如果是升级则加点
+//			if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
+//				mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
+//			} 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 = data_manage.AddCygxActivitySpecialTripBill(itemBill)
+//	if err != nil {
+//		return
+//	}
+//	return
+//}
 
+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}
+	var items []*cygx.CygxActivitySpecialPermissionPoints
+
 	itemBill := new(data_manage.CygxActivitySpecialTripBill)
 	itemBill.CreateTime = time.Now()
 	itemBill.CompanyId = companyId
-	itemBill.CompanyName = comapny.CompanyName
+	itemBill.CompanyName = companyName
 	itemBill.Source = 2
 	itemBill.DoType = 2
 	itemBill.Way = 3
-	if userType == 2{
+	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大套餐转正"
 		} else {
 			itemBill.Content = "70w大套餐转正"
 		}
+
+		//记录公司剩余点数
+		item := new(cygx.CygxActivitySpecialPermissionPoints)
+		item.Points = totalTrip
+		item.CompanyId = companyId
+		item.CompanyName = companyName
+		item.CreateTime = time.Now()
+		item.ModifyTime = time.Now()
+		items = append(items, item)
+
 	} else {
-		list, e := GetCompanyReportPermission(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_contract.GetCompanyContractPermissionList(condition, pars) // 获取带有升级的权限
 		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("GetCompanyReportPermissionUpgrade, Err: " + e.Error())
-		}
-		if len(list) == 0 {
+			err = errors.New("GetCompanyContractPermissionList, 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
-			}
-		}
-		chartList := make([]*models.ChartPermission, 0)
-		if len(chartPermissionIdSlice) > 0 {
-			chartList, e = models.GetChartPermissionByIds(chartPermissionIdSlice)
-			if e != nil {
-				err = errors.New("获取品种信息失败, Err:" + e.Error())
-				return
-			}
-		}
-		if len(chartList) == 0 {
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxAllocationCompanyContractPermissionListById, Err: " + e.Error())
 			return
 		}
-		for _, v := range chartList {
-			//如果是升级则加点
-			if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
-				mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.ChartPermissionName]
-			} else {
-				mapChartName[v.PermissionName] = mapPermissionNameTrip[v.ChartPermissionName]
-			}
+
+		if len(list) == 0 {
+			return
 		}
-		// 通过继承获得的加点
-		for _, v := range inheritList {
-			mapInheritChartName[v.ChartPermissionName] = v.Points
+
+		//获取权益主观权限
+		listRaiSubjectivity, e := models.GetChartPermissionListRaiSubjectivity()
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetChartPermissionListRaiSubjectivity, Err: " + e.Error())
 		}
-		for k, _ := range chartNameMap {
-			if _, ok := mapChartName[k]; ok {
-				if inherit, ok2 := mapInheritChartName[k]; ok2 {
-					mapChartName[k] += inherit
-				}
-			}
+		mapRaiSubjectivity := make(map[int]bool)
+		mapPermissionName := make(map[int]string)
+		for _, v := range listRaiSubjectivity {
+			mapRaiSubjectivity[v.ChartPermissionId] = true
+			mapPermissionName[v.ChartPermissionId] = v.ChartPermissionName
 		}
-		for k, v := range mapChartName {
-			if v > 0 {
-				itemBill.BillDetailed += v
-				itemBill.Total += k + strconv.Itoa(v) + "次+"
+		for _, v := range list {
+			//如果是升级则加点
+			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)
 			}
 		}
 		itemBill.Content = "行业升级套餐转正"
-		itemBill.Total = strings.TrimRight(itemBill.Total, "+")
 	}
-	err = data_manage.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   ORDER BY  chart_permission_id DESC  "
+		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 := data_manage.AddCygxActivitySpecialTripBill(itemBill)
+		if e != nil {
+			err = errors.New("AddCygxActivitySpecialTripBill, Err:" + e.Error())
+			return
+		}
+	}
 	return
 }

+ 9 - 1
services/cygx/activity_special.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_task/models"
+	"hongze/hongze_task/models/cygx"
 	"hongze/hongze_task/models/data_manage"
 	"hongze/hongze_task/services/alarm_msg"
 	"hongze/hongze_task/utils"
@@ -25,7 +26,7 @@ func ActivitySpecialCompanyTryOutReduce(comapnyId int) (err error) {
 		err = errors.New("GetCompanyById err:" + e.Error())
 		return
 	}
-	userType, tripRemaining, mapChartName, err := GetChartPermissionSpecialSurplusByCompany(comapnyId)
+	userType, tripRemaining, mapChartName, e := GetChartPermissionSpecialSurplusByCompany(comapnyId)
 	if e != nil {
 		err = errors.New("GetChartPermissionSpecialSurplusByCompany err:" + e.Error())
 		return
@@ -46,6 +47,13 @@ func ActivitySpecialCompanyTryOutReduce(comapnyId int) (err error) {
 		return
 	}
 
+	//把公司下的所有点数清零
+	e = cygx.UpdateCygxActivitySpecialPermissionPointsTryOutReduce(comapnyId)
+	if e != nil {
+		err = errors.New("GetChartPermissionSpecialSurplusByCompany err:" + e.Error())
+		return
+	}
+
 	// 删除公司之前的继承表
 	err = data_manage.DelCygxActivitySpecialInheritPointsByCompanyId(comapnyId)
 	if err != nil {