searchlimitlogic.go 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package logic
  2. import (
  3. MC "app.yhyue.com/moapp/jybase/common"
  4. IC "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/init"
  5. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/util"
  6. "context"
  7. "fmt"
  8. "strings"
  9. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/internal/svc"
  10. "bp.jydev.jianyu360.cn/BaseService/jyMicroservices/jyBXCore/rpc/type/bxcore"
  11. "github.com/zeromicro/go-zero/core/logx"
  12. )
  13. type SearchLimitLogic struct {
  14. ctx context.Context
  15. svcCtx *svc.ServiceContext
  16. logx.Logger
  17. }
  18. func NewSearchLimitLogic(ctx context.Context, svcCtx *svc.ServiceContext) *SearchLimitLogic {
  19. return &SearchLimitLogic{
  20. ctx: ctx,
  21. svcCtx: svcCtx,
  22. Logger: logx.WithContext(ctx),
  23. }
  24. }
  25. // SearchLimit 标讯搜索限制内容
  26. func (l *SearchLimitLogic) SearchLimit(in *bxcore.SearchLimitReq) (*bxcore.SearchLimitResp, error) {
  27. if in.UserId == "" || !util.IsCanLogin(in.UserId) {
  28. return &bxcore.SearchLimitResp{
  29. Data: fmt.Sprintf("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">需要登录!"),
  30. }, nil
  31. }
  32. status := MC.If(IC.C.LimitSearchText.Flag, "打开", "关闭").(string)
  33. if in.SearchType == "update" {
  34. var isInit bool
  35. if in.Flag == -2 { //重置
  36. status = "重置"
  37. isInit = true
  38. } else if in.Flag == -1 && IC.C.LimitSearchText.Flag { //关闭
  39. status = "关闭"
  40. IC.C.LimitSearchText.Flag = false
  41. util.LimitSearchClear()
  42. } else if in.Flag == 1 && !IC.C.LimitSearchText.Flag { //打开
  43. status = "打开"
  44. IC.C.LimitSearchText.Flag = true
  45. isInit = true
  46. } else {
  47. if IC.C.LimitSearchText.Flag {
  48. status = "打开"
  49. } else {
  50. status = "关闭"
  51. }
  52. }
  53. if IC.C.LimitSearchText.Flag {
  54. //并发总量
  55. if (in.Count > 0 || in.Count == -1 || in.Count == -2) && int(in.Count) != IC.C.LimitSearchText.Count {
  56. IC.C.LimitSearchText.Count = int(in.Count)
  57. isInit = true
  58. }
  59. //验证字段
  60. if in.LimitItems != "" {
  61. IC.C.LimitSearchText.LimitItems = strings.Split(in.LimitItems, ",")
  62. isInit = true
  63. }
  64. //两次请求间隔时间
  65. if in.TimeOut > 0 || in.TimeOut == -1 {
  66. IC.C.LimitSearchText.TimeOut = int(in.TimeOut)
  67. }
  68. //免费用户 单独通道占比
  69. if in.Percentage > 0 {
  70. IC.C.LimitSearchText.Percentage = int(in.Percentage)
  71. }
  72. //未登录用户 单独通道占比
  73. if in.NoLogin > 0 {
  74. IC.C.LimitSearchText.NoLogin = int(in.NoLogin)
  75. }
  76. //付费用户 保留通道数
  77. if in.ForPayer > 0 {
  78. IC.C.LimitSearchText.ForPayer = int(in.ForPayer)
  79. }
  80. if isInit {
  81. util.LimitSearchInit()
  82. }
  83. }
  84. }
  85. return &bxcore.SearchLimitResp{
  86. Data: fmt.Sprint("<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, user-scalable=no\">" + fmt.Sprintf(IC.C.LimitSearchText.Msg, status, IC.C.LimitSearchText.Count, IC.C.LimitSearchText.TimeOut, IC.C.LimitSearchText.Percentage, IC.C.LimitSearchText.NoLogin, IC.C.LimitSearchText.ForPayer, strings.Join(IC.C.LimitSearchText.LimitItems, ","))),
  87. }, nil
  88. }