Cat.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435
  1. <?php
  2. namespace app\admin\controller;
  3. use app\admin\model\ActionLog;
  4. use app\BaseController;
  5. use think\App;
  6. use think\facade\Db;
  7. class Cat extends BaseController
  8. {
  9. public $post="";
  10. public function __construct(App $app)
  11. {
  12. parent::__construct($app);
  13. $this->post=$this->request->post();
  14. }
  15. public function list(){
  16. $where=[["is_del","=",0]];
  17. $pid = isset($this->post['pid']) &&$this->post['pid']!=="" ?intval($this->post['pid']): "0";
  18. $where[]=["pid","=",$pid];
  19. $cat_name=isset($this->post['cat_name']) && $this->post['cat_name'] !==""? intval($this->post['cat_name']) :"";
  20. if($cat_name!==""){
  21. $where[]=['cat_name',"like","%$cat_name%"];
  22. }
  23. $data = Db::name("cat")->where($where)->select();
  24. $vmp = [];
  25. foreach ($data as $sts){
  26. $vmp[]=stro($sts);
  27. }
  28. return app_show(0,"获取成功",$vmp);
  29. }
  30. public function plist(){
  31. $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']) :"1";
  32. $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']) :"10";
  33. $where =[["is_del","=",0]];
  34. $cat_name=isset($this->post['cat_name']) && $this->post['cat_name'] !==""? trim($this->post['cat_name']) :"";
  35. if($cat_name!==""){
  36. $where[]=['cat_name',"like","%$cat_name%"];
  37. }
  38. $pid=isset($this->post['pid']) && $this->post['pid'] !==""? intval($this->post['pid']) :"";
  39. if($pid!==""){
  40. $where[]=['pid',"=",$pid];
  41. }
  42. $status=isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']) :"";
  43. if($status!==""){
  44. $where[]=['status',"=",$status];
  45. }
  46. $count = Db::name("cat")->where($where)->count();
  47. $total = ceil($count / $size);
  48. $page = $page >= $total ? $total : $page;
  49. $list = Db::name('cat')->where($where)->page($page, $size)->select();
  50. return app_show(0, "获取成功", ['list' => $list, 'count' => $count]);
  51. }
  52. public function title(){
  53. $where =[["is_del","=",0]];
  54. $cat_name=isset($this->post['cat_name']) && $this->post['cat_name'] !==""? trim($this->post['cat_name']) :"";
  55. if($cat_name!==""){
  56. $where[]=['cat_name',"like","%$cat_name%"];
  57. }
  58. $pid=isset($this->post['pid']) && $this->post['pid'] !==""? intval($this->post['pid']) :"";
  59. if($pid!==""){
  60. $where[]=["pid","=",$pid];
  61. }
  62. $status=isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']) :"";
  63. if($status!==""){
  64. $where[]=['status',"=",$status];
  65. }
  66. $list = Db::name('cat')->where($where)->select();
  67. return app_show(0, "获取成功",$list);
  68. }
  69. public function tlist(){
  70. $page = isset($this->post['page']) && $this->post['page'] !=="" ? intval($this->post['page']):"1";
  71. $size = isset($this->post['size']) && $this->post['size'] !=="" ? intval($this->post['size']):"10";
  72. $where =[['is_del',"=",0]];
  73. $cat_name=isset($this->post['cat_name']) && $this->post['cat_name'] !==""? trim($this->post['cat_name']) :"";
  74. if($cat_name!==""){
  75. $where[]=['cat_name',"like","%$cat_name%"];
  76. }
  77. $status=isset($this->post['status']) && $this->post['status'] !==""? intval($this->post['status']) :"";
  78. if($status!==""){
  79. $where[]=['status',"=",$status];
  80. }
  81. $creater=isset($this->post['creater']) && $this->post['creater'] !==""? trim($this->post['creater']) :"";
  82. if($creater!==""){
  83. $where[]=['creater',"like","%$creater%"];
  84. }
  85. $start = isset($this->post['start']) && $this->post['start'] !== "" ? $this->post['start']:"";
  86. if($start!==""){
  87. $where[]=['addtime',">=",$start];
  88. }
  89. $end = isset($this->post['end']) && $this->post['end'] !== "" ? $this->post['end'] :"";
  90. if($end !==""){
  91. $where[]=['addtime',"<=",$end];
  92. }
  93. $count = Db::name('cat')->where($where)->count();
  94. $total = ceil($count / $size);
  95. $page = $page >= $total ? $total : $page;
  96. $list = Db::name('cat')->where($where)->page($page, $size)->select();
  97. return app_show(0, "获取成功", ['list' => $list, 'count' => $count]);
  98. }
  99. public function create()
  100. {
  101. $cat_name = isset($this->post['cat_name']) && $this->post['cat_name'] !== "" ? trim($this->post['cat_name']) : "";
  102. if ($cat_name == "") {
  103. return error_show(1002, "参数cat_name不能为空");
  104. }
  105. $pid = isset($this->post['pid']) && $this->post['pid'] !== "" ? intval($this->post['pid']) : "";
  106. if ($pid === "") {
  107. return error_show(1002, "参数pid不能为空");
  108. }
  109. $cat_desc = isset($this->post['cat_desc']) && $this->post['cat_desc'] !== "" ? trim($this->post['cat_desc']) : "";
  110. $fund_code = isset($this->post['fund_code']) && $this->post['fund_code'] !== "" ? trim($this->post['fund_code']) : "";
  111. $levl=Db::name('cat')->where(['id'=>$pid])->find();
  112. $level =1;
  113. if ($pid !== 0) {
  114. if(empty($levl)){
  115. return error_show(1002,"未找到父级数据");
  116. }
  117. $level =$levl['level']+1;
  118. }
  119. $repeat_name = Db::name("cat")->where(["is_del"=>0,"cat_name"=>$cat_name])->find();
  120. $int =isset($repeat_name['id']) && $repeat_name['id'] != 0 ? made($repeat_name['id']) : [];
  121. $im = array_column($int,'name');
  122. $in=implode('/',$im);
  123. if(!empty($repeat_name)){
  124. return error_show(1004,"分类名称已在{$in}存在");
  125. }
  126. $specs_id = isset($this->post['specs_id']) && $this->post['specs_id'] !== "" ? $this->post['specs_id'] : [];
  127. if (empty($specs_id)) {
  128. return error_show(1002, "参数specs_id不能为空");
  129. }
  130. $token = isset($this->post['token'])&& $this->post['token']!='' ? trim($this->post['token']):"";
  131. if($token==''){
  132. return error_show(1005,"参数token不能为空");
  133. }
  134. $user =GetUserInfo($token);
  135. if(empty($user)||$user['code']!=0){
  136. return error_show(1002,"创建人数据不存在");
  137. }
  138. $createrid= isset($user["data"]['id']) ? $user["data"]['id'] : "";
  139. $creater= isset($user["data"]['nickname']) ? $user["data"]['nickname'] : "";
  140. // $rate = isset($this->post['rate']) && $this->post['rate'] !== "" ? intval($this->post['rate']) : "";
  141. // $order_rate = isset($this->post['order_rate']) && $this->post['order_rate'] !== "" ? intval($this->post['order_rate']) : "";
  142. // $sale_rate = isset($this->post['sale_rate ']) && $this->post['sale_rate '] !== "" ? intval($this->post['sale_rate ']) : "";
  143. // $lower_rate = isset($this->post['lower_rate']) && $this->post['lower_rate'] !== "" ? intval($this->post['lower_rate']) : "";
  144. $weight = isset($this->post['weight']) && $this->post['weight'] !== "" ? intval($this->post['weight']) : "0";
  145. $status = isset($this->post['status']) && $this->post['status'] !== "" ? intval($this->post['status']) : "1";
  146. Db::startTrans();
  147. try{
  148. $data = [
  149. "cat_name" => $cat_name,
  150. "pid" => $pid,
  151. "level" => $level,
  152. // "rate" => $rate,
  153. // "lower_rate"=>$lower_rate,
  154. // "order_rate"=>$order_rate,
  155. // "sale_rate"=>$sale_rate,
  156. "weight" => $weight,
  157. "status" => $status,
  158. "cat_desc"=>$cat_desc,
  159. "fund_code"=>$fund_code,
  160. "creater"=>$creater,
  161. "createrid"=>$createrid,
  162. "is_del"=>0,
  163. "addtime" => date("Y-m-d H:i:s"),
  164. "updatetime" => date("Y-m-d H:i:s"),
  165. ];
  166. $datainfo = Db::name('cat')->insert($data,true);
  167. $vat =[];
  168. if ($datainfo>0) {
  169. $stx = ["order_code"=>$pid,"status"=>$status,"action_remark"=>'',"action_type"=>"create"];
  170. ActionLog::logAdd($this->post['token'],$stx,"sxd",$status,$stx);
  171. $spc =[];
  172. $spc['cat_id']=$datainfo;
  173. $spc['exam_status']=0;
  174. $spc['status']=0;
  175. $spc['creater']=$creater;
  176. $spc['createrid']=$createrid;
  177. $spc['is_del']=0;
  178. $spc['addtime']=date("Y-m-d H:i:d");
  179. $spc['updatetime']=date("Y-m_d H:i:s");
  180. $vpn = Db::name('cat_spec')->insert($spc,true);
  181. if ($vpn == "") {
  182. Db::rollback();
  183. return error_show(1002, "新建失败");
  184. }
  185. foreach ($specs_id as $value){
  186. $item =[];
  187. $item['cat_id']=$datainfo;
  188. $item['specs_id']=$value;
  189. $item['is_del']=0;
  190. $item['addtime']=date("Y-m-d H:i:s");
  191. $vat[] = $item;
  192. }
  193. $vp = Db::name('cat_specs')->insertAll($vat);
  194. if ($vp==0) {
  195. Db::rollback();
  196. return error_show(1005, "新建失败");
  197. }
  198. Db::commit();
  199. return error_show(0, "新建成功");
  200. } else {
  201. Db::rollback();
  202. return error_show(1002, "新建失败");
  203. }
  204. }catch (\Exception $e){
  205. Db::rollback();
  206. return error_show(1005,$e->getMessage());
  207. }
  208. }
  209. public function edit(){
  210. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']) :"";
  211. $idinfo = Db::name('cat')->where(['id'=>$id])->find();
  212. if($idinfo==""){
  213. return error_show(1002,"未找到商品数据");
  214. }
  215. $cat_name= isset($this->post['cat_name']) && $this->post['cat_name'] !=="" ? trim($this->post['cat_name']) :"";
  216. if($cat_name==""){
  217. return error_show(1002,"参数cat_name不能为空");
  218. }
  219. $pid = isset($this->post['pid']) && $this->post['pid'] !=="" ? intval($this->post['pid']) :"";
  220. if($pid===""){
  221. return error_show(1002,"参数pid不能为空");
  222. }
  223. $cat_desc = isset($this->post['cat_desc']) && $this->post['cat_desc'] !=="" ? trim($this->post['cat_desc']) :"";
  224. $specs_id = isset($this->post['specs_id']) && $this->post['specs_id'] !== "" ? $this->post['specs_id'] : [];
  225. if (empty($specs_id)) {
  226. return error_show(1002, "参数specs_id不能为空");
  227. }
  228. $token = isset($this->post['token'])&& $this->post['token']!='' ? trim($this->post['token']):"";
  229. if($token==''){
  230. return error_show(1005,"参数token不能为空");
  231. }
  232. $user =GetUserInfo($token);
  233. if(empty($user)||$user['code']!=0){
  234. return error_show(1002,"创建人数据不存在");
  235. }
  236. $createrid= isset($user["data"]['id']) ? $user["data"]['id'] : "";
  237. $creater= isset($user["data"]['nickname']) ? $user["data"]['nickname'] : "";
  238. $level = isset($this->post['level']) && $this->post['level'] !=="" ? intval($this->post['level']) :"";
  239. $weight = isset($this->post['weight']) && $this->post['weight']!==""? intval($this->post['weight']):"0";
  240. $status = isset($this->post['status']) && $this->post['status'] !==""?intval($this->post['status']) :"1";
  241. Db::startTrans();
  242. try{
  243. $str = [
  244. "id"=>$id,
  245. "cat_name"=>$cat_name,
  246. "pid"=>$pid,
  247. "level"=>$level,
  248. "weight"=>$weight,
  249. "status"=>$status,
  250. "cat_desc"=>$cat_desc,
  251. "is_del"=>0,
  252. "updatetime"=>date("Y-m-d H:i:s")
  253. ];
  254. $strinfo = Db::name('cat')->where(['id'=>$id])->save($str);
  255. if($strinfo){
  256. $order = ["order_code"=>$id,"status"=>$status,"action_remark"=>'',"action_type"=>"edit"];
  257. ActionLog::logAdd($this->post['token'],$order,"sxd",$status,$order);
  258. $spc =[];
  259. $vp = Db::name('cat_spec')->where(['cat_id'=>$idinfo['id'],'is_del'=>0])->find();
  260. $str ="";
  261. if($vp!=false){
  262. isset($vp['id']) && $vp['id'] !== "" ? $spc['id'] = $vp['id'] : '';
  263. $spc['cat_id']=$idinfo['id'];
  264. $spc['exam_status']=0;
  265. $spc['status']=0;
  266. $spc['is_del']=0;
  267. $spc['updatetime']=date("Y-m_d H:i:s");
  268. $str=$vp['id'];
  269. $vpn = Db::name('cat_spec')->save($spc);
  270. }else{
  271. $spc['cat_id']=$idinfo['id'];
  272. $spc['exam_status']=0;
  273. $spc['status']=0;
  274. $spc['creater']=$creater;
  275. $spc['createrid']=$createrid;
  276. $spc['is_del']=0;
  277. $spc['addtime']=date("Y-m-d H:i:d");
  278. $spc['updatetime']=date("Y-m_d H:i:s");
  279. $vpn = Db::name('cat_spec')->insert($spc,true);
  280. $str=$vpn;
  281. }
  282. if ($vpn == false) {
  283. Db::rollback();
  284. return error_show(1002, "更新失败");
  285. }
  286. $db = Db::name('cat_specs')->where(['cat_id'=>$idinfo['id'],'is_del'=>0])->column("specs_id");
  287. if(empty($db)){
  288. $db=[];
  289. }
  290. $sn = array_diff($specs_id,$db);
  291. $st = array_diff($db,$specs_id);
  292. if(!empty($st)){
  293. $int['is_del']=1;
  294. $dn = Db::name('cat_specs')->where(['specs_id'=>$st,'is_del'=>0])->save($int);
  295. if ($dn==false) {
  296. Db::rollback();
  297. return error_show(1002, "编辑失败");
  298. }
  299. }
  300. if(!empty($sn)){
  301. $vat=[];
  302. foreach ($sn as $value){
  303. $item=[];
  304. $item['cat_id']=$idinfo['id'];
  305. $item['specs_id']=$value;
  306. $item['is_del']=0;
  307. $item['addtime'] = date("Y-m-d H:i:s");
  308. $vat[] = $item;
  309. }
  310. $vp = Db::name('cat_specs')->insertAll($vat);
  311. if ($vp==0) {
  312. Db::rollback();
  313. return error_show(1002, "编辑失败");
  314. }
  315. }
  316. Db::commit();
  317. return error_show(0,"编辑成功");
  318. }else{
  319. Db::rollback();
  320. return error_show(1002,"编辑失败");
  321. }
  322. }catch (\Exception $e){
  323. Db::rollback();
  324. return error_show(1005,$e->getMessage());
  325. }
  326. }
  327. public function ratedit(){
  328. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']) :"";
  329. $idinfo = Db::name('cat')->where(['id'=>$id])->find();
  330. if($idinfo==""){
  331. return error_show(1002,"未找到商品数据");
  332. }
  333. $rate = isset($this->post['rate']) && $this->post['rate'] !== "" ? intval($this->post['rate']) : "";
  334. $order_rate = isset($this->post['order_rate']) && $this->post['order_rate'] !== "" ? intval($this->post['order_rate']) : "";
  335. $sale_rate = isset($this->post['sale_rate']) && $this->post['sale_rate'] !== "" ? intval($this->post['sale_rate']) : "";
  336. $lower_rate = isset($this->post['lower_rate']) && $this->post['lower_rate'] !== "" ? intval($this->post['lower_rate']) :"";
  337. if($idinfo['pid']==0){
  338. if($rate===""){
  339. return error_show(1003,"参数rate不能为空");
  340. }
  341. if($order_rate===""){
  342. return error_show(1003,"参数order_rate不能为空");
  343. }
  344. if($sale_rate===""){
  345. return error_show(1003,"参数sale_rate不能为空");
  346. }
  347. if($lower_rate===""){
  348. return error_show(1003,"参数lower_rate不能为空");
  349. }
  350. }
  351. $data =[
  352. "id"=>$id,
  353. "rate" => $rate,
  354. "lower_rate"=>$lower_rate,
  355. "order_rate"=>$order_rate,
  356. "sale_rate"=>$sale_rate,
  357. "is_del"=>0,
  358. "updatetime"=>date("Y-m-d H:i:s")
  359. ];
  360. $strinfo = Db::name('cat')->where(['id'=>$id])->save($data);
  361. if($strinfo){
  362. return error_show(0,"更新成功");
  363. }else{
  364. return error_show(1002,"更新失败");
  365. }
  366. }
  367. public function info(){
  368. $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']) :"";
  369. if($id==""){
  370. return error_show(1002,"参数id不能为空");
  371. }
  372. $idinfo = Db::name('cat')->where(['id'=>$id])->find();
  373. if($idinfo==""){
  374. return error_show(1002,"未找到数据");
  375. }
  376. $info = Db::name('cat_specs')->where(['cat_id'=>$idinfo['id'],'is_del'=>0])->find();
  377. $temp = Db::name('specs')->where(['id'=>$info['specs_id'],'is_del'=>0])->find();
  378. $idinfo['cat_id']=$info['cat_id'];
  379. $idinfo['spec_name']=$temp['spec_name'];
  380. return app_show(0,"获取成功",$idinfo);
  381. }
  382. public function status(){
  383. $id = isset($this->post['id']) && $this->post['id'] !=="" ? intval($this->post['id']):"";
  384. if($id===""){
  385. return error_show(1002,"参数id不能为空");
  386. }
  387. $stn = Db::name('cat')->where(['id'=>$id])->find();
  388. if(empty($stn)){
  389. return error_show(1002,"未找到商品数据");
  390. }
  391. $status = isset($this->post['status']) && $this->post['status'] !=="" ? intval($this->post['status']) :"";
  392. if($status===""){
  393. return error_show(1002,"参数status不能为空");
  394. }
  395. $pd= $stn['status'];
  396. $stn['status']=$status;
  397. $stn['updatetime']=date("Y-m-d H:i:s");
  398. $str = Db::name('cat')->where(['id'=>$id])->save($stn);
  399. if($str){
  400. $order = ["order_code"=>$id,"status"=>$pd,"action_remark"=>'',"action_type"=>"edit"];
  401. ActionLog::logAdd($this->post['token'],$order,"sxd",$stn['status'],$order);
  402. return error_show(0,"状态更新成功");
  403. }else{
  404. return error_show(1002,"状态更新失败");
  405. }
  406. }
  407. public function delete(){
  408. $id = isset($this->post['id']) && $this->post['id'] !==""? intval($this->post['id']) :"";
  409. $info = Db::name('cat')->where(["is_del"=>0,'id'=>$id])->find();
  410. if($info==false){
  411. return error_show(1002,"未找到数据");
  412. }
  413. $supp= Db::name('cat')->update(['id'=>$id,'is_del'=>1,"updatetime"=>date("Y-m-d H:i:s")]);
  414. if($supp){
  415. return error_show(0,"删除成功");
  416. }else{
  417. return error_show(1002,"删除失败");
  418. }
  419. }
  420. }