diff --git a/app/admin/controller/WorkbenchController.php b/app/admin/controller/WorkbenchController.php index 49d431c85..5449b6dfd 100644 --- a/app/admin/controller/WorkbenchController.php +++ b/app/admin/controller/WorkbenchController.php @@ -826,7 +826,7 @@ class WorkbenchController extends BaseAdminController } //-------------------------------交易统计---------------------------------------// //当日订单金额 - public function top__trade() + public function top_trade() { $data = [ "left" => [ diff --git a/app/admin/controller/store_branch_product/StoreBranchProductController.php b/app/admin/controller/store_branch_product/StoreBranchProductController.php index 9c586c698..eec659f37 100644 --- a/app/admin/controller/store_branch_product/StoreBranchProductController.php +++ b/app/admin/controller/store_branch_product/StoreBranchProductController.php @@ -4,7 +4,7 @@ namespace app\admin\controller\store_branch_product; use app\admin\controller\BaseAdminController; -use app\admin\lists\store_product\StoreProductLists; +use app\admin\lists\store_branch_product\StoreBranchProductLists; use app\admin\logic\store_product\StoreProductLogic; use app\admin\validate\store_product\StoreProductValidate; use app\common\model\store_branch_product\StoreBranchProduct; @@ -26,7 +26,7 @@ class StoreBranchProductController extends BaseAdminController */ public function lists() { - return $this->dataLists(new StoreProductLists()); + return $this->dataLists(new StoreBranchProductLists()); } diff --git a/app/admin/controller/store_product/StoreProductController.php b/app/admin/controller/store_product/StoreProductController.php index 4cf64caf8..0bfbb0d32 100644 --- a/app/admin/controller/store_product/StoreProductController.php +++ b/app/admin/controller/store_product/StoreProductController.php @@ -7,7 +7,7 @@ use app\admin\controller\BaseAdminController; use app\admin\lists\store_product\StoreProductLists; use app\admin\logic\store_product\StoreProductLogic; use app\admin\validate\store_product\StoreProductValidate; - +use Webman\RedisQueue\Redis; /** * 商品列表控制器 @@ -91,5 +91,25 @@ class StoreProductController extends BaseAdminController return $this->data($result); } - -} \ No newline at end of file + /** + * 商品导入到门店 + */ + public function import() + { + $product_arr = $this->request->post('product_arr'); + $store_arr = $this->request->post('store_arr'); + if (count($store_arr) == 1) { + $store_id = $store_arr[0]; + foreach ($product_arr as $key => $arr) { + Redis::send('store-storage', ['product_arr' => $arr, 'store_id' => $store_id, 'admin_id' => $this->adminId]); + } + } else { + foreach ($product_arr as $key => $arr) { + foreach ($store_arr as $k => $store_id) { + Redis::send('store-storage', ['product_arr' => $arr, 'store_id' => $store_id, 'admin_id' => $this->adminId]); + } + } + } + return $this->success('已导入后台队列,请在门店入库记录中查看'); + } +} diff --git a/app/admin/lists/store_branch_product/StoreBranchProductLists.php b/app/admin/lists/store_branch_product/StoreBranchProductLists.php index d9b1cb6ba..4e2cf97f9 100644 --- a/app/admin/lists/store_branch_product/StoreBranchProductLists.php +++ b/app/admin/lists/store_branch_product/StoreBranchProductLists.php @@ -28,7 +28,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI public function setSearch(): array { return [ - '=' => ['product_id', 'cate_id'], + '=' => ['product_id', 'cate_id','store_id'], '%like%' => ['store_name'], ]; } @@ -47,7 +47,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI { $status = $this->params['status'] ?? ''; return StoreBranchProduct::where($this->searchWhere) - ->field(['id', 'product_id', 'image', 'store_name', 'cate_id', 'price', 'sales', 'stock', 'unit', 'cost', 'status']) + ->field(['id','store_id','product_id', 'image', 'store_name', 'cate_id', 'price', 'sales', 'stock', 'unit', 'cost', 'status']) ->when(!empty($this->adminInfo['store_id']), function ($query) { $query->where('store_id', $this->adminInfo['store_id']); }) @@ -66,6 +66,7 @@ class StoreBranchProductLists extends BaseAdminDataLists implements ListsSearchI ->order(['sort' => 'desc', 'id' => 'desc']) ->select() ->each(function ($item) { + $item['system_store_name']=SystemStore::where('id',$item['store_id'])->value('name'); $item['unit_name'] = StoreProductUnit::where('id', $item['unit'])->value('name'); $item['cate_name'] = StoreCategory::where('id', $item['cate_id'])->value('name'); return $item; diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index a522a1833..d74c77218 100644 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -12,8 +12,9 @@ use support\Cache; use think\facade\Db; use Webman\Config; use hg\apidoc\annotation as ApiDoc; +use support\Log; use Yansongda\Pay\Exception\InvalidSignException; - +use Monolog\Handler\RotatingFileHandler; #[ApiDoc\NotParse()] class IndexController extends BaseApiController @@ -22,6 +23,8 @@ class IndexController extends BaseApiController public function index() { + Log::error(222); +d(2); try { $wechat = new PayService(1); diff --git a/app/queue/redis/StoreStorageSend.php b/app/queue/redis/StoreStorageSend.php index 16ecc6598..7320969b9 100644 --- a/app/queue/redis/StoreStorageSend.php +++ b/app/queue/redis/StoreStorageSend.php @@ -3,8 +3,14 @@ namespace app\queue\redis; use app\admin\logic\store_product\StoreProductLogic; +use app\common\model\store_branch_product\StoreBranchProduct; +use app\common\model\store_branch_product_attr_value\StoreBranchProductAttrValue; +use app\common\model\store_product\StoreProduct; +use app\common\model\store_product_attr_value\StoreProductAttrValue; +use app\common\model\system_store_storage\SystemStoreStorage; use Webman\RedisQueue\Consumer; use support\Log; +use think\facade\Db; /** * 门店库存记录商品 @@ -12,7 +18,7 @@ use support\Log; class StoreStorageSend implements Consumer { // 要消费的队列名 - public $queue = 'store_storage'; + public $queue = 'store-storage'; // 连接名,对应 plugin/webman/redis-queue/redis.php 里的连接` public $connection = 'default'; @@ -20,15 +26,83 @@ class StoreStorageSend implements Consumer // 消费 public function consume($data) { - // $product_id=$data['product_id']; - // $store_id=$data['store_id']; - // $store_id=$data['store_id']; - // StoreBranchProduct::w + $product_arr = $data['product_arr']; + $store_id = $data['store_id']; + $admin_id = $data['admin_id']; + Log::error('StoreStorageSend: ' . json_encode($data)); + $find = StoreProduct::where('id', $product_arr['id'])->findOrEmpty()->toArray(); + $store_find = StoreBranchProduct::where(['product_id' => $product_arr['id'], 'store_id' => $store_id])->findOrEmpty()->toArray(); + if ($find && !$store_find) { + $attr_value = StoreProductAttrValue::where('product_id', $product_arr['id'])->findOrEmpty(); + Db::startTrans(); + try { + $product = [ + 'product_id' => $find['id'], + 'image' => $find['image'], + 'store_name' => $find['store_name'], + 'store_info' => $find['store_info'], + 'keyword' => $find['keyword'], + 'bar_code' => $find['bar_code'], + 'cate_id' => $find['cate_id'], + 'price' => $find['price'], + 'unit' => $find['unit'], + 'store_id' => $store_id, + 'sales' => 0, + 'stock' => 0, + ]; + $branch=StoreBranchProduct::create($product); + $arr = [ + 'product_id' => $product_arr['id'], + 'store_id' => $store_id, + 'unique' => setUnique($branch['id'], '', 0), + 'sales' => 0, + 'type' => 0, + 'bar_code' => $attr_value['bar_code'] + ]; + StoreBranchProductAttrValue::create($arr); + $this->storage($find, $store_id, $admin_id, $product_arr); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + Log::error('store-storage队列消费失败: ' . $e->getMessage().',line:'.$e->getLine().',file:'.$e->getFile()); + return false; + } + } else { + Db::startTrans(); + try { + $this->storage($find, $store_id, $admin_id, $product_arr); + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + Log::error('store-storage队列消费失败: ' . $e->getMessage().',line:'.$e->getLine().',file:'.$e->getFile()); + return false; + } + } } + + public function storage($find, $store_id, $admin_id, $product_arr) + { + $storage = [ + 'product_id' => $product_arr['id'], + 'store_id' => $store_id, + 'nums' => $product_arr['stock'], + 'admin_id' => $admin_id, + ]; + if ($find['stock'] < $product_arr['stock']) { + $storage['status'] = -1; + $storage['mark'] = '库存不足,主库存为:' . $find['stock']; + SystemStoreStorage::create($storage); + }else{ + SystemStoreStorage::create($storage); + StoreProduct::where('id', $product_arr['id'])->dec('stock',$product_arr['stock'])->update(); + } + } + public function onConsumeFailure(\Throwable $e, $package) { - $package['max_attempts']=0; - Log::error('复制商品失败product_id:'.$package['data']['product_id']); + $package['max_attempts'] = 0; return $package; } -} \ No newline at end of file +} diff --git a/config/log.php b/config/log.php index 7c9a8824f..31fdf9677 100644 --- a/config/log.php +++ b/config/log.php @@ -16,9 +16,9 @@ return [ 'default' => [ 'handlers' => [ [ - 'class' => \support\log\MonologExtendHandler::class, + 'class' => Monolog\Handler\RotatingFileHandler::class, 'constructor' => [ - null, + runtime_path() . '/logs/'.date('Ym').'/.log', 2048, Monolog\Logger::DEBUG, true, diff --git a/config/plugin/webman/redis-queue/log.php b/config/plugin/webman/redis-queue/log.php index cd6ca51f2..4a60c18f7 100644 --- a/config/plugin/webman/redis-queue/log.php +++ b/config/plugin/webman/redis-queue/log.php @@ -18,7 +18,7 @@ return [ [ 'class' => \support\log\MonologExtendHandler::class, 'constructor' => [ - runtime_path() . '/logs/redis-queue/queue.log', + '/logs/redis-queue/queue.log', 7, //$maxFiles Monolog\Logger::DEBUG, ], diff --git a/support/log/MonologExtendHandler.php b/support/log/MonologExtendHandler.php index 82217d1f3..5aec547af 100644 --- a/support/log/MonologExtendHandler.php +++ b/support/log/MonologExtendHandler.php @@ -1,15 +1,11 @@