李哲 4 سال پیش
والد
کامیت
2a2b26b8f1
1فایلهای تغییر یافته به همراه29 افزوده شده و 9 حذف شده
  1. 29 9
      service/integralService.go

+ 29 - 9
service/integralService.go

@@ -104,8 +104,10 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
 
 //消耗积分流水
 func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int64, string) {
+	orm := entity.Engine.NewSession()
+	defer orm.Close()
+	var err = orm.Begin()
 	var af = int64(0)
-	orm := entity.Engine
 	balance := entity.Balance{}
 	//查询积分余额是否充足
 	b, err := orm.Table("integral_balance").Select("countPoints,id").
@@ -122,9 +124,10 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 	//结存消耗
 	soldelist := []entity.Solde{}
 	err = entity.Engine.Table("integral_solde").
-		Where("appId=? and  userId=? and (endDate IS NULL OR endDate >= ?) and (( perManEntPoints != 0 AND timePoints = 0 ) OR ( perManEntPoints = 0 AND timePoints != 0 ))", data.AppId, data.UserId, time.Now().Format("2006-01-02")).
+		Where("appId=? and  userId=? and (endDate = '' OR endDate IS NULL OR endDate >= ?) and (( perManEntPoints != 0 AND timePoints = 0 ) OR ( perManEntPoints = 0 AND timePoints != 0 ))", data.AppId, data.UserId, time.Now().Format("2006-01-02")).
 		Desc("endDate").
-		Desc("timePoints").Find(&soldelist)
+		Desc("timePoints").
+		Find(&soldelist)
 	if len(soldelist) == 0 {
 		return entity.ErrorCode, "没有结存可以消耗"
 	}
@@ -145,6 +148,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 					Update(solde)
 				if err != nil && af == 0 {
 					log.Print("消耗永久积分失败")
+					orm.Rollback()
 					return entity.ErrorCode, "消耗永久积分失败"
 				}
 			}
@@ -160,6 +164,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 					Update(solde)
 				if err != nil && af == 0 {
 					log.Print("消耗时效积分失败")
+					orm.Rollback()
 					return entity.ErrorCode, "消耗时效积分失败"
 				}
 				break
@@ -173,6 +178,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 				Update(solde)
 			if err != nil && af == 0 {
 				log.Print("消耗时效积分失败")
+				orm.Rollback()
 				return entity.ErrorCode, "消耗时效积分失败"
 			}
 		}
@@ -187,6 +193,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 		Update(balance)
 	if err != nil && af == 0 {
 		log.Print("余额扣除失败")
+		orm.Rollback()
 		return entity.ErrorCode, "余额扣除失败"
 	}
 
@@ -202,10 +209,15 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
 	flow.AppId = data.AppId
 	flow.Sort = entity.ReduceCode
 	af, err = orm.Table("integral_flow").Insert(&flow)
-		if err != nil && af == 0 {
-			log.Print("积分记录失败")
-			return entity.ErrorCode, "积分记录失败"
-		}
+	if err != nil && af == 0 {
+		log.Print("积分记录失败")
+		orm.Rollback()
+		return entity.ErrorCode, "积分记录失败"
+	}
+	err = orm.Commit()
+	if err != nil {
+		return entity.ErrorCode, "积分消耗失败"
+	}
 	return entity.SuccessCode, "积分消耗成功"
 }
 
@@ -361,8 +373,9 @@ func (service *IntegralService) IntegralBalanceService(model entity.BalanceUpdat
 */
 //积分守护
 func (service *IntegralService) IntegralGuardService(endDate string) bool {
-	orm := entity.Engine
-	var err error
+	orm := entity.Engine.NewSession()
+	defer orm.Close()
+	err := orm.Begin()
 	soldelist := []entity.Solde{}
 	err = orm.Table("integral_solde").
 		Where("timePoints != 0 AND endDate < ? ", endDate).
@@ -393,6 +406,7 @@ func (service *IntegralService) IntegralGuardService(endDate string) bool {
 			Update(balance)
 		if err != nil && numb == 0 {
 			log.Print("余额扣除失败")
+			orm.Rollback()
 			return false
 		}
 
@@ -410,6 +424,7 @@ func (service *IntegralService) IntegralGuardService(endDate string) bool {
 		af, err := orm.Table("integral_flow").Insert(&flow)
 		if err != nil && af == 0 {
 			log.Print("积分记录失败")
+			orm.Rollback()
 			return false
 		}
 
@@ -422,9 +437,14 @@ func (service *IntegralService) IntegralGuardService(endDate string) bool {
 			Update(soldeUpdate)
 		if af == 0 && err != nil {
 			log.Println("过期时效积分清空失败", solde.Id)
+			orm.Rollback()
 			return false
 		}
 	}
+	err = orm.Commit()
+	if err != nil {
+		return false
+	}
 	return true
 }