From 65102191555984278ea1e09fc0fda2256c906206 Mon Sep 17 00:00:00 2001 From: DengBiao <2319963317@qq.com> Date: Tue, 10 Oct 2023 18:11:50 +0800 Subject: [PATCH] update --- app/admin/hdl/hdl_audit_center.go | 2 +- .../svc_central_kitchen_for_school_order.go | 89 +++++++++++++++++-- 2 files changed, 81 insertions(+), 10 deletions(-) diff --git a/app/admin/hdl/hdl_audit_center.go b/app/admin/hdl/hdl_audit_center.go index c4236fa..32ed20e 100644 --- a/app/admin/hdl/hdl_audit_center.go +++ b/app/admin/hdl/hdl_audit_center.go @@ -196,7 +196,7 @@ func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context) { } go func() { - err1 := svc2.CentralKitchenForSchoolOrderRefundAudit(req) + err1 := svc2.CentralKitchenForSchoolOrderRefundAudit(c, req) if err1 != nil { logx.Error(err1) println("<<<>>>>Error:::", err1.Error()) diff --git a/app/admin/svc/order/svc_central_kitchen_for_school_order.go b/app/admin/svc/order/svc_central_kitchen_for_school_order.go index 1832b2b..6751f67 100644 --- a/app/admin/svc/order/svc_central_kitchen_for_school_order.go +++ b/app/admin/svc/order/svc_central_kitchen_for_school_order.go @@ -3,13 +3,21 @@ package svc import ( "applet/app/admin/md" svc "applet/app/admin/svc/enterprise_manage" + enum2 "applet/app/customer/enum" md2 "applet/app/customer/md" svc2 "applet/app/customer/svc" "applet/app/db" model2 "applet/app/db/model" + "applet/app/e" "applet/app/enum" + svc3 "applet/app/svc" "applet/app/utils" "errors" + "fmt" + "github.com/gin-gonic/gin" + "github.com/wechatpay-apiv3/wechatpay-go/core" + "github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic" + "math" "time" ) @@ -153,10 +161,11 @@ func CentralKitchenForSchoolOrderRefundList(req md.CentralKitchenForSchoolOrderR return } -func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrderRefundAuditReq) (err error) { +func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context, req md.CentralKitchenForSchoolOrderRefundAuditReq) (err error) { sysCfgDb := db.SysCfgDb{} sysCfgDb.Set() - sysCfg := sysCfgDb.SysCfgFindWithDb(enum.JsapiPayAppAutToken, enum.OpenAlipayAppid, enum.OpenAlipayAppPrivateKey, enum.OpenAlipayPublicKey) + sysCfg := sysCfgDb.SysCfgFindWithDb(enum.JsapiPayAppAutToken, enum.OpenAlipayAppid, enum.OpenAlipayAppPrivateKey, enum.OpenAlipayPublicKey, + enum.WxMchId, enum.WxJsapiRefundPayNotifyUrl) session := db.Db.NewSession() defer session.Close() @@ -166,11 +175,18 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder centralKitchenForSchoolUserRefundDayDb.Set(0) centralKitchenForSchoolUserWithDayDb := db.CentralKitchenForSchoolUserWithDayDb{} centralKitchenForSchoolUserWithDayDb.Set(0) + centralKitchenForSchoolPackageOrd := db.CentralKitchenForSchoolPackageOrd{} var dealReturnOrdMap = map[string]struct { OutRequestNo string `json:"out_request_no"` Amount float64 `json:"amount"` }{} + var dealReturnOrdMapForWx = map[string]struct { + OutRequestNo string `json:"out_request_no"` + Amount float64 `json:"amount"` + Total string `json:"total"` + }{} + outRequestNoSuffix := "_" + utils.Int64ToStr(time.Now().Unix()) for _, v := range req.Ids { @@ -190,13 +206,38 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder userWithDay.State = enum.CentralKitchenForSchoolUserWithDayStateForCancel outRequestNo := "r_" + returnDay.OutTradeNo + outRequestNoSuffix - dealReturnOrdMap[returnDay.OutTradeNo] = struct { - OutRequestNo string `json:"out_request_no"` - Amount float64 `json:"amount"` - }(struct { - OutRequestNo string - Amount float64 - }{OutRequestNo: outRequestNo, Amount: dealReturnOrdMap[returnDay.OutTradeNo].Amount + utils.StrToFloat64(returnDay.Amount)}) + centralKitchenForSchoolPackageOrd.Set(returnDay.OutTradeNo) + ord, err4 := centralKitchenForSchoolPackageOrd.GetCentralKitchenForSchoolPackageOrd() + if err4 != nil { + _ = session.Rollback() + return err4 + } + if ord == nil { + _ = session.Rollback() + return errors.New("未查询到对应订单记录") + } + + if ord.PayWay == enum2.PayWayForAli { + dealReturnOrdMap[returnDay.OutTradeNo] = struct { + OutRequestNo string `json:"out_request_no"` + Amount float64 `json:"amount"` + }(struct { + OutRequestNo string + Amount float64 + }{OutRequestNo: outRequestNo, Amount: dealReturnOrdMap[returnDay.OutTradeNo].Amount + utils.StrToFloat64(returnDay.Amount)}) + } + + if ord.PayWay == enum2.PayWayForWx { + dealReturnOrdMapForWx[returnDay.OutTradeNo] = struct { + OutRequestNo string `json:"out_request_no"` + Amount float64 `json:"amount"` + Total string `json:"total"` + }(struct { + OutRequestNo string + Amount float64 + Total string + }{OutRequestNo: outRequestNo, Amount: dealReturnOrdMap[returnDay.OutTradeNo].Amount + utils.StrToFloat64(returnDay.Amount), Total: ord.TotalPrice}) + } returnDay.OutRequestNo = outRequestNo returnDay.State = enum.CentralKitchenForSchoolUserRefundDayStateForAuditComplete @@ -264,5 +305,35 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder time.Sleep(200 * time.Millisecond) //TODO::避免频繁调用 } + client, err := svc3.NewWxPayClient(c) + if err != nil { + e.OutErr(c, e.ERR, err.Error()) + return + } + wxSvc := refunddomestic.RefundsApiService{Client: client} + + for k, v := range dealReturnOrdMapForWx { + resp, _, err6 := wxSvc.Create(c, + refunddomestic.CreateRequest{ + SubMchid: core.String(sysCfg[enum.WxMchId]), + OutTradeNo: core.String(k), + OutRefundNo: core.String(v.OutRequestNo), + Reason: core.String("央厨订餐退款"), + NotifyUrl: core.String(sysCfg[enum.WxJsapiRefundPayNotifyUrl]), + Amount: &refunddomestic.AmountReq{ + Currency: core.String("CNY"), + Refund: core.Int64(int64(math.Round(v.Amount * 100))), + Total: core.Int64(int64(math.Round(utils.StrToFloat64(v.Total) * 100))), + }, + }, + ) + if err6 != nil { + _ = session.Rollback() + return err6 + } + fmt.Println(">>>>wxRefund<<<<", resp.Status) + time.Sleep(20 * time.Millisecond) //TODO::避免频繁调用 + } + return session.Commit() }