refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
58 lines
1.6 KiB
Go
58 lines
1.6 KiB
Go
package activity
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"bindbox-game/internal/repository/mysql/model"
|
|
)
|
|
|
|
// CreateActivity 创建活动
|
|
// 参数: in 活动创建输入
|
|
// 返回: 新建的活动记录与错误
|
|
func (s *service) CreateActivity(ctx context.Context, in CreateActivityInput) (*model.Activities, error) {
|
|
item := &model.Activities{
|
|
Name: in.Name,
|
|
Banner: in.Banner,
|
|
Image: in.Image,
|
|
GameplayIntro: sanitizeHTML(in.GameplayIntro),
|
|
ActivityCategoryID: in.ActivityCategoryID,
|
|
Status: in.Status,
|
|
PriceDraw: in.PriceDraw,
|
|
IsBoss: in.IsBoss,
|
|
AllowItemCards: in.AllowItemCards != 0,
|
|
AllowCoupons: in.AllowCoupons != 0,
|
|
}
|
|
|
|
if in.StartTime != nil {
|
|
item.StartTime = *in.StartTime
|
|
}
|
|
if in.EndTime != nil {
|
|
item.EndTime = *in.EndTime
|
|
}
|
|
|
|
do := s.writeDB.Activities.WithContext(ctx)
|
|
if item.Image == "" {
|
|
do = do.Omit(s.writeDB.Activities.Image)
|
|
}
|
|
if item.Banner == "" {
|
|
do = do.Omit(s.writeDB.Activities.Banner)
|
|
}
|
|
if strings.TrimSpace(item.GameplayIntro) == "" {
|
|
do = do.Omit(s.writeDB.Activities.GameplayIntro)
|
|
}
|
|
if in.StartTime == nil {
|
|
do = do.Omit(s.writeDB.Activities.StartTime)
|
|
}
|
|
if in.EndTime == nil {
|
|
do = do.Omit(s.writeDB.Activities.EndTime)
|
|
}
|
|
// 避免零日期写入新增的时间列
|
|
do = do.Omit(s.writeDB.Activities.ScheduledTime, s.writeDB.Activities.LastSettledAt)
|
|
err := do.Create(item)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return item, nil
|
|
}
|