初始化
缺陷:主题配色需要优化整体的同风格
This commit is contained in:
@@ -17,7 +17,7 @@ class AdminController extends BaseController
|
||||
$this->service = AdminService::getInstance();
|
||||
$this->insertField = [ 'phone', 'nick_name', 'password', 'role_id' ];
|
||||
$this->updateField = [ 'id', 'phone', 'nick_name', 'role_id' ];
|
||||
$this->notRequest = ['qr_code', 'avatar', 'email', 'status'];
|
||||
$this->notRequest = ['qr_code', 'avatar', 'email', 'status', 'department_id', 'desc'];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -115,7 +115,9 @@ class AdminController extends BaseController
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取菜单列表
|
||||
* 获取当前账号的权限码
|
||||
*
|
||||
* 码由接口路径推导(admin/list → admin:list),前端 v-access 与 TableAction 的 auth 用的就是它。
|
||||
* @Method GET
|
||||
* @return JsonResponse
|
||||
* @throws Exception
|
||||
@@ -123,7 +125,7 @@ class AdminController extends BaseController
|
||||
public function codes(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
[],
|
||||
$this->service->codes(),
|
||||
'获取成功'
|
||||
);
|
||||
}
|
||||
|
||||
35
app/Http/Controllers/Api/CardClassController.php
Normal file
35
app/Http/Controllers/Api/CardClassController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\CardClassService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 色卡分类
|
||||
*/
|
||||
class CardClassController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = CardClassService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = ['status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/CarouselController.php
Normal file
35
app/Http/Controllers/Api/CarouselController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\CarouselService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序轮播图
|
||||
*/
|
||||
class CarouselController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = CarouselService::getInstance();
|
||||
$this->insertField = ['url'];
|
||||
$this->updateField = ['id', 'url'];
|
||||
$this->notRequest = ['to_path', 'sort', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/CatalogueController.php
Normal file
35
app/Http/Controllers/Api/CatalogueController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\CatalogueService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 商品图册
|
||||
*/
|
||||
class CatalogueController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = CatalogueService::getInstance();
|
||||
$this->insertField = ['title', 'category_id', 'cover', 'identifier'];
|
||||
$this->updateField = ['id', 'title', 'category_id', 'cover', 'identifier'];
|
||||
$this->notRequest = ['alias', 'pdf', 'price', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/CategoryController.php
Normal file
35
app/Http/Controllers/Api/CategoryController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\CategoryService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 商品分类
|
||||
*/
|
||||
class CategoryController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = CategoryService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = ['url', 'pid', 'status', 'sort'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/ColorcardController.php
Normal file
35
app/Http/Controllers/Api/ColorcardController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\ColorcardService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 色卡
|
||||
*/
|
||||
class ColorcardController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = ColorcardService::getInstance();
|
||||
$this->insertField = ['card_class', 'company', 'cover'];
|
||||
$this->updateField = ['id', 'card_class', 'company'];
|
||||
$this->notRequest = ['price', 'description', 'cover', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/CompanyController.php
Normal file
35
app/Http/Controllers/Api/CompanyController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\CompanyService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 色卡所属公司
|
||||
*/
|
||||
class CompanyController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = CompanyService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = ['phone', 'address', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
47
app/Http/Controllers/Api/DepartmentController.php
Normal file
47
app/Http/Controllers/Api/DepartmentController.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\DepartmentService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class DepartmentController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = DepartmentService::getInstance();
|
||||
// insertField / updateField 既是必填校验清单,也是入库字段白名单,漏写的字段不会被收进 params
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
// 这几个允许缺省:pid 缺省为顶级,status 缺省为正常
|
||||
$this->notRequest = ['pid', 'desc', 'status', 'color'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 部门树下拉(表单选上级部门用)
|
||||
* @Method GET
|
||||
*/
|
||||
public function treeOption(): JsonResponse
|
||||
{
|
||||
$isSelect = filter_var(request()->get('is_select', false), FILTER_VALIDATE_BOOLEAN);
|
||||
return jok($this->service->getTreeOption($isSelect), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 停用 / 启用部门
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$id = request()->post('id');
|
||||
$status = request()->post('status');
|
||||
if (empty($id) || !in_array((string) $status, ['0', '1'], true)) {
|
||||
return jerr('参数错误');
|
||||
}
|
||||
return jok($this->service->status($id, $status), '操作成功');
|
||||
}
|
||||
}
|
||||
38
app/Http/Controllers/Api/EnterpriseController.php
Normal file
38
app/Http/Controllers/Api/EnterpriseController.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\EnterpriseService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 企业管理
|
||||
*/
|
||||
class EnterpriseController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = EnterpriseService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = [
|
||||
'logo', 'contact_name', 'phone', 'address',
|
||||
'tax_no', 'settle_type', 'price_number', 'status', 'remark',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/FactoryClassificationController.php
Normal file
35
app/Http/Controllers/Api/FactoryClassificationController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\FactoryClassificationService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 工厂分类
|
||||
*/
|
||||
class FactoryClassificationController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = FactoryClassificationService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = ['status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
44
app/Http/Controllers/Api/FactoryImageController.php
Normal file
44
app/Http/Controllers/Api/FactoryImageController.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\FactoryImageService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 工厂产品图
|
||||
*/
|
||||
class FactoryImageController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = FactoryImageService::getInstance();
|
||||
$this->insertField = ['factory', 'url'];
|
||||
$this->updateField = ['id', 'url'];
|
||||
$this->notRequest = ['factory', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 某工厂的全部产品图(入参 factory)
|
||||
* @Method GET
|
||||
*/
|
||||
public function imageList(): JsonResponse
|
||||
{
|
||||
return jok($this->service->imageList((int) request()->get('factory', 0)), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
35
app/Http/Controllers/Api/FactoryInfoController.php
Normal file
35
app/Http/Controllers/Api/FactoryInfoController.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\FactoryInfoService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 工厂管理
|
||||
*/
|
||||
class FactoryInfoController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = FactoryInfoService::getInstance();
|
||||
$this->insertField = ['name', 'classification'];
|
||||
$this->updateField = ['id', 'name', 'classification'];
|
||||
$this->notRequest = ['phone', 'cover', 'address', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
22
app/Http/Controllers/Api/FileFolderController.php
Normal file
22
app/Http/Controllers/Api/FileFolderController.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\FileFolderService;
|
||||
|
||||
/**
|
||||
* 素材文件夹(标准 CRUD + 目录树)
|
||||
*/
|
||||
class FileFolderController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = FileFolderService::getInstance();
|
||||
$this->insertField = ['name'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
// pid = 0 就是根目录,sort / status 也允许留空走默认值
|
||||
$this->notRequest = ['pid', 'sort', 'status'];
|
||||
}
|
||||
}
|
||||
53
app/Http/Controllers/Api/ImageController.php
Normal file
53
app/Http/Controllers/Api/ImageController.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\ImageService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 商品相册
|
||||
*/
|
||||
class ImageController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = ImageService::getInstance();
|
||||
$this->insertField = ['catalogue_id', 'url', 'type'];
|
||||
$this->updateField = ['id', 'url'];
|
||||
$this->notRequest = ['catalogue_id', 'type', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 渲染图列表(入参 catalogue_id)
|
||||
* @Method GET
|
||||
*/
|
||||
public function renderGraph(): JsonResponse
|
||||
{
|
||||
return jok($this->service->renderGraph((int) request()->get('catalogue_id', 0)), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 实物图列表(入参 catalogue_id)
|
||||
* @Method GET
|
||||
*/
|
||||
public function physicalDrawing(): JsonResponse
|
||||
{
|
||||
return jok($this->service->physicalDrawing((int) request()->get('catalogue_id', 0)), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
61
app/Http/Controllers/Api/ListController.php
Normal file
61
app/Http/Controllers/Api/ListController.php
Normal file
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\ListService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 清单管理
|
||||
*/
|
||||
class ListController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = ListService::getInstance();
|
||||
$this->insertField = ['name', 'user_id'];
|
||||
$this->updateField = ['id', 'name'];
|
||||
$this->notRequest = ['remark', 'enterprise_id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 某用户的清单
|
||||
* @Method GET
|
||||
*/
|
||||
public function byUser(): JsonResponse
|
||||
{
|
||||
return jok($this->service->byUser((int) request()->get('user_id', 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清单生成订单
|
||||
* @Method POST
|
||||
*/
|
||||
public function toOrder(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->toOrder((int) request()->post('id', 0), request()->post()),
|
||||
'订单已生成'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存清单明细
|
||||
* @Method POST
|
||||
*/
|
||||
public function saveItem(): JsonResponse
|
||||
{
|
||||
return jok($this->service->saveItem(request()->post()), '保存成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除清单明细
|
||||
* @Method POST
|
||||
*/
|
||||
public function deleteItem(): JsonResponse
|
||||
{
|
||||
return jok($this->service->deleteItem(request()->post('ids', [])), '删除成功');
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,11 @@ use Illuminate\Http\JsonResponse;
|
||||
|
||||
class LoginController extends BaseController
|
||||
{
|
||||
//
|
||||
/**
|
||||
* 登录控制器注册在免登录组里,继承来的 CRUD 会变成 /api/list、/api/create 这种
|
||||
* 无需鉴权、指向 LoginService(根本没有这些方法)的路由,必须排除
|
||||
*/
|
||||
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
@@ -54,20 +58,32 @@ class LoginController extends BaseController
|
||||
);
|
||||
}
|
||||
|
||||
public function logout()
|
||||
/**
|
||||
* 退出登录
|
||||
* @Method POST
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function logout(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
[],
|
||||
$this->service->logout(),
|
||||
'退出成功'
|
||||
);
|
||||
}
|
||||
|
||||
public function codes()
|
||||
/**
|
||||
* 续签 token
|
||||
*
|
||||
* 前端拦截器在 401 时调用,此时 token 已过期,所以只能放在免登录组里,
|
||||
* 由 LoginService::refresh 自己校验签名与 Redis 会话。
|
||||
* @Method POST
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function refresh(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
[],
|
||||
'获取成功'
|
||||
$this->service->refresh(),
|
||||
'续签成功'
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
111
app/Http/Controllers/Api/MaterialController.php
Normal file
111
app/Http/Controllers/Api/MaterialController.php
Normal file
@@ -0,0 +1,111 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\common\UtilsService;
|
||||
use App\Service\MaterialService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 素材库
|
||||
*
|
||||
* 素材记录只有两个来源:上传接口写入、从 OSS 反向同步补录,
|
||||
* 所以没有「手工新增」,也不需要下拉选项 —— 把继承来的 create / option 排掉。
|
||||
*/
|
||||
class MaterialController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['create', 'option'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = MaterialService::getInstance();
|
||||
// 只放行素材名与文件夹:对象键、体积、哈希都是同步结果,不接受手工改
|
||||
$this->updateField = ['id', 'name', 'folder_id'];
|
||||
$this->notRequest = ['name', 'folder_id'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 素材概览统计
|
||||
*
|
||||
* @Method GET
|
||||
* @throws Exception
|
||||
*/
|
||||
public function stat(): JsonResponse
|
||||
{
|
||||
return jok($this->service->stat(), '统计获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 从 OSS 增量同步对象
|
||||
*
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function syncFromOss(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['oss_config_id'];
|
||||
$this->notRequest = ['prefix', 'marker', 'limit'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->syncFromOss($params), '同步完成');
|
||||
}
|
||||
|
||||
/**
|
||||
* 全库引用扫描
|
||||
*
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function scanReferences(): JsonResponse
|
||||
{
|
||||
// 表多、正文长时会跑几十秒,先把执行时限和内存放开
|
||||
cc_set_time_limit();
|
||||
return jok($this->service->scanReferences(request()->post()), '扫描完成');
|
||||
}
|
||||
|
||||
/**
|
||||
* 无引用素材清单
|
||||
*
|
||||
* @Method GET
|
||||
* @throws Exception
|
||||
*/
|
||||
public function unusedList(): JsonResponse
|
||||
{
|
||||
return jok($this->service->unusedList(request()->query()), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 回收:删远端对象并软删记录
|
||||
*
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function reclaim(): JsonResponse
|
||||
{
|
||||
$ids = request()->post('ids');
|
||||
if (empty($ids) || !is_array($ids)) {
|
||||
UtilsService::getInstance()->notFound('参数错误');
|
||||
}
|
||||
return jok($this->service->reclaim($ids), '回收完成');
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量移动到文件夹
|
||||
*
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function moveToFolder(): JsonResponse
|
||||
{
|
||||
$ids = request()->post('ids');
|
||||
if (empty($ids) || !is_array($ids)) {
|
||||
UtilsService::getInstance()->notFound('参数错误');
|
||||
}
|
||||
return jok(
|
||||
$this->service->moveToFolder($ids, (int) request()->post('folder_id', 0)),
|
||||
'移动成功'
|
||||
);
|
||||
}
|
||||
}
|
||||
79
app/Http/Controllers/Api/OrderController.php
Normal file
79
app/Http/Controllers/Api/OrderController.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\OrderService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 订单管理
|
||||
*/
|
||||
class OrderController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = OrderService::getInstance();
|
||||
$this->insertField = ['list_id'];
|
||||
$this->updateField = ['id'];
|
||||
$this->notRequest = [
|
||||
'receiver_name', 'receiver_phone', 'receiver_address',
|
||||
'remark', 'delivery_type',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 概览统计
|
||||
* @Method GET
|
||||
*/
|
||||
public function stat(): JsonResponse
|
||||
{
|
||||
return jok($this->service->stat());
|
||||
}
|
||||
|
||||
/**
|
||||
* 某用户的订单
|
||||
* @Method GET
|
||||
*/
|
||||
public function byUser(): JsonResponse
|
||||
{
|
||||
return jok($this->service->byUser((int) request()->get('user_id', 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审核转账凭证
|
||||
* @Method POST
|
||||
*/
|
||||
public function auditPayment(): JsonResponse
|
||||
{
|
||||
return jok($this->service->auditPayment(request()->post()), '处理成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货
|
||||
* @Method POST
|
||||
*/
|
||||
public function ship(): JsonResponse
|
||||
{
|
||||
return jok($this->service->ship(request()->post()), '已发货');
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
* @Method POST
|
||||
*/
|
||||
public function cancel(): JsonResponse
|
||||
{
|
||||
return jok($this->service->cancel((int) request()->post('id', 0)), '已取消');
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成订单
|
||||
* @Method POST
|
||||
*/
|
||||
public function complete(): JsonResponse
|
||||
{
|
||||
return jok($this->service->complete((int) request()->post('id', 0)), '已完成');
|
||||
}
|
||||
}
|
||||
63
app/Http/Controllers/Api/PriceSheetController.php
Normal file
63
app/Http/Controllers/Api/PriceSheetController.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\PriceSheetService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 报价单(商品规格)
|
||||
*/
|
||||
class PriceSheetController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = PriceSheetService::getInstance();
|
||||
$this->insertField = ['catalogue_id'];
|
||||
$this->updateField = ['id'];
|
||||
$this->notRequest = ['specification', 'dimension', 'routine', 'rows', 'status'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 某商品的全部规格行(报价单抽屉回填用)
|
||||
* @Method GET
|
||||
*/
|
||||
public function rows(): JsonResponse
|
||||
{
|
||||
return jok($this->service->rowsOf((int) request()->get('catalogue_id', 0)), '列表获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 覆盖式保存某商品的全部规格行
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function saveRows(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['catalogue_id'];
|
||||
$this->notRequest = ['rows'];
|
||||
$this->checkRequiredFields(request()->post());
|
||||
return jok(
|
||||
$this->service->saveRows(
|
||||
(int) request()->post('catalogue_id'),
|
||||
(array) request()->post('rows', [])
|
||||
),
|
||||
'保存成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 禁用
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,7 @@ class RoleController extends BaseController
|
||||
parent::__construct();
|
||||
$this->insertField = ['name', 'value', 'desc'];
|
||||
$this->updateField = ['id', 'name', 'value', 'desc'];
|
||||
$this->notRequest = ['status', 'color', 'pid'];
|
||||
$this->service = RoleService::getInstance();
|
||||
}
|
||||
|
||||
@@ -51,4 +52,52 @@ class RoleController extends BaseController
|
||||
$this->service->saveRoleMenu($roleId, $menuIds)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 接口授权树:按控制器分组的全部可授权接口
|
||||
* @Method GET
|
||||
*/
|
||||
public function endpointTree(): JsonResponse
|
||||
{
|
||||
return jok($this->service->endpointTree(), '获取成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 角色已授权的接口 id
|
||||
* @Method GET
|
||||
* @throws Exception
|
||||
*/
|
||||
public function getEndpointIdsByRoleIds(): JsonResponse
|
||||
{
|
||||
return jok($this->service->getEndpointIdsByRoleId(request()->get('role_id')));
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存角色接口授权
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function saveRoleEndpoint(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['role_id'];
|
||||
$this->checkRequiredFields(request()->post());
|
||||
return jok(
|
||||
$this->service->saveRoleEndpoint(
|
||||
(int) request()->post('role_id'),
|
||||
(array) request()->post('endpoint_id', [])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用 / 停用角色
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'status'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->status($params['id'], $params['status']), '操作成功');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,4 +44,19 @@ class UploadController extends BaseController
|
||||
'上传成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 文档上传(PDF 等)
|
||||
* @Method POST
|
||||
* @return JsonResponse
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function file()
|
||||
{
|
||||
$file = request()->file('file');
|
||||
return jok(
|
||||
$this->service->uploadDocument($file),
|
||||
'上传成功'
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
46
app/Http/Controllers/Api/WxAppController.php
Normal file
46
app/Http/Controllers/Api/WxAppController.php
Normal file
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\WxAppConfigService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序应用配置
|
||||
*/
|
||||
class WxAppController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxAppConfigService::getInstance();
|
||||
$this->insertField = ['code', 'name', 'app_id'];
|
||||
$this->updateField = ['id'];
|
||||
$this->notRequest = [
|
||||
'app_secret', 'mch_id', 'mch_key', 'mch_serial_no', 'mch_private_key',
|
||||
'platform_public_key', 'notify_url', 'template_code', 'remark', 'name', 'app_id',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用/停用
|
||||
* @Method POST
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->status(request()->post('id'), request()->post('status')),
|
||||
'操作成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 按 .env 引导创建/更新一条应用壳子(不含 AppSecret)
|
||||
* @Method POST
|
||||
*/
|
||||
public function initFromEnv(): JsonResponse
|
||||
{
|
||||
return jok($this->service->initFromEnv(), '初始化成功');
|
||||
}
|
||||
}
|
||||
91
app/Http/Controllers/Api/WxTemplateController.php
Normal file
91
app/Http/Controllers/Api/WxTemplateController.php
Normal file
@@ -0,0 +1,91 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\WxTemplateSchemaService;
|
||||
use App\Service\business\WxTemplateService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序装修模板
|
||||
*/
|
||||
class WxTemplateController extends BaseController
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxTemplateService::getInstance();
|
||||
$this->insertField = ['name', 'code'];
|
||||
$this->updateField = ['id'];
|
||||
$this->notRequest = [
|
||||
'preview', 'style_tag', 'tokens', 'layout', 'app_code', 'sort', 'name', 'code',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用/停用
|
||||
* @Method POST
|
||||
*/
|
||||
public function status(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->status(request()->post('id'), request()->post('status')),
|
||||
'操作成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设为默认
|
||||
* @Method POST
|
||||
*/
|
||||
public function setDefault(): JsonResponse
|
||||
{
|
||||
return jok($this->service->setDefault((int) request()->post('id', 0)), '已设为默认');
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出模板 JSON
|
||||
* @Method POST
|
||||
*/
|
||||
public function export(): JsonResponse
|
||||
{
|
||||
return jok($this->service->export((array) request()->post('ids', [])));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入模板 JSON
|
||||
* @Method POST
|
||||
*/
|
||||
public function import(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->import((array) request()->post('payload', []), (bool) request()->post('overwrite', false)),
|
||||
'导入完成'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用内置 20 套预设初始化模板库
|
||||
* @Method POST
|
||||
*/
|
||||
public function initPresets(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->initPresets((bool) request()->post('overwrite', false)),
|
||||
'初始化完成'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 令牌与布局的可选项,前端渲染编辑表单用
|
||||
* @Method GET
|
||||
*/
|
||||
public function schema(): JsonResponse
|
||||
{
|
||||
return jok([
|
||||
'tokens' => WxTemplateSchemaService::TOKEN_SCHEMA,
|
||||
'layout' => WxTemplateSchemaService::LAYOUT_SCHEMA,
|
||||
]);
|
||||
}
|
||||
}
|
||||
107
app/Http/Controllers/Api/WxUserController.php
Normal file
107
app/Http/Controllers/Api/WxUserController.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\business\WxUserService;
|
||||
use Exception;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 微信用户管理
|
||||
*/
|
||||
class WxUserController extends BaseController
|
||||
{
|
||||
/**
|
||||
* 微信用户只能由小程序授权登录产生,后台没有新建入口
|
||||
*/
|
||||
protected array $exceptRoute = ['create'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxUserService::getInstance();
|
||||
$this->updateField = ['id'];
|
||||
$this->notRequest = ['nick_name', 'phone', 'enterprise_id', 'show_price', 'price_number', 'is_p'];
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置 / 取消代理商身份
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function updateUserIsP(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id'];
|
||||
$this->notRequest = ['is_p'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok(
|
||||
$this->service->updateUserIsP($params['id'], $params['is_p'] ?? null),
|
||||
'操作成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置价格倍率
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function updateShowPrice(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'number'];
|
||||
$this->notRequest = [];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->updateShowPrice($params['id'], $params['number']), '操作成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 单独开关价格可见性
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function updateShowPriceStatus(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'show_price'];
|
||||
$this->notRequest = [];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->updateShowPriceStatus($params['id'], $params['show_price']), '操作成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定所属企业
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function bindUser(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id', 'enterprise_id'];
|
||||
$this->notRequest = [];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok($this->service->bindUser($params['id'], $params['enterprise_id']), '绑定成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 经销商绑定专属装修模板(template_code 空=跟随品牌默认)
|
||||
* @Method POST
|
||||
* @throws Exception
|
||||
*/
|
||||
public function bindTemplate(): JsonResponse
|
||||
{
|
||||
$this->insertField = ['id'];
|
||||
$this->notRequest = ['template_code'];
|
||||
$params = $this->checkRequiredFields(request()->post());
|
||||
return jok(
|
||||
$this->service->bindTemplate($params['id'], $params['template_code'] ?? ''),
|
||||
'模板绑定成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 该代理商名下的下级用户
|
||||
* @Method GET
|
||||
*/
|
||||
public function children(): JsonResponse
|
||||
{
|
||||
return jok($this->service->children((int) request()->get('id', 0)), '列表获取成功');
|
||||
}
|
||||
}
|
||||
36
app/Http/Controllers/Wx/AuthController.php
Normal file
36
app/Http/Controllers/Wx/AuthController.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxAuthService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序登录(免鉴权)
|
||||
*/
|
||||
class AuthController extends BaseController
|
||||
{
|
||||
/**
|
||||
* 继承的 CRUD 会被 autoRouteRegister 反射成路由,登录组里绝不能白送这些
|
||||
*/
|
||||
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxAuthService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信 code 登录
|
||||
* @Method POST
|
||||
*/
|
||||
public function login(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->login(request()->post()),
|
||||
'登录成功'
|
||||
);
|
||||
}
|
||||
}
|
||||
39
app/Http/Controllers/Wx/HomeController.php
Normal file
39
app/Http/Controllers/Wx/HomeController.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxHomeService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序首页(免鉴权)
|
||||
*/
|
||||
class HomeController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxHomeService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 首页轮播
|
||||
* @Method GET
|
||||
*/
|
||||
public function carousel(): JsonResponse
|
||||
{
|
||||
return jok($this->service->carousel());
|
||||
}
|
||||
|
||||
/**
|
||||
* 一级分类
|
||||
* @Method GET
|
||||
*/
|
||||
public function categoryList(): JsonResponse
|
||||
{
|
||||
return jok($this->service->categoryList((int) request()->get('pid', 0)));
|
||||
}
|
||||
}
|
||||
96
app/Http/Controllers/Wx/ListController.php
Normal file
96
app/Http/Controllers/Wx/ListController.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxListService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序清单
|
||||
*/
|
||||
class ListController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['option'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxListService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的清单
|
||||
* @Method GET
|
||||
*/
|
||||
public function list(): JsonResponse
|
||||
{
|
||||
return jok($this->service->list());
|
||||
}
|
||||
|
||||
/**
|
||||
* 清单详情
|
||||
* @Method GET
|
||||
*/
|
||||
public function detail(): JsonResponse
|
||||
{
|
||||
return jok($this->service->detail((int) request()->get('id', 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新建清单
|
||||
* @Method POST
|
||||
*/
|
||||
public function create(): JsonResponse
|
||||
{
|
||||
return jok($this->service->create(request()->post()), '创建成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 改清单名称与备注
|
||||
* @Method POST
|
||||
*/
|
||||
public function update(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->update((int) request()->post('id', 0), request()->post()),
|
||||
'保存成功'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除清单
|
||||
* @Method POST
|
||||
*/
|
||||
public function delete(): JsonResponse
|
||||
{
|
||||
return jok($this->service->delete(request()->post('ids', [])), '删除成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除清单明细
|
||||
* @Method POST
|
||||
*/
|
||||
public function deleteItem(): JsonResponse
|
||||
{
|
||||
return jok($this->service->deleteItem(request()->post('ids', [])), '删除成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 加入清单
|
||||
* @Method POST
|
||||
*/
|
||||
public function toCart(): JsonResponse
|
||||
{
|
||||
return jok($this->service->toCart(request()->post()), '添加成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 改明细的规格与数量
|
||||
* @Method POST
|
||||
*/
|
||||
public function updateItem(): JsonResponse
|
||||
{
|
||||
return jok($this->service->updateItem(request()->post()), '保存成功');
|
||||
}
|
||||
}
|
||||
84
app/Http/Controllers/Wx/OrderController.php
Normal file
84
app/Http/Controllers/Wx/OrderController.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxOrderService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序订单
|
||||
*/
|
||||
class OrderController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['option', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxOrderService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的订单
|
||||
* @Method GET
|
||||
*/
|
||||
public function list(): JsonResponse
|
||||
{
|
||||
return jok($this->service->list());
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单详情
|
||||
* @Method GET
|
||||
*/
|
||||
public function detail(): JsonResponse
|
||||
{
|
||||
return jok($this->service->detail((int) request()->get('id', 0)));
|
||||
}
|
||||
|
||||
/**
|
||||
* 清单转订单
|
||||
* @Method POST
|
||||
*/
|
||||
public function create(): JsonResponse
|
||||
{
|
||||
return jok($this->service->createFromList(request()->post()), '下单成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传转账凭证
|
||||
* @Method POST
|
||||
*/
|
||||
public function voucher(): JsonResponse
|
||||
{
|
||||
return jok($this->service->submitVoucher(request()->post()), '已提交,等待审核');
|
||||
}
|
||||
|
||||
/**
|
||||
* 调起微信支付
|
||||
* @Method POST
|
||||
*/
|
||||
public function wechatPay(): JsonResponse
|
||||
{
|
||||
return jok($this->service->wechatPay(request()->post()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消订单
|
||||
* @Method POST
|
||||
*/
|
||||
public function cancel(): JsonResponse
|
||||
{
|
||||
return jok($this->service->cancel((int) request()->post('id', 0)), '已取消');
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认收货
|
||||
* @Method POST
|
||||
*/
|
||||
public function complete(): JsonResponse
|
||||
{
|
||||
return jok($this->service->complete((int) request()->post('id', 0)), '已完成');
|
||||
}
|
||||
}
|
||||
52
app/Http/Controllers/Wx/ProductController.php
Normal file
52
app/Http/Controllers/Wx/ProductController.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxHomeService;
|
||||
use App\Service\wx\WxProductService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序商品
|
||||
*/
|
||||
class ProductController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['option', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxProductService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品列表
|
||||
* @Method GET
|
||||
*/
|
||||
public function list(): JsonResponse
|
||||
{
|
||||
return jok($this->service->list());
|
||||
}
|
||||
|
||||
/**
|
||||
* 商品详情,p_user_id 为代理商分享来源
|
||||
* @Method GET
|
||||
*/
|
||||
public function detail(): JsonResponse
|
||||
{
|
||||
return jok($this->service->detail(
|
||||
(int) request()->get('id', 0),
|
||||
(int) request()->get('p_user_id', 0)
|
||||
));
|
||||
}
|
||||
|
||||
/**
|
||||
* 按父级取分类
|
||||
* @Method GET
|
||||
*/
|
||||
public function categoryListByPid(): JsonResponse
|
||||
{
|
||||
return jok(WxHomeService::getInstance()->categoryList((int) request()->get('pid', 0)));
|
||||
}
|
||||
}
|
||||
56
app/Http/Controllers/Wx/ThemeController.php
Normal file
56
app/Http/Controllers/Wx/ThemeController.php
Normal file
@@ -0,0 +1,56 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxPayService;
|
||||
use App\Service\wx\WxThemeService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序主题下发与支付回调(均免鉴权)
|
||||
*/
|
||||
class ThemeController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxThemeService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 当前主题
|
||||
* @Method GET
|
||||
*/
|
||||
public function theme(): JsonResponse
|
||||
{
|
||||
return jok($this->service->current((string) request()->get('code', '')));
|
||||
}
|
||||
|
||||
/**
|
||||
* 可选风格
|
||||
* @Method GET
|
||||
*/
|
||||
public function themeGallery(): JsonResponse
|
||||
{
|
||||
return jok($this->service->gallery());
|
||||
}
|
||||
|
||||
/**
|
||||
* 微信支付回调
|
||||
*
|
||||
* 必须用原始报文验签:先 json_decode 再 encode 回去,字节顺序变了签名就对不上。
|
||||
* @Method POST
|
||||
*/
|
||||
public function payNotify(): JsonResponse
|
||||
{
|
||||
$headers = [];
|
||||
foreach (['wechatpay-timestamp', 'wechatpay-nonce', 'wechatpay-signature', 'wechatpay-serial'] as $key) {
|
||||
$headers[$key] = (string) request()->header($key, '');
|
||||
}
|
||||
$result = WxPayService::getInstance()->handleNotify($headers, request()->getContent());
|
||||
return response()->json($result);
|
||||
}
|
||||
}
|
||||
51
app/Http/Controllers/Wx/UserController.php
Normal file
51
app/Http/Controllers/Wx/UserController.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxUserCenterService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序「我的」
|
||||
*/
|
||||
class UserController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['list', 'option', 'detail', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxUserCenterService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 我的信息
|
||||
* @Method GET
|
||||
*/
|
||||
public function myInfo(): JsonResponse
|
||||
{
|
||||
return jok($this->service->myInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* 绑定手机号
|
||||
* @Method POST
|
||||
*/
|
||||
public function bandPhone(): JsonResponse
|
||||
{
|
||||
return jok($this->service->bandPhone(request()->post()), '绑定成功');
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改昵称
|
||||
* @Method POST
|
||||
*/
|
||||
public function updateNickName(): JsonResponse
|
||||
{
|
||||
return jok(
|
||||
$this->service->updateNickName((string) request()->post('nick_name', '')),
|
||||
'保存成功'
|
||||
);
|
||||
}
|
||||
}
|
||||
37
app/Http/Controllers/Wx/WxUploadController.php
Normal file
37
app/Http/Controllers/Wx/WxUploadController.php
Normal file
@@ -0,0 +1,37 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Wx;
|
||||
|
||||
use App\BaseApp\BaseController;
|
||||
use App\Service\wx\WxUploadService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
* 小程序上传(转账凭证等)。
|
||||
*
|
||||
* 走 nl.wx 中间件鉴权(小程序登录态),路径 wx/upload/image。
|
||||
* 仅暴露 image 方法,避免反射注册把 BaseController 的 create/update/delete 挂成路由。
|
||||
*/
|
||||
class WxUploadController extends BaseController
|
||||
{
|
||||
protected array $exceptRoute = ['option', 'create', 'update', 'delete'];
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->service = WxUploadService::getInstance();
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片上传(转账凭证)
|
||||
* @Method POST
|
||||
*/
|
||||
public function image(): JsonResponse
|
||||
{
|
||||
$file = request()->file('file');
|
||||
return jok(
|
||||
$this->service->uploadImage($file),
|
||||
'上传成功'
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user