bind_mobile_logic.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. tx := l.svcCtx.DB.NewSession()
  30. tx.Begin()
  31. _, err = tx.Exec("update i2bill_user set mobile = ? where id = ?", mobile, l.UserId)
  32. if err != nil {
  33. tx.Rollback()
  34. logx.Error(err)
  35. return nil, err
  36. }
  37. tx.Exec("update i2bill_mkt_part_time_user set ipone_number = ? where user_id = ?", mobile, l.UserId)
  38. if err != nil {
  39. tx.Rollback()
  40. logx.Error(err)
  41. return nil, err
  42. }
  43. tx.Commit()
  44. resp := make(map[string]interface{})
  45. resp["id"] = l.UserId
  46. resp["mobile"] = mobile
  47. return &types.Response{
  48. 200, "", resp,
  49. }, nil
  50. }