From 92cdb1d9754c7eb6f1233346b71b719b0001d982 Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 20 Sep 2019 15:12:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=E7=BE=8E=E5=9B=A2?= =?UTF-8?q?=E5=A4=96=E5=8D=96=E5=94=AE=E5=90=8E=E5=8D=95=E7=9A=84=E5=A4=84?= =?UTF-8?q?=E7=90=86bug=EF=BC=8C=E5=AF=B9=E4=BA=8EnotifyType=E4=B8=8EresTy?= =?UTF-8?q?pe=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/partner/purchase/mtwm/order_afs.go | 40 +++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/business/partner/purchase/mtwm/order_afs.go b/business/partner/purchase/mtwm/order_afs.go index 1a4b25d2a..41b98ad4a 100644 --- a/business/partner/purchase/mtwm/order_afs.go +++ b/business/partner/purchase/mtwm/order_afs.go @@ -16,16 +16,24 @@ import ( ) var ( - AfsVendorStatus2StatusMap = map[int]int{ - mtwmapi.ResTypePending: model.AfsOrderStatusWait4Approve, - mtwmapi.ResTypeMerchantRefused: model.AfsOrderStatusFailed, - mtwmapi.ResTypeMerchantAgreed: model.AfsOrderStatusFinished, - mtwmapi.ResTypeCSRefused: model.AfsOrderStatusFailed, - mtwmapi.ResTypeCSAgreed: model.AfsOrderStatusFinished, - mtwmapi.ResTypeTimeoutAutoAgreed: model.AfsOrderStatusFinished, - mtwmapi.ResTypeAutoAgreed: model.AfsOrderStatusFinished, - mtwmapi.ResTypeUserCancelApply: model.AfsOrderStatusFailed, - mtwmapi.ResTypeUserCancelComplain: model.AfsOrderStatusFailed, + // AfsVendorStatus2StatusMap = map[int]int{ + // mtwmapi.ResTypePending: model.AfsOrderStatusWait4Approve, + // mtwmapi.ResTypeMerchantRefused: model.AfsOrderStatusFailed, + // mtwmapi.ResTypeMerchantAgreed: model.AfsOrderStatusFinished, + // mtwmapi.ResTypeCSRefused: model.AfsOrderStatusFailed, + // mtwmapi.ResTypeCSAgreed: model.AfsOrderStatusFinished, + // mtwmapi.ResTypeTimeoutAutoAgreed: model.AfsOrderStatusFinished, + // mtwmapi.ResTypeAutoAgreed: model.AfsOrderStatusFinished, + // mtwmapi.ResTypeUserCancelApply: model.AfsOrderStatusFailed, + // mtwmapi.ResTypeUserCancelComplain: model.AfsOrderStatusFailed, + // } + AfsVendorStatus2StatusMap = map[string]int{ + mtwmapi.NotifyTypeApply: model.AfsOrderStatusWait4Approve, + mtwmapi.NotifyTypePartyApply: model.AfsOrderStatusWait4Approve, + mtwmapi.NotifyTypeSuccess: model.AfsOrderStatusFinished, + mtwmapi.NotifyTypeReject: model.AfsOrderStatusFailed, + mtwmapi.NotifyTypeCancelRefund: model.AfsOrderStatusFailed, + mtwmapi.NotifyTypeCancelRefundComplaint: model.AfsOrderStatusFailed, } ) @@ -138,8 +146,8 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msg *mtwmapi.CallbackMsg) (order OrderType: model.OrderTypeAfsOrder, RefVendorOrderID: utils.Int64ToStr(refundData.OrderID), RefVendorID: model.VendorIDMTWM, - VendorStatus: utils.Int2Str(refundData.ResType), - Status: c.GetAfsStatusFromVendorStatus(refundData.ResType), + VendorStatus: fmt.Sprintf("%s:%d", refundData.NotifyType, refundData.ResType), + Status: c.GetAfsStatusFromVendorStatus(refundData.ResType, refundData.NotifyType), StatusTime: utils.Timestamp2Time(refundData.Timestamp), Remark: refundData.Reason, } @@ -149,8 +157,12 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msg *mtwmapi.CallbackMsg) (order return orderStatus } -func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(vendorStatus int) int { - return AfsVendorStatus2StatusMap[vendorStatus] +func (c *PurchaseHandler) GetAfsStatusFromVendorStatus(resType int, notifyType string) int { + status := AfsVendorStatus2StatusMap[notifyType] + if status == model.AfsOrderStatusWait4Approve && resType != mtwmapi.ResTypePending { + status = model.AfsOrderStatusNew + } + return status } // 审核售后单申请 From c5df4f5f5e9cc58c778f79d2def2b0e0980ac5f0 Mon Sep 17 00:00:00 2001 From: xujianhua Date: Fri, 20 Sep 2019 15:25:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?Accept=20Merge=20Request=20#6:=20(don=20->?= =?UTF-8?q?=20mark)=20Merge=20Request:=20=E5=9F=8E=E5=B8=82=E5=95=86?= =?UTF-8?q?=E5=93=81=E9=94=80=E9=87=8F=E7=BB=9F=E8=AE=A1=20Created=20By:?= =?UTF-8?q?=20@zhudan=20Accepted=20By:=20@xujianhua=20URL:=20https://rosyd?= =?UTF-8?q?ev.coding.net/p/jx-callback/d/jx-callback/git/merge/6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/misc/store_sku_sales.go | 171 +++++++++++++++++++++++ business/model/dao/store_sku_sales.go | 78 +++++++++++ business/model/store_sku_sales.go | 17 +++ controllers/cms_sku.go | 15 ++ routers/commentsRouter_controllers.go | 9 ++ 5 files changed, 290 insertions(+) create mode 100644 business/jxstore/misc/store_sku_sales.go create mode 100644 business/model/dao/store_sku_sales.go create mode 100644 business/model/store_sku_sales.go diff --git a/business/jxstore/misc/store_sku_sales.go b/business/jxstore/misc/store_sku_sales.go new file mode 100644 index 000000000..5ba3f19de --- /dev/null +++ b/business/jxstore/misc/store_sku_sales.go @@ -0,0 +1,171 @@ +package misc + +import ( + "math" + "sync" + + "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxutils" + "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" + "git.rosy.net.cn/jx-callback/business/jxutils/tasksch" + "git.rosy.net.cn/jx-callback/business/model" + "git.rosy.net.cn/jx-callback/business/model/dao" +) + +const ( + DayNum = 30 //请求天数 + LimitNum = 100 //最大数据限制 +) + +func GetStoreSkuSalesInfo(ctx *jxcontext.Context, storeID int) (outStoreSkuSales []*model.StoreSkuSales, err error) { + db := dao.GetDB() + //得到所有门店 + storeList, err := GetStoreList(ctx) + if err == nil { + storeList = GetFilterStoreListEx(storeList, nil) + } else { + return nil, err + } + storeMapData := make(map[int]*cms.StoreExt) + for _, value := range storeList { + storeMapData[value.ID] = value + } + curStoreInfo := storeMapData[storeID] + cityCode := curStoreInfo.CityCode + + //获取本市商品总销量 + citySkuSalesCntMap := make(map[int]int) + citySkuSalesCntList, err := dao.GetSkuSalesCntList(db, -1, cityCode, DayNum, LimitNum, nil) + citySkuIDs := []int{} + if err == nil { + for _, value := range citySkuSalesCntList { + citySkuSalesCntMap[value.SkuID] = value.Count + citySkuIDs = append(citySkuIDs, value.SkuID) + } + } else { + return nil, err + } + + //获取本店商品总销量 + storeSkuSalesCntMap := make(map[int]int) + storeSkuSalesCntList, err := dao.GetSkuSalesCntList(db, storeID, cityCode, DayNum, -1, citySkuIDs) + if err == nil { + for _, value := range storeSkuSalesCntList { + storeSkuSalesCntMap[value.SkuID] = value.Count + } + } else { + return nil, err + } + + //获取本店商品差评数量 + storeSkuBadCommentCntMap := make(map[int]int) + storeSkuBadCommentCntList, err := dao.GetSkuBadCommentCntList(db, storeID, DayNum) + if err == nil { + for _, value := range storeSkuBadCommentCntList { + storeSkuBadCommentCntMap[value.SkuID] = value.Count + } + } else { + return nil, err + } + + //得到当前门店商品数据 + storeSkuMapData := make(map[int]*cms.StoreSkuNameExt) + storeSkuData, err := cms.GetStoreSkus(ctx, storeID, citySkuIDs, true, "", true, map[string]interface{}{}, 0, -1) + if err == nil { + for _, value := range storeSkuData.SkuNames { + for _, skuInfo := range value.Skus2 { + storeSkuMapData[skuInfo.SkuID] = value + } + } + } else { + return nil, err + } + + //得到5KM内的所有门店 + rangeStoreList := GetRangeStoreList(storeID, curStoreInfo.FloatLng, curStoreInfo.FloatLat, SaleSkuCheckRange, storeList) + + //得到5KM内的所有门店的商品的价格 + allStoreSkus := make(map[int]map[int]int) + var locker sync.RWMutex + taskFunc := func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { + storeInfo := batchItemList[0].(*cms.StoreExt) + storeID := storeInfo.ID + jxSkuInfoData, err := cms.GetStoreSkus(ctx, storeID, citySkuIDs, true, "", true, map[string]interface{}{}, 0, -1) + jxSkuPriceMapData := make(map[int]int) + for _, value := range jxSkuInfoData.SkuNames { + for _, skuInfo := range value.Skus2 { + jxSkuPriceMapData[skuInfo.SkuID] = skuInfo.BindPrice + } + } + locker.Lock() + defer locker.Unlock() + allStoreSkus[storeID] = jxSkuPriceMapData + return retVal, err + } + taskParallel := tasksch.NewParallelTask("得到所有门店商品", nil, ctx, taskFunc, rangeStoreList) + taskParallel.Run() + _, err = taskParallel.GetResult(0) + if err != nil { + return nil, err + } + + //计算商品的平均价格 + skusTotalPrice := make(map[int]int) + skusCount := make(map[int]int) + skusAveragePrice := make(map[int]int) + for _, storeInfo := range rangeStoreList { + storeID := storeInfo.ID + storeSkuMapData := allStoreSkus[storeID] + for skuID, skuPrice := range storeSkuMapData { + skusTotalPrice[skuID] += skuPrice + skusCount[skuID]++ + } + } + for id, totalPrice := range skusTotalPrice { + skusAveragePrice[id] = int(math.Round(float64(totalPrice) / float64(skusCount[id]))) + } + + //输出商品销量统计结果 + skuAndNameMapData := make(map[int]*model.SkuAndName) + if len(storeSkuMapData) < len(citySkuIDs) { + skuAndNameList, err := dao.GetSkus(db, citySkuIDs, nil, nil, nil) + if err == nil { + for _, value := range skuAndNameList { + skuAndNameMapData[value.ID] = value + } + } + } + for _, value := range citySkuSalesCntList { + skuID := value.SkuID + storeSkuSales := &model.StoreSkuSales{} + storeSkuSales.SkuID = skuID + storeSkuInfo := storeSkuMapData[skuID] + skuAndNameInfo := skuAndNameMapData[skuID] + if storeSkuInfo != nil { + skuName := storeSkuInfo.SkuName + skuInfo := storeSkuInfo.Skus2[0] + storeSkuSales.SkuName = jxutils.ComposeSkuName(skuName.Prefix, skuName.Name, skuInfo.Comment, skuName.Unit, skuInfo.SkuSpecQuality, skuInfo.SkuSpecUnit, 0) + storeSkuSales.SkuImage = storeSkuInfo.Img + storeSkuSales.SkuPrice = jxutils.IntPrice2StandardCurrencyString(int64(storeSkuInfo.Skus2[0].BindPrice)) + } else if skuAndNameInfo != nil { + skuNameList, err := dao.GetSkuNames(db, []int{skuAndNameInfo.NameID}) + prefix := "" + if err == nil && len(skuNameList) > 0 { + storeSkuSales.SkuImage = skuNameList[0].Img + prefix = skuNameList[0].Prefix + } + storeSkuSales.SkuName = jxutils.ComposeSkuName(prefix, skuAndNameInfo.Name, skuAndNameInfo.Comment, skuAndNameInfo.Unit, skuAndNameInfo.SpecQuality, skuAndNameInfo.SpecUnit, 0) + storeSkuSales.SkuPrice = "N/A" + } else { + storeSkuSales.SkuName = "N/A" + storeSkuSales.SkuPrice = "N/A" + } + storeSkuSales.SkuAvgPrice = jxutils.IntPrice2StandardCurrencyString(int64(skusAveragePrice[skuID])) + storeSkuSales.BadCommentCnt = storeSkuBadCommentCntMap[skuID] + storeSkuSales.StoreSkuSalesCnt = storeSkuSalesCntMap[skuID] + storeSkuSales.CitySkuSalesCnt = citySkuSalesCntMap[skuID] + outStoreSkuSales = append(outStoreSkuSales, storeSkuSales) + } + + return outStoreSkuSales, err +} diff --git a/business/model/dao/store_sku_sales.go b/business/model/dao/store_sku_sales.go new file mode 100644 index 000000000..5c8b05940 --- /dev/null +++ b/business/model/dao/store_sku_sales.go @@ -0,0 +1,78 @@ +package dao + +import ( + "time" + + "git.rosy.net.cn/baseapi/utils" + "git.rosy.net.cn/jx-callback/business/model" +) + +func GetSkuSalesCntList(db *DaoDB, storeID, cityCode, dayNum, limit int, skuIDs []int) (skuCountList []*model.SkuCount, err error) { + sql := ` + SELECT t2.jx_sku_id sku_id, SUM(t2.count) count + FROM goods_order t1 + JOIN order_sku t2 on t1.vendor_order_id = t2.vendor_order_id and t1.vendor_id = t2.vendor_id + JOIN store t3 on t1.jx_store_id = t3.id + WHERE t1.order_finished_at >= ? AND t1.order_finished_at < ? + AND t1.status = ? + AND t2.jx_sku_id <> 0 + AND t3.city_code = ? + ` + if dayNum < 0 { + dayNum = 30 + } + beginTime := utils.GetCurDate().Add(-time.Hour * 24 * time.Duration(dayNum)) + endTime := utils.GetCurDate() + sqlParams := []interface{}{ + beginTime, + endTime, + model.OrderStatusFinished, + cityCode, + } + if storeID > 0 { + sql += ` + AND t1.jx_store_id = ? + ` + sqlParams = append(sqlParams, storeID) + } + if len(skuIDs) > 0 { + sql += ` + AND t2.jx_sku_id IN (` + GenQuestionMarks(len(skuIDs)) + `)` + sqlParams = append(sqlParams, skuIDs) + } + sql += ` + GROUP BY jx_sku_id + ORDER BY count DESC + ` + if limit > 0 { + sql += ` + LIMIT ? + ` + sqlParams = append(sqlParams, limit) + } + err = GetRows(db, &skuCountList, sql, sqlParams) + return skuCountList, err +} + +func GetSkuBadCommentCntList(db *DaoDB, storeID, dayNum int) (skuCountList []*model.SkuCount, err error) { + sql := ` + SELECT t2.jx_sku_id sku_id, COUNT(*) count + FROM jx_bad_comments t1 + JOIN order_sku t2 ON t1.order_id = t2.vendor_order_id + WHERE t1.createtime >= ? AND t1.createtime < ? + AND t1.jxstoreid = ? + GROUP BY t2.jx_sku_id + ` + if dayNum < 0 { + dayNum = 30 + } + beginTime := utils.GetCurDate().Add(-time.Hour * 24 * time.Duration(dayNum)) + endTime := utils.GetCurDate() + sqlParams := []interface{}{ + beginTime, + endTime, + storeID, + } + err = GetRows(db, &skuCountList, sql, sqlParams) + return skuCountList, err +} diff --git a/business/model/store_sku_sales.go b/business/model/store_sku_sales.go new file mode 100644 index 000000000..2f6bc3bba --- /dev/null +++ b/business/model/store_sku_sales.go @@ -0,0 +1,17 @@ +package model + +type StoreSkuSales struct { + SkuID int `json:"skuID"` + SkuName string `json:"skuName"` + SkuImage string `json:"skuImage"` + SkuPrice string `json:"skuPrice"` + SkuAvgPrice string `json:"skuAvgPrice"` + BadCommentCnt int `json:"badCommentCnt"` + StoreSkuSalesCnt int `json:"storeSkuSalesCnt"` + CitySkuSalesCnt int `json:"citySkuSalesCnt"` +} + +type SkuCount struct { + SkuID int `orm:"column(sku_id)"` + Count int +} diff --git a/controllers/cms_sku.go b/controllers/cms_sku.go index af1750251..11e26496c 100644 --- a/controllers/cms_sku.go +++ b/controllers/cms_sku.go @@ -3,6 +3,7 @@ package controllers import ( "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" + "git.rosy.net.cn/jx-callback/business/jxstore/misc" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" @@ -359,3 +360,17 @@ func (c *SkuController) SortCategorySkus() { return retVal, "", err }) } + +// @Title 按照当前城市近30天销量排序,显示本店价格,附近5公里平均价格,差评数量,本店销量情况,本市总销量, +// @Description 按照当前城市近30天销量排序,显示本店价格,附近5公里平均价格,差评数量,本店销量情况,本市总销量, +// @Param token header string true "认证token" +// @Param storeID query int true "京西门店ID" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /GetStoreSkuSalesInfo [get] +func (c *SkuController) GetStoreSkuSalesInfo() { + c.callGetStoreSkuSalesInfo(func(params *tSkuGetStoreSkuSalesInfoParams) (retVal interface{}, errCode string, err error) { + retVal, err = misc.GetStoreSkuSalesInfo(params.Ctx, params.StoreID) + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 5baa4b15a..ce7539ee3 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -1161,6 +1161,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], + beego.ControllerComments{ + Method: "GetStoreSkuSalesInfo", + Router: `/GetStoreSkuSalesInfo`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"] = append(beego.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:SkuController"], beego.ControllerComments{ Method: "GetVendorCategories", From d1d0e576eba4e9deb1c0567f8fa704c1f005445b Mon Sep 17 00:00:00 2001 From: gazebo Date: Fri, 20 Sep 2019 15:46:09 +0800 Subject: [PATCH 3/3] =?UTF-8?q?-=20=E7=A7=BB=E9=99=A4=E5=B8=B8=E9=87=8F?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2'1970-01-01=2000:00:00'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/auth2/auth2.go | 2 +- business/jxstore/cms/store_sku.go | 2 +- business/model/dao/store.go | 9 ++++++--- business/model/dao/store_sku.go | 2 +- business/model/model.go | 2 +- 5 files changed, 10 insertions(+), 7 deletions(-) diff --git a/business/auth2/auth2.go b/business/auth2/auth2.go index e0ebc5783..4071af794 100644 --- a/business/auth2/auth2.go +++ b/business/auth2/auth2.go @@ -106,7 +106,7 @@ var ( Name: "石峰固定", }, AuthBindInfo: &AuthBindEx{}, - LoginTime: utils.ZeroTimeValue, + LoginTime: utils.DefaultTimeValue, ExpiresAt: 0, }, } diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index ca6491a3e..df9db03e8 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -47,7 +47,7 @@ type StoreSkuExt struct { BindCreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"` BindUpdatedAt time.Time `orm:"auto_now;type(datetime)" json:"updatedAt"` BindLastOperator string `orm:"size(32)" json:"lastOperator"` // 最后操作员 - BindDeletedAt time.Time `orm:"type(datetime);default('1970-01-01 00:00:00')" json:"deletedAt"` + BindDeletedAt time.Time `orm:"type(datetime)" json:"deletedAt"` SubStoreID int `orm:"column(sub_store_id)" json:"subStoreID"` BindPrice int `json:"price"` // 单位为分,不用int64的原因是这里不需要累加 UnitPrice int `json:"unitPrice"` // 这个是一斤的门店商品价,放在这里的原因是避免额外增加一张store sku_name表,逻辑上要保证同一SKU NAME中的所有SKU这个字段的数据一致 diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 88e0a53e9..eb9e0ca4f 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -115,7 +115,7 @@ func GetPossibleStoresByPlaceName(db *DaoDB, cityName, provinceName string) (sto FROM store t1 JOIN place t2 ON t2.code = t1.city_code AND t2.name = ? LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = '1970-01-01 00:00:00' AND t10.status <> ?) > 0 + WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 `, ` SELECT t1.*, t5.vendor_store_id @@ -123,13 +123,13 @@ func GetPossibleStoresByPlaceName(db *DaoDB, cityName, provinceName string) (sto JOIN place t2 ON t2.code = t1.city_code JOIN place t3 ON t3.code = t2.parent_code AND t3.name = ? LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = '1970-01-01 00:00:00' AND t10.status <> ?) > 0 + WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 `, ` SELECT t1.*, t5.vendor_store_id FROM store t1 LEFT JOIN store_map t5 ON t1.id = t5.store_id AND t5.vendor_id = ? AND t5.deleted_at = ? - WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = '1970-01-01 00:00:00' AND t10.status <> ?) > 0 + WHERE t1.status = ? AND (SELECT COUNT(*) FROM store_map t10 WHERE t10.store_id = t1.id AND t10.deleted_at = ? AND t10.status <> ?) > 0 `, } sqlParamsList := [][]interface{}{ @@ -138,6 +138,7 @@ func GetPossibleStoresByPlaceName(db *DaoDB, cityName, provinceName string) (sto model.VendorIDWSC, utils.DefaultTimeValue, model.StoreStatusOpened, + utils.DefaultTimeValue, model.StoreStatusDisabled, }, []interface{}{ @@ -145,12 +146,14 @@ func GetPossibleStoresByPlaceName(db *DaoDB, cityName, provinceName string) (sto model.VendorIDWSC, utils.DefaultTimeValue, model.StoreStatusOpened, + utils.DefaultTimeValue, model.StoreStatusDisabled, }, []interface{}{ model.VendorIDWSC, utils.DefaultTimeValue, model.StoreStatusOpened, + utils.DefaultTimeValue, model.StoreStatusDisabled, }, } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 78e31a26f..69e64a00f 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -44,7 +44,7 @@ type StoreSkuSyncInfo struct { StoreSkuStatus int StoreSkuSyncStatus int8 VendorSkuID string `orm:"column(vendor_sku_id)"` - BindDeletedAt time.Time `orm:"type(datetime);default('1970-01-01 00:00:00')" json:"bindDeletedAt"` + BindDeletedAt time.Time `orm:"type(datetime)" json:"bindDeletedAt"` model.Sku diff --git a/business/model/model.go b/business/model/model.go index e52ed3b1d..ecdd9febe 100644 --- a/business/model/model.go +++ b/business/model/model.go @@ -64,7 +64,7 @@ type ModelIDCULD struct { CreatedAt time.Time `orm:"auto_now_add;type(datetime)" json:"createdAt"` UpdatedAt time.Time `orm:"auto_now;type(datetime)" json:"updatedAt"` LastOperator string `orm:"size(32)" json:"lastOperator"` // 最后操作员 - DeletedAt time.Time `orm:"type(datetime);default('1970-01-01 00:00:00')" json:"deletedAt"` + DeletedAt time.Time `orm:"type(datetime);null" json:"deletedAt"` } // 同步标识掩码