Browse Source

Merge branch 'cygx/cygx_14_5' of http://8.136.199.33:3000/hongze/hongze_cygx

zhangchuanxing 3 days ago
parent
commit
26eaaf53c7

+ 98 - 95
controllers/activity_special.go

@@ -238,34 +238,35 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 				br.ErrMsg = "获取日程数量信息失败,Err:" + err.Error()
 				return
 			}
+			go services.SpecialActivityPointsBillSignupAddSpecial(activityId, uid) // 用户报名专项调研活动扣点处理
 			//流水记录表
-			itemBill := new(models.CygxActivitySpecialTripBill)
-			itemBill.UserId = user.UserId
-			itemBill.ActivityId = activityInfo.ActivityId
-			itemBill.CreateTime = time.Now()
-			itemBill.Mobile = user.Mobile
-			itemBill.Email = user.Email
-			itemBill.CompanyId = user.CompanyId
-			itemBill.CompanyName = user.CompanyName
-			itemBill.RealName = user.RealName
-			itemBill.Source = 1
-			itemBill.DoType = 1
-			itemBill.BillDetailed = -1 // 流水减一
-			itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
-			itemBill.ChartPermissionId = activityInfo.ChartPermissionId
-			itemBill.ChartPermissionName = activityInfo.ChartPermissionName
-
-			if utils.InArrayByStr(utils.ACTIVITY_SPECIAL_TRIP_PERMISSION_NAME_OTHER, activityInfo.ChartPermissionName) {
-				//如果是策略、固收、周期行业,把代扣行业信息放入流水表,取消报名的时候,返点使用
-				maxChartPermissionId, maxChartPermissionName, err := services.GetSpecialBillMaxChartPermissionId(user)
-				if err != nil {
-					br.Msg = "操作失败"
-					br.ErrMsg = "获取销售信息失败,GetSpecialBillMaxChartPermissionId Err:" + err.Error()
-					return
-				}
-				itemBill.ChartPermissionId = maxChartPermissionId
-				itemBill.ChartPermissionName = maxChartPermissionName
-			}
+			//itemBill := new(models.CygxActivitySpecialTripBill)
+			//itemBill.UserId = user.UserId
+			//itemBill.ActivityId = activityInfo.ActivityId
+			//itemBill.CreateTime = time.Now()
+			//itemBill.Mobile = user.Mobile
+			//itemBill.Email = user.Email
+			//itemBill.CompanyId = user.CompanyId
+			//itemBill.CompanyName = user.CompanyName
+			//itemBill.RealName = user.RealName
+			//itemBill.Source = 1
+			//itemBill.DoType = 1
+			//itemBill.BillDetailed = -1 // 流水减一
+			//itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
+			//itemBill.ChartPermissionId = activityInfo.ChartPermissionId
+			//itemBill.ChartPermissionName = activityInfo.ChartPermissionName
+			//
+			//if utils.InArrayByStr(utils.ACTIVITY_SPECIAL_TRIP_PERMISSION_NAME_OTHER, activityInfo.ChartPermissionName) {
+			//	//如果是策略、固收、周期行业,把代扣行业信息放入流水表,取消报名的时候,返点使用
+			//	maxChartPermissionId, maxChartPermissionName, err := services.GetSpecialBillMaxChartPermissionId(user)
+			//	if err != nil {
+			//		br.Msg = "操作失败"
+			//		br.ErrMsg = "获取销售信息失败,GetSpecialBillMaxChartPermissionId Err:" + err.Error()
+			//		return
+			//	}
+			//	itemBill.ChartPermissionId = maxChartPermissionId
+			//	itemBill.ChartPermissionName = maxChartPermissionName
+			//}
 
 			var itemMeeting = new(models.CygxActivitySpecialMeetingDetail)
 			itemMeeting.UserId = user.UserId
@@ -343,18 +344,18 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 					br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
 					return
 				}
-				resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
-				//48小时之内的取消也扣除一次参会记录
-				if time.Now().Add(+time.Hour * 48).After(resultTime) {
-					itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
-				} else {
-					err = services.DeductTripRemainingtimesByUser(user, activityInfo) //扣除用户专项调研剩余次数
-					if err != nil {
-						br.Msg = "操作失败"
-						br.ErrMsg = "操作失败,Err:" + err.Error()
-						return
-					}
-				}
+				//resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
+				////48小时之内的取消也扣除一次参会记录
+				//if time.Now().Add(+time.Hour * 48).After(resultTime) {
+				//	itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
+				//} else {
+				//	err = services.DeductTripRemainingtimesByUser(user, activityInfo) //扣除用户专项调研剩余次数
+				//	if err != nil {
+				//		br.Msg = "操作失败"
+				//		br.ErrMsg = "操作失败,Err:" + err.Error()
+				//		return
+				//	}
+				//}
 			}
 			//userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
 			//if err != nil {
@@ -375,21 +376,21 @@ func (this *ActivitySpecialCoAntroller) SpecialTripAdd() {
 			//	itemBill.Total = strings.TrimRight(itemBill.Total, "+")
 			//}
 
-			totalText, err := services.HandleActivitySpecialTripBillTotalText(user.CompanyId)
-			if err != nil {
-				br.Msg = "报名失败,"
-				br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
-				return
-			}
-			itemBill.Total = totalText
+			//totalText, err := services.HandleActivitySpecialTripBillTotalText(user.CompanyId)
+			//if err != nil {
+			//	br.Msg = "报名失败,"
+			//	br.ErrMsg = "二次报名,更改报名是否有效状态失败,Err:" + err.Error()
+			//	return
+			//}
+			//itemBill.Total = totalText
 
 			//添加流水记录
-			err = models.AddCygxActivitySpecialTripBill(itemBill)
-			if err != nil {
-				br.Msg = "报名失败,"
-				br.ErrMsg = "AddCygxActivitySpecialTripBill,Err:" + err.Error()
-				return
-			}
+			//err = models.AddCygxActivitySpecialTripBill(itemBill)
+			//if err != nil {
+			//	br.Msg = "报名失败,"
+			//	br.ErrMsg = "AddCygxActivitySpecialTripBill,Err:" + err.Error()
+			//	return
+			//}
 			//添加数据到会信息
 			err = models.AddCygxActivitySpecialMeetingDetail(itemMeeting)
 			if err != nil {
@@ -465,48 +466,49 @@ func (this *ActivitySpecialCoAntroller) Tripcancel() {
 		br.ErrMsg = "操作失败,Err:" + errInfo.Error()
 		return
 	}
-	//流水记录表
-	itemBill := new(models.CygxActivitySpecialTripBill)
-	itemBill.UserId = user.UserId
-	itemBill.ActivityId = activityInfo.ActivityId
-	itemBill.CreateTime = time.Now()
-	itemBill.Mobile = user.Mobile
-	itemBill.Email = user.Email
-	itemBill.CompanyId = user.CompanyId
-	itemBill.CompanyName = user.CompanyName
-	itemBill.RealName = user.RealName
-	itemBill.Source = 1
-	itemBill.DoType = 2
-	itemBill.BillDetailed = 1 // 流水加一
-	itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
-	itemBill.ChartPermissionId = activityInfo.ChartPermissionId
-	itemBill.ChartPermissionName = activityInfo.ChartPermissionName
+	////流水记录表
+	//itemBill := new(models.CygxActivitySpecialTripBill)
+	//itemBill.UserId = user.UserId
+	//itemBill.ActivityId = activityInfo.ActivityId
+	//itemBill.CreateTime = time.Now()
+	//itemBill.Mobile = user.Mobile
+	//itemBill.Email = user.Email
+	//itemBill.CompanyId = user.CompanyId
+	//itemBill.CompanyName = user.CompanyName
+	//itemBill.RealName = user.RealName
+	//itemBill.Source = 1
+	//itemBill.DoType = 2
+	//itemBill.BillDetailed = 1 // 流水加一
+	//itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
+	//itemBill.ChartPermissionId = activityInfo.ChartPermissionId
+	//itemBill.ChartPermissionName = activityInfo.ChartPermissionName
 	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
 
-	if utils.InArrayByStr(utils.ACTIVITY_SPECIAL_TRIP_PERMISSION_NAME_OTHER, activityInfo.ChartPermissionName) {
-		//如果是策略、固收、周期行业,把代扣行业信息放入流水表,取消报名的时候,返点使用
-		lastTripBill, err := models.GetCygxActivitySpecialTripBillLastDetialByActivityId(activityInfo.ActivityId, user.UserId)
-		if err != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "获取销售信息失败,GetSpecialBillMaxChartPermissionId Err:" + err.Error()
-			return
-		}
-		itemBill.ChartPermissionId = lastTripBill.ChartPermissionId
-		itemBill.ChartPermissionName = lastTripBill.ChartPermissionName
-	}
+	//if utils.InArrayByStr(utils.ACTIVITY_SPECIAL_TRIP_PERMISSION_NAME_OTHER, activityInfo.ChartPermissionName) {
+	//	//如果是策略、固收、周期行业,把代扣行业信息放入流水表,取消报名的时候,返点使用
+	//	lastTripBill, err := models.GetCygxActivitySpecialTripBillLastDetialByActivityId(activityInfo.ActivityId, user.UserId)
+	//	if err != nil {
+	//		br.Msg = "操作失败"
+	//		br.ErrMsg = "获取销售信息失败,GetSpecialBillMaxChartPermissionId Err:" + err.Error()
+	//		return
+	//	}
+	//	itemBill.ChartPermissionId = lastTripBill.ChartPermissionId
+	//	itemBill.ChartPermissionName = lastTripBill.ChartPermissionName
+	//}
 	//48小时之内的取消也扣除一次参会记录
 	var isValid int
 	if time.Now().Add(+time.Hour * 48).After(resultTime) {
 		isValid = 1
-		itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
-	} else {
-		err = services.RebateTripRemainingtimesByUser(user, activityInfo) // 返点
-		if err != nil {
-			br.Msg = "操作失败"
-			br.ErrMsg = "操作失败,RebateTripRemainingtimesByUserErr:" + err.Error()
-			return
-		}
+		//itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
 	}
+	//else {
+	//	err = services.RebateTripRemainingtimesByUser(user, activityInfo) // 返点
+	//	if err != nil {
+	//		br.Msg = "操作失败"
+	//		br.ErrMsg = "操作失败,RebateTripRemainingtimesByUserErr:" + err.Error()
+	//		return
+	//	}
+	//}
 	//userType, tripRemaining, mapChartName, err := services.GetChartPermissionSpecialSurplusByCompany(user.CompanyId)
 	//if err != nil {
 	//	br.Msg = "获取专项调研剩余次数失败"
@@ -526,13 +528,13 @@ func (this *ActivitySpecialCoAntroller) Tripcancel() {
 	//	itemBill.Total = strings.TrimRight(itemBill.Total, "+")
 	//}
 
-	totalText, err := services.HandleActivitySpecialTripBillTotalText(user.CompanyId)
-	if err != nil {
-		br.Msg = "操作失败,"
-		br.ErrMsg = "HandleActivitySpecialTripBillTotalText,Err:" + err.Error()
-		return
-	}
-	itemBill.Total = totalText
+	//totalText, err := services.HandleActivitySpecialTripBillTotalText(user.CompanyId)
+	//if err != nil {
+	//	br.Msg = "操作失败,"
+	//	br.ErrMsg = "HandleActivitySpecialTripBillTotalText,Err:" + err.Error()
+	//	return
+	//}
+	//itemBill.Total = totalText
 	err = models.CancelActivitySpecialTripIsValid(isValid, activityInfo.ActivityId, uid)
 	if err != nil {
 		br.Msg = "操作失败"
@@ -546,7 +548,8 @@ func (this *ActivitySpecialCoAntroller) Tripcancel() {
 		br.ErrMsg = "CancelCygxActivitySpecialMeetingDetail,Err:" + err.Error()
 		return
 	}
-	go models.AddCygxActivitySpecialTripBill(itemBill)
+	go services.ActivityPointsBillSignupCancelSpecial(activityId, uid) // 用户取消报名专项调研活动扣点处理
+	//go models.AddCygxActivitySpecialTripBill(itemBill)
 
 	br.Ret = 200
 	br.Success = true

+ 10 - 0
models/activity_special_meeting_detail.go

@@ -33,3 +33,13 @@ func CancelCygxActivitySpecialMeetingDetail(uid, activityId int) (err error) {
 	_, err = o.Raw(sql, uid, activityId).Exec()
 	return
 }
+
+func GetCygxActivitySpecialmeetingDetailList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripResp, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *
+			FROM
+			cygx_activity_special_meeting_detail  
+			WHERE 1 = 1 ` + condition
+	_, err = o.Raw(sql, pars).QueryRows(&item)
+	return
+}

+ 18 - 2
models/activity_special_permission_points.go

@@ -8,7 +8,7 @@ import (
 type CygxActivitySpecialPermissionPoints struct {
 	Id                  int       `orm:"column(id);pk"`
 	CompanyId           int       `description:"公司ID"`
-	Points              int       `description:"剩余点数"`
+	Points              float64   `description:"剩余点数"`
 	CompanyName         string    `description:"公司名称"`
 	ChartPermissionId   int       `description:"行业id"`
 	ChartPermissionName string    `description:"行业名称"`
@@ -35,9 +35,25 @@ func GetCygxActivitySpecialPermissionPointsList(condition string, pars []interfa
 }
 
 // 更新公司每个行业剩余研选点数
-func UpdateCygxActivitySpecialPermissionPoints(points, companyId, chartPermissionId int) (err error) {
+func UpdateCygxActivitySpecialPermissionPoints(points float64, companyId, chartPermissionId int) (err error) {
 	o := orm.NewOrm()
 	sql := `UPDATE cygx_activity_special_permission_points SET points = ?  WHERE company_id=?  AND chart_permission_id=? `
 	_, err = o.Raw(sql, points, companyId, chartPermissionId).Exec()
 	return
 }
+
+// 获取公司剩余点数
+func GetCygxActivitySpecialPermissionPoints(companyId int) (comapnyPointsNum float64, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT points FROM cygx_activity_special_permission_points  WHERE company_id=? `
+	err = o.Raw(sql, companyId).QueryRow(&comapnyPointsNum)
+	return
+}
+
+// 获取数量
+func GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId int) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_special_permission_points WHERE company_id=?  `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, companyId).QueryRow(&count)
+	return
+}

+ 1 - 10
models/activity_special_trip.go

@@ -43,6 +43,7 @@ type CygxActivitySpecialTripResp struct {
 	ResearchTheme       string `description:"调研主题"`
 	ChartPermissionId   int    `description:"行业id"`
 	ChartPermissionName string `description:"行业名称"`
+	IsMeeting           int    `description:"是否到会,1到会,0未到会"`
 }
 
 func GetCygxActivitySpecialTripList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripResp, err error) {
@@ -55,16 +56,6 @@ func GetCygxActivitySpecialTripList(condition string, pars []interface{}) (item
 	return
 }
 
-func GetCygxActivitySpecialmeetingDetailList(condition string, pars []interface{}) (item []*CygxActivitySpecialTripResp, err error) {
-	o := orm.NewOrm()
-	sql := `SELECT *
-			FROM
-			cygx_activity_special_meeting_detail  
-			WHERE 1 = 1 ` + condition
-	_, err = o.Raw(sql, pars).QueryRows(&item)
-	return
-}
-
 // 获取某一用户的报名的数量
 func GetUserActivitySpecialTripCount(uid, activityId int) (count int, err error) {
 	sqlCount := `SELECT COUNT(1) AS count FROM cygx_activity_special_trip  WHERE  user_id=?  AND   activity_id =? `

+ 42 - 104
models/activity_special_trip_bill.go

@@ -17,7 +17,7 @@ type CygxActivitySpecialTripBill struct {
 	RealName            string    `description:"用户实际名称"`
 	AdminId             int       `description:"销售/管理员ID"`
 	Source              int       `description:"来源,1小程序,2后台添加, 3开发人员手动添加"`
-	BillDetailed        int       `description:"流水明细,判断是进账还是出账"`
+	BillDetailed        float64   `description:"流水明细,判断是进账还是出账"`
 	DoType              int       `description:"操作方式,1报名,2取消报名"`
 	RegisterPlatform    int       `description:"来源 1小程序,2:网页"`
 	ChartPermissionId   int       `description:"行业id"`
@@ -25,6 +25,7 @@ type CygxActivitySpecialTripBill struct {
 	Way                 int       `description:"1报名,取消报名。2到会取消到会 3转正或清零 4取消活动"`
 	Content             string    `description:"内容"`
 	Total               string    `description:"总和"`
+	TableSource         string    `description:"活动类型来源 活动 :activity 、专项调研活动:activityspecial"`
 }
 
 // 添加
@@ -80,111 +81,14 @@ func GetCygxActivitySpecialTripBillList(condition string, pars []interface{}) (i
 	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)
+// 通过查询条件获取详情
+func GetCygxActivitySpecialTripBillByCondition(condition string, pars []interface{}) (item *CygxActivitySpecialTripBill, err error) {
+	if condition == "" {
+		return
 	}
-	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()
+	sql := `SELECT * FROM cygx_activity_special_trip_bill  WHERE 1 = 1  ` + condition
+	err = o.Raw(sql, pars).QueryRow(&item)
 	return
 }
 
@@ -198,3 +102,37 @@ func GetCygxActivitySpecialTripBillLastDetialByActivityId(activityId, userId int
 	err = o.Raw(sql, activityId, userId).QueryRow(&item)
 	return
 }
+
+// AddCygxActivitySpecialTripBillMulti 批量添加
+func AddCygxActivitySpecialTripBillMulti(items []*CygxActivitySpecialTripBill, itemsUpdate []*CygxActivitySpecialPermissionPoints) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+	if len(items) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(items), items)
+	}
+	//批量修改公司剩余点数
+	p, err := o.Raw("UPDATE cygx_activity_special_permission_points SET points = ?, modify_time = ? WHERE company_id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range itemsUpdate {
+		_, err = p.Exec(v.Points, v.ModifyTime, v.CompanyId)
+		if err != nil {
+			return
+		}
+	}
+	return
+}

+ 14 - 5
models/chart_permission.go

@@ -6,11 +6,12 @@ import (
 )
 
 type ChartPermission struct {
-	ChartPermissionId int    `description:"权限id"`
-	PermissionName    string `description:"权限名称"`
-	IsShowSustainable bool   `description:"是否展示限免标签"`
-	ImageUrlM         string `description:"图片地址"`
-	IsChoose          bool   `description:"是否选择"`
+	ChartPermissionId   int    `description:"权限id"`
+	PermissionName      string `description:"权限名称"`
+	ChartPermissionName string `description:"名称"`
+	IsShowSustainable   bool   `description:"是否展示限免标签"`
+	ImageUrlM           string `description:"图片地址"`
+	IsChoose            bool   `description:"是否选择"`
 }
 
 type ChartPermissionItemResp struct {
@@ -179,3 +180,11 @@ func GetChartPermissionIdByName(condition string, pars []interface{}) (chartperm
 	err = o.Raw(sql, pars).QueryRow(&chartpermissionids)
 	return
 }
+
+// 获取权益主观权限
+func GetChartPermissionListRaiSubjectivity() (items []*ChartPermission, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM chart_permission WHERE product_id=2  AND permission_type = 1 and parent_id > 0  ORDER BY sort ASC `
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 15 - 0
models/company/company_contract.go

@@ -83,6 +83,13 @@ func GetCompanyContractList(condition string, pars []interface{}) (items []*Comp
 	return
 }
 
+func GetCompanyContractById(companyContractId int) (item *CompanyContract, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sql := `SELECT * FROM company_contract WHERE company_contract_id=? `
+	err = o.Raw(sql, companyContractId).QueryRow(&item)
+	return
+}
+
 // 通过查询条件获取最后一个合同
 func GetCompanyContractLastList(condition string, pars []interface{}) (items []*CompanyContract, err error) {
 	if condition == "" {
@@ -93,3 +100,11 @@ func GetCompanyContractLastList(condition string, pars []interface{}) (items []*
 	_, err = o.Raw(sql, pars).QueryRows(&items)
 	return
 }
+
+// 获取合同是否包含点数
+func GetCompanyContractPermissionPointsCount(companyId int) (points float64, err error) {
+	o := orm.NewOrmUsingDB("weekly_report")
+	sqlCount := `SELECT points FROM company_contract_permission  WHERE company_contract_id=?  AND points >0   LIMIT 	  1 `
+	err = o.Raw(sqlCount, companyId).QueryRow(&points)
+	return
+}

+ 2 - 0
services/activity.go

@@ -699,6 +699,8 @@ func GetActivityDetailUserPower(user *models.WxUserItem, activityInfo *models.Ac
 	//勾选【研选扣点】且扣点对象为参会人的活动,需要有买方研选的正式权限
 	if strings.Contains(activityInfo.ChartPermissionName, utils.CHART_PERMISSION_NAME_YANXUAN) && activityPointsByUserAllMap[activityInfo.ActivityId] {
 		isResearchSpecial = true
+		havePower = true
+		return
 	}
 	//如果是弘则的用户或者宏观的权限不做校验
 	//if (GetBelongingRai(user.Mobile) && user.CompanyId == utils.HZ_COMPANY_ID) || activityInfo.ChartPermissionName == utils.HONG_GUAN_NAME {

+ 799 - 122
services/activity_points.go

@@ -136,6 +136,46 @@ func YanXuanActivityPointsBillSubmitMeeting(activityId, adminId int) (err error)
 	return
 }
 
+// 用户报名专项调研活动扣点处理
+func SpecialActivityPointsBillSignupAddSpecial(activityId, uid int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
+			go utils.SendAlarmMsg("用户报名专项调研活动扣点处理,写入Redis队列消息失败 SpecialActivityPointsBillSignupAddSpecial :"+err.Error()+msg, 2)
+		}
+	}()
+	//SourceType int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
+	log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 9, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
+	if utils.Re == nil {
+		err = utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
+		if err != nil {
+			fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
+		}
+	}
+	return
+}
+
+// 用户取消报名专项调研活动扣点处理
+func ActivityPointsBillSignupCancelSpecial(activityId, uid int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			msg := fmt.Sprint("activityId:", activityId, "userId:", uid)
+			go utils.SendAlarmMsg("用户取消报名专项调研活动扣点处理,写入Redis队列消息失败 ActivityPointsBillSignupCancelSpecial :"+err.Error()+msg, 2)
+		}
+	}()
+	//SourceType int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
+	log := &models.YanXuanActivityPointsRedis{UserId: uid, ActivityId: activityId, SourceType: 10, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 1, CreateTime: time.Now()}
+	if utils.Re == nil {
+		err = utils.Rc.LPush(utils.CYGX_YANXUAN_POINTS_KEY, log)
+		if err != nil {
+			fmt.Println("YanXuanActivityPointsRedis LPush Err:" + err.Error())
+		}
+	}
+	return
+}
+
 // YanXuanActivityPointsBillReduce 处理研选活动扣点
 func YanXuanActivityPointsBillReduce() (err error) {
 	for {
@@ -167,17 +207,34 @@ func YanXuanActivityPointsBillReduce() (err error) {
 				go YanXuanActivityPointsBillSubmitMeetingReduce(log)
 				fmt.Println("5:活动到会研选扣点处理。")
 			case 6:
-				go YanXuanCompanyApprovalReduce(log)
+				//go YanXuanCompanyApprovalReduce(log)
 				fmt.Println("6:研选审批通过的时候研选扣点更新。")
 				break
 			case 7:
-				go YanXuanCompanyCompanyTryOutReduce(log)
+				//go YanXuanCompanyCompanyTryOutReduce(log)
 				fmt.Println("7:正式专试用定时任务更新研选扣点。")
 				break
 			case 8:
-				go YanXuanActivityVivoPointsBillSignupReduce(log)
+				//go YanXuanActivityVivoPointsBillSignupReduce(log)
 				fmt.Println("8:播放研选扣点音视频。")
 				break
+			case 9:
+				go YanXuanActivityPointsBillSignupAddReduceSpecial(log)
+				fmt.Println("9:报名专项调研活动。")
+				break
+			case 10:
+				go SpecialActivityPointsBillSignupCancelReduce(log)
+				fmt.Println(" 10:取消报名专项调研活动")
+				break
+			case 11:
+				go ActivitySpecialCompanyApprovalReduce(log)
+				fmt.Println("11:合同审批通过的时候,专项调研点数更新。")
+				break
+			case 12:
+				go ActivitySpecialPointsBillSubmitMeetingReduce(log)
+				fmt.Println("12,专项调研活动提交到会点数更新。")
+				break
+
 			default:
 				fmt.Println(string(b))
 				go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
@@ -229,7 +286,7 @@ func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRe
 	}
 	companyId := user.CompanyId
 	//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
-	total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
+	total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
 	if e != nil {
 		err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
 		return
@@ -237,31 +294,30 @@ func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRe
 	var companyPointsNum float64
 	if total == 0 {
 		companyPointsNum = 0
-		itemPointsCompany := new(models.CygxActivityPointsCompany)
+		itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
 
 		itemPointsCompany.CompanyId = companyId
 		itemPointsCompany.CompanyName = user.CompanyName
 		itemPointsCompany.CreateTime = time.Now()
 		itemPointsCompany.ModifyTime = time.Now()
 
-		e = models.AddCygxActivityPointsCompany(itemPointsCompany)
+		e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
 		if e != nil {
-			err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
+			err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
 			return
 		}
 	} else {
 		// 获取用户所在公司剩余的点
-		companyPointsNum, e = models.GetCompanyPoints(user.CompanyId)
+		companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
 		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("GetCompanyPoints, Err: " + e.Error())
+			err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
 			return
 		}
-
 	}
 
 	//获取需要添加的流水信息
-	var items []*models.CygxActivityPointsBill
-	item := new(models.CygxActivityPointsBill)
+	var items []*models.CygxActivitySpecialTripBill
+	item := new(models.CygxActivitySpecialTripBill)
 	item.UserId = user.UserId
 	item.ActivityId = activityId
 	item.CreateTime = time.Now()
@@ -275,20 +331,22 @@ func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRe
 	item.AdminId = log.AdminId
 	item.Source = log.Source
 	item.ChartPermissionId = activityInfo.ChartPermissionId
+	item.ChartPermissionName = activityInfo.ChartPermissionName
 	item.DoType = 1
 	item.Content = activityInfo.ActivityName + "--报名"
-	item.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
+	item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.UserPointsNum, "次")
+	item.TableSource = utils.CYGX_OBJ_ACTIVITY
 	items = append(items, item)
 
 	//更新对应机构的剩余点数
-	var itemCompanys []*models.CygxActivityPointsCompany
-	itemCompany := new(models.CygxActivityPointsCompany)
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 	itemCompany.CompanyId = user.CompanyId
-	itemCompany.Points = item.Points
+	itemCompany.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
 	itemCompany.ModifyTime = time.Now()
 	itemCompanys = append(itemCompanys, itemCompany)
 
-	err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 	return
 }
 
@@ -333,7 +391,7 @@ func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPoint
 	}
 
 	// 获取用户所在公司剩余的点
-	companyPointsNum, e := models.GetCompanyPoints(user.CompanyId)
+	companyPointsNum, e := models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetCompanyPoints, Err: " + e.Error())
 		return
@@ -342,17 +400,17 @@ func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPoint
 	//查询最新的一条针对这个用户的扣点记录
 	var condition string
 	var pars []interface{}
-	condition += ` AND activity_id = ? AND user_id = ?  AND bill_detailed < 0   ORDER BY id DESC LIMIT 1  `
+	condition += ` AND activity_id = ? AND user_id = ? AND table_source = 'activity'  AND bill_detailed < 0   ORDER BY id DESC LIMIT 1  `
 	pars = append(pars, activityId, userId)
-	activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
+	activityPointsBillDetail, e := models.GetCygxActivitySpecialTripBillByCondition(condition, pars)
 	if e != nil {
-		err = errors.New("activityPointsBillDetail" + e.Error())
+		err = errors.New("GetCygxActivitySpecialTripBillByCondition" + e.Error())
 		return
 	}
 
 	//获取需要添加的流水信息
-	var items []*models.CygxActivityPointsBill
-	item := new(models.CygxActivityPointsBill)
+	var items []*models.CygxActivitySpecialTripBill
+	item := new(models.CygxActivitySpecialTripBill)
 	item.UserId = user.UserId
 	item.ActivityId = activityId
 	item.CreateTime = time.Now()
@@ -366,20 +424,22 @@ func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPoint
 	item.AdminId = log.AdminId
 	item.Source = log.Source
 	item.ChartPermissionId = activityInfo.ChartPermissionId
+	item.ChartPermissionName = activityInfo.ChartPermissionName
 	item.DoType = 2
 	item.Content = activityInfo.ActivityName + "--取消报名"
-	item.Points = companyPointsNum - activityPointsBillDetail.BillDetailed
+	item.Total = fmt.Sprint(companyPointsNum-activityPointsBillDetail.BillDetailed, "次")
+	item.TableSource = utils.CYGX_OBJ_ACTIVITY
 	items = append(items, item)
 
 	//更新对应机构的剩余点数
-	var itemCompanys []*models.CygxActivityPointsCompany
-	itemCompany := new(models.CygxActivityPointsCompany)
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 	itemCompany.CompanyId = user.CompanyId
-	itemCompany.Points = item.Points
+	itemCompany.Points = companyPointsNum - activityPointsBillDetail.BillDetailed
 	itemCompany.ModifyTime = time.Now()
 	itemCompanys = append(itemCompanys, itemCompany)
 
-	err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 	return
 }
 
@@ -431,17 +491,17 @@ func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPoint
 	//查询最新的一条针对这个公司的扣点记录
 	var condition string
 	var pars []interface{}
-	condition += ` AND activity_id = ? AND company_id = ? AND mobile = '' AND bill_detailed < 0   ORDER BY id DESC LIMIT 1  `
+	condition += ` AND activity_id = ? AND company_id = ? AND mobile = ''  AND table_source = 'activity'  AND bill_detailed < 0   ORDER BY id DESC LIMIT 1  `
 	pars = append(pars, activityId, comapnyId)
-	activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
+	activityPointsBillDetail, e := models.GetCygxActivitySpecialTripBillByCondition(condition, pars)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetCompanyPoints, Err: " + e.Error())
 		return
 	}
-	var items []*models.CygxActivityPointsBill
-	item := new(models.CygxActivityPointsBill)
-	var itemCompanys []*models.CygxActivityPointsCompany
-	itemCompany := new(models.CygxActivityPointsCompany)
+	var items []*models.CygxActivitySpecialTripBill
+	item := new(models.CygxActivitySpecialTripBill)
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 
 	if activityPointsBillDetail == nil { //如果是空的就添加
 		//获取需要添加的流水信息
@@ -460,17 +520,19 @@ func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPoint
 		item.ChartPermissionId = activityInfo.ChartPermissionId
 		item.DoType = 1
 		item.Content = activityInfo.ActivityName + "--办会"
-		item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
+		//item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
+		item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.CompanyPointsNum, "次")
+		item.TableSource = utils.CYGX_OBJ_ACTIVITY
 		items = append(items, item)
 
 		//更新对应机构的剩余点数
 		itemCompany.CompanyId = comapny.CompanyId
-		itemCompany.Points = item.Points
+		itemCompany.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
 		itemCompany.ModifyTime = time.Now()
 		itemCompanys = append(itemCompanys, itemCompany)
-		e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+		e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
+			err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
 			return
 		}
 	} else {
@@ -478,17 +540,17 @@ func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPoint
 		if activityPointsSetDetail.CompanyPointsNum != -activityPointsBillDetail.BillDetailed {
 			item.Id = activityPointsBillDetail.Id
 			item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
-			item.Points = companyPointsNum - activityPointsBillDetail.BillDetailed - activityPointsSetDetail.CompanyPointsNum
+			item.Total = fmt.Sprint(companyPointsNum-activityPointsBillDetail.BillDetailed-activityPointsSetDetail.CompanyPointsNum, "次")
 			items = append(items, item)
 
 			//更新对应机构的剩余点数
 			itemCompany.CompanyId = comapny.CompanyId
-			itemCompany.Points = item.Points
+			itemCompany.Points = companyPointsNum - activityPointsBillDetail.BillDetailed - activityPointsSetDetail.CompanyPointsNum
 			itemCompany.ModifyTime = time.Now()
 			itemCompanys = append(itemCompanys, itemCompany)
-			e = models.UpdateCygxActivityPointsBillMulti(items, itemCompanys)
+			e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 			if e != nil && e.Error() != utils.ErrNoRow() {
-				err = errors.New("UpdateCygxActivityPointsBillMulti, Err: " + e.Error())
+				err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
 				return
 			}
 		}
@@ -530,9 +592,9 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 	}
 
 	comapnyId := activityPointsSetDetail.CompanyId
-	var items []*models.CygxActivityPointsBill
+	var items []*models.CygxActivitySpecialTripBill
 
-	var itemCompanys []*models.CygxActivityPointsCompany
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
 	mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
 	if publishStatus == 1 {
 		fmt.Println("//活动发布")
@@ -548,7 +610,7 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				err = errors.New("GetCompanyPoints, Err: " + e.Error())
 				return
 			}
-			item := new(models.CygxActivityPointsBill)
+			item := new(models.CygxActivitySpecialTripBill)
 			item.ActivityId = activityId
 			item.CreateTime = time.Now()
 			//item.Mobile = user.Mobile
@@ -561,18 +623,21 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 			item.AdminId = log.AdminId
 			item.Source = log.Source
 			item.ChartPermissionId = activityInfo.ChartPermissionId
+			item.ChartPermissionName = activityInfo.ChartPermissionName
 			item.DoType = 1
 			item.Content = activityInfo.ActivityName + "--办会"
-			item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
+			//item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
+			item.Total = fmt.Sprint(companyPointsNum-activityPointsSetDetail.CompanyPointsNum, "次")
+			item.TableSource = utils.CYGX_OBJ_ACTIVITY
 			items = append(items, item)
 
 			//更新对应机构的剩余点数
-			itemCompany := new(models.CygxActivityPointsCompany)
+			itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 			itemCompany.CompanyId = comapny.CompanyId
-			itemCompany.Points = item.Points
+			itemCompany.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
 			itemCompany.ModifyTime = time.Now()
 			itemCompanys = append(itemCompanys, itemCompany)
-			mapCompanyPoints[comapnyId] = item.Points
+			mapCompanyPoints[comapnyId] = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
 		}
 
 		if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
@@ -597,9 +662,9 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				pars = append(pars, companyIds)
 
 				//获取这些公司剩余的点数
-				conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
+				conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
 				if e != nil && e.Error() != utils.ErrNoRow() {
-					err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
+					err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
 					return
 				}
 
@@ -610,7 +675,7 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				}
 
 				for _, user := range listSignup {
-					item := new(models.CygxActivityPointsBill)
+					item := new(models.CygxActivitySpecialTripBill)
 					item.ActivityId = activityId
 					item.CreateTime = time.Now()
 					item.Mobile = user.Mobile
@@ -627,16 +692,18 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 					item.DoType = 1
 					item.Content = activityInfo.ActivityName + "--发布活动"
 					mapCompanyPoints[user.CompanyId] -= activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
-					item.Points = mapCompanyPoints[user.CompanyId]
+					//item.Points = mapCompanyPoints[user.CompanyId]
+					item.Total = fmt.Sprint(mapCompanyPoints[user.CompanyId], "次")
+					item.TableSource = utils.CYGX_OBJ_ACTIVITY
 					items = append(items, item)
 
 					//更新对应机构的剩余点数
-					itemCompany := new(models.CygxActivityPointsCompany)
+					itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 					itemCompany.CompanyId = user.CompanyId
-					itemCompany.Points = item.Points
+					itemCompany.Points = mapCompanyPoints[user.CompanyId]
 					itemCompany.ModifyTime = time.Now()
 					itemCompanys = append(itemCompanys, itemCompany)
-					mapCompanyPoints[user.CompanyId] = item.Points
+					mapCompanyPoints[user.CompanyId] = mapCompanyPoints[user.CompanyId]
 				}
 			}
 		}
@@ -657,7 +724,7 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				err = errors.New("GetCompanyPoints, Err: " + e.Error())
 				return
 			}
-			item := new(models.CygxActivityPointsBill)
+			item := new(models.CygxActivitySpecialTripBill)
 			item.ActivityId = activityId
 			item.CreateTime = time.Now()
 			//item.Mobile = user.Mobile
@@ -672,15 +739,17 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 			item.ChartPermissionId = activityInfo.ChartPermissionId
 			item.DoType = 2
 			item.Content = activityInfo.ActivityName + "--取消办会"
-			item.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
+			//item.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
+			item.Total = fmt.Sprint(companyPointsNum+activityPointsSetDetail.CompanyPointsNum, "次")
+			item.TableSource = utils.CYGX_OBJ_ACTIVITY
 			items = append(items, item)
 			//更新对应机构的剩余点数
-			itemCompany := new(models.CygxActivityPointsCompany)
+			itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 			itemCompany.CompanyId = comapny.CompanyId
-			itemCompany.Points = item.Points
+			itemCompany.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
 			itemCompany.ModifyTime = time.Now()
 			itemCompanys = append(itemCompanys, itemCompany)
-			mapCompanyPoints[comapnyId] = item.Points
+			mapCompanyPoints[comapnyId] = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
 		}
 
 		if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
@@ -705,9 +774,9 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				pars = append(pars, companyIds)
 
 				//获取这些公司剩余的点数
-				conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
+				conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
 				if e != nil && e.Error() != utils.ErrNoRow() {
-					err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
+					err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
 					return
 				}
 
@@ -718,24 +787,23 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 				}
 
 				pars = make([]interface{}, 0)
-				condition = ` AND activity_id = ?   `
+				condition = ` AND activity_id = ? AND table_source = 'activity'   `
 				pars = append(pars, activityId)
 				//获取扣点的流水记录
-				activityPointsBillList, e := models.GetCygxActivityPointsBillList(condition, pars)
+				activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
 				if e != nil && e.Error() != utils.ErrNoRow() {
-					err = errors.New("GetCygxActivityPointsBillList" + e.Error())
+					err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
 					return
 				}
 				mapUserBill := make(map[int]bool)
 				for _, v := range activityPointsBillList {
 					mapUserBill[v.UserId] = true
 				}
-
 				for _, user := range listSignup {
 					if !mapUserBill[user.UserId] {
 						continue // 如果用户的扣点记录不存在,那么就不进行返点处理
 					}
-					item := new(models.CygxActivityPointsBill)
+					item := new(models.CygxActivitySpecialTripBill)
 					item.ActivityId = activityId
 					item.CreateTime = time.Now()
 					item.Mobile = user.Mobile
@@ -752,23 +820,27 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 					item.DoType = 2
 					item.Content = activityInfo.ActivityName + "--取消活动"
 					mapCompanyPoints[user.CompanyId] += activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
-					item.Points = mapCompanyPoints[user.CompanyId]
+					//item.Points = mapCompanyPoints[user.CompanyId]
+
+					item.Total = fmt.Sprint(mapCompanyPoints[user.CompanyId], "次")
+					item.TableSource = utils.CYGX_OBJ_ACTIVITY
+
 					items = append(items, item)
 
 					//更新对应机构的剩余点数
-					itemCompany := new(models.CygxActivityPointsCompany)
+					itemCompany := new(models.CygxActivitySpecialPermissionPoints)
 					itemCompany.CompanyId = user.CompanyId
-					itemCompany.Points = item.Points
+					itemCompany.Points = mapCompanyPoints[user.CompanyId]
 					itemCompany.ModifyTime = time.Now()
 					itemCompanys = append(itemCompanys, itemCompany)
-					mapCompanyPoints[user.CompanyId] = item.Points
+					//mapCompanyPoints[user.CompanyId] = item.Points
 				}
 			}
 		}
 	}
-	e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
+		err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
 		return
 	}
 	return
@@ -814,7 +886,7 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 	mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
 	var condition string
 	var pars []interface{}
-	condition += ` AND activity_id = ? AND  is_meeting = 1 `
+	condition += ` AND activity_id = ?  `
 	pars = append(pars, activityId)
 
 	//获取提交到会的人员信息
@@ -831,22 +903,22 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 
 		companyId := v.CompanyId
 		//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
-		total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
+		total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
 		if e != nil {
-			err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
+			err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
 			return
 		}
 
 		if total == 0 {
-			itemPointsCompany := new(models.CygxActivityPointsCompany)
+			itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
 			itemPointsCompany.CompanyId = companyId
 			itemPointsCompany.CompanyName = v.CompanyName
 			itemPointsCompany.CreateTime = time.Now()
 			itemPointsCompany.ModifyTime = time.Now()
 
-			e = models.AddCygxActivityPointsCompany(itemPointsCompany)
+			e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
 			if e != nil {
-				err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
+				err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
 				return
 			}
 		}
@@ -857,24 +929,26 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 	condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
 	pars = append(pars, companyIds)
 	//获取这些公司剩余的点数
-	conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
+	conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
 	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
 		return
 	}
 
 	pars = make([]interface{}, 0)
-	condition = ` AND activity_id = ? AND  mobile  != ''  `
+	condition = ` AND activity_id = ? AND table_source = 'activity'  AND  mobile  != ''  ORDER BY  id DESC   `
 	pars = append(pars, activityId)
 	//获取扣点的流水记录
-	activityPointsBillList, e := models.GetCygxActivityPointsBillList(condition, pars)
+	activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
 	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("GetCygxActivityPointsBillList" + e.Error())
+		err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
 		return
 	}
-	mapActivityPointsBill := make(map[string]*models.CygxActivityPointsBill)
-	for _, v := range activityPointsBillList {
-		mapActivityPointsBill[v.Mobile] = v
+	mapActivityPointsBill := make(map[string]*models.CygxActivitySpecialTripBill)
+	for _, v := range activityPointsBillList { //获取这场活动,某个手机号最后一次的扣点记录
+		if mapActivityPointsBill[v.Mobile] == nil {
+			mapActivityPointsBill[v.Mobile] = v
+		}
 	}
 	//return
 	for _, v := range conpanyList {
@@ -884,10 +958,10 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 	}
 
 	//return
-	var items []*models.CygxActivityPointsBill
-	var itemCompanys []*models.CygxActivityPointsCompany
+	var items []*models.CygxActivitySpecialTripBill
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
 	for _, user := range signUpDetailList {
-		item := new(models.CygxActivityPointsBill)
+		item := new(models.CygxActivitySpecialTripBill)
 		item.ActivityId = activityId
 		item.CreateTime = time.Now()
 		item.UserId = user.UserId
@@ -900,42 +974,51 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 		item.AdminId = log.AdminId
 		item.Source = log.Source
 		item.ChartPermissionId = activityInfo.ChartPermissionId
-		//如果没有扣点记录就对他们进行扣点处理
-		if mapActivityPointsBill[user.Mobile] == nil {
-			item.BillDetailed = -activityPointsSetDetail.UserPointsNum
-			item.DoType = 1
-			item.Content = activityInfo.ActivityName + "--活动到会"
-			item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
-			items = append(items, item)
-			//更新对应机构的剩余点数
-			itemCompany := new(models.CygxActivityPointsCompany)
-			itemCompany.CompanyId = user.CompanyId
-			itemCompany.Points = item.Points
-			itemCompany.ModifyTime = time.Now()
-			itemCompanys = append(itemCompanys, itemCompany)
-			mapCompanyPoints[user.CompanyId] = item.Points
+		if user.IsMeeting == 1 {
+			//如果没有扣点记录就对他们进行扣点处理
+			if mapActivityPointsBill[user.Mobile] == nil || mapActivityPointsBill[user.Mobile].BillDetailed > 0 {
+				points := mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
+				item.BillDetailed = -activityPointsSetDetail.UserPointsNum
+				item.DoType = 1
+				item.Content = activityInfo.ActivityName + "--活动到会"
+				item.Total = fmt.Sprint(points, "次")
+				item.TableSource = utils.CYGX_OBJ_ACTIVITY
+				//item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
+				items = append(items, item)
+				//更新对应机构的剩余点数
+				itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+				itemCompany.CompanyId = user.CompanyId
+				itemCompany.Points = points
+				itemCompany.ModifyTime = time.Now()
+				itemCompanys = append(itemCompanys, itemCompany)
+				mapCompanyPoints[user.CompanyId] = points
+			}
 		} else {
 			////第二次提交改成未到会的,对其进行返点处理
-			//if mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
-			//	item.BillDetailed = activityPointsSetDetail.UserPointsNum
-			//	item.DoType = 2
-			//	item.Content = activityInfo.ActivityName + "--活动取消到会"
-			//	item.Points = mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
-			//	items = append(items, item)
-			//
-			//	//更新对应机构的剩余点数
-			//	itemCompany := new(models.CygxActivityPointsCompany)
-			//	itemCompany.CompanyId = user.CompanyId
-			//	itemCompany.Points = item.Points
-			//	itemCompany.ModifyTime = time.Now()
-			//	itemCompanys = append(itemCompanys, itemCompany)
-			//	mapCompanyPoints[user.CompanyId] = item.Points
-			//}
+			if mapActivityPointsBill[user.Mobile] != nil && mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
+				fmt.Println("取消到会了")
+				points := mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.UserPointsNum
+				item.BillDetailed = activityPointsSetDetail.UserPointsNum
+				item.DoType = 2
+				item.Content = activityInfo.ActivityName + "--活动取消到会"
+				//item.Points =points
+				item.Total = fmt.Sprint(points, "次")
+				item.TableSource = utils.CYGX_OBJ_ACTIVITY
+				items = append(items, item)
+
+				//更新对应机构的剩余点数
+				itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+				itemCompany.CompanyId = user.CompanyId
+				itemCompany.Points = points
+				itemCompany.ModifyTime = time.Now()
+				itemCompanys = append(itemCompanys, itemCompany)
+				mapCompanyPoints[user.CompanyId] = points
+			}
 		}
 	}
-	e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
 	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
+		err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
 		return
 	}
 	return
@@ -1222,3 +1305,597 @@ func YanXuanActivityVivoPointsBillSignupReduce(log models.YanXuanActivityPointsR
 	err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
 	return
 }
+
+// 9:用户报名(专项调研活动)
+func YanXuanActivityPointsBillSignupAddReduceSpecial(log models.YanXuanActivityPointsRedis) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
+		}
+	}()
+	//加2000毫秒的延迟
+	time.Sleep(2 * time.Second)
+	activityId := log.ActivityId
+	userId := log.UserId
+	activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
+	if e != nil {
+		err = errors.New("GetCygxActivitySpecialDetail" + e.Error())
+		return
+	}
+	user, e := models.GetWxUserItemByUserId(userId)
+	if e != nil {
+		err = errors.New("GetWxUserItemByUserId" + e.Error())
+		return
+	}
+	companyId := user.CompanyId
+	//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
+	total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
+	if e != nil {
+		err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
+		return
+	}
+	var companyPointsNum float64
+	if total == 0 {
+		companyPointsNum = 0
+		itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
+		itemPointsCompany.CompanyId = companyId
+		itemPointsCompany.CompanyName = user.CompanyName
+		itemPointsCompany.CreateTime = time.Now()
+		itemPointsCompany.ModifyTime = time.Now()
+		e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
+		if e != nil {
+			err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+			return
+		}
+	} else {
+		// 获取用户所在公司剩余的点
+		companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+			return
+		}
+	}
+
+	//获取需要添加的流水信息
+	var items []*models.CygxActivitySpecialTripBill
+	itemBill := new(models.CygxActivitySpecialTripBill)
+	itemBill.UserId = user.UserId
+	itemBill.ActivityId = activityInfo.ActivityId
+	itemBill.CreateTime = time.Now()
+	itemBill.Mobile = user.Mobile
+	itemBill.Email = user.Email
+	itemBill.CompanyId = user.CompanyId
+	itemBill.CompanyName = user.CompanyName
+	itemBill.RealName = user.RealName
+	itemBill.Source = 1
+	itemBill.DoType = 1
+	itemBill.BillDetailed = -1 // 流水减一
+	itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
+	itemBill.ChartPermissionId = activityInfo.ChartPermissionId
+	itemBill.ChartPermissionName = activityInfo.ChartPermissionName
+	itemBill.Content = activityInfo.ResearchTheme + "--报名"
+	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
+	//48小时之内的取消也扣除一次参会记录
+	if time.Now().Add(+time.Hour * 48).After(resultTime) {
+		itemBill.BillDetailed = 0 //48小时之内,取消报名之后二次报名,不扣除流水记录
+	}
+	itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
+	itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+	items = append(items, itemBill)
+	//更新对应机构的剩余点数
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+	itemCompany.CompanyId = user.CompanyId
+	itemCompany.Points = companyPointsNum + itemBill.BillDetailed
+	itemCompany.ModifyTime = time.Now()
+	itemCompanys = append(itemCompanys, itemCompany)
+
+	err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
+	return
+}
+
+// 10:用户取消报名(专项调研活动)
+func SpecialActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPointsRedis) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("用户取消报名扣点,处理Redis队列消息失败 SpecialActivityPointsBillSignupCancelReduce:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
+		}
+	}()
+
+	activityId := log.ActivityId
+	userId := log.UserId
+
+	activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
+	if e != nil {
+		err = errors.New("GetAddActivityInfoById" + e.Error())
+		return
+	}
+	user, e := models.GetWxUserItemByUserId(userId)
+	if e != nil {
+		err = errors.New("GetWxUserItemByUserId" + e.Error())
+		return
+	}
+
+	// 获取用户所在公司剩余的点
+	companyPointsNum, e := models.GetCygxActivitySpecialPermissionPoints(user.CompanyId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyPoints, Err: " + e.Error())
+		return
+	}
+
+	//获取需要添加的流水信息
+	var items []*models.CygxActivitySpecialTripBill
+	//流水记录表
+	itemBill := new(models.CygxActivitySpecialTripBill)
+	itemBill.UserId = user.UserId
+	itemBill.ActivityId = activityInfo.ActivityId
+	itemBill.CreateTime = time.Now()
+	itemBill.Mobile = user.Mobile
+	itemBill.Email = user.Email
+	itemBill.CompanyId = user.CompanyId
+	itemBill.CompanyName = user.CompanyName
+	itemBill.RealName = user.RealName
+	itemBill.Source = 1
+	itemBill.DoType = 2
+	itemBill.BillDetailed = 1 // 流水加一
+	itemBill.RegisterPlatform = log.RegisterPlatform
+	itemBill.ChartPermissionId = activityInfo.ChartPermissionId
+	itemBill.ChartPermissionName = activityInfo.ChartPermissionName
+	resultTime := utils.StrTimeToTime(activityInfo.ActivityTime)
+	//48小时之内的取消也扣除一次参会记录
+	if time.Now().Add(+time.Hour * 48).After(resultTime) {
+		itemBill.BillDetailed = 0 //48小时之内取消的活动扣点不返回
+	}
+	itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
+	itemBill.Content = activityInfo.ResearchTheme + "--取消报名"
+	itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+	items = append(items, itemBill)
+
+	//更新对应机构的剩余点数
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+	itemCompany.CompanyId = user.CompanyId
+	itemCompany.Points = companyPointsNum + itemBill.BillDetailed
+	itemCompany.ModifyTime = time.Now()
+	itemCompanys = append(itemCompanys, itemCompany)
+
+	err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
+	return
+}
+
+// 11:合同审批通过的时候,专项调研点数更新
+func ActivitySpecialCompanyApprovalReduce(log models.YanXuanActivityPointsRedis) (err error) {
+	time.Sleep(5 * time.Second) // 延迟5秒处理
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("研选审批通过的时候研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
+		}
+	}()
+	companyId := log.ComapnyId
+	companyContractId := log.CompanyContractId
+	comapnyDetail, e := models.GetCompanyById(companyId)
+	if e != nil {
+		err = errors.New("GetCompanyById" + e.Error())
+		return
+	}
+
+	//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
+	total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
+	if e != nil {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
+		return
+	}
+	var companyPointsNum float64
+	if total == 0 {
+		companyPointsNum = 0
+		itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
+		itemPointsCompany.CompanyId = companyId
+		itemPointsCompany.CompanyName = comapnyDetail.CompanyName
+		itemPointsCompany.CreateTime = time.Now()
+		itemPointsCompany.ModifyTime = time.Now()
+		e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
+		if e != nil {
+			err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+			return
+		}
+	} else {
+		// 获取用户所在公司剩余的点
+		companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(companyId)
+		if e != nil && e.Error() != utils.ErrNoRow() {
+			err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+			return
+		}
+	}
+
+	companyPoints, e := company.GetCompanyContractPermissionPointsCount(companyContractId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyContractPermissionPointsCount, Err: " + e.Error())
+		return
+	}
+	//获取需要添加的流水信息
+	var items []*models.CygxActivitySpecialTripBill
+	if companyPoints > 0 {
+		companyPointsNum += companyPoints
+		itemBill := new(models.CygxActivitySpecialTripBill)
+		itemBill.CreateTime = time.Now()
+		itemBill.CompanyId = comapnyDetail.CompanyId
+		itemBill.CompanyName = comapnyDetail.CompanyName
+		itemBill.Source = 2
+		itemBill.DoType = 2
+		itemBill.Way = 3
+		itemBill.RegisterPlatform = log.RegisterPlatform
+		itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+		itemBill.BillDetailed = companyPoints
+		itemBill.Total = fmt.Sprint(companyPointsNum, "次")
+		itemBill.Content = "路演/专项点数转正"
+		items = append(items, itemBill)
+	}
+
+	// 获取合同信息-套餐信息
+	companyContract, e := company.GetCompanyContractById(companyContractId)
+	if e != nil {
+		err = errors.New("GetCompanyContractById, Err: " + e.Error())
+		return
+	}
+
+	itemBill := new(models.CygxActivitySpecialTripBill)
+	itemBill.CreateTime = time.Now()
+	itemBill.CompanyId = comapnyDetail.CompanyId
+	itemBill.CompanyName = comapnyDetail.CompanyName
+	itemBill.Source = 2
+	itemBill.DoType = 2
+	itemBill.Way = 3
+	itemBill.RegisterPlatform = log.RegisterPlatform
+	itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+
+	packageType := companyContract.RaiPackageType
+	if packageType > 0 {
+		packageTypeMap := map[int]float64{1: 16, 2: 12}
+		totalTrip := packageTypeMap[packageType]
+		itemBill.BillDetailed = totalTrip
+		companyPointsNum += totalTrip
+		itemBill.Total = fmt.Sprint(itemBill.BillDetailed) + "次"
+		if packageType == 2 {
+			itemBill.Content = "45w大套餐转正"
+		} else {
+			itemBill.Content = "70w大套餐转正"
+		}
+		itemBill.Total = fmt.Sprint(companyPointsNum, "次")
+		items = append(items, itemBill)
+	} else {
+		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("GetCompanyContractPermissionList, Err: " + e.Error())
+			return
+		}
+		if len(list) > 0 {
+			//获取权益主观权限
+			listRaiSubjectivity, e := models.GetChartPermissionListRaiSubjectivity()
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetChartPermissionListRaiSubjectivity, Err: " + e.Error())
+			}
+			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 list {
+				//如果是升级则加点
+				if v.IsUpgrade == 1 && mapRaiSubjectivity[v.ChartPermissionId] {
+					itemBill.BillDetailed += 4
+					companyPointsNum += 4
+				}
+			}
+			itemBill.Total = fmt.Sprint(companyPointsNum, "次")
+			itemBill.Content = "行业升级套餐转正"
+			items = append(items, itemBill)
+		}
+	}
+
+	//更新对应机构的剩余点数
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+	itemCompany.CompanyId = comapnyDetail.CompanyId
+	itemCompany.Points = companyPointsNum
+	itemCompany.ModifyTime = time.Now()
+	itemCompanys = append(itemCompanys, itemCompany)
+	err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
+	return
+}
+
+//func init() {
+//	ActivitySpecialPointsBillSubmitMeetingReduce(93)
+//}
+
+// 12: 专项调活动提交到会扣点处理
+func ActivitySpecialPointsBillSubmitMeetingReduce(log models.YanXuanActivityPointsRedis) (err error) {
+	//func ActivitySpecialPointsBillSubmitMeetingReduce(activityId int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("专项调活动提交到会扣点处理,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "adminId", log.AdminId), 2)
+		}
+	}()
+
+	time.Sleep(5 * time.Second) //添加五秒的延迟
+
+	activityId := log.ActivityId
+	activityInfo, e := models.GetCygxActivitySpecialDetail(activityId)
+	if e != nil {
+		err = errors.New("GetCygxActivitySpecialDetail" + e.Error())
+		return
+	}
+	var companyIds []int
+	mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
+	var condition string
+	var pars []interface{}
+	condition += ` AND activity_id = ?   `
+	pars = append(pars, activityId)
+
+	//获取提交到会的人员信息
+	signUpDetailList, e := models.GetCygxActivitySpecialmeetingDetailList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetSignupDetailList" + e.Error())
+		return
+	}
+	if len(signUpDetailList) == 0 {
+		return
+	}
+	for _, v := range signUpDetailList {
+		companyIds = append(companyIds, v.CompanyId)
+
+		companyId := v.CompanyId
+		//判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
+		total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
+		if e != nil {
+			err = errors.New("GetCygxActivitySpecialPermissionPointsCountByCompanyId, Err: " + e.Error())
+			return
+		}
+
+		if total == 0 {
+			itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
+			itemPointsCompany.CompanyId = companyId
+			itemPointsCompany.CompanyName = v.CompanyName
+			itemPointsCompany.CreateTime = time.Now()
+			itemPointsCompany.ModifyTime = time.Now()
+
+			e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
+			if e != nil {
+				err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+				return
+			}
+		}
+	}
+
+	pars = make([]interface{}, 0)
+	condition = ` AND activity_id = ? AND table_source = 'activityspecial'  AND  mobile  != ''  ORDER BY  id DESC   `
+	pars = append(pars, activityId)
+	//获取扣点的流水记录
+	activityPointsBillList, e := models.GetCygxActivitySpecialTripBill(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialTripBill" + e.Error())
+		return
+	}
+	mapActivityPointsBill := make(map[string]*models.CygxActivitySpecialTripBill)
+	var itemsOld []*models.CygxActivitySpecialTripBill // 之前扣过点的流水记录
+	for _, v := range activityPointsBillList {         //获取这场活动,某个手机号最后一次的扣点记录
+		if mapActivityPointsBill[v.Mobile] == nil {
+			mapActivityPointsBill[v.Mobile] = v
+			if v.BillDetailed < 0 {
+				itemsOld = append(itemsOld, v)
+			}
+		}
+		companyIds = append(companyIds, v.CompanyId)
+	}
+
+	//return
+	pars = make([]interface{}, 0)
+	condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
+	pars = append(pars, companyIds)
+	//获取这些公司剩余的点数
+	conpanyList, e := models.GetCygxActivitySpecialPermissionPointsList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivitySpecialPermissionPointsList, Err: " + e.Error())
+		return
+	}
+
+	//return
+	for _, v := range conpanyList {
+		if v.CompanyId != 0 {
+			mapCompanyPoints[v.CompanyId] = v.Points
+		}
+	}
+
+	//return
+	var items []*models.CygxActivitySpecialTripBill
+	var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+	mapMeetUserId := make(map[int]bool)
+	for _, user := range signUpDetailList {
+		mapMeetUserId[user.UserId] = true
+		item := new(models.CygxActivitySpecialTripBill)
+		item.ActivityId = activityId
+		item.CreateTime = time.Now()
+		item.UserId = user.UserId
+		item.Mobile = user.Mobile
+		item.Email = user.Email
+		item.CompanyId = user.CompanyId
+		item.CompanyName = user.CompanyName
+		item.RealName = user.RealName
+		item.RegisterPlatform = log.RegisterPlatform
+		item.AdminId = log.AdminId
+		item.Source = log.Source
+		item.ChartPermissionId = activityInfo.ChartPermissionId
+		item.ChartPermissionName = activityInfo.ChartPermissionName
+		if user.IsMeeting == 1 {
+			//如果没有扣点记录就对他们进行扣点处理
+			if mapActivityPointsBill[user.Mobile] == nil || mapActivityPointsBill[user.Mobile].BillDetailed > 0 {
+				points := mapCompanyPoints[user.CompanyId] - 1
+				item.BillDetailed = -1
+				item.DoType = 1
+				item.Content = activityInfo.ResearchTheme + "--活动到会"
+				item.Total = fmt.Sprint(points, "次")
+				item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+				//item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.UserPointsNum
+				items = append(items, item)
+				//更新对应机构的剩余点数
+				itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+				itemCompany.CompanyId = user.CompanyId
+				itemCompany.Points = points
+				itemCompany.ModifyTime = time.Now()
+				itemCompanys = append(itemCompanys, itemCompany)
+				mapCompanyPoints[user.CompanyId] = points
+			}
+		}
+		//else {
+		//	////第二次提交改成未到会的,对其进行返点处理
+		//	if mapActivityPointsBill[user.Mobile] != nil && mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
+		//		fmt.Println("取消到会了")
+		//		points := mapCompanyPoints[user.CompanyId] + 1
+		//		item.BillDetailed = 1
+		//		item.DoType = 2
+		//		item.Content = activityInfo.ResearchTheme + "--活动取消到会"
+		//		//item.Points =points
+		//		item.Total = fmt.Sprint(points, "次")
+		//		item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+		//		items = append(items, item)
+		//
+		//		//更新对应机构的剩余点数
+		//		itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+		//		itemCompany.CompanyId = user.CompanyId
+		//		itemCompany.Points = points
+		//		itemCompany.ModifyTime = time.Now()
+		//		itemCompanys = append(itemCompanys, itemCompany)
+		//		mapCompanyPoints[user.CompanyId] = points
+		//	}
+		//}
+	}
+
+	if len(itemsOld) > 0 {
+		for _, user := range itemsOld {
+			if mapMeetUserId[user.UserId] {
+				continue
+			}
+			item := new(models.CygxActivitySpecialTripBill)
+			item.ActivityId = activityId
+			item.CreateTime = time.Now()
+			item.UserId = user.UserId
+			item.Mobile = user.Mobile
+			item.Email = user.Email
+			item.CompanyId = user.CompanyId
+			item.CompanyName = user.CompanyName
+			item.RealName = user.RealName
+			item.RegisterPlatform = log.RegisterPlatform
+			item.AdminId = log.AdminId
+			item.Source = log.Source
+			item.ChartPermissionId = activityInfo.ChartPermissionId
+			item.ChartPermissionName = activityInfo.ChartPermissionName
+
+			points := mapCompanyPoints[user.CompanyId] + 1
+			item.BillDetailed = 1
+			item.DoType = 2
+			item.Content = activityInfo.ResearchTheme + "--活动取消到会"
+			//item.Points =points
+			item.Total = fmt.Sprint(points, "次")
+			item.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+			items = append(items, item)
+
+			//更新对应机构的剩余点数
+			itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+			itemCompany.CompanyId = user.CompanyId
+			itemCompany.Points = points
+			itemCompany.ModifyTime = time.Now()
+			itemCompanys = append(itemCompanys, itemCompany)
+			mapCompanyPoints[user.CompanyId] = points
+		}
+	}
+
+	e = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("AddCygxActivitySpecialTripBillMulti, Err: " + e.Error())
+		return
+	}
+	return
+}
+
+//func init() {
+//	initCygx14_5_01()
+//}
+
+func initCygx14_5_01() {
+	// 获取流水信息
+	var condition string
+	var pars []interface{}
+	condition += ` AND  points != 0  `
+	list, err := models.GetCygxActivityPointsCompanyList(condition, pars)
+	if err != nil {
+		fmt.Println(err)
+		return
+	}
+	for _, v := range list {
+		fmt.Println("v.CompanyId", v.CompanyId)
+		companyId := v.CompanyId
+		total, e := models.GetCygxActivitySpecialPermissionPointsCountByCompanyId(companyId)
+		if e != nil {
+			err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
+			return
+		}
+		var companyPointsNum float64
+		if total == 0 {
+			companyPointsNum = 0
+			itemPointsCompany := new(models.CygxActivitySpecialPermissionPoints)
+			itemPointsCompany.CompanyId = companyId
+			itemPointsCompany.CompanyName = v.CompanyName
+			itemPointsCompany.CreateTime = time.Now()
+			itemPointsCompany.ModifyTime = time.Now()
+			e = models.AddCygxActivitySpecialPermissionPoints(itemPointsCompany)
+			if e != nil {
+				err = errors.New("AddCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+				return
+			}
+		} else {
+			// 获取用户所在公司剩余的点
+			companyPointsNum, e = models.GetCygxActivitySpecialPermissionPoints(v.CompanyId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetCygxActivitySpecialPermissionPoints, Err: " + e.Error())
+				return
+			}
+		}
+
+		//获取需要添加的流水信息
+		var items []*models.CygxActivitySpecialTripBill
+		itemBill := new(models.CygxActivitySpecialTripBill)
+
+		itemBill.CreateTime = time.Now()
+
+		itemBill.CompanyId = v.CompanyId
+		itemBill.CompanyName = v.CompanyName
+		itemBill.Source = 3
+		itemBill.DoType = 0
+		itemBill.BillDetailed = v.Points / 2 // 流水减一
+		//itemBill.RegisterPlatform = utils.REGISTER_PLATFORM
+
+		itemBill.Content = "研选点数清零,1/2比例折算进专项/路演点数"
+		itemBill.Total = fmt.Sprint(companyPointsNum+itemBill.BillDetailed, "次")
+		itemBill.TableSource = utils.CYGX_OBJ_ACTIVITYSPECIAL
+		items = append(items, itemBill)
+		//更新对应机构的剩余点数
+		var itemCompanys []*models.CygxActivitySpecialPermissionPoints
+		itemCompany := new(models.CygxActivitySpecialPermissionPoints)
+		itemCompany.CompanyId = v.CompanyId
+		itemCompany.Points = companyPointsNum + itemBill.BillDetailed
+		itemCompany.ModifyTime = time.Now()
+		itemCompanys = append(itemCompanys, itemCompany)
+
+		err = models.AddCygxActivitySpecialTripBillMulti(items, itemCompanys)
+	}
+	fmt.Println("enddd145")
+}

+ 1 - 1
services/activity_signup.go

@@ -98,7 +98,7 @@ func CheckActivityPoints(activityInfo *models.ActivityDetail, wxUser *models.WxU
 			return
 		}
 		// 获取用户所在公司剩余的点
-		companyPointsNum, e := models.GetCompanyPoints(wxUser.CompanyId)
+		companyPointsNum, e := models.GetCygxActivitySpecialPermissionPoints(wxUser.CompanyId)
 		if e != nil && e.Error() != utils.ErrNoRow() {
 			err = errors.New("GetCompanyPoints, Err: " + e.Error())
 			return

+ 1 - 1
services/activity_special.go

@@ -982,7 +982,7 @@ func GetSpecialDetailUserPower(user *models.WxUserItem, activityInfo *models.Cyg
 		}
 	}
 
-	permissionStr, e := GetCompanyPermissionUpgrade(user.CompanyId)
+	permissionStr, e := GetCompanyPermission(user.CompanyId)
 	if e != nil {
 		err = errors.New("GetCompanyPermissionUpgrade, Err: " + e.Error())
 		return

+ 3 - 108
services/activity_special_trip.go

@@ -53,111 +53,6 @@ func SpecialTripPopupMsg(activityInfo *models.CygxActivitySpecialDetail, user *m
 	return
 }
 
-// 获取用户剩余报名次数
-//func GetTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (errMsg string, tripRemaining int, err error) {
-//
-//	//获取 专项调研客户类型   //1、永续客户 //2、大套餐客户(4个行业全开通的正式客户) //3、分行业套餐客户(开通对应行业的正式客户) //4、仅开通专家套餐的正式客户 //5、开通对应行业套餐或专家套餐的试用客户;6、冻结客户;7、流失客户 8:行业升级套餐客户
-//	msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
-//	//var tripTota int
-//	//var airborneTota int
-//	//userType, _, e := GetActivitySpecialUserType(user.CompanyId)
-//	userType, _, e := GetUserType(user.CompanyId)
-//	if e != nil {
-//		err = errors.New("获取客户身份信息失败 GetActivitySpecialUserType, Err: " + e.Error())
-//		return
-//	}
-//	if userType == 0 {
-//		errMsg = msgTemplate
-//		return
-//	} else if userType == 1 {
-//		tripRemaining = 999
-//		return
-//	} else if userType == 2 {
-//		var condition string
-//		var pars []interface{}
-//
-//		condition += ` AND company_id = ? `
-//		pars = append(pars, user.CompanyId)
-//
-//		//airborneTota, e = models.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
-//		//if e != nil {
-//		//	err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
-//		//	return
-//		//}
-//		//condition += ` AND is_valid = 1 `
-//		//查询当年的数据
-//		condition += ` AND create_time >= ?  `
-//		pars = append(pars, time.Now().Format(utils.FormatYearDate)+"-01-01")
-//		listTripBill, e := models.GetCygxActivitySpecialTripBill(condition, pars)
-//		if e != nil {
-//			err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
-//			return
-//		}
-//		var TripBillNum int
-//		for _, v := range listTripBill {
-//			TripBillNum += v.BillDetailed
-//		}
-//		var packageType int
-//		//大套餐客户,数据库添加标识,
-//		companyUserTypeDetail, errs := models.GetCygxCompanyUserType(user.CompanyId)
-//		if errs != nil && errs.Error() != utils.ErrNoRow() {
-//			err = errs
-//			return
-//		}
-//		if companyUserTypeDetail != nil {
-//			packageType = companyUserTypeDetail.PackageType
-//			if companyUserTypeDetail.CustomerTypeId != 0 {
-//				userType = companyUserTypeDetail.CustomerTypeId
-//				return
-//			}
-//		}
-//
-//		packageTypeMap := map[int]int{1: 16, 2: 10}
-//		totalTrip := packageTypeMap[packageType]
-//		//tripRemaining = 10 - airborneTota + TripBillNum
-//		tripRemaining = totalTrip + TripBillNum
-//		if tripRemaining <= 0 {
-//			errMsg = msgTemplate
-//			return
-//		}
-//		//tripRemaining = 12 - tripTota
-//	} else {
-//		var condition string
-//		var pars []interface{}
-//
-//		condition += ` AND company_id = ? `
-//		pars = append(pars, user.CompanyId)
-//
-//		condition += ` AND chart_permission_id = ? `
-//		pars = append(pars, activityInfo.ChartPermissionId)
-//
-//		//airborneTota, e = models.GetActivitySpecialTripAirborneCountByActivitySpecial(condition, pars)
-//		//if e != nil {
-//		//	err = errors.New("GetActivitySpecialTripAirborneCountByActivitySpecial, Err: " + e.Error())
-//		//	return
-//		//}
-//		//查询当年的数据
-//		condition += ` AND create_time >= ?  `
-//		pars = append(pars, time.Now().Format(utils.FormatYearDate)+"-01-01")
-//		listTripBill, e := models.GetCygxActivitySpecialTripBill(condition, pars)
-//		if e != nil {
-//			err = errors.New("GetActivitySpecialTripCountByActivitySpecial, Err: " + e.Error())
-//			return
-//		}
-//		var TripBillNum int
-//		for _, v := range listTripBill {
-//			TripBillNum += v.BillDetailed
-//		}
-//		//tripRemaining = 5 - airborneTota + TripBillNum
-//		tripRemaining = 5 + TripBillNum
-//		if tripRemaining <= 0 {
-//			errMsg = msgTemplate
-//			return
-//		}
-//	}
-//	return
-//}
-
 // 校验是否还有剩余次数
 func CheckTripRemainingtimesBycompany(user *models.WxUserItem, activityInfo *models.CygxActivitySpecialDetail) (errMsg string, err error) {
 	msgTemplate := "您的专项调研次数已用完,如仍想参加,请与您的对口销售商议"
@@ -238,7 +133,7 @@ func DeductTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
 	var condition string
 	var pars []interface{}
 	var maxChartPermissionId int // 剩余点数最多的行业
-	var points int               // 剩余点数
+	var points float64           // 剩余点数
 	var activitySpecialPermissionPointsList []*models.CygxActivitySpecialPermissionPoints
 	//永续客户不限次数需要单独处理
 	if companyProduct.Status == utils.COMPANY_STATUS_FOREVER {
@@ -334,7 +229,7 @@ func RebateTripRemainingtimesByUser(user *models.WxUserItem, activityInfo *model
 	}
 
 	var maxChartPermissionId int // 剩余点数最多的行业(返点行业)
-	var points int               // 剩余点数
+	var points float64           // 剩余点数
 	for _, v := range activitySpecialPermissionPointsList {
 		maxChartPermissionId = v.ChartPermissionId
 		points = v.Points + 1
@@ -369,7 +264,7 @@ func HandleActivitySpecialTripBillTotalText(companyId int) (totalText string, er
 	}
 	//永续客户次数累加
 	if companyDetail.Status == utils.COMPANY_STATUS_FOREVER {
-		var points int
+		var points float64
 		for _, v := range activitySpecialPermissionPointsList {
 			points += v.Points
 		}

+ 0 - 281
services/init_10.9.1.go

@@ -1,281 +0,0 @@
-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
-}