xingzai 1 rok temu
rodzic
commit
29fb2ecf13

+ 8 - 0
models/activity.go

@@ -258,6 +258,14 @@ func GetAddActivityInfoById(ActivityId int) (item *ActivityDetail, err error) {
 	return
 }
 
+// 通过纪要ID获取活动详情
+func GetAddActivityInfoByActivityId(ActivityId int) (item *ActivityDetail, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity  WHERE activity_id=?  `
+	err = o.Raw(sql, ActivityId).QueryRow(&item)
+	return
+}
+
 // 通过活动名称获取活动详情
 func GetAddActivityInfoByTitle(title, startDate, endDate string) (item *ActivityDetail, err error) {
 	o := orm.NewOrm()

+ 24 - 0
models/activity_points_bill.go

@@ -98,6 +98,30 @@ func AddCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate
 	return
 }
 
+// AddCygxActivityPointsBillAndCompanyMulti 批量添加
+func AddCygxActivityPointsBillAndCompanyMulti(items []*CygxActivityPointsBill, itemsCompany []*CygxActivityPointsCompany) (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)
+	}
+	if len(itemsCompany) > 0 {
+		//批量添加流水信息
+		_, err = o.InsertMulti(len(itemsCompany), itemsCompany)
+	}
+	return
+}
+
 // UpdateCygxActivityPointsBillMulti 批量修改
 func UpdateCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate []*CygxActivityPointsCompany) (err error) {
 	o, err := orm.NewOrm().Begin()

+ 19 - 0
models/activity_points_company.go

@@ -21,3 +21,22 @@ func GetCompanyPoints(companyId int) (comapnyPointsNum float64, err error) {
 	err = o.Raw(sql, companyId).QueryRow(&comapnyPointsNum)
 	return
 }
+
+// 列表
+func GetCygxActivityPointsCompanyList(condition string, pars []interface{}) (items []*CygxActivityPointsCompany, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_points_company as art WHERE 1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = o.Raw(sql, pars).QueryRows(&items)
+	return
+}
+
+// 获取数量
+func GetCygxActivityPointsCompanyCountByCompanyId(companyId int) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_points_company WHERE company_id=?  `
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, companyId).QueryRow(&count)
+	return
+}

+ 2 - 1
models/activity_points_set.go

@@ -8,7 +8,8 @@ import (
 type YanXuanActivityPointsRedis struct {
 	UserId           int       `description:"用户ID"`
 	ComapnyId        int       `description:"公司ID"`
-	ActivityId       int       `description:"资源ID"`
+	ActivityId       int       `description:"活动ID"`
+	PublishStatus    int       `description:"发布状态 1已发布,0未发布"`
 	SourceType       int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
 	AdminId          int       `description:"管理员、销售ID"`
 	Source           int       `description:" 来源,1客户端,2后台添加, 3开发人员手动添加、4定时任务"`

+ 3 - 20
models/chart_permission.go

@@ -3,7 +3,6 @@ package models
 import (
 	"github.com/beego/beego/v2/client/orm"
 	"strings"
-	"time"
 )
 
 type ChartPermission struct {
@@ -60,7 +59,7 @@ func GetChartPermissionActivity() (items []*ActivityChartPermission, err error)
 	return
 }
 
-//处理添加主观客观之后的分类ID错误
+// 处理添加主观客观之后的分类ID错误
 func GetUserCompanyPermission(companyId int) (items []*ActivityChartPermission, err error) {
 	list, err := GetUserCompanyPermissionSandO(companyId)
 	if err != nil {
@@ -112,23 +111,7 @@ func GetUserCompanyPermissionSandO(companyId int) (items []*ActivityChartPermiss
 	return
 }
 
-type CompanyReportPermission struct {
-	CompanyReportPermissionId int `orm:"column(company_report_permission_id);pk"`
-	CompanyId                 int `description:"客户id"`
-	ReportPermissionId        int `description:"报告权限id"`
-	CreatedTime               time.Time
-	LastUpdatedTime           time.Time
-	ChartPermissionId         int    `description:"权限id"`
-	StartDate                 string `description:"权限开始日期"`
-	EndDate                   string `description:"权限结束日期"`
-	ProductId                 int    `description:"产品id"`
-	ProductName               string `description:"产品名称"`
-	ModifyTime                string `description:"修改时间"`
-	CompanyContractId         string `description:"合同id"`
-	Status                    string `description:"状态  '正式','试用','关闭','永续','潜在' "`
-}
-
-//获取策略下面的所有分类
+// 获取策略下面的所有分类
 func GetCompanyReportPermissionAll() (items []*CompanyReportPermission, err error) {
 	o := orm.NewOrm()
 	sql := `SELECT * FROM company_report_permission WHERE chart_permission_id IN (19,20,21,22) AND status IN ('正式','试用','永续')  AND created_time <= '2021-12-28 15:05:43'`
@@ -142,7 +125,7 @@ func AddChartPersion(item *CompanyReportPermission) (newId int64, err error) {
 	return
 }
 
-//获取海通国际开通的默认权限
+// 获取海通国际开通的默认权限
 func GetCompanyPermissionIdWithHtgj() (chartpermissionids string, err error) {
 	sql := ` SELECT GROUP_CONCAT(DISTINCT chart_permission_id  ORDER BY b.sort ASC  SEPARATOR ',') AS chartpermissionids
 			FROM chart_permission as  b 

+ 35 - 0
models/company_report_permission.go

@@ -0,0 +1,35 @@
+package models
+
+import (
+	"github.com/beego/beego/v2/client/orm"
+	"time"
+)
+
+type CompanyReportPermission struct {
+	CompanyReportPermissionId int64 `orm:"column(company_report_permission_id);pk"`
+	CompanyId                 int
+	ReportPermissionId        int
+	CreatedTime               time.Time
+	LastUpdatedTime           time.Time
+	ChartPermissionId         int
+	StartDate                 string `description:"权限开始日期"`
+	EndDate                   string `description:"权限结束日期"`
+	ProductId                 int    `description:"产品id"`
+	ProductName               string `description:"产品名称"`
+	CompanyContractId         int    `description:"合同id"`
+	Status                    string `description:"'正式','试用','关闭'"`
+	ModifyTime                string `description:"修改时间"`
+	IsUpgrade                 int    `description:"是否升级,1是,0否"`
+	ExpensiveYx               int    `description:"权益研选: 0-3w; 1-5w"`
+}
+
+// 通过查询条件获取详情
+func GetCompanyReportPermissionDetailByCondition(condition string, pars []interface{}) (item *CompanyReportPermission, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM company_report_permission  WHERE 1 = 1  ` + condition
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}

+ 1 - 0
models/db.go

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

+ 139 - 0
services/activity.go

@@ -1101,6 +1101,145 @@ func GetActivityonditionList(user *models.WxUserItem, activityTypeId, chartPermi
 	return
 }
 
+// 根据用户身份处理活动可见
+func ActivityConditioninitSql(user *models.WxUserItem, condition string, isPower int) (conditionActivity string, err error) {
+	condition += `   AND art.publish_status = 1 `
+	conditionActivity = condition
+	//弘则可以查看所有活动
+	if GetBelongingRai(user.Mobile) && user.CompanyId == utils.HZ_COMPANY_ID {
+		return
+	}
+	adminIds, err := models.GetSelleridWhichGroup(user.CompanyId, 2)
+	if err != nil {
+		return
+	}
+	userType, permissionStr, permissionStrZhengShi, err := GetUserTypeZhengShi(user.CompanyId)
+	if err != nil {
+		return
+	}
+	//判断客户规模是否属于可见范围的活动
+	companyProduct, err := models.GetCompanyProductDetail(user.CompanyId, 2)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		return
+	}
+	isMaker := user.IsMaker
+	slicePer := strings.Split(permissionStr, ",")
+	var permissionSqlStr string
+	var permissionNameStr string
+	for _, v := range slicePer {
+		if userType == 1 {
+			//研选权限处理
+			if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+				permissionNameStr += "'" + v + "',"
+			}
+		} else {
+			permissionNameStr += "'" + v + "',"
+		}
+	}
+	permissionNameStr = strings.Replace(permissionNameStr, "(主观)", "", -1)
+	permissionNameStr = strings.Replace(permissionNameStr, "(客观)", "", -1)
+	permissionNameStr = strings.TrimRight(permissionNameStr, ",")
+	slicePerZhengShi := strings.Split(permissionStrZhengShi, ",")
+	var permissionNameStrZhengShi string
+	for _, v := range slicePerZhengShi {
+		if userType == 1 {
+			//研选权限处理
+			if !strings.Contains(v, utils.CHART_PERMISSION_NAME_YANXUAN) {
+				permissionNameStrZhengShi += "'" + v + "',"
+			}
+		} else {
+			permissionNameStrZhengShi += "'" + v + "',"
+		}
+	}
+	permissionNameStrZhengShi = strings.Replace(permissionNameStrZhengShi, "(主观)", "", -1)
+	permissionNameStrZhengShi = strings.Replace(permissionNameStrZhengShi, "(客观)", "", -1)
+	permissionNameStrZhengShi = strings.TrimRight(permissionNameStrZhengShi, ",")
+
+	mapUserType, e := GetActivityCcustomerTypeList()
+	if e != nil {
+		err = e
+		return
+	}
+	var userTypeStr string
+	userTypeStr = mapUserType[userType]
+
+	// 查研观向7.4-始终查询宏观的权限(无论是否有权限)
+	if permissionNameStr == `` {
+		permissionNameStr = `'宏观'`
+	} else {
+		permissionNameStr += `, '宏观'`
+	}
+	var sqlExport string // 专家权限处理
+	sqlExport = ` AND (art.customer_type_ids LIKE '%` + userTypeStr + `%' `
+	if (userType == 2 || userType == 3) && strings.Contains(permissionStr, "专家") {
+		sqlExport += ` OR  art.customer_type_ids LIKE '%4%' `
+	}
+	sqlExport += `) `
+
+	if isPower == 1 {
+		permissionSqlStr = `  AND art.chart_permission_name  IN (` + permissionNameStr + `)`
+		condition += permissionSqlStr
+	}
+
+	var conditionOr string
+
+	//查询全部可见的数据(是否全部客户可见)
+	if adminIds != "" {
+		condition += ` 	AND ( art.visible_range != 1  OR  (	 art.admin_id IN ( ` + adminIds + ` )  AND art.visible_range = 1 ))  `
+	}
+
+	//活动仅决策人可见
+	if isMaker == 0 {
+		condition += ` AND art.is_maker_show = 0  `
+	}
+
+	//condition += `  AND art.visible_range != 1 `
+	if (userType == 2 || userType == 3 || userType == 4) && strings.Contains(permissionStr, "专家") {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%4%'	 ` + condition + `) `
+	}
+	if (userType == 5) && strings.Contains(permissionStr, "专家") {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND art.customer_type_ids LIKE '%5%'	 ` + condition + `) `
+	}
+	if userType == 1 {
+		conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + permissionSqlStr + `) `
+	} else {
+		conditionOr += ` OR ( art.is_limit_people = 0 ` + condition + `) `
+	}
+	if userType == 6 || userType == 7 {
+		conditionOr += ` OR (   art.customer_type_ids LIKE '%` + strconv.Itoa(userType) + `%'	 ` + condition + `) `
+	}
+	if companyProduct != nil {
+		if companyProduct.Scale != "" {
+			conditionOr += ` OR (  art.scale LIKE '%` + companyProduct.Scale + `%'	 ` + condition + `) `
+		}
+	}
+
+	conditionShengji, conditionZhengshi, conditionHangYe, e := ActivityLabelSpecialUserSql(user)
+	if e != nil {
+		err = errors.New("ActivityLabelSpecialUserSql, Err: " + e.Error())
+		return
+	}
+	// 升级客户可查看范围
+	if conditionShengji != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionShengji + condition + ` ) `
+	}
+	// 正式客户可查看范围
+	if conditionZhengshi != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionZhengshi + condition + ` ) `
+	}
+	// 行业客户可查看范围
+	if conditionHangYe != "" {
+		conditionOr += ` OR (  art.is_limit_people = 1 AND ` + conditionHangYe + condition + ` ) `
+	}
+
+	if userType == 3 {
+		condition += `  AND art.chart_permission_name  IN (` + permissionNameStrZhengShi + `) `
+	}
+	condition += `    AND  art.is_limit_people = 0  `
+	conditionActivity = condition + permissionSqlStr + sqlExport + conditionOr
+	return
+}
+
 // 研选系列专家电话会,会前1小时将问题列表发送给邮箱
 func SendEmailFileForAskMsgResearch(cont context.Context) (err error) {
 	var msg string

+ 290 - 64
services/activity_points.go

@@ -115,11 +115,18 @@ func YanXuanActivityPointsBillReduce() (err error) {
 				break
 			case 4:
 				go YanXuanActivityPointsBillActivityPublishAndCancelReduce(log)
-				fmt.Println("4:活动发布取消发布")
+				fmt.Println("4:活动发布取消发布")
 				break
 			case 5:
-				//go ActivitySpecialUserLabelLogReduce(log)
-				fmt.Println("5:活动到会。")
+				//go YanXuanActivityPointsBillActivityCancelReduce(log)
+				fmt.Println("5:活动取消发布。")
+			case 6:
+				go YanXuanCompanyApprovalReduce(log)
+				fmt.Println("6:研选审批通过的时候研选扣点更新。")
+				break
+			case 7:
+				go YanXuanCompanyCompanyTryOutReduce(log)
+				fmt.Println("7:正式专试用定时任务更新研选扣点。")
 				break
 			default:
 				fmt.Println(string(b))
@@ -393,16 +400,17 @@ func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPoint
 	return
 }
 
-// 4:活动发布以及取消发布
+// 4:活动发布取消发布
 func YanXuanActivityPointsBillActivityPublishAndCancelReduce(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)
+			go utils.SendAlarmMsg("活动发布扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "userId", log.UserId), 2)
 		}
 	}()
 
 	activityId := log.ActivityId
+	publishStatus := log.PublishStatus
 	//comapnyId := log.ComapnyId
 
 	//获取活动是否扣点以及扣点规则明细
@@ -418,91 +426,309 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 		return // 如果不是办会人,即扣点的这种形式,那么就不做任何处理
 	}
 
-	activityInfo, e := models.GetAddActivityInfoById(activityId)
+	activityInfo, e := models.GetAddActivityInfoByActivityId(activityId)
 	if e != nil {
-		err = errors.New("GetAddActivityInfoById" + e.Error())
+		err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
 		return
 	}
-	if activityInfo.PublishStatus == 0 {
-		return // 未发布的活动不做处理
+
+	comapnyId := activityPointsSetDetail.CompanyId
+	var items []*models.CygxActivityPointsBill
+
+	var itemCompanys []*models.CygxActivityPointsCompany
+
+	if publishStatus == 1 {
+		fmt.Println("//活动发布")
+		if comapnyId > 0 {
+			comapny, e := models.GetCompanyById(comapnyId)
+			if e != nil {
+				err = errors.New("GetCompanyById" + e.Error())
+				return
+			}
+			// 获取用户所在公司剩余的点
+			companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetCompanyPoints, Err: " + e.Error())
+				return
+			}
+			item := new(models.CygxActivityPointsBill)
+			item.ActivityId = activityId
+			item.CreateTime = time.Now()
+			//item.Mobile = user.Mobile
+			//item.Email = user.Email
+			item.CompanyId = comapny.CompanyId
+			item.CompanyName = comapny.CompanyName
+			//item.RealName = user.RealName
+			item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
+			item.RegisterPlatform = log.RegisterPlatform
+			item.AdminId = log.AdminId
+			item.Source = log.Source
+			item.ChartPermissionId = activityInfo.ChartPermissionId
+			item.DoType = 1
+			item.Content = activityInfo.ActivityName + "--办会"
+			item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
+			items = append(items, item)
+
+			//更新对应机构的剩余点数
+			itemCompany := new(models.CygxActivityPointsCompany)
+			itemCompany.CompanyId = comapny.CompanyId
+			itemCompany.Points = item.Points
+			itemCompany.ModifyTime = time.Now()
+			itemCompanys = append(itemCompanys, itemCompany)
+		}
+	} else {
+		fmt.Println("//活动取消发布")
+		//活动取消发布
+		mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
+		if comapnyId > 0 {
+			comapny, e := models.GetCompanyById(comapnyId)
+			if e != nil {
+				err = errors.New("GetCompanyById" + e.Error())
+				return
+			}
+			// 获取用户所在公司剩余的点
+			companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetCompanyPoints, Err: " + e.Error())
+				return
+			}
+			item := new(models.CygxActivityPointsBill)
+			item.ActivityId = activityId
+			item.CreateTime = time.Now()
+			//item.Mobile = user.Mobile
+			//item.Email = user.Email
+			item.CompanyId = comapny.CompanyId
+			item.CompanyName = comapny.CompanyName
+			//item.RealName = user.RealName
+			item.BillDetailed = activityPointsSetDetail.CompanyPointsNum
+			item.RegisterPlatform = log.RegisterPlatform
+			item.AdminId = log.AdminId
+			item.Source = log.Source
+			item.ChartPermissionId = activityInfo.ChartPermissionId
+			item.DoType = 2
+			item.Content = activityInfo.ActivityName + "--取消办会"
+			item.Points = companyPointsNum + activityPointsSetDetail.CompanyPointsNum
+			items = append(items, item)
+			//更新对应机构的剩余点数
+			itemCompany := new(models.CygxActivityPointsCompany)
+			itemCompany.CompanyId = comapny.CompanyId
+			itemCompany.Points = item.Points
+			itemCompany.ModifyTime = time.Now()
+			itemCompanys = append(itemCompanys, itemCompany)
+			mapCompanyPoints[comapnyId] = item.Points
+		}
+
+		if activityPointsSetDetail.UserPointsNum > 0 && activityPointsSetDetail.PointsType == 1 {
+			//如果扣点形式选的是报名即扣点,那么就对已经报名的用户所在机构进行返点
+			var condition string
+			var pars []interface{}
+			condition = ` AND do_fail_type = 0 AND activity_id  = ?`
+			pars = append(pars, activityId)
+
+			listSignup, e := models.GetActivitySignupList(condition, pars)
+			if e != nil && e.Error() != utils.ErrNoRow() {
+				err = errors.New("GetActivitySignupList, Err: " + e.Error())
+				return
+			}
+			var companyIds []int
+			if len(listSignup) > 0 {
+				for _, v := range listSignup {
+					companyIds = append(companyIds, v.CompanyId)
+				}
+				pars = make([]interface{}, 0)
+				condition = ` AND company_id IN (` + utils.GetOrmInReplace(len(companyIds)) + `)`
+				pars = append(pars, companyIds)
+
+				//获取这些公司剩余的点数
+				conpanyList, e := models.GetCygxActivityPointsCompanyList(condition, pars)
+				if e != nil && e.Error() != utils.ErrNoRow() {
+					err = errors.New("GetCygxActivityPointsCompanyList, Err: " + e.Error())
+					return
+				}
+
+				for _, v := range conpanyList {
+					if mapCompanyPoints[comapnyId] != 0 {
+						mapCompanyPoints[comapnyId] = v.Points
+					}
+				}
+
+				for _, user := range listSignup {
+					item := new(models.CygxActivityPointsBill)
+					item.ActivityId = activityId
+					item.CreateTime = time.Now()
+					item.Mobile = user.Mobile
+					item.Email = user.Email
+					item.CompanyId = user.CompanyId
+					item.CompanyName = user.CompanyName
+					item.RealName = user.RealName
+					item.BillDetailed = activityPointsSetDetail.UserPointsNum
+					item.RegisterPlatform = log.RegisterPlatform
+					item.AdminId = log.AdminId
+					item.Source = log.Source
+					item.ChartPermissionId = activityInfo.ChartPermissionId
+					item.DoType = 2
+					item.Content = activityInfo.ActivityName + "--取消活动"
+					mapCompanyPoints[comapnyId] += activityPointsSetDetail.UserPointsNum //通过map处理机构剩余点数
+					item.Points = mapCompanyPoints[comapnyId]
+					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[comapnyId] = item.Points
+				}
+			}
+		}
 	}
+
+	e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
+		return
+	}
+	return
+}
+
+// 6:研选审批通过的时候研选扣点更新
+func YanXuanCompanyApprovalReduce(log models.YanXuanActivityPointsRedis) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("研选审批通过的时候研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
+		}
+	}()
+	comapnyId := log.ComapnyId
+
 	comapny, e := models.GetCompanyById(comapnyId)
 	if e != nil {
 		err = errors.New("GetCompanyById" + e.Error())
 		return
 	}
-
-	// 获取用户所在公司剩余的点
-	companyPointsNum, e := models.GetCompanyPoints(comapny.CompanyId)
-	if e != nil && e.Error() != utils.ErrNoRow() {
-		err = errors.New("GetCompanyPoints, Err: " + e.Error())
+	total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(comapnyId)
+	if e != nil {
+		err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
 		return
 	}
 
-	//查询最新的一条针对这个公司的扣点记录
+	//查询研选的权限状态
 	var condition string
 	var pars []interface{}
-	condition += ` AND activity_id = ? AND company_id = ? AND user_id = 0   ORDER BY id DESC LIMIT 1  `
-	pars = append(pars, activityId)
-	activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
+	condition += " AND company_id = ? AND status = ? AND chart_permission_id = ?   ORDER BY company_report_permission_id DESC LIMIT 1  "
+	pars = append(pars, comapnyId, "正式", utils.CHART_PERMISSION_ID_YANXUAN)
+	companyReportPermissionDetail, e := models.GetCompanyReportPermissionDetailByCondition(condition, pars)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("GetCompanyPoints, Err: " + e.Error())
 		return
 	}
+	if companyReportPermissionDetail == nil {
+		return // 如果不存在就不做研选扣点处理
+	}
+	var billDetailed float64
+	var content string
+	//ExpensiveYx               int       `description:"权益研选: 0-3w; 1-5w"` 3W3次、5W 15次
+	if companyReportPermissionDetail.ExpensiveYx == 1 {
+		billDetailed = 15
+		content = "买方研选plus转正"
+	} else {
+		billDetailed = 3
+		content = "买方研选转正"
+	}
+
+	//获取需要添加的流水信息
 	var items []*models.CygxActivityPointsBill
 	item := new(models.CygxActivityPointsBill)
+	//item.UserId = user.UserId
+	//item.ActivityId = activityId
+	item.CreateTime = time.Now()
+	//item.Mobile = user.Mobile
+	//item.Email = user.Email
+	item.CompanyId = comapny.CompanyId
+	item.CompanyName = comapny.CompanyName
+	//item.RealName = user.RealName
+	item.BillDetailed = billDetailed
+	item.RegisterPlatform = log.RegisterPlatform
+	item.AdminId = log.AdminId
+	item.Source = log.Source
+	//item.ChartPermissionId = activityInfo.ChartPermissionId
+	item.DoType = 2
+	item.Content = content
+	item.Points = billDetailed
+	items = append(items, item)
+
+	//更新对应机构的剩余点数
 	var itemCompanys []*models.CygxActivityPointsCompany
 	itemCompany := new(models.CygxActivityPointsCompany)
-	if activityPointsBillDetail == nil { //如果是空的就添加
-		//获取需要添加的流水信息
+	itemCompany.CompanyId = comapny.CompanyId
+	itemCompany.Points = item.Points
+	itemCompany.CreateTime = time.Now()
+	itemCompany.ModifyTime = time.Now()
+	itemCompanys = append(itemCompanys, itemCompany)
+	//判断是否存在记录,如果有就一个新增一个修改,如果没有就同时新增
+	if total == 0 {
+		err = models.AddCygxActivityPointsBillAndCompanyMulti(items, itemCompanys)
+	} else {
+		err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	}
 
-		//item.UserId = user.UserId
-		item.ActivityId = activityId
-		item.CreateTime = time.Now()
-		//item.Mobile = user.Mobile
-		//item.Email = user.Email
-		item.CompanyId = comapny.CompanyId
-		item.CompanyName = comapny.CompanyName
-		//item.RealName = user.RealName
-		item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
-		item.RegisterPlatform = log.RegisterPlatform
-		item.AdminId = log.AdminId
-		item.Source = log.Source
-		item.ChartPermissionId = activityInfo.ChartPermissionId
-		item.DoType = 1
-		item.Content = activityInfo.ActivityName + "--办会"
-		item.Points = companyPointsNum - activityPointsSetDetail.CompanyPointsNum
-		items = append(items, item)
+	return
+}
 
-		//更新对应机构的剩余点数
-		itemCompany.CompanyId = comapny.CompanyId
-		itemCompany.Points = item.Points
-		itemCompany.ModifyTime = time.Now()
-		itemCompanys = append(itemCompanys, itemCompany)
-		e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
-		if e != nil && e.Error() != utils.ErrNoRow() {
-			err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())
-			return
+// 7:正式专试用定时任务更新研选扣点
+func YanXuanCompanyCompanyTryOutReduce(log models.YanXuanActivityPointsRedis) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("正式专试用定时任务更新研选扣点更新,处理Redis队列消息失败:"+err.Error()+fmt.Sprint(log), 2)
 		}
-	} else {
-		//如果存在就进行对比修改
-		if activityPointsSetDetail.CompanyPointsNum != activityPointsBillDetail.BillDetailed {
-			item.Id = activityPointsBillDetail.Id
-			item.BillDetailed = -activityPointsSetDetail.CompanyPointsNum
-			item.Points = companyPointsNum - activityPointsBillDetail.BillDetailed - activityPointsSetDetail.CompanyPointsNum
-			items = append(items, item)
+	}()
+	comapnyId := log.ComapnyId
 
-			//更新对应机构的剩余点数
-			itemCompany.CompanyId = comapny.CompanyId
-			itemCompany.Points = item.Points
-			itemCompany.ModifyTime = time.Now()
-			itemCompanys = append(itemCompanys, itemCompany)
-			e = models.UpdateCygxActivityPointsBillMulti(items, itemCompanys)
-			if e != nil && e.Error() != utils.ErrNoRow() {
-				err = errors.New("UpdateCygxActivityPointsBillMulti, Err: " + e.Error())
-				return
-			}
-		}
+	comapny, e := models.GetCompanyById(comapnyId)
+	if e != nil {
+		err = errors.New("GetCompanyById" + e.Error())
+		return
+	}
+	// 获取用户所在公司剩余的点
+	companyPointsNum, e := models.GetCompanyPoints(comapnyId)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCompanyPoints, Err: " + e.Error())
+		return
 	}
+
+	//获取需要添加的流水信息
+	var items []*models.CygxActivityPointsBill
+	item := new(models.CygxActivityPointsBill)
+	//item.UserId = user.UserId
+	//item.ActivityId = activityId
+	item.CreateTime = time.Now()
+	//item.Mobile = user.Mobile
+	//item.Email = user.Email
+	item.CompanyId = comapny.CompanyId
+	item.CompanyName = comapny.CompanyName
+	//item.RealName = user.RealName
+	item.BillDetailed = -companyPointsNum
+	item.RegisterPlatform = log.RegisterPlatform
+	item.AdminId = log.AdminId
+	item.Source = log.Source
+	//item.ChartPermissionId = activityInfo.ChartPermissionId
+	item.DoType = 2
+	item.Content = "到期清零"
+	item.Points = 0
+	items = append(items, item)
+
+	//更新对应机构的剩余点数
+	var itemCompanys []*models.CygxActivityPointsCompany
+	itemCompany := new(models.CygxActivityPointsCompany)
+	itemCompany.CompanyId = comapny.CompanyId
+	itemCompany.Points = 0
+	itemCompany.CreateTime = time.Now()
+	itemCompany.ModifyTime = time.Now()
+	itemCompanys = append(itemCompanys, itemCompany)
+
+	err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+
 	return
 }