fonchain-fiee/pkg/service/bundle/bundleBalance.go

234 lines
5.5 KiB
Go
Raw Normal View History

package bundle
import (
"context"
2025-06-15 04:18:50 +00:00
"errors"
"fonchain-fiee/api/bundle"
2025-06-14 05:52:51 +00:00
"fonchain-fiee/api/cast"
"fonchain-fiee/pkg/service"
2025-06-15 04:18:50 +00:00
bundleModel "fonchain-fiee/pkg/model/bundle"
"fonchain-fiee/pkg/model/login"
"github.com/gin-gonic/gin"
)
func BundleExtend(c *gin.Context) {
var req bundle.BundleExtendRequest
2025-06-13 06:00:29 +00:00
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
res, err := service.BundleProvider.BundleExtend(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
func BundleExtendRecordsList(c *gin.Context) {
var req bundle.BundleExtendRecordsListRequest
2025-06-13 06:00:29 +00:00
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
res, err := service.BundleProvider.BundleExtendRecordsList(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
2025-06-13 06:00:29 +00:00
func GetBundleBalance(c *gin.Context) {
2025-06-14 05:29:05 +00:00
var req bundle.GetBundleBalanceListReq
2025-06-13 06:00:29 +00:00
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
2025-06-14 05:29:05 +00:00
res, err := service.BundleProvider.GetBundleBalanceList(context.Background(), &req)
2025-06-13 06:00:29 +00:00
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
2025-06-14 05:29:05 +00:00
func GetUsedRecordList(c *gin.Context) {
var req bundle.GetUsedRecordListReq
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
res, err := service.BundleProvider.GetUsedRecordList(context.Background(), &req)
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}
2025-06-14 05:52:51 +00:00
func GetWorkDetail(c *gin.Context) {
var req cast.WorkDetailReq
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
2025-06-15 04:18:50 +00:00
// userInfo := login.GetUserInfoFromC(c)
// res, err := service.BundleProvider.GetBundleBalanceByUserId(context.TODO(), &bundle.GetBundleBalanceByUserIdReq{
// UserId: int32(userInfo.ID),
// })
// if err != nil {
// service.Error(c, err)
// return
// }
// if res.ExpiredTime <= time.Now().UnixMilli() {
// service.Success(c, gin.H{
// "status": 1,
// "message": "套餐过期请重新购买",
// })
// return
// }
workRes, err := service.CastProvider.WorkDetail(context.Background(), &req)
2025-06-14 09:13:30 +00:00
if err != nil {
service.Error(c, err)
return
}
2025-06-15 04:18:50 +00:00
// if len(workRes.Images) > 0 && res.ImageConsumptionNumber >= res.ImageNumber { // 图片用尽
// service.Success(c, gin.H{
// "status": 2,
// "message": "增值服务已用尽",
// })
// return
// } else {
// if res.VideoConsumptionNumber >= res.VideoNumber { // 视频用尽
// service.Success(c, gin.H{
// "status": 2,
// "message": "增值服务已用尽",
// })
// return
// }
// }
service.Success(c, workRes)
}
func GetToBeComfirmedWorks(c *gin.Context) {
var req bundle.ToBeComfirmedWorksReq
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
return
}
res, err := service.BundleProvider.ToBeComfirmedWorks(context.Background(), &req)
if err != nil {
service.Error(c, err)
2025-06-14 09:13:30 +00:00
return
}
2025-06-15 04:18:50 +00:00
service.Success(c, res)
}
2025-06-14 09:13:30 +00:00
2025-06-15 04:18:50 +00:00
func GetUserBalance(c *gin.Context) {
2025-06-15 05:58:07 +00:00
userInfo := login.GetUserInfoFromC(c)
res, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{
UserId: int32(userInfo.ID),
})
2025-06-14 09:13:30 +00:00
if err != nil {
service.Error(c, err)
return
}
2025-06-15 04:18:50 +00:00
service.Success(c, res)
}
2025-06-14 09:13:30 +00:00
2025-06-15 04:18:50 +00:00
func WorkConfirm(c *gin.Context) { // 确认作品并扣除余量
var req bundleModel.UserWorkConfirmReq
if err := c.ShouldBindJSON(&req); err != nil {
service.Error(c, err)
2025-06-14 09:13:30 +00:00
return
2025-06-15 04:18:50 +00:00
}
if req.ConfirmStatus == 2 { // 驳回完直接结束
res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 2,
})
if err != nil {
service.Error(c, err)
2025-06-14 09:13:30 +00:00
return
}
2025-06-15 04:18:50 +00:00
service.Success(c, res)
}
userInfo := login.GetUserInfoFromC(c)
balanceInfoRes, err := service.BundleProvider.GetBundleBalanceByUserId(context.Background(), &bundle.GetBundleBalanceByUserIdReq{
UserId: int32(userInfo.ID),
})
if err != nil {
service.Error(c, err)
return
2025-06-14 09:13:30 +00:00
}
2025-06-15 04:18:50 +00:00
wordInfoRes, err := service.CastProvider.WorkDetail(c, &cast.WorkDetailReq{
WorkUuid: req.WorkUuid,
})
if err != nil {
2025-06-14 09:13:30 +00:00
service.Error(c, err)
return
}
2025-06-15 07:00:45 +00:00
if wordInfoRes.WorkStatus != 4 {
service.Error(c, errors.New("作品不是待确认状态"))
return
}
2025-06-15 04:18:50 +00:00
var workCategory int // 1 图文 2 视频
if len(wordInfoRes.Images) == 0 { // 临时判断
workCategory = 2
} else {
workCategory = 1
}
var addBalanceReq bundle.AddBundleBalanceReq
2025-06-15 07:00:45 +00:00
addBalanceReq.UserId = int32(userInfo.ID)
2025-06-15 04:18:50 +00:00
switch workCategory {
case 1:
{
if balanceInfoRes.ImageConsumptionNumber >= balanceInfoRes.ImageNumber { // 图文余量不足
service.Error(c, errors.New("图文余量不足"))
return
}
addBalanceReq.ImageConsumptionNumber = 1
}
case 2:
{
if balanceInfoRes.VideoConsumptionNumber >= balanceInfoRes.VideoNumber { // 视频余量不足
service.Error(c, errors.New("视频余量不足"))
return
}
addBalanceReq.VideoConsumptionNumber = 1
}
default:
service.Error(c, errors.New("不支持的类型"))
return
}
2025-06-15 07:12:42 +00:00
_, err = service.BundleProvider.AddBundleBalance(c, &addBalanceReq)
if err != nil {
service.Error(c, err)
return
}
res, err := service.CastProvider.UpdateStatus(c, &cast.UpdateStatusReq{
WorkAction: cast.WorkActionENUM_CONFIRM,
WorkUuid: req.WorkUuid,
ConfirmRemark: req.ConfirmRemark,
ConfirmStatus: 1,
})
2025-06-14 05:52:51 +00:00
if err != nil {
service.Error(c, err)
return
}
service.Success(c, res)
}