wangkaiyue 1 سال پیش
والد
کامیت
1ec1f60524
1فایلهای تغییر یافته به همراه127 افزوده شده و 112 حذف شده
  1. 127 112
      service/balanceService.go

+ 127 - 112
service/balanceService.go

@@ -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, "合并成功"