unionorder

This commit is contained in:
suyl
2021-05-07 11:03:24 +08:00
parent c24f179edc
commit 4c5e825990
10 changed files with 307 additions and 136 deletions

View File

@@ -1,25 +0,0 @@
package mt
import (
"git.rosy.net.cn/baseapi/platformapi/mtunionapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/jxstore/partner"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/globals/api"
)
func OnCallback(call *mtunionapi.CallBackResult) (err error) {
if call.Status == mtunionapi.MtUnionOrderStatusFinished {
if order, err := api.MtUnionAPI.Rtnotify(call.Orderid, call.Type); order != nil && err == nil {
unionOrder := &partner.UnionOrderInfo{
SID: order.Order.Sid,
Profit: jxutils.StandardPrice2Int(utils.Str2Float64(order.Coupon[0].Profit)),
VendorID: model.VendorIDMTWM,
}
cms.UnionOrderCallBack(unionOrder)
}
}
return err
}

View File

@@ -1,11 +1,25 @@
package mt
import (
"git.rosy.net.cn/baseapi/platformapi/mtunionapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/jxstore/partner"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
"git.rosy.net.cn/jx-callback/business/model"
"git.rosy.net.cn/jx-callback/business/model/dao"
"git.rosy.net.cn/jx-callback/globals/api"
"strings"
"time"
)
var (
orderStatusMap = map[int]int{
mtunionapi.MtUnionOrderStatusPay: model.UnionOrderStatusPay,
mtunionapi.MtUnionOrderStatusFinished: model.UnionOrderStatusFinish,
mtunionapi.MtUnionOrderStatusCanceled: model.UnionOrderStatusFail,
}
)
func (s *UnionHandler) ShareUnionLink(ctx *jxcontext.Context, linkType, unionActID int, sID, userID string, resourceType int, goodsID string) (link string, err error) {
@@ -60,3 +74,55 @@ func (s *UnionHandler) GetUnionMatterDetail(ctx *jxcontext.Context, goodsID stri
func (s *UnionHandler) GetUnionMatterListRcmmd(ctx *jxcontext.Context, goodsID string, rcmmdType, offset, pageSize int) (result *partner.MatterList, err error) {
return nil, err
}
func OnCallback(call *mtunionapi.CallBackResult) (err error) {
var (
db = dao.GetDB()
)
if order, err := api.MtUnionAPI.Rtnotify(call.Orderid, call.Type); order != nil && err == nil {
unionOrders, err := dao.GetUnionOrdersByIDs(db, []string{order.Order.Orderid}, model.VendorIDPDD)
if err != nil {
return
}
orderStatus := &model.UnionOrderStatus{
VendorOrderID: order.Order.Orderid,
VendorID: model.VendorIDMTWM,
Status: mtunionOrderStatus2Jx(order.Order.Status),
VendorStatus: utils.Int2Str(order.Order.Status),
OrderStatusAt: time.Unix(utils.Str2Int64(order.Order.Modtime), 0),
}
if len(order.Refund) > 0 {
orderStatus.Comment = "售后完成"
}
//change
jxutils.CallMsgHandler(func() {
if len(unionOrders) > 0 {
if unionOrders[0].Status != orderStatus.Status {
cms.ChangeUnionOrder(unionOrders[0], orderStatus)
}
} else {
//new
unionOrder := &model.UnionOrder{
VendorOrderID: order.Order.Orderid,
VendorID: model.VendorIDMTWM,
Status: mtunionOrderStatus2Jx(order.Order.Status),
PID: order.Order.Sid,
PayPrice: int(jxutils.StandardPrice2Int(utils.Str2Float64(order.Order.Direct))),
PromotionAmount: int(jxutils.StandardPrice2Int(utils.Str2Float64(order.Coupon[0].Profit))),
GoodsName: order.Order.Smstitle,
GoodsID: order.Order.Dealid,
OrderCreateAt: time.Unix(utils.Str2Int64(order.Order.Paytime), 0),
OrderPayAt: time.Unix(utils.Str2Int64(order.Order.Paytime), 0),
OrderReceiveAt: time.Unix(utils.Str2Int64(order.Order.Modtime), 0),
OrderSettleAt: time.Unix(utils.Str2Int64(order.Coupon[0].Usetime), 0),
}
cms.NewUnionOrder(unionOrder, orderStatus)
}
}, jxutils.ComposeUniversalOrderID(order.Order.Orderid, model.VendorIDMTWM))
}
return err
}
func mtunionOrderStatus2Jx(status int) (jxstatus int) {
return orderStatusMap[status]
}

View File

@@ -4,6 +4,7 @@ import (
"fmt"
"git.rosy.net.cn/baseapi/platformapi/pddapi"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"git.rosy.net.cn/jx-callback/business/jxstore/partner"
"git.rosy.net.cn/jx-callback/business/jxutils"
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
@@ -25,6 +26,15 @@ var (
partner.JxSortTypeXL: 5, //按销量升序;
-partner.JxSortTypeXL: 6, //按销量降序;
}
orderStatusMap = map[int]int{
pddapi.OrderStatusPay: model.UnionOrderStatusPay,
pddapi.OrderStatus1: model.UnionOrderStatusPay,
pddapi.OrderStatusTakeOver: model.UnionOrderStatusTakeOver,
pddapi.OrderStatusAuditOver: model.UnionOrderStatusAuditOver,
pddapi.OrderStatusAuditFail: model.UnionOrderStatusFail,
pddapi.OrderStatusEaring: model.UnionOrderStatusFinish,
}
)
func (s *UnionHandler) ShareUnionLink(ctx *jxcontext.Context, linkType, unionActID int, sID, userID string, resourceType int, goodsID string) (link string, err error) {
@@ -188,19 +198,79 @@ func (s *UnionHandler) GetUnionMatterListRcmmd(ctx *jxcontext.Context, goodsID s
func GetUnionOrders() {
var (
page = 1
pageSize = 50
page = 1
pageSize = 50
db = dao.GetDB()
orderIDs []string
unionOrderIDsMap map[string]*model.UnionOrder
)
orders, err := api.PddAPI.OrderListIncrementGet(time.Now().Add(-time.Minute*5).Unix(), time.Now().Unix(), page, pageSize)
if err != nil {
return
}
task := tasksch.NewParallelTask("TempJob1", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(true), ctx,
for _, v := range orders {
orderIDs = append(orderIDs, v.OrderSn)
}
unionOrders, err := dao.GetUnionOrdersByIDs(db, orderIDs, model.VendorIDPDD)
if err != nil {
return
}
unionOrderIDsMap = make(map[string]*model.UnionOrder)
for _, v := range unionOrders {
unionOrderIDsMap[v.VendorOrderID] = v
}
task := tasksch.NewParallelTask("GetUnionOrders1", tasksch.NewParallelConfig().SetIsContinueWhenError(true), jxcontext.AdminCtx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
order := batchItemList[0].(*pddapi.OrderListIncrementGetResult)
detail, err := api.PddAPI.OrderDetailGet(order.OrderSn)
if err != nil {
return
}
orderStatus := &model.UnionOrderStatus{
VendorOrderID: detail.OrderSn,
VendorID: model.VendorIDPDD,
Status: pddOrderStatus2Jx(detail.OrderStatus),
VendorStatus: utils.Int2Str(detail.OrderStatus),
OrderStatusAt: time.Unix(int64(detail.OrderModifyAt), 0),
}
if detail.ReturnStatus == 1 {
orderStatus.Comment = "售后中"
} else if detail.ReturnStatus == 2 {
orderStatus.Comment = "售后完成"
}
//change
jxutils.CallMsgHandler(func() {
if unionOrderIDsMap[order.OrderSn] != nil {
if unionOrderIDsMap[order.OrderSn].Status != orderStatus.Status {
cms.ChangeUnionOrder(unionOrderIDsMap[order.OrderSn], orderStatus)
}
} else {
//new
unionOrder := &model.UnionOrder{
VendorOrderID: detail.OrderSn,
VendorID: model.VendorIDPDD,
Status: pddOrderStatus2Jx(detail.OrderStatus),
PID: detail.Pid,
PayPrice: detail.OrderAmount,
PromotionAmount: detail.PromotionAmount,
GoodsName: detail.GoodsName,
GoodsID: detail.GoodsSign,
GoodsImg: detail.GoodsThumbnailURL,
OrderCreateAt: time.Unix(int64(order.OrderCreateTime), 0),
OrderPayAt: time.Unix(int64(order.OrderPayTime), 0),
OrderReceiveAt: time.Unix(int64(order.OrderReceiveTime), 0),
OrderSettleAt: time.Unix(int64(order.OrderSettleTime), 0),
Comment: order.FailReason,
}
cms.NewUnionOrder(unionOrder, orderStatus)
}
}, jxutils.ComposeUniversalOrderID(order.OrderSn, model.VendorIDPDD))
return retVal, err
}, orders)
tasksch.HandleTask(task, nil, true).Run()
task.GetResult(0)
tasksch.HandleTask(task, nil, false).Run()
task.GetID()
}
func pddOrderStatus2Jx(status int) (jxstatus int) {
return orderStatusMap[status]
}