123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200 |
- <?php
- namespace App\Http\Controllers;
- use Illuminate\Http\Request;
- use App\Models\User;
- use App\Models\Goods;
- use App\Models\GoodsSku;
- use App\Models\GoodsSpec;
- use App\Models\GoodsSkuPrice;
- use App\Custom\GoodsInfo;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Support\Facades\Redis;
- use \Exception;
- class GoodsController extends Controller
- {
- public function __construct()
- {
- $this->goodsinfo=new GoodsInfo;
- }
- public function getGoodsList(Request $request){
- $input=$request->all();
- $page_size=$input['page_size'];
- $page_index=$input['page_index'];
- $num = ($page_index - 1) * $page_size;
- $search_name=$input['search_name'];
- $where=[];
- if($input['status']=='0' || $input['status']=='1'){
- $where['status']=$input['status'];
- }
- $count=Goods::where('name', 'like', '%' . $search_name . '%')
- ->where($where)
- ->count();
- if($count==0){
- $this->error('400001','没有数据');
- }
- $list = Goods::where('name', 'like', '%' . $search_name . '%')
- ->where($where)
- ->orderBy('id', 'desc')
- ->skip($num)->take($page_size)
- ->get();
- if(empty($list)){
- return $this->error('400002','没有获取到数据');
- }
- return $this->success_list($list,'success',$count);
- }
- //获取商品详情
- public function getGoodsDetails(Request $request){
- $goodsId=$request->id;
- $goods = Goods::find($goodsId);
- /*获取商品规格组合*/
- $goods['spec']=$this->goodsinfo->getGoodsSpec($goodsId);
- /*获取商品规格组合价格*/
- $goods['sku']=$this->goodsinfo->getGoodsSkuPrice($goodsId);
- if($goods) {
- return $this->success($goods);
- }
- return $this->error();
- }
- //上传图片
- public function uploadGoodsImage(Request $request){
- $path = $request->file('file')->store('/public/goods');
- $url = Storage::url($path);
- if($url){
- return $this->success($url);
- }
- return $this->error();
- }
- //添加商品
- public function uploadGoods(Request $request){
- $input=$request->all();
- $rules=[
- 'name'=>'required|max:32','img_url'=>'required',
- 'banner_url'=>'required','content'=>'required',
- 'goodsSku'=>'required','tagList'=>'required'
- ];
- $messages=[
- 'name.required'=>'商品名称不能为空.','name.max'=>'商品名称长度应小于32个字符.',
- 'img_url.required'=>'请上传商品图片.','banner_url.required'=>'请上传轮播图片.',
- 'content.required'=>'商品详情不能为空.','goodsSku.required'=>'请添加商品规格.',
- 'tagList.required'=>'请设置商品规格.'
- ];
- $validator = Validator::make($input, $rules, $messages);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- DB::beginTransaction();
- try{
- $goodsId=$this->goodsinfo->createGoodsInfo($input);
- $this->goodsinfo->createGoodsSpecInfo($input['tagList'],$goodsId);
- $this->goodsinfo->createGoodsSkuInfo($input['goodsSku'],$goodsId);
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')添加商品'.$input['name'].'(id='.$goodsId.')成功');
- DB::commit();
- return $this->success([]);
- }catch(Exception $e) {
- DB::rollBack();
- return $this->error();
- }
- }
- //修改商品
- public function updateGoods(Request $request){
- $input=$request->all();
- $goodsId=$input['id'];
- $rules=[
- 'name'=>'required|max:32','img_url'=>'required',
- 'banner_url'=>'required','content'=>'required',
- 'goodsSku'=>'required','tagList'=>'required'
- ];
- $messages=[
- 'name.required'=>'商品名称不能为空.','name.max'=>'商品名称长度应小于32个字符.',
- 'img_url.required'=>'请上传商品图片.','banner_url.required'=>'请上传轮播图片.',
- 'content.required'=>'商品详情不能为空.','goodsSku.required'=>'请添加商品规格.',
- 'tagList.required'=>'请设置商品规格.'
- ];
- $validator = Validator::make($input, $rules, $messages);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- try{
- DB::transaction(function () use ($input,$goodsId){
- GoodsSpec::where('goods_id',$goodsId)->delete();
- GoodsSku::where('goods_id',$goodsId)->delete();
- GoodsSkuPrice::where('goods_id',$goodsId)->delete();
- $this->goodsinfo->updateGoodsInfo($input);
- $this->goodsinfo->createGoodsSpecInfo($input['tagList'],$input['id']);
- $this->goodsinfo->createGoodsSkuInfo($input['goodsSku'],$input['id']);
- }, 5);
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')修改商品'.$input['name'].'(id='.$goodsId.')成功');
- DB::commit();
- return $this->success([]);
- }catch(Exception $e) {
- DB::rollBack();
- return $this->error();
- }
- }
- /* 商品上架/下架 */
- public function shelvedGoods(Request $request){
- $goods=Goods::find($request->post('id'));
- $goods->status=($goods->status==0)?'1':'0';
- $row=$goods->save();
- if($row){
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')下架商品'.$goods->name.'(id='.$goods->id.')成功');
- return $this->success([]);
- }
- return $this->error();
- }
- //删除商品
- public function destoryGoods(Request $request){
- $goods=Goods::find($request->post('id'));
- $row=$goods->delete();
- if($row){
- Log::info('管理员:'.Auth::user()->name.'(id='.Auth::user()->id.')删除商品'.$goods->name.'(id='.$goods->id.')成功');
- return $this->success([]);
- }
- return $this->error();
- }
- /*商品信息(根据用户等级获取对应商品规格的价格)*/
- public function getGoodsInfo(Request $request){
- $input=$request->all();
- $rules=[
- 'mobile'=>[
- 'required',
- 'regex:/^1[345789][0-9]{9}$/'
- ],
- ];
- $uuu=new User();
- $validator = $uuu->validator($input,$rules);
- if($validator->fails()){
- return $this->error('400013',$validator->errors()->first());
- }
- $user=User::where('mobile',$input['mobile'])->first();
- if(empty($user)){
- return $this->error('400135','代理信息不存在');
- }
- $goods=Goods::with([
- 'goodsskuprice:id,goods_id,sku_id,user_level,price',
- 'goodsskuprice' => function ($query) use ($user){
- $query->where('user_level', '=', $user->level);
- }])
- ->where('status',1)
- ->get()->toArray();
- foreach($goods as $key=>$val){
- foreach($val['goodsskuprice'] as $k=>$v){
- $goods[$key]['goodsskuprice'][$k]['sku']=$this->goodsinfo->getGoodsSku($v['sku_id']);
- }
- }
- $data['goods']=$goods;
- $data['user']=$user->toArray();
- return $this->success($data);
- }
- }
|