123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package service
- import (
- "context"
- "fmt"
- "go-common/app/admin/main/apm/model/need"
- "go-common/library/ecode"
- "go-common/library/log"
- )
- //NeedInfoAdd is
- func (s *Service) NeedInfoAdd(c context.Context, req *need.NAddReq, username string) (err error) {
- if err = s.dao.NeedInfoAdd(req, username); err != nil {
- return
- }
- return
- }
- //NeedInfoList is
- func (s *Service) NeedInfoList(c context.Context, arg *need.NListReq, username string) (res []*need.NInfo, count int64, err error) {
- var (
- like *need.UserLikes
- )
- if count, err = s.dao.NeedInfoCount(arg); err != nil {
- return
- }
- if count == 0 {
- return
- }
- if res, err = s.dao.NeedInfoList(arg); err != nil {
- return
- }
- for _, r := range res {
- lq := &need.Likereq{
- ReqID: r.ID,
- }
- if like, err = s.dao.GetVoteInfo(lq, username); err == nil {
- r.LikeState = like.LikeType
- }
- }
- err = nil
- return
- }
- //NeedInfoEdit is
- func (s *Service) NeedInfoEdit(c context.Context, arg *need.NEditReq, username string) (err error) {
- var (
- ni *need.NInfo
- )
- if ni, err = s.dao.GetNeedInfo(arg.ID); err != nil {
- err = ecode.NeedInfoErr
- return
- }
- if ni.Reporter != username {
- err = ecode.AccessDenied
- return
- }
- if ni.Status != 5 && ni.Status != 1 {
- err = ecode.NeedEditErr
- return
- }
- if err = s.dao.NeedInfoEdit(arg); err != nil {
- return
- }
- return
- }
- //NeedInfoVerify is
- func (s *Service) NeedInfoVerify(c context.Context, arg *need.NVerifyReq) (ni *need.NInfo, err error) {
- if ni, err = s.dao.GetNeedInfo(arg.ID); err != nil {
- err = ecode.NeedInfoErr
- return
- }
- if ni.Status != 1 {
- err = ecode.NeedVerifyErr
- return
- }
- if err = s.dao.NeedVerify(arg); err != nil {
- return
- }
- return
- }
- //NeedInfoVote is
- func (s *Service) NeedInfoVote(c context.Context, arg *need.Likereq, username string) (err error) {
- var (
- nu *need.UserLikes
- like, dislike int
- )
- if _, err = s.dao.GetNeedInfo(arg.ReqID); err != nil {
- err = ecode.NeedInfoErr
- return
- }
- if nu, err = s.dao.GetVoteInfo(arg, username); err != nil {
- if err = s.dao.AddVoteInfo(arg, username); err != nil {
- return
- }
- switch arg.LikeType {
- case need.TypeLike:
- like = 1
- dislike = 0
- case need.TypeDislike:
- like = 0
- dislike = 1
- }
- } else {
- if err = s.dao.UpdateVoteInfo(arg, username); err != nil {
- log.Error("arg.liketype:%d,db.like%+v,like:%d,dislike:%d", arg.LikeType, nu, like, dislike)
- return
- }
- if nu.LikeType != arg.LikeType {
- switch {
- case arg.LikeType == need.TypeCancel && nu.LikeType == need.TypeLike:
- like = -1
- case arg.LikeType == need.TypeCancel && nu.LikeType == need.TypeDislike:
- dislike = -1
- case arg.LikeType == need.TypeLike && nu.LikeType == need.TypeCancel:
- like = 1
- case arg.LikeType == need.TypeDislike && nu.LikeType == need.TypeCancel:
- dislike = 1
- case arg.LikeType == need.TypeLike && nu.LikeType == need.TypeDislike:
- like = 1
- dislike = -1
- case arg.LikeType == need.TypeDislike && nu.LikeType == need.TypeLike:
- like = -1
- dislike = 1
- }
- } else {
- return
- }
- }
- if err = s.dao.LikeCountsStats(arg, like, dislike); err != nil {
- if nu != nil {
- log.Error("arg.liketype:%d,db.like:%+v,like:%d,dislike:%d", arg.LikeType, nu, like, dislike)
- }
- return
- }
- return
- }
- //NeedVoteList is show votelist
- func (s *Service) NeedVoteList(c context.Context, arg *need.Likereq) (res []*need.UserLikes, count int64, err error) {
- if count, err = s.dao.VoteInfoCounts(arg); err != nil {
- return
- }
- if count == 0 {
- return
- }
- if res, err = s.dao.VoteInfoList(arg); err != nil {
- return
- }
- return
- }
- //SendWeMessage send wechat message
- func (s *Service) SendWeMessage(c context.Context, title, task, result, sender string, receiver []string) (err error) {
- var (
- msg = "[sven需求与建议来信 📨 ]\n"
- users []string
- )
- switch task {
- case need.VerifyType[need.NeedApply]:
- msg += fmt.Sprintf("%s童鞋认真地提了一份建议(%s),快去看看吧~\n%s\n", sender, title, "http://sven.bilibili.co/#/suggestion/list")
- users = append(users, receiver...)
- case need.VerifyType[need.NeedVerify]:
- msg += fmt.Sprintf("%s童鞋的建议(%s)反馈我们已经收到啦,先发一朵小红花感谢支持!🌺 \n", sender, title)
- users = append(users, sender)
- case need.VerifyType[need.NeedReview]:
- msg += fmt.Sprintf("%s童鞋的建议(%s)审核结果是%s, %s", receiver, title, result, "%s")
- users = append(users, receiver...)
- }
- switch result {
- case need.VerifyType[need.VerifyAccept]:
- msg = fmt.Sprintf(msg, "恭喜恭喜,喝杯快乐水开心一下~ 🍻 ")
- case need.VerifyType[need.VerifyReject]:
- msg = fmt.Sprintf(msg, "不要灰心,可能是需求描述或使用姿势不够准确,还请多多支持,欢迎再来!🙇 🙆 ")
- case need.VerifyType[need.VerifyObserved]:
- msg = fmt.Sprintf(msg, "您的意见我们先保留啦,还请多多支持,欢迎再来补充!🙇 🙆 ")
- }
- if err = s.dao.SendWechatToUsers(c, users, msg); err != nil {
- log.Error("apmSvc.SendWechatMessage error(%v)", err)
- return
- }
- return
- }
|