getlabelactionlogic.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package logic
  2. import (
  3. "app.yhyue.com/moapp/jybase/common"
  4. se "app.yhyue.com/moapp/jybase/encrypt"
  5. "context"
  6. "fmt"
  7. IC "jyBXBase/rpc/init"
  8. "strconv"
  9. "jyBXBase/rpc/bxbase"
  10. "jyBXBase/rpc/internal/svc"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type GetLabelActionLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewGetLabelActionLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetLabelActionLogic {
  19. return &GetLabelActionLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. // 获取标签
  26. func (l *GetLabelActionLogic) GetLabelAction(in *bxbase.GetLabelActionReq) (*bxbase.GetLabelActionRes, error) {
  27. //获取标签数量
  28. var resp bxbase.GetLabelActionRes
  29. labcount := map[string]int{}
  30. selectsql := fmt.Sprintf(`SELECT a.labelname,COUNT(1) count,a.id
  31. FROM %s a INNER JOIN %s b ON
  32. FIND_IN_SET(a.id,b.labelid)
  33. WHERE b.userid =?
  34. GROUP BY a.labelname,a.id`, "bdlabel", "bdcollection")
  35. if data := *IC.MainMysql.SelectBySql(selectsql, in.UserId); len(data) > 0 {
  36. for _, v := range data {
  37. labcount[strconv.FormatInt(v["id"].(int64), 10)] = common.IntAll(v["count"])
  38. }
  39. }
  40. data := []*bxbase.LabelByUser{}
  41. if labArr := IC.MainMysql.SelectBySql(fmt.Sprintf("select * from %s where userid = ?", "bdlabel"), in.UserId); labArr != nil && len(*labArr) > 0 {
  42. for _, v := range *labArr {
  43. l := bxbase.LabelByUser{}
  44. lid := strconv.FormatInt(v["id"].(int64), 10)
  45. l.Lid = se.SE.EncodeString(lid)
  46. l.Lname = common.ObjToString(v["labelname"])
  47. l.Lcount = int64(labcount[lid])
  48. data = append(data, &l)
  49. }
  50. }
  51. resp.Labels = data
  52. return &resp, nil
  53. }