|
@@ -12,8 +12,8 @@ import (
|
|
|
type IntegralService struct{}
|
|
|
|
|
|
//新增积分流水
|
|
|
-func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64, string,string) {
|
|
|
- serialNumber:="0000"
|
|
|
+func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64, string, string) {
|
|
|
+ serialNumber := "0000"
|
|
|
orm := entity.Engine.NewSession()
|
|
|
defer orm.Close()
|
|
|
err := orm.Begin()
|
|
@@ -24,6 +24,9 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
flow.PointType = data.PointType
|
|
|
flow.SourceType = fmt.Sprint(data.PointType)
|
|
|
flow.Point = data.Point
|
|
|
+ if data.EndDate!=""{
|
|
|
+ data.EndDate=data.EndDate[0:10]
|
|
|
+ }
|
|
|
flow.EndDate = data.EndDate
|
|
|
flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
|
flow.AppId = data.AppId
|
|
@@ -34,13 +37,13 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
flow.OperationType = 1
|
|
|
}
|
|
|
//流水号
|
|
|
- serialNumber= time.Now().Format("20060102150405000")+fmt.Sprint(rand.Intn(100))
|
|
|
- flow.SerialNumber=serialNumber
|
|
|
+ serialNumber = time.Now().Format("20060102150405000") + fmt.Sprint(rand.Intn(100))
|
|
|
+ flow.SerialNumber = serialNumber
|
|
|
numb, err = orm.Table("integral_flow").Insert(flow)
|
|
|
if err != nil && numb == 0 {
|
|
|
log.Print("新增流水失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增流水失败",serialNumber
|
|
|
+ return entity.ErrorCode, "新增流水失败", serialNumber
|
|
|
}
|
|
|
//结存修改
|
|
|
solde := entity.Solde{}
|
|
@@ -58,7 +61,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil || numb == 0 {
|
|
|
log.Print("修改时效积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "修改时效积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "修改时效积分失败", serialNumber
|
|
|
}
|
|
|
} else {
|
|
|
solde.PerManEntPoints = data.Point
|
|
@@ -66,7 +69,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil || numb == 0 {
|
|
|
log.Print("新增永久积分失败")
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增永久积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "新增永久积分失败", serialNumber
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -82,7 +85,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil || numb == 0 {
|
|
|
log.Print("修改时效积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "修改时效积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "修改时效积分失败", serialNumber
|
|
|
}
|
|
|
} else {
|
|
|
solde.TimePoints = data.Point
|
|
@@ -90,7 +93,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil && numb == 0 {
|
|
|
log.Print("新增时效积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增时效积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "新增时效积分失败", serialNumber
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -107,7 +110,7 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil || numb == 0 {
|
|
|
log.Print("新增余额失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增余额失败",serialNumber
|
|
|
+ return entity.ErrorCode, "新增余额失败", serialNumber
|
|
|
}
|
|
|
} else {
|
|
|
//修改余额
|
|
@@ -116,21 +119,21 @@ func (service *IntegralService) IntegralAddService(data entity.FlowJSON) (int64,
|
|
|
if err != nil || numb == 0 {
|
|
|
log.Print("余额新增失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "余额新增失败",serialNumber
|
|
|
+ return entity.ErrorCode, "余额新增失败", serialNumber
|
|
|
}
|
|
|
}
|
|
|
err = orm.Commit()
|
|
|
if err != nil {
|
|
|
log.Print("积分新增失败:", err)
|
|
|
- return entity.ErrorCode, "积分新增失败",serialNumber
|
|
|
+ return entity.ErrorCode, "积分新增失败", serialNumber
|
|
|
}
|
|
|
- return entity.SuccessCode, "余额新增成功",serialNumber
|
|
|
+ return entity.SuccessCode, "余额新增成功", serialNumber
|
|
|
}
|
|
|
|
|
|
//消耗积分流水
|
|
|
-func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int64, string,string) {
|
|
|
- serialNumber:="0000"
|
|
|
- serialNumber= time.Now().Format("20060102150405000")+fmt.Sprint(rand.Intn(100))
|
|
|
+func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (int64, string, string) {
|
|
|
+ serialNumber := "0000"
|
|
|
+ serialNumber = time.Now().Format("20060102150405000") + fmt.Sprint(rand.Intn(100))
|
|
|
orm := entity.Engine.NewSession()
|
|
|
defer orm.Close()
|
|
|
var err = orm.Begin()
|
|
@@ -142,14 +145,14 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
Get(&balance)
|
|
|
if err != nil {
|
|
|
log.Printf("积分余额查询出错,userId:[%s],err:[%v]", data.UserId, err)
|
|
|
- return entity.ErrorCode, "积分余额查询出错",serialNumber
|
|
|
+ return entity.ErrorCode, "积分余额查询出错", serialNumber
|
|
|
}
|
|
|
if !b {
|
|
|
log.Printf("没有查询到[%s]的积分记录,err:[%v]", data.UserId, err)
|
|
|
- return entity.ErrorCode, "没有查询到积分记录",serialNumber
|
|
|
+ return entity.ErrorCode, "没有查询到积分记录", serialNumber
|
|
|
}
|
|
|
if balance.CountPoints < data.Point {
|
|
|
- return entity.ErrorCode, "积分余额不足",serialNumber
|
|
|
+ return entity.ErrorCode, "积分余额不足", serialNumber
|
|
|
}
|
|
|
|
|
|
//结存消耗
|
|
@@ -160,7 +163,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
Desc("timePoints").
|
|
|
Find(&soldelist)
|
|
|
if len(soldelist) == 0 {
|
|
|
- return entity.ErrorCode, "没有结存可以消耗",serialNumber
|
|
|
+ return entity.ErrorCode, "没有结存可以消耗", serialNumber
|
|
|
}
|
|
|
var point = data.Point
|
|
|
for _, solde := range soldelist {
|
|
@@ -180,7 +183,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
if err != nil || af == 0 {
|
|
|
log.Print("消耗永久积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "消耗永久积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "消耗永久积分失败", serialNumber
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -196,7 +199,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
if err != nil || af == 0 {
|
|
|
log.Print("消耗时效积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "消耗时效积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "消耗时效积分失败", serialNumber
|
|
|
}
|
|
|
break
|
|
|
}
|
|
@@ -210,7 +213,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
if err != nil || af == 0 {
|
|
|
log.Print("消耗时效积分失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "消耗时效积分失败",serialNumber
|
|
|
+ return entity.ErrorCode, "消耗时效积分失败", serialNumber
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -224,7 +227,7 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
if err != nil || af == 0 {
|
|
|
log.Print("余额扣除失败:", err)
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "余额扣除失败",serialNumber
|
|
|
+ return entity.ErrorCode, "余额扣除失败", serialNumber
|
|
|
}
|
|
|
|
|
|
//消耗积分流水记录
|
|
@@ -240,19 +243,19 @@ func (service *IntegralService) IntegralConsumeService(data entity.FlowJSON) (in
|
|
|
flow.EndDate = data.EndDate
|
|
|
flow.AppId = data.AppId
|
|
|
flow.Sort = entity.ReduceCode
|
|
|
- flow.SerialNumber=serialNumber
|
|
|
+ flow.SerialNumber = serialNumber
|
|
|
af, err = orm.Table("integral_flow").Insert(&flow)
|
|
|
if err != nil || af == 0 {
|
|
|
log.Print("积分记录失败")
|
|
|
orm.Rollback()
|
|
|
- return entity.ErrorCode, "积分记录失败",serialNumber
|
|
|
+ return entity.ErrorCode, "积分记录失败", serialNumber
|
|
|
}
|
|
|
|
|
|
err = orm.Commit()
|
|
|
if err != nil {
|
|
|
- return entity.ErrorCode, "积分消耗失败",serialNumber
|
|
|
+ return entity.ErrorCode, "积分消耗失败", serialNumber
|
|
|
}
|
|
|
- return entity.SuccessCode, "积分消耗成功",serialNumber
|
|
|
+ return entity.SuccessCode, "积分消耗成功", serialNumber
|
|
|
}
|
|
|
|
|
|
//到期积分查询
|
|
@@ -496,7 +499,7 @@ func (service *IntegralService) IntegralBalanceCheckService(userId, appId string
|
|
|
}
|
|
|
//积分30天内到期余额
|
|
|
var solde entity.Solde
|
|
|
- _,err = orm.Table("integral_solde").
|
|
|
+ _, err = orm.Table("integral_solde").
|
|
|
Select("SUM( timePoints ) AS timePoints").
|
|
|
Where("userId = ? AND appId = ? AND endDate > DATE_SUB( NOW(), INTERVAL +1 DAY ) AND DATE_SUB( NOW(), INTERVAL -31 DAY ) > endDate", userId, appId).
|
|
|
Get(&solde)
|
|
@@ -540,7 +543,7 @@ func (service *IntegralService) IntegralDetailedCheck(data entity.FlowJSON) ([]*
|
|
|
point.SourceType = value.SourceType
|
|
|
point.Name = value.Name
|
|
|
point.Abstract = value.Abstract
|
|
|
- point.SerialNumber=value.SerialNumber
|
|
|
+ point.SerialNumber = value.SerialNumber
|
|
|
flowReq = append(flowReq, &point)
|
|
|
}
|
|
|
fmt.Println(flowList)
|
|
@@ -550,3 +553,159 @@ func (service *IntegralService) IntegralDetailedCheck(data entity.FlowJSON) ([]*
|
|
|
}
|
|
|
return flowReq, numb
|
|
|
}
|
|
|
+
|
|
|
+//账号合并
|
|
|
+func (service *IntegralService) UserMerge(mergeUser, mergedUser, appId string) (bool, string) {
|
|
|
+ orm := entity.Engine.NewSession()
|
|
|
+ defer orm.Close()
|
|
|
+ err := orm.Begin()
|
|
|
+ //先查询一下被合并账号有效的结存信息
|
|
|
+ nowStr := time.Now().Format("2006-01-02")
|
|
|
+ soldeList := []entity.Solde{}
|
|
|
+ err = orm.Table("integral_solde").
|
|
|
+ Where("userId = ? AND appId = ? and (endDate>=? or endDate ='') ", mergedUser, appId, nowStr).
|
|
|
+ Find(&soldeList)
|
|
|
+ if err != nil {
|
|
|
+ orm.Rollback()
|
|
|
+ log.Println("查询被合并者结存信息出错",err)
|
|
|
+ return false, "查询被合并者结存信息出错"
|
|
|
+ }
|
|
|
+ timeBalanceNumb:=int64(0)
|
|
|
+ perManEntBalanceNumb:=int64(0)
|
|
|
+ for _, value := range soldeList {
|
|
|
+ if (value.PerManEntPoints==0){
|
|
|
+ //此数据可能是时效积分数据
|
|
|
+ if value.TimePoints==0{
|
|
|
+ break
|
|
|
+ }
|
|
|
+ solde := entity.Solde{}
|
|
|
+ _, err = orm.Table("integral_solde").
|
|
|
+ Where("userId = ? AND appId = ? and endDate=?", mergeUser, appId, value.EndDate).
|
|
|
+ Get(&solde)
|
|
|
+ if err != nil {
|
|
|
+ orm.Rollback()
|
|
|
+ log.Println("查询合并者结存信息出错,err")
|
|
|
+ return false, "查询合并者结存信息出错"
|
|
|
+ }
|
|
|
+ if solde.Id==0{
|
|
|
+ numb:=int64(0)
|
|
|
+ //新增一条记录
|
|
|
+ solde := entity.Solde{}
|
|
|
+ solde.AppId = value.AppId
|
|
|
+ solde.UserId = mergeUser
|
|
|
+ solde.PerManEntPoints =0
|
|
|
+ solde.TimePoints = value.TimePoints
|
|
|
+ solde.EndDate=value.EndDate
|
|
|
+ numb, err = orm.Table("integral_solde").Insert(&solde)
|
|
|
+ if err != nil && numb == 0 {
|
|
|
+ log.Print("新增时效积分失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return false, "新增时效积分失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orm.Exec("UPDATE integral_solde SET timePoints = timePoints+? WHERE id= ?",value.TimePoints,solde.Id)
|
|
|
+ timeBalanceNumb+=value.TimePoints
|
|
|
+ }
|
|
|
+ //此数据是永久积分数据
|
|
|
+ solde := entity.Solde{}
|
|
|
+ _, err = orm.Table("integral_solde").
|
|
|
+ Where("userId = ? AND appId = ? and endDate =''", mergeUser, appId).
|
|
|
+ Get(&solde)
|
|
|
+ if err != nil {
|
|
|
+ orm.Rollback()
|
|
|
+ log.Println("查询合并者永久结存信息出错",err)
|
|
|
+ return false, "查询合并者永久结存信息出错"
|
|
|
+ }
|
|
|
+ if solde.Id==0{
|
|
|
+ //没有永久数据
|
|
|
+ numb:=int64(0)
|
|
|
+ //新增一条记录
|
|
|
+ solde := entity.Solde{}
|
|
|
+ solde.AppId = value.AppId
|
|
|
+ solde.UserId = mergeUser
|
|
|
+ solde.PerManEntPoints =value.PerManEntPoints
|
|
|
+ solde.TimePoints = 0
|
|
|
+ solde.EndDate=value.EndDate
|
|
|
+ numb, err = orm.Table("integral_solde").Insert(&solde)
|
|
|
+ if err != nil && numb == 0 {
|
|
|
+ log.Print("新增时效积分失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return false, "新增时效积分失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ orm.Exec("UPDATE integral_solde SET perManEntPoints = perManEntPoints+? WHERE id= ?",value.PerManEntPoints,solde.Id)
|
|
|
+ perManEntBalanceNumb+=value.PerManEntPoints
|
|
|
+ }
|
|
|
+ balance := entity.Balance{}
|
|
|
+ fool:=true
|
|
|
+ fool, err = orm.Table("integral_balance").Select("*").
|
|
|
+ Where("userId = ? AND appId = ?", mergeUser, appId).
|
|
|
+ Get(&balance)
|
|
|
+ fmt.Println(fool)
|
|
|
+ if err != nil {
|
|
|
+ orm.Rollback()
|
|
|
+ log.Println("积分余额查询出错,err")
|
|
|
+ return false, "积分余额查询失败"
|
|
|
+ }
|
|
|
+ numb:=int64(0)
|
|
|
+
|
|
|
+ if timeBalanceNumb>0{
|
|
|
+ flow := entity.Flow{}
|
|
|
+ flow.UserId = mergeUser
|
|
|
+ flow.SourceType ="账号合并"
|
|
|
+ flow.PointType = 1006
|
|
|
+ flow.SourceId = ""
|
|
|
+ flow.Abstract =""
|
|
|
+ flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
|
+ flow.EndDate = ""
|
|
|
+ flow.AppId = appId
|
|
|
+ flow.Sort = entity.AddCode
|
|
|
+ flow.SerialNumber = time.Now().Format("20060102150405000") + fmt.Sprint(rand.Intn(100))
|
|
|
+ flow.Point = timeBalanceNumb
|
|
|
+ flow.OperationType=0
|
|
|
+ numb, err = orm.Table("integral_flow").Insert(&flow)
|
|
|
+ if err != nil && numb == 0 {
|
|
|
+ log.Print("新增时效流水失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return false, "新增时效流水失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if perManEntBalanceNumb>0{
|
|
|
+ flow := entity.Flow{}
|
|
|
+ flow.UserId = mergeUser
|
|
|
+ flow.SourceType ="账号合并"
|
|
|
+ flow.PointType = 1006
|
|
|
+ flow.SourceId = ""
|
|
|
+ flow.Abstract =""
|
|
|
+ flow.CreateTime = time.Now().Format("2006-01-02 15:04:05")
|
|
|
+ flow.EndDate = ""
|
|
|
+ flow.AppId = appId
|
|
|
+ flow.Sort = entity.AddCode
|
|
|
+ flow.SerialNumber = time.Now().Format("20060102150405000") + fmt.Sprint(rand.Intn(100))
|
|
|
+ flow.Point =perManEntBalanceNumb
|
|
|
+ flow.OperationType=1
|
|
|
+ numb, err = orm.Table("integral_flow").Insert(&flow)
|
|
|
+ if err != nil && numb == 0 {
|
|
|
+ log.Print("新增永久流水失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return false, "新增永久流水失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if balance.Id == 0 {
|
|
|
+ balance := entity.Balance{}
|
|
|
+ balance.UserId = mergeUser
|
|
|
+ balance.AppId = appId
|
|
|
+ balance.CountPoints = timeBalanceNumb+perManEntBalanceNumb
|
|
|
+ numb, err = orm.Table("integral_balance").Insert(&balance)
|
|
|
+ if err != nil || numb == 0 {
|
|
|
+ log.Print("新增余额失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return false, "新增余额失败"
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //修改余额
|
|
|
+ orm.Exec("UPDATE integral_balance SET countPoints = countPoints+? WHERE id = ?",timeBalanceNumb+perManEntBalanceNumb,balance.Id)
|
|
|
+ }
|
|
|
+ orm.Commit()
|
|
|
+ return true,"合并成功"
|
|
|
+}
|