xingzai 7 luni în urmă
părinte
comite
8450165c69
1 a modificat fișierele cu 138 adăugiri și 1 ștergeri
  1. 138 1
      services/rai_serve_count.go

+ 138 - 1
services/rai_serve_count.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"encoding/json"
 	"fmt"
 	"hongze/hongze_cygx/models/rai_serve"
 	"hongze/hongze_cygx/utils"
@@ -29,7 +30,7 @@ func CygxRaiServeBillRedisAdd(content, source string, userId, comapnyId, sourceI
 			go utils.SendAlarmMsg("权益服务统计添加到Redis队列中,写入Redis队列消息失败 CygxRaiServeBillRedisAdd:"+err.Error()+msg, 2)
 		}
 	}()
-	log := &rai_serve.RaiServeBillRedis{Content: content, UserId: userId, ComapnyId: comapnyId, SourceId: sourceId, RegisterPlatform: registerPlatform, ViewTime: viewTime}
+	log := &rai_serve.RaiServeBillRedis{Content: content, Source: source, UserId: userId, ComapnyId: comapnyId, SourceId: sourceId, RegisterPlatform: registerPlatform, ViewTime: viewTime}
 	if utils.Re == nil {
 		err := utils.Rc.LPush(utils.CYGX_RAI_SERVE_BILL_KEY, log)
 		if err != nil {
@@ -38,3 +39,139 @@ func CygxRaiServeBillRedisAdd(content, source string, userId, comapnyId, sourceI
 	}
 	return
 }
+
+//func init() {
+//	CygxRaiServeBillRedisAddReduce()
+//}
+
+// CygxRaiServeBillRedisAddReduce 处理权益服务统计
+func CygxRaiServeBillRedisAddReduce() (err error) {
+	for {
+		//SourceType int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
+		utils.Rc.Brpop(utils.CYGX_RAI_SERVE_BILL_KEY, func(b []byte) {
+			var log rai_serve.RaiServeBillRedis
+			if err := json.Unmarshal(b, &log); err != nil {
+				fmt.Println("json unmarshal wrong!")
+				go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+err.Error()+string(b), 2)
+			}
+			switch log.Source {
+			case utils.CYGX_OBJ_YANXUANSPECIAL: //研选专栏阅读记录处理
+				go RaiServeBillRedisAddReduceByYanxuanspecial(log)
+				fmt.Println("研选专栏阅读记录处理")
+				break
+
+			default:
+				fmt.Println(string(b))
+				go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
+			}
+		})
+	}
+}
+
+// 处理权益服务统计->研选阅读记录
+func RaiServeBillRedisAddReduceByYanxuanspecial(log rai_serve.RaiServeBillRedis) (err error) {
+	source := log.Source
+	userId := log.UserId
+	sourceId := log.SourceId
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("用户报名活动扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("source:", source, "userId:", userId, "sourceId", sourceId), 2)
+		}
+	}()
+
+	//activityId := log.ActivityId
+	//userId := log.UserId
+	//
+	//activtyPayTotal := GetCygxOrderVirtualAssetdCountTotal(userId, activityId) // 单场付费活动不处理扣点明细
+	//if activtyPayTotal > 0 {
+	//	return
+	//}
+	//
+	////获取活动是否扣点以及扣点规则明细
+	//activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
+	//if e != nil && e.Error() != utils.ErrNoRow() {
+	//	err = errors.New("GetCygxActivityPointsSetDetail" + e.Error())
+	//	return
+	//}
+	//if activityPointsSetDetail == nil {
+	//	return
+	//}
+	//if activityPointsSetDetail.UserPointsNum == 0 || activityPointsSetDetail.PointsType != 1 {
+	//	return // 如果不是报名即扣点的这种形式,那么就不做任何处理
+	//}
+	//
+	//activityInfo, e := models.GetAddActivityInfoById(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
+	//}
+	//companyId := user.CompanyId
+	////判断公司是不是满足扣点情况,如果是后台超管手动给试用客户报名,就写入一条点数初始化数据
+	//total, e := models.GetCygxActivityPointsCompanyCountByCompanyId(companyId)
+	//if e != nil {
+	//	err = errors.New("GetCygxActivityPointsCompanyCountByCompanyId, Err: " + e.Error())
+	//	return
+	//}
+	//var companyPointsNum float64
+	//if total == 0 {
+	//	companyPointsNum = 0
+	//	itemPointsCompany := new(models.CygxActivityPointsCompany)
+	//
+	//	itemPointsCompany.CompanyId = companyId
+	//	itemPointsCompany.CompanyName = user.CompanyName
+	//	itemPointsCompany.CreateTime = time.Now()
+	//	itemPointsCompany.ModifyTime = time.Now()
+	//
+	//	e = models.AddCygxActivityPointsCompany(itemPointsCompany)
+	//	if e != nil {
+	//		err = errors.New("AddCygxActivityPointsCompany, Err: " + e.Error())
+	//		return
+	//	}
+	//} else {
+	//	// 获取用户所在公司剩余的点
+	//	companyPointsNum, e = models.GetCompanyPoints(user.CompanyId)
+	//	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 = 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 = 1
+	//item.Content = activityInfo.ActivityName + "--报名"
+	//item.Points = companyPointsNum - activityPointsSetDetail.UserPointsNum
+	//items = append(items, item)
+	//
+	////更新对应机构的剩余点数
+	//var itemCompanys []*models.CygxActivityPointsCompany
+	//itemCompany := new(models.CygxActivityPointsCompany)
+	//itemCompany.CompanyId = user.CompanyId
+	//itemCompany.Points = item.Points
+	//itemCompany.ModifyTime = time.Now()
+	//itemCompanys = append(itemCompanys, itemCompany)
+	//
+	//err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
+	return
+}