Browse Source

update

add_mode
DengBiao 1 year ago
parent
commit
6510219155
2 changed files with 81 additions and 10 deletions
  1. +1
    -1
      app/admin/hdl/hdl_audit_center.go
  2. +80
    -9
      app/admin/svc/order/svc_central_kitchen_for_school_order.go

+ 1
- 1
app/admin/hdl/hdl_audit_center.go View File

@@ -196,7 +196,7 @@ func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context) {
} }


go func() { go func() {
err1 := svc2.CentralKitchenForSchoolOrderRefundAudit(req)
err1 := svc2.CentralKitchenForSchoolOrderRefundAudit(c, req)
if err1 != nil { if err1 != nil {
logx.Error(err1) logx.Error(err1)
println("<<<<CentralKitchenForSchoolOrderRefundAudit>>>>>Error:::", err1.Error()) println("<<<<CentralKitchenForSchoolOrderRefundAudit>>>>>Error:::", err1.Error())


+ 80
- 9
app/admin/svc/order/svc_central_kitchen_for_school_order.go View File

@@ -3,13 +3,21 @@ package svc
import ( import (
"applet/app/admin/md" "applet/app/admin/md"
svc "applet/app/admin/svc/enterprise_manage" svc "applet/app/admin/svc/enterprise_manage"
enum2 "applet/app/customer/enum"
md2 "applet/app/customer/md" md2 "applet/app/customer/md"
svc2 "applet/app/customer/svc" svc2 "applet/app/customer/svc"
"applet/app/db" "applet/app/db"
model2 "applet/app/db/model" model2 "applet/app/db/model"
"applet/app/e"
"applet/app/enum" "applet/app/enum"
svc3 "applet/app/svc"
"applet/app/utils" "applet/app/utils"
"errors" "errors"
"fmt"
"github.com/gin-gonic/gin"
"github.com/wechatpay-apiv3/wechatpay-go/core"
"github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
"math"
"time" "time"
) )


@@ -153,10 +161,11 @@ func CentralKitchenForSchoolOrderRefundList(req md.CentralKitchenForSchoolOrderR
return return
} }


func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrderRefundAuditReq) (err error) {
func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context, req md.CentralKitchenForSchoolOrderRefundAuditReq) (err error) {
sysCfgDb := db.SysCfgDb{} sysCfgDb := db.SysCfgDb{}
sysCfgDb.Set() 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() session := db.Db.NewSession()
defer session.Close() defer session.Close()
@@ -166,11 +175,18 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder
centralKitchenForSchoolUserRefundDayDb.Set(0) centralKitchenForSchoolUserRefundDayDb.Set(0)
centralKitchenForSchoolUserWithDayDb := db.CentralKitchenForSchoolUserWithDayDb{} centralKitchenForSchoolUserWithDayDb := db.CentralKitchenForSchoolUserWithDayDb{}
centralKitchenForSchoolUserWithDayDb.Set(0) centralKitchenForSchoolUserWithDayDb.Set(0)
centralKitchenForSchoolPackageOrd := db.CentralKitchenForSchoolPackageOrd{}
var dealReturnOrdMap = map[string]struct { var dealReturnOrdMap = map[string]struct {
OutRequestNo string `json:"out_request_no"` OutRequestNo string `json:"out_request_no"`
Amount float64 `json:"amount"` 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()) outRequestNoSuffix := "_" + utils.Int64ToStr(time.Now().Unix())


for _, v := range req.Ids { for _, v := range req.Ids {
@@ -190,13 +206,38 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder


userWithDay.State = enum.CentralKitchenForSchoolUserWithDayStateForCancel userWithDay.State = enum.CentralKitchenForSchoolUserWithDayStateForCancel
outRequestNo := "r_" + returnDay.OutTradeNo + outRequestNoSuffix 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.OutRequestNo = outRequestNo
returnDay.State = enum.CentralKitchenForSchoolUserRefundDayStateForAuditComplete returnDay.State = enum.CentralKitchenForSchoolUserRefundDayStateForAuditComplete
@@ -264,5 +305,35 @@ func CentralKitchenForSchoolOrderRefundAudit(req md.CentralKitchenForSchoolOrder
time.Sleep(200 * time.Millisecond) //TODO::避免频繁调用 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() return session.Commit()
} }

Loading…
Cancel
Save