mainId; $itemList = ProductClass::getAllByCondition(['mainId' => $mainId, 'delStatus' => 0, 'status' => 1], null, 'id,name,reachNum,reachNumDiscount,presell,discountPrice', null, true); $arr = []; if (!empty($itemList)) { foreach ($itemList as $item) { $reachNum = $item->reachNum ?? 0; $reachNumDiscount = $item->reachNumDiscount ?? 0; if (isset($item->presell) && $item->presell == 1) { $arr[3] = [ 'id' => -3, 'name' => '预售专区', 'shortCover' => 'item_class/mrfl.png', 'cover' => imgUtil::groupImg('item_class/mrfl.png') . "?x-oss-process=image/resize,m_fill,h_130,w_130" ]; } if (isset($item->discountPrice) && $item->discountPrice > 0) { $arr[1] = [ 'id' => -1, 'name' => '今日推荐', 'shortCover' => 'item_class/tj.jpg', 'cover' => imgUtil::groupImg('item_class/tj.jpg') . "?x-oss-process=image/resize,m_fill,h_130,w_130" ]; } if ($reachNum > 0 && $reachNumDiscount > 0) { $arr[2] = [ 'id' => -2, 'name' => '满减活动', 'shortCover' => 'item_class/mrfl.png', 'cover' => imgUtil::groupImg('item_class/mrfl.png') . "?x-oss-process=image/resize,m_fill,h_130,w_130" ]; } } } $classInfo = ItemClassClass::getGhsItemClassAll($mainId); $index = []; $defaultClassId = 0; if (!empty($classInfo)) { foreach ($classInfo as $class) { $id = $class['id'] ?? 0; $index[$id] = $class; if (isset($class['isDefault']) && $class['isDefault'] == 1) { $defaultClassId = $id; } } } if (!empty($arr)) { $arr = array_values($arr); $classInfo = array_merge($arr, $classInfo); } util::success(['class' => $classInfo, 'classIndex' => $index, 'defaultClassId' => $defaultClassId]); } //采购选分类有变化通知 public function actionGetClassRemind() { $cacheKey = 'ghs_class_change_remind_' . $this->shopAdminId; $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]); $hasStatus = !empty($has) ? 1 : 0; util::success(['hasRemind' => $hasStatus]); } //采购选分类有变化通知 public function actionHasClassRemind() { $cacheKey = 'ghs_class_change_remind_' . $this->shopAdminId; Yii::$app->redis->executeCommand('SET', [$cacheKey, 'has']); util::complete(); } public function actionList() { $where = ['mainId' => $this->mainId]; $list = ItemClassClass::getGhsItemClassList($where); util::success($list); } //花材列表页的分类,包含今日特价分类 ssh 20220315 public function actionShowClass() { $list = ItemClassClass::getShopClass($this->mainId); util::success($list); } public function actionGetAllClass() { //中央ID $list = ItemClassClass::getGhsItemClassAll($this->mainId); util::success(['list' => $list]); } //带键值的分类 ssh 20240317 public function actionGetAllClassIndex() { $where = ['mainId' => $this->mainId]; $data = ItemClassClass::getAllList('id,name,cover,print', $where, 'inTurn desc'); $arr = []; if (!empty($data)) { foreach ($data as $key => $val) { $classId = $val['id'] ?? 0; $shortCover = $val['cover'] ?? ''; $cover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130"; $val['shortCover'] = $shortCover; $val['cover'] = $cover; $arr[$classId] = $val; } } util::success($arr); } public function actionAdd() { $post = Yii::$app->request->post(); $post['adminId'] = $this->adminId; $post['mainId'] = $this->mainId ?? 0; ItemClassClass::addGhsItemClass($this->shop, $post); util::complete('添加成功'); } //修改分类同步 ssh 20220906 public function actionUpdate() { $data = Yii::$app->request->post(); $id = $data['id'] ?? 0; $name = $data['name'] ?? ''; $inTurn = $data['inTurn'] ?? 0; $print = $data['print'] ?? 1; $cover = $data['cover'] ?? ''; $class = ItemClassClass::getById($id, true); if (empty($class)) { util::fail('没有找到分类'); } if ($class->mainId != $this->mainId) { util::fail('不是您的分类'); } $originName = $class->name ?? ''; $has = ItemClassClass::getByCondition(['mainId' => $this->mainId, 'name' => $name], true); if (!empty($has) && $id != $has->id) { util::fail('名称已经存在'); } if ($class->isDefault != 1) { $class->name = $name; } $class->inTurn = $inTurn; $class->print = $print; if (!empty($cover)) { $class->cover = $cover; } $class->save(); //在首店修改,则父级下所有直营和加盟店,同步修改 $masterShop = $this->shop; if (isset($masterShop->default) && $masterShop->default == 1 && isset($masterShop->dataSync) && $masterShop->dataSync == 1) { $sjId = $masterShop->sjId ?? 0; $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($shopList as $shop) { $shopId = $shop->id ?? 0; if ($shopId == $masterShop->id) { //前面已经修改过了 continue; } $currentMainId = $shop->mainId ?? 0; $chainList = ItemClassClass::getAllByCondition(['mainId' => $currentMainId], null, '*', null, true); if (!empty($chainList)) { foreach ($chainList as $chain) { if ($chain->name == $originName) { if ($chain->isDefault != 1) { $chain->name = $name; } $chain->inTurn = $inTurn; $chain->print = $print; if (!empty($cover)) { $chain->cover = $cover; } $chain->save(); } } } } } util::complete('修改成功'); } //删除花材分类 ssh 202207062136 public function actionDelete() { $id = Yii::$app->request->get('id', 0); $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $default = ItemClassClass::getByCondition(['mainId' => $this->mainId, 'isDefault' => 1], true); $defaultClassId = $default->id ?? 0; if (empty($defaultClassId)) { util::fail('没有默认分类'); } if ($defaultClassId == $id) { util::fail('不能删除默认分类'); } $class = ItemClassClass::getById($id, true); ItemClassClass::valid($class, $this->mainId); $originName = $class->name ?? ''; $class->delete(); $list = ProductClass::getAllByCondition(['classId' => $id], null, '*', null, true); if (!empty($list)) { //noticeUtil::push('有商家在删除分类', '15280215347'); foreach ($list as $item) { //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync $itemClassKey = 'item_class_modify_sync'; Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]); } } ProductClass::updateByCondition(['classId' => $id], ['classId' => $defaultClassId]); //在首店删除,则父级下所有直营和加盟店同步删除 $masterShop = $this->shop; if (isset($masterShop->default) && $masterShop->default == 1) { $sjId = $masterShop->sjId ?? 0; $shopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($shopList as $shop) { $shopId = $shop->id ?? 0; if ($shopId == $masterShop->id) { //前面已经删除过了 continue; } $currentMainId = $shop->mainId ?? 0; $chainList = ItemClassClass::getAllByCondition(['mainId' => $currentMainId], null, '*', null, true); if (!empty($chainList)) { foreach ($chainList as $chain) { if ($chain->name == $originName) { $currentId = $chain->id; $chain->delete(); $default = ItemClassClass::getByCondition(['mainId' => $currentMainId, 'isDefault' => 1], true); $defaultClassId = $default->id ?? 0; if (empty($defaultClassId)) { util::fail('分店同步删除时,找到默认分类'); } $list = ProductClass::getAllByCondition(['classId' => $currentId], null, '*', null, true); if (!empty($list)) { //noticeUtil::push('有商家在删除分类', '15280215347'); foreach ($list as $item) { //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync $itemClassKey = 'item_class_modify_sync'; Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]); } } ProductClass::updateByCondition(['classId' => $currentId], ['classId' => $defaultClassId]); } } } } } $transaction->commit(); util::complete('操作成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("失败原因:" . $e->getMessage()); util::fail('删除失败'); } } //开单: 获取所有分类 public function actionAll() { //中央ID $data = ItemClassClass::getGhsItemClassAll($this->mainId); util::success($data); } //修改排序 ssh 20210701 public function actionChangeInTurn() { $sortData = Yii::$app->request->post('sortData'); if (empty($sortData)) { util::fail('请修改你要排序的分类'); } $sortArr = json_decode($sortData, true); if (empty($sortArr) || is_array($sortArr) == false) { util::fail('请修改分类'); } foreach ($sortArr as $item) { $id = $item['id']; $inTurn = $item['inTurn']; if (is_numeric($inTurn) == false || intval($inTurn) != $inTurn) { continue; } ItemClassClass::updateById($id, ['inTurn' => $inTurn]); } util::complete(); } }