- 活动商品后台分页,GetActStoreSkuInfo分页,添加keyword

This commit is contained in:
gazebo
2019-08-09 11:19:43 +08:00
parent edff61d85c
commit d8f3b7f467
5 changed files with 69 additions and 14 deletions

View File

@@ -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) 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() 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 { if err != nil {
return nil, err 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) { 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() db := dao.GetDB()
actMap := make(map[int]*model.Act) actMap := make(map[int]*model.Act)
for _, skuID := range skuIDs { 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 { if err = err2; err != nil {
return "", err return "", err
} }
globals.SugarLogger.Debug(utils.Format4Output(pagedInfo, false))
for _, v := range pagedInfo.Data { for _, v := range pagedInfo.Data {
actMap[v.Act.ID] = &v.Act 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, task := tasksch.NewParallelTask("将SKU从所有活动中删除", tasksch.NewParallelConfig().SetParallelCount(1).SetIsContinueWhenError(isContinueWhenError), ctx,
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
actID := batchItemList[0].(int) 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 { if err == nil {
// db := dao.GetDB() // db := dao.GetDB()
var deleteList []*ActStoreSkuParam var deleteList []*ActStoreSkuParam

View File

@@ -340,6 +340,10 @@ func FormalizePageSize(pageSize int) int {
return dao.FormalizePageSize(pageSize) return dao.FormalizePageSize(pageSize)
} }
func FormalizePageOffset(pageSize int) int {
return dao.FormalizePageOffset(pageSize)
}
func FormalizeName(name string) string { func FormalizeName(name string) string {
return utils.TrimBlankChar(strings.Replace(strings.Replace(name, "\t", "", -1), "\"", "", -1)) return utils.TrimBlankChar(strings.Replace(strings.Replace(name, "\t", "", -1), "\"", "", -1))
} }

View File

@@ -191,4 +191,13 @@ type ActStoreSku2 struct {
StoreName string `json:"storeName"` StoreName string `json:"storeName"`
VendorSkuID string `orm:"column(vendor_sku_id)" json:"vendorSkuID"` 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:"-"`
} }

View File

@@ -69,14 +69,18 @@ func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*mo
return actMap, err 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) globals.SugarLogger.Debugf("GetActStoreSkuVendorList actID:%d", actID)
offset = FormalizePageOffset(offset)
pageSize = FormalizePageSize(pageSize)
leftOrEmpty := "" leftOrEmpty := ""
if len(vendorIDs) == 1 && vendorIDs[0] == -1 { if len(vendorIDs) == 1 && vendorIDs[0] == -1 {
leftOrEmpty = "LEFT" leftOrEmpty = "LEFT"
} }
sql := fmt.Sprintf(` 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, 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, t3.vendor_store_id,
CASE t2.vendor_id CASE t2.vendor_id
@@ -89,7 +93,9 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
ELSE ELSE
'' ''
END vendor_sku_id, 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 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) %s JOIN act_store_sku_map t2 ON t2.act_id = ? AND t2.bind_id = t1.id AND t2.deleted_at = ?`, leftOrEmpty)
sqlParams := []interface{}{ sqlParams := []interface{}{
@@ -106,6 +112,7 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
JOIN sku t4 ON t4.id = t1.sku_id 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_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 LEFT JOIN store t6 ON t6.id = t1.store_id
JOIN sku_name t7 ON t7.id = t4.name_id
WHERE t1.act_id = ? WHERE t1.act_id = ?
`, leftOrEmpty) `, leftOrEmpty)
sqlParams = append(sqlParams, sqlParams = append(sqlParams,
@@ -113,6 +120,16 @@ func GetActStoreSkuVendorList(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
utils.DefaultTimeValue, utils.DefaultTimeValue,
actID, 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 != "" { if leftOrEmpty != "" {
sql += " AND t1.deleted_at = ?" sql += " AND t1.deleted_at = ?"
sqlParams = append(sqlParams, utils.DefaultTimeValue) 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)) + ")" sql += " AND t1.sku_id IN (" + GenQuestionMarks(len(skuIDs)) + ")"
sqlParams = append(sqlParams, skuIDs) sqlParams = append(sqlParams, skuIDs)
} }
globals.SugarLogger.Debug(sql) sql += " LIMIT ? OFFSET ?;"
globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false)) sqlParams = append(sqlParams, pageSize, offset)
// globals.SugarLogger.Debug(sql)
// globals.SugarLogger.Debug(utils.Format4Output(sqlParams, false))
// globals.SugarLogger.Debug(utils.Format4Output(actStoreSkuList, false)) // globals.SugarLogger.Debug(utils.Format4Output(actStoreSkuList, false))
err = GetRows(db, &actStoreSkuList, sql, sqlParams...) Begin(db)
return actStoreSkuList, err 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) { 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 { if len(vendorIDs) == 1 && vendorIDs[0] == -1 {
leftOrEmpty = "LEFT" leftOrEmpty = "LEFT"
} }
actStoreSkuList, err := GetActStoreSkuVendorList(db, actID, vendorIDs, storeIDs, skuIDs) _, actStoreSkuList, err := GetActStoreSkuVendorList(db, actID, vendorIDs, storeIDs, skuIDs, "", 0, -1)
if err == nil { if err == nil {
actStoreSkuMap = make(map[int][]*model.ActStoreSku2) actStoreSkuMap = make(map[int][]*model.ActStoreSku2)
for _, v := range actStoreSkuList { for _, v := range actStoreSkuList {

View File

@@ -169,6 +169,9 @@ func (c *ActController) CancelAct() {
// @Param token header string true "认证token" // @Param token header string true "认证token"
// @Param actID query int true "活动id" // @Param actID query int true "活动id"
// @Param vendorIDs query string false "厂商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 // @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult
// @router /GetActStoreSkuInfo [get] // @router /GetActStoreSkuInfo [get]
@@ -176,7 +179,10 @@ func (c *ActController) GetActStoreSkuInfo() {
c.callGetActStoreSkuInfo(func(params *tActGetActStoreSkuInfoParams) (retVal interface{}, errCode string, err error) { c.callGetActStoreSkuInfo(func(params *tActGetActStoreSkuInfoParams) (retVal interface{}, errCode string, err error) {
var vendorIDs []int var vendorIDs []int
if err = jxutils.Strings2Objs(params.VendorIDs, &vendorIDs); err == nil { 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 return retVal, "", err
}) })