request->isAjax) { $get = Yii::$app->request->get(); $stock_agent = CloudStockAgent::getOne([['user_id' => $get['user_id']]]); if (!$stock_agent) { return $this->error('没有该代理商'); } $wheres[] = ['mall_id' => $this->mall_id, 'user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED]; $params = [ 'select' => 'id,mall_id,user_id,goods_id,num as agent_stock,created_at', 'where' => $wheres, 'order' => 'created_at desc', 'page' => $get['page'] ?? 1, 'limit' => $get['limit'] ?? $this->pageSize, ]; $list = CloudStockAgentGoods::listPage($params); if (empty($list['list'])) { if (!is_array($list['list'])) return $this->error(CloudStockAgentGoods::getStaticError()); return $this->success('success', $list); } $good_ids = array_column($list['list'], 'goods_id'); $cloud_stock_goods = CloudStockGoods::find() ->select('goods_id,agent_price') ->where(['mall_id' => $this->mall_id, 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids]) ->asArray() ->indexBy('goods_id') ->all(); $mall_goods = Goods::find() ->select('id,goods_name,price,cover_pic') ->where(['mall_id' => $this->mall_id,'id' => $good_ids]) ->asArray() ->indexBy('id') ->all(); $agent_goods = CloudStockAgentGoods::find() ->select('goods_id,num') ->where(['user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids]) ->asArray() ->indexBy('goods_id') ->all(); foreach ($list['list'] as $lk => &$lv) { $could_goods = $cloud_stock_goods[$lv['goods_id']] ?? []; if (empty($could_goods)) { unset($list['list'][$lk]); continue; } // dd($lv, $could_goods, $stock_agent->level); $lv['agent_goods_num'] = $agent_goods[$lv['goods_id']] ? $agent_goods[$lv['goods_id']]['num'] : 0; $lv['level_agent_price'] = CloudStockAgentGoods::getGoodsAgentPrice($could_goods, $stock_agent->level); $mall_good = $mall_goods[$lv['goods_id']] ?? []; $price = $mall_good['price'] ?? 0; $lv['goods_name'] = $mall_good['goods_name'] ?? ''; $lv['cover_pic'] = $mall_good['cover_pic'] ?? ''; // 平台价格,零售价 $lv['goods_price'] = $price; $lv['profit'] = $price - $lv['level_agent_price']; } $list['list'] = array_values($list['list']); return $this->success('success', $list); } return $this->render('index'); } public function actionIndex() { if (\Yii::$app->request->isAjax) { $page = \Yii::$app->request->get('page', 1); $limit = \Yii::$app->request->get('limit', $this->pageSize); $get = Yii::$app->request->get(); $stock_agent = CloudStockAgent::getOne([['user_id' => $get['user_id']],['status'=>StatusEnum::ENABLED]]); if (!$stock_agent) { return $this->error('没有该代理商'); } $wheres[] = ['mall_id' => $this->mall_id]; $wheres[] = ['status' => StatusEnum::ENABLED]; $params = [ 'select' => 'mall_id,goods_id,agent_price', 'where' => $wheres, 'order' => 'created_at desc', 'page' => $page, 'limit' => $limit, ]; $cloud_stock_goods = CloudStockGoods::listPage($params); if (false === $cloud_stock_goods) { return $this->error(CloudStockGoods::getStaticError()); } if (empty($cloud_stock_goods['list'])) { return $this->success('success', $cloud_stock_goods); } $good_ids = array_column($cloud_stock_goods['list'], 'goods_id'); $mall_goods = Goods::find() ->select('id,goods_name,price,cover_pic') ->where(['mall_id' => $this->mall_id,'id' => $good_ids]) ->asArray() ->indexBy('id') ->all(); $agent_goods = CloudStockAgentGoods::find() ->select('goods_id,num,created_at') ->where(['user_id' => $get['user_id'], 'status' => StatusEnum::ENABLED, 'goods_id' => $good_ids]) ->asArray() ->indexBy('goods_id') ->all(); foreach ($cloud_stock_goods['list'] as $lk => &$lv) { $mall_good = $mall_goods[$lv['goods_id']] ?? []; $agent_good = $agent_goods[$lv['goods_id']] ?? []; $lv['user_id'] = $get['user_id']; $lv['level_agent_price'] = CloudStockAgentGoods::getGoodsAgentPrice($lv, $stock_agent->level); $price = $mall_good['price'] ?? 0; $lv['goods_name'] = $mall_good['goods_name'] ?? ''; $lv['cover_pic'] = $mall_good['cover_pic'] ?? ''; // 平台价格,零售价 $lv['goods_price'] = $price; $lv['profit'] = bcsub($price, $lv['level_agent_price'], 2); if (!empty($agent_good)) { $lv['agent_goods_num'] = $agent_good['num'] ?? 0; $lv['created_at'] = $agent_good['created_at'] ?? 0; } else { $lv['agent_goods_num'] = 0; $lv['created_at'] = 0; } } return $this->success('success', $cloud_stock_goods); } return $this->render('index'); } /** * 导入日志记录 * @return mixed|void */ public function actionGetImportStockLog() { $params = \Yii::$app->request->get(); $params['where'] = [ ['mall_id'=>$this->mall_id] ]; $params['order'] = 'id desc'; $data = CloudStockImportStockLog::listPage($params, false, true); if (!empty($data['list'])) { foreach ($data['list'] as &$v) { $v['url'] = ''; if ($v['fail_counts']) $v['url'] = \Yii::$app->urlManager->createUrl(['cloud-stock/agent-goods/export-stock-fail', 'log_id' => $v['id']]); } } return $this->success('操作成功', $data); } /** * 导出失败日志 */ public function actionExportStockFail() { CloudStockImportStockFailLog::exportFailLog(\Yii::$app->request->get()); } /** * 批量导入模板下载 */ public function actionImportStockModel() { $csv = new CsvExport(); $file_name = '批量导入代理库存模板-' . date('YmdHis', time()); $head_list = array_column(CloudStockAgentGoods::$head_list, 'field_name'); return $csv->export([], $head_list, $file_name); } /** * 批量导入等级 * @return mixed|string|void */ public function actionImportStock() { set_time_limit(0); if (\Yii::$app->request->isAjax) { $params = \Yii::$app->request->post(); $res = Yii::$app->services->validate->validate($params, [ [['current_num'], 'required'], [['file'], 'file', 'extensions' => ['csv']], [['file_path'], 'string'], [['sync'], 'safe'], ]); if ($res === false) return $this->error(Yii::$app->services->validate->getErrorMessage()); $params['mall_id'] = $this->mall_id; if(!empty($params['sync'])){ $res = CloudStockAgentGoods::importStockSync($params); }else{ $res = CloudStockAgentGoods::importStock($params); } if (empty($res['fail_counts'])) return $this->success('操作成功', $res); if (!empty($res['fail_counts'])) return $this->error('导入失败'.$res['fail_counts'].'条'); return $this->error(CloudStockAgentGoods::getStaticError()); } else { return $this->render($this->action->id); } } }