xingzai 1 vuosi sitten
vanhempi
commit
5e20004483

+ 1 - 0
models/activity.go

@@ -142,6 +142,7 @@ type ActivityArticleResp struct {
 type ActivityDetail struct {
 	ActivityId              int                        `orm:"column(activity_id);pk";description:"活动ID "`
 	ActivityTypeId          int                        `description:"活动类型id"`
+	PublishStatus           int                        `description:"发布状态,0未发布,1已发布"`
 	ActivityTypeName        string                     `description:"活动类型名称"`
 	ChartPermissionId       int                        `description:"行业id"`
 	ChartPermissionName     string                     `description:"行业名称"`

+ 68 - 0
models/activity_points_bill.go

@@ -42,6 +42,28 @@ type CygxActivityPointsBillResp struct {
 	BillDetailed float64 `gorm:"column:bill_detailed;default:0;NOT NULL" json:""` // 流水明细,判断是进账还是出账
 }
 
+// 获取数量
+func GetCygxActivityPointsBillCount(condition string, pars []interface{}) (count int, err error) {
+	sqlCount := ` SELECT COUNT(1) AS count  FROM cygx_activity_points_bill as art WHERE 1= 1  `
+	if condition != "" {
+		sqlCount += condition
+	}
+	o := orm.NewOrm()
+	err = o.Raw(sqlCount, pars).QueryRow(&count)
+	return
+}
+
+// 通过查询条件获取详情
+func GetCygxActivityPointsBillDetailByCondition(condition string, pars []interface{}) (item *CygxActivityPointsBill, err error) {
+	if condition == "" {
+		return
+	}
+	o := orm.NewOrm()
+	sql := `SELECT * FROM cygx_activity_points_bill  WHERE 1 = 1  ` + condition
+	err = o.Raw(sql, pars).QueryRow(&item)
+	return
+}
+
 // AddCygxActivityPointsBillMulti 批量添加
 func AddCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate []*CygxActivityPointsCompany) (err error) {
 	o, err := orm.NewOrm().Begin()
@@ -75,3 +97,49 @@ func AddCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate
 	}
 	return
 }
+
+// UpdateCygxActivityPointsBillMulti 批量修改
+func UpdateCygxActivityPointsBillMulti(items []*CygxActivityPointsBill, itemsUpdate []*CygxActivityPointsCompany) (err error) {
+	o, err := orm.NewOrm().Begin()
+	if err != nil {
+		return
+	}
+	defer func() {
+		if err == nil {
+			o.Commit()
+		} else {
+			o.Rollback()
+		}
+	}()
+
+	//批量修改公司剩余点数
+	p, err := o.Raw("UPDATE cygx_activity_points_bill SET points = ?, bill_detailed = ? WHERE id = ?").Prepare()
+	if err != nil {
+		return
+	}
+	defer func() {
+		_ = p.Close() // 别忘记关闭 statement
+	}()
+	for _, v := range items {
+		_, err = p.Exec(v.Points, v.BillDetailed, v.Id)
+		if err != nil {
+			return
+		}
+	}
+
+	//批量修改公司剩余点数
+	p, err = o.Raw("UPDATE cygx_activity_points_company 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
+}

+ 2 - 1
models/activity_points_set.go

@@ -7,6 +7,7 @@ import (
 
 type YanXuanActivityPointsRedis struct {
 	UserId           int       `description:"用户ID"`
+	ComapnyId        int       `description:"公司ID"`
 	ActivityId       int       `description:"资源ID"`
 	SourceType       int       `description:"1:报名、 2:取消报名、3:活动编辑、4:活动发布,取消发布、5:活动到会。"`
 	AdminId          int       `description:"管理员、销售ID"`
@@ -23,7 +24,7 @@ type CygxActivityPointsSet struct {
 	CompanyName      float64   `gorm:"column:company_name;NOT NULL" json:"company_name"`                       // 公司名称
 	UserPointsNum    float64   `gorm:"column:user_points_num;default:0;NOT NULL" json:"user_points_num"`       // 参会人扣点数量
 	PointsType       int       `gorm:"column:points_type;default:0;NOT NULL" json:"points_type"`               // 扣点形式,1:报名即扣点,2:到会即扣点
-	CompanyPointsNum string    `gorm:"column:company_points_num;default:0;NOT NULL" json:"company_points_num"` // 办会人扣点数量
+	CompanyPointsNum float64   `gorm:"column:company_points_num;default:0;NOT NULL" json:"company_points_num"` // 办会人扣点数量
 	CreateTime       time.Time `gorm:"column:create_time;NOT NULL" json:"create_time"`                         // 创建时间
 	ModifyTime       time.Time `gorm:"column:modify_time;NOT NULL" json:"modify_time"`                         // 更新时间
 }

+ 8 - 0
models/company.go

@@ -252,6 +252,14 @@ func GetCompanyByName(companyName string) (item *Company, err error) {
 	return
 }
 
+// 获取公司详情详情
+func GetCompanyById(companyId int) (item *Company, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT *  FROM company WHERE company_id = ? LIMIT 1`
+	err = o.Raw(sql, companyId).QueryRow(&item)
+	return
+}
+
 // 获取公司详情详情
 func GetCompanyByThirdName(tripartiteCompanyCode string) (item *Company, err error) {
 	o := orm.NewOrm()

+ 233 - 3
services/activity_points.go

@@ -110,11 +110,11 @@ func YanXuanActivityPointsBillReduce() (err error) {
 				fmt.Println(" 2:取消报名")
 				break
 			case 3:
-				//go ActivityUserLabelLogReduce(log)
+				go YanXuanActivityPointsBillActivityEditReduce(log)
 				fmt.Println("3:活动编辑")
 				break
 			case 4:
-				//go CategoryFllowUserLabelLogReduce(log)
+				go YanXuanActivityPointsBillActivityPublishAndCancelReduce(log)
 				fmt.Println("4:活动发布,取消发布")
 				break
 			case 5:
@@ -123,7 +123,7 @@ func YanXuanActivityPointsBillReduce() (err error) {
 				break
 			default:
 				fmt.Println(string(b))
-				go utils.SendAlarmMsg("用户更新相关标签处理Redis队列消息失败:"+string(b), 2)
+				go utils.SendAlarmMsg("处理研选活动扣点处理Redis队列消息失败:"+string(b), 2)
 			}
 		})
 	}
@@ -185,6 +185,7 @@ func YanXuanActivityPointsBillSignupAddReduce(log models.YanXuanActivityPointsRe
 	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 + "--报名"
@@ -259,6 +260,7 @@ func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPoint
 	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 + "--取消报名"
@@ -276,3 +278,231 @@ func YanXuanActivityPointsBillSignupCancelReduce(log models.YanXuanActivityPoint
 	err = models.AddCygxActivityPointsBillMulti(items, itemCompanys)
 	return
 }
+
+// 3:活动编辑
+func YanXuanActivityPointsBillActivityEditReduce(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)
+		}
+	}()
+
+	activityId := log.ActivityId
+	comapnyId := log.ComapnyId
+
+	//获取活动是否扣点以及扣点规则明细
+	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.CompanyPointsNum == 0 {
+		return // 如果不是办会人,即扣点的这种形式,那么就不做任何处理
+	}
+
+	activityInfo, e := models.GetAddActivityInfoById(activityId)
+	if e != nil {
+		err = errors.New("GetAddActivityInfoById" + e.Error())
+		return
+	}
+	if activityInfo.PublishStatus == 0 {
+		return // 未发布的活动不做处理
+	}
+	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
+	}
+
+	//查询最新的一条针对这个公司的扣点记录
+	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)
+	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)
+	if activityPointsBillDetail == nil { //如果是空的就添加
+		//获取需要添加的流水信息
+
+		//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)
+
+		//更新对应机构的剩余点数
+		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
+		}
+	} 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)
+
+			//更新对应机构的剩余点数
+			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
+			}
+		}
+	}
+	return
+}
+
+// 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)
+		}
+	}()
+
+	activityId := log.ActivityId
+	//comapnyId := log.ComapnyId
+
+	//获取活动是否扣点以及扣点规则明细
+	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.CompanyPointsNum == 0 {
+		return // 如果不是办会人,即扣点的这种形式,那么就不做任何处理
+	}
+
+	activityInfo, e := models.GetAddActivityInfoById(activityId)
+	if e != nil {
+		err = errors.New("GetAddActivityInfoById" + e.Error())
+		return
+	}
+	if activityInfo.PublishStatus == 0 {
+		return // 未发布的活动不做处理
+	}
+	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
+	}
+
+	//查询最新的一条针对这个公司的扣点记录
+	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)
+	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)
+	if activityPointsBillDetail == nil { //如果是空的就添加
+		//获取需要添加的流水信息
+
+		//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)
+
+		//更新对应机构的剩余点数
+		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
+		}
+	} 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)
+
+			//更新对应机构的剩余点数
+			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
+			}
+		}
+	}
+	return
+}