refactor(utils): 修复密码哈希比较逻辑错误 feat(user): 新增按状态筛选优惠券接口 docs: 添加虚拟发货与任务中心相关文档 fix(wechat): 修正Code2Session上下文传递问题 test: 补充订单折扣与积分转换测试用例 build: 更新配置文件与构建脚本 style: 清理多余的空行与注释
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package app
|
|
|
|
import (
|
|
"encoding/json"
|
|
"bindbox-game/internal/pkg/core"
|
|
"bindbox-game/internal/pkg/logger"
|
|
"bindbox-game/internal/repository/mysql"
|
|
"bindbox-game/internal/repository/mysql/dao"
|
|
cfgsvc "bindbox-game/internal/service/sysconfig"
|
|
)
|
|
|
|
type noticeHandler struct {
|
|
logger logger.CustomLogger
|
|
readDB *dao.Query
|
|
cfg cfgsvc.Service
|
|
}
|
|
|
|
func NewNotice(l logger.CustomLogger, db mysql.Repo) *noticeHandler {
|
|
return ¬iceHandler{logger: l, readDB: dao.Use(db.GetDbR()), cfg: cfgsvc.New(l, db)}
|
|
}
|
|
|
|
type appNoticeItem struct {
|
|
Content string `json:"content"`
|
|
}
|
|
|
|
type listAppNoticesResponse struct {
|
|
List []appNoticeItem `json:"list"`
|
|
}
|
|
|
|
func (h *noticeHandler) ListNoticesForApp() core.HandlerFunc {
|
|
return func(ctx core.Context) {
|
|
rsp := new(listAppNoticesResponse)
|
|
conf, err := h.cfg.GetByKey(ctx.RequestContext(), "app_notice")
|
|
if err != nil {
|
|
rsp.List = []appNoticeItem{}
|
|
ctx.Payload(rsp)
|
|
return
|
|
}
|
|
val := conf.ConfigValue
|
|
var arr []string
|
|
if err := json.Unmarshal([]byte(val), &arr); err == nil {
|
|
items := make([]appNoticeItem, 0, len(arr))
|
|
for _, s := range arr { items = append(items, appNoticeItem{Content: s}) }
|
|
rsp.List = items
|
|
ctx.Payload(rsp)
|
|
return
|
|
}
|
|
if val == "" {
|
|
rsp.List = []appNoticeItem{}
|
|
ctx.Payload(rsp)
|
|
return
|
|
}
|
|
rsp.List = []appNoticeItem{{Content: val}}
|
|
ctx.Payload(rsp)
|
|
}
|
|
}
|