123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441 |
- <?php
- namespace Modules\Manager\Http\Controllers;
- use App\Handlers\UploadFilesHandler;
- use App\Models\Goodattr;
- use App\Models\Goodtest;
- use App\Models\StudioGood;
- use App\Models\StudioGoodLog;
- use App\Models\User;
- use Carbon\Carbon;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\DB;
- use Illuminate\Support\Facades\Log;
- use Illuminate\Support\Facades\Validator;
- class StudioGoodController extends Controller
- {
- /*
- * 获取用户信息
- * */
- public function getgoodsinfo(Request $request){
- $user=User::where('mobile',$request->mobile)->first();
- if (!$user){
- return $this->error(40013,'查无此人');
- }
- if ($user->level!=3){
- return $this->error(40013,'当前用户不是代理公司');
- }
- $good=StudioGood::where('is_deleted',0)->get();
- $data['good']=$good;
- $data['user']=$user;
- return $this->success($data);
- }
- /*
- * 获取商品类型
- */
- public function getGoodsAttr(){
- $list=StudioGood::groupBy('main_attr')->pluck('main_attr');
- return $this->success($list);
- }
- /*
- * 商品列表
- * */
- public function good_list(Request $request){
- $page_index=$request->page_index;
- $page_size=$request->page_size;
- $num = ($page_index - 1) * $page_size;
- if ($request->search_name){
- $count=StudioGood::where('main_attr',$request->search_name)->where('is_deleted',0)->count();
- $good=StudioGood::where('main_attr',$request->search_name)->where('is_deleted',0)
- ->orderBy('is_deleted')->orderBy('sort')->orderBy('id')
- ->skip($num)->take($page_size)->get();
- }else{
- $good=StudioGood::where('is_deleted',0)
- ->orderBy('is_deleted')->orderBy('sort')->orderBy('id')
- ->skip($num)->take($page_size)->get();
- $count=StudioGood::where('is_deleted',0)->count();
- }
- $re=[];
- foreach ($good as $k=>$v){
- $re[$k]['name']=$v->name;
- $re[$k]['img_url']=$v->main_img;
- $re[$k]['type']=$v->main_attr;
- $re[$k]['hgprice']=$v->money;
- $re[$k]['is_show']=$v->is_show;
- $re[$k]['is_deleted']=$v->is_deleted==1?true:false;
- $re[$k]['created_at']=$v->created_at->toDateTimeString();
- $re[$k]['updated_at']=$v->updated_at->toDateTimeString();
- $re[$k]['start']=$v->show_time==null?'':$v->show_time;
- $re[$k]['end']=$v->off_time==null?'':$v->off_time;
- $re[$k]['num']=$v->storage;
- $re[$k]['id']=$v->id;
- $re[$k]['tag']=$v->size;
- $re[$k]['unit']=$v->unit;
- $re[$k]['content']=$v->content;
- $re[$k]['sold_num']=$v->sold_num;
- }
- return $this->success_list($re,'',$count);
- }
- /*
- *商品详情
- */
- public function good_detail(Request $request){
- $rules=[
- 'id'=>'required'
- ];
- $message=[
- 'id.required'=>'商品ID是必填项'
- ];
- $vali=Validator::make($request->all(),$rules,$message);
- if ($vali->fails()){
- return $this->error('400013',$vali->errors()->first());
- }
- $good=StudioGood::find($request->id);
- $size=StudioGood::where('name',$good->name)->where('is_deleted',0)->select('size','storage','id')->get()->toArray();
- $sizes=array_column($size,'size');
- $storage=array_column($size,'storage');
- $id=array_column($size,'id');
- $data['name']=$good->name;
- $data['main_img']=$good->main_img;
- $data['banner_url']=json_decode($good->banner_img);
- $data['hgPrice']=$good->money;
- $data['unit']=$good->unit;
- $data['size']=$good->size;
- $data['storage']=$good->storage;
- $data['desc']=$good->summary==null?'':$good->summary;
- $data['is_show']=$good->is_show;
- $goodattr=Goodattr::find($good->attr_id);
- $data['type']=[$goodattr->pid,$good->attr_id];
- $data['content']=$good->content;
- // $data=$good;
- $data['tagList']['size']=$sizes;
- $data['tagList']['num']=$storage;
- // $data['storage_all']=$storage;
- $data['id']=$id;
- return $this->success($data);
- }
- /*
- * 添加商品
- * **/
- public function add_good(Request $request){
- $rule=[
- 'name'=>'required',
- 'desc'=>'required',
- // 'goods_num'=>'required|array',
- 'hgPrice'=>'required',
- 'img_url'=>'required',
- 'unit'=>'required',
- 'tagList'=>'required|array',
- 'is_show'=>'required',
- 'type'=>'required',
- 'banner_url'=>'array',
- ];
- $input=$request->all();
- DB::beginTransaction();
- try{
- $good_sec_attr=Goodattr::find($input['type']);
- $good_main_attr=Goodattr::find($good_sec_attr->pid);
- if ($request->is_show){
- $is_show=1;
- }else{
- $is_show=0;
- }
- foreach ($input['tagList']['size'] as $k=>$v){
- $good=new StudioGood();
- $good->name=$input['name'];
- $good->summary=$input['desc'];
- $good->size=$v;
- $good->storage=$input['tagList']['num'][$k];
- // $good->goods_num=$input['goods_num'][$k];
- $good->money=$input['hgPrice'];
- $good->main_img=$input['img_url'];
- $good->unit=$input['unit'];
- $good->is_show=$is_show;
- $good->attr_id=$input['type'];
- $good->content=$input['content'];
- $good->main_attr=$good_main_attr->name;
- $good->sec_attr=$good_sec_attr->name;
- $good->banner_img=json_encode($input['banner_url']);
- // $good->save();
- if (!$good->save()){
- throw new \Exception('1');
- }
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(40013,'商品添加失败');
- }
- }
- /*
- * 商品上下架
- * */
- public function shelvedGoods(Request $request){
- $rules=[
- 'id'=>'requreid',
- ];
- $message=[
- 'id.reuqired'=>'商品id是必填项',
- ];
- $vali=Validator::make($rules,$message);
- if ($vali->fails()){
- return $this->error('400013',$vali->errors()->first());
- }
- DB::beginTransaction();
- try{
- $good=StudioGood::find($request->id);
- if ($request->has('start')){
- $now=Carbon::now()->timestamp;
- if ($now<$request->start){
- $good->is_show=1;
- $good->show_time=date('Y-m-d H:i:s',$request->start);
- $good->off_time=date('Y-m-d H:i:s',$request->end);
- }elseif ($now>$request->end){
- $good->is_show=4;
- }elseif ($now>$request->start&&$request->end>$now){
- $good->is_show=3;
- $good->show_time=date('Y-m-d H:i:s',$request->start);
- $good->off_time=date('Y-m-d H:i:s',$request->end);
- }
- }else{
- if ($good->is_show==0||$good->is_show==1||$good->is_show==4){
- $good->is_show=2;
- $good->show_time=null;
- $good->off_time=null;
- }elseif($good->is_show==2||$good->is_show==3){
- $good->is_show=4;
- $good->show_time=null;
- $good->off_time=null;
- }
- }
- if(!$good->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(40013,'操作失败');
- }
- }
- /*
- * 商品
- * */
- public function destoryGoods(Request $request){
- $rules=[
- 'id'=>'requreid',
- ];
- $message=[
- 'id.reuqired'=>'商品id是必填项',
- ];
- $vali=Validator::make($rules,$message);
- if ($vali->fails()){
- return $this->error('400013',$vali->errors()->first());
- }
- DB::beginTransaction();
- try{
- $good=StudioGood::find($request->id);
- $good->is_deleted=1;
- if(!$good->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(40013,'操作失败');
- }
- }
- /*
- * 修改商品
- * */
- public function update_good(Request $request){
- $input=$request->all();
- DB::beginTransaction();
- try{
- Log::error('{----数据-------}'.json_encode($request->all()));
- foreach ($input['tagList']['size'] as $k=>$v){
- $good=StudioGood::where('size',$v)->whereIn('id',$input['id'])->where('is_deleted',0)->first();
- if ($good->storage!=$input['tagList']['num'][$k]){
- $goodlog=new StudioGoodLog();
- $goodlog->name=Auth::user()->name;
- $goodlog->text=Auth::user()->name.'修改了商品'.$good->naame.'尺码'.$good->size.'的库存数量,数量为'.$input['tagList']['num'][$k].',原库存数量为'.$good->storage;
- if (!$goodlog->save()){
- throw new \Exception('1');
- }
- }
- $good->storage=$input['tagList']['num'][$k];
- $good->main_img=$request->img_url;
- $good->money=$request->hgPrice;
- $good->summary=$request->desc;
- $good->unit=$request->unit;
- $good->content=$input['content'];
- $good->banner_img=json_encode($input['banner_url']);
- $good->name=$request->name;
- if (!$good->save()){
- throw new \Exception('1');
- }
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- Log::error('商品修改失败'.$exception);
- return $this->error(40013,'商品修改失败');
- }
- }
- /*
- * 增加尺寸
- * */
- public function add_size(Request $request){
- DB::beginTransaction();
- try{
- $re=StudioGood::where('attr_id',$request->attr_id)->where('size',$request->size)->where('is_deleted',0)->count();
- if ($re){
- return $this->error(40013,'当前尺寸已存在');
- }
- $goods=StudioGood::where('attr_id',$request->attr_id)->where('is_deleted',0)->first();
- $good=new StudioGood();
- $good->name=$goods->name;
- $good->summary=$goods->summary;
- $good->main_attr=$goods->main_attr;
- $good->sec_attr=$goods->sec_attr;
- $good->money=$goods->money;
- $good->storage=100;
- $good->main_img=$goods->main_img;
- $good->banner_img=$goods->banner_img;
- $good->unit=$goods->unit;
- $good->size=$request->size;
- $good->attr_id=$request->attr_id;
- if (!$good->save()){
- throw new \Exception('1');
- }
- $goodlog=new StudioGoodLog();
- $goodlog->name=Auth::user()->name;
- $goodlog->text=Auth::user()->name.'添加了商品'.$good->name.'的'.$request->size.'尺码,数量为100';
- if (!$goodlog->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success(['id'=>$good->id]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(40013,'添加尺寸失败');
- }
- }
- /*
- * 删除尺寸
- * */
- public function destory_size(Request $request){
- DB::beginTransaction();
- try{
- $re=StudioGood::where('attr_id',$request->attr_id)->where('size',$request->size)->where('is_deleted',0)->count();
- if (!$re){
- return $this->error(40013,'当前尺寸不存在');
- }
- $good=StudioGood::where('attr_id',$request->attr_id)->where('size',$request->size)->where('is_deleted',0)->first();
- $good->is_deleted=1;
- if (!$good->save()){
- throw new \Exception('1');
- }
- $goodlog=new StudioGoodLog();
- $goodlog->name=Auth::user()->name;
- $goodlog->text=Auth::user()->name.'删除了商品'.$good->name.'的'.$request->size.'尺码';
- if (!$goodlog->save()){
- throw new \Exception('1');
- }
- DB::commit();
- return $this->success([]);
- }catch (\Exception $exception){
- DB::rollBack();
- return $this->error(40013,'删除商品失败');
- }
- }
- public function get_good_attr(){
- $data=StudioGood::where('is_deleted',0)->orderBy('sort')->orderBy('id')->groupBy('attr_id')->get();
- return $this->success_list($data);
- }
- /*
- * 排序
- * */
- public function good_sort(Request $request){
- foreach ($request->attr_id as $k=>$v){
- Log::error('1='.$k);
- $re=Goodtest::where('attr_id',$v)->where('is_deleted',0)->update(['sort'=>$k]);
- Log::error($re);
- Log::error('2='.$k);
- }
- Log::error('jiesu');
- return $this->success([]);
- }
- /*
- * 商品属性
- * */
- public function good_attr(){
- $amin_attr=Goodattr::where('pid',0)->get();
- $re=[];
- foreach ($amin_attr as $k=>$v){
- $re[$k]['label']=$v->name;
- $re[$k]['value']=$v->id;
- $res=[];
- $ad=Goodattr::where('pid',$v->id)->get();
- foreach ($ad as $ke=>$va){
- $res[$ke]['label']=$va->name;
- $res[$ke]['value']=$va->id;
- }
- $re[$k]['children']=$res;
- }
- return $this->success_list($re,'success');
- }
- //上传图片
- public function uploadGoodsImage(Request $request)
- {
- $file = $request->file('file');
- $path_url = 'goods/studio_goods';
- $upload = new UploadFilesHandler();
- $result = $upload->save($file, $path_url, null, 'image');
- if ($result) {
- return $this->success($result['path']);
- }
- return $this->error();
- }
- }
|