Goodscategory.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. <?php
  2. /**
  3. * Niushop商城系统 - 团队十年电商经验汇集巨献!
  4. * =========================================================
  5. * Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
  6. * ----------------------------------------------
  7. * 官方网址: https://www.niushop.com
  8. * =========================================================
  9. */
  10. namespace app\shop\controller;
  11. use app\model\goods\GoodsAttribute as GoodsAttributeModel;
  12. use app\model\goods\GoodsCategory as GoodsCategoryModel;
  13. /**
  14. * 商品分类管理 控制器
  15. */
  16. class Goodscategory extends BaseShop
  17. {
  18. /**
  19. * 商品分类列表
  20. */
  21. public function lists()
  22. {
  23. $goods_category_model = new GoodsCategoryModel();
  24. $condition[] = [ 'site_id', '=', $this->site_id ];
  25. $field = 'category_id,category_name,short_name,pid,level,is_recommend,is_show,sort,image,attr_class_name,category_id_1,category_id_2,category_id_3,commission_rate,icon';
  26. $list = $goods_category_model->getCategoryTree($condition, $field);
  27. if (request()->isAjax()) return $list;
  28. $list = $list[ 'data' ];
  29. $this->assign("list", $list);
  30. return $this->fetch('goodscategory/lists');
  31. }
  32. /**
  33. * 商品分类添加
  34. */
  35. public function addCategory()
  36. {
  37. $goods_category_model = new GoodsCategoryModel();
  38. if (request()->isAjax()) {
  39. $category_name = input('category_name', ''); // 分类名称
  40. $short_name = input('short_name', ''); // 简称
  41. $pid = input('pid', 0); //默认添加的商品分类为顶级
  42. $level = input('level', 1); // 层级
  43. $is_recommend = input('is_recommend', 0); // 是否推荐
  44. $icon = input('icon', 0); // 图标
  45. $is_show = input('is_show', ''); // 是否显示
  46. // $sort = input('sort', ''); // 排序
  47. $image = input('image', ''); // 分类图片
  48. $image_adv = input('image_adv', ''); // 分类广告图片
  49. $keywords = input('keywords', ''); // 分类页面关键字
  50. $description = input('description', ''); // 分类介绍
  51. $attr_class_id = input('attr_class_id', ''); // 关联商品类型id
  52. $attr_class_name = input('attr_class_name', ''); // 关联商品类型名称
  53. $commission_rate = input('commission_rate', ''); // 佣金比率%
  54. $category_id_1 = input('category_id_1', 0); // 一级分类id
  55. $category_id_2 = input('category_id_2', 0); // 二级分类id
  56. $category_full_name = input('category_full_name', '');; // 组装名称
  57. $link_url = input('link_url', '');;// 广告链接
  58. $data = [
  59. 'site_id' => $this->site_id,
  60. 'category_name' => $category_name,
  61. 'short_name' => $short_name,
  62. 'pid' => $pid,
  63. 'level' => $level,
  64. 'is_recommend' => $is_recommend,
  65. 'is_show' => $is_show,
  66. // 'sort' => $sort,
  67. 'image' => $image,
  68. 'image_adv' => $image_adv,
  69. 'keywords' => $keywords,
  70. 'description' => $description,
  71. 'attr_class_id' => $attr_class_id,
  72. 'attr_class_name' => $attr_class_name,
  73. 'commission_rate' => $commission_rate,
  74. 'category_id_1' => $category_id_1,
  75. 'category_id_2' => $category_id_2,
  76. 'category_full_name' => $category_full_name,
  77. 'link_url' => $link_url,
  78. 'icon' => $icon
  79. ];
  80. $res = $goods_category_model->addCategory($data);
  81. if (!empty($res[ 'data' ])) {
  82. //修改category_id_
  83. $update_data = [
  84. 'category_id' => $res[ 'data' ],
  85. 'category_id_' . $level => $res[ 'data' ],
  86. 'site_id' => $this->site_id
  87. ];
  88. $goods_category_model->editCategory($update_data);
  89. }
  90. return $res;
  91. } else {
  92. $goods_attribute_model = new GoodsAttributeModel();
  93. // 商品类型列表
  94. $attr_class_list = $goods_attribute_model->getAttrClassList([ [ 'site_id', '=', $this->site_id ] ], 'class_id,class_name')[ 'data' ];
  95. $this->assign("attr_class_list", $attr_class_list);
  96. return $this->fetch('goodscategory/add_category');
  97. }
  98. }
  99. /**
  100. * 商品分类编辑
  101. */
  102. public function editCategory()
  103. {
  104. $category_id = input('category_id', '');// 分类id
  105. $goods_category_model = new GoodsCategoryModel();
  106. if (request()->isAjax()) {
  107. $category_name = input('category_name', '');// 分类名称
  108. $short_name = input('short_name', '');// 简称
  109. $pid = input('pid', 0);//默认添加的商品分类为顶级
  110. $level = input('level', 1);// 层级
  111. $is_recommend = input('is_recommend', 0); // 是否推荐
  112. $is_show = input('is_show', 0);// 是否显示
  113. // $sort = input('sort', 0);// 排序
  114. $image = input('image', '');// 分类图片
  115. $image_adv = input('image_adv', '');// 分类广告图片
  116. $keywords = input('keywords', '');// 分类页面关键字
  117. $description = input('description', '');// 分类介绍
  118. $attr_class_id = input('attr_class_id', '');// 关联商品类型id
  119. $attr_class_name = input('attr_class_name', '');// 关联商品类型名称
  120. $commission_rate = input('commission_rate', '');// 佣金比率%
  121. // $category_id_1 = input('category_id_1', 0);// 一级分类id
  122. // $category_id_2 = input('category_id_2', 0);// 二级分类id
  123. // $category_id_3 = input('category_id_3', 0);// 三级分类id
  124. // $category_full_name = input('category_full_name', '');// 组装名称
  125. $link_url = input('link_url', '');// 广告链接
  126. $icon = input('icon', '');
  127. $data = [
  128. 'site_id' => $this->site_id,
  129. 'category_id' => $category_id,
  130. 'category_name' => $category_name,
  131. 'short_name' => $short_name,
  132. 'pid' => $pid,
  133. 'level' => $level,
  134. 'is_recommend' => $is_recommend,
  135. 'is_show' => $is_show,
  136. // 'sort' => $sort,
  137. 'image' => $image,
  138. 'image_adv' => $image_adv,
  139. 'keywords' => $keywords,
  140. 'description' => $description,
  141. 'attr_class_id' => $attr_class_id,
  142. 'attr_class_name' => $attr_class_name,
  143. 'commission_rate' => $commission_rate,
  144. // 'category_id_1' => $category_id_1,
  145. // 'category_id_2' => $category_id_2,
  146. // 'category_id_3' => $category_id_3,
  147. // 'category_full_name' => $category_full_name,
  148. 'link_url' => $link_url,
  149. 'icon' => $icon
  150. ];
  151. $this->addLog("编辑商品分类:" . $category_name);
  152. $res = $goods_category_model->editCategory($data);
  153. return $res;
  154. } else {
  155. if (empty($category_id)) {
  156. $this->error("缺少参数category_id");
  157. }
  158. $goods_category_info = $goods_category_model->getCategoryInfo([ [ 'category_id', '=', $category_id ], [ 'site_id', '=', $this->site_id ] ])[ 'data' ];
  159. if (empty($goods_category_info)) $this->error('未获取到分类数据', addon_url('shop/goodscategory/lists'));
  160. $this->assign("goods_category_info", $goods_category_info);
  161. //父级
  162. $goods_category_parent_info = $goods_category_model->getCategoryInfo([ [ 'category_id', '=', $goods_category_info[ 'pid' ] ], [ 'site_id', '=', $this->site_id ] ], 'category_name');
  163. $this->assign("goods_category_parent_info", $goods_category_parent_info[ 'data' ]);
  164. $goods_attribute_model = new GoodsAttributeModel();
  165. // 商品类型列表
  166. $attr_class_list = $goods_attribute_model->getAttrClassList([ [ 'site_id', '=', $this->site_id ] ], 'class_id,class_name');
  167. $this->assign("attr_class_list", $attr_class_list[ 'data' ]);
  168. $condition = [];
  169. $condition[] = [ 'site_id', '=', $this->site_id ];
  170. $condition[] = [ 'category_id', '<>', $category_id ];
  171. $field = 'category_id,category_name,short_name,pid,level,is_show,sort,image,attr_class_name,category_id_1,category_id_2,category_id_3,commission_rate';
  172. $list = $goods_category_model->getCategoryTree($condition, $field);
  173. $this->assign("list", $list[ 'data' ]);
  174. return $this->fetch('goodscategory/edit_category');
  175. }
  176. }
  177. /**
  178. * 商品分类删除
  179. */
  180. public function deleteCategory()
  181. {
  182. if (request()->isAjax()) {
  183. $category_id = input('category_id', '');// 分类id
  184. $goods_category_model = new GoodsCategoryModel();
  185. $res = $goods_category_model->deleteCategory($category_id, $this->site_id);
  186. $this->addLog("删除商品分类id:" . $category_id);
  187. return $res;
  188. }
  189. }
  190. /**
  191. * 获取商品分类列表
  192. * @return \multitype
  193. */
  194. public function getCategoryList()
  195. {
  196. $pid = input('pid', 0);// 上级id
  197. $level = input('level', 0);// 层级
  198. $goods_category_model = new GoodsCategoryModel();
  199. if (!empty($level)) {
  200. $condition = [
  201. [ 'level', '=', $level ]
  202. ];
  203. } else {
  204. $condition = [
  205. [ 'pid', '=', $pid ]
  206. ];
  207. }
  208. $condition[] = [ 'site_id', '=', $this->site_id ];
  209. $list = $goods_category_list = $goods_category_model->getCategoryList($condition, 'category_id,category_name,pid,level,category_id_1,category_id_2,category_id_3', 'sort asc,category_id desc');
  210. return $list;
  211. }
  212. /**
  213. * 获取商品分类信息
  214. * @return \multitype
  215. */
  216. public function getCategoryInfo()
  217. {
  218. $category_id = input('category_id', '');// 分类id
  219. $goods_category_model = new GoodsCategoryModel();
  220. $condition = [
  221. [ 'category_id', '=', $category_id ]
  222. ];
  223. $res = $goods_category_model->getCategoryInfo($condition, 'category_name');
  224. return $res;
  225. }
  226. /**
  227. * 获取商品分类
  228. * @return \multitype
  229. */
  230. public function getCategoryByParent()
  231. {
  232. $pid = input('pid', 0);// 上级id
  233. $level = input('level', 0);// 层级
  234. $goods_category_model = new GoodsCategoryModel();
  235. if (!empty($level)) {
  236. $condition[] = [ 'level', '=', $level ];
  237. }
  238. if (!empty($pid)) {
  239. $condition[] = [ 'pid', '=', $pid ];
  240. }
  241. $condition[] = [ 'site_id', '=', $this->site_id ];
  242. $list = $goods_category_list = $goods_category_model->getCategoryByParent($condition, 'category_id,category_name,pid,level,category_id_1,category_id_2,category_id_3');
  243. return $list;
  244. }
  245. /**
  246. * 修改商品分类排序
  247. */
  248. public function modifySort()
  249. {
  250. if (request()->isAjax()) {
  251. $sort = input('sort', 0);
  252. $category_id = input('category_id', 0);
  253. $category_sort_array = input('category_sort_array', '');
  254. $goods_category_model = new GoodsCategoryModel();
  255. if (!empty($category_sort_array)) {
  256. $category_sort_array = json_decode($category_sort_array, true);
  257. foreach ($category_sort_array as $k => $v) {
  258. $res = $goods_category_model->modifyGoodsCategorySort($v[ 'sort' ], $v[ 'category_id' ], $this->site_id);
  259. }
  260. } else {
  261. $res = $goods_category_model->modifyGoodsCategorySort($sort, $category_id, $this->site_id);
  262. }
  263. return $res;
  264. }
  265. }
  266. public function checkEditCategory()
  267. {
  268. if (request()->isAjax()) {
  269. $pid = input('pid', 0);
  270. $category_id = input('category_id', 0);
  271. $goods_category_model = new GoodsCategoryModel();
  272. $res = $goods_category_model->checkEditCategory([
  273. 'pid' => $pid,
  274. 'category_id' => $category_id,
  275. 'site_id' => $this->site_id
  276. ]);
  277. return $res;
  278. }
  279. }
  280. }