Files
jx-callback/business/lakala/lakala_callback.go
邹宗楠 b2d23c1587 1
2025-06-24 13:50:48 +08:00

147 lines
4.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package lakala
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/baseapi/platformapi/lakala"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/business/partner"
"time"
)
// CreateSeparateShop 商户分账业务回调(创建/修改)
func CreateSeparateShop(callback *lakala.SeparateCallback) error {
var (
db = dao.GetDB()
)
merchantInfo, err := dao.GetStoreInfoByMerchantID(db, callback.MerCupNo, 0, callback.ApplyId, "")
if err != nil {
return err
}
if callback.AuditStatus == utils.Int2Str(model.YES) {
merchantInfo.OperateStatus = model.OperateStatusSuccess
} else {
merchantInfo.OperateStatus = model.OperateStatusFail
}
_, err = dao.UpdateEntity(db, merchantInfo, "OperateStatus")
if err != nil {
return err
}
return nil
}
// BindSeparateBand 绑定/解绑业务
func BindSeparateBand(callback *lakala.SeparateBindCallback) error {
var (
db = dao.GetDB()
)
bindInfo, err := dao.GetStoreInfoByMerchantID(db, callback.MerCupNo, 0, callback.ApplyId, "")
if err != nil {
return err
}
unBind := make(map[string]*model.BindAccountObj, 0)
if err = json.Unmarshal([]byte(bindInfo.BindAccount), &unBind); err != nil {
return err
}
if unBind[callback.ReceiverNo].ApplyId == callback.ApplyId {
unBind[callback.ReceiverNo] = &model.BindAccountObj{
ApplyId: callback.ApplyId,
Status: callback.AuditStatus,
Remark: fmt.Sprintf(callback.AuditStatusText + ":" + callback.Remark),
}
}
byteBind, err := json.Marshal(unBind)
if err != nil {
return err
}
bindInfo.BindAccount = string(byteBind)
if _, err = dao.UpdateEntity(db, bindInfo, "BindAccount"); err != nil {
return err
}
return nil
}
// GetSeparateRecordsCallback 分账结果回调
func GetSeparateRecordsCallback(callback *lakala.SeparateResult) error {
var (
db = dao.GetDB()
)
separateRecord, err := dao.GetSeparateRecords(db, "", callback.SeparateNo, callback.CmdType)
if err != nil {
return err
}
separateRecord.CmdType = callback.CmdType
separateRecord.FinishDate = callback.FinishDate
separateRecord.TotalAmt = callback.TotalAmt
separateRecord.Status = callback.Status
separateRecord.FinalStatus = callback.FinalStatus
separateRecord.UpdatedAt = time.Now()
_, err = dao.UpdateEntity(db, separateRecord, "CmdType", "FinishDate", "TotalAmt", "Status1", "Status2", "Status3", "FinalStatus", "UpdatedAt")
return err
}
// EwalletWithdrawD1Callback 结算信息回调
func EwalletWithdrawD1Callback(param *lakala.EwalletWithdrawD1CallBack) error {
var (
db = dao.GetDB()
)
withDraw, err := dao.GetEwalletWithDraw(db, param.MercId, param.DrawJnl)
if err != nil {
return err
}
withDraw.ReqDate = param.ReqDate
withDraw.DrawAmt = param.DrawAmt
withDraw.DrawFee = param.DrawFee
withDraw.BatchAutoSettle = param.BatchAutoSettle
withDraw.AcctNo = param.AcctNo
withDraw.AcctName = param.AcctName
withDraw.DrawState = param.DrawState
withDraw.Memo = param.Memo
withDraw.CreatedTime = utils.Str2Time(param.CreatedTime)
withDraw.CompleteTime = utils.Str2Time(param.CompleteTime)
_, err = dao.UpdateEntity(db, withDraw)
return err
}
// OrderStatusCallback 订单状态回调 todo param.OrderStatus=6 时暂时无法区分全部退款还是部分退款
func OrderStatusCallback(param *lakala.QueryOrderCallBackResp) error {
var (
db = dao.GetDB()
)
order, err := partner.CurOrderManager.LoadOrder(param.OrderCreateTime, model.VendorIDJX)
if err != nil {
return err
}
// 0:待支付 1:支付中 2:支付成功 3:支付失败 4:已过期 5:已取消 6部分退款或者全部退款
switch param.OrderStatus {
case "0", "1":
order.Status = model.OrderStatusWait4Pay
case "2":
if order.DeliveryType == model.OrderDeliveryTypeSelfTake {
order.Status = model.OrderStatusFinished
order.OrderFinishedAt = time.Now()
} else {
order.Status = model.OrderStatusAccepted
}
case "3":
order.Status = model.OrderStatusWait4Pay
case "4", "5":
order.Status = model.OrderStatusCanceled
order.OrderFinishedAt = time.Now()
case "6":
}
order.VendorStatus = param.OrderStatus
_, err = dao.UpdateEntity(db, order, "Status", "VendorStatus", "OrderFinishedAt")
return err
}