fonchain-fiee/pkg/service/cast/work.go

238 lines
5.8 KiB
Go
Raw Normal View History

2025-05-29 06:28:00 +00:00
package cast
import (
2025-06-11 01:16:11 +00:00
"context"
2025-06-15 12:46:05 +00:00
"errors"
2025-06-16 03:52:30 +00:00
"fmt"
2025-06-11 01:16:11 +00:00
"fonchain-fiee/api/accountFiee"
2025-06-15 12:46:05 +00:00
"fonchain-fiee/api/bundle"
2025-05-29 06:28:00 +00:00
"fonchain-fiee/api/cast"
2025-06-11 01:16:11 +00:00
"fonchain-fiee/cmd/config"
2025-06-15 12:46:05 +00:00
"fonchain-fiee/pkg/e"
2025-05-29 06:28:00 +00:00
"fonchain-fiee/pkg/service"
"github.com/gin-gonic/gin"
2025-06-16 03:37:05 +00:00
"go.uber.org/zap"
2025-06-11 01:16:11 +00:00
"strconv"
2025-05-29 06:28:00 +00:00
)
2025-06-11 01:16:11 +00:00
func UpdateWorkImage(ctx *gin.Context) {
var req *cast.UpdateWorkImageReq
var infoResp *accountFiee.UserInfoResponse
var err error
if err = ctx.ShouldBind(&req); err != nil {
2025-05-29 06:28:00 +00:00
service.Error(ctx, err)
return
}
2025-06-11 01:16:11 +00:00
if config.AppConfig.System.AppMode != "dev" {
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
ID: artistId,
Domain: "app",
})
if err != nil {
service.Error(ctx, err)
return
}
} else {
infoResp = &accountFiee.UserInfoResponse{
Name: "小波",
TelNum: "18288888888",
}
}
2025-06-11 08:11:16 +00:00
req.ArtistName = infoResp.Name
2025-06-11 01:16:11 +00:00
req.ArtistPhone = infoResp.TelNum
2025-06-15 12:46:05 +00:00
artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
if err = CheckUserBundleBalance(int32(artistID)); err != nil {
service.Error(ctx, err)
return
}
2025-06-14 16:33:25 +00:00
newCtx := NewCtxWithUserInfo(ctx)
resp, err := service.CastProvider.UpdateWorkImage(newCtx, req)
2025-06-11 01:16:11 +00:00
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
func UpdateWorkVideo(ctx *gin.Context) {
var req *cast.UpdateWorkVideoReq
var infoResp *accountFiee.UserInfoResponse
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
if config.AppConfig.System.AppMode != "dev" {
artistId, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
infoResp, err = service.AccountFieeProvider.Info(context.Background(), &accountFiee.InfoRequest{
ID: artistId,
Domain: "app",
})
if err != nil {
service.Error(ctx, err)
return
}
} else {
infoResp = &accountFiee.UserInfoResponse{
Name: "小波",
TelNum: "18288888888",
}
}
2025-06-15 12:46:05 +00:00
artistID, _ := strconv.ParseUint(req.ArtistUuid, 10, 64)
if err = CheckUserBundleBalance(int32(artistID)); err != nil {
service.Error(ctx, err)
return
}
2025-06-11 08:11:16 +00:00
req.ArtistName = infoResp.Name
2025-06-11 01:16:11 +00:00
req.ArtistPhone = infoResp.TelNum
2025-06-14 16:33:25 +00:00
newCtx := NewCtxWithUserInfo(ctx)
resp, err := service.CastProvider.UpdateWorkVideo(newCtx, req)
2025-05-29 06:28:00 +00:00
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
2025-06-11 08:11:16 +00:00
2025-06-12 07:20:11 +00:00
func UpdateApproval(ctx *gin.Context) {
2025-06-13 11:00:38 +00:00
var req *cast.UpdateStatusReq
2025-06-12 07:20:11 +00:00
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
2025-06-13 11:00:38 +00:00
req.WorkAction = cast.WorkActionENUM_APPROVAL
2025-06-14 16:33:25 +00:00
newCtx := NewCtxWithUserInfo(ctx)
2025-06-20 03:11:49 +00:00
resp, err := service.CastProvider.UpdateStatus(newCtx, req)
2025-06-12 07:20:11 +00:00
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
2025-06-11 08:11:16 +00:00
func WorkList(ctx *gin.Context) {
var (
req *cast.WorkListReq
resp *cast.WorkListResp
)
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
2025-06-14 16:33:25 +00:00
newCtx := NewCtxWithUserInfo(ctx)
resp, err = service.CastProvider.WorkList(newCtx, req)
2025-06-11 08:11:16 +00:00
if err != nil {
service.Error(ctx, err)
return
}
2025-06-20 03:46:06 +00:00
var castS = new(CastService)
if len(resp.Data) > 0 {
var approvalIDs []int
var data map[int]int
var workUuidApprovalIDMap = make(map[int]string)
for _, v := range resp.Data {
if v.WorkStatus == 2 && v.ApprovalID != "" {
approvalID, _ := strconv.ParseUint(v.ApprovalID, 10, 64)
approvalIDs = append(approvalIDs, int(approvalID))
workUuidApprovalIDMap[int(approvalID)] = v.WorkUuid
}
}
if len(approvalIDs) > 0 {
data, err = castS.ApprovalDetail(approvalIDs)
if len(data) > 0 {
for approvalId, approvalStatus := range data {
var workAction cast.WorkActionENUM
if approvalStatus == 2 {
workAction = cast.WorkActionENUM_APPROVAL_PASS
} else {
workAction = cast.WorkActionENUM_APPROVAL_REJECT
}
_, _ = service.CastProvider.UpdateStatus(context.Background(), &cast.UpdateStatusReq{
WorkAction: workAction,
WorkUuid: workUuidApprovalIDMap[approvalId],
ApprovalID: fmt.Sprint(approvalId),
})
}
}
}
}
2025-06-11 08:11:16 +00:00
service.Success(ctx, resp)
return
}
2025-06-12 03:38:19 +00:00
func WorkDetail(ctx *gin.Context) {
var (
req *cast.WorkDetailReq
resp *cast.WorkDetailResp
)
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
2025-06-14 16:33:25 +00:00
newCtx := NewCtxWithUserInfo(ctx)
resp, err = service.CastProvider.WorkDetail(newCtx, req)
2025-06-12 03:38:19 +00:00
if err != nil {
service.Error(ctx, err)
return
}
service.Success(ctx, resp)
return
}
2025-06-15 12:46:05 +00:00
func CheckUserBundleBalance(userID int32) (err error) {
resp, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{UserId: userID})
if err != nil {
return
}
2025-06-16 03:37:05 +00:00
zap.L().Info("CheckUserBundleBalance", zap.Any("resp", resp))
2025-06-16 03:52:30 +00:00
fmt.Println("CheckUserBundleBalance resp", resp)
2025-06-15 12:46:05 +00:00
if resp.AccountNumber-resp.AccountConsumptionNumber <= 0 {
2025-06-16 03:37:05 +00:00
err = errors.New(e.ErrorBalanceInsufficient)
2025-06-15 12:46:05 +00:00
return
}
return
}
2025-06-19 03:04:37 +00:00
func RePublish(ctx *gin.Context) {
var (
req *cast.RePublishReq
resp *cast.RePublishResp
)
var err error
if err = ctx.ShouldBind(&req); err != nil {
service.Error(ctx, err)
return
}
newCtx := NewCtxWithUserInfo(ctx)
resp, err = service.CastProvider.RePublish(newCtx, req)
if err != nil {
service.Error(ctx, err)
return
}
artistID, _ := strconv.ParseUint(resp.ArtistUuid, 10, 64)
_, err = service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{
UserId: int32(artistID),
AccountConsumptionNumber: -1,
})
if err != nil {
service.Error(ctx, err)
//FIXME 进行回滚
return
}
service.Success(ctx, nil)
return
}
//修改余量我还需要调用吗
2025-06-15 12:46:05 +00:00
func UserBundleBalanceCost() {
service.BundleProvider.AddBundleBalance(context.Background(), &bundle.AddBundleBalanceReq{})
}