Browse Source

no message

xingzai 1 year ago
parent
commit
fac3edc2ef
3 changed files with 172 additions and 209 deletions
  1. 10 0
      models/activity_points_bill.go
  2. 137 192
      services/activity_points.go
  3. 25 17
      services/activity_signup_detail.go

+ 10 - 0
models/activity_points_bill.go

@@ -26,6 +26,16 @@ type CygxActivityPointsBill struct {
 	Points            float64   `gorm:"column:points;default:0;NOT NULL" json:""`            // 公司剩余点数
 }
 
+// 获取列表
+func GetCygxActivityPointsBillList(condition string, pars []interface{}) (list []*CygxActivityPointsBill, err error) {
+	sql := `SELECT * FROM cygx_activity_points_bill  WHERE  1= 1 `
+	if condition != "" {
+		sql += condition
+	}
+	_, err = orm.NewOrm().Raw(sql, pars).QueryRows(&list)
+	return
+}
+
 // CompanyTryOutDayListResp 客户累计试用天数
 type CygxActivityPointsBillListResp struct {
 	List []*CygxActivityPointsBillResp

+ 137 - 192
services/activity_points.go

@@ -14,41 +14,26 @@ import (
 //}
 
 // GetActivityPointsAll 获取所有带有扣点的活动
-//func GetActivityPointsAll() (listxActivity []*models.CygxActivity, err error) {
-//	defer func() {
-//		if err != nil {
-//			fmt.Println(err)
-//			go utils.SendAlarmMsg("获取所有带有扣点的活动失败"+err.Error(), 2)
-//		}
-//	}()
-//	var condition string
-//	var pars []interface{}
-//	listxActivity = make([]*models.CygxActivity, 0)
-//	list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
-//	if e != nil && e.Error() != utils.ErrNoRow() {
-//		err = errors.New("GetCygxActivityPointsSetList,Err: " + e.Error())
-//		return
-//	}
-//	var activityIds []int
-//	for _, v := range list {
-//		activityIds = append(activityIds, v.ActivityId)
-//	}
-//	lenArr := len(activityIds)
-//	if lenArr == 0 {
-//		return
-//	}
-//	condition = ` AND art.activity_id IN (` + utils.GetOrmInReplace(lenArr) + `)`
-//	pars = append(pars, activityIds)
-//	listxActivity, e = models.GetCygxActivityList(condition, pars, 0, lenArr)
-//	if e != nil && e.Error() != utils.ErrNoRow() {
-//		err = errors.New("GetCygxActivityList,Err: " + e.Error())
-//		return
-//	}
-//	for _, v := range listxActivity {
-//		fmt.Println(v)
-//	}
-//	return
-//}
+func GetActivityPointsAll() (mapResp map[int]bool, err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("获取所有带有扣点的活动失败"+err.Error(), 2)
+		}
+	}()
+	var condition string
+	var pars []interface{}
+	mapResp = make(map[int]bool, 0)
+	list, e := models.GetCygxActivityPointsSetList(condition, pars, 0, 0)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivityPointsSetList,Err: " + e.Error())
+		return
+	}
+	for _, v := range list {
+		mapResp[v.ActivityId] = true
+	}
+	return
+}
 
 // 用户报名添加到处理研选扣点
 func YanXuanActivityPointsBillSignupAdd(activityId, uid int) (err error) {
@@ -90,6 +75,26 @@ func YanXuanActivityPointsBillSignupCancel(activityId, uid int) (err error) {
 	return
 }
 
+// 5 活动到会研选扣点处理
+func YanXuanActivityPointsBillSubmitMeeting(activityId, adminId int) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			msg := fmt.Sprint("activityId:", activityId)
+			go utils.SendAlarmMsg("活动到会研选扣点处理,写入Redis队列消息失败:"+err.Error()+msg, 2)
+		}
+	}()
+	//SourceType int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。6:研选审批通过的时候研选扣点更新、 7:正式专试用定时任务更新研选扣点"`
+	log := &models.YanXuanActivityPointsRedis{ActivityId: activityId, SourceType: 5, AdminId: adminId, Source: 2, 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 {
@@ -118,8 +123,8 @@ func YanXuanActivityPointsBillReduce() (err error) {
 				fmt.Println("4:活动发布、取消发布")
 				break
 			case 5:
-				//go YanXuanActivityPointsBillActivityCancelReduce(log)
-				fmt.Println("5:活动取消发布。")
+				go YanXuanActivityPointsBillSubmitMeetingReduce(log)
+				fmt.Println("5:活动到会研选扣点处理。")
 			case 6:
 				go YanXuanCompanyApprovalReduce(log)
 				fmt.Println("6:研选审批通过的时候研选扣点更新。")
@@ -334,7 +339,7 @@ func YanXuanActivityPointsBillActivityEditReduce(log models.YanXuanActivityPoint
 	//查询最新的一条针对这个公司的扣点记录
 	var condition string
 	var pars []interface{}
-	condition += ` AND activity_id = ? AND company_id = ? AND user_id = 0   ORDER BY id DESC LIMIT 1  `
+	condition += ` AND activity_id = ? AND company_id = ? AND mobile = ''   ORDER BY id DESC LIMIT 1  `
 	pars = append(pars, activityId, comapnyId)
 	activityPointsBillDetail, e := models.GetCygxActivityPointsBillDetailByCondition(condition, pars)
 	if e != nil && e.Error() != utils.ErrNoRow() {
@@ -591,20 +596,22 @@ func YanXuanActivityPointsBillActivityPublishAndCancelReduce(log models.YanXuanA
 	return
 }
 
+//func init() {
+//	log := models.YanXuanActivityPointsRedis{ActivityId: 2385, SourceType: 5, RegisterPlatform: utils.REGISTER_PLATFORM, Source: 4, CreateTime: time.Now()}
+//	YanXuanActivityPointsBillSubmitMeetingReduce(log)
+//}
+
 // 5:活动到会研选扣点处理
 func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPointsRedis) (err error) {
 	//func YanXuanActivityPointsBillSubmitMeetingReduce(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)
-	//	}
-	//}()
+	defer func() {
+		if err != nil {
+			fmt.Println(err)
+			go utils.SendAlarmMsg("活动到会研选扣点,处理Redis队列消息失败:"+err.Error()+fmt.Sprint("ActivityId", log.ActivityId, "adminId", log.AdminId), 2)
+		}
+	}()
 
 	activityId := log.ActivityId
-	publishStatus := log.PublishStatus
-	//comapnyId := log.ComapnyId
-
 	//获取活动是否扣点以及扣点规则明细
 	activityPointsSetDetail, e := models.GetCygxActivityPointsSetDetail(activityId)
 	if e != nil && e.Error() != utils.ErrNoRow() {
@@ -623,159 +630,97 @@ func YanXuanActivityPointsBillSubmitMeetingReduce(log models.YanXuanActivityPoin
 		err = errors.New("GetAddActivityInfoByActivityId" + e.Error())
 		return
 	}
+	var companyIds []int
+	mapCompanyPoints := make(map[int]float64) //一组公司的剩余点数
+	var condition string
+	var pars []interface{}
+	condition += ` AND activity_id = ? AND  is_meeting = 1 `
+	pars = append(pars, activityId)
 
-	comapnyId := activityPointsSetDetail.CompanyId
-	var items []*models.CygxActivityPointsBill
-
-	var itemCompanys []*models.CygxActivityPointsCompany
+	//获取提交到会的人员信息
+	signUpDetailList, e := models.GetSignupDetailList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetSignupDetailList" + e.Error())
+		return
+	}
+	for _, v := range signUpDetailList {
+		companyIds = append(companyIds, v.CompanyId)
+	}
 
-	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)
+	//return
+	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
+	}
 
-			//更新对应机构的剩余点数
-			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
+	pars = make([]interface{}, 0)
+	condition = ` AND activity_id = ? AND  mobile  != ''  `
+	pars = append(pars, activityId)
+	//获取扣点的流水记录
+	activityPointsBillList, e := models.GetCygxActivityPointsBillList(condition, pars)
+	if e != nil && e.Error() != utils.ErrNoRow() {
+		err = errors.New("GetCygxActivityPointsBillList" + e.Error())
+		return
+	}
+	mapActivityPointsBill := make(map[string]*models.CygxActivityPointsBill)
+	for _, v := range activityPointsBillList {
+		mapActivityPointsBill[v.Mobile] = v
+	}
+	//return
+	for _, v := range conpanyList {
+		if mapCompanyPoints[v.CompanyId] != 0 {
+			mapCompanyPoints[v.CompanyId] = v.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
-				}
+	//return
+	var items []*models.CygxActivityPointsBill
+	var itemCompanys []*models.CygxActivityPointsCompany
+	for _, user := range signUpDetailList {
+		item := new(models.CygxActivityPointsBill)
+		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
+		//如果没有扣点记录就对他们进行扣点处理
+		if mapActivityPointsBill[user.Mobile] == nil {
+			item.BillDetailed = -activityPointsSetDetail.UserPointsNum
+			item.DoType = 1
+			item.Content = activityInfo.ActivityName + "--活动到会"
+			item.Points = mapCompanyPoints[user.CompanyId] - activityPointsSetDetail.CompanyPointsNum
+			item.Points = mapCompanyPoints[user.CompanyId]
+			items = append(items, item)
+		} else {
+			//第二次提交改成未到会的,对其进行返点处理
+			if mapActivityPointsBill[user.Mobile].BillDetailed < 0 {
+				item.BillDetailed = activityPointsSetDetail.UserPointsNum
+				item.DoType = 2
+				item.Content = activityInfo.ActivityName + "--活动取消到会"
+				item.Points = mapCompanyPoints[user.CompanyId] + activityPointsSetDetail.CompanyPointsNum
+				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
 	}
-
 	e = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
 	if e != nil && e.Error() != utils.ErrNoRow() {
 		err = errors.New("AddCygxActivityPointsBillMulti, Err: " + e.Error())

+ 25 - 17
services/activity_signup_detail.go

@@ -187,26 +187,27 @@ func AddctivitySignupDetailByJmcj(itemsDetail []*models.CygxActivityAttendanceDe
 			return
 		}
 	}
-
+	//处理研选扣点信息
+	YanXuanActivityPointsBillSubmitMeeting(activityId, 0)
 	return err
 }
 
-func GetCygxActivityAttendanceDetail() {
-	listAll, err := models.GetActivityAttendanceDetailListAll()
-	if err != nil {
-		fmt.Println(err)
-	}
-	mapDetal := make(map[int][]*models.CygxActivityAttendanceDetail)
-
-	for _, v := range listAll {
-		mapDetal[v.ActivityId] = append(mapDetal[v.ActivityId], v)
-	}
-
-	for k, v := range mapDetal {
-		AddctivitySignupDetailByJmcj(v, k)
-	}
-	//fmt.Println(mapDetal)
-}
+//func GetCygxActivityAttendanceDetail() {
+//	listAll, err := models.GetActivityAttendanceDetailListAll()
+//	if err != nil {
+//		fmt.Println(err)
+//	}
+//	mapDetal := make(map[int][]*models.CygxActivityAttendanceDetail)
+//
+//	for _, v := range listAll {
+//		mapDetal[v.ActivityId] = append(mapDetal[v.ActivityId], v)
+//	}
+//
+//	for k, v := range mapDetal {
+//		AddctivitySignupDetailByJmcj(v, k)
+//	}
+//	//fmt.Println(mapDetal)
+//}
 
 // AddctivitySignupDetailByJmcj 通过进门财经添加用户参数信息
 func AddctivitySignupDetailByJmcjNew(itemsDetail []*models.CygxActivityAttendanceDetail, activityIds []int) (err error) {
@@ -298,5 +299,12 @@ func AddctivitySignupDetailByJmcjNew(itemsDetail []*models.CygxActivityAttendanc
 		}
 	}
 
+	//获取所有研选扣点的活动,如果是就行扣点流水处理
+	mapActivityPoints, _ := GetActivityPointsAll()
+	for _, v := range activityIds {
+		if mapActivityPoints[v] {
+			YanXuanActivityPointsBillSubmitMeeting(v, 0)
+		}
+	}
 	return err
 }