You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

132 lines
4.0 KiB

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
}