diff --git a/app/admin/controller/purchase_order/PurchaseOrderController.php b/app/admin/controller/purchase_order/PurchaseOrderController.php index 0555831d2..390727d2a 100644 --- a/app/admin/controller/purchase_order/PurchaseOrderController.php +++ b/app/admin/controller/purchase_order/PurchaseOrderController.php @@ -2,6 +2,8 @@ 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{ @@ -9,5 +11,31 @@ class PurchaseOrderController extends BaseAdminController{ { return $this->dataLists(new PurchaseOrderLists()); } + public function info_lists() + { + return $this->dataLists(new PurchaseOrderInfoLists()); + } + /** + * 合并今日商户订单 + */ + public function add(){ + PurchaseOrderLogic::StoreTodayOrder(); + return $this->success('合并成功'); + } + /** + * 合并今日平台订单 + */ + public function platform(){ + 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 @@ + ['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 1fb4f5330..cab700969 100644 --- a/app/admin/logic/purchase_order/PurchaseOrderLogic.php +++ b/app/admin/logic/purchase_order/PurchaseOrderLogic.php @@ -5,6 +5,10 @@ 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 app\common\model\system_store\SystemStore; use think\facade\Db; @@ -18,31 +22,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 +73,57 @@ 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'] - ]); + $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 = 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']; + $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(); + d($e); self::setError($e->getMessage()); return false; } } - /** * @notes 删除采购订单 * @param array $params @@ -109,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; } -} \ No newline at end of file +} 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