dlh_test_server/app/api/logic/LocalStoreLogic.php

143 lines
5.2 KiB
PHP
Raw Normal View History

<?php
namespace app\api\logic;
use app\common\basics\Logic;
use app\common\model\LocalStore;
2024-08-22 09:59:01 +08:00
use app\common\model\localstore\LocalStoreGoods;
use app\common\model\localstore\LocalStoreGoodsPic;
use think\facade\Db;
class LocalStoreLogic extends Logic
{
public function getLocalList($data){
$model = new LocalStore;
$distance = "";
2024-08-10 10:38:31 +08:00
$s =$s1= "";
2024-08-10 10:34:18 +08:00
if(isset($data['c_name'])){
if($data['c_name']!=""){
2024-08-10 10:38:31 +08:00
$s1 = "address like '%".$data['c_name']."%'";
2024-08-10 10:37:16 +08:00
$s = "and address like '%".$data['c_name']."%'";
2024-08-10 10:34:18 +08:00
}
}
2024-08-10 10:37:16 +08:00
$count = $model->where('is_delete',0)
2024-08-10 10:38:31 +08:00
->where($s1)
2024-08-10 15:55:35 +08:00
->where("shopLogo is not null")
2024-08-10 10:37:16 +08:00
->count();
// $lists = $model->where('is_delete',0)
// ->where($s)
// ->page($data['page'], $data['size'])
// ->order('lstore_id desc')
// ->select();
2024-08-10 10:40:10 +08:00
$size = $data['page_size'];
2024-08-10 10:23:02 +08:00
$page = ($data['page_no']-1)*$data['page_size'];
2024-08-10 14:58:01 +08:00
// $sql = "SELECT *, ST_Distance_Sphere(POINT(".$data['longitude'].",".$data['latitude']."),POINT(longitude, latitude)) AS distance
// FROM ls_local_store where is_delete = 0 $s
// ORDER BY distance limit $page,$size";
2024-08-10 15:56:36 +08:00
$sql = "SELECT * FROM ls_local_store where is_delete = 0 and shopLogo is not null $s ORDER BY lstore_id asc limit ".$page.",".$size;
2024-08-10 16:01:35 +08:00
// var_dump($sql);
$lists = Db::query($sql);
foreach($lists as $key=>$value){
$lists[$key]['distance'] = round($this->distance($data['latitude'], $data['longitude'], $value['latitude'], $value['longitude'])/1000,2)."公里";
2024-08-10 10:52:04 +08:00
$lists[$key]['store_nickname'] = $value["shopName"];
}
$data = [
'list' => $lists,
2024-08-10 10:23:02 +08:00
'page' => $data['page_no'],
'size' => $data['page_size'],
'count' => $count,
2024-08-10 10:23:02 +08:00
'more' => is_more($count, $data['page_no'], $data['page_size'])
];
2024-08-10 16:01:35 +08:00
// var_dump($data);
return $data;
}
2024-08-11 16:58:13 +08:00
public function getLocalOrderList($data){
$count = Db::name("local_store_order")
->where("lstore_id",$data['lstore_id'])
->where("pay_shop_type",1)
->where('state',1)
->count();
// $lists = $model->where('is_delete',0)
// ->where($s)
// ->page($data['page'], $data['size'])
// ->order('lstore_id desc')
// ->select();
$size = $data['page_size'];
$page = ($data['page_no']-1)*$data['page_size'];
// $sql = "SELECT *, ST_Distance_Sphere(POINT(".$data['longitude'].",".$data['latitude']."),POINT(longitude, latitude)) AS distance
// FROM ls_local_store where is_delete = 0 $s
// ORDER BY distance limit $page,$size";
$sql = "SELECT * FROM ls_local_store_order where state = 1 and
pay_shop_type = 1 and lstore_id = ".$data['lstore_id']."
ORDER BY lstore_id desc limit ".$page.",".$size;
// var_dump($sql);
$lists = Db::query($sql);
$data = [
'list' => $lists,
'page' => $data['page_no'],
'size' => $data['page_size'],
'count' => $count,
'more' => is_more($count, $data['page_no'], $data['page_size'])
];
// var_dump($data);
return $data;
}
2024-08-12 10:31:55 +08:00
public function getLocalUserOrderList($data){
$count = Db::name("local_store_order")
->where("user_id",$data['user_id'])
->where("pay_shop_type",1)
->where('state',1)
->count();
$size = $data['page_size'];
$page = ($data['page_no']-1)*$data['page_size'];
$sql = "SELECT * FROM ls_local_store_order where state = 1 and
2024-08-12 11:03:54 +08:00
pay_shop_type = 1 and user_id = ".$data['user_id']."
2024-08-12 10:31:55 +08:00
ORDER BY lstore_id desc limit ".$page.",".$size;
$lists = Db::query($sql);
$data = [
'list' => $lists,
'page' => $data['page_no'],
'size' => $data['page_size'],
'count' => $count,
'more' => is_more($count, $data['page_no'], $data['page_size'])
];
return $data;
}
function distance($lat1, $lon1, $lat2, $lon2) {
$earthRadius = 6371000; // 地球平均半径,单位为米
// 将经纬度转换为弧度
$lat1 = deg2rad($lat1);
$lon1 = deg2rad($lon1);
$lat2 = deg2rad($lat2);
$lon2 = deg2rad($lon2);
// 使用haversine公式计算距离
$diffLat = $lat2-$lat1;
$diffLon = $lon2-$lon1;
$a = sin($diffLat / 2) * sin($diffLat / 2) + cos($lat1) * cos($lat2) * sin($diffLon / 2) * sin($diffLon / 2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
$distance = $earthRadius * $c;
return $distance;
}
2024-08-21 17:22:00 +08:00
2024-08-22 09:56:10 +08:00
public static function addGoods($form, $user_id)
2024-08-21 17:22:00 +08:00
{
2024-08-22 10:00:26 +08:00
$form['user_id'] = $user_id;
$form['create_time'] = time();
2024-08-22 09:57:08 +08:00
$pic = $form['url'];
2024-08-22 10:00:26 +08:00
$id = LocalStoreGoods::insertGetId($form);
2024-08-21 17:22:00 +08:00
2024-08-22 09:56:10 +08:00
$arr = [];
foreach ($pic as $k => &$v) {
$arr[$k]['lsg_id'] = $id;
$arr[$k]['url'] = $v;
}
dump($arr);
die;
2024-08-21 17:22:00 +08:00
}
}