update_api_wx_card_user_logic.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package wxcarduser
  2. import (
  3. "context"
  4. "github.com/suyuan32/simple-admin-common/msg/errormsg"
  5. "github.com/zeromicro/go-zero/core/errorx"
  6. "wechat-api/ent"
  7. "wechat-api/ent/wxcarduser"
  8. "wechat-api/hook/wechat"
  9. "wechat-api/internal/svc"
  10. "wechat-api/internal/types"
  11. "wechat-api/internal/utils/dberrorhandler"
  12. "github.com/zeromicro/go-zero/core/logx"
  13. )
  14. type UpdateApiWxCardUserLogic struct {
  15. logx.Logger
  16. ctx context.Context
  17. svcCtx *svc.ServiceContext
  18. }
  19. func NewUpdateApiWxCardUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateApiWxCardUserLogic {
  20. return &UpdateApiWxCardUserLogic{
  21. Logger: logx.WithContext(ctx),
  22. ctx: ctx,
  23. svcCtx: svcCtx}
  24. }
  25. func (l *UpdateApiWxCardUserLogic) UpdateApiWxCardUser(req *types.WxCardUserInfo) (*types.BaseMsgResp, error) {
  26. userId := l.ctx.Value("userId").(uint64)
  27. var nickname, avatar string
  28. if req.Nickname != nil && *req.Nickname != "" {
  29. nickname = *req.Nickname
  30. }
  31. if req.Avatar != nil && *req.Avatar != "" {
  32. avatar = *req.Avatar
  33. }
  34. if nickname == "" && avatar == "" {
  35. return nil, errorx.NewInvalidArgumentError("参数错误")
  36. }
  37. wxCardUser, err := l.svcCtx.DB.WxCardUser.Query().Where(wxcarduser.ID(userId)).Only(l.ctx)
  38. if err != nil && !ent.IsNotFound(err) {
  39. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  40. }
  41. // 这里检查昵称的是否含有敏感词
  42. AppId := l.svcCtx.Config.Miniprogram.Appid
  43. Secret := l.svcCtx.Config.Miniprogram.Secret
  44. app, err := wechat.NewClient(AppId, Secret)
  45. if err != nil {
  46. return nil, errorx.NewApiInternalError("init wechat miniprogram failed")
  47. }
  48. result, err := app.Security.MsgSecCheck(
  49. wxCardUser.OpenID,
  50. 1,
  51. 2,
  52. nickname,
  53. nickname,
  54. "",
  55. "",
  56. )
  57. if err != nil {
  58. return nil, errorx.NewInternalError("网络错误,请稍后重拾")
  59. }
  60. if result.Result.Label != 100 {
  61. return nil, errorx.NewInvalidArgumentError("昵称内容不合法,请修改后重试")
  62. }
  63. if wxCardUser != nil {
  64. query := l.svcCtx.DB.WxCardUser.UpdateOneID(userId)
  65. if nickname != "" {
  66. query = query.SetNickname(nickname)
  67. }
  68. if avatar != "" {
  69. query = query.SetAvatar(avatar)
  70. }
  71. _, err = query.Save(l.ctx)
  72. if err != nil {
  73. return nil, dberrorhandler.DefaultEntError(l.Logger, err, req)
  74. }
  75. }
  76. return &types.BaseMsgResp{
  77. Code: 0,
  78. Msg: errormsg.Success,
  79. }, nil
  80. }