bind_mobile_logic.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package user
  2. import (
  3. "context"
  4. "git.i2edu.net/i2/i2-bill-api/internal/svc"
  5. "git.i2edu.net/i2/i2-bill-api/internal/types"
  6. "git.i2edu.net/i2/go-zero/core/logx"
  7. )
  8. type BindMobileLogic struct {
  9. logx.Logger
  10. ctx context.Context
  11. svcCtx *svc.ServiceContext
  12. UserId int64
  13. SessionKey string
  14. }
  15. func NewBindMobileLogic(ctx context.Context, svcCtx *svc.ServiceContext) BindMobileLogic {
  16. return BindMobileLogic{
  17. Logger: logx.WithContext(ctx),
  18. ctx: ctx,
  19. svcCtx: svcCtx,
  20. }
  21. }
  22. func (l *BindMobileLogic) BindMobile(req types.BindMobileRequest) (*types.Response, error) {
  23. mobile, err := l.svcCtx.Wechat.DecryptMobile(l.SessionKey, req.EncryptedData, req.Iv)
  24. if err != nil {
  25. logx.Error(err)
  26. return nil, err
  27. }
  28. _, err = l.svcCtx.SqlConn.Exec(`update i2bill_user set mobile = ? where id = ?`, mobile, l.UserId)
  29. if err != nil {
  30. logx.Error(err)
  31. return nil, err
  32. }
  33. resp := make(map[string]interface{})
  34. resp["id"] = l.UserId
  35. resp["mobile"] = mobile
  36. return &types.Response{
  37. 200, "", resp,
  38. }, nil
  39. }