修改拉卡拉卡分账

This commit is contained in:
邹宗楠
2025-08-05 16:21:26 +08:00
parent cb974f7618
commit 33c5eed1fc
7 changed files with 199 additions and 108 deletions

View File

@@ -211,5 +211,11 @@ func OrderStatusCallback(param *lakala.QueryOrderCallBackResp) error {
dao.UpdateEntity(db, orderPay)
}
separate, _ := dao.GetSeparateAmtByOrderID(order.VendorOrderID, lakala.SeparateType_SEPATRATE, "")
if separate != nil {
separate.LogNo = param.OrderTradeInfo.LogNo
separate.Remark += "->收银台订单未分账"
dao.UpdateEntity(db, separate, "LogNo", "Remark")
}
return err
}

View File

@@ -490,61 +490,51 @@ func SeparateUnBind(param *lakala.SeparateUnBindReq) error {
}
// SeparateQueryAmt 可分账金额查询
func SeparateQueryAmt(merchantNo, logDate, logNo string) (*lakala.SeparateQueryAmtResp, error) {
func SeparateQueryAmt(merchantNo, logDate, logNo, vendorOrderId string) (*lakala.SeparateQueryAmtResp, error) {
result, err := api.LaKaLaApi.SeparateQueryAmt(merchantNo, logNo, logDate)
if err != nil {
return nil, err
}
db := dao.GetDB()
merchant, err := dao.GetStoreInfoByMerchantID(db, merchantNo, 0, "", "")
if err != nil {
return nil, err
}
merchant.TotalAmt = result.TotalSeparateAmt
merchant.CanAmt = result.CanSeparateAmt
if _, err = dao.UpdateEntity(db, merchant, "TotalAmt", "CanAmt"); err != nil {
return nil, err
separate, _ := dao.GetSeparateAmtByOrderID(vendorOrderId, "", logNo)
if separate != nil {
separate.TotalAmt = result.TotalSeparateAmt
separate.ActualSeparateAmt = result.CanSeparateAmt
dao.UpdateEntity(dao.GetDB(), separate, "TotalAmt", "ActualSeparateAmt")
}
return result, err
}
// Separate 分账
func Separate(ctx *jxcontext.Context, param *lakala.OrderSeparateReq) (string, string, error) {
param.LogNo = lakala.GetOrderNumber(8)
param.LogDate = utils.Time2TimeStrByFormat(time.Now(), "20060102")
param.OutSeparateNo = lakala.GetOrderNumber(10)
param.NotifyUrl = lakala.CallbackLaKaLaSeparateUrl
status, separateNo, err := api.LaKaLaApi.Separate(param)
func Separate(ctx *jxcontext.Context, param *lakala.OrderSeparateReq, vendorOrderId string) (*lakala.OrderSeparateResp, error) {
separateObj, err := dao.GetSeparateAmtByOrderID(vendorOrderId, "", param.LogNo)
if err != nil {
return "", "", err
return nil, err
}
param.NotifyUrl = lakala.CallbackLaKaLaSeparateUrl
resp, err := api.LaKaLaApi.Separate(param)
if err != nil {
return nil, err
}
recv, _ := json.Marshal(param.RecvDatas)
separateData := &model.LakalaSeparateAmt{
MerchantNo: param.MerchantNo,
OutSeparateNo: param.OutSeparateNo, // 商户分账指令流水号
SeparateNo: separateNo,
CalType: param.CalType,
FinishDate: "",
TotalAmt: param.TotalAmt,
Status: status,
//LogNo: logNo,
DetailData: string(recv),
Remark: "分账",
}
separateObj.OutSeparateNo = resp.RespData.OutSeparateNo
separateObj.SeparateNo = resp.RespData.SeparateNo
separateObj.CalType = param.CalType
separateObj.TotalAmt = resp.RespData.TotalAmt
separateObj.Status = resp.RespData.Status
separateObj.Remark += `->分账`
separateObj.DetailData = string(recv)
t, err := time.Parse("20060102", param.LogDate)
if err != nil {
t = time.Now()
}
separateData.LogDate = t
dao.WrapAddIDCULEntity(separateData, ctx.GetUserName())
separateObj.LogDate = t
dao.UpdateEntity(dao.GetDB(), &separateObj)
if err = dao.CreateEntity(dao.GetDB(), separateData); err != nil {
return "", "", err
}
return status, separateNo, nil
return resp, err
}
// SeparateResultQuery 分账结果查询
@@ -594,11 +584,12 @@ func SeparateCancel(merchantNo, separateNo string) (*lakala.SeparateCancelResp,
return nil, err
}
separateAmt.CmdType = lakala.SeparateCancel
separateAmt.Status = result.RespData.Status
separateAmt.SeparateNo = result.RespData.SeparateNo
separateAmt.Remark += ",分账撤销"
//separateAmt.SeparateNo = result.RespData.SeparateNo
separateAmt.Remark += "->分账撤销"
if _, err = dao.UpdateEntity(db, separateAmt, "SeparateNo2", "Status2", "Remark"); err != nil {
if _, err = dao.UpdateEntity(db, separateAmt, "CmdType", "Status", "Remark"); err != nil {
return nil, err
}
@@ -643,9 +634,10 @@ func SeparateFallBack(merchantNo, separateNo, reason string) (*lakala.SeparateFa
return nil, err
}
separateAmt.CmdType = lakala.SeparateFallBack
separateAmt.Status = result.RespData.Status
separateAmt.SeparateNo = result.RespData.SeparateNo
separateAmt.Remark += ",分账退回"
separateAmt.Remark += "->分账退回"
dao.UpdateEntity(db, separateAmt, "CmdType", "Status", "Remark")
return result, nil
}
@@ -723,7 +715,7 @@ func CreateOrder(ctx *jxcontext.Context, vendorOrderID, merchantNo string, vendo
orderPay := &model.OrderPay{
PayOrderID: result.PayOrderNo,
PayType: model.PayTypeLaKaLa,
VendorPayType: lakala.PayWayRegister,
VendorPayType: lakala.PayWayAPP,
TransactionID: "",
VendorOrderID: order.VendorOrderID,
VendorID: order.VendorID,
@@ -735,6 +727,29 @@ func CreateOrder(ctx *jxcontext.Context, vendorOrderID, merchantNo string, vendo
}
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), orderPay)
separate := &model.LakalaSeparateAmt{
MerchantNo: merchantNo,
VendorOrderID: order.VendorOrderID,
StoreId: order.JxStoreID,
CmdType: lakala.SeparateType_SEPATRATE,
Status: "1",
LogNo: "",
LogDate: time.Now(),
SeparateNo: "",
OutSeparateNo: "",
CalType: "",
FinishDate: "",
TotalAmt: "",
ActualSeparateAmt: "",
TotalFeeAmt: "",
FinalStatus: "",
DetailData: "",
Remark: "",
}
dao.WrapAddIDCULEntity(separate, ctx.GetUserName())
err = dao.CreateEntity(dao.GetDB(), separate)
return result, nil
}
@@ -945,7 +960,7 @@ func GetRecipientList(orgCode, receiverNo, receiverName string, offset, pageSize
}
// GetSeparateAmt 分账流水查询
func GetSeparateAmt(merchantNo, cmdType, status, separateNo, separateTimeStart, separateTimeEnd string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
func GetSeparateAmt(merchantNo, cmdType, status, separateNo, separateTimeStart, separateTimeEnd, vendorOrderID string, storeId int, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
var (
start time.Time
end time.Time
@@ -956,7 +971,7 @@ func GetSeparateAmt(merchantNo, cmdType, status, separateNo, separateTimeStart,
if separateTimeEnd != "" {
end = utils.Str2Time(separateTimeEnd)
}
return dao.GetSeparateAmt(merchantNo, cmdType, status, separateNo, start, end, offset, pageSize)
return dao.GetSeparateAmt(merchantNo, cmdType, status, separateNo, vendorOrderID, storeId, start, end, offset, pageSize)
}
// WithdrawalList 提现流水查询