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

583 lines
13 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace app\farm\controller;
use app\AdminRest;
use app\farm\model\ShopGoods;
use app\farm\model\ShopGoodsCate;
use app\member\model\DiscountGoods;
use think\App;
use app\shop\model\Goods as Model;
use think\facade\Db;
class AdminGoods extends AdminRest
{
protected $model;
protected $cate_model;
protected $spe_model;
protected $spe_price_model;
public function __construct(App $app) {
parent::__construct($app);
$this->model = new ShopGoods();
$this->cate_model = new ShopGoodsCate();
$this->spe_model = new Shop;
$this->spe_price_model = new GoodsSpePrice();
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:01
* @功能说明:商品分类列表
*/
public function goodsCateList(){
$input = $this->_param;
$dis[] = ['uniacid','=',$this->_uniacid];
$dis[] = ['status','>',-1];
if(!empty($input['title'])){
$dis[] = ['title','like','%'.$input['title'].'%'];
}
$data = $this->cate_model->dataList($dis,$input['limit']);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:17
* @功能说明:添加分类
*/
public function goodsCateAdd(){
$input = $this->_input;
$input['uniacid'] = $this->_uniacid;
$data = $this->cate_model->dataAdd($input);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:18
* @功能说明:编辑分类
*/
public function goodsCateUpdate(){
$input = $this->_input;
$input['uniacid'] = $this->_uniacid;
$dis = [
'id' => $input['id']
];
$data = $this->cate_model->dataUpdate($dis,$input);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:18
* @功能说明:编辑分类
*/
public function goodsCateInfo(){
$input = $this->_input;
$input['uniacid'] = $this->_uniacid;
$dis = [
'id' => $input['id']
];
$data = $this->cate_model->dataInfo($dis);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 17:58
* @功能说明:分类下拉框
*/
public function goodsCateSelect(){
$input['uniacid'] = $this->_uniacid;
$dis = [
'uniacid' => $this->_uniacid,
'status' => 1
];
$data = $this->cate_model->where($dis)->select()->toArray();
return $this->success($data);
}
/**
* 获取商品列表
*/
public function goodsList(){
$input= $this->_param;
$dis[]= ['uniacid','=',$this->_uniacid];
if(!empty($input['name'])){
$dis[] = ['name','like',"%".$input['name']."%"];
}
if(!empty($input['cate'])){
$dis[] = ['type','=',$input['cate']];
}
//自提
if(!empty($input['is_self'])){
$dis[] = ['is_self','=',$input['is_self']];
}
//快递
if(!empty($input['is_send'])){
$dis[] = ['is_send','=',$input['is_send']];
}
$sale_type = $input['type']==2?0:1;
$sale_out_goods = $this->spe_price_model->getSellOut($this->_uniacid,$sale_type);
switch ($input['type']){
case 1:
$dis[] = ['status','=',1];
break;
case 2:
$dis[]= ['status','>',-1];
break;
case 3:
$dis[] = ['status','=',0];
break;
}
$dis[] = ['id','in',$sale_out_goods];
$data = $this->model->dataList($dis,$this->_input['limit']);
if(!empty($data['data'])){
foreach ($data['data'] as &$v){
//总库存
$v['all_stock'] = $this->spe_price_model->getGoodsStock($v['id']);
//规格
$v['spe_info'] = $this->goodsSpeList($v['id']);
$v['cate_text'] = $this->cate_model->where(['id'=>$v['type']])->value('title');
}
}
//销售中
$data['sale_ing'] = $this->model->saleIngCount($this->_uniacid);
//售罄
$data['sale_out'] = $this->model->saleIngCount($this->_uniacid,2);
//下架
$data['sale_end'] = $this->model->saleIngCount($this->_uniacid,3);
return $this->success($data);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:33
* @功能说明:添加商品
*/
public function goodsAdd(){
$input = $this->_input;
$data = $this->model->returnData($input);
$discount_data = $input['memberForm']['discount_data'];
$data['uniacid'] = $this->_uniacid;
Db::startTrans();
$goods_id = $this->model->dataAdd($data);
$spe_arr = $this->goodsSpeAdd($input['specsForm']['specsItem'],$goods_id);
$spe_res = $this->goodsSpePriceAdd($input['specsForm']['specsTable'],$goods_id,$spe_arr);
//会员折扣模型
$discount_model = new DiscountGoods();
//会员折扣
$res = $discount_model->goodsAdd($discount_data,$this->_uniacid,$goods_id);
Db::commit();
return $this->success($res);
}
/**
* 修改商品
*/
public function goodsUpdate(){
$input= $this->_input;
//会员折扣模型
$discount_model = new DiscountGoods();
$dis = is_array($input['id'])? ['id','in',$input['id']]:['id' =>$input['id']];
$discount_data = $input['memberForm']['discount_data'];
Db::startTrans();
$data = $this->model->returnData($input);
//判断商品名字长度
if(strlen($data['name'])>110){
$this->errorMsg('商品名字不得超过110字符当前字符'.strlen($data['name']));
}
if(isset($data['is_limit'])&&$data['is_limit']==2&&$data['start_min']>$data['limit']){
$this->errorMsg('起购数不能大于限购');
}
$this->model->goodsUpdate($dis,$data);
$this->spe_model->goodsSpeUpdate(['uniacid'=>$this->_uniacid,'goods_id'=>$input['id']],['status'=>-1]);
$this->spe_price_model->goodsSpePriceUpdate(['uniacid'=>$this->_uniacid,'goods_id'=>$input['id']],['status'=>-1]);
$spe_arr = $this->goodsSpeAdd($input['specsForm']['specsItem'],$input['id']);
$res = $this->goodsSpePriceAdd($input['specsForm']['specsTable'],$input['id'],$spe_arr);
if($data['is_parameter']==1 && empty($input['parameter'])){
return $this->error('请添加商品参数');
}
//会员折扣
$discount_model->goodsAdd($discount_data,$this->_uniacid,$input['id']);
Db::commit();
return $this->success($res);
}
/**
* @author chenniang
* @DataTime: 2021-10-21 11:21
* @功能说明:分类详情
*/
public function goodsInfo(){
$input = $this->_param;
$dis = [
'id' => $input['id']
];
//会员折扣模型
$discount_model = new DiscountGoods();
$res['goods_info'] = $this->model->dataInfo($dis);
$res['spe_info'] = $this->goodsSpeList($input['id']);
//会员商品信息
$res['memberForm']['is_discount'] = $res['goods_info']['is_discount'];
//商品折扣信息
$res['memberForm']['discount_data'] = $discount_model->goodsDiscount($input['id']);
return $this->success($res);
}
/**
* 获取商品规格
*/
public function goodsSpeList($goods_id){
$dis['goods_id'] = $goods_id;
$dis['status'] = 1;
$data['text'] = $this->spe_model->goodsSpe($dis);
$data['price'] = $this->spe_price_model->goodsSpePrice($dis);
if(!empty($data['price'])){
foreach ($data['price'] as &$v){
$v['title'] = $v['spe_name_text'];
$v['true_id'] = $v['id'];
$v['id'] = implode(',',$v['spe_array_text']);
}
}
return $data;
}
/**
* @author chenniang
* @DataTime: 2020-08-26 10:09
* @功能说明:列表页修改商品库存
*/
public function updateSpe(){
$input= $this->_input;
$input= $input['stock'];
if(!empty($input)&&!is_array($input)){
$this->errorMsg('数据错误');
}
foreach ($input as $value){
$this->spe_price_model->goodsSpePriceUpdate(['id'=>$value['id']],['stock'=>$value['stock']]);
}
return $this->success(true);
}
/**
* @author chenniang
* @DataTime: 2021-10-28 10:33
* @功能说明:修改商品基本的参数
*/
public function goodsBasicUpdate(){
$input= $this->_input;
$dis = [
'id' => $input['id']
];
$res = $this->model->goodsUpdate($dis,$input);
return $this->success($res);
}
/**
* 上下架删除商品
*/
public function goodsStatusUpdate(){
$input= $this->_input;
if(isset($input['status'])){
$data = ['status'=>$input['status']];
}else{
$data = ['index_show'=>$input['index_show']];
}
$res = $this->model->goodsUpdateStatus($data,$input['id']);
return $this->success($res);
}
/**
* @param $data
* @param $goods_id
* @return array
* 添加多规格
*/
public function goodsSpeAdd($data,$goods_id){
/**
* 循环判断是否存在多个规格名添加图片的问题
* @date 2020/5/14 10:42 --lichuanming
*/
$isimg_count = 0;
foreach ($data as $item ){
if($item['is_img'] == 1){
$isimg_count++;
}
}
if($isimg_count > 1){
return $this->error('当前已有规格名添加了图片,继续添加则需取消上一个规格名的图片勾选');
}
$arr = array();
if(!empty($data)){
foreach ($data as $v){
$is_img = $v['is_img']?$v['is_img']:0; #@date 2020/5/14 10:42 --lichuanming
if(strlen($v['pid'])>10){
$pid = $this->spe_model->goodsSpeAdd(['uniacid'=>$this->_uniacid,'goods_id'=>$goods_id,'title'=>$v['title'],'is_img'=>$is_img]);
}else{
$this->spe_model->goodsSpeUpdate(['id'=>$v['id']],['status'=>1,'title'=>$v['title'],'is_img'=>$is_img]);
$pid = $v['id'];
}
if(!empty($v['cate'])){
foreach ($v['cate'] as $value){
$image = $is_img?$value['image']:''; #@date 2020/5/14 10:42 --lichuanming
if(strlen($value['id'])>10) {
$id = $this->spe_model->goodsSpeAdd(['uniacid' => $this->_uniacid, 'goods_id' => $goods_id, 'title' => $value['title'], 'pid' => $pid,'is_img'=>$is_img,'image'=>$image]);
}else{
$this->spe_model->goodsSpeUpdate(['id'=>$value['id']],['status'=>1,'title'=>$value['title'],'is_img'=>$is_img,'image'=>$image]);
$id = $value['id'];
}
$arr[$value['id']] = $id;
}
}
}
}
return $arr;
}
/**
* @param $data
* @param $good_id
* @param $arr
* @return int|string
* 添加多规格价格
*/
public function goodsSpePriceAdd($data,$good_id,$arr){
if(!empty($data)){
foreach ($data as $v){
if (strlen($v['price'])>8||strlen($v['original_price'])>8){
$this->errorMsg('价格最多8位');
}
$pid = explode(',',$v['id']);
$spe_id = [];
if(empty($arr)){
$this->errorMsg('规格不正确,请删除错误规格,重新编辑');
}
foreach ($pid as $value){
if(!key_exists($value,$arr)){
$this->errorMsg('规格不正确,请删除错误规格,重新编辑');
}
$spe_id[] = $arr[$value];
}
$spe_price_id = implode('-',$spe_id);
$ins['uniacid'] = $this->_uniacid;
$ins['goods_id']= $good_id;
$ins['spe_id_1']= $spe_price_id;
$ins['price'] = $v['price'];
$ins['stock'] = $v['stock'];
// $ins['alert_stock'] = $v['alert_stock'];
$ins['status'] = 1;
//原价
$ins['original_price'] = !empty($v['original_price'])?$v['original_price']:0;
//成本价
$ins['cost_price'] = !empty($v['cost_price'])?$v['cost_price']:0;
$spe_price = $this->spe_price_model->singeSpePrice(['goods_id'=>$good_id,'spe_id_1'=>$spe_price_id,'uniacid'=>$this->_uniacid]);
if(empty($spe_price)) {
$res = $this->spe_price_model->goodsSpePriceAdd($ins);
}else{
$res = $this->spe_price_model->goodsSpePriceUpdate(['id'=>$spe_price['id']],$ins);
}
}
}
return !empty($res)?$res:1;
}
}