request->get(); $id = $get['id'] ?? 0; $onStock = $get['onStock'] ?? 0; $info = ProductClass::getLockById($id); ProductClass::check($info, $this->mainId); $oldOnStock = $info->onStock ?? 0; $newOnStock = $onStock; $num = bcsub($newOnStock, $oldOnStock); $num = abs($num); $staff = $this->shopAdmin; $staffName = $staff->name ?? ''; $onRecord = []; $onRecord['sjId'] = $this->sjId; $onRecord['shopId'] = $this->shopId; $onRecord['mainId'] = $this->mainId; $onRecord['orderSn'] = ''; $onRecord['productId'] = $id; $onRecord['itemId'] = $info->itemId ?? 0; $onRecord['relateName'] = $staffName; $onRecord['itemNum'] = $num; $onRecord['oldStock'] = $oldOnStock; $onRecord['newStock'] = $newOnStock; $onRecord['ptStyle'] = 2; OnStockRecordClass::modify($onRecord); $info->onStock = $newOnStock; $info->save(); util::complete('修改成功'); } //停止预售 ssh 20230224 public function actionCancelPreSell() { $get = Yii::$app->request->get(); $id = $get['id'] ?? 0; $info = ProductClass::getById($id, true); ProductClass::check($info, $this->mainId); if ($info->stock > 0) { util::fail('没有库存才能停止预售'); } $info->presell = 0; $info->presellDate = ''; $info->save(); util::complete(); } //修改预售 ssh 20221214 public function actionChangePresell() { $post = Yii::$app->request->post(); $id = $post['id'] ?? 0; $info = ProductClass::getById($id, true); ProductClass::check($info, $this->mainId); $str = $post['date'] ?? ''; $presell = $post['presell'] ?? 0; $newStr = ''; if ($presell == 1) { if (empty($str)) { util::fail('请填写预售日期'); } $arr = json_decode($str, true); if (empty($arr)) { util::fail('请填写预售日期'); } $new = []; foreach ($arr as $date) { $new[] = strtotime($date); } $new = array_unique(array_filter($new)); asort($new); $newStr = implode(',', $new); } $info->presell = $presell; $info->presellDate = $newStr; $info->discountPrice = 0; $info->save(); util::complete(); } //取消满减 ssh 20231216 public function actionCancelFullOff() { $get = Yii::$app->request->get(); $id = $get['id'] ?? 0; $info = ProductClass::getById($id, true); ProductClass::check($info, $this->mainId); $info->reachNum = 0; $info->reachNumDiscount = 0; $info->save(); util::complete('取消成功'); } //取消特价 ssh 20220901 public function actionCancelDiscount() { $get = Yii::$app->request->get(); $id = $get['id'] ?? 0; $info = ProductClass::getById($id, true); ProductClass::check($info, $this->mainId); $info->discountPrice = 0; $info->skDiscountPrice = 0; $info->hjDiscountPrice = 0; $info->save(); util::complete('取消成功'); } //打印花材的标签 ssh 20220602 public function actionPrint() { $get = Yii::$app->request->get(); $id = $get['id'] ?? 0; $num = $get['num'] ?? 1; $num = floatval($num); $num = (int)$num; $type = $get['type'] ?? 0; $info = ProductClass::getById($id, true); if (empty($info)) { util::fail('没有找到花材'); } $name = $info->name ?? ''; $ptItemId = $info->itemId ?? 0; $mainId = $info->mainId ?? 0; $ext = $this->shopExt; $printLabelSn = $ext->printLabelSn ?? ''; if (empty($printLabelSn)) { util::fail('请设置标签打印机'); } $p = new printUtil($printLabelSn); $unit = $info->ratio . $info->smallUnit . '/' . $info->bigUnit; if (isset($info->ratioType) && $info->ratioType == 1) { $unit = '若干' . $info->smallUnit . '/' . $info->bigUnit; } $p->times = $num; if (stringUtil::getWordNum($name) > 8) { $content = '' . $name . ''; } else { $content = '' . $name . ''; } if ($type == 0) { //打标签 $content .= '' . $ptItemId . ''; if (in_array($mainId, [52, 1459])) { $content .= '惠雅鲜花'; } elseif ($mainId == 16948) { $content .= '淘花里鲜花'; } else { $content .= '' . $unit . ''; } } else { if (getenv('YII_ENV') == 'production') { $printPrice = [4556]; } else { $printPrice = [644]; } if (in_array($this->mainId, $printPrice)) { //打价格 $price = $info->skPrice ?? 0; $price = floatval($price); $content .= '' . $price . ''; } else { //打价码 $content .= '' . Yii::$app->params['mallHost'] . "/item/show-info?id=" . $id . ''; $content .= '扫码看价格'; } } $p->printLabelMsg($content); util::complete(); } //取出今天有入库的花材 ssh 20221024 public function actionStockIn() { $py = Yii::$app->request->get('py', ''); $version = Yii::$app->request->get('version', 0); if ($version == 0) { util::fail('请先升级版本到1.0.70以上'); } $classInfo = ItemClassClass::getGhsItemClassAll($this->mainId); $mainId = $this->mainId ?? 0; $where['mainId'] = $mainId; if ($py) { $pyName = strtolower($py); $where['py'] = $pyName; } $arr = StockInDayClass::getAllByCondition(['mainId' => $mainId], null, '*'); if (empty($arr)) { util::fail('没有花材需要盘点'); } $ids = array_column($arr, 'itemId'); $ids = array_unique($ids); $where['id'] = ['in', $ids]; $level = 1; $field = 'id,py,cover,name,ratio,cost,addPrice,classId,skMore,skPrice,itemId,smallUnit,smallRatio,presellDate,bigUnit,smallUnit,ratioType,variety,price,stock,stockWarning,discountPrice,presell,presellDate'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::groupProductInfo($itemInfoData, $level); $data = ProductService::assembleData($classInfo, $itemInfoData, true); util::success($data); } //按分类列出所有花材 public function actionShow() { $py = Yii::$app->request->get('py', ''); $name = Yii::$app->request->get('name', ''); $requestType = Yii::$app->request->get('requestType', 'common'); //默认显示上架商品 $status = Yii::$app->request->get('status', 1); //默认显示未删除商品 $delStatus = Yii::$app->request->get('delStatus', 0); $classId = Yii::$app->request->get('classId', 0); //获取所有当前供货商的分类 (全部、常用) //根据分类组装分类下的花材信息 //中央ID $classInfo = ItemClassClass::getGhsItemClassAll($this->mainId); $where['mainId'] = $this->mainId; if ($py) { $pyName = strtolower($py); $where['py'] = $pyName; } //改价和全部有库存花材列表 if ($requestType == 'changePrice' || $requestType == 'hasStockList') { $where['stock>'] = 0; } if (!empty($status)) { $where['status'] = $status; if ($requestType == 'itemList') { unset($where['status']); } } if ($requestType == 'book') { unset($where['status']); } $where['delStatus'] = $delStatus; if (!empty($classId)) { $where['classId'] = $classId; } if (!empty($name)) { if (stringUtil::isLetter($name)) { $name = strtolower($name); $where['py'] = ['like', $name]; } else { $where['name'] = ['like', $name]; } } //客户等级 $customId = Yii::$app->request->get('customId', 0); $level = 1; if (!empty($customId)) { $custom = CustomClass::getById($customId, true); $level = $custom->level ?? 1; } $itemInfoData = []; if ($requestType == 'hasStockList') { //有库存的花材列表 $field = 'id,py,cover,name,classId,itemId,price,skPrice,hjPrice,stock,onStock,cost,addPrice,hjAddPrice,skMore'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); if (!empty($itemInfoData)) { foreach ($itemInfoData as $key => $val) { //以下参数主要是网页批量改价要用到 $shortCover = $val['cover'] ?? ''; $itemInfoData[$key]['cover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_100,w_100"; $itemInfoData[$key]['shortCover'] = $shortCover; } } } elseif ($requestType == 'changePrice') { $field = 'id,py,cover,name,cost,itemId,classId,addPrice,skPrice,hjPrice,discountPrice,hjDiscountPrice,skDiscountPrice,skMore,hjAddPrice,addPrice,variety,price,hjPrice,stock,onStock,presell,frontHide,reachNum,reachNumDiscount'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::changePriceGroup($itemInfoData, $level); } elseif ($requestType == 'changeStock') { //修改库存列表 $field = 'id,py,cover,name,cost,itemId,status,classId,addPrice,skPrice,discountPrice,skMore,variety,price,stock,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::changeStockGroup($itemInfoData, $level); } elseif ($requestType == 'kd') { //开单的花材列表 $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,hjDiscountPrice,skDiscountPrice,discountPrice,stock,weight,stockWarning,presell,ratioType,smallUnit,smallRatio,bigUnit,ratio,frontHide,reachNum,reachNumDiscount'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::kdItemGroup($itemInfoData, $level); } elseif ($requestType == 'book') { //预订花材列表 $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,hjDiscountPrice,skDiscountPrice,discountPrice,stock,weight,stockWarning,presell,ratioType,smallUnit,smallRatio,bigUnit,ratio,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::bookItemGroup($itemInfoData, $level); } elseif ($requestType == 'itemList') { //花材列表 $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,discountPrice,hjDiscountPrice,skDiscountPrice,stock,onStock,actualSold,status,ratio,ratioType,presell,frontHide,auth,reachNum,reachNumDiscount,addPrice,hjAddPrice,skMore'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::itemListGroup($itemInfoData, $level); } elseif ($requestType == 'cgStaffList') { unset($where['status']); $where['delStatus'] = 0; $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,hjPrice,discountPrice,hjDiscountPrice,skDiscountPrice,stock,onStock,actualSold,status,ratio,ratioType,presell,frontHide,auth,reachNum,reachNumDiscount,cgStaffId,cgStaffName'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::cgStaffListGroup($itemInfoData, $level); } elseif ($requestType == 'outList') { //下架花材列表 $where['status'] = 2; $where['delStatus'] = 0; $where['removeStatus'] = 0; $field = 'id,py,cover,name,cost,itemId,classId,addPrice,skPrice,bigUnit,smallUnit,ratio,ratioType,discountPrice,skMore,variety,price,stock,presell,status'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::simpleGroup($itemInfoData, $level); } elseif ($requestType == 'stopList') { //停用花材列表 unset($where['status']); $where['delStatus'] = 1; $where['removeStatus'] = 0; $field = 'id,py,cover,name,cost,itemId,classId,addPrice,skPrice,bigUnit,smallUnit,ratio,ratioType,discountPrice,skMore,variety,price,stock,presell,status,delStatus'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::simpleGroup($itemInfoData, $level); } elseif ($requestType == 'removeList') { //删除花材列表 unset($where['status']); $where['delStatus'] = 1; $where['removeStatus'] = 1; $field = 'id,py,cover,name,cost,itemId,classId,addPrice,skPrice,bigUnit,smallUnit,ratio,ratioType,discountPrice,skMore,variety,price,stock,presell,status'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::simpleGroup($itemInfoData, $level); } elseif ($requestType == 'check') { $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,stockWarning,presell,ratioType,smallUnit,bigUnit,ratio,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::checkItemGroup($itemInfoData, $level); } elseif ($requestType == 'break') { $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,stockWarning,presell,ratioType,smallUnit,bigUnit,ratio,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::breakItemGroup($itemInfoData, $level); } elseif ($requestType == 'part') { //拆散花材 $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,stockWarning,presell,ratioType,smallUnit,bigUnit,ratio'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::partItemGroup($itemInfoData, $level); } elseif ($requestType == 'stockOut') { $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,stockWarning,presell,ratioType,smallUnit,bigUnit,ratio,smallRatio,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::stockOutGroup($itemInfoData, $level); } elseif ($requestType == 'cg') { $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,presell,ratioType,smallUnit,bigUnit,ratio,weight,frontHide'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::cgItemGroup($itemInfoData, $level); } elseif ($requestType == 'warning') { $field = 'id,py,cover,name,cost,itemId,classId,skPrice,variety,price,discountPrice,stock,onStock,actualSold,presell,bigUnit,stockWarning,status,frontHide'; $itemInfoData = Product::find()->where("mainId={$this->mainId}") ->andWhere('`stock`+`onStock`<`stockWarning`') ->andWhere("delStatus=0") ->select($field)->asArray()->all(); $itemInfoData = ProductClass::warningGroup($itemInfoData, $level); } else { util::fail('没有数据'); } $data = ProductService::assembleItemData($classInfo, $itemInfoData); util::success($data); } //取出今天有入库的花材 ssh 20221224 public function actionGetStockIn() { $py = Yii::$app->request->get('py', ''); $version = Yii::$app->request->get('version', 0); if ($version == 0) { util::fail('请先升级版本到1.0.70以上'); } $classInfo = ItemClassClass::getGhsItemClassAll($this->mainId); $mainId = $this->mainId ?? 0; $where['mainId'] = $mainId; if ($py) { $pyName = strtolower($py); $where['py'] = $pyName; } $arr = StockInDayClass::getAllByCondition(['mainId' => $mainId], null, '*'); if (empty($arr)) { util::fail('没有花材需要盘点'); } $ids = array_column($arr, 'itemId'); $ids = array_unique($ids); $where['id'] = ['in', $ids]; $level = 1; $field = 'id,py,cover,name,itemId,classId,variety,price,discountPrice,stock,stockWarning,presell,ratioType,smallUnit,bigUnit,ratio'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); $itemInfoData = ProductClass::checkItemGroup($itemInfoData, $level); $data = ProductService::assembleItemData($classInfo, $itemInfoData); util::success($data); } //按分类列出所有花材 public function actionIndex() { $py = Yii::$app->request->get('py', ''); $requestType = Yii::$app->request->get('requestType', 'common'); //默认显示上架商品 $status = Yii::$app->request->get('status', 1); //默认显示未删除商品 $delStatus = Yii::$app->request->get('delStatus', 0); $warning = Yii::$app->request->get('warning', 0); //获取所有当前供货商的分类 (全部、常用) //根据分类组装分类下的花材信息 //中央ID $classInfo = ItemClassClass::getGhsItemClassAll($this->mainId); $where['mainId'] = $this->mainId; if ($py) { $pyName = strtolower($py); $where['py'] = $pyName; } if ($requestType == 'hasStock') { //改价只显示库存大于0的 $where['stock>'] = 0; } if (!empty($status)) { $where['status'] = $status; } $where['delStatus'] = $delStatus; //客户等级 $customId = Yii::$app->request->get('customId', 0); $level = 1; if (!empty($customId)) { $custom = CustomClass::getById($customId, true); $level = $custom->level ?? 1; } if ($warning == 1) { //库存预警 $field = 'id,py,cover,name,ratio,cost,addPrice,classId,skMore,skPrice,itemId,smallUnit,smallRatio,presellDate,bigUnit,smallUnit,ratioType,variety,price,stock,stockWarning,discountPrice,presell'; $itemInfoData = Product::find()->where("mainId={$this->mainId}") ->andWhere('`stock`<`stockWarning`') ->andWhere("delStatus=0") ->select($field)->asArray()->all(); } else { $field = 'id,py,cover,name,ratio,cost,addPrice,classId,skMore,skPrice,itemId,smallUnit,smallRatio,presellDate,bigUnit,smallUnit,ratioType,variety,price,stock,stockWarning,discountPrice,presell'; $itemInfoData = ProductClass::getAllByCondition($where, ['inTurn' => SORT_DESC, 'actualSold' => SORT_DESC], $field); } $itemInfoData = ProductClass::groupProductInfo($itemInfoData, $level); $data = ProductService::assembleData($classInfo, $itemInfoData, true); util::success($data); } //所有花材分页和不分页 public function actionList() { $get = Yii::$app->request->get(); $where = []; $classId = Yii::$app->request->get('classId', 0); if (!empty($classId)) { $where['classId'] = $classId; } $name = Yii::$app->request->get('name', ''); if (empty($name)) { $py = Yii::$app->request->get('py', ''); $name = !empty($py) ? $py : ''; } if (!empty($name)) { if (stringUtil::isLetter($name)) { $where['py'] = ['like', $name]; } else { $where['name'] = ['like', $name]; } } $status = Yii::$app->request->get('status', 0); if (!empty($status)) { $where['status'] = $status; } $delStatus = Yii::$app->request->get('delStatus', 0); if ($delStatus != 2) { $where['delStatus'] = $delStatus; } $where['mainId'] = $this->mainId; $productIds = Yii::$app->request->get('ids', ''); if (!empty($productIds)) { $productIdArr = explode(',', $productIds); if (!empty($productIdArr)) { $where['id'] = ['in', $productIdArr]; } } //输出标准会员价,即批发价,默认显示的是批发价 $level = 1; $type = Yii::$app->request->get('type', ''); $showPage = Yii::$app->request->get('showPage', 0); if ($showPage) { if ($type == 'waring') { $pro = Product::find()->where("mainId={$this->mainId}")->andWhere('`stock`<`stockWarning`')->select('id')->asArray()->all(); $lackIds = array_column($pro, 'id'); if (empty($lackIds)) { util::success([]); } $lackIds = array_filter(array_unique($lackIds)); $where['id'] = ['in', $lackIds]; $respond = ProductClass::getList("*", $where, "actualSold desc"); } else { $hasStock = $get['hasStock'] ?? -1; if ($hasStock == 0) { $where['stock'] = 0; } if ($hasStock == 1) { $where['stock>'] = 0; } $cgStaffId = $get['cgStaffId'] ?? 0; if (!empty($cgStaffId)) { $where['cgStaffId'] = $cgStaffId; } $respond = ProductClass::getList("*", $where, "inTurn desc"); } $respond['list'] = ProductClass::groupProductInfo($respond['list'], $level); $respond['list'] = ProductClass::groupClassName($this->mainId, $respond['list']); util::success($respond); } else { if ($type == 'waring') { //库存预警 按库存从小到大排序 $data = ProductClass::getAllByCondition($where, ['stock' => SORT_ASC, 'inTurn' => SORT_DESC], "*"); } else { if (!empty($productIds)) { //优先按 $productIds 排序 "FIELD(`id`,4,5,6)"=>true $data = ProductClass::getAllByCondition($where, ["FIELD(`id`,$productIds)" => true, 'inTurn' => SORT_DESC], "*"); } else { $data = ProductClass::getAllByCondition($where, ['actualSold' => SORT_DESC, 'inTurn' => SORT_DESC], "*"); } } $data = ProductClass::groupProductInfo($data, $level); $data = ProductClass::groupClassName($this->mainId, $data); if ($type == 'waring') { //库存预警 $newData = []; foreach ($data as $v) { if ($v['stock'] <= $v['stockWarning']) { $newData[] = $v; } } util::success(['list' => $newData]); } util::success(['list' => $data]); } } //所有花材 public function actionAll() { $where = []; $where['mainId'] = $this->mainId; $classId = Yii::$app->request->get('classId', 0); if (!empty($classId)) { $where['classId'] = $classId; } $status = Yii::$app->request->get('status', 0); if (!empty($status)) { $where['status'] = $status; } $delStatus = Yii::$app->request->get('delStatus', 0); if ($delStatus != 2) { $where['delStatus'] = $delStatus; } //输出标准会员价,即批发价,默认显示的是批发价 $level = 1; $data = ProductClass::getAllByCondition($where, ['actualSold' => SORT_DESC, 'inTurn' => SORT_DESC], "*"); $data = ProductClass::groupProductInfo($data, $level); util::success(['list' => $data]); } //批量改价 public function actionBatchChangePrice() { $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { //除了小蔡鲜花的蔡总、郑总、苏南3007,其他人直营分店不能改价格,多处要同步修改,关键词 direct_price_change if (!in_array($this->adminId, [35725, 23659, 29264])) { util::fail('直营店不能改价'); } } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('超管才能修改'); } $shop = $this->shop; $default = $shop->default ?? 0; $adminId = $this->adminId ?? 0; //normal常规改价,cg采购改价 $changeType = Yii::$app->request->post('changeType', 'normal'); $targetId = Yii::$app->request->post('targetId', 0); $changeParams = ['staffId' => $shopAdmin->id, 'staffName' => $shopAdmin->name, 'changeType' => $changeType, 'targetId' => $targetId]; $post = Yii::$app->request->post(); $data = $post['data'] ?? ''; if (empty($data)) { util::fail('没有修改'); } $arr = json_decode($data, true); if (empty($arr)) { util::fail('没有修改哦'); } $appVersion = $post['appVersion'] ?? 0; if ($appVersion != 1) { util::fail('请先升级应用'); } //解决重复请求问题 $cacheKey = 'batch_change_price_' . $targetId; $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]); if (!empty($has)) { util::fail('请5秒后操作'); } Yii::$app->redis->executeCommand('SETEX', [$cacheKey, 5, 'has']); $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $needNotice = false; $cg = PurchaseOrderClass::getLockById($targetId); if (!empty($cg)) { if (isset($cg->mainId) == false || $cg->mainId != $this->mainId) { util::fail('不是您的采购单'); } //批量改价同时入库 if ($cg->status == PurchaseOrderClass::PURCHASE_ORDER_STATUS_SENDING) { $staff = $this->shopAdmin; $data = []; $data['staffId'] = $staff->id ?? 0; $data['staffName'] = $staff->name ?? ''; $data['adminId'] = $this->adminId ?? 0; $data['shop'] = $this->shop; PurchaseOrderClass::putIn($cg, $data); $needNotice = true; } } $ids = array_column($arr, 'id'); $ids = array_unique(array_filter($ids)); if (empty($ids)) { util::fail('请选择花材'); } $sjId = $shop->sjId ?? 0; $chainShopList = []; if ($default == 1) { $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId, 'join' => 0], null, '*', null, true); } $productList = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', 'id', true); foreach ($arr as $product) { $productId = $product['id']; $productInfo = $productList[$productId] ?? []; if (empty($productInfo)) { util::fail('没有找到花材'); } $productName = $productInfo->name ?? ''; if (isset($product['id']) == false) { util::fail('没有花材'); } if (isset($product['price']) == false || is_numeric($product['price']) == false || $product['price'] < 0) { util::fail('请填写' . $productName . '的批发价'); } $price = $product['price']; if (isset($product['skPrice']) == false || is_numeric($product['skPrice']) == false || $product['skPrice'] < 0) { util::fail('请填写' . $productName . '的零售价'); } $skPrice = $product['skPrice']; if (isset($product['hjPrice']) == false || is_numeric($product['hjPrice']) == false || $product['hjPrice'] < 0) { util::fail('请填写' . $productName . '的会员价'); } $hjPrice = $product['hjPrice'] ?? 0; if (isset($productInfo->mainId) == false || $productInfo->mainId != $this->mainId) { util::fail('无法访问'); } if ($hjPrice > $price) { util::fail($productName . ' 批发价要大于会员价'); } if ($price > $skPrice) { util::fail($productName . ' 零售价要大于批发价'); } $ptItemId = $productInfo->itemId; ProductClass::changeSinglePrice($shop, $ptItemId, $price, $skPrice, $hjPrice, $changeParams); //在首店修改需要同步到所有直营店 if ($default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { foreach ($chainShopList as $chain) { if ($chain->id == $shop->id) { continue; } $chainMainId = $chain->mainId ?? 0; $staff = ShopAdminClass::getByCondition(['mainId' => $chainMainId, 'adminId' => $adminId], true); $staffId = $staff->id ?? 0; $staffName = $staff->name ?? ''; $changeParams2 = ['staffId' => $staffId, 'staffName' => $staffName, 'changeType' => $changeType, 'targetId' => $targetId]; ProductClass::changeSinglePrice($chain, $ptItemId, $price, $skPrice, $hjPrice, $changeParams2); } } } $mainId = $shop->mainId ?? 0; if (!empty($mainId)) { //提醒零售收银台界面要刷新,多处要修改,关键词 modify_price_remind_cashier $staffList = ShopAdminClass::getAllByCondition(['mainId' => $mainId], null, '*', null, true); if (!empty($staffList)) { foreach ($staffList as $staff) { $staffId = $staff->id ?? 0; Yii::$app->redis->executeCommand('SET', ['cashier_' . $mainId . '_' . $staffId . '_may_refresh', 'yes']); Yii::$app->redis->executeCommand('SET', ['ghs_cashier_' . $mainId . '_' . $staffId . '_may_refresh', 'yes']); } } } $transaction->commit(); //入库成功通知相关人员,关键词 put_in_notice if ($needNotice) { // $cg = PurchaseOrderClass::getLockById($targetId); // WxMessageClass::ghsCgEntryInform($shop, $cg); } util::complete('操作成功'); } catch (\Exception $e) { $transaction->rollBack(); $msg = $e->getMessage(); Yii::info("修改失败原因:" . $msg); noticeUtil::push("修改价格出现失败情况,原因:" . $msg, '15280215347'); util::fail('修改失败'); } } //多个花材同时改成一个价 ssh 20231003 public function actionManyItemChangeOnePrice() { $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('当前直营分店,只能回总店修改价格'); } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('超管才能修改'); } $post = Yii::$app->request->post(); $idsList = $post['ids'] ?? ''; $ids = json_decode($idsList, true); if (empty($ids)) { util::fail('请选择花材'); } $list = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', null, true); if (empty($list)) { util::fail('请选择花材哦'); } $mainId = $this->mainId; $adminId = $this->adminId ?? 0; $shop = $this->shop; $default = $shop->default ?? 0; $shopAdmin = $this->shopAdmin; $price = $post['price'] ?? 0; if (is_numeric($price) == false) { util::fail('批发价填写错误'); } $skPrice = $post['skPrice'] ?? 0; if (is_numeric($skPrice) == false) { util::fail('散客价填写错误'); } $hjPrice = $post['hjPrice'] ?? 0; if (is_numeric($hjPrice) == false) { util::fail('会员价填写错误'); } if ($hjPrice > $price) { util::fail('会员价不能大于批发价'); } if ($price > $skPrice) { util::fail('批发价不能大于零售价'); } $sjId = $shop->sjId ?? 0; $chainShopList = []; if ($default == 1) { $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId, 'join' => 0], null, '*', null, true); } //normal常规改价,cg采购改价 $changeType = Yii::$app->request->post('changeType', 'normal'); $targetId = 0; $changeParams = ['staffId' => $shopAdmin->id, 'staffName' => $shopAdmin->name, 'changeType' => $changeType, 'targetId' => $targetId]; $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { foreach ($list as $product) { if ($product->mainId != $mainId) { util::fail('修改失败,不是你的花材'); } $ptItemId = $product->itemId; ProductClass::changeSinglePrice($shop, $ptItemId, $price, $skPrice, $hjPrice, $changeParams); //在首店修改需要同步到所有直营店 if ($default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { if (!empty($chainShopList)) { foreach ($chainShopList as $chain) { if ($chain->id == $shop->id) { continue; } $chainMainId = $chain->mainId ?? 0; $staff = ShopAdminClass::getByCondition(['mainId' => $chainMainId, 'adminId' => $adminId], true); $changeParams2 = ['staffId' => $staff->id, 'staffName' => $staff->name, 'changeType' => $changeType, 'targetId' => $targetId]; ProductClass::changeSinglePrice($chain, $ptItemId, $price, $skPrice, $hjPrice, $changeParams2); } } } } if (!empty($mainId)) { //提醒零售收银台界面要刷新,多处要修改,关键词 modify_price_remind_cashier $staffList = ShopAdminClass::getAllByCondition(['mainId' => $mainId], null, '*', null, true); if (!empty($staffList)) { foreach ($staffList as $staff) { $staffId = $staff->id ?? 0; Yii::$app->redis->executeCommand('SET', ['cashier_' . $mainId . '_' . $staffId . '_may_refresh', 'yes']); Yii::$app->redis->executeCommand('SET', ['ghs_cashier_' . $mainId . '_' . $staffId . '_may_refresh', 'yes']); } } } $transaction->commit(); util::complete('修改成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("修改失败原因:" . $e->getMessage()); util::fail('修改失败'); } } //改价 public function actionChangePrice() { $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('超管才能修改'); } $productId = Yii::$app->request->post('productId', 0); $productInfo = ProductClass::getById($productId, true); if (empty($productInfo)) { util::fail("花材不存在"); } if ($productInfo->mainId != $this->mainId) { util::fail('没有权限'); } $price = Yii::$app->request->post('price', ''); if (is_numeric($price) && $price > 0) { ProductClass::changeSinglePrice($productInfo, $price, ProductClass::PRICE_LABEL_CHANGE); } else { $price = bcadd($productInfo->cost, $productInfo->addPrice, 2); ProductClass::changeSinglePrice($productInfo, $price, ProductClass::PRICE_LABEL_AUTO); } util::success(['price' => $price]); } //恢复自动调价 public function actionAutoPrice() { $productId = Yii::$app->request->post('productId', 0); $productData = ProductClass::getById($productId); if (!$productData) { util::fail("花材不存在"); } //2021.04.06改为用product中的成本价+加价 $price = bcadd($productData['cost'], $productData['addPrice'], 2); ProductClass::changeSinglePrice($productId, $this->shopId, $price, ProductClass::PRICE_LABEL_AUTO); util::complete("操作成功"); } //修改加价 public function actionChangeAddPrice() { $productId = Yii::$app->request->post('productId', 0); $addPrice = Yii::$app->request->post('addPrice', ''); if ($addPrice < 0) { util::fail("加价不能小于0"); } $productData = ProductClass::getProductData($productId, $this->mainId); if (!$productData) { util::fail("花材不存在"); } ProductClass::changeAddPrice($productId, $addPrice); util::complete(); } //批量修改更多,包括排序、重量和保质期 ssh 20211211 public function actionBatchChangeMore() { $shop = $this->shop; $default = $shop->default ?? 0; $join = $shop->join ?? 0; if ($default == 0 && $join == 0) { util::fail('当前是直营店,请返回总店修改'); } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('超管才能操作'); } $addData = Yii::$app->request->post('addData', ''); if (empty($addData)) { util::fail('没有花材'); } $itemData = json_decode($addData, true); if (is_array($itemData) == false) { util::fail('没有花材...'); } $ids = array_column($itemData, 'id'); $infoList = ProductClass::getByIds($ids, null, 'id'); if (empty($infoList)) { util::fail('没有花材'); } foreach ($infoList as $info) { if (isset($info['mainId']) == false || $info['mainId'] != $this->mainId) { util::fail('不是你的花材不能修改'); } } //总店修改同步到所有门店 $sjId = $shop->sjId ?? 0; $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($itemData as $key => $data) { $id = $data['id'] ?? 0; unset($data['id']); ProductClass::updateById($id, $data); $ptItemId = $infoList[$id]['itemId'] ?? 0; if (empty($ptItemId)) { continue; } if (isset($shop->default) && $shop->default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { foreach ($chainShopList as $chainShop) { $currentMainId = $chainShop->mainId ?? 0; if ($currentMainId == $shop->mainId) { //前面已经修改过了,不需要重复修改 continue; } ProductClass::updateByCondition(['mainId' => $currentMainId, 'itemId' => $ptItemId], $data); } } } util::complete('修改成功'); } //批量修改加价 ssh 20211211 public function actionBatchChangeAddPrice() { $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('当前直营分店,请切回总店操作'); } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('超管才能操作'); } $post = Yii::$app->request->post(); $addData = $post['addData'] ?? ''; if (empty($addData)) { util::fail('没有花材'); } $itemData = json_decode($addData, true); if (is_array($itemData) == false) { util::fail('没有花材...'); } $ids = array_column($itemData, 'id'); $infoList = ProductClass::getByIds($ids, null, 'id'); if (empty($infoList)) { util::fail('没有花材'); } foreach ($infoList as $info) { if (isset($info['mainId']) == false || $info['mainId'] != $this->mainId) { util::fail('不能修改别人的花材'); } } $appVersion = $post['appVersion'] ?? 0; if ($appVersion != 1) { util::fail('请先升级应用'); } //总店修改同步到所有门店 $sjId = $shop->sjId ?? 0; $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($itemData as $key => $data) { $id = $data['id'] ?? 0; unset($data['id']); ProductClass::updateById($id, $data); $ptItemId = $infoList[$id]['itemId'] ?? 0; if (empty($ptItemId)) { continue; } if (isset($shop->default) && $shop->default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { foreach ($chainShopList as $chainShop) { if (isset($chainShop->join) && $chainShop->join == 1) { continue; } $currentMainId = $chainShop->mainId ?? 0; if ($currentMainId == $shop->mainId) { //前面已经修改过了,不需要重复修改 continue; } ProductClass::updateByCondition(['mainId' => $currentMainId, 'itemId' => $ptItemId], $data); } } } util::complete('修改成功'); } public function actionUpdate() { $shopAdmin = $this->shopAdmin; if (!isset($shopAdmin->super) || $shopAdmin->super != 1) { util::fail('超管才能操作'); } $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { //因为盘点不能将花材盘成0,所以这边放出入口允许创始人在分店修改分店的花材库存 if ($shopAdmin->super != 1) { util::fail('请先开通超管权限'); } } $deadline = $shop->deadline; $deadTime = strtotime($deadline); if (time() > $deadTime) { util::fail('系统已到期,编号1689'); } $post = Yii::$app->request->post(); $discountPrice = $post['discountPrice'] ?? 0; if ($discountPrice > 0) { if (empty($post['hjDiscountPrice'])) { $addPrice = $post['addPrice'] ?? 0; $hjAddPrice = $post['hjAddPrice'] ?? 0; $skMore = $post['skMore'] ?? 0; $diff = bcsub($addPrice, $hjAddPrice, 2); if ($diff > 0 && $discountPrice > $diff) { $hjDiscountPrice = bcsub($discountPrice, $diff, 2); } else { $hjDiscountPrice = $discountPrice; } $diff = bcsub($skMore, $addPrice, 2); if ($diff > 0) { $skDiscountPrice = bcadd($diff, $discountPrice, 2); } else { $skDiscountPrice = $discountPrice; } $post['skDiscountPrice'] = $skDiscountPrice; $post['hjDiscountPrice'] = $hjDiscountPrice; } $reachNum = $post['reachNum'] ?? 0; $reachNumDiscount = $post['reachNumDiscount'] ?? 0; if ($reachNum > 0 && $reachNumDiscount > 0) { util::fail('特价和满减不能同时进行'); } } $post['adminId'] = $this->adminId; $post['staffId'] = $this->shopAdmin->id; $post['staffName'] = $this->shopAdmin->name; // 图片列表数组转换为字符串 if (is_array($post['images'])) { $post['images'] = implode(',', $post['images']); } $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { ProductClass::updateProduct($post, $this->shop); $transaction->commit(); util::complete(); } catch (\Exception $e) { Yii::info("操作失败:" . $e->getMessage()); $transaction->rollBack(); util::fail('操作失败'); } } //上下架状态控制 ssh 20210713 public function actionStatusUpdate() { $post = Yii::$app->request->post(); $shopAdmin = $this->shopAdmin; $roleId = $shopAdmin['roleId'] ?? 0; $role = AdminRoleClass::getById($roleId); $roleName = $role['roleName'] ?? ''; if ($roleName == '员工') { util::fail('无法操作哦'); } $id = $post['id'] ?? 0; $status = $post['status'] ?? 1; $product = ProductClass::getById($id, true); if ($product->mainId != $this->mainId) { util::fail('无法操作'); } $product->status = $status; if ($status == 2) { $product->discountPrice = 0; } $product->save(); util::complete(); } //花材展示状态控制 ssh 20231113 public function actionDelStatusUpdate() { $post = Yii::$app->request->post(); $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('请在首店操作'); } $id = $post['id'] ?? 0; $delStatus = $post['delStatus'] ?? 0; $product = ProductClass::getById($id, true); if ($product->mainId != $this->mainId) { util::fail('不是你的花材哦!!'); } //扫码收款、直接收款和特价商品,不可删除,多处要同步修改 system_item if (getenv('YII_ENV') == 'production') { $systemItem = [78076, 80960, 81004]; } else { $systemItem = [11157, 11156, 11158]; } if (in_array($product->itemId, $systemItem)) { util::fail('系统使用花材,不可删除'); } $product->delStatus = $delStatus; if ($delStatus == 1) { $product->stock = 0; $product->status = 2; } $product->save(); $ptItemId = $product->itemId ?? 0; if (isset($shop->default) && $shop->default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { //总店修改同步到所有门店 $sjId = $shop->sjId ?? 0; $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($chainShopList as $chainShop) { $chainShopId = $chainShop->id ?? 0; if (isset($chainShop->join) && $chainShop->join == 1) { continue; } if ($chainShopId == $shop->id) { continue; } $chainMainId = $chainShop->mainId ?? 0; $chainProduct = ProductClass::getByCondition(['mainId' => $chainMainId, 'itemId' => $ptItemId], true); if (!empty($chainProduct)) { $chainProduct->delStatus = $delStatus; if ($delStatus == 1) { $chainProduct->stock = 0; $chainProduct->status = 2; } $chainProduct->save(); } } } util::complete(); } //详情 shish 20240115 public function actionDetail() { $id = Yii::$app->request->get('id', 0); $source = Yii::$app->request->get('source', ''); $respond = ProductClass::getItemInfo($id); $ptItemId = $respond['itemId'] ?? 0; // 封面图与多花材图片的兼容处理 if ($respond['images'] == '' && $respond['shortCover'] != '') { $respond['images'] = $respond['shortCover']; } $ptItemInfo = PtItemClass::getById($ptItemId); $respond['ptItemInfo'] = $ptItemInfo; //通知提醒抹除 if ($source == 'notify' && $respond['mainId'] == $this->mainId) { $staff = $this->shopAdmin; $staffId = $this->shopAdminId; $notify = NotifyClass::getByCondition(['staffId' => $staffId, 'type' => 1, 'targetId' => $id], true); if (!empty($notify)) { if ($notify->read == 0) { $notify->read = 1; $notify->save(); $notifyNum = $staff->notifyNum; if ($notifyNum > 0) { $notifyNum--; $staff->notifyNum = $notifyNum; $staff->save(); } } } } //重复花材 $repeatList = ProductClass::getAllByCondition(['mainId' => $this->mainId, 'itemId' => $ptItemId, 'delStatus' => 0], null, '*', null, true); $repeatId = 0; if (!empty($repeatList)) { foreach ($repeatList as $repeat) { if ($repeat->id != $id) { $repeatId = $repeat->id; } } } $respond['repeatId'] = $repeatId; $cpItemList = CpItemClass::getAllByCondition(['productId' => $id], null, '*', 'cpId'); $cpInfo = []; if (!empty($cpItemList)) { $cpIds = array_column($cpItemList, 'cpId'); $cpList = CpClass::getByIds($cpIds); if (!empty($cpList)) { foreach ($cpList as $key => $val) { $id = $val['id'] ?? 0; $name = $val['name'] ?? ''; $cpInfo[] = ['cpId' => $id, 'cpName' => $name]; } } } //判断这个花材能否被修改单位比和重量,同步参考ShopController actionMyShop方法,关键词has_right_shop_list //判断当前登录的人,在自己有财务权限的main里面,是否包括了这个花材所属的平台id,在这个平台id下所有花材的main $adminId = $this->adminId; $hasRightRespond = ShopAdminClass::changeWeightRight($adminId, $ptItemId); $respond['hasRightChange'] = $hasRightRespond['hasRightChange']; $respond['hasRightChangeReason'] = $hasRightRespond['reason']; $respond['cpInfo'] = $cpInfo; util::success($respond); } //新增花材 2021.6.21 public function actionAdd() { $post = Yii::$app->request->post(); $discountPrice = $post['discountPrice'] ?? 0; if ($discountPrice > 0) { if (isset($post['hjDiscountPrice']) == false || empty($post['hjDiscountPrice'])) { $addPrice = $post['addPrice'] ?? 0; $hjAddPrice = $post['hjAddPrice'] ?? 0; $skMore = $post['skMore'] ?? 0; $diff = bcsub($addPrice, $hjAddPrice, 2); if ($diff > 0 && $discountPrice > $diff) { $hjDiscountPrice = bcsub($discountPrice, $diff, 2); } else { $hjDiscountPrice = $discountPrice; } $diff = bcsub($skMore, $addPrice, 2); if ($diff > 0) { $skDiscountPrice = bcadd($diff, $discountPrice, 2); } else { $skDiscountPrice = $discountPrice; } $post['skDiscountPrice'] = $skDiscountPrice; $post['hjDiscountPrice'] = $hjDiscountPrice; } } $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('当前直营分店,请切回总店添加花材'); } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('管理员才能添加花材'); } $post['sjId'] = $this->sjId; $post['adminId'] = $this->adminId; $post['mainId'] = $this->mainId; $price = $post['price'] ?? 0; $addPrice = $post['addPrice'] ?? 0; if ($addPrice > $price) { util::fail('加价不能大于售价'); } $weight = isset($post['weight']) && is_numeric($post['weight']) ? $post['weight'] : 0; if ($weight <= 0) { util::fail('请填写重量,最小0.1'); } $post['staffName'] = $shopAdmin->name ?? ''; // 图片列表数组转换为字符串 if (is_array($post['images'])) { $post['images'] = implode(',', $post['images']); } ProductClass::addProduct($post, $this->shop); util::complete('添加成功'); } //获取拼音缩写 ssh 20210707 public function actionPy() { $name = Yii::$app->request->get('name'); $py = stringUtil::py($name); util::success(['py' => $py]); } //(客户端-批发商)复制花材 public function actionClone() { $post = Yii::$app->request->post(); $discountPrice = $post['discountPrice'] ?? 0; if ($discountPrice > 0) { if (isset($post['hjDiscountPrice']) == false || empty($post['hjDiscountPrice'])) { $addPrice = $post['addPrice'] ?? 0; $hjAddPrice = $post['hjAddPrice'] ?? 0; $skMore = $post['skMore'] ?? 0; $diff = bcsub($addPrice, $hjAddPrice, 2); if ($diff > 0 && $discountPrice > $diff) { $hjDiscountPrice = bcsub($discountPrice, $diff, 2); } else { $hjDiscountPrice = $discountPrice; } $diff = bcsub($skMore, $addPrice, 2); if ($diff > 0) { $skDiscountPrice = bcadd($diff, $discountPrice, 2); } else { $skDiscountPrice = $discountPrice; } $post['skDiscountPrice'] = $skDiscountPrice; $post['hjDiscountPrice'] = $hjDiscountPrice; } } $shop = $this->shop; $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('请在首店操作'); } $shopAdmin = $this->shopAdmin; if (isset($shopAdmin->super) == false || $shopAdmin->super != 1) { util::fail('管理员才能添加花材'); } $post['sjId'] = $this->sjId; $post['adminId'] = $this->adminId; $post['mainId'] = $this->mainId; $post['staffName'] = $shopAdmin->name ?? ''; $price = $post['price'] ?? 0; if (empty($price) || $price <= 0) { util::fail('请填写批发价'); } $skPrice = $post['skPrice'] ?? 0; if (empty($skPrice) || $skPrice <= 0) { util::fail('请填写零售价'); } $hjPrice = $post['hjPrice'] ?? 0; if (empty($hjPrice) || $hjPrice <= 0) { util::fail('请填写会员价'); } $addPrice = $post['addPrice'] ?? 0; if ($addPrice > $price) { util::fail('批发价的加价不能大于售价'); } // 图片列表数组转换为字符串 if (is_array($post['images'])) { $post['images'] = implode(',', $post['images']); } //复制标识 $post['copy'] = 1; //去除无用的字段 unset($post['viewNum']); unset($post['actualSold']); unset($post['itemId']); unset($post['id']); unset($post['delStatus']); ProductClass::addProduct($post, $this->shop); util::complete('复制成功'); } //下载价格表 ssh 20210922 public function actionGeneratePriceTable() { $level = Yii::$app->request->get('level', 0); $respond = ProductService::generatePriceTable($this->sjId, $level, $this->mainId); $file = $respond['file'] ?? ''; $shortFile = $respond['shortFile'] ?? ''; $fileUrl = Yii::$app->params['ghsHost'] . $file; util::success(['file' => $fileUrl, 'shortFile' => $shortFile]); } //下载有库存花材,不含虚拟库存 ssh 20241-28 public function actionGenerateStockTable() { $level = Yii::$app->request->get('level', 0); $respond = ProductService::generateStockTable($this->sjId, $level, $this->mainId); $file = $respond['file'] ?? ''; $shortFile = $respond['shortFile'] ?? ''; $fileUrl = Yii::$app->params['ghsHost'] . $file; util::success(['file' => $fileUrl, 'shortFile' => $shortFile]); } public function actionGenerateItemTable() { $level = Yii::$app->request->get('level', 0); $respond = ProductService::generateItemTable($this->sjId, $level, $this->mainId); $file = $respond['file'] ?? ''; $shortFile = $respond['shortFile'] ?? ''; $fileUrl = Yii::$app->params['ghsHost'] . $file; util::success(['file' => $fileUrl, 'shortFile' => $shortFile]); } //下载条形码 lqh 20211227 public function actionGenerateBarcodeTable() { $respond = ProductService::generateBarcodeTable($this->sjId, $this->shopId, $this->mainId); $file = $respond['file'] ?? ''; $shortFile = $respond['shortFile'] ?? ''; $fileUrl = Yii::$app->params['ghsHost'] . $file; util::success(['file' => $fileUrl, 'shortFile' => $shortFile]); } //批量修改花材的分类 ssh 20230405 public function actionBatchModifyClass() { $post = Yii::$app->request->post(); $shop = $this->shop; $sjName = $shop->merchantName ?? ''; $shopName = $shop->shopName ?? ''; $sjShopName = $shop->shopName == '首店' ? $sjName : $sjName . ' ' . $shopName; //noticeUtil::push($sjShopName . ' 批量移动花材分类', '15280215347'); $join = $shop->join ?? 0; $default = $shop->default ?? 0; if ($join == 0 && $default == 0) { util::fail('当前直营分店,请切回总店操作'); } $classId = $post['classId'] ?? 0; $class = ItemClassClass::getById($classId, true); if (empty($class) || $class->mainId != $this->mainId) { util::fail('请选择您自己的分类'); } $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $className = $class->name ?? ''; $idsList = $post['ids'] ?? ''; $ids = json_decode($idsList, true); if (empty($ids)) { util::fail('请选择花材'); } $list = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', null, true); if (empty($list)) { util::fail('请选择花材'); } $ptItemList = []; foreach ($list as $item) { $name = $item->name ?? ''; if ($item->mainId != $this->mainId) { util::fail($name . '不是您的花材'); } $item->classId = $classId; $item->save(); $ptItemId = $item->itemId ?? 0; $ptItemList[] = $ptItemId; //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync $itemClassKey = 'item_class_modify_sync'; Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $item->id]); } $shop = $this->shop; if (isset($shop->default) && $shop->default == 1 && isset($shop->dataSync) && $shop->dataSync == 1) { //总店修改同步到所有门店 $sjId = $shop->sjId ?? 0; $chainShopList = ShopClass::getAllByCondition(['sjId' => $sjId], null, '*', null, true); foreach ($chainShopList as $chainShop) { $chainShopId = $chainShop->id ?? 0; if ($chainShopId == $shop->id) { continue; } $chainManId = $chainShop->mainId ?? 0; $chainAllClassList = ItemClassClass::getAllByCondition(['mainId' => $chainManId], null, '*', null, true); if (!empty($chainAllClassList)) { foreach ($chainAllClassList as $chainClass) { $chainName = $chainClass->name ?? ''; $chainClassId = $chainClass->id ?? 0; if ($chainName == $className) { $chainProductList = Productclass::getAllByCondition(['mainId' => $chainManId, 'itemId' => ['in', $ptItemList]], null, '*', null, true); if (!empty($chainProductList)) { foreach ($chainProductList as $currentProduct) { $currentProduct->classId = $chainClassId; $currentProduct->save(); //如果有修改分类,则在多个订单表中同步修改,如需修改,多个地方要同步修改,请搜索关键词item_class_modify_sync $itemClassKey = 'item_class_modify_sync'; Yii::$app->redis->executeCommand('LPUSH', [$itemClassKey, $currentProduct->id]); } } } } } } } $transaction->commit(); util::complete('修改成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("修改失败原因:" . $e->getMessage()); util::fail('修改失败'); } } //批量修改采购人 ssh 20240609 public function actionBatchModifyCgStaff() { $post = Yii::$app->request->post(); $staffId = $post['staffId'] ?? 0; $staff = ShopAdminClass::getById($staffId, true); if (empty($staff)) { util::fail('没有找到这个员工'); } if ($staff->mainId != $this->mainId) { util::fail('不是你的员工'); } $staffName = $staff->name ?? ''; $connection = Yii::$app->db; $transaction = $connection->beginTransaction(); try { $idsList = $post['ids'] ?? ''; $ids = json_decode($idsList, true); if (empty($ids)) { util::fail('请选择花材'); } $list = ProductClass::getAllByCondition(['id' => ['in', $ids]], null, '*', null, true); if (empty($list)) { util::fail('请选择花材'); } $shop = $this->shop; $bookSn = $shop->bookSn ?? 0; foreach ($list as $item) { $name = $item->name ?? ''; if ($item->mainId != $this->mainId) { util::fail($name . '不是您的花材'); } $item->cgStaffId = $staffId; $item->cgStaffName = $staffName; $item->save(); $itemId = $item->id ?? 0; if (!empty($bookSn)) { //预订管理的花材需要变化 BookItemClass::updateByCondition(['bookSn' => $bookSn, 'itemId' => $itemId], ['cgStaffId' => $staffId, 'cgStaffName' => $staffName]); } } $transaction->commit(); util::complete('修改成功'); } catch (\Exception $e) { $transaction->rollBack(); Yii::info("修改失败原因:" . $e->getMessage()); util::fail('修改失败'); } } //修改属于成本还是收入选项 ssh 20240514 public function actionChangeBelongCost() { $get = Yii::$app->request->get(); $id = $get['id'] ?? 0; $belongCost = $get['belongCost'] ?? 0; $info = ProductClass::getById($id, true); if (empty($info)) { util::fail('没有找到花材'); } if ($info->mainId != $this->mainId) { util::fail('不是你的花材哦'); } $info->belongCost = $belongCost; $info->save(); //队列方式去处理 $redisKey = 'change_belong_cost_item_list'; $value = $id . '_' . $belongCost; Yii::$app->redis->executeCommand('LPUSH', [$redisKey, $value]); util::complete('修改成功'); } }