commit
9f0ba35ca7
@ -95,4 +95,30 @@ class CityAreaDao extends BaseDao
|
||||
$lst[] = $city;
|
||||
return $lst;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取经纬度
|
||||
* @param $location
|
||||
* @param $streetCode
|
||||
* @return array
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\DbException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
*/
|
||||
public function getLngAndLat($location, $streetCode)
|
||||
{
|
||||
if (!empty($location) && $location != ',') {
|
||||
[$lat, $lng] = explode(',', $location);
|
||||
} elseif (!empty($streetCode)) {
|
||||
$location = GeoStreet::where('street_code', $streetCode)->field('lng,lat')->find();
|
||||
if (!empty($location)) {
|
||||
[$lat, $lng] = [$location['lat'], $location['lng']];
|
||||
}
|
||||
}
|
||||
if (empty($lat) || empty($lng)) {
|
||||
[$lat, $lng] = ['28.889137', '105.443352'];
|
||||
}
|
||||
return [$lat, $lng];
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,13 +15,10 @@ namespace app\common\dao\store;
|
||||
|
||||
use app\common\dao\BaseDao;
|
||||
use app\common\dao\store\product\CloudProductDao;
|
||||
use app\common\model\BaseModel;
|
||||
use app\common\model\store\GeoStreet;
|
||||
use app\common\model\store\product\CloudProduct;
|
||||
use app\common\model\store\StoreActivity;
|
||||
use app\common\model\store\StoreActivityOrderProduct;
|
||||
use app\common\repositories\store\product\SpuRepository;
|
||||
use app\common\repositories\system\RelevanceRepository;
|
||||
use think\exception\ValidateException;
|
||||
use think\facade\Db;
|
||||
|
||||
@ -55,17 +52,7 @@ class StoreActivityDao extends BaseDao
|
||||
*/
|
||||
public function product($location, $streetCode, $activityId)
|
||||
{
|
||||
if (!empty($location) && $location != ',') {
|
||||
[$lat, $lng] = explode(',', $location);
|
||||
} elseif (!empty($streetCode)) {
|
||||
$location = GeoStreet::where('street_code', $streetCode)->field('lng,lat')->find();
|
||||
if (!empty($location)) {
|
||||
[$lat, $lng] = [$location['lat'], $location['lng']];
|
||||
}
|
||||
}
|
||||
if (empty($lat) || empty($lng)) {
|
||||
[$lat, $lng] = ['28.889137', '105.443352'];
|
||||
}
|
||||
[$lat, $lng] = (new CityAreaDao())->getLngAndLat($location, $streetCode);
|
||||
$cloud_product_arr = (new CloudProductDao())->getByDistance($lat, $lng, ['activity_id' => $activityId], 4);
|
||||
$cloud_product = [];
|
||||
foreach ($cloud_product_arr as $key => $value) {
|
||||
|
@ -347,7 +347,7 @@ class MerchantDao extends BaseDao
|
||||
}
|
||||
|
||||
/**
|
||||
* 按距离获取有效的商户
|
||||
* 按距离获取有效的云仓商品
|
||||
* @param $lat
|
||||
* @param $lng
|
||||
* @param $sort 是否按距离排序
|
||||
|
@ -2,8 +2,8 @@
|
||||
|
||||
namespace app\controller\api\store\product;
|
||||
|
||||
use app\common\dao\store\CityAreaDao;
|
||||
use app\common\dao\system\merchant\MerchantDao;
|
||||
use app\common\model\store\GeoStreet;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
use app\common\repositories\store\product\SpuRepository;
|
||||
use think\facade\Db;
|
||||
@ -47,17 +47,8 @@ class CloudWarehouse extends BaseController
|
||||
public function index($street_code, $page = 1, $category_id = 0, $cate_pid = 0,$cate_id = 0,$location = '')
|
||||
{
|
||||
$keyword = $this->request->get('keyword');
|
||||
if (!empty($location) && $location != ',') {
|
||||
[$lat, $lng] = explode(',', $location);
|
||||
} elseif (!empty($street_code)) {
|
||||
$location = GeoStreet::where('street_code', $street_code)->field('lng,lat')->find();
|
||||
if (!empty($location)) {
|
||||
[$lat, $lng] = [$location['lat'], $location['lng']];
|
||||
}
|
||||
}
|
||||
if (empty($lat) || empty($lng)) {
|
||||
[$lat, $lng] = ['28.889137', '105.443352'];
|
||||
}
|
||||
$order = $this->request->get('order');
|
||||
[$lat, $lng] = (new CityAreaDao())->getLngAndLat($location, $street_code);
|
||||
$query = Db::name('cloud_product')->where('status', 1);
|
||||
$productIds = (new MerchantDao())->getProductByDistance($lat, $lng,false,50000);
|
||||
if (empty($productIds)) {
|
||||
@ -73,6 +64,15 @@ class CloudWarehouse extends BaseController
|
||||
if (!empty($keyword)) {
|
||||
$query->where('store_name', 'like', '%'. $keyword . '%');
|
||||
}
|
||||
if (!empty($order)) {
|
||||
if ($order == 'sales') {
|
||||
$query->order($order, 'desc');
|
||||
} elseif ($order == 'price_desc') {
|
||||
$query->order('price', 'desc');
|
||||
} else {
|
||||
$query->order('price', 'asc');
|
||||
}
|
||||
}
|
||||
$cloud_product_arr = $query->where(function($query){
|
||||
$query->where('mer_labels', '')
|
||||
->whereOr('mer_labels',',5,');
|
||||
@ -87,7 +87,8 @@ class CloudWarehouse extends BaseController
|
||||
'status' => 1,
|
||||
'is_del' => 0,
|
||||
'mer_status' => 1,
|
||||
'product_id' => $cloud_product
|
||||
'product_id' => $cloud_product,
|
||||
'order' => $order
|
||||
];
|
||||
if (!$cloud_product) {
|
||||
return app('json')->success(['count' => 0, 'list' => []]);
|
||||
|
@ -10,10 +10,9 @@
|
||||
// +----------------------------------------------------------------------
|
||||
namespace app\controller\api\store\product;
|
||||
|
||||
use app\common\dao\store\CityAreaDao;
|
||||
use app\common\dao\system\merchant\MerchantDao;
|
||||
use app\common\model\store\GeoStreet;
|
||||
use app\common\model\system\merchant\Merchant;
|
||||
use app\common\repositories\store\product\ProductRepository;
|
||||
use app\common\repositories\store\StoreCategoryRepository;
|
||||
use app\common\repositories\system\merchant\MerchantRepository;
|
||||
use app\common\repositories\user\UserHistoryRepository;
|
||||
@ -68,23 +67,12 @@ class StoreSpu extends BaseController
|
||||
'location'
|
||||
]);
|
||||
if ($where['type_id']||$where['type_code']) {
|
||||
[$lat, $lng] = (new CityAreaDao())->getLngAndLat($where['location'], $where['street_id']);
|
||||
$arr = ['status' => 1, 'mer_state' => 1, 'is_del' => 0];
|
||||
$query = Merchant::where($arr);
|
||||
if ($where['location']) {
|
||||
[$lat, $lng] = explode(',', $where['location']);
|
||||
$merIds = (new MerchantDao())->getValidMerchantByDistance($lat, $lng);
|
||||
if (!empty($merIds)) {
|
||||
$query->whereIn('mer_id', $merIds);
|
||||
}
|
||||
}
|
||||
if ($where['street_id'] && empty($where['location'])) {
|
||||
$location = GeoStreet::where('street_code', $where['street_id'])->field('lng,lat')->find();
|
||||
if (!empty($location)) {
|
||||
$merIds = (new MerchantDao())->getValidMerchantByDistance($location['lat'], $location['lng']);
|
||||
if (!empty($merIds)) {
|
||||
$query->whereIn('mer_id', $merIds);
|
||||
}
|
||||
}
|
||||
$merIds = (new MerchantDao())->getValidMerchantByDistance($lat, $lng);
|
||||
if (!empty($merIds)) {
|
||||
$query->whereIn('mer_id', $merIds);
|
||||
}
|
||||
if ($where['village_id']) {
|
||||
$query->where('village_id', $where['village_id']);
|
||||
|
Loading…
x
Reference in New Issue
Block a user