- GetPlaces support keyword.
This commit is contained in:
@@ -3,11 +3,13 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/utils"
|
"git.rosy.net.cn/baseapi/utils"
|
||||||
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
"git.rosy.net.cn/jx-callback/business/jxcallback/scheduler/basesch"
|
||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
"git.rosy.net.cn/jx-callback/globals"
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
@@ -66,6 +68,61 @@ func GetQiniuUploadToken(suffix string) (upTokenInfo map[string]interface{}, err
|
|||||||
return upTokenInfo, err
|
return upTokenInfo, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetPlaces(keyword string, includeDisabled bool, params map[string]interface{}) ([]*model.Place, error) {
|
||||||
|
sql := `
|
||||||
|
SELECT *
|
||||||
|
FROM place t1
|
||||||
|
WHERE 1 = 1
|
||||||
|
`
|
||||||
|
if !includeDisabled {
|
||||||
|
sql += " AND enabled = 1"
|
||||||
|
}
|
||||||
|
sqlParams := make([]interface{}, 0)
|
||||||
|
if keyword != "" {
|
||||||
|
sql += " AND (t1.name LIKE ?"
|
||||||
|
sqlParams = append(sqlParams, "%"+keyword+"%")
|
||||||
|
if keywordInt64, err2 := strconv.ParseInt(keyword, 10, 64); err2 == nil {
|
||||||
|
sql += " OR t1.code = ?"
|
||||||
|
sqlParams = append(sqlParams, keywordInt64)
|
||||||
|
}
|
||||||
|
sql += ")"
|
||||||
|
}
|
||||||
|
if params["parentCode"] != nil {
|
||||||
|
sql += " AND t1.parent_code = ?"
|
||||||
|
sqlParams = append(sqlParams, params["parentCode"])
|
||||||
|
}
|
||||||
|
if params["level"] != nil {
|
||||||
|
sql += " AND t1.level = ?"
|
||||||
|
sqlParams = append(sqlParams, params["level"])
|
||||||
|
}
|
||||||
|
sql += " ORDER BY t1.level, t1.name"
|
||||||
|
globals.SugarLogger.Debug(sql)
|
||||||
|
places := []*model.Place{}
|
||||||
|
return places, dao.GetRows(nil, &places, sql, sqlParams)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdatePlaces(places []map[string]interface{}, userName string) (num int64, err error) {
|
||||||
|
if len(places) == 0 {
|
||||||
|
return 0, ErrMissingInput
|
||||||
|
}
|
||||||
|
for _, place := range places {
|
||||||
|
if place["code"] == nil {
|
||||||
|
return 0, ErrMissingInput
|
||||||
|
}
|
||||||
|
placeid := &model.Place{}
|
||||||
|
valid := dao.NormalMakeMapByFieldList(place, []string{"jdCode", "enabled", "mtpsPrice"}, userName)
|
||||||
|
if num, err = dao.UpdateEntityByKV(nil, placeid, valid, utils.Params2Map("Code", place["code"])); err != nil {
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return num, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdatePlace(placeCode int, payload map[string]interface{}, userName string) (num int64, err error) {
|
||||||
|
payload["code"] = placeCode
|
||||||
|
return UpdatePlaces([]map[string]interface{}{payload}, userName)
|
||||||
|
}
|
||||||
|
|
||||||
/////
|
/////
|
||||||
func genPicFileName(suffix string) string {
|
func genPicFileName(suffix string) string {
|
||||||
return fmt.Sprintf("%x%s", md5.Sum([]byte(utils.GetUUID()+suffix)), suffix)
|
return fmt.Sprintf("%x%s", md5.Sum([]byte(utils.GetUUID()+suffix)), suffix)
|
||||||
|
|||||||
@@ -29,40 +29,6 @@ var (
|
|||||||
ErrCanNotFindVendor = errors.New("vendorID参数不合法")
|
ErrCanNotFindVendor = errors.New("vendorID参数不合法")
|
||||||
)
|
)
|
||||||
|
|
||||||
func GetPlaces(parentCode int, includeDisabled bool) ([]*model.Place, error) {
|
|
||||||
db := dao.GetDB()
|
|
||||||
places := []*model.Place{}
|
|
||||||
cond := map[string]interface{}{
|
|
||||||
"ParentCode": parentCode,
|
|
||||||
}
|
|
||||||
if !includeDisabled {
|
|
||||||
cond["Enabled"] = 1
|
|
||||||
}
|
|
||||||
return places, dao.GetEntities(db, &places, cond, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdatePlaces(places []map[string]interface{}, userName string) (num int64, err error) {
|
|
||||||
if len(places) == 0 {
|
|
||||||
return 0, ErrMissingInput
|
|
||||||
}
|
|
||||||
for _, place := range places {
|
|
||||||
if place["code"] == nil {
|
|
||||||
return 0, ErrMissingInput
|
|
||||||
}
|
|
||||||
placeid := &model.Place{}
|
|
||||||
valid := dao.NormalMakeMapByFieldList(place, []string{"jdCode", "enabled", "mtpsPrice"}, userName)
|
|
||||||
if num, err = dao.UpdateEntityByKV(nil, placeid, valid, utils.Params2Map("Code", place["code"])); err != nil {
|
|
||||||
return num, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return num, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func UpdatePlace(placeCode int, payload map[string]interface{}, userName string) (num int64, err error) {
|
|
||||||
payload["code"] = placeCode
|
|
||||||
return UpdatePlaces([]map[string]interface{}{payload}, userName)
|
|
||||||
}
|
|
||||||
|
|
||||||
// todo 门店绑定信息可以考虑以数组形式返回,而不是现在这样
|
// todo 门店绑定信息可以考虑以数组形式返回,而不是现在这样
|
||||||
func GetStores(keyword string, params map[string]interface{}, offset, pageSize int) (retVal *StoresInfo, err error) {
|
func GetStores(keyword string, params map[string]interface{}, offset, pageSize int) (retVal *StoresInfo, err error) {
|
||||||
sqlFrom := `
|
sqlFrom := `
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"git.rosy.net.cn/jx-callback/business/model"
|
"git.rosy.net.cn/jx-callback/business/model"
|
||||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||||
"git.rosy.net.cn/jx-callback/business/partner"
|
"git.rosy.net.cn/jx-callback/business/partner"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
"git.rosy.net.cn/jx-callback/globals/api"
|
"git.rosy.net.cn/jx-callback/globals/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,6 +20,13 @@ const (
|
|||||||
VendorStorePrefix = "好菜鲜生"
|
VendorStorePrefix = "好菜鲜生"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type tEbaiStoreInfo struct {
|
||||||
|
model.Store
|
||||||
|
VendorStoreID string `orm:"column(vendor_store_id)"`
|
||||||
|
RealLastOperator string
|
||||||
|
EbaiStoreStatus int
|
||||||
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error) {
|
||||||
baiduShopID := utils.Str2Int64(vendorStoreID)
|
baiduShopID := utils.Str2Int64(vendorStoreID)
|
||||||
result, err := api.EbaiAPI.ShopGet("", baiduShopID)
|
result, err := api.EbaiAPI.ShopGet("", baiduShopID)
|
||||||
@@ -70,20 +78,34 @@ func (p *PurchaseHandler) ReadStore(vendorStoreID string) (*model.Store, error)
|
|||||||
retVal.ID = int(utils.Str2Int64WithDefault(utils.Interface2String(result["shop_id"]), 0))
|
retVal.ID = int(utils.Str2Int64WithDefault(utils.Interface2String(result["shop_id"]), 0))
|
||||||
|
|
||||||
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
retVal.DeliveryRangeType = model.DeliveryRangeTypePolygon
|
||||||
region := result["delivery_region"].([]interface{})[0].(map[string]interface{})["region"].([]interface{})[0].([]interface{})
|
retVal.DeliveryRange = EbaiDeliveryRegion2Jx(result["delivery_region"])
|
||||||
coords := make([]string, len(region))
|
|
||||||
for k, v := range region {
|
|
||||||
mapV := v.(map[string]interface{})
|
|
||||||
coords[k] = fmt.Sprintf("%d,%d", jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["longitude"])), jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["latitude"])))
|
|
||||||
}
|
|
||||||
retVal.DeliveryRange = strings.Join(coords, ";")
|
|
||||||
return retVal, nil
|
return retVal, nil
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *PurchaseHandler) UpdateStore(storeID int, userName string) error {
|
func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error) {
|
||||||
return nil
|
db := dao.GetDB()
|
||||||
|
var store tEbaiStoreInfo
|
||||||
|
sql := `
|
||||||
|
SELECT t1.*, t2.status ebai_store_status, t2.vendor_store_id,
|
||||||
|
IF(t1.updated_at > t2.updated_at, t1.last_operator, t2.last_operator) real_last_operator
|
||||||
|
FROM store t1
|
||||||
|
JOIN store_map t2 ON t1.id = t2.store_id AND t2.vendor_id = ?
|
||||||
|
WHERE t1.id = ?`
|
||||||
|
if err = dao.GetRow(db, &store, sql, model.VendorIDJD, storeID); err == nil {
|
||||||
|
params := map[string]interface{}{
|
||||||
|
"name": jxutils.ComposeStoreName(store.Name, partner.StoreNameSeparator, VendorStorePrefix),
|
||||||
|
"address": store.Address,
|
||||||
|
"coord_type": ebaiapi.CoordTypeAutonavi, // 一直用高德
|
||||||
|
}
|
||||||
|
// globals.SugarLogger.Debug(utils.Format4Output(params, false))
|
||||||
|
if globals.EnableStoreWrite {
|
||||||
|
err = api.JdAPI.UpdateStoreInfo4Open(store.VendorStoreID, store.RealLastOperator, params)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func EbaiDeliveryType2Jx(deliveryType string) int8 {
|
func EbaiDeliveryType2Jx(deliveryType string) int8 {
|
||||||
@@ -100,3 +122,17 @@ func EbaiDeliveryType2Jx(deliveryType string) int8 {
|
|||||||
return scheduler.StoreDeliveryTypeCrowdSourcing
|
return scheduler.StoreDeliveryTypeCrowdSourcing
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func EbaiDeliveryRegion2Jx(deliveryRegion interface{}) string {
|
||||||
|
region := deliveryRegion.([]interface{})[0].(map[string]interface{})["region"].([]interface{})[0].([]interface{})
|
||||||
|
coords := make([]string, len(region))
|
||||||
|
for k, v := range region {
|
||||||
|
mapV := v.(map[string]interface{})
|
||||||
|
coords[k] = fmt.Sprintf("%d,%d", jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["longitude"])), jxutils.StandardCoordinate2Int(utils.MustInterface2Float64(mapV["latitude"])))
|
||||||
|
}
|
||||||
|
return strings.Join(coords, ";")
|
||||||
|
}
|
||||||
|
|
||||||
|
func JxDeliveryRegion2Ebai(coords string) string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ func (p *PurchaseHandler) UpdateStore(storeID int, userName string) (err error)
|
|||||||
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
|
"serviceTimeEnd1": JxOperationTime2JdOperationTime(store.CloseTime1),
|
||||||
"deliveryRangeType": store.DeliveryRangeType,
|
"deliveryRangeType": store.DeliveryRangeType,
|
||||||
"coordinateType": 3, // 一直用高德
|
"coordinateType": 3, // 一直用高德
|
||||||
|
"lng": jxutils.IntCoordinate2Standard(store.Lng),
|
||||||
|
"lat": jxutils.IntCoordinate2Standard(store.Lat),
|
||||||
"city": store.JdCityCode,
|
"city": store.JdCityCode,
|
||||||
"county": store.JdDistrictCode,
|
"county": store.JdDistrictCode,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,16 +11,18 @@ type CmsController struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// @Title 得到地点(省,城市,区)信息
|
// @Title 得到地点(省,城市,区)信息
|
||||||
// @Description parentCode与vendorID必传入一个,vendorID的意思是得到所有与这个厂商相关的城市列表。地点级别:省为1,市为2,区为3,注意直辖市也要分省与市级
|
// @Description 得到地点(省,城市,区)信息。
|
||||||
// @Param token header string true "认证token"
|
// @Param token header string true "认证token"// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||||
// @Param parentCode query int true "上级地点code,这个指的是国家标准CODE(中国为:100000,北京为:110000,北京市为:110100),不是数据库中的ID"
|
// @Param keyword query string false "查询关键字(可以为空,为空表示不限制)"
|
||||||
|
// @Param parentCode query int false "上级地点code,这个指的是国家标准CODE(中国为:100000,北京为:110000,北京市为:110100),不是数据库中的ID"
|
||||||
|
// @Param level query int false "地点级别:省为1,市为2,区为3,注意直辖市也要分省与市级"
|
||||||
// @Param includeDisabled query bool false "是否包括禁用的城市(缺省不包括)"
|
// @Param includeDisabled query bool false "是否包括禁用的城市(缺省不包括)"
|
||||||
// @Success 200 {object} controllers.CallResult
|
// @Success 200 {object} controllers.CallResult
|
||||||
// @Failure 200 {object} controllers.CallResult
|
// @Failure 200 {object} controllers.CallResult
|
||||||
// @router /GetPlaces [get]
|
// @router /GetPlaces [get]
|
||||||
func (c *CmsController) GetPlaces() {
|
func (c *CmsController) GetPlaces() {
|
||||||
c.callGetPlaces(func(params *tCmsGetPlacesParams) (retVal interface{}, errCode string, err error) {
|
c.callGetPlaces(func(params *tCmsGetPlacesParams) (retVal interface{}, errCode string, err error) {
|
||||||
retVal, err = cms.GetPlaces(params.ParentCode, params.IncludeDisabled)
|
retVal, err = cms.GetPlaces(params.Keyword, params.IncludeDisabled, params.MapData)
|
||||||
return retVal, "", err
|
return retVal, "", err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user