智慧食堂
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

194 рядки
6.2 KiB

  1. package hdl
  2. import (
  3. "applet/app/admin/lib/validate"
  4. "applet/app/admin/md"
  5. svc "applet/app/admin/svc/order"
  6. md2 "applet/app/customer/md"
  7. svc2 "applet/app/customer/svc"
  8. "applet/app/db"
  9. "applet/app/db/model"
  10. "applet/app/e"
  11. "applet/app/enum"
  12. svc3 "applet/app/svc"
  13. "applet/app/utils"
  14. "fmt"
  15. "github.com/gin-gonic/gin"
  16. "github.com/wechatpay-apiv3/wechatpay-go/core"
  17. "github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
  18. "math"
  19. "time"
  20. )
  21. // Demo 测试
  22. func Demo(c *gin.Context) {
  23. var m []model.CentralKitchenForSchoolUserWithDay
  24. eg := db.Db
  25. if err1 := eg.Where("state = 3").Asc("id").Find(&m); err1 != nil {
  26. e.OutErr(c, e.ERR, err1.Error())
  27. return
  28. }
  29. now := time.Now()
  30. var records []int
  31. for _, v := range m {
  32. mm := new(model.CentralKitchenForSchoolUserRefundDay)
  33. has, err := db.Db.Where("records_id =? and state = 1", v.Id).Get(mm)
  34. if err != nil {
  35. fmt.Println(err)
  36. return
  37. }
  38. if has == false {
  39. centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{}
  40. centralKitchenForSchoolUserRefundDayDb.Set(0)
  41. _, err = centralKitchenForSchoolUserRefundDayDb.CentralKitchenForSchoolUserRefundDayInsert(&model.CentralKitchenForSchoolUserRefundDay{
  42. OutTradeNo: v.OrdNo,
  43. OutRequestNo: "",
  44. Uid: v.Uid,
  45. IdentityId: v.IdentityId,
  46. RecordsId: v.Id,
  47. State: enum.CentralKitchenForSchoolUserRefundDayStateForAuditing,
  48. Amount: v.Amount,
  49. Memo: "fill",
  50. CreateAt: now.Format("2006-01-02 15:04:05"),
  51. UpdateAt: now.Format("2006-01-02 15:04:05"),
  52. })
  53. records = append(records, v.Id)
  54. }
  55. }
  56. e.OutSuc(c, records, nil)
  57. return
  58. var req md.CentralKitchenForSchoolOrderRefundAuditReq
  59. err := c.ShouldBindJSON(&req)
  60. if err != nil {
  61. err = validate.HandleValidateErr(err)
  62. err1 := err.(e.E)
  63. e.OutErr(c, err1.Code, err1.Error())
  64. return
  65. }
  66. err1 := svc.CentralKitchenForSchoolOrderRefundAudit(c, req)
  67. if err1 != nil {
  68. fmt.Println(err1.Error())
  69. e.OutErr(c, e.ERR, err1.Error())
  70. return
  71. }
  72. e.OutSuc(c, "success", nil)
  73. return
  74. sysCfgDb := db.SysCfgDb{}
  75. sysCfgDb.Set()
  76. sysCfg := sysCfgDb.SysCfgFindWithDb(enum.OpenAlipayAppid, enum.OpenAlipayAppPrivateKey, enum.OpenAlipayPublicKey)
  77. //调用支付宝进行退款
  78. err6, _ := svc2.CurlAlipayTradeRefund(md2.CurlAlipayTradeRefundReq{
  79. Config: struct {
  80. PayAliAppId string `json:"pay_ali_app_id" label:"支付宝开放平台-第三方应用-appid"`
  81. PayAliPrivateKey string `json:"pay_ali_private_key" label:"支付宝开放平台-第三方应用-接口加签-应用私钥"`
  82. PayAliPublicKey string `json:"pay_ali_public_key" label:"支付宝开放平台-第三方应用-接口加签-支付宝公钥"`
  83. }{
  84. PayAliAppId: sysCfg[enum.OpenAlipayAppid],
  85. PayAliPrivateKey: sysCfg[enum.OpenAlipayAppPrivateKey],
  86. PayAliPublicKey: sysCfg[enum.OpenAlipayPublicKey],
  87. },
  88. OutTradeNo: "800169659125681442",
  89. RefundAmount: "180.00",
  90. RefundReason: "央厨订餐退款",
  91. OutRequestNo: "r_800169659125681442_1705546121",
  92. AppAuthToken: "202308BB8ef30019cd8d4a40a3853192c397dX35",
  93. })
  94. if err6 != nil {
  95. fmt.Println(err6.Error())
  96. }
  97. return
  98. qrcodeWithBatchRecordsDb := db.AdminDb{}
  99. qrcodeWithBatchRecordsDb.Set()
  100. data, _, err := qrcodeWithBatchRecordsDb.GetAdminRolePermission(1001)
  101. if err != nil {
  102. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  103. return
  104. }
  105. e.OutSuc(c, data, nil)
  106. go GoOnExecuting()
  107. return
  108. }
  109. func DemoV1(c *gin.Context) {
  110. var outRequestNo = c.Query("out_request_no")
  111. var outTradeNo = c.Query("out_no")
  112. centralKitchenForSchoolUserRefundDayDb := db.CentralKitchenForSchoolUserRefundDayDb{}
  113. centralKitchenForSchoolUserRefundDayDb.Set(0)
  114. var m []model.CentralKitchenForSchoolUserRefundDay
  115. if err := centralKitchenForSchoolUserRefundDayDb.Db.Where("out_request_no =?", outRequestNo).Desc("id").Find(&m); err != nil {
  116. e.OutErr(c, e.ERR_DB_ORM, err.Error())
  117. return
  118. }
  119. centralKitchenForSchoolPackageOrd := db.CentralKitchenForSchoolPackageOrd{}
  120. centralKitchenForSchoolPackageOrd.Set(outTradeNo)
  121. ord, _ := centralKitchenForSchoolPackageOrd.GetCentralKitchenForSchoolPackageOrd()
  122. var dealReturnOrdMapForWx = map[string]struct {
  123. OutRequestNo string `json:"out_request_no"`
  124. Amount float64 `json:"amount"`
  125. Total string `json:"total"`
  126. WxMchId string `json:"wx_mch_id"`
  127. }{}
  128. companyWithWxpayInfoDb := db.CompanyWithWxpayInfoDb{}
  129. companyWithWxpayInfoDb.Set()
  130. wxMchId, _ := companyWithWxpayInfoDb.GetCompanyWithWxpayInfoByEnterprise(ord.EnterpriseId)
  131. for _, v := range m {
  132. dealReturnOrdMapForWx[ord.OutTradeNo] = struct {
  133. OutRequestNo string `json:"out_request_no"`
  134. Amount float64 `json:"amount"`
  135. Total string `json:"total"`
  136. WxMchId string `json:"wx_mch_id"`
  137. }(struct {
  138. OutRequestNo string
  139. Amount float64
  140. Total string
  141. WxMchId string
  142. }{OutRequestNo: outRequestNo, Amount: dealReturnOrdMapForWx[v.OutTradeNo].Amount + utils.StrToFloat64(v.Amount), Total: ord.TotalPrice, WxMchId: wxMchId})
  143. }
  144. client, err1 := svc3.NewWxPayClient(c) //初始化微信连接
  145. if err1 != nil {
  146. e.OutErr(c, e.ERR, err1.Error())
  147. return
  148. }
  149. sysCfgDb := db.SysCfgDb{}
  150. sysCfgDb.Set()
  151. sysCfg := sysCfgDb.SysCfgFindWithDb(enum.JsapiPayAppAutToken, enum.OpenAlipayAppid, enum.OpenAlipayAppPrivateKey, enum.OpenAlipayPublicKey, enum.WxJsapiRefundPayNotifyUrl)
  152. wxSvc := refunddomestic.RefundsApiService{Client: client}
  153. for k, v := range dealReturnOrdMapForWx {
  154. resp, _, err6 := wxSvc.Create(c,
  155. refunddomestic.CreateRequest{
  156. SubMchid: core.String(v.WxMchId),
  157. OutTradeNo: core.String(k),
  158. OutRefundNo: core.String(v.OutRequestNo),
  159. Reason: core.String("央厨订餐退款"),
  160. NotifyUrl: core.String(sysCfg[enum.WxJsapiRefundPayNotifyUrl]),
  161. Amount: &refunddomestic.AmountReq{
  162. Currency: core.String("CNY"),
  163. Refund: core.Int64(int64(math.Round(v.Amount * 100))),
  164. Total: core.Int64(int64(math.Round(utils.StrToFloat64(v.Total) * 100))),
  165. },
  166. },
  167. )
  168. fmt.Println(">>>>wxRefund<<<<", resp)
  169. if err6 != nil {
  170. fmt.Println(err6)
  171. e.OutErr(c, e.ERR, err6.Error())
  172. return
  173. }
  174. }
  175. e.OutSuc(c, dealReturnOrdMapForWx, nil)
  176. return
  177. }
  178. func GoOnExecuting() {
  179. for i := 0; i < 20; i++ {
  180. time.Sleep(1 * time.Second)
  181. fmt.Println(i)
  182. }
  183. }