160 lines
8.0 KiB
Go
160 lines
8.0 KiB
Go
package tiktok_store
|
||
|
||
import (
|
||
"fmt"
|
||
tiktokShop "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||
"git.rosy.net.cn/jx-callback/business/model"
|
||
"git.rosy.net.cn/jx-callback/business/partner"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
)
|
||
|
||
var (
|
||
AfsVendorStatus2StatusMap = map[string]int{
|
||
tiktokShop.CallbackRefundOrderMsgTagId: model.AfsOrderStatusWait4Approve, // 发起售后申请待审核
|
||
tiktokShop.CallbackUpdateRefundOrderMsgTagId: model.AfsOrderStatusWait4Approve, // 修改售后待审核
|
||
tiktokShop.CallbackRefundOrderSuccessMsgTagId: model.AfsOrderStatusFinished, // 退款成功
|
||
tiktokShop.CallbackRefundOrderRefuseMsgTagId: model.AfsOrderStatusFailed, // 拒绝退款
|
||
tiktokShop.CallbackRefundShopMsgTagId: model.AfsOrderStatusFailed, // 拒绝退货
|
||
tiktokShop.CallbackReturnApplyAgreedMsgTagId: model.AfsOrderStatusFinished, // 同意退货
|
||
tiktokShop.CallbackReturnRefundAgreedMsgTagId: model.AfsOrderStatusFinished, // 同意退款
|
||
tiktokShop.CallbackRefundClosedMsgTagId: model.AfsOrderStatusFailed, // 驳回
|
||
}
|
||
|
||
AfsTagIDMap = map[string]string{
|
||
tiktokShop.CallbackRefundOrderMsgTagId: "1",
|
||
tiktokShop.CallbackUpdateRefundOrderMsgTagId: "1",
|
||
tiktokShop.CallbackRefundOrderSuccessMsgTagId: "1",
|
||
tiktokShop.CallbackRefundOrderRefuseMsgTagId: "1",
|
||
tiktokShop.CallbackRefundShopMsgTagId: "1",
|
||
tiktokShop.CallbackReturnApplyAgreedMsgTagId: "1",
|
||
tiktokShop.CallbackReturnRefundAgreedMsgTagId: "1",
|
||
tiktokShop.CallbackExchangeComfirmedMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateDiscussUploadMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateServiceInterveneMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateCancelledMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateAuditedMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateSubmitedMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateSubmitingMsgTagId: "1",
|
||
tiktokShop.CallbackArbitrateAppliedMsgTagId: "1",
|
||
tiktokShop.CallbackExpirationChangeMsgTagId: "1",
|
||
tiktokShop.CallbackRefundClosedMsgTagId: "1",
|
||
tiktokShop.CallbackBuyerReturnGoodsMsgTagId: "1",
|
||
tiktokShop.CallbackSpecialRefundMsgTagId: "1",
|
||
tiktokShop.CallbackSpecialRefundSuccessMsgTagId: "1",
|
||
tiktokShop.CallbackAuditAgreeResendMsgTagId: "1",
|
||
tiktokShop.CallbackResendFillLogisticsMsgTagId: "1",
|
||
}
|
||
|
||
// ReasonCodeMap 申请退货理由,可能会更新
|
||
ReasonCodeMap = map[int]string{
|
||
1: "商品已发出,如买家不再需要请拒收后申请仅退款或收到后申请退货退款",
|
||
2: "商品已经签收,如买家不再需要可以申请退货退款",
|
||
3: "买家误操作/取消申请",
|
||
4: "问题已解决,待用户收货",
|
||
5: "商品已发出,如买家不再需要请拒收后申请仅退款或收到后申请退货退款",
|
||
6: "买家误操作/取消申请",
|
||
7: "协商一致,用户取消退款",
|
||
8: "已与买家协商补偿,包括差价、赠品、额外补偿",
|
||
9: "已与买家协商补发商品",
|
||
10: "已与买家协商换货",
|
||
11: "买家上传的单号有误,商家尚未收到货,请核实正确物流单号后重新上传",
|
||
12: "退货与原订单不符(商品不符、退货地址不符)",
|
||
13: "退回商品影响二次销售",
|
||
14: "买家误操作/取消申请",
|
||
15: "协商一致,用户取消退款",
|
||
16: "买家误操作/取消申请",
|
||
17: "协商一致,用户取消退款",
|
||
18: "商品影响二次销售",
|
||
19: "定制商品不支持七天无理由退货,定制商品不接受质量问题以外的退货",
|
||
20: "定制商品不支持七天无理由退货,定制商品不接受质量问题以外的退货",
|
||
21: "买家申请的金额有误",
|
||
22: "运费未协商一致",
|
||
23: "商品没问题,买家未举证或凭证无效",
|
||
24: "已在约定时间发货",
|
||
25: "运费未协商一致",
|
||
26: "商品已经签收,如买家不再需要可以申请退货退款",
|
||
27: "商品没问题,买家未举证或举证无效",
|
||
28: "已在约定时间发货",
|
||
29: "买家申请的金额有误",
|
||
30: "发票没问题,买家未举证",
|
||
31: "发票已补寄",
|
||
32: "买家发票信息不完整",
|
||
33: "运费未协商一致",
|
||
34: "申请时间已超7天无理由退换货时间",
|
||
35: "不支持买家主观原因退换货",
|
||
36: "买家填错号码",
|
||
37: "已完成服务,买家未提供凭证或凭证无效",
|
||
38: "买家填错号码",
|
||
39: "已完成服务,买家未提供凭证或凭证无效",
|
||
40: "和达人达成一致,取消终止",
|
||
41: "其他",
|
||
42: "其他",
|
||
43: "未收到货/退货单号有误",
|
||
44: "退货与原订单不符(商品不符、退货地址不符)",
|
||
45: "商家已发货",
|
||
46: "商品已经签收,如买家不再需要可以申请退货退款",
|
||
47: "已与买家协商一致仅退款",
|
||
48: "问题已解决,待用户确认收货",
|
||
49: "已与买家协商一致延迟发货",
|
||
50: "未少发漏发",
|
||
51: "已与买家协商补偿,包括差价、赠品、额外补偿",
|
||
52: "已与买家协商一致延迟发货",
|
||
53: "其他",
|
||
54: "本单已购买【养死包赔】保险,请从保险理赔入口申请理赔",
|
||
55: "本单已购买【开箱无忧】保险,请从保险理赔入口申请理赔",
|
||
56: "商品没问题,买家未举证或举证无效",
|
||
57: "已完成服务,买家未举证或举证无效",
|
||
58: "本单已购买【食安保】保险,请从保险理赔入口申请理赔",
|
||
}
|
||
)
|
||
|
||
// AgreeOrRefuseRefund todo 审核售后单申请 退货退款(同意退货,确认收货之后会自动退款) 审核售后有点问题
|
||
func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *model.AfsOrder, approveType int, reason string) (err error) {
|
||
if globals.EnableDdStoreWrite {
|
||
if approveType == partner.AfsApproveTypeRefused { // 拒绝退货
|
||
err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuRefuseOnlyRefundApply, order.AfsOrderID, "拒绝退货", utils.Str2Int64(order.VendorStoreID))
|
||
} else if approveType == partner.AfsApproveTypeRefund { // 同意
|
||
err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuAgreeOnlyRefundApply, order.AfsOrderID, "同意仅退款", utils.Str2Int64(order.VendorStoreID))
|
||
} else if approveType == partner.AfsApproveTypeRefusedToRefundMoney { // 退货转退款
|
||
err = getAPI(order.VendorOrgCode, order.JxStoreID, "").AfterSaleOperate(tiktokShop.AfterSaleEmuReturnGoodsToRefundApply, order.AfsOrderID, "退货转退款", utils.Str2Int64(order.VendorStoreID))
|
||
}
|
||
}
|
||
return err
|
||
}
|
||
|
||
// 确认收到退货
|
||
func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, order *model.AfsOrder) (err error) {
|
||
err = fmt.Errorf("暂不支持的API调用")
|
||
return err
|
||
}
|
||
|
||
// 发起全款退款
|
||
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||
return fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDDD])
|
||
}
|
||
|
||
// 发起部分退款
|
||
func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
|
||
return c.AdjustOrder(ctx, order, refundSkuList, reason)
|
||
}
|
||
|
||
func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, afsOrderID string) (orderAfsInfo *partner.OrderAfsInfo, err error) {
|
||
order, err := partner.CurOrderManager.LoadOrder(vendorOrderID, model.VendorIDDD)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
list, err := getAPI(order.VendorOrgCode, 0, "").QueryAfsOrderDetail(afsOrderID, false)
|
||
if err != nil {
|
||
return nil, err
|
||
}
|
||
|
||
orderAfsInfo = &partner.OrderAfsInfo{}
|
||
orderAfsInfo.VendorOrderID = order.VendorOrderID
|
||
orderAfsInfo.AfsOrderID = afsOrderID
|
||
orderAfsInfo.AfsTotalShopMoney = order.TotalShopMoney - list.Data.ProcessInfo.AfterSaleInfo.RealRefundAmount
|
||
return orderAfsInfo, err
|
||
}
|