Merge remote-tracking branch 'origin/mark' into yonghui

This commit is contained in:
苏尹岚
2019-12-02 16:15:14 +08:00
8 changed files with 83 additions and 38 deletions

View File

@@ -92,11 +92,10 @@ type StoreSkuNameExt struct {
StoreName string `json:"storeName"`
model.SkuName
PayPercentage int `json:"-"`
UnitPrice int `json:"unitPrice"`
Skus []map[string]interface{} `orm:"-" json:"skus2,omitempty"`
Skus2 []*StoreSkuExt `orm:"-" json:"skus,omitempty"`
SkusStr string `json:"-"`
PayPercentage int `json:"-"`
UnitPrice int `json:"unitPrice"`
Skus []*StoreSkuExt `orm:"-" json:"skus,omitempty"`
SkusStr string `json:"-"`
PendingOpType int8 `json:"pendingOpType"` // 取值同 StoreOpRequest.Type
PendingUnitPrice int `json:"pendingUnitPrice"` // 这个是待审核的价格申请
@@ -495,7 +494,7 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
} else {
storeName = storeNameMap[index]
}
storeName.Skus2 = append(storeName.Skus2, &v.StoreSkuExt)
storeName.Skus = append(storeName.Skus, &v.StoreSkuExt)
}
if err == nil {
if isSaleInfo {
@@ -524,7 +523,7 @@ func GetStoreAndSkuIDsFromInfo(skuNamesInfo *StoreSkuNamesInfo) (storeIDs, skuID
skuIDMap := make(map[int]int)
for _, skuName := range skuNamesInfo.SkuNames {
storeIDMap[skuName.StoreID] = 1
for _, sku := range skuName.Skus2 {
for _, sku := range skuName.Skus {
skuIDMap[sku.SkuID] = 1
}
}
@@ -572,8 +571,8 @@ func updateActPrice4StoreSkuNameNew(db *dao.DaoDB, storeIDs, skuIDs []int, skuNa
actStoreSkuMap4EarningPrice := jxutils.NewActStoreSkuMap(actStoreSkuList, false)
for _, skuName := range skuNamesInfo.SkuNames {
if len(skuName.Skus2) > 0 {
for _, v := range skuName.Skus2 {
if len(skuName.Skus) > 0 {
for _, v := range skuName.Skus {
if actStoreSku := actStoreSkuMap4Act.GetActStoreSku(skuName.StoreID, v.SkuID, -1); actStoreSku != nil {
v.ActPrice = int(actStoreSku.ActualActPrice)
v.ActID = actStoreSku.ActID
@@ -628,7 +627,7 @@ func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
var newSkuNames []*StoreSkuNameExt
for _, skuName := range skuNamesInfo.SkuNames {
var newSkus []*StoreSkuExt
for _, sku := range skuName.Skus2 {
for _, sku := range skuName.Skus {
saleInfo := saleInfoMap[jxutils.Combine2Int(skuName.StoreID, sku.SkuID)]
if saleInfo == nil && fromCount == 0 {
saleInfo = &SkuSaleInfo{}
@@ -640,7 +639,7 @@ func updateSaleInfo4StoreSkuName(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
}
}
if len(newSkus) > 0 {
skuName.Skus2 = newSkus
skuName.Skus = newSkus
newSkuNames = append(newSkuNames, skuName)
}
}

View File

@@ -227,7 +227,7 @@ func GetMultiStoreAllSkuInfo(ctx *jxcontext.Context, vendorMap map[int]bool) {
func GetFilterJxSkuInfoMap(jxSkuInfoList []*StoreSkuNameExt) map[int]*StoreSkuNameExt {
filterJxSkuInfoMap := make(map[int]*StoreSkuNameExt)
for _, value := range jxSkuInfoList {
for _, skuInfo := range value.Skus2 {
for _, skuInfo := range value.Skus {
filterJxSkuInfoMap[skuInfo.SkuID] = value
}
}
@@ -329,24 +329,24 @@ func CompareJxAndVendor(vendorID int, storeIDStr, vendorStoreID, storeName strin
//多规格商品不用比较数量单位
if jxSkuInfo.IsSpu == 0 {
//jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..)
jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, jxSkuInfo.SkuName.Unit, jxSkuInfo.Skus2[0].SkuSpecQuality, jxSkuInfo.Skus2[0].SkuSpecUnit, 0)
jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus[0].Comment, jxSkuInfo.SkuName.Unit, jxSkuInfo.Skus[0].SkuSpecQuality, jxSkuInfo.Skus[0].SkuSpecUnit, 0)
} else {
//jxSkuDetailName : 前缀 ([荐]) + 分类名(xxx水饺) + 数量单位(约..g/份) + 注释 (补充..)
jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus2[0].Comment, "", jxSkuInfo.Skus2[0].SkuSpecQuality, "", 0)
jxSkuDetailName = jxutils.ComposeSkuName(jxSkuInfo.SkuName.Prefix, jxSkuInfo.SkuName.Name, jxSkuInfo.Skus[0].Comment, "", jxSkuInfo.Skus[0].SkuSpecQuality, "", 0)
}
//jxSkuSaleStatus : 商品状态 skustatus 优先级高于 StoreSkuStatus
jxSkuSaleStatus := jxutils.MergeSkuStatus(jxSkuInfo.Skus2[0].SkuStatus, jxSkuInfo.Skus2[0].StoreSkuStatus)
jxSkuSaleStatus := jxutils.MergeSkuStatus(jxSkuInfo.Skus[0].SkuStatus, jxSkuInfo.Skus[0].StoreSkuStatus)
jxSkuSaleStatusName := GetSkuSaleStatusName(jxSkuSaleStatus)
vendorSkuInfo := filterVendorSkuInfoMap[skuID]
var status int8
if vendorID == model.VendorIDMTWM {
status = jxSkuInfo.Skus2[0].MtwmSyncStatus
status = jxSkuInfo.Skus[0].MtwmSyncStatus
} else if vendorID == model.VendorIDEBAI {
status = jxSkuInfo.Skus2[0].EbaiSyncStatus
status = jxSkuInfo.Skus[0].EbaiSyncStatus
} else if vendorID == model.VendorIDJD {
status = jxSkuInfo.Skus2[0].JdSyncStatus
status = jxSkuInfo.Skus[0].JdSyncStatus
}
syncStatus := utils.Int2Str(int(status))
toBeCreate := GetBoolName(model.IsSyncStatusNeedCreate(status))

View File

@@ -223,7 +223,7 @@ func GetAllStoreSkus(ctx *jxcontext.Context, parentTask tasksch.ITask, storeList
if jxSkuInfoData, err2 := cms.GetStoreSkus(ctx, storeID, []int{}, true, "", true, false, map[string]interface{}{}, 0, -1); jxSkuInfoData != nil {
jxSkuPriceMapData := make(map[int]int)
for _, value := range jxSkuInfoData.SkuNames {
for _, skuInfo := range value.Skus2 {
for _, skuInfo := range value.Skus {
saleStatus := jxutils.MergeSkuStatus(skuInfo.SkuStatus, skuInfo.StoreSkuStatus)
if saleStatus == model.SkuStatusNormal {
jxSkuPriceMapData[skuInfo.SkuID] = skuInfo.BindPrice

View File

@@ -78,7 +78,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
storeSkuData, err := cms.GetStoreSkus(ctx, storeID, citySkuIDs, true, "", true, false, map[string]interface{}{}, 0, -1)
if err == nil {
for _, value := range storeSkuData.SkuNames {
for _, skuInfo := range value.Skus2 {
for _, skuInfo := range value.Skus {
storeSkuMapData[skuInfo.SkuID] = value
}
}
@@ -98,7 +98,7 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
jxSkuInfoData, err := cms.GetStoreSkus(ctx, storeID, citySkuIDs, true, "", true, false, map[string]interface{}{}, 0, -1)
jxSkuPriceMapData := make(map[int]int)
for _, value := range jxSkuInfoData.SkuNames {
for _, skuInfo := range value.Skus2 {
for _, skuInfo := range value.Skus {
jxSkuPriceMapData[skuInfo.SkuID] = skuInfo.BindPrice
}
}
@@ -148,10 +148,10 @@ func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales
skuAndNameInfo := skuAndNameMapData[skuID]
if storeSkuInfo != nil {
skuName := storeSkuInfo.SkuName
skuInfo := storeSkuInfo.Skus2[0]
skuInfo := storeSkuInfo.Skus[0]
storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0)
storeSkuSales.SkuImage = storeSkuInfo.Img
storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus2[0].BindPrice))
storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus[0].BindPrice))
} else if skuAndNameInfo != nil {
skuNameList, err := dao.GetSkuNames(db, []int{skuAndNameInfo.NameID})
prefix := ""

View File

@@ -954,15 +954,22 @@ func GetMyOrderCountInfo(db *DaoDB, userID string, fromDate, toDate time.Time, s
if utils.IsTimeZero(fromDate) {
return nil, fmt.Errorf("必须指定开始日期")
}
if utils.IsTimeZero(toDate) {
toDate = fromDate
if !utils.IsTimeZero(fromDate) {
fromDate = utils.Time2Date(fromDate)
if utils.IsTimeZero(toDate) {
toDate = fromDate
}
}
if !utils.IsTimeZero(toDate) {
toDate = utils.Time2Date(toDate)
toDate = toDate.Add(24 * time.Hour)
}
sql := `
SELECT t1.lock_status, t1.status, COUNT(*) count
FROM goods_order t1
WHERE t1.user_id = ? AND t1.vendor_id = ?
AND t1.order_created_at >= ? AND t1.order_created_at <= ?
AND t1.order_created_at >= ? AND t1.order_created_at < ?
`
sqlParams := []interface{}{
userID,

View File

@@ -9,6 +9,7 @@ import (
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/baseapi/utils/errlist"
"git.rosy.net.cn/jx-callback/business/jxstore/cms"
"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"
@@ -346,13 +347,26 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
for _, v := range skus {
skuIDs = append(skuIDs, v.SkuID)
}
storeSkuList, err := dao.GetStoresSkusInfo(db, []int{jxOrder.StoreID}, skuIDs)
// storeSkuList, err := dao.GetStoresSkusInfo(db, []int{jxOrder.StoreID}, skuIDs)
// if err != nil {
// return nil, nil, err
// }
// storeSkuMap := make(map[int]*model.StoreSkuBind)
// for _, v := range storeSkuList {
// storeSkuMap[v.SkuID] = v
// }
storeSkuInfo, err := cms.GetStoreSkus(ctx, jxOrder.StoreID, skuIDs, true, "", true, false, map[string]interface{}{
"actVendorID": model.VendorIDJX,
}, 0, model.UnlimitedPageSize)
if err != nil {
return nil, nil, err
}
storeSkuMap := make(map[int]*model.StoreSkuBind)
for _, v := range storeSkuList {
storeSkuMap[v.SkuID] = v
storeSkuMap := make(map[int]*cms.StoreSkuExt)
for _, v1 := range storeSkuInfo.SkuNames {
for _, v2 := range v1.Skus {
storeSkuMap[v2.SkuID] = v2
}
}
skuList, err := dao.GetSkus(db, skuIDs, nil, nil, nil)
@@ -367,6 +381,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
outJxOrder2 := *jxOrder
outJxOrder2.Skus = nil
outJxOrder2.OrderPrice = 0
outJxOrder2.Weight = 0
outJxOrder = &outJxOrder2
outJxOrder.StoreName = storeDetail.Name
for _, v := range skus {
@@ -374,20 +389,38 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
if sku := skuMap[v.SkuID]; sku != nil {
jxSku := &JxSkuInfo{
SkuID: v.SkuID,
Count: v.Count,
Price: int64(storeSkuBind.JxPrice),
Count: v.Count,
SalePrice: int64(storeSkuBind.JxPrice), // todo 考虑活动价
Weight: sku.Weight,
Name: jxutils.ComposeSkuName(sku.Prefix, sku.Name, sku.Comment, sku.Unit, sku.SpecQuality, sku.SpecUnit, 0),
}
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
outJxOrder.OrderPrice += int64(v.Count) * jxSku.SalePrice
outJxOrder.Weight = v.Count * jxSku.Weight
if storeSkuBind.ActPrice != 0 && storeSkuBind.ActPrice < storeSkuBind.JxPrice {
jxSku.SalePrice = int64(storeSkuBind.ActPrice)
jxSku.Count = 1
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
outJxOrder.Weight += jxSku.Count * jxSku.Weight
if v.Count-1 > 0 {
jxSku2 := *jxSku
jxSku2.SalePrice = jxSku.Price
jxSku2.Count = v.Count - 1
jxSku = &jxSku2
} else {
jxSku = nil
}
}
if jxSku != nil {
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
outJxOrder.Weight += jxSku.Count * jxSku.Weight
}
}
}
}
sort.Sort(JxSkuInfoList(outJxOrder.Skus))
if outJxOrder.FreightPrice, _, err = delivery.CalculateDeliveryFee(dao.GetDB(), jxOrder.StoreID, "",
jxutils.StandardCoordinate2Int(deliveryAddress.Lng), jxutils.StandardCoordinate2Int(deliveryAddress.Lat),
model.CoordinateTypeMars, outJxOrder.Weight, checkTime); err == nil {

View File

@@ -428,7 +428,13 @@ func (c *PurchaseHandler) AcceptOrRefuseOrder(order *model.GoodsOrder, isAcceptI
// err = api.MtwmAPI.OrderReceived(utils.Str2Int64(order.VendorOrderID))
err = api.MtwmAPI.OrderConfirm(utils.Str2Int64(order.VendorOrderID))
if err != nil {
globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
if utils.IsErrMatch(err, utils.Int2Str(mtwmapi.ErrCodeOpFailed), []string{
"订单已经确认过了",
}) {
err = nil
} else {
globals.SugarLogger.Warnf("mtwm AcceptOrRefuseOrder orderID:%s failed with err:%v", order.VendorOrderID, err)
}
}
}
// if err == nil {

View File

@@ -42,9 +42,9 @@ func (c *PurchaseHandler) isAfsMsg(msg *mtwmapi.CallbackMsg) bool {
if msg.Cmd == mtwmapi.MsgTypeOrderRefund || msg.Cmd == mtwmapi.MsgTypeOrderPartialRefund {
// refundData := msg.Data.(*mtwmapi.CallbackRefundInfo)
orderID := utils.Str2Int64(GetOrderIDFromMsg(msg))
orderInfo, err := api.MtwmAPI.OrderGetOrderDetail2(orderID, false)
status, err := api.MtwmAPI.OrderViewStatus(orderID)
if err == nil {
return orderInfo.Status == int(utils.Str2Int64(mtwmapi.OrderStatusFinished))
return utils.Int2Str(status) == mtwmapi.OrderStatusFinished
}
globals.SugarLogger.Warnf("mtwm isAfsMsg OrderGetOrderDetail2 orderID:%d failed with error:%v", orderID, err)
}