diff --git a/business/jxcallback/orderman/order.go b/business/jxcallback/orderman/order.go index 1ca9f8344..b1de96c8c 100644 --- a/business/jxcallback/orderman/order.go +++ b/business/jxcallback/orderman/order.go @@ -799,7 +799,7 @@ func AddUpdateOrdersSupplement(ctx *jxcontext.Context, ordersSupplement *model.O return 0, fmt.Errorf("查询扣款记录有误,请联系技术部!") } if orderSupplementFee[0].Status == 1 { - return 0, fmt.Errorf("已结账的扣款信息不允许修改!门店ID:[%v],订单号:[%v]", ordersSupplement.StoreID, *ordersSupplement.VendorOrderID) + return 0, fmt.Errorf("已结账的扣款信息不允许修改!门店ID:[%v],订单号:[%v]", ordersSupplement.StoreID, ordersSupplement.VendorOrderID) } ordersSupplement.UpdatedAt = time.Now() ordersSupplement.LastOperator = ctx.GetUserName() diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index a3c597c8f..65bd5c91b 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2219,7 +2219,7 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam JOIN sku b ON a.sku_id = b.id AND b.deleted_at = ? WHERE a.deleted_at = ? AND a.store_id = ? - AND a.status = ?) + AND a.status = ?) ` sqlParams := []interface{}{ utils.DefaultTimeValue, @@ -2236,11 +2236,21 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam for _, v := range skuNameList { skuNameMap[v.ID] = v } + store, err := dao.GetStoreDetail(db, storeID, -1) + if err != nil { + return nil, err + } + var payPercentage int + if store.PayPercentage < 50 { + payPercentage = 70 + } else { + payPercentage = store.PayPercentage + } for _, v := range skuNameAndPlace { if skuNameMap[v.ID] != nil { priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{cityCode}, nil, []int{v.ID}, utils.Time2Date(time.Now().AddDate(0, 0, -1))) if len(priceReferList) > 0 { - v.Price = priceReferList[0].MidUnitPrice + v.Price = priceReferList[0].MidUnitPrice * payPercentage / 100 } v.Type = skuNameMap[v.ID].BrandID skuList, _ := dao.GetSkus(db, nil, []int{v.ID}, nil, nil) @@ -2947,9 +2957,15 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin if len(focusList) > 0 { price = focusList[0].UnitPrice } else { - priceReferList, _, _ := dao.GetPriceReferSnapshot(db, []int{store.CityCode}, nil, k, utils.Time2Date(time.Now().AddDate(0, 0, -1)), 0, 9999) + var payPercentage int + if store.PayPercentage < 50 { + payPercentage = 70 + } else { + payPercentage = store.PayPercentage + } + priceReferList, _ := dao.GetPriceReferSnapshotNoPage(db, []int{store.CityCode}, nil, []int{k}, utils.Time2Date(time.Now().AddDate(0, 0, -1))) if len(priceReferList) > 0 { - price = priceReferList[0].MidUnitPrice + price = priceReferList[0].MidUnitPrice * payPercentage / 100 } } skuBindInfo := &StoreSkuBindInfo{ @@ -2989,6 +3005,68 @@ func FocusStoreSkusBySku(ctx *jxcontext.Context, skuIDs []int, isAsync, isContin return hint, err } +func AutoFocusStoreSkusWithoutFocusForTopSkus(ctx *jxcontext.Context) (err error) { + db := dao.GetDB() + storeList, err := dao.GetStoreList(db, nil, nil, "") + for _, v := range storeList { + var ( + skuName []*model.SkuName + skuNameMap = make(map[int]int) + skuBindInfoList []*StoreSkuBindInfo + ) + sql := ` + SELECT DISTINCT a.name_id id + FROM sku a + LEFT JOIN (SELECT DISTINCT b.name_id + FROM store_sku_bind a + JOIN sku b ON a.sku_id = b.id + WHERE a.deleted_at = ? + AND store_id = ?)b ON a.name_id = b.name_id + WHERE a.status = ? + AND a.deleted_at = ? + AND b.name_id IS NULL + ` + sqlParams := []interface{}{ + utils.DefaultTimeValue, + v.ID, + model.SkuStatusNormal, + utils.DefaultTimeValue, + } + err = dao.GetRows(db, &skuName, sql, sqlParams...) + for _, v := range skuName { + skuNameMap[v.ID] = v.ID + } + skuNameAndPlaceList, err2 := GetTopSkusByCityCode(ctx, v.CityCode, v.ID) + if err2 != nil { + return err2 + } + var payPercentage int + if v.PayPercentage < 50 { + payPercentage = 70 + } else { + payPercentage = v.PayPercentage + } + if len(skuNameAndPlaceList) > 0 { + for _, v := range skuNameAndPlaceList { + if skuNameMap[v.ID] != 0 { + priceReferList, err := dao.GetPriceReferSnapshotNoPage(db, []int{v.CityCode}, nil, []int{v.ID}, utils.Time2Date(time.Now().AddDate(0, 0, -1))) + if err == nil && len(priceReferList) > 0 { + storeSkuBindInfo := &StoreSkuBindInfo{ + NameID: v.ID, + UnitPrice: priceReferList[0].MidUnitPrice * payPercentage / 100, + IsFocus: 1, + IsSale: 0, + } + skuBindInfoList = append(skuBindInfoList, storeSkuBindInfo) + } + } + } + } + UpdateStoreSkus(ctx, v.ID, skuBindInfoList, true, true) + } + return err +} + func AutoFocusStoreSkusWithoutFocus(ctx *jxcontext.Context, skuIDs []int, isSync bool) (err error) { var ( nameMap = make(map[int]*StoreSkuBindInfo) diff --git a/business/model/dao/dao_order.go b/business/model/dao/dao_order.go index 6a6b0e0e9..7339adfef 100644 --- a/business/model/dao/dao_order.go +++ b/business/model/dao/dao_order.go @@ -1084,7 +1084,7 @@ func GetOrdersSupplement(db *DaoDB, storIDs, vendorIDs, statuss []int, vendorOrd sqlParams = append(sqlParams, vendorOrderID) } if len(statuss) > 0 { - sql += " AND status IN (" + GenQuestionMarks(len(vendorIDs)) + ")" + sql += " AND status IN (" + GenQuestionMarks(len(statuss)) + ")" sqlParams = append(sqlParams, statuss) } if stype > 0 { @@ -1096,8 +1096,7 @@ func GetOrdersSupplement(db *DaoDB, storIDs, vendorIDs, statuss []int, vendorOrd } else if IsReverse == 1 { sql += " AND link_id <> 0" } - sql += ` - LIMIT ? OFFSET ?` + sql += " LIMIT ? OFFSET ?" sqlParams = append(sqlParams, pageSize, offset) Begin(db) defer Commit(db) @@ -1138,7 +1137,7 @@ func GetOrdersSupplementNoPage(db *DaoDB, ID int, storIDs, vendorIDs, statuss [] sqlParams = append(sqlParams, vendorOrderID) } if len(statuss) > 0 { - sql += " AND status IN (" + GenQuestionMarks(len(vendorIDs)) + ")" + sql += " AND status IN (" + GenQuestionMarks(len(statuss)) + ")" sqlParams = append(sqlParams, statuss) } if stype > 0 { diff --git a/business/model/order.go b/business/model/order.go index c4a7fd214..71c300506 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -347,7 +347,7 @@ type OrderPayRefund struct { type OrderSupplementFee struct { ModelIDCULD StoreID int `orm:"column(store_id)" json:"storeID"` - VendorOrderID *string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` + VendorOrderID string `orm:"column(vendor_order_id);size(48)" json:"vendorOrderID"` VendorID *int `orm:"column(vendor_id);null" json:"vendorID"` Status int `json:"status"` //账单状态,若已结账则不允许再修改 ,暂时 0为未结账,1为已结账,-1为作废 LinkID int `orm:"column(link_id)" json:"linkID"` //作为冲账标志关联某条扣款记录 diff --git a/controllers/jx_order.go b/controllers/jx_order.go index c0f3a7bb6..dffe0768f 100644 --- a/controllers/jx_order.go +++ b/controllers/jx_order.go @@ -945,7 +945,7 @@ func (c *OrderController) ComplaintRider() { func (c *OrderController) GetOrdersSupplement() { var vendorIDList, storeIDList, statusList []int c.callGetOrdersSupplement(func(params *tOrderGetOrdersSupplementParams) (retVal interface{}, errCode string, err error) { - if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDList, params.StoreIDs, &storeIDList, params.Statuss, statusList); err == nil { + if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDList, params.StoreIDs, &storeIDList, params.Statuss, &statusList); err == nil { retVal, err = orderman.GetOrdersSupplement(params.Ctx, storeIDList, vendorIDList, statusList, params.VendorOrderID, params.FromTime, params.ToTime, params.Type, params.IsReverse, params.Offset, params.PageSize) } return retVal, "", err