Nav apraksta

GoodsController.php 11KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. <?php
  2. /**
  3. * Created by Sublime.
  4. * User: hao
  5. * Date: 19/08/30
  6. * Time: 上午11:20
  7. */
  8. namespace App\Http\Controllers\Admin;
  9. use App\Http\Controllers\Controller;
  10. use App\Logs;
  11. use App\Goods;
  12. use App\GoodsSkus;
  13. use App\Order;
  14. use App\Oplog;
  15. use App\Services\OssServices as oss;
  16. use Illuminate\Http\Request;
  17. use Illuminate\Support\Facades\DB;
  18. use PHPExcel_Reader_Excel2007;
  19. use PHPExcel_Reader_Excel5;
  20. use PHPExcel_Reader_CSV;
  21. class GoodsController extends Controller
  22. {
  23. public function index(Request $request){
  24. $page = (int)$request->input('page');
  25. $pageSize = 20;
  26. if($page<=0){
  27. $page = 1;
  28. }
  29. $offset = ($page-1) * $pageSize;
  30. $stime = $request->input('stime');
  31. $etime = $request->input('etime');
  32. $name = $request->input('name');
  33. $count = Goods::where(function($query) use($name, $stime, $etime){
  34. if($name) $query->where('name', 'like', $name.'%');
  35. if($stime) $query->where('createTime', '>=', $stime);
  36. if($etime) $query->where('createTime', '<=', $etime);
  37. })->where('is_del',0)->count();
  38. if ($count > 1) {
  39. // 总页数
  40. $pages = ceil($count/$pageSize);
  41. }else{
  42. // 总页数
  43. $pages = 1;
  44. }
  45. $result = Goods::where(function($query) use($name, $stime, $etime){
  46. if($name) $query->where('name', $name);
  47. if($stime) $query->where('createTime', '>=', $stime);
  48. if($etime) $query->where('createTime', '<=', $etime);
  49. })->where('is_del',0)->orderBy('id', 'desc')->offset($offset)->limit($pageSize)->get();
  50. $result = json_decode(json_encode($result),true);
  51. foreach($result as $k=>&$v){
  52. # 获取sku
  53. $skuList = GoodsSkus::where('goodsCode', $v['id'])->where('is_del', 0)->get();
  54. $v['sku_list'] = $skuList;
  55. }
  56. return view('goods/index', ['result' =>$result,
  57. 'page' =>$page,
  58. 'count' =>$count,
  59. 'pages' =>$pages,
  60. 'stime' =>$stime,
  61. 'etime' =>$etime,
  62. 'name' =>$name,
  63. ]);
  64. }
  65. /**
  66. * 添加商品
  67. * @return \Illuminate\View\View
  68. */
  69. public function create(Request $request)
  70. {
  71. return view('goods/create');
  72. }
  73. /**
  74. * 分组管理-进行添加操作
  75. * @param Request $request
  76. * @return \Illuminate\Http\RedirectResponse
  77. */
  78. public function store(Request $request)
  79. {
  80. $this->validate($request, [
  81. 'name' => 'required',
  82. 'productCode' => 'required',
  83. ], [
  84. 'name.required' => '商品名不能为空',
  85. 'productCode.required' => '商品货号不能为空',
  86. ]);
  87. //数据库-新增数据
  88. $goods = array();
  89. $goods['name'] = trim($request->input('name'));
  90. $goods['description'] = trim($request->input('description')); //非必填
  91. $goods['eshopCode'] = '100|zjsc001';
  92. $goods['productCode'] = trim($request->input('productCode'));
  93. /*$goods['propsName'] = $request->input('propsName');
  94. $goods['price'] = $request->input('price');
  95. $goods['Weight'] = $request->input('Weight');
  96. $goods['volume'] = $request->input('volume'); */
  97. //图片上传 阿里云oss
  98. if ($request->hasFile('img') && $request->file('img')->isValid()) {
  99. $file = $request->file('img');
  100. $ossClient=new oss();
  101. // 上传阿里云
  102. $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
  103. $img=$file['oss-request-url'];
  104. $goods['picUrl']=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
  105. }
  106. //$goods['picUrl'] = $request->input('picUrl');
  107. $res = DB::table('goods')->insertGetId($goods);
  108. if($res){
  109. //卖家云必要参数拼接转化
  110. $mjArr = $goods;
  111. $mjArr['outerCode'] = $res;
  112. //sku
  113. $sku = $request->input('sku');
  114. if(!empty($sku)){
  115. foreach($sku as $key=>$item){
  116. $sku_data = explode('@@', $item);
  117. $sku_insert_data = $mjArr['skuList'][$key] = ['skuProductCode'=>'DCY-001', 'propsName'=>$sku_data[0], 'price'=>$sku_data[1], 'createTime'=>date('Y-m-d H:i:s'), 'modifyTime'=>date('Y-m-d H:i:s')];
  118. $sku_insert_data['goodsCode'] = $res;
  119. $sku_insert_data['eshopCode'] = '100|zjsc001';
  120. $sku_ids = DB::table('goods_skus')->insertGetId($sku_insert_data);
  121. $mjArr['skuList'][$key]['outerCode'] = $sku_ids;
  122. }
  123. }
  124. //对接卖家云
  125. $mj = Order::mjGoodsAdd($mjArr);
  126. /* 同步卖家云商品code等信息 */
  127. var_dump($mj);exit;
  128. /* end */
  129. #记录操作日志
  130. $self_id = session('admin_id');
  131. $self_name = session('real_name');
  132. $context = "新增商品数据";
  133. $type = 0;
  134. $tables = 'goods,goods_skus';
  135. $data_id = $res;
  136. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  137. }
  138. return redirect('/admin/goods/index')->with('info', '添加成功');
  139. }
  140. /**
  141. * 分组管理-编辑分组界面
  142. * @param $id
  143. * @return \Illuminate\View\View
  144. */
  145. public function edit($id,Request $request)
  146. {
  147. $data = Goods::where('id', $id)->first();
  148. $sku = GoodsSkus::where('goodsCode', $id)->where('is_del', 0)->get();
  149. return view('goods/edit', [
  150. 'goods' => $data,
  151. 'sku_list' => $sku,
  152. 'id' => $id,
  153. ]);
  154. }
  155. /**
  156. * 分组管理-进行编辑操作
  157. * @param Request $request
  158. * @return \Illuminate\Http\RedirectResponse
  159. */
  160. public function update(Request $request)
  161. {
  162. $id = (int)$request->input('id');
  163. $this->validate($request, [
  164. 'id' => 'required',
  165. 'name' => 'required',
  166. 'productCode' => 'required',
  167. ], [
  168. 'id' => '非法操作',
  169. 'name.required' => '商品名不能为空',
  170. 'productCode.required' => '商品货号不能为空',
  171. ]);
  172. $del_sku_ids = trim($request->input('del_sku_ids'),',');
  173. $sku = $request->input('sku');
  174. //数据库-修改数据
  175. $goods = array();
  176. $goods['name'] = trim($request->input('name'));
  177. $goods['description'] = trim($request->input('description')); //非必填
  178. $goods['productCode'] = trim($request->input('productCode'));
  179. //图片上传 阿里云oss
  180. if ($request->hasFile('img') && $request->file('img')->isValid()) {
  181. $file = $request->file('img');
  182. $ossClient=new oss();
  183. // 上传阿里云
  184. $file = $ossClient->upload($file->getClientOriginalExtension(), $file->getRealPath(), 'upload/seafoodPic'.date("Y-m-d",time()).'/'.date('His'));
  185. $img=$file['oss-request-url'];
  186. $goods['picUrl']=str_replace("kx-youhuiquan.oss-cn-beijing.aliyuncs.com","imgs.726p.com",$img);
  187. }
  188. $res = DB::table('goods')->where('id', $id)->update($goods);
  189. if($res){
  190. //卖家云必要参数拼接转化
  191. $mjArr = $goods;
  192. $mjArr['outerCode'] = $id;
  193. //$mj = Order::mjGoodsUpdate($mjArr);
  194. #记录操作日志
  195. $self_id = session('admin_id');
  196. $self_name = session('real_name');
  197. $context = "修改商品数据";
  198. $type = 0;
  199. $tables = 'goods,goods_skus';
  200. $data_id = $id;
  201. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  202. }elseif( empty($del_sku_ids) && empty($sku) ){
  203. return redirect('/admin/goods/index')->with('info', '未做任何修改');
  204. }
  205. if(!empty($sku)){
  206. $mjSkuArr = array();
  207. foreach($sku as $key=>$item){
  208. $sku_data = explode('@@', $item);
  209. $sku_insert_data = $mjSkuArr['skus'][$key] = ['goodsCode'=>$id,'eshopCode'=>'100|zjsc001','propsName'=>$sku_data[0], 'price'=>$sku_data[1], 'createTime'=>date('Y-m-d H:i:s'), 'modifyTime'=>date('Y-m-d H:i:s')];
  210. $sku_ids = DB::table('goods_skus')->insertGetId($sku_insert_data);
  211. $mjSkuArr['skus'][$key]['outerCode'] = $sku_ids;
  212. }
  213. //$mj_sku = Order::mjSkuAdd($mjSkuArr);
  214. }
  215. if(!empty($del_sku_ids)){
  216. $del_sku_ids = explode(',', $del_sku_ids);
  217. $del_res = GoodsSkus::whereIn('id', $del_sku_ids)->update(['is_del'=>1]);
  218. }
  219. //对接卖家云
  220. //$mj = Order::mjGoodsAdd($mjArr);
  221. /* 同步卖家云商品code等信息 */
  222. /* end */
  223. return redirect('/admin/goods/index')->with('info', '更新成功');
  224. }
  225. /**
  226. * 分组管理-进行删除操作
  227. * @param Request $request
  228. * @return \Illuminate\Http\RedirectResponse
  229. */
  230. public function delete($id)
  231. {
  232. $goods = Goods::find($id);
  233. $goods->is_del = 1;
  234. if ($goods ->save()){
  235. #记录操作日志
  236. $self_id = session('admin_id');
  237. $self_name = session('real_name');
  238. $context = "删除商品";
  239. $type = 0;
  240. $tables = 'goods';
  241. $data_id = $id;
  242. Oplog::addLog($self_id, $self_name, $context, $type, $tables, $data_id);
  243. exit('1');
  244. }
  245. exit('0');
  246. }
  247. /**
  248. * 搜索商品
  249. */
  250. public function searchSkus(Request $request){
  251. $name = trim($request->input('name'));
  252. $result = Goods::select('gs.id as sku_id', 'goods.id as goods_id', 'goods.name', 'gs.propsName', 'gs.price')->leftJoin('goods_skus as gs', 'gs.goodsCode', '=', 'goods.id')->where('goods.name', 'like', '%'.$name.'%')->where('goods.is_del', 0)->where('gs.is_del', 0)->orderBy('goods.id', 'desc')->get();
  253. $result = json_decode(json_encode($result), true);
  254. if(empty($result)) exit('0');
  255. exit(json_encode($result));
  256. }
  257. }