userBuy.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package service
  2. import (
  3. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/entity"
  4. IC "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/init"
  5. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/type/partnerlib"
  6. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/util"
  7. "app.yhyue.com/moapp/jy_docs/rpc/partnerlib/warn"
  8. "app.yhyue.com/moapp/jy_docs/services/model"
  9. "app.yhyue.com/moapp/jy_docs/services/partner"
  10. "app.yhyue.com/moapp/jybase/date"
  11. "encoding/json"
  12. "fmt"
  13. )
  14. type BRes struct {
  15. Msg string
  16. Code int64
  17. OrderNo string
  18. }
  19. func UBHandle(in *partnerlib.UserBuyVipRequest) (res *partnerlib.UBVRes, err error) {
  20. res = new(partnerlib.UBVRes)
  21. var (
  22. b []byte
  23. docInfo = partner.DocsFindOne(in.DocId)
  24. userId = in.PositionId
  25. )
  26. //测试账号
  27. if IC.I.Docin.TestAccount > 0 {
  28. userId = IC.I.Docin.TestAccount
  29. }
  30. if docInfo.Id != "" {
  31. orderCode := util.GetOrderCode()
  32. h := NewHH(IC.I.Docin.Name, IC.I.Docin.Host, IC.I.Docin.BuyRecord.Name, IC.I.Docin.BuyRecord.Pathname, IC.I.Docin.BuyRecord.Method, map[string]interface{}{
  33. "orderNo": orderCode,
  34. "productId": in.DocId,
  35. "userId": userId,
  36. "price": docInfo.Price,
  37. "priceVip": docInfo.PriceVip,
  38. "type": in.Type,
  39. "orderTime": date.NowFormat(entity.DateFullLayout),
  40. })
  41. b, err, _ = h.HttpFunc()
  42. go h.SaveDocinLogger(b, err, "req")
  43. if err == nil {
  44. //豆丁同步数据到mongo
  45. go h.SaveDocinLogger(b, err, "res")
  46. bRes := &BRes{}
  47. if err = json.Unmarshal(b, &bRes); err == nil {
  48. if bRes.Code == 0 {
  49. //更新文档购买记录
  50. if err = partner.InsertBuyDocOrder(&model.DocinUserOrder{
  51. PositionId: in.PositionId,
  52. MgoUserId: in.MgoUserId,
  53. Phone: in.Phone,
  54. DocId: docInfo.Id,
  55. OrderCode: orderCode,
  56. Price: docInfo.Price,
  57. PriceVip: docInfo.PriceVip,
  58. PurchaseType: int(in.Type), //购买类型:1 币买文档,2 券买文档,3 月大会员,4 季大会员,5 年大会员
  59. State: 1, //合作商:1:豆丁
  60. CreateTime: date.NowFormat(date.Date_Full_Layout),
  61. }); err == nil {
  62. warn.SendMsgByWXURL(fmt.Sprintf("%s文档名称: %s,文档id:%s,购买订单编号:%s,请求信息:%v", entity.PartnerName, docInfo.DocName, docInfo.Id, orderCode, in))
  63. }
  64. res.OrderNo = bRes.OrderNo
  65. res.Msg = bRes.Msg
  66. res.Code = bRes.Code
  67. return
  68. }
  69. err = fmt.Errorf(entity.Res[res.Msg])
  70. }
  71. }
  72. } else {
  73. err = fmt.Errorf("参数异常")
  74. }
  75. res.Msg = err.Error()
  76. res.Code = -1
  77. return
  78. }