Goodsattr.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  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. /**
  13. * 商品类型/属性管理 控制器
  14. */
  15. class Goodsattr extends BaseShop
  16. {
  17. /**
  18. * 商品类型列表
  19. */
  20. public function lists()
  21. {
  22. if (request()->isAjax()) {
  23. $page_index = input('page', 1);
  24. $page_size = input('page_size', PAGE_LIST_ROWS);
  25. $search_keys = input('search_keys', "");
  26. $condition = [];
  27. $condition[] = [ 'site_id', '=', $this->site_id ];
  28. if (!empty($search_keys)) {
  29. $condition[] = [ 'class_name', 'like', '%' . $search_keys . '%' ];
  30. }
  31. //排序
  32. $link_sort = input('order', 'sort');
  33. $sort = input('sort', 'desc');
  34. if ($link_sort == 'sort') {
  35. $order_by = $link_sort . ' ' . $sort;
  36. } else {
  37. $order_by = $link_sort . ' ' . $sort . ',sort desc';
  38. }
  39. $goods_attr_model = new GoodsAttributeModel();
  40. $list = $goods_attr_model->getAttrClassPageList($condition, $page_index, $page_size, $order_by);
  41. return $list;
  42. } else {
  43. return $this->fetch('goodsattr/lists');
  44. }
  45. }
  46. /**
  47. * 商品类型添加
  48. */
  49. public function addAttr()
  50. {
  51. if (request()->isAjax()) {
  52. $class_name = input('class_name', '');
  53. $sort = input('sort', 0);
  54. $data = [
  55. 'site_id' => $this->site_id,
  56. 'class_name' => $class_name,
  57. 'sort' => $sort
  58. ];
  59. $goods_attr_model = new GoodsAttributeModel();
  60. $res = $goods_attr_model->addAttrClass($data);
  61. return $res;
  62. }
  63. }
  64. /**
  65. * 商品类型编辑
  66. */
  67. public function editAttr()
  68. {
  69. $goods_attr_model = new GoodsAttributeModel();
  70. if (request()->isAjax()) {
  71. $class_id = input("class_id", 0);
  72. $class_name = input('class_name', '');
  73. $sort = input('sort', 0);
  74. $data = [
  75. 'class_id' => $class_id,
  76. 'site_id' => $this->site_id,
  77. 'class_name' => $class_name,
  78. 'sort' => $sort
  79. ];
  80. $res = $goods_attr_model->editAttrClass($data);
  81. return $res;
  82. } else {
  83. $class_id = input("class_id", 0);
  84. $this->assign("class_id", $class_id);
  85. //商品类型信息
  86. $attr_class_info = $goods_attr_model->getAttrClassInfo([ [ 'class_id', '=', $class_id ], [ 'site_id', '=', $this->site_id ] ])[ 'data' ];
  87. if (empty($attr_class_info)) $this->error('未获取到属性数据', addon_url('shop/goodsattr/lists'));
  88. $this->assign("attr_class_info", $attr_class_info);
  89. return $this->fetch('goodsattr/edit_attr');
  90. }
  91. }
  92. /**
  93. * 修改商品类型排序
  94. */
  95. public function modifySort()
  96. {
  97. if (request()->isAjax()) {
  98. $sort = input('sort', 0);
  99. $class_id = input('class_id', 0);
  100. $goods_attr_model = new GoodsAttributeModel();
  101. return $goods_attr_model->modifyAttrClassSort($sort, $class_id, $this->site_id);
  102. }
  103. }
  104. /**
  105. * 商品类型删除
  106. */
  107. public function deleteAttr()
  108. {
  109. if (request()->isAjax()) {
  110. $class_id = input("class_id", 0);
  111. $goods_attr_model = new GoodsAttributeModel();
  112. $result = $goods_attr_model->deleteAttrClass($class_id, $this->site_id);
  113. return $result;
  114. }
  115. }
  116. /**
  117. * 添加商品参数
  118. */
  119. public function addAttribute()
  120. {
  121. if (request()->isAjax()) {
  122. $attr_name = input('attr_name', "");// 属性名称
  123. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  124. $attr_class_name = input('attr_class_name', "");// 商品类型名称
  125. $attr_value_list = input('attr_value_list', "");// 属性值列表('',''隔开注意键值对)
  126. $attr_type = input('attr_type', 0);// 属性类型 (1.单选 2.多选3. 输入 注意输入不参与筛选)
  127. $site_id = $this->site_id;// 站点id
  128. $data = [
  129. 'attr_name' => $attr_name,
  130. 'attr_class_id' => $attr_class_id,
  131. 'attr_class_name' => $attr_class_name,
  132. 'attr_value_list' => $attr_value_list,
  133. 'attr_type' => $attr_type,
  134. 'site_id' => $site_id,
  135. ];
  136. $goods_attr_model = new GoodsAttributeModel();
  137. return $goods_attr_model->addAttribute($attr_class_id, $data);
  138. }
  139. }
  140. /**
  141. * 修改商品参数
  142. */
  143. public function editAttribute()
  144. {
  145. if (request()->isAjax()) {
  146. $attr_id = input('attr_id', "");// 属性id
  147. $attr_name = input('attr_name', "");// 属性名称
  148. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  149. $attr_class_name = input('attr_class_name', "");// 商品类型名称
  150. $attr_value_list = input('attr_value_list', "");// 属性值列表('',''隔开注意键值对)
  151. $attr_type = input('attr_type', 0);// 属性类型 (1.单选 2.多选3. 输入 注意输入不参与筛选)
  152. $data = [
  153. 'attr_id' => $attr_id,
  154. 'attr_name' => $attr_name,
  155. 'attr_class_id' => $attr_class_id,
  156. 'attr_class_name' => $attr_class_name,
  157. 'attr_value_list' => $attr_value_list,
  158. 'attr_type' => $attr_type,
  159. 'site_id' => $this->site_id
  160. ];
  161. $goods_attr_model = new GoodsAttributeModel();
  162. return $goods_attr_model->editAttribute($attr_class_id, $data);
  163. }
  164. }
  165. /**
  166. * 删除属性、属性值
  167. * @return \multitype
  168. */
  169. public function deleteAttribute()
  170. {
  171. if (request()->isAjax()) {
  172. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  173. $attr_id = input('attr_id', 0);// 属性id
  174. $goods_attr_model = new GoodsAttributeModel();
  175. $res = $goods_attr_model->deleteAttribute($attr_class_id, $attr_id, $this->site_id);
  176. return $res;
  177. }
  178. }
  179. /**
  180. * 获取属性、属性值详情
  181. * @return \multitype
  182. */
  183. public function getAttributeDetail()
  184. {
  185. if (request()->isAjax()) {
  186. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  187. $attr_id = input('attr_id', 0);// 属性id
  188. $goods_attr_model = new GoodsAttributeModel();
  189. $attr_info = $goods_attr_model->getAttributeInfo([ [ 'attr_class_id', '=', $attr_class_id ], [ 'attr_id', '=', $attr_id ], [ 'site_id', '=', $this->site_id ] ])[ 'data' ];
  190. if (!empty($attr_info)) {
  191. $attr_value_list = $goods_attr_model->getAttributeValueList([ [ 'attr_class_id', '=', $attr_class_id ], [ 'attr_id', '=', $attr_id ] ])[ 'data' ];
  192. $attr_info[ 'value' ] = $attr_value_list;
  193. return success(0, '', $attr_info);
  194. } else {
  195. return error(-1, "未查询到属性信息");
  196. }
  197. }
  198. }
  199. /**
  200. * 获取商品参数列表
  201. * @return \multitype
  202. */
  203. public function getAttributeList()
  204. {
  205. if (request()->isAjax()) {
  206. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  207. $goods_attr_model = new GoodsAttributeModel();
  208. return $goods_attr_model->getAttributeList([ [ 'attr_class_id', '=', $attr_class_id ], [ 'site_id', '=', $this->site_id ] ]);
  209. }
  210. }
  211. /**
  212. * 添加属性值
  213. * @return \multitype
  214. */
  215. public function addAttributeValue()
  216. {
  217. if (request()->isAjax()) {
  218. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  219. $value = input('value', "");
  220. if (!empty($value)) {
  221. $value = json_decode($value, true);
  222. $data = [];
  223. foreach ($value as $k => $v) {
  224. $item = [
  225. 'attr_value_name' => $v[ 'attr_value_name' ],
  226. 'attr_id' => $v[ 'attr_id' ],
  227. 'attr_class_id' => $v[ 'attr_class_id' ],
  228. 'sort' => $v[ 'sort' ]
  229. ];
  230. $data[] = $item;
  231. }
  232. $goods_attr_model = new GoodsAttributeModel();
  233. $res = $goods_attr_model->addAttributeValue($attr_class_id, $data);
  234. return $res;
  235. }
  236. } else {
  237. return error(-1, "缺少value");
  238. }
  239. }
  240. /**
  241. * 修改商品参数值
  242. */
  243. public function editAttributeValue()
  244. {
  245. if (request()->isAjax()) {
  246. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  247. $data = input('data', "");// 属性值数组对象
  248. if (!empty($data)) {
  249. $data = json_decode($data, true);
  250. $goods_attr_model = new GoodsAttributeModel();
  251. foreach ($data as $k => $v) {
  252. $item = [
  253. 'attr_value_id' => $v[ 'attr_value_id' ],
  254. 'attr_value_name' => $v[ 'attr_value_name' ],
  255. 'attr_id' => $v[ 'attr_id' ],
  256. 'attr_class_id' => $v[ 'attr_class_id' ],
  257. 'sort' => $v[ 'sort' ],
  258. ];
  259. $res = $goods_attr_model->editAttributeValue($attr_class_id, $item);
  260. }
  261. return $res;
  262. } else {
  263. return error(-1, "缺少data");
  264. }
  265. }
  266. }
  267. /**
  268. * 删除属性值
  269. * @return \multitype
  270. */
  271. public function deleteAttributeValue()
  272. {
  273. if (request()->isAjax()) {
  274. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  275. $attr_id = input('attr_id', 0);// 商品类型id
  276. $attr_value_id_arr = input('attr_value_id_arr', 0);
  277. $goods_attr_model = new GoodsAttributeModel();
  278. $res = $goods_attr_model->deleteAttributeValue($attr_class_id, $attr_id, [ [ 'attr_value_id', 'in', $attr_value_id_arr ] ]);
  279. return $res;
  280. }
  281. }
  282. /**
  283. * 修改商品参数值排序
  284. */
  285. public function modifyAttributeSort()
  286. {
  287. if (request()->isAjax()) {
  288. $sort = input('sort', 0);
  289. $attr_class_id = input('attr_class_id', 0);// 商品类型id
  290. $attr_id = input('attr_id', 0);
  291. $goods_attr_model = new GoodsAttributeModel();
  292. return $goods_attr_model->modifyAttributeSort($sort, $attr_class_id, $attr_id, $this->site_id);
  293. }
  294. }
  295. }