From dd37849bf3d10a9c9c8b2c0cbefe23dd725083ef Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 24 Aug 2022 17:25:02 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E6=8E=A8=E8=8D=90=E5=95=86?= =?UTF-8?q?=E5=AE=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 145 +++++++++++++++++++++----- business/model/dao/store.go | 19 ++++ controllers/cms_store.go | 26 ++--- routers/commentsRouter_controllers.go | 9 ++ 4 files changed, 154 insertions(+), 45 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index b5c6c9535..9dd9e670d 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -121,19 +121,41 @@ type VendorStoreExcel struct { OperatorName3 string `json:"运营负责人3"` } +//门店信息+减免策略 +type Info1 struct { + StoreID int `json:"storeID"` //门店ID + StoreName string `json:"storeName"` //门店名字 + OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 + CloseTime1 int16 `json:"closeTime1"` // 营业时间 1 + OpenTime2 int16 `json:"openTime2"` // 营业时间2 + CloseTime2 int16 `json:"closeTime2"` + Status int `json:"status"` //门店是否营业 + Distance int `json:"distance"` //店铺与定位 直线距离 + Address string `json:"address"` //门店地址 + BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID + BrandName string `json:"brandName"` //品牌名字 + BrandLogo string `json:"brandLogo"` //品牌logo + DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"` //订单满减金额 + DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"` //订单减免金额 +} + //首页展示信息 type HomePageInfos struct { - StoreID int `json:"storeID"` //门店ID - StoreName string `json:"storeName"` //门店名字 - OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 - CloseTime1 int16 `json:"closeTime1"` // 营业时间 1 - OpenTime2 int16 `json:"openTime2"` // 营业时间2 - CloseTime2 int16 `json:"closeTime2"` - Status int `json:"status"` //门店是否营业 - Distance int `json:"distance"` //店铺与定位 直线距离 - BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID - BrandName string `json:"brandName"` //品牌名字 - BrandLogo string `json:"brandLogo"` //品牌logo + StoreID int `json:"storeID"` //门店ID + StoreName string `json:"storeName"` //门店名字 + OpenTime1 int16 `json:"openTime1"` // 930就表示9点半,用两个的原因是为了支持中午休息,1与2的时间段不能交叉,为0表示没有 + CloseTime1 int16 `json:"closeTime1"` // 营业时间 1 + OpenTime2 int16 `json:"openTime2"` // 营业时间2 + CloseTime2 int16 `json:"closeTime2"` + Status int `json:"status"` //门店是否营业 + Distance int `json:"distance"` //店铺与定位 直线距离 + Address string `json:"address"` //门店地址 + BrandID int `orm:"column(brand_id)" json:"brandID"` //品牌ID + BrandName string `json:"brandName"` //品牌名字 + BrandLogo string `json:"brandLogo"` //品牌logo + DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"` //订单满减金额 + DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"` //订单减免金额 + //Info *Info1 `json:"info"` //拼接数据 //热销商品信息 SkuID int `json:"skuID"` //商品ID SkuName string `json:"skuName"` //商品名字 @@ -142,9 +164,7 @@ type HomePageInfos struct { Img string `json:"img"` //商品第一张图片 Price int `json:"price"` // 单位为分,标准价,不为份的就为实际标准价,为份的为每市斤价,实际还要乘质量 Unit string `json:"unit"` //商品售卖单位 份/kg等 - //减运策略 - DeliveryFeeDeductionSill int `json:"deliveryFeeDeductionSill"` //订单满减金额 - DeliveryFeeDeductionFee int `json:"deliveryFeeDeductionFee"` //订单减免金额 + } type JdStoreLevelExt struct { @@ -545,7 +565,6 @@ func GetStores(ctx *jxcontext.Context, keyword string, params map[string]interfa var storeIDs []int if err = utils.UnmarshalUseNumber([]byte(params["storeIDs"].(string)), &storeIDs); err == nil { for _, v := range storeIDs { - globals.SugarLogger.Debug("storeIDs===============", v) if storeIDsMap[v] != 0 { storeIDs2 = append(storeIDs2, v) } @@ -5707,16 +5726,86 @@ func FilterByB2B(locationList []*common.Store4User, token string) (retVal []*com } //首页信息展示 -//func GetHomePageByLocation(ctx *jxcontext.Context, params map[string]interface{}) (interface{}, string, error) { -// //获取门店信息 -// timeList, err := jxutils.BatchStr2Time("1970-01-01 00:00:00 +0800 CST", "1970-01-01 00:00:00 +0800 CST") -// if err != nil { -// return nil, "", err -// } -// store, err := GetStores(ctx, "", params, 0, 0, timeList[0], timeList[1], 0, 0) -// //获取热销商品 -// -// //获取满减策略 -// -// return nil, "", nil -//} +func GetHomePageByLocation(ctx *jxcontext.Context, lng, lat float64, needWalkDistance bool, token string) (interface{}, string, error) { + //获取门店信息 + var ( + storeID []int + tmp1s []Info1 + multipleData []HomePageInfos + ) + locationList, err := common.GetStoreListByLocation(ctx, lng, lat, 20000, needWalkDistance, false, 0) + if err != nil { + return nil, "经纬度获取推荐门店失败", err + } + if token != "" { + //权限过滤门店 + filterStore, _, err := FilterByB2B(locationList, token) + if err != nil { + return nil, "权限过滤门店失败", err + } + for _, v := range filterStore { + storeID = append(storeID, v.ID) + //获取门店品牌信息 + brandInfos, err := dao.GetStoreBrandInfos(v.ID) + if err != nil { + return nil, "获取门店品牌信息失败", err + } + //获取门店减免策略 + storePolicy, err := GetStoreVendorMaps(ctx, dao.GetDB(), v.ID, 9) + if err != nil { + return nil, "获取门店减免策略失败", err + } + tmp1 := Info1{ + StoreID: v.ID, + StoreName: v.Name, + OpenTime1: v.OpenTime1, + CloseTime1: v.CloseTime1, + OpenTime2: v.OpenTime2, + CloseTime2: v.CloseTime2, + Status: v.Status, + Distance: v.Distance, + Address: v.Address, + BrandName: brandInfos.Name, + BrandLogo: brandInfos.Logo, + DeliveryFeeDeductionSill: storePolicy[0].DeliveryFeeDeductionSill, + DeliveryFeeDeductionFee: storePolicy[0].DeliveryFeeDeductionFee, + } + tmp1s = append(tmp1s, tmp1) + } + //获取热销商品 + topSkusInfo, err := GetTopSkusByStoreIDs(ctx, storeID) + if err != nil { + return nil, "获取热销商品失败", err + } + for _, i := range tmp1s { + for _, j := range topSkusInfo { + if i.StoreID == j.StoreID { + data := HomePageInfos{ + StoreID: i.StoreID, + StoreName: i.StoreName, + OpenTime1: i.OpenTime1, + CloseTime1: i.CloseTime1, + OpenTime2: i.OpenTime2, + CloseTime2: i.CloseTime2, + Status: i.Status, + Distance: i.Distance, + Address: i.Address, + BrandName: i.BrandName, + BrandLogo: i.BrandLogo, + DeliveryFeeDeductionSill: i.DeliveryFeeDeductionSill, + DeliveryFeeDeductionFee: i.DeliveryFeeDeductionFee, + SkuID: j.SkuID, + SkuName: j.Name, + SkuStatus: j.Status, + BestSeller: j.BestSeller, + Img: j.Img, + Price: j.Price, + Unit: j.Unit, + } + multipleData = append(multipleData, data) + } + } + } + } + return multipleData, "", nil +} diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 588cc0ef3..449b41b02 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1537,3 +1537,22 @@ func GetBrandBill2(db *DaoDB, brandID int, vendorOrderID string, billType, feeTy } return data, err } + +type BrandInfos struct { + Name string + Logo string +} + +//获取门店品牌信息 +func GetStoreBrandInfos(storeID int) (date *BrandInfos, err error) { + var detail *BrandInfos + sqlParams := []interface{}{} + sql := "SELECT b.`name`,b.logo FROM store s LEFT JOIN brand b ON s.brand_id = b.id WHERE s.id= ? " + if storeID >= 0 { + sqlParams = append(sqlParams, storeID) + } + if err := GetRow(GetDB(), &detail, sql, sqlParams); err != nil { + return nil, err + } + return detail, err +} diff --git a/controllers/cms_store.go b/controllers/cms_store.go index c9b3bd5cd..3e0a603bf 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -592,28 +592,20 @@ func (c *StoreController) GetStoreListByLocation() { // @Param token header string false "认证token" // @Param lng query float64 true "经度" // @Param lat query float64 true "纬度" -//@Param storeID query string false "门店ID" // @Param needWalkDistance query bool false "是否需要返回步行距离(且以步行距离排序)" // @Param brandID query int false "品牌ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetHomePageByLocation [get] -//func (c *StoreController) GetHomePageByLocation() { -// c.callGetHomePageByLocation(func(params *tStoreGetHomePageByLocationParams) (interface{}, string, error) { -// details, _, err := cms.GetHomePageByLocation(params.Ctx, params.MapData) -// if err != nil { -// return nil, "根据经纬度获取门店详细信息失败", err -// } -// if params.Token != "" { -// utils.Str2Int() -// //获取店铺基本信息 -// //storeDetail := cms.GetStores(params.Ctx, params.Keyword, params.MapData, params.Offset, params.PageSize, timeList[0], timeList[1], params.OrderCountFrom, params.OrderCountTo) -// //retVal, err = cms.GetStoreVendorMaps(params.Ctx, nil, utils.Interface2String(), params.VendorID) -// } -// //return locationList, "", err -// return nil, "", err -// }) -//} +func (c *StoreController) GetHomePageByLocation() { + c.callGetHomePageByLocation(func(params *tStoreGetHomePageByLocationParams) (interface{}, string, error) { + details, _, err := cms.GetHomePageByLocation(params.Ctx, params.Lng, params.Lat, params.NeedWalkDistance, params.Token) + if err != nil { + return nil, "根据经纬度获取门店详细信息失败", err + } + return details, "", err + }) +} // @Title 老格恢复拓店进度 // @Description 老格恢复拓店进度 diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 30a51f685..19544ff0b 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2638,6 +2638,15 @@ func init() { Filters: nil, Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "GetHomePageByLocation", + Router: `/GetHomePageByLocation`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], web.ControllerComments{ Method: "GetStorePriceScore",