- 取消活动同步后,不会删除act_map

- 添加Act.VendorMask用于方便平台查询
- QueryActs添加vendorID参数
This commit is contained in:
gazebo
2019-07-09 14:21:26 +08:00
parent 5b9c46067f
commit 4229146f1c
9 changed files with 71 additions and 71 deletions

View File

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

View File

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

View File

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