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 }