package serviceGame import ( "context" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "tyj_admin/api/v1/game" "tyj_admin/internal/dao" "tyj_admin/internal/model/do" "tyj_admin/internal/model/entity" "tyj_admin/library/liberr" ) type IGameActivity interface { GetGameActivity(ctx context.Context, req *game.GetActivityConfigsReq) (res *game.GetActivityConfigsRes, err error) AddGameActivity(ctx context.Context, req *game.AddActivityConfigReq) (res *game.AddActivityConfigRes, err error) DelGameActivity(ctx context.Context, req *game.DelActivityConfigReq) (res *game.DelActivityConfigRes, err error) GetAllGameActivity(ctx context.Context, req *game.GetAllGameActivityReq) (res *game.GetAllGameActivityRes, err error) } type gameActivityImpl struct { } var gameActivityService = gameActivityImpl{} func GameActivity() IGameActivity { return &gameActivityService } func (c *gameActivityImpl) GetGameActivity(ctx context.Context, req *game.GetActivityConfigsReq) (res *game.GetActivityConfigsRes, err error) { g.Try(ctx, func(ctx context.Context) { res = new(game.GetActivityConfigsRes) model := dao.GameActivityTime.Ctx(ctx) res.Total, err = model.Count() liberr.ErrIsNil(ctx, err, "mysql err") model = model.OrderAsc("config_id").Page(req.PageNum, req.PageSize) if req.ServerId != 0 { model = model.Where("server_id=?", req.ServerId) } err = model.Scan(&res.List) }) return } func (c *gameActivityImpl) AddGameActivity(ctx context.Context, req *game.AddActivityConfigReq) (res *game.AddActivityConfigRes, err error) { res = new(game.AddActivityConfigRes) err = g.Try(ctx, func(ctx context.Context) { server := []entity.GameActivityTime{} model := dao.GameActivityTime.Ctx(ctx) model.WherePri(req.Id).Scan(&server) if len(server) > 0 { data := g.Map{ dao.GameActivityTime.Columns().Id: req.Id, } if req.CloseTime != "" { data[dao.GameActivityTime.Columns().CloseTime] = req.CloseTime } if req.EndTime != "" { data[dao.GameActivityTime.Columns().EndTime] = req.EndTime } if req.PreviewTime != "" { data[dao.GameActivityTime.Columns().PreviewTime] = req.PreviewTime } if req.StartTime != "" { data[dao.GameActivityTime.Columns().StartTime] = req.StartTime } if req.Remark != "" { data[dao.GameActivityTime.Columns().Remark] = req.Remark } if req.ConfigId != 0 { data[dao.GameActivityTime.Columns().ConfigId] = req.ConfigId } if req.ServerId != 0 { data[dao.GameActivityTime.Columns().ServerId] = req.ServerId } _, err = model.WherePri(req.Id).Update(data) } else { _, err = model.Insert(do.GameActivityTime{ ServerId: req.ServerId, StartTime: gtime.NewFromStr(req.StartTime), PreviewTime: gtime.NewFromStr(req.PreviewTime), EndTime: gtime.NewFromStr(req.EndTime), CloseTime: gtime.NewFromStr(req.CloseTime), ConfigId: req.ConfigId, Remark: req.Remark, }) } }) return } func (c *gameActivityImpl) DelGameActivity(ctx context.Context, req *game.DelActivityConfigReq) (res *game.DelActivityConfigRes, err error) { err = g.Try(ctx, func(ctx context.Context) { if req.Id == 0 { liberr.ErrIsNil(ctx, err, "错误的id") } _, e := dao.GameActivityTime.Ctx(ctx).Where("id=", req.Id).Delete() if e != nil { liberr.ErrIsNil(ctx, e, "删除失败") } }) return } func (c *gameActivityImpl) GetAllGameActivity(ctx context.Context, req *game.GetAllGameActivityReq) (res *game.GetAllGameActivityRes, err error) { g.Try(ctx, func(ctx context.Context) { res = new(game.GetAllGameActivityRes) model := dao.GameActivityTime.Ctx(ctx) serverConfigs := []entity.GameActivityTime{} err = model.Where("server_id=?", req.ServerId).Scan(&serverConfigs) if err != nil { return } err = model.Where("server_id=?", 0).Scan(&res.List) if err != nil { return } configs := map[int]entity.GameActivityTime{} for _, v := range serverConfigs { configs[v.ConfigId] = v } for k, v := range res.List { if configs[v.ConfigId].Id > 0 { res.List[k] = configs[v.ConfigId] } } }) return }