Files
Smart-Farm/app/farm/controller/IndexGoods.php
2026-01-04 15:01:16 +08:00

438 lines
9.6 KiB
PHP

<?php
namespace app\farm\controller;
use app\ApiRest;
use app\farm\model\Farmer;
use app\farm\model\ShopGoods;
use app\farm\model\ShopGoodsCate;
use app\Rest;
use app\farm\model\Cap;
use app\farm\model\Car;
use app\farm\model\Goods;
use app\farm\model\GoodsCate;
use app\farm\model\User;
use app\shop\model\GoodsSpe;
use app\shop\model\GoodsSpePrice;
use app\shop\model\IntegralList;
use app\shop\model\OrderGoods;
use app\shop\model\SeckillList;
use app\shop\model\ShopGoodsSpe;
use app\shop\model\StoreGoods;
use think\App;
use think\Request;
class IndexGoods extends ApiRest
{
protected $model;
protected $cate_model;
protected $car_model;
public function __construct(App $app)
{
parent::__construct($app);
$this->model = new ShopGoods();
$this->cate_model = new ShopGoodsCate();
$this->car_model = new Car();
}
/**
* @author chenniang
* @DataTime: 2021-03-19 11:57
* @功能说明:首页选择店铺列表
*/
public function indexStoreList()
{
$input = $this->_param;
$page = $input['page'] ?? 10;
$dis[] = ['uniacid', '=', $this->_uniacid];
$dis[] = ['status', '=', 2];
$dis[] = ['business_status', '=', 1];
if (!empty($input['store_name'])) {
$dis[] = ['title', 'like', '%' . $input['store_name'] . '%'];
}
$lat = !empty($input['lat']) ? $input['lat'] : 0;
$lng = !empty($input['lng']) ? $input['lng'] : 0;
$alh = '(2 * 6378.137* ASIN(SQRT(POW(SIN(3.1415926535898*(' . $lat . '-lat)/360),2)+COS(3.1415926535898*' . $lat . '/180)* COS(' . $lat . ' * 3.1415926535898/180)*POW(SIN(3.1415926535898*(' . $lng . '-lng)/360),2))))*1000 as distance';
$alhs = '(2 * 6378.137* ASIN(SQRT(POW(SIN(3.1415926535898*(' . $lat . '-lat)/360),2)+COS(3.1415926535898*' . $lat . '/180)* COS(' . $lat . ' * 3.1415926535898/180)*POW(SIN(3.1415926535898*(' . $lng . '-lng)/360),2))))*1000<20000';
$store_model = new Farmer();
$data = $store_model->dataDistanceList($dis, $alh, $alhs, $page);
if (!empty($data['data'])) {
foreach ($data['data'] as &$v) {
$v['distance'] = getDistances($v['lng'], $v['lat'], $lng, $lat);
$v['distance'] = $store_model->getDistanceAttr($v['distance']);
}
}
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-19 13:24
* @功能说明:选择门店
*/
public function selectStore()
{
$input = $this->_input;
$user_model = new User();
$res = $user_model->dataUpdate(['id' => $this->getUserId()], ['last_store_id' => $input['store_id']]);
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-18 16:46
* @功能说明:分类列表
*/
public function goodsIndex()
{
$input = $this->_param;
$store_id = !empty($input['store_id']) ? $input['store_id'] : 0;
$data['cate_id'] = $this->cate_model->shopCateList($this->_uniacid, $store_id);
if (!empty($store_id)) {
$store_model = new Farmer();
$data['store_info'] = $store_model->dataInfo(['id' => $store_id]);
}
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2022-03-01 13:47
* @功能说明:
*/
public function haveSelectStoreId()
{
return $this->success($this->getStoreInfo()['id']);
}
/**
* @author chenniang
* @DataTime: 2022-02-22 15:27
* @功能说明:商品列表
*/
public function goodsList()
{
$input = $this->_param;
$dis[] = ['a.uniacid', '=', $this->_uniacid];
$dis[] = ['a.status', '=', 1];
// $dis[] = ['a.index_show','=',1];
$dis[] = ['d.status', '=', 2];
$dis[] = ['d.business_status', '=', 1];
if (!empty($input['store_id'])) {
$dis[] = ['b.store_id', '=', $input['store_id']];
}
if (!empty($input['cate_id'])) {
$dis[] = ['c.cate_id', '=', $input['cate_id']];
}
if (!empty($input['goods_name'])) {
$dis[] = ['a.goods_name', 'like', '%' . $input['goods_name'] . '%'];
}
//商品信息
$data = $this->model->indexGoodsList($dis, 10);
if (!empty($data['data'])) {
foreach ($data['data'] as &$v) {
$where = [
'type' => 5,
'user_id' => $this->getUserId()
];
$v['car_count'] = $this->car_model->where($where)->count();
}
}
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-19 15:46
* @功能说明:商品详情
*/
public function goodsInfo()
{
$input = $this->_param;
$dis = [
'id' => $input['id']
];
$data = $this->model->dataInfo($dis);
$farm_model = new Farmer();
$where[] = ['id', 'in', $data['store']];
$data['store_info'] = $farm_model->dataInfo($where);
$spe_model = new ShopGoodsSpe();
$spe_price_model = new GoodsSpePrice();
$where = [
'goods_id' => $input['id'],
'status' => 1
];
$data['spe_text'] = $spe_model->goodsSpe($where);
$data['spe_price'] = $spe_price_model->goodsSpePrice($where);
$kill_model = new SeckillList();
$integral_model = new IntegralList();
//秒杀活动
$data['kill_list'] = $kill_model->atvIng($input['id'], 0, 2);
if (!empty($data['spe_price'])) {
foreach ($data['spe_price'] as &$v) {
//查询是否有秒杀活动
$v['kill_atv'] = $kill_model->atvIng($input['id'], $v['id']);
if (empty($v['kill_atv'])) {
//积分活动
$v['integral_atv'] = $integral_model->atvIng($input['id'], $v['id']);
} else {
$v['integral_atv'] = [];
}
}
}
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-03-24 14:07
* @功能说明:购物车信息
*/
public function carInfo()
{
$input = $this->_param;
$store_id = !empty($input['store_id']) ? $input['store_id'] : 0;
//购物车信息
$car_info = $this->car_model->carPriceAndCount($this->getUserId(), $store_id, 1);
return $this->success($car_info);
}
/**
* @author chenniang
* @DataTime: 2021-03-24 14:46
* @功能说明:添加到购物车
*/
public function addCar()
{
$input = $this->_input;
$is_show_del = !empty($input['is_show_del']) ? $input['is_show_del'] : 1;
if ($is_show_del == 1) {
$this->car_model->where(['user_id' => $this->getUserId(), 'is_show' => 2])->delete();
}
$insert = [
'uniacid' => $this->_uniacid,
'user_id' => $this->getUserId(),
'farmer_id' => $input['store_id'],
'goods_id' => $input['goods_id'],
'spe_id' => $input['spe_id'],
'type' => 5,
'is_show' => !empty($input['is_show']) ? $input['is_show'] : 1,
];
$input['goods_num'] = !empty($input['goods_num']) ? $input['goods_num'] : 1;
$info = $this->car_model->dataInfo($insert);
//增加数量
if (!empty($info)) {
$res = $this->car_model->dataUpdate(['id' => $info['id']], ['goods_num' => $info['goods_num'] + $input['goods_num']]);
} else {
//添加到购物车
$insert['goods_num'] = $input['goods_num'];
$insert['status'] = 1;
$res = $this->car_model->dataAdd($insert);
}
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-24 14:54
* @功能说明:删除购物车
*/
public function delCar()
{
$input = $this->_input;
$info = $this->car_model->dataInfo(['id' => $input['id']]);
$input['goods_num'] = !empty($input['goods_num']) ? $input['goods_num'] : 1;
//加少数量
if ($info['goods_num'] > $input['goods_num']) {
$res = $this->car_model->dataUpdate(['id' => $info['id']], ['goods_num' => $info['goods_num'] - $input['goods_num']]);
} else {
$res = $this->car_model->where(['id' => $info['id']])->delete();
}
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-25 10:39
* @功能说明:
*/
public function carUpdate()
{
$input = $this->_input;
if (!empty($input['id'])) {
$res = $this->car_model->where('id', 'in', $input['id'])->update(['status' => $input['status']]);
} else {
$res = $this->car_model->where('user_id', '=', $this->getUserId())->update(['status' => $input['status']]);
}
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-03-24 14:59
* @功能说明:批量删除购物车
*/
public function delSomeCar()
{
$input = $this->_input;
$dis = [
'uniacid' => $this->_uniacid,
'user_id' => $this->getUserId(),
'farmer_id' => $this->getStoreInfo()['id'],
'type' => 5,
];
$res = $this->car_model->where($dis)->delete();
return $this->success($res);
}
}