DengBiao 10 meses atrás
pai
commit
fa23023a23
6 arquivos alterados com 179 adições e 10 exclusões
  1. +11
    -1
      app/admin/hdl/hdl_audit_center.go
  2. +10
    -9
      app/admin/md/md_app_redis_key.go
  3. +11
    -0
      app/customer/md/md_curl_smart_pay.go
  4. +30
    -0
      app/customer/svc/svc_curl_smart_pay.go
  5. +94
    -0
      app/task/svc/svc_alipay_trade_fastpay_refund_query.go
  6. +23
    -0
      app/task/task_central_kitchen_for_school_alipay.trade.fastpay.refund.query.go

+ 11
- 1
app/admin/hdl/hdl_audit_center.go Ver arquivo

@@ -9,6 +9,7 @@ import (
"applet/app/e"
"applet/app/enum"
"applet/app/utils"
"applet/app/utils/cache"
"applet/app/utils/logx"
"errors"
"github.com/gin-gonic/gin"
@@ -119,7 +120,15 @@ func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context) {
return
}

//TODO::先将所有申请单改成 审核通过 状态
//TODO:: 加锁 Redis 锁,防并发
getString, _ := cache.GetString(md.AuditLockKeyForCentralKitchenLockKey)
if getString != "" {
e.OutErr(c, e.ERR, "请稍等,存在其他退款处理中!")
return
}
cache.Set(md.AuditLockKeyForCentralKitchenLockKey, "running")

//先将所有申请单改成 审核通过 状态
session := db.Db.NewSession()
defer session.Close()
session.Begin()
@@ -208,6 +217,7 @@ func CentralKitchenForSchoolOrderRefundAudit(c *gin.Context) {
logx.Error(err1)
println("<<<<CentralKitchenForSchoolOrderRefundAudit>>>>>Error:::", err1.Error())
}
cache.Del(md.AuditLockKeyForCentralKitchenLockKey)
}()

e.OutSuc(c, "success", nil)


+ 10
- 9
app/admin/md/md_app_redis_key.go Ver arquivo

@@ -2,13 +2,14 @@ package md

// 缓存key统一管理
const (
AdminJwtTokenKey = "%s:smart_canteen_admin_jwt_token:%s" // jwt, 占位符:ip, admin:id
JwtTokenCacheTime = 3600 * 24
AdminRolePermissionKey = "%s:smart_canteen_admin_role_permission:%s" // 占位符:ip, admin:id
AdminRolePermissionCacheTime = 3600 * 24 * 0.5
AdminHomePageDataKey = "%s:smart_canteen_admin_home_data:%s" // 占位符:ip, admin:id
AdminHomePageDataCacheTime = 60 * 10
CfgCacheTime = 86400
AppCfgCacheKey = "smart_canteen:%s" // 占位符: key的第一个字母
WxOfficialAccountCacheKey = "wx_official_account" // 占位符: key的第一个字母
AdminJwtTokenKey = "%s:smart_canteen_admin_jwt_token:%s" // jwt, 占位符:ip, admin:id
JwtTokenCacheTime = 3600 * 24
AdminRolePermissionKey = "%s:smart_canteen_admin_role_permission:%s" // 占位符:ip, admin:id
AdminRolePermissionCacheTime = 3600 * 24 * 0.5
AdminHomePageDataKey = "%s:smart_canteen_admin_home_data:%s" // 占位符:ip, admin:id
AdminHomePageDataCacheTime = 60 * 10
CfgCacheTime = 86400
AppCfgCacheKey = "smart_canteen:%s" // 占位符: key的第一个字母
WxOfficialAccountCacheKey = "wx_official_account" // 占位符: key的第一个字母
AuditLockKeyForCentralKitchenLockKey = "audit_lock_key_for_central_kitchen_lock_key"
)

+ 11
- 0
app/customer/md/md_curl_smart_pay.go Ver arquivo

@@ -70,6 +70,17 @@ type CurlAlipayTradeRefundReq struct {
AppAuthToken string `json:"app_auth_token" binding:"required" label:"应用授权token"`
}

type CurlAlipayTradeRefundQueryReq struct {
Config struct {
PayAliAppId string `json:"pay_ali_app_id" label:"支付宝开放平台-第三方应用-appid"`
PayAliPrivateKey string `json:"pay_ali_private_key" label:"支付宝开放平台-第三方应用-接口加签-应用私钥"`
PayAliPublicKey string `json:"pay_ali_public_key" label:"支付宝开放平台-第三方应用-接口加签-支付宝公钥"`
} `json:"config" label:"配置信息"`
OutTradeNo string `json:"out_trade_no" label:"商户订单号"`
OutRequestNo string `json:"out_request_no" label:"退款订单号"`
AppAuthToken string `json:"app_auth_token" binding:"required" label:"应用授权token"`
}

type CurlEducateSceneTokenReq struct {
Config struct {
AliAppId string `json:"ali_app_id" label:"支付宝开放平台-小程序-appid"`


+ 30
- 0
app/customer/svc/svc_curl_smart_pay.go Ver arquivo

@@ -165,6 +165,36 @@ func CurlAlipayTradeRefund(args md.CurlAlipayTradeRefundReq) (err error, resp in
return nil, result.Data
}

func CurlAlipayTradeRefundQuery(args md.CurlAlipayTradeRefundQueryReq) (err error, resp interface{}) {
url := cfg.SmartCanteenPay + "/alipay/pay/tradeRefundQuery"
utils.FilePutContents("CurlAlipayTradeRefundQuery", utils.SerializeStr(map[string]interface{}{
"args": args,
}))
bytes, err := utils.CurlPost(url, utils.Serialize(args), nil)
if err != nil {
return
}
var result struct {
Code int `json:"code"`
Msg string `json:"msg"`
Data interface{} `json:"data"`
}
utils.FilePutContents("CurlAlipayTradeRefundQuery", utils.SerializeStr(result))
err = json.Unmarshal(bytes, &result)
if err != nil {
return
}
if result.Code != 0 {
if result.Msg != "" {
err = errors.New(result.Msg)
return
}
err = errors.New("请求智慧餐厅支付 异常/失败")
return
}
return nil, result.Data
}

func CurlEducateSceneTokenQuery(args md.CurlEducateSceneTokenReq, userIdentity *model.UserIdentity, userToken, schoolName string) (err error, resp interface{}) {
utils.FilePutContents("CurlEducateSceneTokenQuery", utils.SerializeStr(map[string]interface{}{
"args": args,


+ 94
- 0
app/task/svc/svc_alipay_trade_fastpay_refund_query.go Ver arquivo

@@ -0,0 +1,94 @@
package svc

import (
md2 "applet/app/customer/md"
svc2 "applet/app/customer/svc"
"applet/app/db"
"applet/app/db/model"
"applet/app/enum"
"applet/app/utils"
"encoding/json"
"fmt"
"xorm.io/xorm"
)

func CentralKitchenForSchoolAlipayTradeFastpayRefundQuery(eg *xorm.Engine) {
var list []model.CentralKitchenForSchoolUserRefundDay
if err := db.Db.Where("refund_date >= '2024-01-17 12:00:00' AND state = 3").Desc("id").Find(&list); err != nil {
fmt.Println(err)
}
sysCfgDb := db.SysCfgDb{}
sysCfgDb.Set()
sysCfg := sysCfgDb.SysCfgFindWithDb(enum.JsapiPayAppAutToken, enum.OpenAlipayAppid, enum.OpenAlipayAppPrivateKey, enum.OpenAlipayPublicKey, enum.WxJsapiRefundPayNotifyUrl)

for _, v := range list {
affected1, err := db.Db.Where("id=?", v.RecordsId).Cols("state").Update(&model.CentralKitchenForSchoolUserWithDay{
State: 3,
})
if err != nil {
fmt.Println(err)
}
fmt.Println(">>>>>>>>>>>>>>>>>affected1<<<<<<<<<<<<<<<<<<<", affected1)
continue

err, data := svc2.CurlAlipayTradeRefundQuery(md2.CurlAlipayTradeRefundQueryReq{
Config: struct {
PayAliAppId string `json:"pay_ali_app_id" label:"支付宝开放平台-第三方应用-appid"`
PayAliPrivateKey string `json:"pay_ali_private_key" label:"支付宝开放平台-第三方应用-接口加签-应用私钥"`
PayAliPublicKey string `json:"pay_ali_public_key" label:"支付宝开放平台-第三方应用-接口加签-支付宝公钥"`
}{
PayAliAppId: sysCfg[enum.OpenAlipayAppid],
PayAliPrivateKey: sysCfg[enum.OpenAlipayAppPrivateKey],
PayAliPublicKey: sysCfg[enum.OpenAlipayPublicKey],
},
OutTradeNo: v.OutTradeNo,
OutRequestNo: v.OutRequestNo,
AppAuthToken: sysCfg[enum.JsapiPayAppAutToken],
})

if err != nil {
fmt.Println("err:::::", err.Error())
}
var dataMap map[string]string
err = json.Unmarshal([]byte(utils.SerializeStr(data)), &dataMap)
if dataMap["out_request_no"] == "" && dataMap["refund_status"] != "REFUND_SUCCESS" {

var mm []model.CentralKitchenForSchoolUserRefundDay
if err1 := db.Db.Where("out_request_no = ?", v.OutRequestNo).Desc("id").Find(&mm); err != nil {
fmt.Println(err1)
}

//var amount float64
for _, vv := range mm {
//amount += utils.StrToFloat64(vv.Amount)
vv.State = 3
affected1, err := db.Db.Where("id=?", vv.Id).Cols("state").Update(&vv)
if err != nil {
fmt.Println(err)
}
fmt.Println(">>>>>>>>>>>>>>>>>affected1<<<<<<<<<<<<<<<<<<<", affected1)
}

//err6, _ := svc2.CurlAlipayTradeRefund(md2.CurlAlipayTradeRefundReq{
// Config: struct {
// PayAliAppId string `json:"pay_ali_app_id" label:"支付宝开放平台-第三方应用-appid"`
// PayAliPrivateKey string `json:"pay_ali_private_key" label:"支付宝开放平台-第三方应用-接口加签-应用私钥"`
// PayAliPublicKey string `json:"pay_ali_public_key" label:"支付宝开放平台-第三方应用-接口加签-支付宝公钥"`
// }{
// PayAliAppId: sysCfg[enum.OpenAlipayAppid],
// PayAliPrivateKey: sysCfg[enum.OpenAlipayAppPrivateKey],
// PayAliPublicKey: sysCfg[enum.OpenAlipayPublicKey],
// },
// OutTradeNo: v.OutTradeNo,
// RefundAmount: utils.Float64ToStr(amount),
// RefundReason: "央厨订餐退款",
// OutRequestNo: v.OutRequestNo,
// AppAuthToken: sysCfg[enum.JsapiPayAppAutToken],
//})
//if err6 != nil {
// fmt.Println(err6)
//}
}
fmt.Println(dataMap)
}
}

+ 23
- 0
app/task/task_central_kitchen_for_school_alipay.trade.fastpay.refund.query.go Ver arquivo

@@ -0,0 +1,23 @@
package task

import (
"applet/app/task/svc"
"math/rand"
"time"
"xorm.io/xorm"
)

// 查询支付宝退款
func taskCentralKitchenForSchoolAlipayTradeFastpayRefundQuery(eg *xorm.Engine) {
for {
if len(ch) > workerNum {
time.Sleep(time.Millisecond * time.Duration(rand.Intn(1000)))
} else {
goto START
}
}
START:
ch <- 1
svc.CentralKitchenForSchoolAlipayTradeFastpayRefundQuery(eg)
<-ch
}

Carregando…
Cancelar
Salvar