合并请求
This commit is contained in:
@@ -208,9 +208,9 @@ func (c *OrderManager) OnOrderStatusChanged(vendorOrgCode string, orderStatus *m
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *OrderManager) ChangeOrderInfo(order *model.GoodsOrder, valid map[string]interface{}) (err error) {
|
||||
func (c *OrderManager) ChangeOrderInfo(order *model.GoodsOrder) (err error) {
|
||||
db := dao.GetDB()
|
||||
dao.UpdateEntityLogically(db, order, valid, "jxadmin", nil)
|
||||
_, err = dao.UpdateEntity(db, order, "ConsigneeAddress", "ConsigneeName", "ConsigneeMobile", "ConsigneeLat", "ConsigneeLng", "BuyerComment")
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -363,6 +363,9 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
||||
if intVendorSkuID != 0 && v.VendorSkuID != "-70000" { // todo hard code
|
||||
skuBindInfo := skumapper[v.VendorSkuID]
|
||||
if skuBindInfo == nil {
|
||||
if v.ShopPrice == 0 {
|
||||
v.ShopPrice = v.SalePrice * 70 / 100
|
||||
}
|
||||
globals.SugarLogger.Infof("updateOrderSkuOtherInfo [运营%s]%s订单sku找不到门店价格(或商品映射),orderID:%s, StoreID:%d, VendorSkuID:%s, sku:%v", opNumStr, model.VendorChineseNames[order.VendorID], order.VendorOrderID, jxStoreID, v.VendorSkuID, v)
|
||||
} else {
|
||||
// TODO 客户端当前逻辑认为SkuID为0为赠品
|
||||
@@ -381,6 +384,9 @@ func (c *OrderManager) updateOrderSkuOtherInfo(order *model.GoodsOrder, db *dao.
|
||||
}
|
||||
} else {
|
||||
v.ShopPrice = int64(skuBindInfo.Price)
|
||||
if v.ShopPrice == 0 {
|
||||
v.ShopPrice = v.SalePrice * 70 / 100
|
||||
}
|
||||
}
|
||||
v.Weight = skuBindInfo.Weight // 以本地信息中的WEIGHT为准
|
||||
//饿鲜达的订单做一下处理
|
||||
@@ -1126,6 +1132,7 @@ func result2Orders(ctx *jxcontext.Context, result *jdshopapi.AllOrdersResult) (o
|
||||
if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusPause {
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
order.ExpectedDeliveredTime = utils.Str2Time(orderDetail.ExpectedDeliveredTime)
|
||||
order.PickDeadline = order.ExpectedDeliveredTime.Add(-time.Hour)
|
||||
} else if jdsOrder.OrderStatus == jdshopapi.JdsOrderStatusWaittingExport {
|
||||
order.ExpectedDeliveredTime = order.OrderCreatedAt.Add(time.Hour)
|
||||
order.BusinessType = model.BusinessTypeImmediate
|
||||
@@ -1230,6 +1237,46 @@ func TransferJdsOrder(ctx *jxcontext.Context, vendorOrderID string, storeID int)
|
||||
order.StoreID = storeID
|
||||
order.StoreName = stores[0].Name
|
||||
order.VendorStoreID = storeMaps[0].VendorStoreID
|
||||
//如果是立即达的订单,要判断一下送达时间是否在门店营业时间范围内
|
||||
//若没有,则要把这个订单变成定时达,预计送达时间改为门店的营业时间
|
||||
//如果门店没有营业时间,则直接报错
|
||||
if order.BusinessType == model.BusinessTypeImmediate {
|
||||
store := stores[0]
|
||||
var (
|
||||
opentime1 = jxutils.JxOperationTime2TimeByDate(store.OpenTime1, order.ExpectedDeliveredTime)
|
||||
opentime2 = jxutils.JxOperationTime2TimeByDate(store.OpenTime2, order.ExpectedDeliveredTime)
|
||||
closetime1 = jxutils.JxOperationTime2TimeByDate(store.CloseTime1, order.ExpectedDeliveredTime)
|
||||
closetime2 = jxutils.JxOperationTime2TimeByDate(store.CloseTime2, order.ExpectedDeliveredTime)
|
||||
expectedTime = order.ExpectedDeliveredTime
|
||||
)
|
||||
if store.OpenTime1 == 0 || store.CloseTime1 == 0 {
|
||||
return "", fmt.Errorf("该门店没有营业时间,不能接单!门店:[%v]", storeID)
|
||||
}
|
||||
if !(expectedTime.Sub(opentime1) >= 0 && expectedTime.Sub(closetime1) <= 0) {
|
||||
if store.OpenTime2 != 0 && store.CloseTime2 != 0 {
|
||||
if !(expectedTime.Sub(opentime2) >= 0 && expectedTime.Sub(closetime2) <= 0) {
|
||||
if expectedTime.Sub(opentime1) < 0 {
|
||||
order.ExpectedDeliveredTime = opentime1
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
} else {
|
||||
if expectedTime.Sub(opentime2) < 0 {
|
||||
order.ExpectedDeliveredTime = opentime2
|
||||
} else {
|
||||
order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1)
|
||||
}
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if expectedTime.Sub(opentime1) < 0 {
|
||||
order.ExpectedDeliveredTime = opentime1
|
||||
} else {
|
||||
order.ExpectedDeliveredTime = opentime1.AddDate(0, 0, 1)
|
||||
}
|
||||
order.BusinessType = model.BusinessTypeDingshida
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return "", fmt.Errorf("未查询到该门店对应的平台信息!门店:[%v]", order.StoreID)
|
||||
}
|
||||
|
||||
@@ -194,6 +194,7 @@ var (
|
||||
"18328080405": "18328080405",
|
||||
"17380734342": "17380734342",
|
||||
"15208271238": "15208271238",
|
||||
"18583684218": "18583684218",
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
@@ -713,12 +713,14 @@ func buildSetFinishHook(task tasksch.ITask, ctx *jxcontext.Context) {
|
||||
globals.SugarLogger.Debugf("同步错误发送钉钉消息失败, authinfo [%v] , [%v]", *authInfo, err)
|
||||
}
|
||||
} else {
|
||||
if time.Now().Hour() >= 20 || time.Now().Hour() < 7 {
|
||||
downloadURL, _, _ := WirteToExcelBySyncFailed(task)
|
||||
user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913")
|
||||
noticeMsg += fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL)
|
||||
if user != nil && err == nil {
|
||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "同步错误返回", noticeMsg)
|
||||
if len(task.GetFailedList()) > 1 {
|
||||
if time.Now().Hour() >= 20 || time.Now().Hour() < 7 {
|
||||
downloadURL, _, _ := WirteToExcelBySyncFailed(task)
|
||||
user, err := dao.GetUserByID(dao.GetDB(), "mobile", "18160030913")
|
||||
noticeMsg += fmt.Sprintf("[详情点我]%s/billshow/?normal=true&path=%s \n", globals.BackstageHost, downloadURL)
|
||||
if user != nil && err == nil {
|
||||
ddmsg.SendUserMessage(dingdingapi.MsgTyeText, user.UserID, "同步错误返回", noticeMsg)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1235,9 +1237,12 @@ func SyncSkuExperfixAndWatermark(ctx *jxcontext.Context) (err error) {
|
||||
for _, v := range skuIDs {
|
||||
OnUpdateThing(ctx, db, nil, int64(v), model.ThingTypeSku)
|
||||
}
|
||||
CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, ctx.GetUserName())
|
||||
// CurVendorSync.SyncSkus(ctx, db, nil, skuIDs, true, true, ctx.GetUserName())
|
||||
} else {
|
||||
CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{skuExinfo.VendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, true, true)
|
||||
if len(skuIDs) > 0 {
|
||||
SetStoreSkuSyncStatus2(db, nil, []int{skuExinfo.VendorID}, skuIDs, model.SyncFlagModifiedMask)
|
||||
}
|
||||
// CurVendorSync.SyncStoresSkus2(ctx, nil, 0, db, []int{skuExinfo.VendorID}, nil, false, skuIDs, nil, model.SyncFlagModifiedMask, true, true)
|
||||
}
|
||||
return retVal, err
|
||||
}, skuExinfos)
|
||||
|
||||
@@ -390,10 +390,13 @@ func doDailyWork2() {
|
||||
func doDailyWork() {
|
||||
globals.SugarLogger.Debug("doDailyWork")
|
||||
|
||||
//同步商品额外前缀和水印图(打标记)
|
||||
cms.SyncSkuExperfixAndWatermark(jxcontext.AdminCtx)
|
||||
|
||||
dao.SetStoresMapSyncStatus(dao.GetDB(), nil, nil, model.SyncFlagStoreStatus)
|
||||
cms.CurVendorSync.SyncStore2(jxcontext.AdminCtx, dao.GetDB(), nil, nil, true, true)
|
||||
|
||||
// syncStoreSku()
|
||||
syncStoreSku()
|
||||
InitEx()
|
||||
cms.SyncStoresCourierInfo(jxcontext.AdminCtx, nil, false, true)
|
||||
netprinter.RebindAllPrinters(jxcontext.AdminCtx, false, true)
|
||||
@@ -419,8 +422,6 @@ func doDailyWork() {
|
||||
orderman.RefreshJdShopOrdersEarningPrice(jxcontext.AdminCtx, time.Now().AddDate(0, 0, -3).Format("20060102"), time.Now().Format("20060102"))
|
||||
//同步上架京东商城待售商品
|
||||
cms.RefreshJdsSkusStatus(jxcontext.AdminCtx)
|
||||
//同步商品额外前缀和水印图
|
||||
cms.SyncSkuExperfixAndWatermark(jxcontext.AdminCtx)
|
||||
}
|
||||
|
||||
func RefreshRealMobile(ctx *jxcontext.Context, vendorID int, fromTime, toTime time.Time, isAsync, isContinueWhenError bool) (hint string, err error) {
|
||||
|
||||
@@ -1560,28 +1560,29 @@ func UploadJdsImage(ctx *jxcontext.Context) (err error) {
|
||||
// }
|
||||
|
||||
//京东商城街道name
|
||||
// var stores []*model.Store
|
||||
// sql := `
|
||||
// SELECT b.*
|
||||
// FROM store_map a, store b
|
||||
// WHERE a.store_id = b.id
|
||||
// AND a.vendor_store_id = '' AND a.vendor_id = 5 AND a.deleted_at = ?
|
||||
// AND b.deleted_at = ?
|
||||
// `
|
||||
// sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue}
|
||||
// err = dao.GetRows(db, &stores, sql, sqlParams)
|
||||
// for _, v := range stores {
|
||||
// result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(v.Lng), jxutils.IntCoordinate2Standard(v.Lat))
|
||||
// if result["regeocode"] != nil {
|
||||
// street := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{})["township"].(string)
|
||||
// if street != "" {
|
||||
// storeMaps, _ := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, []int{v.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "")
|
||||
// storeMap := storeMaps[0]
|
||||
// storeMap.JdsStreetName = street
|
||||
// dao.UpdateEntity(db, storeMap, "JdsStreetName")
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
var stores []*model.Store
|
||||
var db = dao.GetDB()
|
||||
sql := `
|
||||
SELECT b.*
|
||||
FROM store_map a, store b
|
||||
WHERE a.store_id = b.id
|
||||
AND a.vendor_store_id = '' AND a.vendor_id = 5 AND a.deleted_at = ?
|
||||
AND b.deleted_at = ?
|
||||
`
|
||||
sqlParams := []interface{}{utils.DefaultTimeValue, utils.DefaultTimeValue}
|
||||
err = dao.GetRows(db, &stores, sql, sqlParams)
|
||||
for _, v := range stores {
|
||||
result, _ := api.AutonaviAPI.GetCoordinateAreaInfo(jxutils.IntCoordinate2Standard(v.Lng), jxutils.IntCoordinate2Standard(v.Lat))
|
||||
if result["regeocode"] != nil {
|
||||
street := result["regeocode"].(map[string]interface{})["addressComponent"].(map[string]interface{})["township"].(string)
|
||||
if street != "" {
|
||||
storeMaps, _ := dao.GetStoresMapList(db, []int{model.VendorIDJDShop}, []int{v.ID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "")
|
||||
storeMap := storeMaps[0]
|
||||
storeMap.JdsStreetName = street
|
||||
dao.UpdateEntity(db, storeMap, "JdsStreetName")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// var stores []*model.Store
|
||||
// sql := `
|
||||
|
||||
@@ -337,7 +337,7 @@ func GetStoresOrderSaleInfo(db *DaoDB, storeIDList []int, fromTime time.Time, to
|
||||
return saleInfoList, err
|
||||
}
|
||||
|
||||
func GetAfsOrderSkuInfo(db *DaoDB, vendorOrderID, afsOrderID string, vendorID int) (skus []*model.OrderFinancialSkuExt, err error) {
|
||||
func GetAfsOrderSkuInfo(db *DaoDB, vendorOrderID, afsOrderID string, vendorID int, isNotFaild bool) (skus []*model.OrderFinancialSkuExt, err error) {
|
||||
if vendorOrderID == "" && afsOrderID == "" {
|
||||
return nil, fmt.Errorf("必须指定订单或售后单ID")
|
||||
}
|
||||
@@ -346,6 +346,7 @@ func GetAfsOrderSkuInfo(db *DaoDB, vendorOrderID, afsOrderID string, vendorID in
|
||||
FROM order_sku_financial t1
|
||||
LEFT JOIN sku t2 ON t2.id = IF(t1.jx_sku_id <> 0, t1.jx_sku_id, t1.sku_id)
|
||||
LEFT JOIN sku_name t3 ON t3.id = t2.name_id
|
||||
LEFT JOIN afs_order t4 ON t4.afs_order_id = t1.afs_order_id
|
||||
WHERE t1.is_afs_order = 1 AND t1.vendor_id = ?`
|
||||
sqlParams := []interface{}{
|
||||
vendorID,
|
||||
@@ -359,7 +360,10 @@ func GetAfsOrderSkuInfo(db *DaoDB, vendorOrderID, afsOrderID string, vendorID in
|
||||
sql += " AND t1.afs_order_id = ?"
|
||||
sqlParams = append(sqlParams, afsOrderID)
|
||||
}
|
||||
|
||||
if isNotFaild {
|
||||
sql += " AND t4.status <> ?"
|
||||
sqlParams = append(sqlParams, model.AfsOrderStatusFailed)
|
||||
}
|
||||
err = GetRows(db, &skus, sql, sqlParams...)
|
||||
return skus, err
|
||||
}
|
||||
@@ -1292,3 +1296,45 @@ func GetSimpleOrderSkus(db *DaoDB, vendorOrderID string) (skus []*model.OrderSku
|
||||
err = GetRows(db, &skus, sql, sqlParams)
|
||||
return skus, err
|
||||
}
|
||||
|
||||
func GetAfsOrdersByPage(db *DaoDB, vendorOrderID, afsOrderID, userID string, fromTime, toTime time.Time, offset, pageSize int) (afsOrderList []*model.AfsOrder, totalCount int, err error) {
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
offset = jxutils.FormalizePageOffset(offset)
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS t1.*
|
||||
FROM afs_order t1
|
||||
LEFT JOIN goods_order t2 ON t2.vendor_order_id = t1.vendor_order_id AND t2.vendor_id = t1.vendor_id
|
||||
WHERE 1 = 1
|
||||
`
|
||||
sqlParams := []interface{}{}
|
||||
if vendorOrderID != "" {
|
||||
sql += " AND t1.vendor_order_id = ?"
|
||||
sqlParams = append(sqlParams, vendorOrderID)
|
||||
}
|
||||
if afsOrderID != "" {
|
||||
sql += " AND t1.afs_order_id = ?"
|
||||
sqlParams = append(sqlParams, afsOrderID)
|
||||
}
|
||||
if !utils.IsTimeZero(fromTime) {
|
||||
sql += " AND t1.afs_created_at >= ?"
|
||||
sqlParams = append(sqlParams, fromTime)
|
||||
}
|
||||
if !utils.IsTimeZero(toTime) {
|
||||
sql += " AND t1.afs_created_at <= ?"
|
||||
sqlParams = append(sqlParams, toTime)
|
||||
}
|
||||
if userID != "" {
|
||||
sql += " AND t2.user_id = ?"
|
||||
sqlParams = append(sqlParams, userID)
|
||||
}
|
||||
sql += ` ORDER BY t1.afs_order_id DESC
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
Begin(db)
|
||||
defer Commit(db)
|
||||
if err = GetRows(db, &afsOrderList, sql, sqlParams...); err == nil {
|
||||
totalCount = GetLastTotalRowCount(db)
|
||||
}
|
||||
return afsOrderList, totalCount, err
|
||||
}
|
||||
|
||||
@@ -61,7 +61,13 @@ func OnWaybillExcept(msg *mtpsapi.CallbackOrderExceptionMsg) (retVal *mtpsapi.Ca
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) OnWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *mtpsapi.CallbackResponse) {
|
||||
c.pushToGy(msg)
|
||||
vendorOrderID, _ := jxutils.SplitUniversalOrderID(msg.OrderID)
|
||||
order, _ := dao.GetSimpleOrder(dao.GetDB(), vendorOrderID)
|
||||
//查不到订单可能就是果园的订单
|
||||
if order == nil {
|
||||
c.pushToGy(msg)
|
||||
return mtpsapi.SuccessResponse
|
||||
}
|
||||
jxutils.CallMsgHandler(func() {
|
||||
retVal = c.onWaybillMsg(msg)
|
||||
}, jxutils.ComposeUniversalOrderID(msg.OrderID, model.VendorIDMTPS))
|
||||
@@ -105,37 +111,31 @@ func (c *DeliveryHandler) onWaybillMsg(msg *mtpsapi.CallbackOrderMsg) (retVal *m
|
||||
globals.SugarLogger.Warnf("onWaybillMsg unknown msg:%v", msg)
|
||||
return mtpsapi.SuccessResponse
|
||||
}
|
||||
globals.SugarLogger.Debugf("onWaybillMsg test, %v", msg)
|
||||
return mtpsapi.Err2CallbackResponse(partner.CurOrderManager.OnWaybillStatusChanged(order), order.VendorStatus)
|
||||
}
|
||||
|
||||
func (c *DeliveryHandler) pushToGy(msg *mtpsapi.CallbackOrderMsg) {
|
||||
vendorOrderID, _ := jxutils.SplitUniversalOrderID(msg.OrderID)
|
||||
order, _ := dao.GetSimpleOrder(dao.GetDB(), vendorOrderID)
|
||||
//查不到订单可能就是果园的订单
|
||||
if order == nil {
|
||||
cl := http.Client{}
|
||||
params := make(map[string]interface{})
|
||||
params["mt_peisong_id"] = msg.MtPeisongID
|
||||
params["courier_name"] = msg.CourierName
|
||||
params["delivery_id"] = msg.DeliveryID
|
||||
params["appkey"] = msg.AppKey
|
||||
params["order_id"] = msg.OrderID
|
||||
params["courier_phone"] = msg.CourierPhone
|
||||
params["status"] = msg.Status
|
||||
params["timestamp"] = msg.Timestamp
|
||||
params["cancel_reason_id"] = msg.CancelReasonId
|
||||
params["cancel_reason"] = msg.CancelReason
|
||||
urls := utils.Map2URLValues(params)
|
||||
sign := signParams(urls)
|
||||
params["sign"] = sign
|
||||
request, err := http.NewRequest(http.MethodPost, "http://callback-jxgy.jxc4.com/mtps/status", strings.NewReader(utils.Map2URLValues(params).Encode()))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
|
||||
cl.Do(request)
|
||||
cl := http.Client{}
|
||||
params := make(map[string]interface{})
|
||||
params["mt_peisong_id"] = msg.MtPeisongID
|
||||
params["courier_name"] = msg.CourierName
|
||||
params["delivery_id"] = msg.DeliveryID
|
||||
params["appkey"] = msg.AppKey
|
||||
params["order_id"] = msg.OrderID
|
||||
params["courier_phone"] = msg.CourierPhone
|
||||
params["status"] = msg.Status
|
||||
params["timestamp"] = msg.Timestamp
|
||||
params["cancel_reason_id"] = msg.CancelReasonId
|
||||
params["cancel_reason"] = msg.CancelReason
|
||||
urls := utils.Map2URLValues(params)
|
||||
sign := signParams(urls)
|
||||
params["sign"] = sign
|
||||
request, err := http.NewRequest(http.MethodPost, "http://callback-jxgy.jxc4.com/mtps/status", strings.NewReader(utils.Map2URLValues(params).Encode()))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
request.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
|
||||
cl.Do(request)
|
||||
}
|
||||
|
||||
func signParams(params url.Values) string {
|
||||
|
||||
@@ -114,7 +114,7 @@ type IOrderManager interface {
|
||||
|
||||
GetOrderWaybillInfo(ctx *jxcontext.Context, vendorOrderID string, vendorID int, isNotEnded, isGetPos bool) (bills []*model.WaybillExt, err error)
|
||||
|
||||
ChangeOrderInfo(order *model.GoodsOrder, valid map[string]interface{}) (err error)
|
||||
ChangeOrderInfo(order *model.GoodsOrder) (err error)
|
||||
// afs order
|
||||
OnAfsOrderAdjust(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus) (err error)
|
||||
OnAfsOrderNew(afsOrder *model.AfsOrder, orderStatus *model.OrderStatus) (err error)
|
||||
|
||||
@@ -213,7 +213,7 @@ func (c *PrinterHandler) getOrderContent2(order *model.GoodsOrder, storeTel stri
|
||||
|5
|
||||
|5
|
||||
|5商品明细:
|
||||
|5品名 数量 单价 小计
|
||||
|5品名 数量
|
||||
|5--------------------------------
|
||||
`
|
||||
// |6实际支付: %s
|
||||
@@ -234,7 +234,8 @@ func (c *PrinterHandler) getOrderContent2(order *model.GoodsOrder, storeTel stri
|
||||
for _, sku := range order.Skus {
|
||||
orderFmt += `|5%s`
|
||||
orderFmt += `|5%8s`
|
||||
orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count)))
|
||||
orderParams = append(orderParams, sku.SkuName, "x"+utils.Int2Str(sku.Count))
|
||||
// jxutils.IntPrice2StandardCurrencyString(sku.SalePrice), jxutils.IntPrice2StandardCurrencyString(sku.SalePrice*int64(sku.Count))
|
||||
}
|
||||
orderFmt += `
|
||||
|5
|
||||
|
||||
@@ -127,8 +127,8 @@ func (c *PurchaseHandler) onOrderInfoChangeMsg(vendorOrgCode string, msg *jdapi.
|
||||
order, _, err := c.getOrder(a, msg.BillID)
|
||||
if err == nil {
|
||||
globals.SugarLogger.Debugf("onOrderInfoChangeMsg orderID:%s", msg.BillID)
|
||||
valid := orderInfoChangeSet(order, msg)
|
||||
partner.CurOrderManager.ChangeOrderInfo(order, valid)
|
||||
orderInfoChangeSet(order, msg)
|
||||
partner.CurOrderManager.ChangeOrderInfo(order)
|
||||
}
|
||||
return retVal
|
||||
}
|
||||
@@ -574,25 +574,23 @@ func (c *PurchaseHandler) ConfirmSelfTake(ctx *jxcontext.Context, order *model.G
|
||||
return err
|
||||
}
|
||||
|
||||
func orderInfoChangeSet(order *model.GoodsOrder, msg *jdapi.CallbackOrderInfoChangeMsg) (valid map[string]interface{}) {
|
||||
valid = make(map[string]interface{})
|
||||
func orderInfoChangeSet(order *model.GoodsOrder, msg *jdapi.CallbackOrderInfoChangeMsg) {
|
||||
if msg.BuyerFullAddress != "" {
|
||||
valid["consigneeAddress"] = msg.BuyerFullAddress
|
||||
order.ConsigneeAddress = msg.BuyerFullAddress
|
||||
}
|
||||
if msg.BuyerFullName != "" {
|
||||
valid["consigneeName"] = msg.BuyerFullName
|
||||
order.ConsigneeName = msg.BuyerFullName
|
||||
}
|
||||
if msg.BuyerMobile != "" {
|
||||
valid["consigneeMobile"] = msg.BuyerMobile
|
||||
order.ConsigneeMobile = msg.BuyerMobile
|
||||
}
|
||||
if msg.BuyerLat != 0 {
|
||||
valid["consigneeLat"] = jxutils.StandardCoordinate2Int(msg.BuyerLat)
|
||||
order.ConsigneeLat = jxutils.StandardCoordinate2Int(msg.BuyerLat)
|
||||
}
|
||||
if msg.BuyerLng != 0 {
|
||||
valid["consigneeLng"] = jxutils.StandardCoordinate2Int(msg.BuyerLng)
|
||||
order.ConsigneeLng = jxutils.StandardCoordinate2Int(msg.BuyerLng)
|
||||
}
|
||||
if msg.OrderBuyerRemark != "" {
|
||||
valid["buyerComment"] = msg.OrderBuyerRemark
|
||||
order.BuyerComment = msg.OrderBuyerRemark
|
||||
}
|
||||
return valid
|
||||
}
|
||||
|
||||
@@ -202,6 +202,15 @@ func GetMyOrders(ctx *jxcontext.Context, fromDateStr, toDateStr string, params m
|
||||
return pagedInfo, err
|
||||
}
|
||||
|
||||
func GetMyAfsOrders(ctx *jxcontext.Context, vendorOrderID, afsOrderID, userID, fromTime, toTime string, offset, pageSize int) (pagedInfo *model.PagedInfo, err error) {
|
||||
afsOrderList, totalCount, err := dao.GetAfsOrdersByPage(dao.GetDB(), vendorOrderID, afsOrderID, userID, utils.Str2Time(fromTime), utils.Str2Time(toTime), offset, pageSize)
|
||||
pagedInfo = &model.PagedInfo{
|
||||
TotalCount: totalCount,
|
||||
Data: afsOrderList,
|
||||
}
|
||||
return pagedInfo, err
|
||||
}
|
||||
|
||||
func GetMyOrderCountInfo(ctx *jxcontext.Context, fromDate, toDate time.Time, statuss []int) (countInfo []*model.GoodsOrderCountInfo, err error) {
|
||||
countInfo, err = dao.GetMyOrderCountInfo(dao.GetDB(), ctx.GetUserID(), fromDate, toDate, statuss)
|
||||
return countInfo, err
|
||||
|
||||
@@ -5,6 +5,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
@@ -36,15 +38,18 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod
|
||||
StatusTime: time.Now(),
|
||||
Remark: reason,
|
||||
}
|
||||
partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus)
|
||||
if status == model.AfsOrderStatusFinished {
|
||||
orderPays, err := dao.GetOrderPayList(dao.GetDB(), order.VendorOrderID, order.VendorID)
|
||||
if err == nil {
|
||||
_, err = localjx.RefundOrderByTL(ctx, orderPays[0], order.VendorOrderID, int(order.SkuUserMoney), reason)
|
||||
if err != nil {
|
||||
return err
|
||||
} else {
|
||||
partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
partner.CurOrderManager.OnAfsOrderStatusChanged(orderStatus)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -57,12 +62,13 @@ func (c *PurchaseHandler) ConfirmReceivedReturnGoods(ctx *jxcontext.Context, ord
|
||||
|
||||
// 发起全款退款
|
||||
func (c *PurchaseHandler) RefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, reason string) (err error) {
|
||||
err = fmt.Errorf("%s不支持售后全额退款,请让买家发起退款", model.VendorChineseNames[model.VendorIDJX])
|
||||
err = c.PartRefundOrder(ctx, order, order.Skus, reason)
|
||||
return err
|
||||
}
|
||||
|
||||
// 发起部分退款
|
||||
func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.GoodsOrder, refundSkuList []*model.OrderSku, reason string) (err error) {
|
||||
globals.SugarLogger.Debugf("PartRefundOrder jx, orderID :%v", order.VendorOrderID)
|
||||
var (
|
||||
skuMap = make(map[int]*model.OrderSku)
|
||||
appID = ""
|
||||
@@ -105,23 +111,27 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G
|
||||
}
|
||||
if skuMap[sku.SkuID] != nil {
|
||||
orderSku.Name = skuMap[sku.SkuID].SkuName
|
||||
orderSku.UserMoney = skuMap[sku.SkuID].SalePrice
|
||||
salePrice += skuMap[sku.SkuID].SalePrice
|
||||
orderSku.UserMoney = skuMap[sku.SkuID].SalePrice * int64(sku.Count)
|
||||
salePrice += skuMap[sku.SkuID].SalePrice * int64(sku.Count)
|
||||
}
|
||||
afsOrder.SkuUserMoney += orderSku.UserMoney
|
||||
afsOrder.Skus = append(afsOrder.Skus, orderSku)
|
||||
}
|
||||
if afsOrder != nil {
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
|
||||
if !isJxShop(appID) {
|
||||
orderPays, err := dao.GetOrderPayList(dao.GetDB(), order.VendorOrderID, order.VendorID)
|
||||
if err == nil {
|
||||
_, err = localjx.RefundOrderByTL(ctx, orderPays[0], order.VendorOrderID, int(salePrice), reason)
|
||||
if err != nil {
|
||||
return err
|
||||
} else {
|
||||
if afsOrder != nil {
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
err = partner.CurOrderManager.OnAfsOrderNew(afsOrder, orderStatus)
|
||||
}
|
||||
return err
|
||||
}
|
||||
@@ -141,7 +151,7 @@ func buildOrderStatus(ctx *jxcontext.Context, order *model.GoodsOrder, reason st
|
||||
if isJxShop {
|
||||
orderStatus.Status = model.AfsOrderStatusWait4Approve
|
||||
} else {
|
||||
orderStatus.Status = model.AfsOrderStatusNew
|
||||
orderStatus.Status = model.AfsOrderStatusFinished
|
||||
}
|
||||
return orderStatus
|
||||
}
|
||||
|
||||
@@ -396,14 +396,14 @@ func (c *PurchaseHandler) callbackMsg2Status(msg *mtwmapi.CallbackMsg) (orderSta
|
||||
if msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
|
||||
if notifyType == mtwmapi.NotifyTypePartyApply {
|
||||
if globals.EnableMtwmStoreWrite {
|
||||
goods, err := dao.GetSimpleOrder(dao.GetDB(), orderID)
|
||||
if err == nil {
|
||||
if goods.Status < model.OrderStatusDelivering {
|
||||
api.MtwmAPI.OrderRefundAgree(utils.Str2Int64(orderID), "自动确认退款")
|
||||
} else {
|
||||
api.MtwmAPI.OrderRefundReject(utils.Str2Int64(orderID), "商品配送中,请联系门店。") // todo 京东与饿百都没有售前用户提出订单调整的,自动拒绝调整单
|
||||
}
|
||||
}
|
||||
// goods, err := dao.GetSimpleOrder(dao.GetDB(), orderID)
|
||||
// if err == nil {
|
||||
// if goods.Status < model.OrderStatusDelivering {
|
||||
api.MtwmAPI.OrderRefundAgree(utils.Str2Int64(orderID), "自动确认退款")
|
||||
// } else {
|
||||
// api.MtwmAPI.OrderRefundReject(utils.Str2Int64(orderID), "商品配送中,请联系门店。") // todo 京东与饿百都没有售前用户提出订单调整的,自动拒绝调整单
|
||||
// }
|
||||
// }
|
||||
}
|
||||
} else if notifyType == mtwmapi.NotifyTypeSuccess {
|
||||
vendorStatus = fakeOrderAdjustFinished
|
||||
|
||||
@@ -373,14 +373,15 @@ func (c *OrderController) GetAfsOrders() {
|
||||
// @Description 得到售后单SKU信息(订单与售后单必填一项)
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorID query int true "售后单所属的厂商ID"
|
||||
// @Param vendorOrderID query string faslse "订单ID"
|
||||
// @Param afsOrderID query string faslse "售后单ID"
|
||||
// @Param vendorOrderID query string false "订单ID"
|
||||
// @Param afsOrderID query string false "售后单ID"
|
||||
// @Param isNotFaild query bool false "是否查非失败的"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetAfsOrderSkuInfo [get]
|
||||
func (c *OrderController) GetAfsOrderSkuInfo() {
|
||||
c.callGetAfsOrderSkuInfo(func(params *tOrderGetAfsOrderSkuInfoParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, params.AfsOrderID, params.VendorID)
|
||||
retVal, err = dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, params.AfsOrderID, params.VendorID, params.IsNotFaild)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
@@ -856,7 +857,7 @@ func (c *OrderController) RefundOrder() {
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
afsSkuList, err := dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, "", params.VendorID)
|
||||
afsSkuList, err := dao.GetAfsOrderSkuInfo(dao.GetDB(), params.VendorOrderID, "", params.VendorID, false)
|
||||
if err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
@@ -111,6 +111,26 @@ func (c *JxOrderController) GetMyOrders() {
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 查询自己的售后单
|
||||
// @Description 查询自己的售后单
|
||||
// @Param token header string true "认证token"
|
||||
// @Param vendorOrderID query string false "订单号,如果此项不为空,忽略其它所有查询条件"
|
||||
// @Param afsOrderID query string false "售后单号"
|
||||
// @Param userID query string false "用户ID"
|
||||
// @Param fromTime query string false "开始日期(包含),格式(2006-01-02),如果订单号为空此项必须要求"
|
||||
// @Param toTime query string false "结束日期(包含),格式(2006-01-02),如果订单号为空此项必须要求"
|
||||
// @Param offset query int false "结果起始序号(以0开始,缺省为0)"
|
||||
// @Param pageSize query int false "结果页大小(缺省为50,-1表示全部)"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetMyAfsOrders [get]
|
||||
func (c *JxOrderController) GetMyAfsOrders() {
|
||||
c.callGetMyAfsOrders(func(params *tJxorderGetMyAfsOrdersParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = localjx.GetMyAfsOrders(params.Ctx, params.VendorOrderID, params.AfsOrderID, params.UserID, params.FromTime, params.ToTime, params.Offset, params.PageSize)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
// @Title 查询自己的订单状态数量信息
|
||||
// @Description 查询自己的订单状态数量信息
|
||||
// @Param token header string true "认证token"
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user