|
@@ -7,6 +7,7 @@ import (
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"github.com/gogf/gf/v2/util/gconv"
|
|
|
+ "github.com/google/uuid"
|
|
|
"io/ioutil"
|
|
|
"log"
|
|
|
"net/http"
|
|
@@ -372,129 +373,143 @@ func (service *BalanceService) UserMerge(mergeUser, mergedUser, appId string, pr
|
|
|
Find(&balanceList)
|
|
|
//计算总量
|
|
|
for _, value := range balanceList {
|
|
|
- //流水操作
|
|
|
- //被合并用户流水
|
|
|
- mergedDetailed := entity.Detailed{
|
|
|
- AccountId: mergedUser,
|
|
|
- CompanyId: value.CompanyId,
|
|
|
- DepartmentId: value.DepartmentId,
|
|
|
- ResourceType: value.ResourceType + "(合并)",
|
|
|
- Number: value.Number,
|
|
|
- RuleId: "",
|
|
|
- CreateTime: time.Now().Local(),
|
|
|
- UserType: 0,
|
|
|
- UserId: mergeUser,
|
|
|
- Remarks: "",
|
|
|
- DeductionNumb: int64(0),
|
|
|
- Name: value.Name + "(合并)",
|
|
|
- }
|
|
|
- insertNumb, err := orm.Table(ConsumeRecord).Insert(&mergedDetailed)
|
|
|
- if err != nil || insertNumb <= 0 {
|
|
|
- fmt.Println("新增流水失败:", err)
|
|
|
- orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增流水失败"
|
|
|
- }
|
|
|
- //合并用户流水
|
|
|
- var (
|
|
|
- filter_map map[string]interface{}
|
|
|
- )
|
|
|
-
|
|
|
- if value.Name == "pdf下载包" {
|
|
|
- filter_map = map[string]interface{}{
|
|
|
- "endTime": value.EndTime,
|
|
|
- "source": "合并",
|
|
|
+ //公司账户权益回收
|
|
|
+ if value.CompanyId > 0 {
|
|
|
+ updateNumb, err := orm.Table(AccountResources).Cols("accountId").
|
|
|
+ Where(" id=?", value.Id).
|
|
|
+ Update(&map[string]interface{}{
|
|
|
+ "accountId": fmt.Sprintf("wait_%s", uuid.New().String()),
|
|
|
+ })
|
|
|
+ if err != nil || updateNumb <= 0 {
|
|
|
+ _ = orm.Rollback()
|
|
|
+ return entity.ErrorCode, "回收异常"
|
|
|
}
|
|
|
- } else {
|
|
|
- times, _ := time.Parse("2006-01-02 15:04:05", value.EndTime+" 23:59:59")
|
|
|
- pType := 0
|
|
|
- if value.ResourceType == "标准字段包" {
|
|
|
- pType = 1
|
|
|
- } else if value.ResourceType == "高级字段包" {
|
|
|
- pType = 2
|
|
|
+ } else { //个人账户
|
|
|
+ //流水操作
|
|
|
+ //被合并用户流水
|
|
|
+ mergedDetailed := entity.Detailed{
|
|
|
+ AccountId: mergedUser,
|
|
|
+ CompanyId: int64(0),
|
|
|
+ DepartmentId: int64(0),
|
|
|
+ ResourceType: value.ResourceType + "(合并)",
|
|
|
+ Number: value.Number,
|
|
|
+ RuleId: "",
|
|
|
+ CreateTime: time.Now().Local(),
|
|
|
+ UserType: 0,
|
|
|
+ UserId: mergeUser,
|
|
|
+ Remarks: "",
|
|
|
+ DeductionNumb: int64(0),
|
|
|
+ Name: value.Name + "(合并)",
|
|
|
}
|
|
|
- filter_map = map[string]interface{}{
|
|
|
- "pType": pType,
|
|
|
- "pNum": value.Number,
|
|
|
- "validYear": -1,
|
|
|
- "price": -1,
|
|
|
- "endTime": times.Unix(),
|
|
|
- "describe": "合并",
|
|
|
+ insertNumb, err := orm.Table(ConsumeRecord).Insert(&mergedDetailed)
|
|
|
+ if err != nil || insertNumb <= 0 {
|
|
|
+ fmt.Println("新增流水失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return entity.ErrorCode, "新增流水失败"
|
|
|
}
|
|
|
- }
|
|
|
+ //合并用户流水
|
|
|
+ var (
|
|
|
+ filter_map map[string]interface{}
|
|
|
+ )
|
|
|
|
|
|
- filter, _ := json.Marshal(filter_map)
|
|
|
- mergeDetailed := entity.Detailed{
|
|
|
- AccountId: mergeUser,
|
|
|
- CompanyId: int64(0),
|
|
|
- DepartmentId: int64(0),
|
|
|
- ResourceType: value.ResourceType + "(合并)",
|
|
|
- Number: value.Number,
|
|
|
- RuleId: "",
|
|
|
- CreateTime: time.Now().Local(),
|
|
|
- UserType: value.SourceType,
|
|
|
- UserId: mergeUser,
|
|
|
- Remarks: string(filter),
|
|
|
- DeductionNumb: int64(0),
|
|
|
- Name: value.Name + "(合并)",
|
|
|
- }
|
|
|
- insertNumb, err = orm.Table(ConsumeRecord).Insert(&mergeDetailed)
|
|
|
- if err != nil || insertNumb <= 0 {
|
|
|
- fmt.Println("新增流水失败:", err)
|
|
|
- orm.Rollback()
|
|
|
- return entity.ErrorCode, "新增流水失败"
|
|
|
- }
|
|
|
- //结存操作
|
|
|
- balance := entity.Balance{}
|
|
|
- _, err = orm.Table(AccountResources).
|
|
|
- Select("*").
|
|
|
- Where("accountId=? and resourceType=? endTime=? and vipTime=? and sourceType =?",
|
|
|
- mergeUser, value.ResourceType, value.EndTime, value.VipTime, value.SourceType).
|
|
|
- OrderBy("endTime").
|
|
|
- Get(&balance)
|
|
|
- if balance.Id != 0 {
|
|
|
- //增加结存数量
|
|
|
- balance.Number += value.Number
|
|
|
+ if value.Name == "pdf下载包" {
|
|
|
+ filter_map = map[string]interface{}{
|
|
|
+ "endTime": value.EndTime,
|
|
|
+ "source": "合并",
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ times, _ := time.Parse("2006-01-02 15:04:05", value.EndTime+" 23:59:59")
|
|
|
+ pType := 0
|
|
|
+ if value.ResourceType == "标准字段包" {
|
|
|
+ pType = 1
|
|
|
+ } else if value.ResourceType == "高级字段包" {
|
|
|
+ pType = 2
|
|
|
+ }
|
|
|
+ filter_map = map[string]interface{}{
|
|
|
+ "pType": pType,
|
|
|
+ "pNum": value.Number,
|
|
|
+ "validYear": -1,
|
|
|
+ "price": -1,
|
|
|
+ "endTime": times.Unix(),
|
|
|
+ "describe": "合并",
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ filter, _ := json.Marshal(filter_map)
|
|
|
+ mergeDetailed := entity.Detailed{
|
|
|
+ AccountId: mergeUser,
|
|
|
+ CompanyId: int64(0),
|
|
|
+ DepartmentId: int64(0),
|
|
|
+ ResourceType: value.ResourceType + "(合并)",
|
|
|
+ Number: value.Number,
|
|
|
+ RuleId: "",
|
|
|
+ CreateTime: time.Now().Local(),
|
|
|
+ UserType: value.SourceType,
|
|
|
+ UserId: mergeUser,
|
|
|
+ Remarks: string(filter),
|
|
|
+ DeductionNumb: int64(0),
|
|
|
+ Name: value.Name + "(合并)",
|
|
|
+ }
|
|
|
+ insertNumb, err = orm.Table(ConsumeRecord).Insert(&mergeDetailed)
|
|
|
+ if err != nil || insertNumb <= 0 {
|
|
|
+ fmt.Println("新增流水失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return entity.ErrorCode, "新增流水失败"
|
|
|
+ }
|
|
|
+ //结存操作
|
|
|
+ balance := entity.Balance{}
|
|
|
+ _, err = orm.Table(AccountResources).
|
|
|
+ Select("*").
|
|
|
+ Where("accountId=? and resourceType=? endTime=? and vipTime=? and sourceType =?",
|
|
|
+ mergeUser, value.ResourceType, value.EndTime, value.VipTime, value.SourceType).
|
|
|
+ OrderBy("endTime").
|
|
|
+ Get(&balance)
|
|
|
+ if balance.Id != 0 {
|
|
|
+ //增加结存数量
|
|
|
+ balance.Number += value.Number
|
|
|
+ updateNumb, err := orm.Table(AccountResources).
|
|
|
+ Cols("number").ID(balance.Id).
|
|
|
+ Update(&balance)
|
|
|
+ if err != nil || updateNumb <= 0 {
|
|
|
+ fmt.Println("结存修改失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return entity.ErrorCode, "结存修改失败"
|
|
|
+ }
|
|
|
+ //增加用户资源量
|
|
|
+ //查看是否有结止时间为endTime的数据
|
|
|
+ } else {
|
|
|
+ //新增结存信息
|
|
|
+ mergeBalance := entity.Balance{
|
|
|
+ AccountId: mergeUser,
|
|
|
+ CompanyId: 0,
|
|
|
+ DepartmentId: 0,
|
|
|
+ Name: value.Name,
|
|
|
+ ResourceType: value.ResourceType,
|
|
|
+ Number: value.Number,
|
|
|
+ Spec: value.Spec,
|
|
|
+ AppId: value.AppId,
|
|
|
+ EndTime: value.EndTime,
|
|
|
+ VipTime: value.VipTime,
|
|
|
+ SourceType: value.SourceType,
|
|
|
+ }
|
|
|
+ insertNumb, err := orm.Table(AccountResources).Insert(&mergeBalance)
|
|
|
+ if err != nil || insertNumb <= 0 {
|
|
|
+ fmt.Println("结存新增失败:", err)
|
|
|
+ orm.Rollback()
|
|
|
+ return entity.ErrorCode, "结存新增失败"
|
|
|
+ }
|
|
|
+ }
|
|
|
+ value.Number = 0
|
|
|
updateNumb, err := orm.Table(AccountResources).
|
|
|
- Cols("number").ID(balance.Id).
|
|
|
- Update(&balance)
|
|
|
+ Cols("number").ID(value.Id).
|
|
|
+ Update(&value)
|
|
|
if err != nil || updateNumb <= 0 {
|
|
|
fmt.Println("结存修改失败:", err)
|
|
|
orm.Rollback()
|
|
|
return entity.ErrorCode, "结存修改失败"
|
|
|
}
|
|
|
- //增加用户资源量
|
|
|
- //查看是否有结止时间为endTime的数据
|
|
|
- } else {
|
|
|
- //新增结存信息
|
|
|
- mergeBalance := entity.Balance{
|
|
|
- AccountId: mergeUser,
|
|
|
- CompanyId: 0,
|
|
|
- DepartmentId: 0,
|
|
|
- Name: value.Name,
|
|
|
- ResourceType: value.ResourceType,
|
|
|
- Number: value.Number,
|
|
|
- Spec: value.Spec,
|
|
|
- AppId: value.AppId,
|
|
|
- EndTime: value.EndTime,
|
|
|
- VipTime: value.VipTime,
|
|
|
- SourceType: value.SourceType,
|
|
|
- }
|
|
|
- insertNumb, err := orm.Table(AccountResources).Insert(&mergeBalance)
|
|
|
- if err != nil || insertNumb <= 0 {
|
|
|
- fmt.Println("结存新增失败:", err)
|
|
|
- orm.Rollback()
|
|
|
- return entity.ErrorCode, "结存新增失败"
|
|
|
- }
|
|
|
- }
|
|
|
- value.Number = 0
|
|
|
- updateNumb, err := orm.Table(AccountResources).
|
|
|
- Cols("number").ID(value.Id).
|
|
|
- Update(&value)
|
|
|
- if err != nil || updateNumb <= 0 {
|
|
|
- fmt.Println("结存修改失败:", err)
|
|
|
- orm.Rollback()
|
|
|
- return entity.ErrorCode, "结存修改失败"
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
orm.Commit()
|
|
|
return entity.SuccessCode, "合并成功"
|