| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- <?php
- /**
- * Created by PhpStorm.
- * User: wniu
- * Date: 2022/2/28
- * Time: 5:46 下午
- */
- namespace addons\CloudStock\backend\controllers;
- use addons\CloudStock\common\models\CloudStockAgent;
- use addons\CloudStock\common\models\CloudStockAgentGoods;
- use addons\CloudStock\common\models\CloudStockFillOrder;
- use addons\CloudStock\common\models\CloudStockGoods;
- use addons\CloudStock\common\models\CloudStockImportStockFailLog;
- use addons\CloudStock\common\models\CloudStockImportStockLog;
- use common\enums\StatusEnum;
- use common\models\goods\Goods;
- use common\components\CsvExport;
- use Yii;
- class AgentGoodsController extends BaseController
- {
- public $enableCsrfValidation = false;
- public function actionIndexBak()
- {
- if (\Yii::$app->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);
- }
- }
- }
|