274 lines
8.6 KiB
Go
274 lines
8.6 KiB
Go
package bundle
|
||
|
||
import (
|
||
"context"
|
||
"fmt"
|
||
"fonchain-fiee/api/accountFiee"
|
||
"fonchain-fiee/api/bundle"
|
||
"fonchain-fiee/pkg/service"
|
||
"fonchain-fiee/pkg/service/bundle/common"
|
||
bundleModel "fonchain-fiee/pkg/service/bundle/model"
|
||
"fonchain-fiee/pkg/utils"
|
||
"github.com/gin-gonic/gin"
|
||
"github.com/gin-gonic/gin/binding"
|
||
"strconv"
|
||
"time"
|
||
)
|
||
|
||
func GetReconciliationList(c *gin.Context) {
|
||
var req bundle.GetReconciliationListReq
|
||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
detail, detailErr := service.BundleProvider.GetReconciliationList(context.Background(), &req)
|
||
if detailErr != nil {
|
||
service.Error(c, detailErr)
|
||
return
|
||
}
|
||
service.Success(c, detail)
|
||
return
|
||
|
||
}
|
||
|
||
func GetReconciliationListDownload(c *gin.Context) {
|
||
var req bundle.GetReconciliationListReq
|
||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
detail, detailErr := service.BundleProvider.GetReconciliationList(context.Background(), &req)
|
||
if detailErr != nil {
|
||
service.Error(c, detailErr)
|
||
return
|
||
}
|
||
titleList := []string{
|
||
"关联套餐订单号", "关联增值服务订单号", "对账单创建时间", "艺人", "艺人手机号", "套餐", "支付金额", "币种", "支付渠道", "支付时间", "支付状态", "流水号",
|
||
}
|
||
var dataList []interface{}
|
||
|
||
for _, i := range detail.List {
|
||
payStatus := GetPayStatusText(i.PayStatus)
|
||
currencyType := GetCurrencyTypeText(i.CurrencyType)
|
||
payChannel := "未知"
|
||
if i.PayChannel == 1 {
|
||
payChannel = "支付宝"
|
||
}
|
||
data := []any{
|
||
i.BundleOrderOn,
|
||
i.BundleAddOrderOn,
|
||
i.CreationTime,
|
||
i.UserName,
|
||
i.UserTel,
|
||
i.BundleName,
|
||
i.PayAmount,
|
||
currencyType,
|
||
payChannel,
|
||
i.PayTime,
|
||
payStatus,
|
||
i.SerialNumber,
|
||
}
|
||
dataList = append(dataList, &data)
|
||
}
|
||
content, err := utils.ToExcelByType(titleList, dataList, "slice", "")
|
||
if err != nil {
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
utils.ResponseXls(c, content, "对账单")
|
||
return
|
||
|
||
}
|
||
|
||
func AutoCreateUserAndOrder(c *gin.Context) {
|
||
var req bundle.AutoCreateUserAndOrderRequest
|
||
if err := c.ShouldBindBodyWith(&req, binding.JSON); err != nil {
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
fmt.Println("==================== 111111111111111")
|
||
data, listErr := service.BundleProvider.ListUnfinishedInfos(context.Background(), &req)
|
||
if listErr != nil {
|
||
service.Error(c, listErr)
|
||
return
|
||
}
|
||
if data != nil {
|
||
fmt.Println("待处理的数据量:", len(data.UnfinishedInfos))
|
||
}
|
||
|
||
for _, unfinishInfo := range data.UnfinishedInfos {
|
||
fmt.Println("==================== 2222222222222")
|
||
// TODO 1.创建实名用户 [ok]
|
||
userReq := new(accountFiee.CreateUserAndRealNameRequest)
|
||
userReq.UserNum = unfinishInfo.UserNum
|
||
userReq.UserName = unfinishInfo.UserName
|
||
userReq.UserTelArea = unfinishInfo.UserTelArea
|
||
userReq.UserTel = unfinishInfo.UserTel
|
||
userReq.UserSex = unfinishInfo.UserSex
|
||
userReq.Nationality = unfinishInfo.Nationality
|
||
userReq.PlaceOfResidence = unfinishInfo.PlaceOfResidence
|
||
userReq.DocumentType = unfinishInfo.DocumentType
|
||
userReq.UserIdCardFrontUrl = unfinishInfo.UserIdCardFrontUrl
|
||
userReq.UserIdCardReverseUrl = unfinishInfo.UserIdCardReverseUrl
|
||
userReq.UserIdCardValidity = unfinishInfo.UserIdCardValidity
|
||
// 解析时间字符串
|
||
loc, _ := time.LoadLocation("Local")
|
||
t, err := time.ParseInLocation("2006-01-02 15:04:05", unfinishInfo.PayTime, loc)
|
||
if err != nil {
|
||
fmt.Println("解析时间失败:", err)
|
||
return
|
||
}
|
||
// 减去一天
|
||
oneDayBefore := t.AddDate(0, 0, -1)
|
||
|
||
// 格式化为字符串
|
||
userReq.AuditTime = oneDayBefore.Format("2006-01-02 15:04:05")
|
||
userResp, userErr := service.AccountFieeProvider.CreateUserAndRealName(context.Background(), userReq)
|
||
if userErr != nil {
|
||
service.Error(c, userErr)
|
||
return
|
||
}
|
||
|
||
fmt.Println("==================== 3333333333333")
|
||
// TODO 2.匹配套餐并签约? []
|
||
|
||
//主套餐1500,固定的,uuid写死,不同金额对应uuiid
|
||
//
|
||
//增3条-30条,
|
||
//map【美元金额】=uuid
|
||
numMap := make(map[string]int)
|
||
numMap["3150"] = 3
|
||
numMap["5600"] = 8
|
||
numMap["6500"] = 10
|
||
numMap["8500"] = 15
|
||
numMap["10500"] = 20
|
||
numMap["11500"] = 25
|
||
numMap["14100"] = 30
|
||
|
||
fmt.Println("==================== 44444444444444444")
|
||
// TODO 3.创建成功的订单和回调 [ok]
|
||
////创建对账单 todo 待修改
|
||
|
||
// outTradeNo就是orderNo,根据这个去查询子表的source,如果是2就时单独的子套餐,如果是1就是主套餐
|
||
orderLimit, err := service.BundleProvider.OrderListByOrderNo(context.Background(), &bundle.OrderInfoByOrderNoRequest{
|
||
OrderNo: unfinishInfo.OrderNo,
|
||
})
|
||
if err != nil {
|
||
fmt.Println("=============== antom创建支付,查询订单source报错:", err)
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
|
||
bundleName := "" // 套餐名称
|
||
detail, detailErr := service.BundleProvider.OrderRecordsDetail(context.Background(), &bundle.OrderRecordsDetailRequest{
|
||
OrderNo: unfinishInfo.OrderNo,
|
||
})
|
||
if detailErr != nil {
|
||
fmt.Println("=============== antom创建支付,查询主订单信息报错:", detailErr)
|
||
service.Error(c, detailErr)
|
||
return
|
||
}
|
||
|
||
fmt.Println("detail.OrderRecord.Status :", detail.OrderRecord.Status)
|
||
fmt.Println("detail.OrderRecord.CheckoutSessionId :", detail.OrderRecord.CheckoutSessionId)
|
||
fmt.Println("detail.OrderRecord.PayTime :", detail.OrderRecord.PayTime)
|
||
|
||
bundleName = detail.OrderRecord.BundleName
|
||
payAmount, err := strconv.ParseFloat(unfinishInfo.OrderPayAmount, 64)
|
||
if err != nil {
|
||
fmt.Println("转换失败:", err)
|
||
return
|
||
}
|
||
|
||
_, err = service.BundleProvider.CreateReconciliation(context.Background(), &bundle.ReconciliationInfo{
|
||
BundleOrderOn: unfinishInfo.OrderNo,
|
||
BundleAddOrderOn: unfinishInfo.OrderNo,
|
||
UserName: unfinishInfo.UserName,
|
||
UserTel: unfinishInfo.UserTel,
|
||
BundleName: bundleName,
|
||
PayAmount: float32(payAmount),
|
||
CurrencyType: 2,
|
||
PayStatus: 2,
|
||
PayTime: unfinishInfo.PayTime,
|
||
UserID: uint64(userResp.UserId),
|
||
SerialNumber: "zero-price-serial-number",
|
||
})
|
||
if err != nil {
|
||
fmt.Println("=============== antom创建支付,创建对账单报错:", err)
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
|
||
_, updateStatusErr := service.BundleProvider.UpdateOrderRecordByOrderNo(context.Background(), &bundle.OrderRecord{
|
||
OrderNo: unfinishInfo.OrderNo,
|
||
PayTime: unfinishInfo.PayTime,
|
||
Status: bundleModel.OrderPaid,
|
||
})
|
||
if updateStatusErr != nil {
|
||
fmt.Println("=============== antom创建支付,更新订单报错:", updateStatusErr)
|
||
service.Error(c, updateStatusErr)
|
||
return
|
||
}
|
||
|
||
//如果是购买套餐 1:创建新的余量信息CreateBundleBalance 2 添加扩展记录BundleExtend
|
||
_, err = service.BundleProvider.CreateBundleBalance(context.Background(), &bundle.CreateBundleBalanceReq{
|
||
UserId: int32(userResp.UserId),
|
||
OrderUUID: orderLimit.OrderUUID,
|
||
//AccountNumber: orderLimit.AccountNumber,
|
||
//VideoNumber: orderLimit.VideoNumber,
|
||
//ImageNumber: orderLimit.ImageNumber,
|
||
//DataAnalysisNumber: orderLimit.DataNumber,
|
||
ExpansionPacksNumber: 1,
|
||
})
|
||
if err != nil {
|
||
fmt.Println("=============== antom创建支付,OrderTypePackage报错:", err)
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
|
||
var timeUnit uint32
|
||
switch orderLimit.Unit {
|
||
case "天":
|
||
timeUnit = common.TimeUnitDay
|
||
case "月":
|
||
timeUnit = common.TimeUnitMonth
|
||
case "年":
|
||
timeUnit = common.TimeUnitYear
|
||
default:
|
||
timeUnit = 0
|
||
}
|
||
_, err = service.BundleProvider.BundleExtend(context.Background(), &bundle.BundleExtendRequest{
|
||
UserId: int64(orderLimit.UserId),
|
||
AccountAdditional: uint32(orderLimit.AccountNumber),
|
||
VideoAdditional: uint32(orderLimit.VideoNumber),
|
||
ImagesAdditional: uint32(orderLimit.ImageNumber),
|
||
DataAdditional: uint32(orderLimit.DataNumber),
|
||
AvailableDurationAdditional: uint32(orderLimit.Duration),
|
||
TimeUnit: timeUnit,
|
||
AssociatedorderNumber: unfinishInfo.OrderNo, //增值服务订单号
|
||
Type: 2, //自行购买
|
||
OperatorName: orderLimit.UserName,
|
||
OperatorId: orderLimit.UserId,
|
||
})
|
||
if err != nil {
|
||
service.Error(c, err)
|
||
return
|
||
}
|
||
|
||
fmt.Println("==================== 5555555555555555555")
|
||
// TODO 4.软删除未删除信息 [ok]
|
||
deleteReq := new(bundle.SoftDeleteUnfinishedInfoRequest)
|
||
deleteReq.ID = unfinishInfo.ID
|
||
_, deleteErr := service.BundleProvider.SoftDeleteUnfinishedInfo(context.Background(), deleteReq)
|
||
if deleteErr != nil {
|
||
service.Error(c, deleteErr)
|
||
return
|
||
}
|
||
}
|
||
|
||
fmt.Println("==================== 66666666666666666")
|
||
service.Success(c)
|
||
return
|
||
|
||
}
|