Files
Smart-Farm/app/farm/controller/IndexGoods.php
2025-12-22 14:32:54 +08:00

442 lines
9.3 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;
$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,10);
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);
}
}