- 活动商品后台分页,GetActStoreSkuInfo分页,添加keyword
This commit is contained in:
@@ -538,13 +538,25 @@ func QueryActs(ctx *jxcontext.Context, actID int, offset, pageSize int, keyword
|
||||
return dao.QueryActs(dao.GetDB(), actID, offset, pageSize, keyword, vendorID, statusList, actTypeList, createTypeList, storeID, skuID, cityCode, beginAt, endAt, createdAtFrom, createdAtTo)
|
||||
}
|
||||
|
||||
func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int) (actStoreSkuList []*model.ActStoreSku2, err error) {
|
||||
func GetActStoreSkuInfo(ctx *jxcontext.Context, actID int, vendorIDs []int, keyword string, offset, pageSize int) (retVal interface{}, err error) {
|
||||
db := dao.GetDB()
|
||||
actStoreSkuList, err = dao.GetActStoreSkuVendorList(db, actID, vendorIDs, nil, nil)
|
||||
totalCount, actStoreSkuList, err := dao.GetActStoreSkuVendorList(db, actID, vendorIDs, nil, nil, keyword, offset, pageSize)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return actStoreSkuList, err
|
||||
for _, v := range actStoreSkuList {
|
||||
v.SkuName = jxutils.ComposeSkuName(v.Prefix, v.SkuNameName, v.Comment, v.Unit, v.SpecQuality, v.SpecUnit, 0)
|
||||
}
|
||||
if pageSize > 0 && pageSize != model.UnlimitedPageSize {
|
||||
pagedInfo := &model.PagedInfo{
|
||||
TotalCount: totalCount,
|
||||
Data: actStoreSkuList,
|
||||
}
|
||||
retVal = pagedInfo
|
||||
} else {
|
||||
retVal = actStoreSkuList
|
||||
}
|
||||
return retVal, err
|
||||
}
|
||||
|
||||
func CancelAct(ctx *jxcontext.Context, actID int) (err error) {
|
||||
@@ -808,10 +820,11 @@ func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, skuIDs []int, isAsy
|
||||
db := dao.GetDB()
|
||||
actMap := make(map[int]*model.Act)
|
||||
for _, skuID := range skuIDs {
|
||||
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, []int{model.ActStatusCreated}, nil, nil, 0, skuID, 0, time.Now(), time.Now(), utils.DefaultTimeValue, utils.DefaultTimeValue)
|
||||
pagedInfo, err2 := dao.QueryActs(db, 0, 0, -1, "", vendorID, []int{model.ActStatusCreated}, nil, nil, 0, skuID, 0, utils.DefaultTimeValue, utils.DefaultTimeValue, time.Now().Add(-24*30*3*time.Hour), utils.DefaultTimeValue)
|
||||
if err = err2; err != nil {
|
||||
return "", err
|
||||
}
|
||||
globals.SugarLogger.Debug(utils.Format4Output(pagedInfo, false))
|
||||
for _, v := range pagedInfo.Data {
|
||||
actMap[v.Act.ID] = &v.Act
|
||||
}
|
||||
@@ -827,7 +840,7 @@ func DeleteSkusFromAct(ctx *jxcontext.Context, vendorID int, skuIDs []int, isAsy
|
||||
task := tasksch.NewParallelTask("将SKU从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
actID := batchItemList[0].(int)
|
||||
actStoreSkuList, err := dao.GetActStoreSkuVendorList(db, actID, []int{-1}, nil, skuIDs)
|
||||
_, actStoreSkuList, err := dao.GetActStoreSkuVendorList(db, actID, []int{-1}, nil, skuIDs, "", 0, -1)
|
||||
if err == nil {
|
||||
// db := dao.GetDB()
|
||||
var deleteList []*ActStoreSkuParam
|
||||
|
||||
@@ -340,6 +340,10 @@ func FormalizePageSize(pageSize int) int {
|
||||
return dao.FormalizePageSize(pageSize)
|
||||
}
|
||||
|
||||
func FormalizePageOffset(pageSize int) int {
|
||||
return dao.FormalizePageOffset(pageSize)
|
||||
}
|
||||
|
||||
func FormalizeName(name string) string {
|
||||
return utils.TrimBlankChar(strings.Replace(strings.Replace(name, "\t", "", -1), "\"", "", -1))
|
||||
}
|
||||
|
||||
@@ -191,4 +191,13 @@ type ActStoreSku2 struct {
|
||||
StoreName string `json:"storeName"`
|
||||
|
||||
VendorSkuID string `orm:"column(vendor_sku_id)" json:"vendorSkuID"`
|
||||
|
||||
SkuName string `json:"skuName"`
|
||||
|
||||
Prefix string `json:"-"`
|
||||
SkuNameName string `orm:"column(sku_name_name)" json:"-"`
|
||||
Unit string `orm:"size(8)" json:"-"`
|
||||
SpecQuality float32 `json:"-"`
|
||||
SpecUnit string `json:"-"`
|
||||
Comment string `json:"-"`
|
||||
}
|
||||
|
||||
@@ -69,14 +69,18 @@ func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*mo
|
||||
return actMap, err
|
||||
}
|
||||
|
||||
func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int) (actStoreSkuList []*model.ActStoreSku2, err error) {
|
||||
func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int, keyword string, offset, pageSize int) (totalCount int, actStoreSkuList []*model.ActStoreSku2, err error) {
|
||||
globals.SugarLogger.Debugf("GetActStoreSkuVendorList actID:%d", actID)
|
||||
offset = FormalizePageOffset(offset)
|
||||
pageSize = FormalizePageSize(pageSize)
|
||||
|
||||
leftOrEmpty := ""
|
||||
if len(vendorIDs) == 1 && vendorIDs[0] == -1 {
|
||||
leftOrEmpty = "LEFT"
|
||||
}
|
||||
sql := fmt.Sprintf(`
|
||||
SELECT t1.*,
|
||||
SELECT SQL_CALC_FOUND_ROWS
|
||||
t1.*,
|
||||
t2.id map_id, t2.vendor_id, t2.vendor_act_id, t2.sync_status, t2.actual_act_price, t2.vendor_price,
|
||||
t3.vendor_store_id,
|
||||
CASE t2.vendor_id
|
||||
@@ -89,7 +93,9 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
ELSE
|
||||
''
|
||||
END vendor_sku_id,
|
||||
t6.name store_name
|
||||
t4.comment, t4.spec_quality, t4.spec_unit,
|
||||
t6.name store_name,
|
||||
t7.name sku_name_name, t7.unit, t7.prefix
|
||||
FROM act_store_sku t1
|
||||
%s JOIN act_store_sku_map t2 ON t2.act_id = ? AND t2.bind_id = t1.id AND t2.deleted_at = ?`, leftOrEmpty)
|
||||
sqlParams := []interface{}{
|
||||
@@ -106,6 +112,7 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
JOIN sku t4 ON t4.id = t1.sku_id
|
||||
LEFT JOIN store_sku_bind t5 ON t5.sku_id = t1.sku_id AND t5.store_id = t1.store_id AND t5.deleted_at = ?
|
||||
LEFT JOIN store t6 ON t6.id = t1.store_id
|
||||
JOIN sku_name t7 ON t7.id = t4.name_id
|
||||
WHERE t1.act_id = ?
|
||||
`, leftOrEmpty)
|
||||
sqlParams = append(sqlParams,
|
||||
@@ -113,6 +120,16 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
utils.DefaultTimeValue,
|
||||
actID,
|
||||
)
|
||||
if keyword != "" {
|
||||
keywordLike := "%" + keyword + "%"
|
||||
sql += " AND (t7.namke LIKE ? OR t6.name LIKE ?"
|
||||
sqlParams = append(sqlParams, keywordLike, keywordLike)
|
||||
if intKeyword := int(utils.Str2Int64WithDefault(keyword, 0)); intKeyword > 0 {
|
||||
sql += " OR t1.sku_id = ? OR t1.store_id = ?"
|
||||
sqlParams = append(sqlParams, intKeyword, intKeyword)
|
||||
}
|
||||
sql += ")"
|
||||
}
|
||||
if leftOrEmpty != "" {
|
||||
sql += " AND t1.deleted_at = ?"
|
||||
sqlParams = append(sqlParams, utils.DefaultTimeValue)
|
||||
@@ -125,11 +142,17 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
|
||||
sqlParams = append(sqlParams, skuIDs)
|
||||
}
|
||||
globals.SugarLogger.Debug(sql)
|
||||
globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
|
||||
sql += " LIMIT ? OFFSET ?;"
|
||||
sqlParams = append(sqlParams, pageSize, offset)
|
||||
// globals.SugarLogger.Debug(sql)
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(actStoreSkuList, false))
|
||||
err = GetRows(db, &actStoreSkuList, sql, sqlParams...)
|
||||
return actStoreSkuList, err
|
||||
Begin(db)
|
||||
defer Rollback(db)
|
||||
if err = GetRows(db, &actStoreSkuList, sql, sqlParams...); err == nil {
|
||||
totalCount = GetLastTotalRowCount(db)
|
||||
}
|
||||
return totalCount, actStoreSkuList, err
|
||||
}
|
||||
|
||||
func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs []int) (actStoreSkuMap map[int][]*model.ActStoreSku2, err error) {
|
||||
@@ -137,7 +160,7 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
if len(vendorIDs) == 1 && vendorIDs[0] == -1 {
|
||||
leftOrEmpty = "LEFT"
|
||||
}
|
||||
actStoreSkuList, err := GetActStoreSkuVendorList(db, actID, vendorIDs, storeIDs, skuIDs)
|
||||
_, actStoreSkuList, err := GetActStoreSkuVendorList(db, actID, vendorIDs, storeIDs, skuIDs, "", 0, -1)
|
||||
if err == nil {
|
||||
actStoreSkuMap = make(map[int][]*model.ActStoreSku2)
|
||||
for _, v := range actStoreSkuList {
|
||||
|
||||
@@ -169,6 +169,9 @@ func (c *ActController) CancelAct() {
|
||||
// @Param token header string true "认证token"
|
||||
// @Param actID query int true "活动id"
|
||||
// @Param vendorIDs query string false "厂商ID列表"
|
||||
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||
// @Param offset query int false "起始序号(以0开始,缺省为0)"
|
||||
// @Param pageSize query int false "表页大小(缺省全部)"
|
||||
// @Success 200 {object} controllers.CallResult
|
||||
// @Failure 200 {object} controllers.CallResult
|
||||
// @router /GetActStoreSkuInfo [get]
|
||||
@@ -176,7 +179,10 @@ func (c *ActController) GetActStoreSkuInfo() {
|
||||
c.callGetActStoreSkuInfo(func(params *tActGetActStoreSkuInfoParams) (retVal interface{}, errCode string, err error) {
|
||||
var vendorIDs []int
|
||||
if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs); err == nil {
|
||||
retVal, err = act.GetActStoreSkuInfo(params.Ctx, params.ActID, vendorIDs)
|
||||
if params.PageSize == 0 {
|
||||
params.PageSize = -1
|
||||
}
|
||||
retVal, err = act.GetActStoreSkuInfo(params.Ctx, params.ActID, vendorIDs, params.Keyword, params.Offset, params.PageSize)
|
||||
}
|
||||
return retVal, "", err
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user