From 66571b43a1bbb29fe00a3fef0185f96fb9b854fb Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Thu, 1 Aug 2024 18:03:45 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(purchase=5Forder):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=90=88=E5=B9=B6=E4=BB=8A=E6=97=A5=E5=95=86=E6=88=B7?= =?UTF-8?q?=E5=92=8C=E5=B9=B3=E5=8F=B0=E8=AE=A2=E5=8D=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PurchaseOrderController.php | 15 +++ .../purchase_order/PurchaseOrderLogic.php | 125 +++++++++++------- 2 files changed, 95 insertions(+), 45 deletions(-) diff --git a/app/admin/controller/purchase_order/PurchaseOrderController.php b/app/admin/controller/purchase_order/PurchaseOrderController.php index 0555831d2..657786175 100644 --- a/app/admin/controller/purchase_order/PurchaseOrderController.php +++ b/app/admin/controller/purchase_order/PurchaseOrderController.php @@ -2,6 +2,7 @@ namespace app\admin\controller\purchase_order; use app\admin\controller\BaseAdminController; use app\admin\lists\purchase_order\PurchaseOrderLists; +use app\admin\logic\purchase_order\PurchaseOrderLogic; class PurchaseOrderController extends BaseAdminController{ @@ -10,4 +11,18 @@ class PurchaseOrderController extends BaseAdminController{ return $this->dataLists(new PurchaseOrderLists()); } + /** + * 合并今日商户订单 + */ + public function add(){ + PurchaseOrderLogic::StoreTodayOrder(); + return $this->success('合并成功'); + } + /** + * 合并今日平台订单 + */ + public function platform(){ + PurchaseOrderLogic::platformTodayOrder(); + return $this->success('合并成功'); + } } \ No newline at end of file diff --git a/app/admin/logic/purchase_order/PurchaseOrderLogic.php b/app/admin/logic/purchase_order/PurchaseOrderLogic.php index 1fb4f5330..dcd1aadea 100644 --- a/app/admin/logic/purchase_order/PurchaseOrderLogic.php +++ b/app/admin/logic/purchase_order/PurchaseOrderLogic.php @@ -5,6 +5,9 @@ namespace app\admin\logic\purchase_order; use app\common\model\purchase_order\PurchaseOrder; use app\common\logic\BaseLogic; +use app\common\model\purchase_order_info\PurchaseOrderInfo; +use app\common\model\store_order\StoreOrder; +use app\common\model\store_order_cart_info\StoreOrderCartInfo; use think\facade\Db; @@ -18,31 +21,48 @@ class PurchaseOrderLogic extends BaseLogic /** - * @notes 添加采购订单 + * @notes 合并今日商户订单 * @param array $params * @return bool * @author admin * @date 2024/08/01 16:32 */ - public static function add(array $params): bool + public static function StoreTodayOrder(): bool { Db::startTrans(); try { - PurchaseOrder::create([ - 'store_id' => $params['store_id'], - 'order_arr' => $params['order_arr'], - 'order_id' => $params['order_id'], - 'total' => $params['total'], - 'actual' => $params['actual'], - 'money' => $params['money'], - 'paid' => $params['paid'], - 'file' => $params['file'], - 'data' => $params['data'], - 'is_opurchase' => $params['is_opurchase'], - 'is_mer' => $params['is_mer'], - 'storage' => $params['storage'] - ]); - + $store_arr = StoreOrder::where(['paid' => 1, 'refund_status' => 0])->whereDay('create_time')->group('store_id')->column('store_id'); + $purchaseOrderInfo = new PurchaseOrderInfo(); + foreach ($store_arr as $store_id) { + $purchase_order_info = []; + $order_arr = StoreOrder::where(['paid' => 1, 'refund_status' => 0, 'store_id' => $store_id])->whereDay('create_time')->column('id'); + $price = StoreOrder::where(['paid' => 1, 'refund_status' => 0, 'store_id' => $store_id])->whereDay('create_time')->field('SUM(pay_price) as pay_price,SUM(total_price) as total_price')->find(); + $data = [ + 'store_id' => $store_id, + 'order_arr' => json_encode($order_arr), + 'order_id' => getNewOrderId('CG'), + 'total' => $price['total_price'], + 'actual' => $price['pay_price'], + 'money' => $price['pay_price'], + 'paid' => 1, + 'is_mer' => 1, + 'create_time' => time(), + 'update_time' => time(), + ]; + $res = PurchaseOrder::create($data); + $info = StoreOrderCartInfo::where('oid', 'in', $order_arr)->field('store_id, product_id,price,SUM(total_price) as total_price, SUM(cart_num) as cart_num')->group('store_id, product_id')->select(); + foreach ($info as $item) { + $arr['oid'] = $res['id']; + $arr['store_id'] = $item['store_id']; + $arr['product_id'] = $item['product_id']; + $arr['price'] = $item['price']; + $arr['total_price'] = $item['total_price']; + $arr['cart_num'] = $item['cart_num']; + $arr['status'] = 1; + $purchase_order_info[] = $arr; + } + $purchaseOrderInfo->saveAll($purchase_order_info); + } Db::commit(); return true; } catch (\Exception $e) { @@ -52,43 +72,58 @@ class PurchaseOrderLogic extends BaseLogic } } - /** - * @notes 编辑采购订单 + * @notes 合并今日平台订单 * @param array $params * @return bool * @author admin * @date 2024/08/01 16:32 */ - public static function edit(array $params): bool + public static function platformTodayOrder() { - Db::startTrans(); - try { - PurchaseOrder::where('id', $params['id'])->update([ - 'store_id' => $params['store_id'], - 'order_arr' => $params['order_arr'], - 'order_id' => $params['order_id'], - 'total' => $params['total'], - 'actual' => $params['actual'], - 'money' => $params['money'], - 'paid' => $params['paid'], - 'file' => $params['file'], - 'data' => $params['data'], - 'is_opurchase' => $params['is_opurchase'], - 'is_mer' => $params['is_mer'], - 'storage' => $params['storage'] - ]); + // Db::startTrans(); + // try { + $purchaseOrderInfo = new PurchaseOrderInfo(); + $purchase_order_info=[]; + $order_arr = PurchaseOrder::whereDay('create_time')->where('is_mer',1)->column('id'); + // $price = PurchaseOrder::whereDay('create_time')->field('SUM(actual) as pay_price,SUM(total) as total_price')->find(); + // $data = [ + // 'store_id' => 0, + // 'order_arr' => json_encode($order_arr), + // 'order_id' => getNewOrderId('PT'), + // 'total' => $price['total_price'], + // 'actual' => $price['pay_price'], + // 'money' => $price['pay_price'], + // 'paid' => 1, + // 'is_mer' => 2, + // 'create_time' => time(), + // 'update_time' => time(), + // ]; + // $res = PurchaseOrder::create($data); + $info = StoreOrderCartInfo::where('oid', 'in', $order_arr)->field('store_id, product_id,price,SUM(total_price) as total_price, SUM(cart_num) as cart_num')->group('store_id, product_id')->select(); + d($info); + foreach ($info as $item) { + $arr['oid'] = $res['id']; + $arr['store_id'] = $item['store_id']; + $arr['product_id'] = $item['product_id']; + $arr['price'] = $item['price']; + $arr['total_price'] = $item['total_price']; + $arr['cart_num'] = $item['cart_num']; + $arr['status'] = 1; + $purchase_order_info[] = $arr; + } + $purchaseOrderInfo->saveAll($purchase_order_info); - Db::commit(); - return true; - } catch (\Exception $e) { - Db::rollback(); - self::setError($e->getMessage()); - return false; - } + // Db::commit(); + // return true; + // } catch (\Exception $e) { + // Db::rollback(); + // d($e); + // self::setError($e->getMessage()); + // return false; + // } } - /** * @notes 删除采购订单 * @param array $params @@ -113,4 +148,4 @@ class PurchaseOrderLogic extends BaseLogic { return PurchaseOrder::findOrEmpty($params['id'])->toArray(); } -} \ No newline at end of file +} From d0842aadc5c1abcc58152e7003cd67529e53eba3 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Thu, 1 Aug 2024 22:41:52 +0800 Subject: [PATCH 2/2] 1 --- .../PurchaseOrderController.php | 15 +++- .../purchase_order/PurchaseOrderLists.php | 43 +++++++++- .../PurchaseOrderInfoLists.php | 85 +++++++++++++++++++ .../purchase_order/PurchaseOrderLogic.php | 77 +++++++++++------ .../model/purchase_order/PurchaseOrder.php | 2 +- 5 files changed, 188 insertions(+), 34 deletions(-) create mode 100644 app/admin/lists/purchase_order_info/PurchaseOrderInfoLists.php diff --git a/app/admin/controller/purchase_order/PurchaseOrderController.php b/app/admin/controller/purchase_order/PurchaseOrderController.php index 657786175..390727d2a 100644 --- a/app/admin/controller/purchase_order/PurchaseOrderController.php +++ b/app/admin/controller/purchase_order/PurchaseOrderController.php @@ -2,6 +2,7 @@ namespace app\admin\controller\purchase_order; use app\admin\controller\BaseAdminController; use app\admin\lists\purchase_order\PurchaseOrderLists; +use app\admin\lists\purchase_order_info\PurchaseOrderInfoLists; use app\admin\logic\purchase_order\PurchaseOrderLogic; class PurchaseOrderController extends BaseAdminController{ @@ -10,7 +11,10 @@ class PurchaseOrderController extends BaseAdminController{ { return $this->dataLists(new PurchaseOrderLists()); } - + public function info_lists() + { + return $this->dataLists(new PurchaseOrderInfoLists()); + } /** * 合并今日商户订单 */ @@ -25,4 +29,13 @@ class PurchaseOrderController extends BaseAdminController{ PurchaseOrderLogic::platformTodayOrder(); return $this->success('合并成功'); } + + /** + * 详情 + */ + public function detail(){ + $id=$this->request->get('id'); + $res=PurchaseOrderLogic::detail($id); + return $this->data($res); + } } \ No newline at end of file diff --git a/app/admin/lists/purchase_order/PurchaseOrderLists.php b/app/admin/lists/purchase_order/PurchaseOrderLists.php index 29fe0f1d9..933af29fa 100644 --- a/app/admin/lists/purchase_order/PurchaseOrderLists.php +++ b/app/admin/lists/purchase_order/PurchaseOrderLists.php @@ -6,6 +6,7 @@ namespace app\admin\lists\purchase_order; use app\admin\lists\BaseAdminDataLists; use app\common\lists\ListsSearchInterface; use app\common\model\purchase_order\PurchaseOrder; +use app\common\model\system_store\SystemStore; /** * 采购订单列表 @@ -25,7 +26,7 @@ class PurchaseOrderLists extends BaseAdminDataLists implements ListsSearchInterf public function setSearch(): array { return [ - '=' => ['store_id', 'order_id'], + '=' => ['store_id', 'order_id', 'is_mer','storage'], ]; } @@ -41,10 +42,45 @@ class PurchaseOrderLists extends BaseAdminDataLists implements ListsSearchInterf */ public function lists(): array { + if($this->request->get('o_id')){ + $arr=PurchaseOrder::where('id',$this->request->get('o_id'))->value('order_arr'); + if($arr){ + $this->searchWhere[]=['id','in',$arr]; + } + } return PurchaseOrder::where($this->searchWhere) ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) - ->select(); + ->select()->each(function ($item) { + if ($item->store_id) { + $item->system_store = SystemStore::where('id',$item->store_id)->value('name'); + } else { + $item->system_store = '平台'; + } + if ($item->is_mer == 1) { + $item->mer_name = '商户'; + } else { + $item->mer_name = '平台'; + } + if ($item->is_opurchase == 1) { + $item->opurchase_name = '已采购'; + } else { + $item->opurchase_name = '未采购'; + } + switch ($item->storage) { + case 0: + $item->storage_name = '未入库'; + break; + case 1: + $item->storage_name = '部分入库'; + break; + case 2: + $item->storage_name = '已入库'; + break; + default: + $item->storage_name = '未入库'; + } + })->toArray(); } @@ -58,5 +94,4 @@ class PurchaseOrderLists extends BaseAdminDataLists implements ListsSearchInterf { return PurchaseOrder::where($this->searchWhere)->count(); } - -} \ No newline at end of file +} diff --git a/app/admin/lists/purchase_order_info/PurchaseOrderInfoLists.php b/app/admin/lists/purchase_order_info/PurchaseOrderInfoLists.php new file mode 100644 index 000000000..b4dacaefe --- /dev/null +++ b/app/admin/lists/purchase_order_info/PurchaseOrderInfoLists.php @@ -0,0 +1,85 @@ +<?php + +namespace app\admin\lists\purchase_order_info; + + +use app\admin\lists\BaseAdminDataLists; +use app\common\lists\ListsSearchInterface; +use app\common\model\purchase_order_info\PurchaseOrderInfo; +use app\common\model\store_product\StoreProduct; +use app\common\model\store_product_unit\StoreProductUnit; +use app\common\model\system_store\SystemStore; + +/** + * 采购订单详情表 + * Class PurchaseOrderInfoLists + * @package app\admin\lists\purchase_order + */ +class PurchaseOrderInfoLists extends BaseAdminDataLists implements ListsSearchInterface +{ + + + /** + * @notes 设置搜索条件 + * @return \string[][] + * @author admin + * @date 2024/05/31 17:09 + */ + public function setSearch(): array + { + return [ + '=' => ['store_id', 'oid', ], + ]; + } + + + /** + * @notes 获取采购订单列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author admin + * @date 2024/05/31 17:09 + */ + public function lists(): array + { + return PurchaseOrderInfo::where($this->searchWhere) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select()->each(function ($item) { + $find=StoreProduct::where('id',$item->product_id)->field('store_info,unit,store_name,image')->find(); + if($find){ + $item->store_name=$find->store_name; + $item->unit_name=StoreProductUnit::where('id',$find->unit)->value('name'); + $item->store_info=$find->store_info; + $item->image=$find->image; + } + switch ($item->storage) { + case 0: + $item->storage_name = '未入库'; + break; + case 1: + $item->storage_name = '部分入库'; + break; + case 2: + $item->storage_name = '已入库'; + break; + default: + $item->storage_name = '未入库'; + } + })->toArray(); + } + + + /** + * @notes 获取采购订单数量 + * @return int + * @author admin + * @date 2024/05/31 17:09 + */ + public function count(): int + { + return PurchaseOrderInfo::where($this->searchWhere)->count(); + } +} diff --git a/app/admin/logic/purchase_order/PurchaseOrderLogic.php b/app/admin/logic/purchase_order/PurchaseOrderLogic.php index dcd1aadea..cab700969 100644 --- a/app/admin/logic/purchase_order/PurchaseOrderLogic.php +++ b/app/admin/logic/purchase_order/PurchaseOrderLogic.php @@ -8,6 +8,7 @@ use app\common\logic\BaseLogic; use app\common\model\purchase_order_info\PurchaseOrderInfo; use app\common\model\store_order\StoreOrder; use app\common\model\store_order_cart_info\StoreOrderCartInfo; +use app\common\model\system_store\SystemStore; use think\facade\Db; @@ -81,27 +82,26 @@ class PurchaseOrderLogic extends BaseLogic */ public static function platformTodayOrder() { - // Db::startTrans(); - // try { + Db::startTrans(); + try { $purchaseOrderInfo = new PurchaseOrderInfo(); $purchase_order_info=[]; $order_arr = PurchaseOrder::whereDay('create_time')->where('is_mer',1)->column('id'); - // $price = PurchaseOrder::whereDay('create_time')->field('SUM(actual) as pay_price,SUM(total) as total_price')->find(); - // $data = [ - // 'store_id' => 0, - // 'order_arr' => json_encode($order_arr), - // 'order_id' => getNewOrderId('PT'), - // 'total' => $price['total_price'], - // 'actual' => $price['pay_price'], - // 'money' => $price['pay_price'], - // 'paid' => 1, - // 'is_mer' => 2, - // 'create_time' => time(), - // 'update_time' => time(), - // ]; - // $res = PurchaseOrder::create($data); - $info = StoreOrderCartInfo::where('oid', 'in', $order_arr)->field('store_id, product_id,price,SUM(total_price) as total_price, SUM(cart_num) as cart_num')->group('store_id, product_id')->select(); - d($info); + $price = PurchaseOrder::whereDay('create_time')->field('SUM(actual) as pay_price,SUM(total) as total_price')->find(); + $data = [ + 'store_id' => 0, + 'order_arr' => json_encode($order_arr), + 'order_id' => getNewOrderId('PT'), + 'total' => $price['total_price'], + 'actual' => $price['pay_price'], + 'money' => $price['pay_price'], + 'paid' => 1, + 'is_mer' => 2, + 'create_time' => time(), + 'update_time' => time(), + ]; + $res = PurchaseOrder::create($data); + $info = PurchaseOrderInfo::where('oid', 'in', $order_arr)->field('store_id, product_id,price,SUM(total_price) as total_price, SUM(cart_num) as cart_num')->group('store_id, product_id')->select(); foreach ($info as $item) { $arr['oid'] = $res['id']; $arr['store_id'] = $item['store_id']; @@ -114,14 +114,14 @@ class PurchaseOrderLogic extends BaseLogic } $purchaseOrderInfo->saveAll($purchase_order_info); - // Db::commit(); - // return true; - // } catch (\Exception $e) { - // Db::rollback(); - // d($e); - // self::setError($e->getMessage()); - // return false; - // } + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + d($e); + self::setError($e->getMessage()); + return false; + } } /** @@ -144,8 +144,29 @@ class PurchaseOrderLogic extends BaseLogic * @author admin * @date 2024/08/01 16:32 */ - public static function detail($params): array + public static function detail($id): array { - return PurchaseOrder::findOrEmpty($params['id'])->toArray(); + $data= PurchaseOrder::findOrEmpty($id)->toArray(); + if($data){ + if($data['store_id']){ + $data['system_store']=SystemStore::where('id',$data['store_id'])->value('name'); + }else{ + $data['system_store']='平台'; + } + switch ($data['storage']) { + case 0: + $data['storage_name'] = '未入库'; + break; + case 1: + $data['storage_name'] = '部分入库'; + break; + case 2: + $data['storage_name'] = '已入库'; + break; + default: + $data['storage_name'] = '未入库'; + } + } + return $data; } } diff --git a/app/common/model/purchase_order/PurchaseOrder.php b/app/common/model/purchase_order/PurchaseOrder.php index 10cada22f..f05cb3081 100644 --- a/app/common/model/purchase_order/PurchaseOrder.php +++ b/app/common/model/purchase_order/PurchaseOrder.php @@ -17,6 +17,6 @@ class PurchaseOrder extends BaseModel use SoftDelete; protected $name = 'purchase_order'; protected $deleteTime = 'delete_time'; - + protected $json = ['order_arr']; } \ No newline at end of file