|
@@ -9,9 +9,8 @@ import (
|
|
|
|
|
|
type IntegralService struct{}
|
|
type IntegralService struct{}
|
|
|
|
|
|
-
|
|
|
|
//消耗积分流水
|
|
//消耗积分流水
|
|
-func(service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int,string) {
|
|
|
|
|
|
+func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int, string) {
|
|
orm := entity.Engine
|
|
orm := entity.Engine
|
|
flow := entity.Flow{}
|
|
flow := entity.Flow{}
|
|
flow.UserId = data.UserId
|
|
flow.UserId = data.UserId
|
|
@@ -22,38 +21,35 @@ func(service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int
|
|
flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
flow.EndDate = data.EndDate
|
|
flow.EndDate = data.EndDate
|
|
flow.AppId = data.AppId
|
|
flow.AppId = data.AppId
|
|
- //判断是否为消耗积分:false
|
|
|
|
- if !data.Sort {
|
|
|
|
- //查询积分余额是否充足
|
|
|
|
- balance := entity.Balance{}
|
|
|
|
- balance.UserId = data.UserId
|
|
|
|
- balance.AppId = data.AppId
|
|
|
|
- b,err := orm.Table("integral_balance").Select("countPoints").
|
|
|
|
- Where("userId = ? AND appId = ?",data.UserId,data.AppId).
|
|
|
|
- Get(&balance)
|
|
|
|
- if !b || err != nil {
|
|
|
|
- log.Printf("积分余额查询出错,userId:[%s],err:[%v]", data.UserId, err)
|
|
|
|
- return entity.ErrorCode,"积分余额不足"
|
|
|
|
- }
|
|
|
|
- if balance.CountPoints <data.Point {
|
|
|
|
- return entity.ErrorCode,"积分余额不足"
|
|
|
|
- }
|
|
|
|
|
|
+ //查询积分余额是否充足
|
|
|
|
+ balance := entity.Balance{}
|
|
|
|
+ balance.UserId = data.UserId
|
|
|
|
+ balance.AppId = data.AppId
|
|
|
|
+ b, err := orm.Table("integral_balance").Select("countPoints").
|
|
|
|
+ Where("userId = ? AND appId = ?", data.UserId, data.AppId).
|
|
|
|
+ Get(&balance)
|
|
|
|
+ if !b || err != nil {
|
|
|
|
+ log.Printf("积分余额查询出错,userId:[%s],err:[%v]", data.UserId, err)
|
|
|
|
+ return entity.ErrorCode, "积分余额不足"
|
|
|
|
+ }
|
|
|
|
+ if balance.CountPoints < data.Point {
|
|
|
|
+ return entity.ErrorCode, "积分余额不足"
|
|
}
|
|
}
|
|
|
|
|
|
af, err := orm.Table("integral_flow").Insert(&flow)
|
|
af, err := orm.Table("integral_flow").Insert(&flow)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Print("积分记录失败-积分增减类型:",data.Sort)
|
|
|
|
- return entity.ErrorCode,"积分记录失败"
|
|
|
|
|
|
+ log.Print("积分记录失败")
|
|
|
|
+ return entity.ErrorCode, "积分记录失败"
|
|
}
|
|
}
|
|
- if af >0 {
|
|
|
|
- log.Println("积分记录成功-积分增减类型:",data.Sort)
|
|
|
|
- return entity.SuccessCode,"积分记录成功"
|
|
|
|
|
|
+ if af > 0 {
|
|
|
|
+ log.Println("积分记录成功")
|
|
|
|
+ return entity.SuccessCode, "积分记录成功"
|
|
}
|
|
}
|
|
- return entity.SuccessCode,"积分记录成功"
|
|
|
|
|
|
+ return entity.SuccessCode, "积分记录成功"
|
|
}
|
|
}
|
|
|
|
|
|
//到期积分查询
|
|
//到期积分查询
|
|
-func(service *IntegralService) IntegralExpireCheckService(data entity.ExpireJSON) []entity.Flow {
|
|
|
|
|
|
+func (service *IntegralService) IntegralExpireCheckService(data entity.ExpireJSON) []entity.Flow {
|
|
orm := entity.Engine
|
|
orm := entity.Engine
|
|
var flow []entity.Flow
|
|
var flow []entity.Flow
|
|
var err error
|
|
var err error
|
|
@@ -72,8 +68,9 @@ func(service *IntegralService) IntegralExpireCheckService(data entity.ExpireJSON
|
|
}
|
|
}
|
|
return flow
|
|
return flow
|
|
}
|
|
}
|
|
|
|
+
|
|
//结存新增
|
|
//结存新增
|
|
-func (service *IntegralService) IntegralSoldeService(model entity.SoldeUpdate) (bool,string){
|
|
|
|
|
|
+func (service *IntegralService) IntegralSoldeService(model entity.SoldeUpdate) (bool, string) {
|
|
solde := entity.Solde{}
|
|
solde := entity.Solde{}
|
|
solde.AppId = model.AppId
|
|
solde.AppId = model.AppId
|
|
solde.UserId = model.UserId
|
|
solde.UserId = model.UserId
|
|
@@ -81,15 +78,15 @@ func (service *IntegralService) IntegralSoldeService(model entity.SoldeUpdate) (
|
|
var err error
|
|
var err error
|
|
var numb = int64(0)
|
|
var numb = int64(0)
|
|
//新增积分
|
|
//新增积分
|
|
- if (model.PointsType) {
|
|
|
|
|
|
+ if model.PointsType {
|
|
//永久积分
|
|
//永久积分
|
|
solde.PerManEntPoints = model.Points
|
|
solde.PerManEntPoints = model.Points
|
|
numb, err = entity.Engine.Table("integral_solde").Insert(&solde)
|
|
numb, err = entity.Engine.Table("integral_solde").Insert(&solde)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("新增永久积分失败")
|
|
log.Print("新增永久积分失败")
|
|
- return false,"新增永久积分失败"
|
|
|
|
|
|
+ return false, "新增永久积分失败"
|
|
}
|
|
}
|
|
- return true,"新增永久积分成功"
|
|
|
|
|
|
+ return true, "新增永久积分成功"
|
|
}
|
|
}
|
|
//失效积分
|
|
//失效积分
|
|
//先查看是否有EndDate的积分
|
|
//先查看是否有EndDate的积分
|
|
@@ -100,56 +97,56 @@ func (service *IntegralService) IntegralSoldeService(model entity.SoldeUpdate) (
|
|
numb, err = entity.Engine.Table("integral_solde").ID(soldelist[0].Id).Cols("timePoints").Update(&soldelist[0])
|
|
numb, err = entity.Engine.Table("integral_solde").ID(soldelist[0].Id).Cols("timePoints").Update(&soldelist[0])
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("修改时效积分失败")
|
|
log.Print("修改时效积分失败")
|
|
- return false,"修改时效积分失败"
|
|
|
|
|
|
+ return false, "修改时效积分失败"
|
|
}
|
|
}
|
|
- return true,"修改时效积分成功"
|
|
|
|
|
|
+ return true, "修改时效积分成功"
|
|
} else {
|
|
} else {
|
|
solde.TimePoints = model.Points
|
|
solde.TimePoints = model.Points
|
|
numb, err = entity.Engine.Table("integral_solde").Insert(&solde)
|
|
numb, err = entity.Engine.Table("integral_solde").Insert(&solde)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("新增时效积分失败")
|
|
log.Print("新增时效积分失败")
|
|
- return false,"新增时效积分失败"
|
|
|
|
|
|
+ return false, "新增时效积分失败"
|
|
}
|
|
}
|
|
- return true,"新增时效积分成功"
|
|
|
|
|
|
+ return true, "新增时效积分成功"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//结存扣除
|
|
//结存扣除
|
|
-func (service *IntegralService) IntegralSoldeReduceService(model entity.SoldeUpdate)(bool,string) {
|
|
|
|
|
|
+func (service *IntegralService) IntegralSoldeReduceService(model entity.SoldeUpdate) (bool, string) {
|
|
var err error
|
|
var err error
|
|
var numb = int64(0)
|
|
var numb = int64(0)
|
|
soldelist := []entity.Solde{}
|
|
soldelist := []entity.Solde{}
|
|
- err = entity.Engine.Table("integral_solde").Where("appId=? and userId=? and endDate> ? ( perManEntPoints != 0 AND timePoints = 0 ) OR ( perManEntPoints = 0 AND timePoints != 0 )", model.AppId, model.UserId,time.Now().Format("2006/01/02/")).Desc("endDate,timePoints").Find(&soldelist)
|
|
|
|
|
|
+ err = entity.Engine.Table("integral_solde").Where("appId=? and userId=? and endDate> ? ( perManEntPoints != 0 AND timePoints = 0 ) OR ( perManEntPoints = 0 AND timePoints != 0 )", model.AppId, model.UserId, time.Now().Format("2006/01/02/")).Desc("endDate,timePoints").Find(&soldelist)
|
|
if len(soldelist) > 0 {
|
|
if len(soldelist) > 0 {
|
|
var point = model.Points
|
|
var point = model.Points
|
|
for _, solde := range soldelist {
|
|
for _, solde := range soldelist {
|
|
if point == 0 {
|
|
if point == 0 {
|
|
- return true,"积分消耗成功"
|
|
|
|
|
|
+ return true, "积分消耗成功"
|
|
}
|
|
}
|
|
- if (solde.TimePoints == 0) {
|
|
|
|
|
|
+ if solde.TimePoints == 0 {
|
|
//消耗永久积分
|
|
//消耗永久积分
|
|
- if (solde.PerManEntPoints >= point) {
|
|
|
|
|
|
+ if solde.PerManEntPoints >= point {
|
|
//够消耗
|
|
//够消耗
|
|
point = 0
|
|
point = 0
|
|
solde.PerManEntPoints = solde.PerManEntPoints - point
|
|
solde.PerManEntPoints = solde.PerManEntPoints - point
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("perManEntPoints").Update(&solde)
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("perManEntPoints").Update(&solde)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("消耗永久积分失败")
|
|
log.Print("消耗永久积分失败")
|
|
- return false,"消耗永久积分失败"
|
|
|
|
|
|
+ return false, "消耗永久积分失败"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//消耗时效积分
|
|
//消耗时效积分
|
|
- if (solde.TimePoints > point) {
|
|
|
|
|
|
+ if solde.TimePoints > point {
|
|
//够消耗
|
|
//够消耗
|
|
point = 0
|
|
point = 0
|
|
solde.TimePoints = solde.TimePoints - point
|
|
solde.TimePoints = solde.TimePoints - point
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("timePoints").Update(&solde)
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("timePoints").Update(&solde)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("消耗时效积分失败")
|
|
log.Print("消耗时效积分失败")
|
|
- return false,"消耗时效积分失败"
|
|
|
|
|
|
+ return false, "消耗时效积分失败"
|
|
}
|
|
}
|
|
- return true,"消耗时效积分成功"
|
|
|
|
|
|
+ return true, "消耗时效积分成功"
|
|
}
|
|
}
|
|
//不够消耗
|
|
//不够消耗
|
|
point = point - solde.TimePoints
|
|
point = point - solde.TimePoints
|
|
@@ -157,14 +154,15 @@ func (service *IntegralService) IntegralSoldeReduceService(model entity.SoldeUpd
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("timePoints").Update(&solde)
|
|
numb, err = entity.Engine.Table("integral_solde").ID(solde.Id).Cols("timePoints").Update(&solde)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("消耗时效积分失败")
|
|
log.Print("消耗时效积分失败")
|
|
- return false,"消耗时效积分失败"
|
|
|
|
|
|
+ return false, "消耗时效积分失败"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- return false,"没有积分可以扣除"
|
|
|
|
|
|
+ return false, "没有积分可以扣除"
|
|
}
|
|
}
|
|
|
|
+
|
|
//调整余额
|
|
//调整余额
|
|
-func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdate) (bool,string) {
|
|
|
|
|
|
+func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdate) (bool, string) {
|
|
var err error
|
|
var err error
|
|
var numb = int64(0)
|
|
var numb = int64(0)
|
|
fmt.Println(numb)
|
|
fmt.Println(numb)
|
|
@@ -181,7 +179,7 @@ func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdat
|
|
numb, err = entity.Engine.Table("integral_balance").Insert(&balance)
|
|
numb, err = entity.Engine.Table("integral_balance").Insert(&balance)
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("新增余额失败")
|
|
log.Print("新增余额失败")
|
|
- return false,"新增余额失败"
|
|
|
|
|
|
+ return false, "新增余额失败"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//修改余额
|
|
//修改余额
|
|
@@ -190,38 +188,77 @@ func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdat
|
|
//消耗
|
|
//消耗
|
|
if len(balanceList) == 0 {
|
|
if len(balanceList) == 0 {
|
|
log.Println("没有积分可以扣除")
|
|
log.Println("没有积分可以扣除")
|
|
- return false,"没有积分可以扣除"
|
|
|
|
|
|
+ return false, "没有积分可以扣除"
|
|
}
|
|
}
|
|
- if (balanceList[0].CountPoints < model.CountPoints) {
|
|
|
|
|
|
+ if balanceList[0].CountPoints < model.CountPoints {
|
|
log.Println("积分余额不足")
|
|
log.Println("积分余额不足")
|
|
- return false,"积分余额不足"
|
|
|
|
|
|
+ return false, "积分余额不足"
|
|
}
|
|
}
|
|
balanceList[0].CountPoints = balanceList[0].CountPoints - model.CountPoints
|
|
balanceList[0].CountPoints = balanceList[0].CountPoints - model.CountPoints
|
|
numb, err = entity.Engine.Table("integral_balance").ID(balanceList[0].Id).Cols("countPoints").Update(&balanceList[0])
|
|
numb, err = entity.Engine.Table("integral_balance").ID(balanceList[0].Id).Cols("countPoints").Update(&balanceList[0])
|
|
if err != nil && numb == 0 {
|
|
if err != nil && numb == 0 {
|
|
log.Print("余额扣除失败")
|
|
log.Print("余额扣除失败")
|
|
- return false,"余额扣除失败"
|
|
|
|
|
|
+ return false, "余额扣除失败"
|
|
}
|
|
}
|
|
- return true,"余额扣除失败"
|
|
|
|
|
|
+ return true, "余额扣除失败"
|
|
}
|
|
}
|
|
|
|
|
|
//积分守护
|
|
//积分守护
|
|
-func(service *IntegralService) IntegralGuardService(data entity.ExpireJSON) []entity.Flow {
|
|
|
|
|
|
+func (service *IntegralService) IntegralGuardService(endDate string) bool {
|
|
orm := entity.Engine
|
|
orm := entity.Engine
|
|
- var flow []entity.Flow
|
|
|
|
- var err error
|
|
|
|
- point := ""
|
|
|
|
- if data.PointType != 0 {
|
|
|
|
- point = "AND pointType = "+fmt.Sprint(data.PointType)+""
|
|
|
|
|
|
+ soldelist := []entity.Solde{}
|
|
|
|
+ err := orm.Table("integral_solde").
|
|
|
|
+ Where("timePoints != 0 AND endDate < ? ", endDate).
|
|
|
|
+ Desc("endDate").Find(&soldelist)
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Println("积分结存查询失败")
|
|
}
|
|
}
|
|
- err = orm.Table("integral_flow").
|
|
|
|
- Select("id,pointType,SUM(point) AS point").
|
|
|
|
- Where("userId = ? AND appId = ? AND endDate < ? "+point+"", data.UserId,data.AppId,data.EndDate).
|
|
|
|
- GroupBy("pointType").
|
|
|
|
- Find(&flow)
|
|
|
|
|
|
+ for _, solde := range soldelist {
|
|
|
|
+ flow := entity.FlowJSON{}
|
|
|
|
+ flow.UserId = solde.UserId
|
|
|
|
+ flow.PointType = 9
|
|
|
|
+ flow.BusinessTypeId = 0
|
|
|
|
+ flow.BusinessType = "0"
|
|
|
|
+ flow.Point = solde.TimePoints
|
|
|
|
+ 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)
|
|
|
|
+ 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)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//积分余额查询
|
|
|
|
+func (service *IntegralService) IntegralBalanceCheckService(endDate string) bool {
|
|
|
|
+ orm := entity.Engine
|
|
|
|
+ soldelist := []entity.Solde{}
|
|
|
|
+ err := orm.Table("integral_solde").
|
|
|
|
+ Where("timePoints != 0 AND endDate < ? ", endDate).
|
|
|
|
+ Desc("endDate").Find(&soldelist)
|
|
if err != nil {
|
|
if err != nil {
|
|
- log.Println(err)
|
|
|
|
- return nil
|
|
|
|
|
|
+ log.Println("积分余额查询失败")
|
|
}
|
|
}
|
|
- return flow
|
|
|
|
|
|
+ return true
|
|
}
|
|
}
|