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

76 lines
1.5 KiB
Go

package service
import (
"joybuywork/internal/consts/ckey"
"joybuywork/internal/repository/cache"
"joybuywork/internal/service/containers"
"joybuywork/internal/utils/logic"
pb "joybuywork/proto/go_proto/w_coin"
)
type WCoin struct {
Service
}
// Save 积分配置保存
func (s *WCoin) Save(req *pb.SaveReq, res *pb.SaveRes) (err error) {
defer s.checkErr()
*res = pb.SaveRes{}
container := new(containers.CoinSave)
{
container.Init(s.ctx, logic.WithTran(), logic.WithOnce(ckey.ProjectCoinCreateOnce(req.GetProjectHashId())))
container.Req = req
container.Res = res
}
return container.Run()
}
// Show 积分配置展示
func (s *WCoin) Show(req *pb.ShowReq, res *pb.ShowRes) (err error) {
defer s.checkErr()
project, err := s.ProjectErrNil(req.GetProjectHashId(), req.GetProjectId())
if err != nil {
return
}
coin, err := cache.NewTCoin(s.ctx).FindByProjectId(project.ID)
if err != nil {
err = s.BE().CacheError(err)
return
}
if coin == nil {
return
}
m := s.GetDao().TCoinLang
langs, err := m.WithContext(s.ctx).Where(m.TCoinID.Eq(coin.ID)).Find()
if err != nil {
err = s.BE().MysqlError(err)
return
}
var list = make([]*pb.ShowRes_Lang, 0, len(langs))
for _, l := range langs {
list = append(list, &pb.ShowRes_Lang{
LangMark: l.LangMark,
Title: l.Title,
ImgUrl: l.ImgURL,
Rule: l.Rule,
IsDefault: int32(l.IsDefault),
})
}
*res = pb.ShowRes{
Title: coin.Title,
OpenPush: int32(coin.OpenPush),
ExpSelect: coin.GetExpSelect(),
Langs: list,
}
return
}