修改门店发单和品牌发单是扣费问题

This commit is contained in:
邹宗楠
2023-05-11 10:58:50 +08:00
parent 85b2870a5e
commit 476f8c0943
26 changed files with 417 additions and 273 deletions

View File

@@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/kuaishou_mini"
beego "github.com/astaxie/beego/server/web"
"strings"
"time"
@@ -39,22 +40,27 @@ func pay4OrderByKs(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayTyp
}
param := &kuaishou_mini.PreCreateOrderReq{
OutOrderNo: utils.Int64ToStr(GenPayOrderID(order)),
OpenId: authBindList[0].AuthID,
TotalAmount: order.ActualPayPrice,
Subject: "蔬菜水果日用品",
Detail: getOrderBriefKs(order),
TypeDetail: 1832, // 蔬菜:费率2%,水果:1833%2
ExpireTime: 60 * 10,
Sign: "",
Attach: "",
NotifyUrl: "http://callback.jxc4.com/kuaishou/KuaiShouCallback",
OutOrderNo: utils.Int64ToStr(GenPayOrderID(order)),
OpenId: authBindList[0].AuthID,
TotalAmount: order.ActualPayPrice,
Subject: "蔬菜水果日用品",
Detail: getOrderBriefKs(order),
TypeDetail: 1832, // 蔬菜:费率2%,水果:1833%2
ExpireTime: 60 * 10,
Sign: "",
Attach: "",
//NotifyUrl: "https://callback.jxc4.com/kuaishou/kuaiShouCallback",
GoodsId: "",
GoodsDetailUrl: "",
MultiCopiesGoodsInfo: "",
CancelOrder: 0,
}
if beego.BConfig.RunMode == "jxgy" {
param.NotifyUrl = "https://callback-jxgy.jxc4.com/kuaishou/kuaiShouCallback"
} else {
param.NotifyUrl = "https://callback.jxc4.com/kuaishou/kuaiShouCallback"
}
// 预下单
prePayInfo, err := api.KuaiShouApi.PreCreateOrder(param)
if err == nil {

View File

@@ -406,7 +406,7 @@ func Pay4User(ctx *jxcontext.Context, thingID int, vendorOrderID string, payType
dao.UpdateEntity(db, userMemberOrigin, "EndAt")
}
}
case model.PayTypeTL_StoreAcctPay:
case model.PayTypeTL_StoreAcctPay: // 门店账户充值
storeOrder := &model.StoreAcctOrder{
VendorOrderID: vendorOrderID,
}
@@ -421,7 +421,7 @@ func Pay4User(ctx *jxcontext.Context, thingID int, vendorOrderID string, payType
err = dao.CreateEntity(dao.GetDB(), orderPay)
}
}
case model.PayTypeTL_BrandBillCharge:
case model.PayTypeTL_BrandBillCharge: // 品牌账户充值
brandOrder := &model.BrandOrder{
VendorOrderID: vendorOrderID,
}
@@ -546,9 +546,11 @@ func GetAvailableDeliverTime(ctx *jxcontext.Context, storeID int) (deliverTimerL
func OnPayFinished(orderPay *model.OrderPay) (err error) {
// 查询订单是购物订单还是充值订单
var (
db = dao.GetDB()
)
order, err := partner.CurOrderManager.LoadOrder(orderPay.VendorOrderID, orderPay.VendorID)
if err == nil {
db := dao.GetDB()
dao.UpdateEntity(db, orderPay)
if count, err2 := dao.GetJxOrderCount(db, jxutils.GetSaleStoreIDFromOrder(order), order.VendorOrderID, order.OrderCreatedAt); err2 == nil {
order.OrderSeq = count + 1
@@ -584,44 +586,41 @@ func OnPayFinished(orderPay *model.OrderPay) (err error) {
} else {
switch orderPay.PayType {
case model.PayTypeTL_DiscountCard:
userMembers, _ := dao.GetUserMember(dao.GetDB(), "", orderPay.VendorOrderID, "", model.VendorIDJX, model.MemberTypeDiscountCard, model.NO)
userMembers, _ := dao.GetUserMember(db, "", orderPay.VendorOrderID, "", model.VendorIDJX, model.MemberTypeDiscountCard, model.NO)
if len(userMembers) > 0 {
userMembers[0].IsPay = model.YES
dao.UpdateEntity(dao.GetDB(), userMembers[0], "IsPay")
dao.UpdateEntity(db, userMembers[0], "IsPay")
err = nil
}
case model.PayTypeTL_StoreAcctPay: //门店账户充值完成后直接入账
storeOrder := &model.StoreAcctOrder{
VendorOrderID: orderPay.VendorOrderID,
}
if err = dao.GetEntity(dao.GetDB(), storeOrder, "VendorOrderID"); err == nil && storeOrder.ID != 0 {
if err = dao.GetEntity(db, storeOrder, "VendorOrderID"); err == nil && storeOrder.ID != 0 {
storeOrder.OrderFinishedAt = time.Now()
storeOrder.Status = model.OrderStatusFinished
if _, err = dao.UpdateEntity(dao.GetDB(), storeOrder, "OrderFinishedAt", "Status"); err == nil {
// 获取门店的品牌ID
storeBrandId, err := GetStoreAcctOrderByVendorId(orderPay.VendorOrderID)
if err != nil {
return err
}
partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, storeBrandId, storeOrder.ActualPayPrice, model.BrandBillFeeTypeSys, model.BrandBillFeeTypeSys, "", "")
_, err = dao.UpdateEntity(db, storeOrder, "OrderFinishedAt", "Status")
if err != nil {
return err
}
partner.CurStoreAcctManager.InsertStoreAcctIncomeAndUpdateStoreAcctBalance(jxcontext.AdminCtx, jxutils.GetSaleStoreIDFromOrder(order), storeOrder.ActualPayPrice, partner.StoreAcctTypeIncomePay, order.VendorOrderID, order.VendorWaybillID, 0)
}
case model.PayTypeTL_BrandBillCharge:
case model.PayTypeTL_BrandBillCharge: // 品牌充值入账
brandOrder := &model.BrandOrder{
VendorOrderID: orderPay.VendorOrderID,
}
if err = dao.GetEntity(dao.GetDB(), brandOrder, "VendorOrderID"); err == nil && brandOrder.ID != 0 {
if err = dao.GetEntity(db, brandOrder, "VendorOrderID"); err == nil && brandOrder.ID != 0 {
brandOrder.OrderFinishedAt = time.Now()
brandOrder.Status = model.OrderStatusFinished
if _, err = dao.UpdateEntity(dao.GetDB(), brandOrder, "OrderFinishedAt", "Status"); err == nil {
if _, err = dao.UpdateEntity(db, brandOrder, "OrderFinishedAt", "Status"); err == nil {
partner.CurStoreAcctManager.InsertBrandBill(jxcontext.AdminCtx, brandOrder.BrandID, brandOrder.ActualPayPrice, model.BrandBillTypeIncome, model.BrandBillFeeTypeCharge, orderPay.VendorOrderID, "")
}
}
default:
priceDefendOrders, _ := dao.GetPriceDefendOrder(dao.GetDB(), orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
priceDefendOrders, _ := dao.GetPriceDefendOrder(db, orderPay.VendorOrderID, nil, nil, []int{jxutils.GetDefendPriceIssue()}, 0, -1, -1, 0, "", utils.ZeroTimeValue, utils.ZeroTimeValue, false)
if len(priceDefendOrders) > 0 {
priceDefendOrders[0].IsPay = model.YES
dao.UpdateEntity(dao.GetDB(), priceDefendOrders[0], "IsPay")
dao.UpdateEntity(db, priceDefendOrders[0], "IsPay")
err = nil
}
}
@@ -1823,7 +1822,7 @@ func RefreshAllMatterOrderStatus(ctx *jxcontext.Context) (err error) {
}()
vv.Status = model.OrderStatusFinished
dao.UpdateEntity(db, vv, "Status")
waybills, err := dao.GetWaybills(db, vv.VendorOrderID)
waybills, err := dao.GetWaybills(db, vv.VendorOrderID, nil)
if err == nil && len(waybills) > 0 {
waybills[0].Status = model.WaybillStatusDelivered
dao.UpdateEntity(db, waybills[0], "Status")
@@ -1939,7 +1938,7 @@ func updateMatterOrderStatus(db *dao.DaoDB, order *model.GoodsOrder, queryOrderS
}()
order.Status = model.OrderStatusFinished
dao.UpdateEntity(db, order, "Status")
waybills, err := dao.GetWaybills(db, order.VendorOrderID)
waybills, err := dao.GetWaybills(db, order.VendorOrderID, nil)
if err == nil && len(waybills) > 0 {
waybills[0].Status = model.WaybillStatusDelivered
dao.UpdateEntity(db, waybills[0], "Status")
@@ -1977,7 +1976,7 @@ func updateJdWayBillInfo(db *dao.DaoDB, order *model.GoodsOrder, getTrackMessage
break
}
}
waybills, err = dao.GetWaybills(db, order.VendorOrderID)
waybills, err = dao.GetWaybills(db, order.VendorOrderID, nil)
if len(waybills) > 0 {
waybills[0].VendorWaybillID = waybillCode
waybills[0].CourierName = cName