- 活动商品后台分页,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)
}
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

View File

@@ -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))
}

View File

@@ -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:"-"`
}

View File

@@ -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 {

View File

@@ -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
})