- 取消活动同步后,不会删除act_map
- 添加Act.VendorMask用于方便平台查询 - QueryActs添加vendorID参数
This commit is contained in:
@@ -58,8 +58,8 @@ type Act struct {
|
||||
PricePercentage int `json:"pricePercentage"` // 单品级活动才有效
|
||||
BeginAt time.Time `orm:"type(datetime);index" json:"beginAt"`
|
||||
EndAt time.Time `orm:"type(datetime);index" json:"endAt"`
|
||||
|
||||
Remark string `orm:"size(255)" json:"remark"`
|
||||
VendorMask int `json:"-"`
|
||||
Remark string `orm:"size(255)" json:"remark"`
|
||||
}
|
||||
|
||||
func (*Act) TableUnique() [][]string {
|
||||
|
||||
@@ -410,3 +410,10 @@ func IsAfsOrderFinalStatus(status int) bool {
|
||||
const (
|
||||
DefaultEarningPricePercentage = 70 // 门店缺省结算百分比
|
||||
)
|
||||
|
||||
func GetVendorMask(vendorIDs ...int) (vendorMask int) {
|
||||
for _, vendorID := range vendorIDs {
|
||||
vendorMask |= 1 << uint(vendorID)
|
||||
}
|
||||
return vendorMask
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ import (
|
||||
)
|
||||
|
||||
type PagedActListInfo struct {
|
||||
TotalCount int
|
||||
Data []*model.Act
|
||||
TotalCount int `json:"totalCount"`
|
||||
Data []*model.Act `json:"data"`
|
||||
}
|
||||
|
||||
func GetActVendorInfo(db *DaoDB, actID int, vendorIDs []int) (actMap map[int]*model.Act2, err error) {
|
||||
@@ -119,7 +119,7 @@ func GetActStoreSkuVendorInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuIDs
|
||||
return actStoreSkuMap, err
|
||||
}
|
||||
|
||||
func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, statusList []int, actTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, vendorID int, statusList []int, actTypeList []int, storeID, skuID, cityCode int, beginAt, endAt, createdAtFrom, createdAtTo time.Time) (pagedInfo *PagedActListInfo, err error) {
|
||||
sql := `
|
||||
SELECT SQL_CALC_FOUND_ROWS
|
||||
t1.*
|
||||
@@ -163,6 +163,10 @@ func QueryActs(db *DaoDB, actID int, offset, pageSize int, keyword string, statu
|
||||
sql += " AND t1.id = ?"
|
||||
sqlParams = append(sqlParams, actID)
|
||||
}
|
||||
if vendorID > 0 {
|
||||
sql += " AND t1.vendor_mask & ? <> 0"
|
||||
sqlParams = append(sqlParams, model.GetVendorMask(vendorID))
|
||||
}
|
||||
if len(statusList) > 0 {
|
||||
sql += " AND t1.status IN (" + GenQuestionMarks(len(statusList)) + ")"
|
||||
sqlParams = append(sqlParams, statusList)
|
||||
@@ -218,33 +222,17 @@ func GetEffectiveActStoreSkuInfo(db *DaoDB, actID int, vendorIDs, storeIDs, skuI
|
||||
if utils.IsTimeZero(toTime) {
|
||||
toTime = fromTime
|
||||
}
|
||||
sqlParams := []interface{}{}
|
||||
sql := `
|
||||
SELECT t2.*
|
||||
FROM`
|
||||
sqlParams := []interface{}{}
|
||||
if len(vendorIDs) > 0 {
|
||||
sqlParams = append(sqlParams, utils.DefaultTimeValue, vendorIDs, fromTime, toTime)
|
||||
actSQL := ""
|
||||
if actID > 0 {
|
||||
actSQL = " AND t11.id = ?"
|
||||
sqlParams = append(sqlParams, actID)
|
||||
}
|
||||
sql += fmt.Sprintf(`
|
||||
(
|
||||
SELECT t11.id, t11.begin_at, t11.end_at, t11.status
|
||||
FROM act t11
|
||||
JOIN act_map t12 ON t12.act_id = t11.id AND t12.deleted_at = ? AND t12.vendor_id IN (`+GenQuestionMarks(len(vendorIDs))+`)
|
||||
WHERE t11.begin_at <= ? AND t11.end_at >= ? %s
|
||||
GROUP BY 1,2,3
|
||||
) t1`, actSQL)
|
||||
} else {
|
||||
sql += `
|
||||
act t1`
|
||||
}
|
||||
sql += `
|
||||
FROM act t1
|
||||
JOIN act_store_sku t2 ON t2.act_id = t1.id AND t2.deleted_at = ?
|
||||
WHERE t1.status = ? AND t1.begin_at <= ? AND t1.end_at >= ?`
|
||||
sqlParams = append(sqlParams, utils.DefaultTimeValue, model.ActStatusCreated, fromTime, toTime)
|
||||
if len(vendorIDs) > 0 {
|
||||
sql += " AND t1.vendor_mask & ? <> 0"
|
||||
sqlParams = append(sqlParams, model.GetVendorMask(vendorIDs...))
|
||||
}
|
||||
if actID > 0 {
|
||||
sql = " AND t1.id = ?"
|
||||
sqlParams = append(sqlParams, actID)
|
||||
|
||||
Reference in New Issue
Block a user