diff --git a/app/admin/controller/customer/CustomerController.php b/app/admin/controller/customer/CustomerController.php
new file mode 100644
index 0000000..42a6af7
--- /dev/null
+++ b/app/admin/controller/customer/CustomerController.php
@@ -0,0 +1,95 @@
+dataLists(new CustomerLists());
+ }
+
+
+ /**
+ * @notes 添加客户管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function add()
+ {
+ $params = (new CustomerValidate())->post()->goCheck('add');
+ $result = CustomerLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(CustomerLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑客户管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function edit()
+ {
+ $params = (new CustomerValidate())->post()->goCheck('edit');
+ $result = CustomerLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(CustomerLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除客户管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function delete()
+ {
+ $params = (new CustomerValidate())->post()->goCheck('delete');
+ CustomerLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取客户管理详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function detail()
+ {
+ $params = (new CustomerValidate())->goCheck('detail');
+ $result = CustomerLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/goods/BrandController.php b/app/admin/controller/goods/BrandController.php
new file mode 100644
index 0000000..633f74d
--- /dev/null
+++ b/app/admin/controller/goods/BrandController.php
@@ -0,0 +1,95 @@
+dataLists(new BrandLists());
+ }
+
+
+ /**
+ * @notes 添加商品品牌
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function add()
+ {
+ $params = (new BrandValidate())->post()->goCheck('add');
+ $result = BrandLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(BrandLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑商品品牌
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function edit()
+ {
+ $params = (new BrandValidate())->post()->goCheck('edit');
+ $result = BrandLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(BrandLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除商品品牌
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function delete()
+ {
+ $params = (new BrandValidate())->post()->goCheck('delete');
+ BrandLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取商品品牌详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function detail()
+ {
+ $params = (new BrandValidate())->goCheck('detail');
+ $result = BrandLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/goods/CodeController.php b/app/admin/controller/goods/CodeController.php
new file mode 100644
index 0000000..9959db8
--- /dev/null
+++ b/app/admin/controller/goods/CodeController.php
@@ -0,0 +1,95 @@
+dataLists(new CodeLists());
+ }
+
+
+ /**
+ * @notes 添加条码管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function add()
+ {
+ $params = (new CodeValidate())->post()->goCheck('add');
+ $result = CodeLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(CodeLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑条码管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function edit()
+ {
+ $params = (new CodeValidate())->post()->goCheck('edit');
+ $result = CodeLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(CodeLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除条码管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function delete()
+ {
+ $params = (new CodeValidate())->post()->goCheck('delete');
+ CodeLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取条码管理详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function detail()
+ {
+ $params = (new CodeValidate())->goCheck('detail');
+ $result = CodeLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/goods/GoodsController.php b/app/admin/controller/goods/GoodsController.php
new file mode 100644
index 0000000..49d03e0
--- /dev/null
+++ b/app/admin/controller/goods/GoodsController.php
@@ -0,0 +1,95 @@
+dataLists(new GoodsLists());
+ }
+
+
+ /**
+ * @notes 添加商品列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function add()
+ {
+ $params = (new GoodsValidate())->post()->goCheck('add');
+ $result = GoodsLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(GoodsLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑商品列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function edit()
+ {
+ $params = (new GoodsValidate())->post()->goCheck('edit');
+ $result = GoodsLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(GoodsLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除商品列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function delete()
+ {
+ $params = (new GoodsValidate())->post()->goCheck('delete');
+ GoodsLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取商品列表详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function detail()
+ {
+ $params = (new GoodsValidate())->goCheck('detail');
+ $result = GoodsLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/goods/GoodsclassController.php b/app/admin/controller/goods/GoodsclassController.php
new file mode 100644
index 0000000..bd3a329
--- /dev/null
+++ b/app/admin/controller/goods/GoodsclassController.php
@@ -0,0 +1,95 @@
+dataLists(new GoodsclassLists());
+ }
+
+
+ /**
+ * @notes 添加商品分类
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function add()
+ {
+ $params = (new GoodsclassValidate())->post()->goCheck('add');
+ $result = GoodsclassLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(GoodsclassLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑商品分类
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function edit()
+ {
+ $params = (new GoodsclassValidate())->post()->goCheck('edit');
+ $result = GoodsclassLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(GoodsclassLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除商品分类
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function delete()
+ {
+ $params = (new GoodsclassValidate())->post()->goCheck('delete');
+ GoodsclassLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取商品分类详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function detail()
+ {
+ $params = (new GoodsclassValidate())->goCheck('detail');
+ $result = GoodsclassLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/goods/UnitController.php b/app/admin/controller/goods/UnitController.php
new file mode 100644
index 0000000..1ce2af9
--- /dev/null
+++ b/app/admin/controller/goods/UnitController.php
@@ -0,0 +1,95 @@
+dataLists(new UnitLists());
+ }
+
+
+ /**
+ * @notes 添加计量单位
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function add()
+ {
+ $params = (new UnitValidate())->post()->goCheck('add');
+ $result = UnitLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(UnitLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑计量单位
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function edit()
+ {
+ $params = (new UnitValidate())->post()->goCheck('edit');
+ $result = UnitLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(UnitLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除计量单位
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function delete()
+ {
+ $params = (new UnitValidate())->post()->goCheck('delete');
+ UnitLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取计量单位详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function detail()
+ {
+ $params = (new UnitValidate())->goCheck('detail');
+ $result = UnitLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/merchat/MerchantController.php b/app/admin/controller/merchat/MerchantController.php
new file mode 100644
index 0000000..958fa57
--- /dev/null
+++ b/app/admin/controller/merchat/MerchantController.php
@@ -0,0 +1,95 @@
+dataLists(new MerchantLists());
+ }
+
+
+ /**
+ * @notes 添加商户列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function add()
+ {
+ $params = (new MerchantValidate())->post()->goCheck('add');
+ $result = MerchantLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(MerchantLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑商户列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function edit()
+ {
+ $params = (new MerchantValidate())->post()->goCheck('edit');
+ $result = MerchantLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(MerchantLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除商户列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function delete()
+ {
+ $params = (new MerchantValidate())->post()->goCheck('delete');
+ MerchantLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取商户列表详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function detail()
+ {
+ $params = (new MerchantValidate())->goCheck('detail');
+ $result = MerchantLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/supplier/SupplierController.php b/app/admin/controller/supplier/SupplierController.php
new file mode 100644
index 0000000..fcadf11
--- /dev/null
+++ b/app/admin/controller/supplier/SupplierController.php
@@ -0,0 +1,95 @@
+dataLists(new SupplierLists());
+ }
+
+
+ /**
+ * @notes 添加供应商管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function add()
+ {
+ $params = (new SupplierValidate())->post()->goCheck('add');
+ $result = SupplierLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(SupplierLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑供应商管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function edit()
+ {
+ $params = (new SupplierValidate())->post()->goCheck('edit');
+ $result = SupplierLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(SupplierLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除供应商管理
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function delete()
+ {
+ $params = (new SupplierValidate())->post()->goCheck('delete');
+ SupplierLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取供应商管理详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function detail()
+ {
+ $params = (new SupplierValidate())->goCheck('detail');
+ $result = SupplierLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/controller/warehouse/WarehouseController.php b/app/admin/controller/warehouse/WarehouseController.php
new file mode 100644
index 0000000..7e31da0
--- /dev/null
+++ b/app/admin/controller/warehouse/WarehouseController.php
@@ -0,0 +1,95 @@
+dataLists(new WarehouseLists());
+ }
+
+
+ /**
+ * @notes 添加仓库列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function add()
+ {
+ $params = (new WarehouseValidate())->post()->goCheck('add');
+ $result = WarehouseLogic::add($params);
+ if (true === $result) {
+ return $this->success('添加成功', [], 1, 1);
+ }
+ return $this->fail(WarehouseLogic::getError());
+ }
+
+
+ /**
+ * @notes 编辑仓库列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function edit()
+ {
+ $params = (new WarehouseValidate())->post()->goCheck('edit');
+ $result = WarehouseLogic::edit($params);
+ if (true === $result) {
+ return $this->success('编辑成功', [], 1, 1);
+ }
+ return $this->fail(WarehouseLogic::getError());
+ }
+
+
+ /**
+ * @notes 删除仓库列表
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function delete()
+ {
+ $params = (new WarehouseValidate())->post()->goCheck('delete');
+ WarehouseLogic::delete($params);
+ return $this->success('删除成功', [], 1, 1);
+ }
+
+
+ /**
+ * @notes 获取仓库列表详情
+ * @return \think\response\Json
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function detail()
+ {
+ $params = (new WarehouseValidate())->goCheck('detail');
+ $result = WarehouseLogic::detail($params);
+ return $this->data($result);
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/customer/CustomerLists.php b/app/admin/lists/customer/CustomerLists.php
new file mode 100644
index 0000000..33031cb
--- /dev/null
+++ b/app/admin/lists/customer/CustomerLists.php
@@ -0,0 +1,65 @@
+ ['name', 'number', 'contacts', 'tel', 'customer_type', 'dept_type', 'related_suppliers', 'invoice_type'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取客户管理列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function lists(): array
+ {
+ return Customer::where($this->searchWhere)
+ ->field(['id', 'name', 'number', 'contacts', 'tel', 'customer_type', 'dept_type', 'related_suppliers', 'invoice_type'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取客户管理数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function count(): int
+ {
+ return Customer::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/goods/BrandLists.php b/app/admin/lists/goods/BrandLists.php
new file mode 100644
index 0000000..3fca318
--- /dev/null
+++ b/app/admin/lists/goods/BrandLists.php
@@ -0,0 +1,65 @@
+ ['name', 'py', 'number', 'data', 'more', 'pic', 'sort'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取商品品牌列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function lists(): array
+ {
+ return Brand::where($this->searchWhere)
+ ->field(['id', 'name', 'py', 'number', 'data', 'more', 'pic', 'sort'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取商品品牌数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function count(): int
+ {
+ return Brand::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/goods/CodeLists.php b/app/admin/lists/goods/CodeLists.php
new file mode 100644
index 0000000..b96aad2
--- /dev/null
+++ b/app/admin/lists/goods/CodeLists.php
@@ -0,0 +1,65 @@
+ ['name', 'py', 'code', 'type', 'data', 'more', 'sort'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取条码管理列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function lists(): array
+ {
+ return Code::where($this->searchWhere)
+ ->field(['id', 'name', 'py', 'code', 'type', 'data', 'more', 'sort'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取条码管理数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function count(): int
+ {
+ return Code::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/goods/GoodsLists.php b/app/admin/lists/goods/GoodsLists.php
new file mode 100644
index 0000000..0c36f8f
--- /dev/null
+++ b/app/admin/lists/goods/GoodsLists.php
@@ -0,0 +1,66 @@
+ ['name', 'class', 'brand', 'unit', 'code', 'warehouse', 'retail_name', 'sort'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取商品列表列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function lists(): array
+ {
+ return Goods::where($this->searchWhere)
+ // ->field(['id', 'name', 'py', 'number', 'spec', 'class', 'brand', 'unit', 'buy', 'sell', 'retail', 'code', 'warehouse', 'location', 'stocktip', 'retail_name', 'imgs', 'data', 'sort'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->with(['className','brandName','unitName','warehouseName'])
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取商品列表数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function count(): int
+ {
+ return Goods::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/goods/GoodsclassLists.php b/app/admin/lists/goods/GoodsclassLists.php
new file mode 100644
index 0000000..e8145c4
--- /dev/null
+++ b/app/admin/lists/goods/GoodsclassLists.php
@@ -0,0 +1,67 @@
+ ['pid', 'name', 'data', 'pic', 'sort'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取商品分类列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function lists(): array
+ {
+ $lists= Goodsclass::where($this->searchWhere)
+ ->field(['id', 'pid', 'name', 'data', 'pic', 'sort'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ return linear_to_tree($lists, 'children');
+
+ }
+
+
+ /**
+ * @notes 获取商品分类数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function count(): int
+ {
+ return Goodsclass::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/goods/UnitLists.php b/app/admin/lists/goods/UnitLists.php
new file mode 100644
index 0000000..6c5619b
--- /dev/null
+++ b/app/admin/lists/goods/UnitLists.php
@@ -0,0 +1,65 @@
+ ['name', 'py', 'number', 'data', 'more'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取计量单位列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function lists(): array
+ {
+ return Unit::where($this->searchWhere)
+ ->field(['id', 'name', 'py', 'number', 'data', 'more'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取计量单位数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function count(): int
+ {
+ return Unit::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/merchat/MerchantLists.php b/app/admin/lists/merchat/MerchantLists.php
new file mode 100644
index 0000000..9b5425a
--- /dev/null
+++ b/app/admin/lists/merchat/MerchantLists.php
@@ -0,0 +1,65 @@
+ ['category_id', 'type_id', 'mer_name', 'credit_buy', 'status', 'commission_rate', 'service_phone', 'mer_money', 'financial_bank', 'financial_wechat', 'financial_alipay'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取商户列表列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function lists(): array
+ {
+ return Merchant::where($this->searchWhere)
+ ->field(['mer_id', 'category_id', 'type_id', 'mer_name', 'credit_buy', 'settle_cycle', 'interest_rate', 'city_id', 'area_id', 'street_id', 'village_id', 'mer_address', 'mer_avatar', 'mark', 'commission_rate', 'service_phone', 'mer_money', 'financial_bank', 'financial_wechat', 'financial_alipay'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['mer_id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取商户列表数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function count(): int
+ {
+ return Merchant::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/supplier/SupplierLists.php b/app/admin/lists/supplier/SupplierLists.php
new file mode 100644
index 0000000..f674927
--- /dev/null
+++ b/app/admin/lists/supplier/SupplierLists.php
@@ -0,0 +1,65 @@
+ ['name', 'tel', 'supplier_type', 'invoice_type'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取供应商管理列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function lists(): array
+ {
+ return Supplier::where($this->searchWhere)
+ ->field(['id', 'name', 'py', 'number', 'uid', 'contacts', 'tel', 'bank', 'account', 'tax', 'supplier_type', 'tax_rate', 'invoice_type', 'dept_type'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取供应商管理数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function count(): int
+ {
+ return Supplier::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/lists/warehouse/WarehouseLists.php b/app/admin/lists/warehouse/WarehouseLists.php
new file mode 100644
index 0000000..ec0cf05
--- /dev/null
+++ b/app/admin/lists/warehouse/WarehouseLists.php
@@ -0,0 +1,65 @@
+ ['name', 'py', 'dept_id', 'number', 'contacts', 'tel', 'add', 'data', 'more', 'sort'],
+ ];
+ }
+
+
+ /**
+ * @notes 获取仓库列表列表
+ * @return array
+ * @throws \think\db\exception\DataNotFoundException
+ * @throws \think\db\exception\DbException
+ * @throws \think\db\exception\ModelNotFoundException
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function lists(): array
+ {
+ return Warehouse::where($this->searchWhere)
+ ->field(['id', 'name', 'py', 'dept_id', 'number', 'contacts', 'tel', 'add', 'data', 'more', 'sort'])
+ ->limit($this->limitOffset, $this->limitLength)
+ ->order(['id' => 'desc'])
+ ->select()
+ ->toArray();
+ }
+
+
+ /**
+ * @notes 获取仓库列表数量
+ * @return int
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function count(): int
+ {
+ return Warehouse::where($this->searchWhere)->count();
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/logic/customer/CustomerLogic.php b/app/admin/logic/customer/CustomerLogic.php
new file mode 100644
index 0000000..df54b0f
--- /dev/null
+++ b/app/admin/logic/customer/CustomerLogic.php
@@ -0,0 +1,130 @@
+ $params['name'],
+ 'number' => $params['number'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'birthday' => $params['birthday'],
+ 'bank' => $params['bank'],
+ 'account' => $params['account'],
+ 'tax' => $params['tax'],
+ 'other' => $params['other'],
+ 'email' => $params['email'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort'],
+ 'customer_type' => $params['customer_type'],
+ 'price_level' => $params['price_level'],
+ 'dept_type' => $params['dept_type'],
+ 'related_suppliers' => $params['related_suppliers'],
+ 'invoice_type' => $params['invoice_type']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑客户管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Customer::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'number' => $params['number'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'birthday' => $params['birthday'],
+ 'bank' => $params['bank'],
+ 'account' => $params['account'],
+ 'tax' => $params['tax'],
+ 'other' => $params['other'],
+ 'email' => $params['email'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort'],
+ 'customer_type' => $params['customer_type'],
+ 'price_level' => $params['price_level'],
+ 'dept_type' => $params['dept_type'],
+ 'related_suppliers' => $params['related_suppliers'],
+ 'invoice_type' => $params['invoice_type']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除客户管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public static function delete(array $params): bool
+ {
+ return Customer::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取客户管理详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public static function detail($params): array
+ {
+ return Customer::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/goods/BrandLogic.php b/app/admin/logic/goods/BrandLogic.php
new file mode 100644
index 0000000..89288e3
--- /dev/null
+++ b/app/admin/logic/goods/BrandLogic.php
@@ -0,0 +1,106 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'pic' => $params['pic'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑商品品牌
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Brand::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'pic' => $params['pic'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除商品品牌
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public static function delete(array $params): bool
+ {
+ return Brand::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取商品品牌详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public static function detail($params): array
+ {
+ return Brand::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/goods/CodeLogic.php b/app/admin/logic/goods/CodeLogic.php
new file mode 100644
index 0000000..957eb6d
--- /dev/null
+++ b/app/admin/logic/goods/CodeLogic.php
@@ -0,0 +1,106 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'code' => $params['code'],
+ 'type' => $params['type'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑条码管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Code::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'code' => $params['code'],
+ 'type' => $params['type'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除条码管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public static function delete(array $params): bool
+ {
+ return Code::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取条码管理详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public static function detail($params): array
+ {
+ return Code::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/goods/GoodsLogic.php b/app/admin/logic/goods/GoodsLogic.php
new file mode 100644
index 0000000..df8ec65
--- /dev/null
+++ b/app/admin/logic/goods/GoodsLogic.php
@@ -0,0 +1,134 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'spec' => $params['spec'],
+ 'class' => $params['class'],
+ 'brand' => $params['brand'],
+ 'unit' => $params['unit'],
+ 'buy' => $params['buy'],
+ 'sell' => $params['sell'],
+ 'retail' => $params['retail'],
+ 'integral' => $params['integral'],
+ 'code' => $params['code'],
+ 'warehouse' => $params['warehouse'],
+ 'location' => $params['location'],
+ 'stocktip' => $params['stocktip'],
+ 'retail_name' => $params['retail_name'],
+ 'imgs' => $params['imgs'],
+ 'details' => $params['details']?implode(',',$params['details']):'',
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑商品列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Goods::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'spec' => $params['spec'],
+ 'class' => $params['class'],
+ 'brand' => $params['brand'],
+ 'unit' => $params['unit'],
+ 'buy' => $params['buy'],
+ 'sell' => $params['sell'],
+ 'retail' => $params['retail'],
+ 'integral' => $params['integral'],
+ 'code' => $params['code'],
+ 'warehouse' => $params['warehouse'],
+ 'location' => $params['location'],
+ 'stocktip' => $params['stocktip'],
+ 'retail_name' => $params['retail_name'],
+ 'imgs' => $params['imgs'],
+ 'details' => $params['details']?implode(',',$params['details']):'',
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除商品列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public static function delete(array $params): bool
+ {
+ return Goods::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取商品列表详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public static function detail($params): array
+ {
+ return Goods::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/goods/GoodsclassLogic.php b/app/admin/logic/goods/GoodsclassLogic.php
new file mode 100644
index 0000000..f31c3dd
--- /dev/null
+++ b/app/admin/logic/goods/GoodsclassLogic.php
@@ -0,0 +1,102 @@
+ $params['pid'],
+ 'name' => $params['name'],
+ 'data' => $params['data'],
+ 'pic' => $params['pic'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑商品分类
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Goodsclass::where('id', $params['id'])->update([
+ 'pid' => $params['pid'],
+ 'name' => $params['name'],
+ 'data' => $params['data'],
+ 'pic' => $params['pic'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除商品分类
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public static function delete(array $params): bool
+ {
+ return Goodsclass::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取商品分类详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public static function detail($params): array
+ {
+ return Goodsclass::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/goods/UnitLogic.php b/app/admin/logic/goods/UnitLogic.php
new file mode 100644
index 0000000..37d68cb
--- /dev/null
+++ b/app/admin/logic/goods/UnitLogic.php
@@ -0,0 +1,102 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'data' => $params['data'],
+ 'more' => $params['more']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑计量单位
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Unit::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'data' => $params['data'],
+ 'more' => $params['more']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除计量单位
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public static function delete(array $params): bool
+ {
+ return Unit::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取计量单位详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public static function detail($params): array
+ {
+ return Unit::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/merchat/MerchantLogic.php b/app/admin/logic/merchat/MerchantLogic.php
new file mode 100644
index 0000000..da09c35
--- /dev/null
+++ b/app/admin/logic/merchat/MerchantLogic.php
@@ -0,0 +1,142 @@
+ $params['mer_id'],
+ 'category_id' => $params['category_id'],
+ 'type_id' => $params['type_id'],
+ 'mer_name' => $params['mer_name'],
+ 'credit_buy' => $params['credit_buy'],
+ 'settle_cycle' => $params['settle_cycle'],
+ 'interest_rate' => $params['interest_rate'],
+ 'city_id' => $params['city_id'],
+ 'area_id' => $params['area_id'],
+ 'street_id' => $params['street_id'],
+ 'village_id' => $params['village_id'],
+ 'mer_address' => $params['mer_address'],
+ 'mer_avatar' => $params['mer_avatar'],
+ 'mark' => $params['mark'],
+ 'sort' => $params['sort'],
+ 'status' => $params['status'],
+ 'commission_rate' => $params['commission_rate'],
+ 'commission_switch' => $params['commission_switch'],
+ 'long' => $params['long'],
+ 'lat' => $params['lat'],
+ 'service_phone' => $params['service_phone'],
+ 'mer_money' => $params['mer_money'],
+ 'financial_bank' => $params['financial_bank'],
+ 'financial_wechat' => $params['financial_wechat'],
+ 'financial_alipay' => $params['financial_alipay']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑商户列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Merchant::where('mer_id', $params['mer_id'])->update([
+ 'mer_id' => $params['mer_id'],
+ 'category_id' => $params['category_id'],
+ 'type_id' => $params['type_id'],
+ 'mer_name' => $params['mer_name'],
+ 'credit_buy' => $params['credit_buy'],
+ 'settle_cycle' => $params['settle_cycle'],
+ 'interest_rate' => $params['interest_rate'],
+ 'city_id' => $params['city_id'],
+ 'area_id' => $params['area_id'],
+ 'street_id' => $params['street_id'],
+ 'village_id' => $params['village_id'],
+ 'mer_address' => $params['mer_address'],
+ 'mer_avatar' => $params['mer_avatar'],
+ 'mark' => $params['mark'],
+ 'sort' => $params['sort'],
+ 'status' => $params['status'],
+ 'commission_rate' => $params['commission_rate'],
+ 'commission_switch' => $params['commission_switch'],
+ 'long' => $params['long'],
+ 'lat' => $params['lat'],
+ 'service_phone' => $params['service_phone'],
+ 'mer_money' => $params['mer_money'],
+ 'financial_bank' => $params['financial_bank'],
+ 'financial_wechat' => $params['financial_wechat'],
+ 'financial_alipay' => $params['financial_alipay']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除商户列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public static function delete(array $params): bool
+ {
+ return Merchant::destroy($params['mer_id']);
+ }
+
+
+ /**
+ * @notes 获取商户列表详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public static function detail($params): array
+ {
+ return Merchant::findOrEmpty($params['mer_id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/supplier/SupplierLogic.php b/app/admin/logic/supplier/SupplierLogic.php
new file mode 100644
index 0000000..e11605e
--- /dev/null
+++ b/app/admin/logic/supplier/SupplierLogic.php
@@ -0,0 +1,130 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'uid' => $params['uid'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'bank' => $params['bank'],
+ 'account' => $params['account'],
+ 'tax' => $params['tax'],
+ 'other' => $params['other'],
+ 'email' => $params['email'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'supplier_type' => $params['supplier_type'],
+ 'tax_rate' => $params['tax_rate'],
+ 'invoice_type' => $params['invoice_type'],
+ 'dept_type' => $params['dept_type'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑供应商管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Supplier::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'number' => $params['number'],
+ 'uid' => $params['uid'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'bank' => $params['bank'],
+ 'account' => $params['account'],
+ 'tax' => $params['tax'],
+ 'other' => $params['other'],
+ 'email' => $params['email'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'supplier_type' => $params['supplier_type'],
+ 'tax_rate' => $params['tax_rate'],
+ 'invoice_type' => $params['invoice_type'],
+ 'dept_type' => $params['dept_type'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除供应商管理
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public static function delete(array $params): bool
+ {
+ return Supplier::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取供应商管理详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public static function detail($params): array
+ {
+ return Supplier::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/logic/warehouse/WarehouseLogic.php b/app/admin/logic/warehouse/WarehouseLogic.php
new file mode 100644
index 0000000..34d4a80
--- /dev/null
+++ b/app/admin/logic/warehouse/WarehouseLogic.php
@@ -0,0 +1,112 @@
+ $params['name'],
+ 'py' => $params['py'],
+ 'dept_id' => $params['dept_id'],
+ 'number' => $params['number'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 编辑仓库列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public static function edit(array $params): bool
+ {
+ Db::startTrans();
+ try {
+ Warehouse::where('id', $params['id'])->update([
+ 'name' => $params['name'],
+ 'py' => $params['py'],
+ 'dept_id' => $params['dept_id'],
+ 'number' => $params['number'],
+ 'contacts' => $params['contacts'],
+ 'tel' => $params['tel'],
+ 'add' => $params['add'],
+ 'data' => $params['data'],
+ 'more' => $params['more'],
+ 'sort' => $params['sort']
+ ]);
+
+ Db::commit();
+ return true;
+ } catch (\Exception $e) {
+ Db::rollback();
+ self::setError($e->getMessage());
+ return false;
+ }
+ }
+
+
+ /**
+ * @notes 删除仓库列表
+ * @param array $params
+ * @return bool
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public static function delete(array $params): bool
+ {
+ return Warehouse::destroy($params['id']);
+ }
+
+
+ /**
+ * @notes 获取仓库列表详情
+ * @param $params
+ * @return array
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public static function detail($params): array
+ {
+ return Warehouse::findOrEmpty($params['id'])->toArray();
+ }
+}
\ No newline at end of file
diff --git a/app/admin/validate/customer/CustomerValidate.php b/app/admin/validate/customer/CustomerValidate.php
new file mode 100644
index 0000000..5a89130
--- /dev/null
+++ b/app/admin/validate/customer/CustomerValidate.php
@@ -0,0 +1,84 @@
+ 'require',
+ 'name' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '客户名称',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return CustomerValidate
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return CustomerValidate
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return CustomerValidate
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return CustomerValidate
+ * @author likeadmin
+ * @date 2024/04/23 14:44
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/goods/BrandValidate.php b/app/admin/validate/goods/BrandValidate.php
new file mode 100644
index 0000000..3d54707
--- /dev/null
+++ b/app/admin/validate/goods/BrandValidate.php
@@ -0,0 +1,84 @@
+ 'require',
+ 'name' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '品牌名称',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return BrandValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return BrandValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return BrandValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return BrandValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:34
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/goods/CodeValidate.php b/app/admin/validate/goods/CodeValidate.php
new file mode 100644
index 0000000..6ac9834
--- /dev/null
+++ b/app/admin/validate/goods/CodeValidate.php
@@ -0,0 +1,90 @@
+ 'require',
+ 'name' => 'require',
+ 'py' => 'require',
+ 'code' => 'require',
+ 'type' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '条码名称',
+ 'py' => '拼音信息',
+ 'code' => '条码内容',
+ 'type' => '条码类型0:条形码 | 1:二维码',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return CodeValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name','py','code','type']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return CodeValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name','py','code','type']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return CodeValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return CodeValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:54
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/goods/GoodsValidate.php b/app/admin/validate/goods/GoodsValidate.php
new file mode 100644
index 0000000..3424a51
--- /dev/null
+++ b/app/admin/validate/goods/GoodsValidate.php
@@ -0,0 +1,93 @@
+ 'require',
+ 'name' => 'require',
+ 'class' => 'require',
+ 'brand' => 'require',
+ 'unit' => 'require',
+ // 'warehouse' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '商品名称',
+ 'py' => '首拼字母',
+ 'class' => '商品分类',
+ 'brand' => '商品品牌',
+ 'unit' => '商品单位',
+ 'warehouse' => '默认仓库',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return GoodsValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name','py','class','brand','unit','warehouse']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return GoodsValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name','py','class','brand','unit','warehouse']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return GoodsValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return GoodsValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:28
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/goods/GoodsclassValidate.php b/app/admin/validate/goods/GoodsclassValidate.php
new file mode 100644
index 0000000..d114f15
--- /dev/null
+++ b/app/admin/validate/goods/GoodsclassValidate.php
@@ -0,0 +1,86 @@
+ 'require',
+ 'pid' => 'require',
+ 'name' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'pid' => '所属ID',
+ 'name' => '分类名称',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return GoodsclassValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['pid','name']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return GoodsclassValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','pid','name']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return GoodsclassValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return GoodsclassValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:27
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/goods/UnitValidate.php b/app/admin/validate/goods/UnitValidate.php
new file mode 100644
index 0000000..9c75339
--- /dev/null
+++ b/app/admin/validate/goods/UnitValidate.php
@@ -0,0 +1,84 @@
+ 'require',
+ 'name' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '单位名称',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return UnitValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return UnitValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return UnitValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return UnitValidate
+ * @author likeadmin
+ * @date 2024/04/23 10:42
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/merchat/MerchantValidate.php b/app/admin/validate/merchat/MerchantValidate.php
new file mode 100644
index 0000000..cc1cdd1
--- /dev/null
+++ b/app/admin/validate/merchat/MerchantValidate.php
@@ -0,0 +1,104 @@
+ 'require',
+ 'category_id' => 'require',
+ 'mer_name' => 'require',
+ 'credit_buy' => 'require',
+ 'settle_cycle' => 'require',
+ 'interest_rate' => 'require',
+ 'mer_address' => 'require',
+ 'mark' => 'require',
+ 'sort' => 'require',
+ 'status' => 'require',
+ 'service_phone' => 'require',
+ 'mer_money' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'mer_id' => 'mer_id',
+ 'category_id' => '商户分类',
+ 'mer_name' => '商户名称',
+ 'credit_buy' => '是否支持先货后款',
+ 'settle_cycle' => '结算周期,单位天',
+ 'interest_rate' => '利率',
+ 'mer_address' => '商户地址',
+ 'mark' => '商户备注',
+ 'sort' => 'sort',
+ 'status' => '商户是否禁用0锁定,1正常',
+ 'service_phone' => '店铺电话',
+ 'mer_money' => '商户余额',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return MerchantValidate
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['category_id','mer_name','credit_buy','settle_cycle','interest_rate','mer_address','mark','sort','status','service_phone','mer_money']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return MerchantValidate
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['mer_id','category_id','mer_name','credit_buy','settle_cycle','interest_rate','mer_address','mark','sort','status','service_phone','mer_money']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return MerchantValidate
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['mer_id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return MerchantValidate
+ * @author likeadmin
+ * @date 2024/04/23 16:35
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['mer_id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/supplier/SupplierValidate.php b/app/admin/validate/supplier/SupplierValidate.php
new file mode 100644
index 0000000..f37ba20
--- /dev/null
+++ b/app/admin/validate/supplier/SupplierValidate.php
@@ -0,0 +1,84 @@
+ 'require',
+ 'name' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '名称',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return SupplierValidate
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return SupplierValidate
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return SupplierValidate
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return SupplierValidate
+ * @author likeadmin
+ * @date 2024/04/23 15:56
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/admin/validate/warehouse/WarehouseValidate.php b/app/admin/validate/warehouse/WarehouseValidate.php
new file mode 100644
index 0000000..2ed0da7
--- /dev/null
+++ b/app/admin/validate/warehouse/WarehouseValidate.php
@@ -0,0 +1,86 @@
+ 'require',
+ 'name' => 'require',
+ 'py' => 'require',
+ ];
+
+
+ /**
+ * 参数描述
+ * @var string[]
+ */
+ protected $field = [
+ 'id' => 'id',
+ 'name' => '仓库名称',
+ 'py' => '首拼信息',
+ ];
+
+
+ /**
+ * @notes 添加场景
+ * @return WarehouseValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function sceneAdd()
+ {
+ return $this->only(['name','py']);
+ }
+
+
+ /**
+ * @notes 编辑场景
+ * @return WarehouseValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function sceneEdit()
+ {
+ return $this->only(['id','name','py']);
+ }
+
+
+ /**
+ * @notes 删除场景
+ * @return WarehouseValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function sceneDelete()
+ {
+ return $this->only(['id']);
+ }
+
+
+ /**
+ * @notes 详情场景
+ * @return WarehouseValidate
+ * @author likeadmin
+ * @date 2024/04/23 11:06
+ */
+ public function sceneDetail()
+ {
+ return $this->only(['id']);
+ }
+
+}
\ No newline at end of file
diff --git a/app/common/model/customer/Customer.php b/app/common/model/customer/Customer.php
new file mode 100644
index 0000000..ed5c889
--- /dev/null
+++ b/app/common/model/customer/Customer.php
@@ -0,0 +1,22 @@
+hasOne(Goodsclass::class,'id','class')->bind(['class_name'=>'name']);
+ }
+ public function brandName()
+ {
+ return $this->hasOne(Brand::class,'id','brand')->bind(['brand_name'=>'name']);
+ }
+ public function unitName()
+ {
+ return $this->hasOne(Unit::class,'id','unit')->bind(['unit_name'=>'name']);
+ }
+ public function warehouseName()
+ {
+ return $this->hasOne(Warehouse::class,'id','warehouse')->bind(['warehouse_name'=>'name']);
+ }
+}
\ No newline at end of file
diff --git a/app/common/model/goods/Goodsclass.php b/app/common/model/goods/Goodsclass.php
new file mode 100644
index 0000000..1cecc7e
--- /dev/null
+++ b/app/common/model/goods/Goodsclass.php
@@ -0,0 +1,22 @@
+getFormViewContent(),
+ $this->getUpperCamelName(),
+ $this->getDictDataContent(),
+ $this->getDictDataApiContent(),
+ $this->getFormDataContent(),
+ $this->tableData['table_comment'],
+ $this->getPkContent(),
+ $this->getTableName(),
+ $this->getCheckBoxJoinContent(),
+ $this->getCheckBoxSplitContent(),
+ $this->getFormDateContent(),
+ $this->getLowerCamelName(),
+ $this->getImportListsContent(),
+ $this->getTreeConstContent(),
+ $this->getTreeListsContent(),
+ ];
+
+ $templatePath = $this->getTemplatePath('vue/details');
+
+ // 替换内容
+ $content = $this->replaceFileData($needReplace, $waitReplace, $templatePath);
+
+ $this->setContent($content);
+ }
+
+
+ /**
+ * @notes 复选框处理
+ * @return string
+ * @author 段誉
+ * @date 2022/6/24 19:30
+ */
+ public function getCheckBoxJoinContent()
+ {
+ $content = '';
+ foreach ($this->tableColumn as $column) {
+ if (empty($column['view_type']) || $column['is_pk']) {
+ continue;
+ }
+ if ($column['view_type'] != 'checkbox') {
+ continue;
+ }
+ $content .= $column['column_name'] . ': formData.' . $column['column_name'] . '.join(",")' . PHP_EOL;
+ }
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+ return $content;
+ }
+
+
+ /**
+ * @notes 复选框处理
+ * @return string
+ * @author 段誉
+ * @date 2022/6/24 19:30
+ */
+ public function getCheckBoxSplitContent()
+ {
+ $content = '';
+ foreach ($this->tableColumn as $column) {
+ if (empty($column['view_type']) || $column['is_pk']) {
+ continue;
+ }
+ if ($column['view_type'] != 'checkbox') {
+ continue;
+ }
+ $content .= '//@ts-ignore' . PHP_EOL;
+ $content .= 'data.' . $column['column_name'] . ' && ' .'(formData.' . $column['column_name'] . ' = String(data.' . $column['column_name'] . ').split(","))' . PHP_EOL;
+ }
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+ return $this->setBlankSpace($content, ' ');
+ }
+
+
+ /**
+ * @notes 树表contst
+ * @return string
+ * @author 段誉
+ * @date 2022/12/22 18:19
+ */
+ public function getTreeConstContent()
+ {
+ $content = "";
+ if ($this->isTreeCrud()) {
+ $content = file_get_contents($this->getTemplatePath('vue/other_item/editTreeConst'));
+ }
+ return $content;
+ }
+
+
+ /**
+ * @notes 获取树表列表
+ * @return string
+ * @author 段誉
+ * @date 2022/12/22 18:26
+ */
+ public function getTreeListsContent()
+ {
+ $content = '';
+ if (!$this->isTreeCrud()) {
+ return $content;
+ }
+
+ $needReplace = [
+ '{TREE_ID}',
+ '{TREE_NAME}',
+ '{UPPER_CAMEL_NAME}',
+ ];
+ $waitReplace = [
+ $this->treeConfig['tree_id'],
+ $this->treeConfig['tree_name'],
+ $this->getUpperCamelName(),
+ ];
+
+ $templatePath = $this->getTemplatePath('vue/other_item/editTreeLists');
+ if (file_exists($templatePath)) {
+ $content = $this->replaceFileData($needReplace, $waitReplace, $templatePath);
+ }
+
+ return $content;
+ }
+
+
+ /**
+ * @notes 表单日期处理
+ * @return string
+ * @author 段誉
+ * @date 2022/6/27 16:45
+ */
+ public function getFormDateContent()
+ {
+ $content = '';
+ foreach ($this->tableColumn as $column) {
+ if (empty($column['view_type']) || $column['is_pk']) {
+ continue;
+ }
+ if ($column['view_type'] != 'datetime' || $column['column_type'] != 'int') {
+ continue;
+ }
+ $content .= '//@ts-ignore' . PHP_EOL;
+ $content .= 'formData.' . $column['column_name'] . ' = timeFormat(formData.' . $column['column_name'] . ','."'yyyy-mm-dd hh:MM:ss'".') ' . PHP_EOL;
+ }
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+ return $this->setBlankSpace($content, ' ');
+ }
+
+
+ /**
+ * @notes 获取表单内容
+ * @return string
+ * @author 段誉
+ * @date 2022/6/23 11:57
+ */
+ public function getFormViewContent()
+ {
+ $content = '';
+ foreach ($this->tableColumn as $column) {
+ if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk']) {
+ continue;
+ }
+ $needReplace = [
+ '{COLUMN_COMMENT}',
+ '{COLUMN_NAME}',
+ '{DICT_TYPE}',
+ ];
+ $waitReplace = [
+ $column['column_comment'],
+ $column['column_name'],
+ $column['dict_type'],
+ ];
+
+ $viewType = $column['view_type'];
+ if($viewType=='editor'){
+ $viewType = 'editorView';
+ }
+ // 树表,树状结构下拉框
+ if ($this->isTreeCrud() && $column['column_name'] == $this->treeConfig['tree_pid']) {
+ $viewType = 'treeSelect';
+ array_push($needReplace, '{TREE_ID}', '{TREE_NAME}');
+ array_push($waitReplace, $this->treeConfig['tree_id'], $this->treeConfig['tree_name']);
+ }
+
+ $templatePath = $this->getTemplatePath('vue/form_item/' . $viewType);
+ if (!file_exists($templatePath)) {
+ continue;
+ }
+
+ // 单选框值处理
+ if ($column['view_type'] == 'radio' || $column['view_type'] == 'select') {
+ $stubItemValue = 'item.value';
+ $intFieldValue = ['tinyint', 'smallint', 'mediumint', 'int', 'integer', 'bigint'];
+ if (in_array($column['column_type'], $intFieldValue)) {
+ $stubItemValue = 'parseInt(item.value)';
+ }
+ array_push($needReplace, '{ITEM_VALUE}');
+ array_push($waitReplace, $stubItemValue);
+ }
+ array_push($needReplace, '{READONLY}');
+ array_push($waitReplace, 'true');
+ $content .= $this->replaceFileData($needReplace, $waitReplace, $templatePath) . PHP_EOL;
+ }
+
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+
+ $content = $this->setBlankSpace($content, ' ');
+ return $content;
+ }
+
+
+ /**
+ * @notes 获取字典数据内容
+ * @return string
+ * @author 段誉
+ * @date 2022/6/23 11:58
+ */
+ public function getDictDataContent()
+ {
+ $content = '';
+ $isExist = [];
+ foreach ($this->tableColumn as $column) {
+ if (empty($column['dict_type']) || $column['is_pk']) {
+ continue;
+ }
+ if (in_array($column['dict_type'], $isExist)) {
+ continue;
+ }
+ $content .= $column['dict_type'] . ': ' . "[]," . PHP_EOL;
+ $isExist[] = $column['dict_type'];
+ }
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+ return $this->setBlankSpace($content, ' ');
+ }
+
+
+ /**
+ * @notes 获取字典数据api内容
+ * @return false|string
+ * @author 段誉
+ * @date 2022/6/23 11:58
+ */
+ public function getDictDataApiContent()
+ {
+ $content = '';
+ $isExist = [];
+ foreach ($this->tableColumn as $column) {
+ if (empty($column['dict_type']) || $column['is_pk']) {
+ continue;
+ }
+ if (in_array($column['dict_type'], $isExist)) {
+ continue;
+ }
+ $needReplace = [
+ '{UPPER_CAMEL_NAME}',
+ '{DICT_TYPE}',
+ ];
+ $waitReplace = [
+ $this->getUpperCamelName(),
+ $column['dict_type'],
+ ];
+ $templatePath = $this->getTemplatePath('vue/other_item/dictDataApi');
+ if (!file_exists($templatePath)) {
+ continue;
+ }
+ $content .= $this->replaceFileData($needReplace, $waitReplace, $templatePath) . '' . PHP_EOL;
+
+ $isExist[] = $column['dict_type'];
+ }
+ $content = substr($content, 0, -1);
+ return $content;
+ }
+
+
+ /**
+ * @notes 获取表单默认字段内容
+ * @return string
+ * @author 段誉
+ * @date 2022/6/23 15:15
+ */
+ public function getFormDataContent()
+ {
+ $content = '';
+ $isExist = [];
+ foreach ($this->tableColumn as $column) {
+ if (!$column['is_insert'] || !$column['is_update'] || $column['is_pk']) {
+ continue;
+ }
+ if (in_array($column['column_name'], $isExist)) {
+ continue;
+ }
+
+ // 复选框类型返回数组
+ if ($column['view_type'] == 'checkbox') {
+ $content .= $column['column_name'] . ': ' . "[]," . PHP_EOL;
+ } else {
+ $content .= $column['column_name'] . ': ' . "''," . PHP_EOL;
+ }
+
+ $isExist[] = $column['column_name'];
+ }
+ if (!empty($content)) {
+ $content = substr($content, 0, -1);
+ }
+ return $this->setBlankSpace($content, ' ');
+ }
+
+
+
+ /**
+ * @notes 树表时导入列表
+ * @author 段誉
+ * @date 2022/12/23 9:56
+ */
+ public function getImportListsContent()
+ {
+ $content = "";
+ if ($this->isTreeCrud()) {
+ $content = "api". $this->getUpperCamelName(). 'Lists,';
+ }
+
+ if (empty($content)) {
+ return $content;
+ }
+
+ return $this->setBlankSpace($content, ' ');
+ }
+
+
+ /**
+ * @notes 获取文件生成到模块的文件夹路径
+ * @return mixed|void
+ * @author 段誉
+ * @date 2022/6/22 18:19
+ */
+ public function getModuleGenerateDir()
+ {
+ $dir = dirname(app_path()) . '/admin/src/views/' . $this->getTableName() . '/';
+ $this->checkDir($dir);
+ return $dir;
+ }
+
+
+ /**
+ * @notes 获取文件生成到runtime的文件夹路径
+ * @return string
+ * @author 段誉
+ * @date 2022/6/22 18:20
+ */
+ public function getRuntimeGenerateDir()
+ {
+ $dir = $this->generatorDir . 'vue/src/views/' . $this->getTableName() . '/';
+ $this->checkDir($dir);
+ return $dir;
+ }
+
+
+ /**
+ * @notes 生成的文件名
+ * @return string
+ * @author 段誉
+ * @date 2022/6/22 18:20
+ */
+ public function getGenerateName()
+ {
+ return 'details.vue';
+ }
+
+
+ /**
+ * @notes 文件信息
+ * @return array
+ * @author 段誉
+ * @date 2022/6/23 15:57
+ */
+ public function fileInfo(): array
+ {
+ return [
+ 'name' => $this->getGenerateName(),
+ 'type' => 'vue',
+ 'content' => $this->content
+ ];
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/common/service/generator/core/VueEditGenerator.php b/app/common/service/generator/core/VueEditGenerator.php
index 43b2e95..d6314e9 100644
--- a/app/common/service/generator/core/VueEditGenerator.php
+++ b/app/common/service/generator/core/VueEditGenerator.php
@@ -257,7 +257,8 @@ class VueEditGenerator extends BaseGenerator implements GenerateInterface
array_push($needReplace, '{ITEM_VALUE}');
array_push($waitReplace, $stubItemValue);
}
-
+ array_push($needReplace, '{READONLY}');
+ array_push($waitReplace, 'false');
$content .= $this->replaceFileData($needReplace, $waitReplace, $templatePath) . PHP_EOL;
}
diff --git a/app/common/service/generator/stub/vue/details.stub b/app/common/service/generator/stub/vue/details.stub
new file mode 100644
index 0000000..99bcf05
--- /dev/null
+++ b/app/common/service/generator/stub/vue/details.stub
@@ -0,0 +1,77 @@
+
+
+
+
+
diff --git a/app/common/service/generator/stub/vue/form_item/checkbox.stub b/app/common/service/generator/stub/vue/form_item/checkbox.stub
index 98e6329..c9c3765 100644
--- a/app/common/service/generator/stub/vue/form_item/checkbox.stub
+++ b/app/common/service/generator/stub/vue/form_item/checkbox.stub
@@ -1,5 +1,5 @@
-
+
diff --git a/app/common/service/generator/stub/vue/form_item/editorView.stub b/app/common/service/generator/stub/vue/form_item/editorView.stub
new file mode 100644
index 0000000..ab880f9
--- /dev/null
+++ b/app/common/service/generator/stub/vue/form_item/editorView.stub
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/app/common/service/generator/stub/vue/form_item/imageSelect.stub b/app/common/service/generator/stub/vue/form_item/imageSelect.stub
index 22703fc..ae29c93 100644
--- a/app/common/service/generator/stub/vue/form_item/imageSelect.stub
+++ b/app/common/service/generator/stub/vue/form_item/imageSelect.stub
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/app/common/service/generator/stub/vue/form_item/input.stub b/app/common/service/generator/stub/vue/form_item/input.stub
index ffe3884..f7323cf 100644
--- a/app/common/service/generator/stub/vue/form_item/input.stub
+++ b/app/common/service/generator/stub/vue/form_item/input.stub
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/app/common/service/generator/stub/vue/form_item/radio.stub b/app/common/service/generator/stub/vue/form_item/radio.stub
index 2768885..84c7ca4 100644
--- a/app/common/service/generator/stub/vue/form_item/radio.stub
+++ b/app/common/service/generator/stub/vue/form_item/radio.stub
@@ -1,5 +1,5 @@
-
+
-
+
-
+
\ No newline at end of file
diff --git a/app/common/service/generator/stub/vue/form_item/treeSelect.stub b/app/common/service/generator/stub/vue/form_item/treeSelect.stub
index 54c5dd9..023b525 100644
--- a/app/common/service/generator/stub/vue/form_item/treeSelect.stub
+++ b/app/common/service/generator/stub/vue/form_item/treeSelect.stub
@@ -9,5 +9,6 @@
:default-expand-all="true"
placeholder="请选择{COLUMN_COMMENT}"
check-strictly
+ :disabled="{READONLY}"
/>
\ No newline at end of file
diff --git a/app/common/service/generator/stub/vue/search_item/select.stub b/app/common/service/generator/stub/vue/search_item/select.stub
index 854152f..8620bb2 100644
--- a/app/common/service/generator/stub/vue/search_item/select.stub
+++ b/app/common/service/generator/stub/vue/search_item/select.stub
@@ -1,5 +1,6 @@
-
+
=5.2"
+ "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0"
+ },
+ "require-dev": {
+ "cerdic/css-tidy": "^1.7 || ^2.0",
+ "simpletest/simpletest": "dev-master"
+ },
+ "suggest": {
+ "cerdic/css-tidy": "If you want to use the filter 'Filter.ExtractStyleBlocks'.",
+ "ext-bcmath": "Used for unit conversion and imagecrash protection",
+ "ext-iconv": "Converts text to and from non-UTF-8 encodings",
+ "ext-tidy": "Used for pretty-printing HTML"
},
"type": "library",
"autoload": {
@@ -568,9 +578,9 @@
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.14.0"
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0"
},
- "time": "2021-12-25T01:21:49+00:00"
+ "time": "2022-09-18T07:06:19+00:00"
},
{
"name": "graham-campbell/result-type",
@@ -642,16 +652,16 @@
},
{
"name": "guzzlehttp/command",
- "version": "1.3.0",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/command.git",
- "reference": "3372bcfd79d4b357b6871665bf06155515e8d844"
+ "reference": "0eebc653784f4902b3272e826fe8e88743d14e77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/command/zipball/3372bcfd79d4b357b6871665bf06155515e8d844",
- "reference": "3372bcfd79d4b357b6871665bf06155515e8d844",
+ "url": "https://api.github.com/repos/guzzle/command/zipball/0eebc653784f4902b3272e826fe8e88743d14e77",
+ "reference": "0eebc653784f4902b3272e826fe8e88743d14e77",
"shasum": "",
"mirrors": [
{
@@ -661,13 +671,13 @@
]
},
"require": {
- "guzzlehttp/guzzle": "^7.5.1",
- "guzzlehttp/promises": "^1.5.3 || ^2.0",
- "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+ "guzzlehttp/guzzle": "^7.8",
+ "guzzlehttp/promises": "^1.5.3 || ^2.0.1",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
+ "bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.19 || ^9.5.8"
},
"type": "library",
@@ -711,7 +721,7 @@
"description": "Provides the foundation for building command-based web service clients",
"support": {
"issues": "https://github.com/guzzle/command/issues",
- "source": "https://github.com/guzzle/command/tree/1.3.0"
+ "source": "https://github.com/guzzle/command/tree/1.3.1"
},
"funding": [
{
@@ -727,7 +737,7 @@
"type": "tidelift"
}
],
- "time": "2023-05-21T14:15:09+00:00"
+ "time": "2023-12-03T20:46:20+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -863,16 +873,16 @@
},
{
"name": "guzzlehttp/guzzle-services",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle-services.git",
- "reference": "f4bb1c205152a56741624b88753732e01a60565c"
+ "reference": "bcab7c0d61672b606510a6fe5af3039d04968c0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/f4bb1c205152a56741624b88753732e01a60565c",
- "reference": "f4bb1c205152a56741624b88753732e01a60565c",
+ "url": "https://api.github.com/repos/guzzle/guzzle-services/zipball/bcab7c0d61672b606510a6fe5af3039d04968c0f",
+ "reference": "bcab7c0d61672b606510a6fe5af3039d04968c0f",
"shasum": "",
"mirrors": [
{
@@ -882,14 +892,14 @@
]
},
"require": {
- "guzzlehttp/command": "^1.3",
- "guzzlehttp/guzzle": "^7.7",
- "guzzlehttp/psr7": "^1.9.1 || ^2.4.5",
+ "guzzlehttp/command": "^1.3.1",
+ "guzzlehttp/guzzle": "^7.8",
+ "guzzlehttp/psr7": "^1.9.1 || ^2.5.1",
"guzzlehttp/uri-template": "^1.0.1",
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
+ "bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.19 || ^9.5.8"
},
"suggest": {
@@ -936,7 +946,7 @@
"description": "Provides an implementation of the Guzzle Command library that uses Guzzle service descriptions to describe web services, serialize requests, and parse responses into easy to use model structures.",
"support": {
"issues": "https://github.com/guzzle/guzzle-services/issues",
- "source": "https://github.com/guzzle/guzzle-services/tree/1.4.0"
+ "source": "https://github.com/guzzle/guzzle-services/tree/1.4.1"
},
"funding": [
{
@@ -952,20 +962,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-21T14:21:30+00:00"
+ "time": "2023-12-03T20:48:14+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "2.0.1",
+ "version": "2.0.2",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "111166291a0f8130081195ac4556a5587d7f1b5d"
+ "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d",
- "reference": "111166291a0f8130081195ac4556a5587d7f1b5d",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223",
+ "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223",
"shasum": "",
"mirrors": [
{
@@ -978,8 +988,8 @@
"php": "^7.2.5 || ^8.0"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
- "phpunit/phpunit": "^8.5.29 || ^9.5.23"
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15"
},
"type": "library",
"extra": {
@@ -1025,7 +1035,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.0.1"
+ "source": "https://github.com/guzzle/promises/tree/2.0.2"
},
"funding": [
{
@@ -1041,7 +1051,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-03T15:11:55+00:00"
+ "time": "2023-12-03T20:19:20+00:00"
},
{
"name": "guzzlehttp/psr7",
@@ -1167,16 +1177,16 @@
},
{
"name": "guzzlehttp/uri-template",
- "version": "v1.0.2",
+ "version": "v1.0.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/uri-template.git",
- "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d"
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d",
- "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c",
+ "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c",
"shasum": "",
"mirrors": [
{
@@ -1187,14 +1197,20 @@
},
"require": {
"php": "^7.2.5 || ^8.0",
- "symfony/polyfill-php80": "^1.17"
+ "symfony/polyfill-php80": "^1.24"
},
"require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.1",
- "phpunit/phpunit": "^8.5.19 || ^9.5.8",
+ "bamarni/composer-bin-plugin": "^1.8.2",
+ "phpunit/phpunit": "^8.5.36 || ^9.6.15",
"uri-template/tests": "1.0.0"
},
"type": "library",
+ "extra": {
+ "bamarni-bin": {
+ "bin-links": true,
+ "forward-command": false
+ }
+ },
"autoload": {
"psr-4": {
"GuzzleHttp\\UriTemplate\\": "src"
@@ -1233,7 +1249,7 @@
],
"support": {
"issues": "https://github.com/guzzle/uri-template/issues",
- "source": "https://github.com/guzzle/uri-template/tree/v1.0.2"
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.3"
},
"funding": [
{
@@ -1249,7 +1265,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-27T10:19:19+00:00"
+ "time": "2023-12-03T19:50:20+00:00"
},
{
"name": "illuminate/collections",
@@ -1675,16 +1691,16 @@
},
{
"name": "maennchen/zipstream-php",
- "version": "2.4.0",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/maennchen/ZipStream-PHP.git",
- "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3"
+ "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3",
- "reference": "3fa72e4c71a43f9e9118752a5c90e476a8dc9eb3",
+ "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
+ "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1",
"shasum": "",
"mirrors": [
{
@@ -1695,19 +1711,22 @@
},
"require": {
"ext-mbstring": "*",
- "myclabs/php-enum": "^1.5",
- "php": "^8.0",
- "psr/http-message": "^1.0"
+ "ext-zlib": "*",
+ "php-64bit": "^8.1"
},
"require-dev": {
"ext-zip": "*",
- "friendsofphp/php-cs-fixer": "^3.9",
- "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0",
+ "friendsofphp/php-cs-fixer": "^3.16",
+ "guzzlehttp/guzzle": "^7.5",
"mikey179/vfsstream": "^1.6",
- "php-coveralls/php-coveralls": "^2.4",
- "phpunit/phpunit": "^8.5.8 || ^9.4.2",
+ "php-coveralls/php-coveralls": "^2.5",
+ "phpunit/phpunit": "^10.0",
"vimeo/psalm": "^5.0"
},
+ "suggest": {
+ "guzzlehttp/psr7": "^2.4",
+ "psr/http-message": "^2.0"
+ },
"type": "library",
"autoload": {
"psr-4": {
@@ -1743,7 +1762,7 @@
],
"support": {
"issues": "https://github.com/maennchen/ZipStream-PHP/issues",
- "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.4.0"
+ "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0"
},
"funding": [
{
@@ -1755,7 +1774,7 @@
"type": "open_collective"
}
],
- "time": "2022-12-08T12:29:14+00:00"
+ "time": "2023-06-21T14:59:35+00:00"
},
{
"name": "markbaker/complex",
@@ -2040,75 +2059,6 @@
],
"time": "2023-10-27T15:25:26+00:00"
},
- {
- "name": "myclabs/php-enum",
- "version": "1.8.4",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/php-enum.git",
- "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483",
- "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
- },
- "require": {
- "ext-json": "*",
- "php": "^7.3 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.5",
- "squizlabs/php_codesniffer": "1.*",
- "vimeo/psalm": "^4.6.2"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "MyCLabs\\Enum\\": "src/"
- },
- "classmap": [
- "stubs/Stringable.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP Enum contributors",
- "homepage": "https://github.com/myclabs/php-enum/graphs/contributors"
- }
- ],
- "description": "PHP Enum implementation",
- "homepage": "http://github.com/myclabs/php-enum",
- "keywords": [
- "enum"
- ],
- "support": {
- "issues": "https://github.com/myclabs/php-enum/issues",
- "source": "https://github.com/myclabs/php-enum/tree/1.8.4"
- },
- "funding": [
- {
- "url": "https://github.com/mnapoli",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum",
- "type": "tidelift"
- }
- ],
- "time": "2022-08-04T09:53:51+00:00"
- },
{
"name": "nesbot/carbon",
"version": "2.72.3",
@@ -2471,16 +2421,16 @@
},
{
"name": "phpoffice/phpspreadsheet",
- "version": "1.24.1",
+ "version": "1.29.0",
"source": {
"type": "git",
"url": "https://github.com/PHPOffice/PhpSpreadsheet.git",
- "reference": "69991111e05fca3ff7398e1e7fca9ebed33efec6"
+ "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/69991111e05fca3ff7398e1e7fca9ebed33efec6",
- "reference": "69991111e05fca3ff7398e1e7fca9ebed33efec6",
+ "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fde2ccf55eaef7e86021ff1acce26479160a0fa0",
+ "reference": "fde2ccf55eaef7e86021ff1acce26479160a0fa0",
"shasum": "",
"mirrors": [
{
@@ -2503,33 +2453,34 @@
"ext-xmlwriter": "*",
"ext-zip": "*",
"ext-zlib": "*",
- "ezyang/htmlpurifier": "^4.13",
- "maennchen/zipstream-php": "^2.1",
+ "ezyang/htmlpurifier": "^4.15",
+ "maennchen/zipstream-php": "^2.1 || ^3.0",
"markbaker/complex": "^3.0",
"markbaker/matrix": "^3.0",
- "php": "^7.3 || ^8.0",
+ "php": "^7.4 || ^8.0",
"psr/http-client": "^1.0",
"psr/http-factory": "^1.0",
- "psr/simple-cache": "^1.0 || ^2.0"
+ "psr/simple-cache": "^1.0 || ^2.0 || ^3.0"
},
"require-dev": {
- "dealerdirect/phpcodesniffer-composer-installer": "dev-master",
+ "dealerdirect/phpcodesniffer-composer-installer": "dev-main",
"dompdf/dompdf": "^1.0 || ^2.0",
"friendsofphp/php-cs-fixer": "^3.2",
- "jpgraph/jpgraph": "^4.0",
- "mpdf/mpdf": "8.1.1",
+ "mitoteam/jpgraph": "^10.3",
+ "mpdf/mpdf": "^8.1.1",
"phpcompatibility/php-compatibility": "^9.3",
"phpstan/phpstan": "^1.1",
"phpstan/phpstan-phpunit": "^1.0",
- "phpunit/phpunit": "^8.5 || ^9.0",
+ "phpunit/phpunit": "^8.5 || ^9.0 || ^10.0",
"squizlabs/php_codesniffer": "^3.7",
- "tecnickcom/tcpdf": "^6.4"
+ "tecnickcom/tcpdf": "^6.5"
},
"suggest": {
- "dompdf/dompdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)",
- "jpgraph/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
+ "dompdf/dompdf": "Option for rendering PDF with PDF Writer",
+ "ext-intl": "PHP Internationalization Functions",
+ "mitoteam/jpgraph": "Option for rendering charts, or including charts with PDF or HTML Writers",
"mpdf/mpdf": "Option for rendering PDF with PDF Writer",
- "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer (doesn't yet support PHP8)"
+ "tecnickcom/tcpdf": "Option for rendering PDF with PDF Writer"
},
"type": "library",
"autoload": {
@@ -2575,9 +2526,9 @@
],
"support": {
"issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues",
- "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.24.1"
+ "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.29.0"
},
- "time": "2022-07-18T19:50:48+00:00"
+ "time": "2023-06-14T22:48:31+00:00"
},
{
"name": "phpoption/phpoption",
@@ -2823,6 +2774,62 @@
},
"time": "2021-11-05T16:50:12+00:00"
},
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
{
"name": "psr/http-client",
"version": "1.0.3",
@@ -2944,16 +2951,16 @@
},
{
"name": "psr/http-message",
- "version": "1.1",
+ "version": "2.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
- "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
- "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
"shasum": "",
"mirrors": [
{
@@ -2968,7 +2975,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -2983,7 +2990,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for HTTP messages",
@@ -2997,9 +3004,9 @@
"response"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/1.1"
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
},
- "time": "2023-04-04T09:50:52+00:00"
+ "time": "2023-04-04T09:54:51+00:00"
},
{
"name": "psr/log",
@@ -3059,16 +3066,16 @@
},
{
"name": "psr/simple-cache",
- "version": "2.0.0",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/simple-cache.git",
- "reference": "8707bf3cea6f710bf6ef05491234e3ab06f6432a"
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/8707bf3cea6f710bf6ef05491234e3ab06f6432a",
- "reference": "8707bf3cea6f710bf6ef05491234e3ab06f6432a",
+ "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
+ "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
"shasum": "",
"mirrors": [
{
@@ -3083,7 +3090,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.0.x-dev"
}
},
"autoload": {
@@ -3110,9 +3117,9 @@
"simple-cache"
],
"support": {
- "source": "https://github.com/php-fig/simple-cache/tree/2.0.0"
+ "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
},
- "time": "2021-10-29T13:22:09+00:00"
+ "time": "2021-10-29T13:26:27+00:00"
},
{
"name": "qcloud/cos-sdk-v5",
@@ -3301,16 +3308,16 @@
},
{
"name": "symfony/cache",
- "version": "v5.4.36",
+ "version": "v6.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba"
+ "reference": "0ef36534694c572ff526d91c7181f3edede176e7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/a30f316214d908cf5874f700f3f3fb29ceee91ba",
- "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/0ef36534694c572ff526d91c7181f3edede176e7",
+ "reference": "0ef36534694c572ff526d91c7181f3edede176e7",
"shasum": "",
"mirrors": [
{
@@ -3320,45 +3327,44 @@
]
},
"require": {
- "php": ">=7.2.5",
- "psr/cache": "^1.0|^2.0",
+ "php": ">=8.1",
+ "psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
- "symfony/cache-contracts": "^1.1.7|^2",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ "symfony/cache-contracts": "^2.5|^3",
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/var-exporter": "^6.3.6|^7.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
- "symfony/dependency-injection": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/var-dumper": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/var-dumper": "<5.4"
},
"provide": {
- "psr/cache-implementation": "1.0|2.0",
- "psr/simple-cache-implementation": "1.0|2.0",
- "symfony/cache-implementation": "1.0|2.0"
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"cache/integration-tests": "dev-master",
- "doctrine/cache": "^1.6|^2.0",
"doctrine/dbal": "^2.13.1|^3|^4",
- "predis/predis": "^1.1",
- "psr/simple-cache": "^1.0|^2.0",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/filesystem": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/messenger": "^4.4|^5.0|^6.0",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ "predis/predis": "^1.1|^2.0",
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Cache\\": ""
},
+ "classmap": [
+ "Traits/ValueWrapper.php"
+ ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -3384,7 +3390,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v5.4.36"
+ "source": "https://github.com/symfony/cache/tree/v6.4.4"
},
"funding": [
{
@@ -3400,7 +3406,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-19T13:08:14+00:00"
+ "time": "2024-02-22T20:27:10+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -3489,16 +3495,16 @@
},
{
"name": "symfony/console",
- "version": "v7.0.3",
+ "version": "v6.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456"
+ "reference": "0d9e4eb5ad413075624378f474c4167ea202de78"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456",
- "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456",
+ "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78",
+ "reference": "0d9e4eb5ad413075624378f474c4167ea202de78",
"shasum": "",
"mirrors": [
{
@@ -3508,33 +3514,34 @@
]
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^6.4|^7.0"
+ "symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
- "symfony/dependency-injection": "<6.4",
- "symfony/dotenv": "<6.4",
- "symfony/event-dispatcher": "<6.4",
- "symfony/lock": "<6.4",
- "symfony/process": "<6.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3568,7 +3575,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.0.3"
+ "source": "https://github.com/symfony/console/tree/v6.4.4"
},
"funding": [
{
@@ -3584,7 +3591,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-23T15:02:46+00:00"
+ "time": "2024-02-22T20:27:10+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -4010,91 +4017,6 @@
],
"time": "2023-07-28T09:04:16+00:00"
},
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5",
- "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5",
- "shasum": "",
- "mirrors": [
- {
- "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
- "preferred": true
- }
- ]
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2023-01-26T09:26:14+00:00"
- },
{
"name": "symfony/polyfill-php80",
"version": "v1.29.0",
@@ -4272,16 +4194,16 @@
},
{
"name": "symfony/string",
- "version": "v7.0.4",
+ "version": "v6.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b"
+ "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b",
- "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b",
+ "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
+ "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9",
"shasum": "",
"mirrors": [
{
@@ -4291,7 +4213,7 @@
]
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -4301,11 +4223,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^6.2|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.4|^7.0"
+ "symfony/var-exporter": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4344,7 +4266,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.0.4"
+ "source": "https://github.com/symfony/string/tree/v6.4.4"
},
"funding": [
{
@@ -4360,7 +4282,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-01T13:17:36+00:00"
+ "time": "2024-02-01T13:16:41+00:00"
},
{
"name": "symfony/translation",
@@ -4549,16 +4471,16 @@
},
{
"name": "symfony/var-dumper",
- "version": "v7.0.4",
+ "version": "v6.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670"
+ "reference": "b439823f04c98b84d4366c79507e9da6230944b1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e03ad7c1535e623edbb94c22cc42353e488c6670",
- "reference": "e03ad7c1535e623edbb94c22cc42353e488c6670",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b439823f04c98b84d4366c79507e9da6230944b1",
+ "reference": "b439823f04c98b84d4366c79507e9da6230944b1",
"shasum": "",
"mirrors": [
{
@@ -4568,19 +4490,21 @@
]
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/console": "<6.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/uid": "^6.4|^7.0",
- "twig/twig": "^3.0.4"
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^6.3|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "twig/twig": "^2.13|^3.0.4"
},
"bin": [
"Resources/bin/var-dump-server"
@@ -4618,7 +4542,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.0.4"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.4"
},
"funding": [
{
@@ -4634,7 +4558,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-15T11:33:06+00:00"
+ "time": "2024-02-15T11:23:52+00:00"
},
{
"name": "symfony/var-exporter",
@@ -5490,6 +5414,229 @@
}
],
"time": "2024-02-19T02:10:39+00:00"
+ },
+ {
+ "name": "yansongda/artful",
+ "version": "v1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yansongda/artful.git",
+ "reference": "1fbf987c0deb95a9b67eb343f2b96c8489635e6f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yansongda/artful/zipball/1fbf987c0deb95a9b67eb343f2b96c8489635e6f",
+ "reference": "1fbf987c0deb95a9b67eb343f2b96c8489635e6f",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "guzzlehttp/psr7": "^2.6",
+ "php": ">=8.0",
+ "psr/container": "^1.1 || ^2.0",
+ "psr/event-dispatcher": "^1.0",
+ "psr/http-client": "^1.0",
+ "psr/http-message": "^1.1 || ^2.0",
+ "psr/log": "^1.1 || ^2.0 || ^3.0",
+ "yansongda/supports": "~4.0.9"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.44",
+ "guzzlehttp/guzzle": "^7.0",
+ "hyperf/pimple": "^2.2",
+ "mockery/mockery": "^1.4",
+ "monolog/monolog": "^2.2",
+ "phpstan/phpstan": "^1.0.0",
+ "phpunit/phpunit": "^9.0",
+ "symfony/event-dispatcher": "^5.2.0",
+ "symfony/http-foundation": "^5.2.0",
+ "symfony/psr-http-message-bridge": "^2.1",
+ "symfony/var-dumper": "^5.1"
+ },
+ "suggest": {
+ "hyperf/pimple": "其它/无框架下使用 SDK,请安装,任选其一",
+ "illuminate/container": "其它/无框架下使用 SDK,请安装,任选其一"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Yansongda\\Artful\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "yansongda",
+ "email": "me@yansongda.cn"
+ }
+ ],
+ "description": "Artful 是一个简单易用的 API 请求框架 PHP Api RequesT Framwork U Like。",
+ "keywords": [
+ "api",
+ "artful",
+ "framework",
+ "request"
+ ],
+ "support": {
+ "homepage": "https://artful.yansongda.cn",
+ "issues": "https://github.com/yansongda/artful/issues",
+ "source": "https://github.com/yansongda/artful"
+ },
+ "time": "2024-02-06T13:19:54+00:00"
+ },
+ {
+ "name": "yansongda/pay",
+ "version": "v3.6.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yansongda/pay.git",
+ "reference": "fba0bb30636cb936eed9e9078d781e0dc4e4282b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yansongda/pay/zipball/fba0bb30636cb936eed9e9078d781e0dc4e4282b",
+ "reference": "fba0bb30636cb936eed9e9078d781e0dc4e4282b",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "ext-bcmath": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-openssl": "*",
+ "ext-simplexml": "*",
+ "php": ">=8.0",
+ "yansongda/artful": "~1.0.9",
+ "yansongda/supports": "~4.0.9"
+ },
+ "conflict": {
+ "hyperf/framework": "<3.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.44",
+ "guzzlehttp/guzzle": "^7.0",
+ "hyperf/pimple": "^2.2",
+ "mockery/mockery": "^1.4",
+ "monolog/monolog": "^2.2",
+ "phpstan/phpstan": "^1.0.0",
+ "phpunit/phpunit": "^9.0",
+ "symfony/event-dispatcher": "^5.2.0",
+ "symfony/http-foundation": "^5.2.0",
+ "symfony/psr-http-message-bridge": "^2.1",
+ "symfony/var-dumper": "^5.1"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Yansongda\\Pay\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "yansongda",
+ "email": "me@yansongda.cn"
+ }
+ ],
+ "description": "可能是我用过的最优雅的 Alipay 和 WeChat 的支付 SDK 扩展包了",
+ "keywords": [
+ "alipay",
+ "pay",
+ "wechat"
+ ],
+ "support": {
+ "homepage": "https://pay.yansongda.cn",
+ "issues": "https://github.com/yansongda/pay/issues",
+ "source": "https://github.com/yansongda/pay"
+ },
+ "time": "2024-02-29T12:19:11+00:00"
+ },
+ {
+ "name": "yansongda/supports",
+ "version": "v4.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yansongda/supports.git",
+ "reference": "c3479723be665360a5635c15f184a1d0a8dc995a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yansongda/supports/zipball/c3479723be665360a5635c15f184a1d0a8dc995a",
+ "reference": "c3479723be665360a5635c15f184a1d0a8dc995a",
+ "shasum": "",
+ "mirrors": [
+ {
+ "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
+ "preferred": true
+ }
+ ]
+ },
+ "require": {
+ "php": ">=8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "mockery/mockery": "^1.4",
+ "phpstan/phpstan": "^1.1.0",
+ "phpunit/phpunit": "^9.0"
+ },
+ "suggest": {
+ "monolog/monolog": "Use logger",
+ "symfony/console": "Use stdout logger"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Functions.php"
+ ],
+ "psr-4": {
+ "Yansongda\\Supports\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "yansongda",
+ "email": "me@yansongda.cn"
+ }
+ ],
+ "description": "common components",
+ "keywords": [
+ "array",
+ "collection",
+ "config",
+ "support"
+ ],
+ "support": {
+ "issues": "https://github.com/yansongda/supports/issues",
+ "source": "https://github.com/yansongda/supports"
+ },
+ "time": "2024-01-06T05:14:33+00:00"
}
],
"packages-dev": [],
diff --git a/config/redis.php b/config/redis.php
index c0f0d63..12ab362 100644
--- a/config/redis.php
+++ b/config/redis.php
@@ -16,7 +16,7 @@ use function DI\env;
return [
'default' => [
'host' => '127.0.0.1',
- 'password' => 'jhkdjhkjdhsIUTYURTU_xM6ine',
+ 'password' => '',
'port' => 6379,
'database' => 1,
],