Selaa lähdekoodia

Merge branch 'cygx_10.9.1'

ziwen 1 vuosi sitten
vanhempi
commit
5ed099751d

+ 39 - 0
controllers/activity_special.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hongze_cygx/services"
 	"hongze/hongze_cygx/utils"
 	"strconv"
+	"strings"
 	"time"
 )
 
@@ -246,6 +247,7 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 			itemBill.RegisterPlatform = 1
 			itemBill.ChartPermissionId = activityInfo.ChartPermissionId
 
+
 			var itemMeeting = new(models.CygxActivitySpecialMeetingDetail)
 			itemMeeting.UserId = user.UserId
 			itemMeeting.ActivityId = activityId
@@ -319,6 +321,24 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 					itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
 				}
 			}
+			userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+			if err != nil {
+				br.Msg = "获取专项调研剩余次数失败"
+				br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+				return
+			}
+			if userType == 2 {
+				tripRemaining = tripRemaining+itemBill.BillDetailed
+				itemBill.Total = strconv.Itoa(tripRemaining) + "次"
+			} else {
+				for k, num := range mapChartName {
+					if activityInfo.ChartPermissionName == k {
+						num = num+ itemBill.BillDetailed
+					}
+					itemBill.Total += k + strconv.Itoa(num) + "次+"
+				}
+				itemBill.Total = strings.TrimRight(itemBill.Total, "+")
+			}
 			//添加流水记录
 			err = models.AddCygxActivitySpecialTripBill(itemBill)
 			if err != nil {
@@ -413,6 +433,25 @@ func (this *ActivitySpecialCoAntroller) Tripcancel() {
 		isValid = 1
 		itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
 	}
+	userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
+	if err != nil {
+		br.Msg = "获取专项调研剩余次数失败"
+		br.ErrMsg = "获取专项调研剩余次数失败,err:" + err.Error()
+		return
+	}
+	if userType == 2 {
+		tripRemaining += itemBill.BillDetailed
+		itemBill.Total = strconv.Itoa(tripRemaining) + "次"
+	} else {
+		for k, num := range mapChartName {
+			if activityInfo.ChartPermissionName == k {
+				num += itemBill.BillDetailed
+			}
+			itemBill.Total += k + strconv.Itoa(num) + "次+"
+		}
+		itemBill.Total = strings.TrimRight(itemBill.Total, "+")
+	}
+
 	err = models.CancelActivitySpecialTripIsValid(isValid, activityInfo.ActivityId, uid)
 	if err != nil {
 		br.Msg = "操作失败"

+ 147 - 0
models/activity_special_trip_bill.go

@@ -21,6 +21,9 @@ type CygxActivitySpecialTripBill struct {
 	DoType            int       `description:"操作方式,1报名,2取消报名"`
 	RegisterPlatform  int       `description:"来源 1小程序,2:网页"`
 	ChartPermissionId int       `description:"行业id"`
+	Way               int       `description:"1报名,取消报名。2到会取消到会 3转正或清零 4取消活动"`
+	Content           string    `description:"内容"`
+	Total             string    `description:"总和"`
 }
 
 // 添加
@@ -42,3 +45,147 @@ func GetCygxActivitySpecialTripBill(condition string, pars []interface{}) (item
 	_, err = o.Raw(sql, pars).QueryRows(&item)
 	return
 }
+
+type CygxActivitySpecialTripBillList struct {
+	Id                  int       `orm:"column(id);pk"`
+	UserId              int       `description:"用户id,多个用,隔开"`
+	ActivityId          int       `description:"活动ID"`
+	CreateTime          time.Time `description:"创建时间"`
+	Mobile              string    `description:"手机号"`
+	Email               string    `description:"邮箱号"`
+	CompanyId           int       `description:"公司ID"`
+	CompanyName         string    `description:"公司名称"`
+	RealName            string    `description:"用户实际名称"`
+	AdminId             int       `description:"销售/管理员ID"`
+	Source              int       `description:"来源,1小程序,2后台添加, 3开发人员手动添加"`
+	BillDetailed        int       `description:"流水明细,判断是进账还是出账"`
+	DoType              int       `description:"操作方式,1报名,2取消报名"`
+	RegisterPlatform    int       `description:"来源 1小程序,2:网页"`
+	ChartPermissionId   int       `description:"行业id"`
+	ChartPermissionName string    `description:"行业名称"`
+	Way                 int       `description:"1报名,取消报名。2到会取消到会 3转正或清零 4取消活动"`
+	Content             string    `description:"内容"`
+}
+
+func GetCygxActivitySpecialTripBillList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripBillList, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+			b.*,
+			c.chart_permission_name 
+		FROM
+			cygx_activity_special_trip_bill AS b
+			LEFT JOIN chart_permission AS c ON c.chart_permission_id = b.chart_permission_id 
+		WHERE
+			1 = 1` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}
+
+type SpecialBillInitBig struct {
+	ApprovalTime time.Time
+	CompanyId    int
+	CompanyName  string
+}
+
+func GetActivitySecialTirpBillForInit(packageType int) (item []*SpecialBillInitBig, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+	a.approve_time,d.company_id,c.company_name 
+FROM
+	company_approval a
+	INNER JOIN company_contract b ON a.company_contract_id = b.company_contract_id
+	INNER JOIN company c ON a.company_id = c.company_id
+	INNER JOIN cygx_company_user_type d ON a.company_id = d.company_id
+WHERE
+	a.apply_method = 1 
+	AND a.product_id = 2 
+	AND a.approve_status = '已审批' 
+	AND b.product_id = 2 
+	AND d.package_type = ?
+	GROUP BY d.company_id `
+	_, err = o.Raw(sql, packageType).QueryRows(&item)
+	return
+}
+
+type SpecialBillInitNotBig struct {
+	ApprovalTime       time.Time
+	CompanyId          int
+	CompanyName        string
+	ChartPermissionIds string
+}
+
+func GetActivitySecialTirpBillForInitNotBig() (item []*SpecialBillInitNotBig, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+	a.approve_time,d.company_id,d.company_name,GROUP_CONCAT(DISTINCT c.chart_permission_id) AS chart_permission_ids
+FROM
+	company_approval a
+	INNER JOIN company_contract b ON a.company_contract_id = b.company_contract_id
+	INNER JOIN company_report_permission c ON a.company_id = c.company_id 
+	INNER JOIN company d ON a.company_id = d.company_id
+WHERE
+	a.apply_method = 1 
+	AND a.product_id = 2 
+	AND a.approve_status = '已审批' 
+	AND b.product_id = 2 
+	AND c.product_id = 2
+	AND c.is_upgrade = 1
+	GROUP BY d.company_id `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
+// 批量添加
+func AddCygxActivitySpecialTripBillMulti(items []*CygxActivitySpecialTripBill) (err error) {
+	o := orm.NewOrm()
+	if len(items) > 0 {
+		//批量添加
+		_, err = o.InsertMulti(len(items), items)
+	}
+	return
+}
+
+type SpecialBillInitReduce struct {
+	CreateTime       time.Time
+	CompanyId          int
+	CompanyName        string
+}
+
+func GetActivitySecialTirpBillForReduce() (item []*SpecialBillInitReduce, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT
+	a.create_time,a.company_id,c.company_name 
+FROM
+	company_operation_record a
+	INNER JOIN company c ON a.company_id = c.company_id
+	INNER JOIN company_report_permission e ON a.company_id = e.company_id 
+WHERE
+	a.operation = 'try_out' 
+	AND a.product_id = 2 
+	AND e.status NOT IN ('正式','永续')
+	GROUP BY a.company_id `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
+func GetCygxActivitySpecialTripBillForInit() (item []*CygxActivitySpecialTripBill, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM cygx_activity_special_trip_bill GROUP BY company_id `
+	_, err = o.Raw(sql).QueryRows(&item)
+	return
+}
+
+func GetCygxActivitySpecialTripBillByCompanyIdForInit(companyId int) (item []*CygxActivitySpecialTripBill, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM cygx_activity_special_trip_bill WHERE company_id = ? ORDER BY create_time DESC  `
+	_, err = o.Raw(sql, companyId).QueryRows(&item)
+	return
+}
+
+
+func UpdateCygxActivitySpecialTripBillByCompanyIdForInit(total string, id int) (err error) {
+	o := orm.NewOrm()
+	sql := ` UPDATE cygx_activity_special_trip_bill SET total=? WHERE id = ?  `
+	_, err = o.Raw(sql,total, id).Exec()
+	return
+}

+ 49 - 0
models/company_activity_trip.go

@@ -124,3 +124,52 @@ func GetCompanyPermissionNameCheck(companyId, productId int, permissionName stri
 	err = o.Raw(sql, companyId, productId, permissionName).QueryRow(&count)
 	return
 }
+
+
+// GetCompanyReportPermissionByCompanyIdAndProductId 获取权限类型
+func GetCompanyReportPermissionByCompanyIdAndProductId(companyId, productId int) (items []*CompanyReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	re.*
+FROM
+	company_report_permission  as re 
+	INNER JOIN chart_permission as  c ON c.chart_permission_id = re.chart_permission_id
+WHERE
+	re.company_id = ? 
+	AND re.product_id = ? 
+	AND STATUS = '正式' `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	return
+}
+
+// GetCompanyReportPermissionByCompanyIdAndProductIdForInit 获取权限类型-初始化用,去掉正式的判断
+func GetCompanyReportPermissionByCompanyIdAndProductIdForInit(companyId, productId int) (items []*CompanyReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	re.*
+FROM
+	company_report_permission  as re 
+	INNER JOIN chart_permission as  c ON c.chart_permission_id = re.chart_permission_id
+WHERE
+	re.company_id = ? 
+	AND re.product_id = ? 
+	AND STATUS NOT IN ('正式','永续') GROUP BY re.chart_permission_id `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	return
+}
+
+// GetCompanyReportPermissionByCompanyIdAndProductIdForInit 获取权限类型-初始化total用,去掉权限的判断
+func GetCompanyReportPermissionByCompanyIdAndProductIdForInit2(companyId, productId int) (items []*CompanyReportPermission, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	re.*
+FROM
+	company_report_permission  as re 
+	INNER JOIN chart_permission as  c ON c.chart_permission_id = re.chart_permission_id
+WHERE
+	re.company_id = ? 
+	AND re.product_id = ? 
+	 `
+	_, err = o.Raw(sql, companyId, productId).QueryRows(&items)
+	return
+}

+ 45 - 0
models/cygx_activity_special_points_company.go

@@ -0,0 +1,45 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CygxActivitySpecialInheritPointsCompany struct {
+	Id                  int       `orm:"column(id);pk"`
+	CompanyId           int       // 公司ID
+	CompanyName         string    // 公司名称
+	Points              int   // 公司剩余点数
+	CreateTime          time.Time // 创建时间
+	ModifyTime          time.Time // 更新时间
+	ChartPermissionId   int       // 品种ID
+	ChartPermissionName string    // 品种名称
+}
+
+func AddCygxActivitySpecialPointsCompany(item *CygxActivitySpecialInheritPointsCompany) (err error) {
+	o := orm.NewOrm()
+	_, err = o.Insert(item)
+	if err != nil {
+		return
+	}
+	return
+}
+
+func AddCygxActivitySpecialInheritPointsCompanyMulti(items []*CygxActivitySpecialInheritPointsCompany) (err error) {
+	o := orm.NewOrm()
+	_, err = o.InsertMulti(1, items)
+	return
+}
+
+func GetCygxActivitySpecialInheritPointsByCompanyId(companyId int) (list []*CygxActivitySpecialInheritPointsCompany, err error) {
+	o := orm.NewOrm()
+	sql := ` SELECT * FROM cygx_activity_special_inherit_points_company WHERE company_id = ?  `
+	_, err = o.Raw(sql,companyId).QueryRows(&list)
+	return
+}
+func DelCygxActivitySpecialInheritPointsByCompanyId(companyId int) (err error) {
+	o := orm.NewOrm()
+	sql := ` DELETE FROM cygx_activity_special_inherit_points_company WHERE company_id = ?  `
+	_, err = o.Raw(sql,companyId).Exec()
+	return
+}

+ 1 - 0
models/db.go

@@ -156,6 +156,7 @@ func init() {
 		new(CygxActivityPointsBill),
 		new(CygxActivityPointsCompany),
 		new(CygxTagHistory),
+		new(CygxActivitySpecialInheritPointsCompany),
 	)
 	// 记录ORM查询日志
 	orm.Debug = true

+ 378 - 0
services/activity_special.go

@@ -1256,3 +1256,381 @@ func SendWxMsgActivitySpecialCancel(cont context.Context) (err error) {
 	}
 	return
 }
+
+func GetChartPermissionSpecialSurplusByCompany(companyId int) (userType int, tripRemaining int, mapChartName map[string]int, err error) {
+	companyDetail, e := models.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}
+	chartNameMap := map[string]int{utils.YI_YAO_NAME: 0, utils.XIAO_FEI_NAME: 0, utils.KE_JI_NAME: 0, utils.ZHI_ZAO_NAME: 0}
+	if companyDetail.Status == "正式" {
+		//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(utils.FormatYearDate)+"-01-01")
+		listTripBill, e := models.GetCygxActivitySpecialTripBillList(condition, pars)
+		if e != nil {
+			err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+			return
+		}
+		// 获取继承点数
+		inheritList, e := models.GetCygxActivitySpecialInheritPointsByCompanyId(companyId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxActivitySpecialInheritPointsByCompanyId, Err: " + e.Error())
+		}
+		if userType == 2 {
+
+			var tripBillNum int
+			for _, v := range listTripBill {
+				//if v.ActivityId == 0 {
+				//	continue
+				//}
+				tripBillNum += v.BillDetailed
+			}
+			if len(inheritList) > 0 {
+				for _, v := range inheritList {
+					if v.ChartPermissionId == 0 {
+						tripBillNum += v.Points
+					}
+				}
+			}
+
+			tripRemaining = tripBillNum
+			if tripRemaining < 0 {
+				tripRemaining = 0
+			}
+
+		} else {
+			list, e := models.GetCompanyReportPermissionByCompanyIdAndProductId(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)
+			mapPermissionNameTrip := make(map[string]int)
+			mapInheritChartName := 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 listTripBill {
+				if v.ActivityId == 0 {
+					continue
+				}
+				mapPermissionNameTrip[v.ChartPermissionName] += v.BillDetailed
+			}
+			for _, v := range chartList {
+				//如果是升级则加点
+				if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
+					mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.PermissionName]
+				} else {
+					mapChartName[v.PermissionName] = mapPermissionNameTrip[v.PermissionName]
+				}
+			}
+			// 通过继承获得的加点
+			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 {
+					specialSurplus += k + strconv.Itoa(v) + "次+"
+				}
+			}
+			specialSurplus = strings.TrimRight(specialSurplus, "+")
+		}
+	}
+	return
+}
+
+
+// 清零初始化用-去掉了正式用户的判断
+func GetChartPermissionSpecialSurplusByCompanyForInit(companyId int) (userType int, tripRemaining int, mapChartName map[string]int, err error) {
+	companyDetail, e := models.GetCompanyDetailByIdGroup(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyDetailByIdGroup, Err: " + e.Error())
+	}
+	if companyDetail == nil {
+		return
+	}
+	//if companyDetail.Status != "永续" && companyDetail.Status != "正式" {
+	//	return
+	//}
+
+	//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(utils.FormatYearDate)+"-01-01")
+	listTripBill, e := models.GetCygxActivitySpecialTripBillList(condition, pars)
+	if e != nil {
+		err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+		return
+	}
+	// 获取继承点数
+	inheritList, e := models.GetCygxActivitySpecialInheritPointsByCompanyId(companyId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialInheritPointsByCompanyId, Err: " + e.Error())
+	}
+	if userType == 2 {
+
+		var tripBillNum int
+		for _, v := range listTripBill {
+			//if v.ActivityId == 0 {
+			//	continue
+			//}
+			tripBillNum += v.BillDetailed
+		}
+		if len(inheritList) > 0 {
+			for _, v := range inheritList {
+				if v.ChartPermissionId == 0 {
+					tripBillNum += v.Points
+				}
+			}
+		}
+
+		tripRemaining = tripBillNum
+		if tripRemaining < 0 {
+			tripRemaining = 0
+		}
+
+	} else {
+		list, e := models.GetCompanyReportPermissionByCompanyIdAndProductIdForInit(companyId, 2)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCompanyReportPermissionByCompanyIdAndProductIdForInit, Err: " + e.Error())
+		}
+		if len(list) == 0 {
+			return
+		}
+		var chartPermissionIdSlice []string
+		mapChartName = make(map[string]int)
+		mapUpgradeId := make(map[int]int)
+		mapPermissionNameTrip := make(map[string]int)
+		mapInheritChartName := 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 listTripBill {
+			if v.ActivityId == 0 {
+				continue
+			}
+			mapPermissionNameTrip[v.ChartPermissionName] += v.BillDetailed
+		}
+		for _, v := range chartList {
+			if _, ok := chartNumMap[v.ChartPermissionId]; ok{
+				//如果是升级则加点
+				if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
+					mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.PermissionName]
+				} else {
+					mapChartName[v.PermissionName] = mapPermissionNameTrip[v.PermissionName]
+				}
+			}
+		}
+		// 通过继承获得的加点
+		for _, v := range inheritList {
+			mapInheritChartName[v.ChartPermissionName] = v.Points
+		}
+		for _, v := range mapChartName {
+			if v > 0 {
+				tripRemaining += v
+			}
+		}
+	}
+
+	return
+}
+
+// total初始化用-去掉了正式用户的判断
+func GetChartPermissionSpecialSurplusByCompanyForInitTotal(companyId int) (userType int, tripRemaining int, mapChartName map[string]int, err error) {
+	companyDetail, e := models.GetCompanyDetailByIdGroup(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyDetailByIdGroup, Err: " + e.Error())
+	}
+	if companyDetail == nil {
+		return
+	}
+	//if companyDetail.Status != "永续" && companyDetail.Status != "正式" {
+	//	return
+	//}
+
+	//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(utils.FormatYearDate)+"-01-01")
+	listTripBill, e := models.GetCygxActivitySpecialTripBillList(condition, pars)
+	if e != nil {
+		err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
+		return
+	}
+	// 获取继承点数
+	inheritList, e := models.GetCygxActivitySpecialInheritPointsByCompanyId(companyId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialInheritPointsByCompanyId, Err: " + e.Error())
+	}
+	if userType == 2 {
+
+		var tripBillNum int
+		for _, v := range listTripBill {
+			//if v.ActivityId == 0 {
+			//	continue
+			//}
+			tripBillNum += v.BillDetailed
+		}
+		if len(inheritList) > 0 {
+			for _, v := range inheritList {
+				if v.ChartPermissionId == 0 {
+					tripBillNum += v.Points
+				}
+			}
+		}
+
+		tripRemaining = tripBillNum
+		if tripRemaining < 0 {
+			tripRemaining = 0
+		}
+
+	} else {
+		list, e := models.GetCompanyReportPermissionByCompanyIdAndProductIdForInit2(companyId, 2)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCompanyReportPermissionByCompanyIdAndProductIdForInit, Err: " + e.Error())
+		}
+		if len(list) == 0 {
+			return
+		}
+		var chartPermissionIdSlice []string
+		mapChartName = make(map[string]int)
+		mapUpgradeId := make(map[int]int)
+		mapPermissionNameTrip := make(map[string]int)
+		mapInheritChartName := 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 listTripBill {
+			if v.ActivityId == 0 {
+				continue
+			}
+			mapPermissionNameTrip[v.ChartPermissionName] += v.BillDetailed
+		}
+		for _, v := range chartList {
+			if _, ok := chartNumMap[v.ChartPermissionId]; ok{
+				//如果是升级则加点
+				if _, ok := mapUpgradeId[v.ChartPermissionId]; ok {
+					mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.PermissionName]
+				} else {
+					mapChartName[v.PermissionName] = mapPermissionNameTrip[v.PermissionName]
+				}
+			}
+		}
+		// 通过继承获得的加点
+		for _, v := range inheritList {
+			mapInheritChartName[v.ChartPermissionName] = v.Points
+		}
+		for _, v := range mapChartName {
+			if v > 0 {
+				tripRemaining += v
+			}
+		}
+	}
+
+	return
+}

+ 281 - 0
services/init_10.9.1.go

@@ -0,0 +1,281 @@
+package services
+
+import (
+	"errors"
+	"fmt"
+	"hongze/hongze_cygx/models"
+	"hongze/hongze_cygx/utils"
+	"strconv"
+	"strings"
+)
+
+// 大套餐的
+func InitActivitySpecialTripBillBig() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+		}
+	}()
+	// 70w 16次
+	list70, err := models.GetActivitySecialTirpBillForInit(1)
+	if err != nil {
+		return
+	}
+	items70 := make([]*models.CygxActivitySpecialTripBill, 0)
+	for _, v := range list70 {
+		itemBill := new(models.CygxActivitySpecialTripBill)
+		itemBill.CreateTime = v.ApprovalTime
+		itemBill.CompanyId = v.CompanyId
+		itemBill.CompanyName = v.CompanyName
+		itemBill.Source = 2
+		itemBill.DoType = 2
+		itemBill.Way = 3
+		itemBill.Content = "70w大套餐转正"
+		itemBill.BillDetailed = 16
+		itemBill.Total = strconv.Itoa(itemBill.BillDetailed) + "次"
+		items70 = append(items70, itemBill)
+		fmt.Println("CompanyId: ", v.CompanyId)
+		fmt.Println("CompanyName: ", v.CompanyName)
+	}
+	err = models.AddCygxActivitySpecialTripBillMulti(items70)
+	if err != nil {
+		return
+	}
+
+	// 45w 10次
+	list45, err := models.GetActivitySecialTirpBillForInit(2)
+	if err != nil {
+		return
+	}
+	items45 := make([]*models.CygxActivitySpecialTripBill, 0)
+	for _, v := range list45 {
+		itemBill := new(models.CygxActivitySpecialTripBill)
+		itemBill.CreateTime = v.ApprovalTime
+		itemBill.CompanyId = v.CompanyId
+		itemBill.CompanyName = v.CompanyName
+		itemBill.Source = 2
+		itemBill.DoType = 2
+		itemBill.Way = 3
+		itemBill.Content = "45w大套餐转正"
+		itemBill.BillDetailed = 10
+		itemBill.Total = strconv.Itoa(itemBill.BillDetailed) + "次"
+		items45 = append(items45, itemBill)
+		fmt.Println("CompanyId: ", v.CompanyId)
+		fmt.Println("CompanyName: ", v.CompanyName)
+	}
+	err = models.AddCygxActivitySpecialTripBillMulti(items45)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 非大套餐的,根据行业权限添加
+func InitActivitySpecialTripBillNotBig() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+		}
+	}()
+	list, err := models.GetActivitySecialTirpBillForInitNotBig()
+	if err != nil {
+		return
+	}
+	items := make([]*models.CygxActivitySpecialTripBill, 0)
+	for _, item := range list {
+		chartPermissionIdSlice := strings.Split(item.ChartPermissionIds, ",")
+
+		mapChartName := make(map[string]int)
+		mapPermissionNameTrip := make(map[string]int)
+
+		chartList, e := models.GetChartPermissionByIds(chartPermissionIdSlice)
+		if e != nil {
+			err = errors.New("获取品种信息失败, Err:" + e.Error())
+			return
+		}
+
+		for _, v := range chartList {
+			mapChartName[v.PermissionName] = 5 + mapPermissionNameTrip[v.PermissionName]
+		}
+		itemBill := new(models.CygxActivitySpecialTripBill)
+		itemBill.CreateTime = item.ApprovalTime
+		itemBill.CompanyId = item.CompanyId
+		itemBill.CompanyName = item.CompanyName
+		itemBill.Source = 2
+		itemBill.DoType = 2
+		itemBill.Way = 3
+		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, "+")
+		items = append(items, itemBill)
+		fmt.Println("CompanyId: ", item.CompanyId)
+		fmt.Println("CompanyName: ", item.CompanyName)
+	}
+	err = models.AddCygxActivitySpecialTripBillMulti(items)
+	if err != nil {
+		return
+	}
+	return
+}
+
+// 到期清零和加入继承表
+func ActivitySpecialCompanyTryOutReduce() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+		}
+	}()
+
+	list, err := models.GetActivitySecialTirpBillForReduce()
+	if err != nil {
+		return
+	}
+	for _, v := range list {
+		userType, tripRemaining, mapChartName, e := GetChartPermissionSpecialSurplusByCompanyForInit(v.CompanyId)
+		if e != nil {
+			err = e
+			fmt.Println("err :", err)
+			continue
+		}
+
+		itemBill := new(models.CygxActivitySpecialTripBill)
+		itemBill.CreateTime = v.CreateTime
+		itemBill.Source = 2
+		itemBill.DoType = 1
+		itemBill.Way = 3
+		itemBill.BillDetailed = -tripRemaining
+		itemBill.CompanyId = v.CompanyId
+		itemBill.CompanyName = v.CompanyName
+		itemBill.Content = "到期清零"
+		itemBill.Total = "0"
+		if tripRemaining == 0 {
+			continue
+		}
+		err = models.AddCygxActivitySpecialTripBill(itemBill)
+		if err != nil {
+			return
+		}
+		fmt.Println("CompanyId: ", v.CompanyId)
+		fmt.Println("CompanyName: ", v.CompanyName)
+		// 删除公司之前的继承表
+		err = models.DelCygxActivitySpecialInheritPointsByCompanyId(v.CompanyId)
+		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([]*models.CygxActivitySpecialInheritPointsCompany, 0)
+		if userType == 2 {
+			inheritItem := new(models.CygxActivitySpecialInheritPointsCompany)
+			inheritItem.CompanyId = v.CompanyId
+			inheritItem.CompanyName = v.CompanyName
+			inheritItem.CreateTime = v.CreateTime
+			inheritItem.ModifyTime = v.CreateTime
+			inheritItem.Points = tripRemaining
+			if tripRemaining > 0 {
+				inheritItems = append(inheritItems, inheritItem)
+			}
+		} else {
+			for k, num := range mapChartName {
+				inheritItem := new(models.CygxActivitySpecialInheritPointsCompany)
+				inheritItem.CompanyId = v.CompanyId
+				inheritItem.CompanyName = v.CompanyName
+				inheritItem.CreateTime = v.CreateTime
+				inheritItem.ModifyTime = v.CreateTime
+				inheritItem.Points = num
+				inheritItem.ChartPermissionName = k
+				if _, ok := chartMap[k]; ok {
+					inheritItem.ChartPermissionId = chartMap[k]
+				}
+				if num > 0 {
+					inheritItems = append(inheritItems, inheritItem)
+				}
+			}
+		}
+		if len(inheritItems) > 0 {
+			err = models.AddCygxActivitySpecialInheritPointsCompanyMulti(inheritItems)
+			if err != nil {
+				return
+			}
+		}
+	}
+
+	return
+}
+
+// 补充total
+func ActivitySpecialBillTotalInit() (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+		}
+	}()
+
+	billList, err := models.GetCygxActivitySpecialTripBillForInit()
+	if err != nil {
+		return
+	}
+	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}
+
+	for _, billItem := range billList {
+		userType, tripRemaining, mapChartName, e := GetChartPermissionSpecialSurplusByCompanyForInitTotal(billItem.CompanyId)
+		if e != nil {
+			err = e
+			continue
+		}
+		fmt.Println("CompanyId: ", billItem.CompanyId)
+		fmt.Println("CompanyName: ", billItem.CompanyName)
+		list, e := models.GetCygxActivitySpecialTripBillByCompanyIdForInit(billItem.CompanyId)
+		if e != nil {
+			err = e
+			return
+		}
+
+		if userType == 2 {
+			for i, v := range list {
+				if v.ActivityId == 0 {
+					continue
+				}
+				if i == 0 {
+					v.Total = strconv.Itoa(tripRemaining) + "次"
+				} else {
+					v.Total = strconv.Itoa(tripRemaining+v.BillDetailed) + "次"
+				}
+
+				fmt.Println("v.Total:",v.Total)
+				err = models.UpdateCygxActivitySpecialTripBillByCompanyIdForInit(v.Total, v.Id)
+				if err != nil {
+					return
+				}
+			}
+		} else {
+			for i, v := range list {
+				if chart, ok := chartMap[v.ChartPermissionId]; ok {
+					v.Total = ``
+					for k, num := range mapChartName {
+						if k == chart {
+							if i > 0 {
+								num += v.BillDetailed
+							}
+						}
+						v.Total += k + strconv.Itoa(num) + "次+"
+					}
+					v.Total = strings.TrimRight(v.Total, "+")
+					fmt.Println("v.Total:",v.Total)
+					err = models.UpdateCygxActivitySpecialTripBillByCompanyIdForInit(v.Total, v.Id)
+					if err != nil {
+						return
+					}
+				}
+			}
+		}
+
+	}
+
+	return
+}