ItemClassController.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267
  1. <?php
  2. /**
  3. * User: admin
  4. * Date Time: 2021/3/2 14:33
  5. */
  6. namespace hd\controllers;
  7. use bizGhs\item\classes\ItemClassClass;
  8. use bizHd\product\classes\ProductClass;
  9. use bizHd\shop\classes\ShopClass;
  10. use common\components\dict;
  11. use common\components\imgUtil;
  12. use common\components\util;
  13. use Yii;
  14. class ItemClassController extends BaseController
  15. {
  16. //获取花材列表的菜单 ssh 20240222
  17. //这里不能取出className,否则会影响前端显示,重要注意事项,请搜索关键词import_class_name!!!!!!!!!!!!!!
  18. public function actionGetMenu()
  19. {
  20. $mainId = $this->mainId;
  21. $itemList = ProductClass::getAllByCondition(['mainId' => $mainId, 'delStatus' => 0, 'status' => 1], null, 'id,name,reachNum,reachNumDiscount,presell,discountPrice', null, true);
  22. $arr = [];
  23. if (!empty($itemList)) {
  24. foreach ($itemList as $item) {
  25. $reachNum = $item->reachNum ?? 0;
  26. $reachNumDiscount = $item->reachNumDiscount ?? 0;
  27. if (isset($item->presell) && $item->presell == 1) {
  28. $arr[3] = [
  29. 'id' => -3,
  30. 'name' => '预售专区',
  31. 'shortCover' => 'item_class/mrfl.png',
  32. 'cover' => imgUtil::groupImg('item_class/mrfl.png') . "?x-oss-process=image/resize,m_fill,h_130,w_130"
  33. ];
  34. }
  35. if (isset($item->discountPrice) && $item->discountPrice > 0) {
  36. $arr[1] = [
  37. 'id' => -1,
  38. 'name' => '今日推荐',
  39. 'shortCover' => 'item_class/tj.jpg',
  40. 'cover' => imgUtil::groupImg('item_class/tj.jpg') . "?x-oss-process=image/resize,m_fill,h_130,w_130"
  41. ];
  42. }
  43. if ($reachNum > 0 && $reachNumDiscount > 0) {
  44. $arr[2] = [
  45. 'id' => -2,
  46. 'name' => '满减活动',
  47. 'shortCover' => 'item_class/mrfl.png',
  48. 'cover' => imgUtil::groupImg('item_class/mrfl.png') . "?x-oss-process=image/resize,m_fill,h_130,w_130"
  49. ];
  50. }
  51. }
  52. }
  53. $classInfo = ItemClassClass::getGhsItemClassAll($mainId);
  54. $index = [];
  55. $defaultClassId = 0;
  56. if (!empty($classInfo)) {
  57. foreach ($classInfo as $class) {
  58. $id = $class['id'] ?? 0;
  59. $index[$id] = $class;
  60. if (isset($class['isDefault']) && $class['isDefault'] == 1) {
  61. $defaultClassId = $id;
  62. }
  63. }
  64. }
  65. if (!empty($arr)) {
  66. $arr = array_values($arr);
  67. $classInfo = array_merge($arr, $classInfo);
  68. }
  69. util::success(['class' => $classInfo, 'classIndex' => $index, 'defaultClassId' => $defaultClassId]);
  70. }
  71. public function actionList()
  72. {
  73. $where = ['mainId' => $this->mainId];
  74. $list = ItemClassClass::getGhsItemClassList($where);
  75. util::success($list);
  76. }
  77. //花材列表页的分类,包含今日特价分类 ssh 20220315
  78. public function actionShowClass()
  79. {
  80. $headers = Yii::$app->getRequest()->getHeaders();
  81. $requestVersion = $headers->get('appVersion');
  82. $currentVersion = dict::getDict('appVersion');
  83. if ($requestVersion < $currentVersion) {
  84. util::fail('请先升级系统');
  85. }
  86. $list = ItemClassClass::getShopClass($this->mainId);
  87. util::success($list);
  88. }
  89. public function actionGetAllClass()
  90. {
  91. //中央ID
  92. $list = ItemClassClass::getGhsItemClassAll($this->mainId);
  93. util::success(['list' => $list]);
  94. }
  95. public function actionAdd()
  96. {
  97. $post = Yii::$app->request->post();
  98. $post['adminId'] = $this->adminId;
  99. $post['mainId'] = $this->mainId;
  100. $post['sjId'] = $this->sjId;
  101. $post['shopId'] = $this->shopId;
  102. ItemClassClass::addGhsItemClass($this->shop, $post);
  103. util::complete('添加成功');
  104. }
  105. public function actionUpdate()
  106. {
  107. $data = Yii::$app->request->post();
  108. $id = $data['id'] ?? 0;
  109. $name = $data['name'] ?? '';
  110. $inTurn = $data['inTurn'] ?? 0;
  111. $print = $data['print'] ?? 1;
  112. $cover = $data['cover'] ?? '';
  113. $class = ItemClassClass::getById($id, true);
  114. if (empty($class)) {
  115. util::fail('没有找到分类');
  116. }
  117. if ($class->mainId != $this->mainId) {
  118. util::fail('不是您的分类');
  119. }
  120. $originName = $class->name ?? '';
  121. $has = ItemClassClass::getByCondition(['mainId' => $this->mainId, 'name' => $name], true);
  122. if (!empty($has) && $id != $has->id) {
  123. util::fail('名称已经存在');
  124. }
  125. if ($class->isDefault != 1) {
  126. $class->name = $name;
  127. }
  128. $class->inTurn = $inTurn;
  129. $class->print = $print;
  130. if (!empty($cover)) {
  131. $class->cover = $cover;
  132. }
  133. $class->save();
  134. //在首店修改,则父级下所有直营和加盟店,同步修改
  135. $masterShop = $this->shop;
  136. if (isset($masterShop->default) && $masterShop->default == 1 && isset($masterShop->dataSync) && $masterShop->dataSync == 1) {
  137. $sjId = $masterShop->sjId ?? 0;
  138. $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true);
  139. foreach ($shopList as $shop) {
  140. $shopId = $shop->id ?? 0;
  141. if ($shopId == $masterShop->id) {
  142. //前面已经修改过了
  143. continue;
  144. }
  145. $currentMainId = $shop->mainId ?? 0;
  146. $chainList = ItemClassClass::getAllByCondition(['mainId' => $currentMainId], null, '*', null, true);
  147. if (!empty($chainList)) {
  148. foreach ($chainList as $chain) {
  149. if ($chain->name == $originName) {
  150. if ($chain->isDefault != 1) {
  151. $chain->name = $name;
  152. }
  153. $chain->inTurn = $inTurn;
  154. $chain->print = $print;
  155. if (!empty($cover)) {
  156. $chain->cover = $cover;
  157. }
  158. $chain->save();
  159. }
  160. }
  161. }
  162. }
  163. }
  164. util::complete('修改成功');
  165. }
  166. public function actionDelete()
  167. {
  168. $id = Yii::$app->request->get('id', 0);
  169. $connection = Yii::$app->db;
  170. $transaction = $connection->beginTransaction();
  171. try {
  172. $default = ItemClassClass::getByCondition(['mainId' => $this->mainId, 'isDefault' => 1], true);
  173. $defaultClassId = $default->id ?? 0;
  174. if (empty($defaultClassId)) {
  175. util::fail('没有默认分类');
  176. }
  177. if ($defaultClassId == $id) {
  178. util::fail('不能删除默认分类');
  179. }
  180. $class = ItemClassClass::getById($id, true);
  181. if (empty($class)) {
  182. util::fail('没有找到分类');
  183. }
  184. if($class->mainId!=$this->mainId){
  185. util::fail('不是你的分类');
  186. }
  187. $originName = $class->name ?? '';
  188. $class->delete();
  189. $list = ProductClass::getAllByCondition(['classId' => $id], null, '*', null, true);
  190. if (!empty($list)) {
  191. foreach ($list as $item) {
  192. //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
  193. $itemClassKey = 'item_class_modify_sync';
  194. Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]);
  195. }
  196. }
  197. ProductClass::updateByCondition(['classId' => $id], ['classId' => $defaultClassId]);
  198. //在首店删除,则父级下所有直营和加盟店同步删除
  199. $masterShop = $this->shop;
  200. if (isset($masterShop->default) && $masterShop->default == 1) {
  201. $sjId = $masterShop->sjId ?? 0;
  202. $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true);
  203. foreach ($shopList as $shop) {
  204. $shopId = $shop->id ?? 0;
  205. if ($shopId == $masterShop->id) {
  206. //前面已经删除过了
  207. continue;
  208. }
  209. $currentMainId = $shop->mainId ?? 0;
  210. $chainList = ItemClassClass::getAllByCondition(['mainId' => $currentMainId], null, '*', null, true);
  211. if (!empty($chainList)) {
  212. foreach ($chainList as $chain) {
  213. if ($chain->name == $originName) {
  214. $currentId = $chain->id;
  215. $chain->delete();
  216. $default = ItemClassClass::getByCondition(['mainId' => $currentMainId, 'isDefault' => 1], true);
  217. $defaultClassId = $default->id ?? 0;
  218. if (empty($defaultClassId)) {
  219. util::fail('分店同步删除时,找到默认分类');
  220. }
  221. $list = ProductClass::getAllByCondition(['classId' => $currentId], null, '*', null, true);
  222. if (!empty($list)) {
  223. //noticeUtil::push('有商家在删除分类', '15280215347');
  224. foreach ($list as $item) {
  225. //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync
  226. $itemClassKey = 'item_class_modify_sync';
  227. Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]);
  228. }
  229. }
  230. ProductClass::updateByCondition(['classId' => $currentId], ['classId' => $defaultClassId]);
  231. }
  232. }
  233. }
  234. }
  235. }
  236. $transaction->commit();
  237. util::complete('操作成功');
  238. } catch (\Exception $e) {
  239. $transaction->rollBack();
  240. Yii::info("失败原因:" . $e->getMessage());
  241. util::fail('删除失败');
  242. }
  243. }
  244. //开单 / 首页金刚区关联花材分类:获取当前门店全部花材分类
  245. public function actionAll()
  246. {
  247. $data = ItemClassClass::getGhsItemClassAll($this->mainId);
  248. util::success($data);
  249. }
  250. }