|
@@ -112,11 +112,8 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
|
flow.EndDate = data.EndDate
|
|
|
flow.AppId = data.AppId
|
|
|
- //判断是否为消耗积分:false
|
|
|
balance := entity.Balance{}
|
|
|
//查询积分余额是否充足
|
|
|
- balance.UserId = data.UserId
|
|
|
- balance.AppId = data.AppId
|
|
|
b, err := orm.Table("integral_balance").Select("countPoints,id").
|
|
|
Where("userId = ? AND appId = ?", data.UserId, data.AppId).
|
|
|
Get(&balance)
|
|
@@ -350,60 +347,81 @@ func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdat
|
|
|
//积分守护
|
|
|
func (service *IntegralService) IntegralGuardService(endDate string) bool {
|
|
|
orm := entity.Engine
|
|
|
+ var err error
|
|
|
soldelist := []entity.Solde{}
|
|
|
- err := orm.Table("integral_solde").
|
|
|
+ err = orm.Table("integral_solde").
|
|
|
Where("timePoints != 0 AND endDate < ? ", endDate).
|
|
|
Desc("endDate").Find(&soldelist)
|
|
|
if err != nil {
|
|
|
log.Println("积分结存查询失败")
|
|
|
}
|
|
|
for _, solde := range soldelist {
|
|
|
- flow := entity.FlowJSON{}
|
|
|
+ //查询积分余额是否充足
|
|
|
+ balance := entity.Balance{}
|
|
|
+ b, err := orm.Table("integral_balance").Select("countPoints,id").
|
|
|
+ Where("userId = ? AND appId = ?", solde.UserId, solde.AppId).
|
|
|
+ Get(&balance)
|
|
|
+ if !b || err != nil {
|
|
|
+ log.Printf("积分余额查询出错,userId:[%s],err:[%v]", solde.UserId, err)
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ if balance.CountPoints < solde.TimePoints {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ //积分余额-时效过期积分=当前总积分余额
|
|
|
+ balance.CountPoints = balance.CountPoints - solde.TimePoints
|
|
|
+ orm.Table("integral_balance")
|
|
|
+ numb, err := orm.Table("integral_balance").
|
|
|
+ ID(balance.Id).
|
|
|
+ Cols("countPoints").
|
|
|
+ Update(balance)
|
|
|
+ if err != nil && numb == 0 {
|
|
|
+ log.Print("余额扣除失败")
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ //积分过期流水记录
|
|
|
+ flow := entity.Flow{}
|
|
|
flow.UserId = solde.UserId
|
|
|
flow.PointType = 9
|
|
|
flow.BusinessTypeId = 0
|
|
|
flow.BusinessType = "0"
|
|
|
flow.Point = solde.TimePoints
|
|
|
+ flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
|
flow.EndDate = solde.EndDate
|
|
|
flow.AppId = solde.AppId
|
|
|
- sold, _ := service.IntegralConsumeService(flow)
|
|
|
- //新增积分过期流水成功
|
|
|
- if sold == 1 {
|
|
|
- //指定用户总余额减少
|
|
|
- balanceData := entity.BalanceUpdate{}
|
|
|
- balanceData.UserId = solde.UserId
|
|
|
- balanceData.AppId = solde.AppId
|
|
|
- balanceData.CountPoints = solde.TimePoints
|
|
|
- balanceData.Change = false
|
|
|
- //be, _ := service.IntegralBalanceService(balanceData)
|
|
|
- be := true
|
|
|
- if be {
|
|
|
- log.Println("余额结算成功....")
|
|
|
- //清空过期积分的时效积分
|
|
|
- soldeUpdate := &entity.Solde{}
|
|
|
- soldeUpdate.TimePoints = 0
|
|
|
- af, err := orm.Table("integral_solde").
|
|
|
- Cols("timePoints").
|
|
|
- ID(solde.Id).
|
|
|
- Update(soldeUpdate)
|
|
|
- if af > 0 && err == nil {
|
|
|
- log.Println("过期时效积分清空成功", solde.Id)
|
|
|
- }
|
|
|
- }
|
|
|
+ af, err := orm.Table("integral_flow").Insert(&flow)
|
|
|
+ if err != nil && af==0{
|
|
|
+ log.Print("积分记录失败")
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ //清空过期积分的时效积分
|
|
|
+ soldeUpdate := &entity.Solde{}
|
|
|
+ soldeUpdate.TimePoints = 0
|
|
|
+ af, err = orm.Table("integral_solde").
|
|
|
+ Cols("timePoints").
|
|
|
+ ID(solde.Id).
|
|
|
+ Update(soldeUpdate)
|
|
|
+ if af == 0 && err != nil {
|
|
|
+ log.Println("过期时效积分清空失败", solde.Id)
|
|
|
+ return false
|
|
|
}
|
|
|
}
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
//积分余额查询
|
|
|
-func (service *IntegralService) IntegralBalanceCheckService(endDate string) bool {
|
|
|
+func (service *IntegralService) IntegralBalanceCheckService(userId,appId string) (bool,int64) {
|
|
|
orm := entity.Engine
|
|
|
- soldelist := []entity.Solde{}
|
|
|
- err := orm.Table("integral_solde").
|
|
|
- Where("timePoints != 0 AND endDate < ? ", endDate).
|
|
|
- Desc("endDate").Find(&soldelist)
|
|
|
- if err != nil {
|
|
|
+ balance := entity.Balance{}
|
|
|
+ b,err := orm.Table("integral_balance").
|
|
|
+ Where("userId = ? AND appId = ?", userId,appId).
|
|
|
+ Get(&balance)
|
|
|
+ if !b || err != nil {
|
|
|
log.Println("积分余额查询失败")
|
|
|
+ return false,0
|
|
|
}
|
|
|
- return true
|
|
|
-}
|
|
|
+ return true,balance.CountPoints
|
|
|
+}
|