aa
This commit is contained in:
@@ -264,6 +264,125 @@ var (
|
||||
}
|
||||
)
|
||||
|
||||
func GetStoresSkusForStore(ctx *jxcontext.Context, storeID int, isFocus, isAct bool, keyword string, categoryID, status, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||
//权限
|
||||
if permission.IsRoled(ctx) {
|
||||
if storeIDsMap, err := permission.GetUserStoresResultMap(ctx.GetUserID()); err == nil {
|
||||
if storeIDsMap[storeID] == 0 {
|
||||
return skuNamesInfo, err
|
||||
}
|
||||
}
|
||||
}
|
||||
var (
|
||||
sqlParams []interface{}
|
||||
db = dao.GetDB()
|
||||
SkuNames []*dao.StoreSkuNameExt
|
||||
)
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS a.*, c.store_id
|
||||
FROM sku_name a
|
||||
LEFT JOIN sku b ON b.name_id = a.id AND b.status = ? AND b.deleted_at = ?
|
||||
JOIN store d ON d.deleted_at = ? AND d.id = ?
|
||||
`
|
||||
sqlParams = append(sqlParams,
|
||||
model.SkuStatusNormal, utils.DefaultTimeValue,
|
||||
utils.DefaultTimeValue, storeID,
|
||||
)
|
||||
if isFocus {
|
||||
sql += `
|
||||
LEFT
|
||||
`
|
||||
}
|
||||
sql += `
|
||||
JOIN store_sku_bind c ON c.sku_id = b.id AND c.deleted_at = ? AND c.store_id = d.id
|
||||
`
|
||||
sqlParams = append(sqlParams, utils.DefaultTimeValue)
|
||||
if status != -1 {
|
||||
sql += " AND c.status = ?"
|
||||
sqlParams = append(sqlParams, status)
|
||||
}
|
||||
sql += `
|
||||
LEFT JOIN sku_category d ON d.id = c.category_id AND d.deleted_at = ?
|
||||
`
|
||||
if categoryID != 0 {
|
||||
sql += " AND d.id = ?"
|
||||
sqlParams = append(sqlParams, categoryID)
|
||||
}
|
||||
if isAct {
|
||||
sql += `
|
||||
JOIN (
|
||||
SELECT t2.store_id, t2.sku_id,
|
||||
MIN(IF(t3.actual_act_price <= 0, NULL, t3.actual_act_price)) actual_act_price, /*non-zero min value*/
|
||||
MIN(IF(t2.earning_price <= 0, NULL, t2.earning_price)) earning_price /*non-zero min value*/
|
||||
FROM act t1
|
||||
JOIN act_store_sku t2 ON t2.act_id = t1.id AND t2.deleted_at = ?
|
||||
JOIN act_store_sku_map t3 ON t3.bind_id = t2.id AND t3.act_id = t1.id AND (t3.sync_status & ? = 0 OR t1.type = ?)
|
||||
JOIN act_map t4 ON t4.act_id = t1.id AND t4.vendor_id = t3.vendor_id AND t4.deleted_at = ? AND (t4.sync_status & ? = 0 OR t1.type = ?)
|
||||
WHERE t1.deleted_at = ? AND t1.status = ? AND NOT (t1.begin_at > ? OR t1.end_at < ?)
|
||||
AND t2.store_id = ?
|
||||
GROUP BY 1,2
|
||||
) ta ON ta.store_id = d.id AND ta.sku_id = b.id
|
||||
`
|
||||
sqlParams = append(sqlParams,
|
||||
utils.DefaultTimeValue,
|
||||
model.SyncFlagNewMask,
|
||||
model.ActSkuFake,
|
||||
utils.DefaultTimeValue,
|
||||
model.SyncFlagNewMask,
|
||||
model.ActSkuFake,
|
||||
utils.DefaultTimeValue,
|
||||
model.ActStatusCreated,
|
||||
time.Now(),
|
||||
time.Now(),
|
||||
storeID,
|
||||
)
|
||||
}
|
||||
sql += `
|
||||
WHERE a.deleted_at = ? AND a.status = ?
|
||||
`
|
||||
sqlParams = append(sqlParams,
|
||||
utils.DefaultTimeValue, model.SkuStatusNormal,
|
||||
)
|
||||
|
||||
if keyword != "" {
|
||||
sql += " AND a.name LIKE ?"
|
||||
sqlParams = append(sqlParams, "%"+keyword+"%")
|
||||
}
|
||||
sql += `
|
||||
LIMIT ? OFFSET ?
|
||||
`
|
||||
pageSize = jxutils.FormalizePageSize(pageSize)
|
||||
offset = jxutils.FormalizePageOffset(offset)
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
dao.Begin(db)
|
||||
defer dao.Commit(db)
|
||||
if err = dao.GetRows(db, &SkuNames, sql, sqlParams...); err == nil {
|
||||
skuNamesInfo.TotalCount = dao.GetLastTotalRowCount(db)
|
||||
for _, v := range SkuNames {
|
||||
var skus []*dao.StoreSkuExt
|
||||
sql := `
|
||||
SELECT * FROM sku WHERE deleted_at = ? AND name_id = ?
|
||||
`
|
||||
sqlParams := []interface{}{utils.DefaultTimeValue, v.ID}
|
||||
if err = dao.GetRows(db, &skus, sql, sqlParams); err == nil {
|
||||
v.Skus = skus
|
||||
}
|
||||
}
|
||||
skuNamesInfo.SkuNames = SkuNames
|
||||
if err == nil {
|
||||
if isFocus {
|
||||
if err == nil {
|
||||
storeIDs, skuIDs := GetStoreAndSkuIDsFromInfo(skuNamesInfo)
|
||||
err = dao.UpdateActPrice4StoreSkuNameNew(db, storeIDs, skuIDs, skuNamesInfo, -1)
|
||||
}
|
||||
} else {
|
||||
err = updateUnitPrice4StoreSkuNameNew(db, skuNamesInfo)
|
||||
}
|
||||
}
|
||||
}
|
||||
return skuNamesInfo, err
|
||||
}
|
||||
|
||||
func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, params map[string]interface{}, offset, pageSize int) (skuNamesInfo *dao.StoreSkuNamesInfo, err error) {
|
||||
return GetStoresSkus(ctx, []int{storeID}, skuIDs, nil, isFocus, false, 0, keyword, isBySku, isAct, params, offset, pageSize)
|
||||
}
|
||||
|
||||
@@ -944,28 +944,20 @@ func (c *StoreSkuController) GetVendorStoreSkus() {
|
||||
// @Title 得到商家商品信息
|
||||
// @Description 得到商家商品信息,如下条件之间是与的关系。对于没有认领的商品,按城市限制。但对于已经认领的商品就不限制了,因为已经在平台上可售,可以操作(改价等等)
|
||||
// @Param token header string false "认证token"
|
||||
// @Param storeIDs query string false "门店ID"
|
||||
// @Param storeID query int true "门店ID"
|
||||
// @Param isFocus query bool true "是否已关注(认领)"
|
||||
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||
// @Param name query string false "商品名称(不要求完全一致)"
|
||||
// @Param categoryID query int false "商品所属类别ID"
|
||||
// @Param fromStatus query int false "查询起始状态(0:不可售,1:可售)"
|
||||
// @Param toStatus query int false "查询结束状态(0:不可售,1:可售)"
|
||||
// @Param status query int false "查询起始状态(0:不可售,1:可售,-1 全部)"
|
||||
// @Param offset query int false "门店列表起始序号(以0开始,缺省为0)"
|
||||
// @Param pageSize query int false "门店列表页大小(缺省为50,-1表示全部)"
|
||||
// @Param isBySku query bool false "是否按SKU分拆"
|
||||
// @Param isAct query bool false "是否活动商品(包括正常活动与补贴)"
|
||||
// @Param actVendorID query int false "要得到哪个平台的活动信息(缺省不限制,非零最小值)"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetStoresSkusForStore [get]
|
||||
func (c *StoreSkuController) GetStoresSkusForStore() {
|
||||
// c.callGetStoresSkus(func(params *tStoreSkuGetStoresSkusParams) (retVal interface{}, errCode string, err error) {
|
||||
// var storeIDs, skuIDs []int
|
||||
// var upcs []string
|
||||
// if err = jxutils.Strings2Objs(params.StoreIDs, &storeIDs, params.SkuIDs, &skuIDs, params.Upcs, &upcs); err == nil {
|
||||
// retVal, err = cms.GetStoresSkus(params.Ctx, storeIDs, skuIDs, upcs, params.IsFocus, params.IsHighPrice, params.PriceType, params.Keyword, params.IsBySku, params.IsAct, params.MapData, params.Offset, params.PageSize)
|
||||
// }
|
||||
// return retVal, "", err
|
||||
// })
|
||||
c.callGetStoresSkusForStore(func(params *tStoreSkuGetStoresSkusForStoreParams) (retVal interface{}, errCode string, err error) {
|
||||
retVal, err = cms.GetStoresSkusForStore(params.Ctx, params.StoreID, params.IsFocus, params.IsAct, params.Keyword, params.CategoryID, params.Status, params.Offset, params.PageSize)
|
||||
return retVal, "", err
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user