helpUserOrderHandler.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package controller
  2. import (
  3. . "app.yhyue.com/moapp/jybase/api"
  4. "app.yhyue.com/moapp/jybase/encrypt"
  5. "app.yhyue.com/moapp/jybase/mongodb"
  6. "encoding/json"
  7. "fmt"
  8. "github.com/gogf/gf/v2/frame/g"
  9. "github.com/gogf/gf/v2/net/ghttp"
  10. "github.com/gogf/gf/v2/util/gconv"
  11. "github.com/pkg/errors"
  12. "jyOrderManager/internal/jyutil"
  13. "time"
  14. )
  15. func GetHelpUserCreateOrderParamHandler(r *ghttp.Request) {
  16. rData, err := func() (interface{}, error) {
  17. rj, err := r.GetJson()
  18. if err != nil {
  19. return nil, errors.Wrap(err, "请求参数格式异常")
  20. }
  21. var (
  22. phone = rj.Get("phone").String()
  23. cycleUnit = rj.Get("cycleUnit").String() //1:天、2:月
  24. cycleCount = rj.Get("cycleCount").String()
  25. ctx = r.Context()
  26. token string
  27. uMsg = jyutil.GetUserMsgFromCtx(ctx)
  28. )
  29. if uMsg == nil {
  30. return nil, errors.New("登陆身份异常")
  31. }
  32. uId, eMsg := func() (userId, errMsg string) {
  33. if len(phone) != 11 {
  34. return "", "手机号异常"
  35. }
  36. //查询当前销售是否有权限操作改用户
  37. if g.Cfg("global").MustGet(ctx, "helpUserOrder.open", true).Bool() { //测试环境不校验
  38. if err := jyutil.SellerCheck(ctx, uMsg.PositionId, phone); err != nil {
  39. g.Log().Info(ctx, "代用户下单异常:%s %v\n", phone, err)
  40. return "", "不满足代用户下单条件,不支持下单"
  41. }
  42. }
  43. uData, _, _, err := jyutil.GetCreateUserData(phone, "", false)
  44. if err != nil {
  45. return "", "获取用户异常"
  46. }
  47. return mongodb.BsonIdToSId(uData["_id"]), ""
  48. }()
  49. deptId, deptName, name, err := jyutil.JyDepartmentManager.GetDeptInfoByEntId(ctx, gconv.Int(uMsg.EntUserId))
  50. if err != nil {
  51. eMsg = err.Error()
  52. }
  53. if uId != "" {
  54. token = GetSellerToken(uId, name, fmt.Sprint(uMsg.EntUserId), map[string]interface{}{
  55. "tt": cycleUnit,
  56. "tn": cycleCount,
  57. "ts": deptName,
  58. "ti": deptId,
  59. })
  60. }
  61. return map[string]interface{}{
  62. "tip": eMsg,
  63. "token": token,
  64. }, nil
  65. }()
  66. if err != nil {
  67. g.Log().Errorf(r.Context(), "待用户下单获取下单参数异常 %v", err)
  68. }
  69. r.Response.WriteJson(NewResult(rData, err))
  70. }
  71. func GetSellerToken(uId, sName string, sid string, desc map[string]interface{}) (token string) {
  72. bytes, _ := json.Marshal(desc)
  73. return encrypt.SE.Encode2Hex(fmt.Sprintf("uid=%s&sName=%s&sid=%s&desc=%s&t=%d", uId, sName, sid, string(bytes), time.Now().Unix()))
  74. }