系统架构

技术选型

一、快速后台开发解决方案

1. 快速开发框架选型

2. 安装配置步骤

  1. 安装bt面板等继承环境
    • 安装php8.1
    • 安装composer2.6.6
    • 配置php扩展和禁用函数
    • 安装nginx
    • 安装frpc
    • 安装redis
    • 安装mysql 8.0
  2. 安装配置laravel,熟悉laravel框架
  3. 安装dcat-admin: https://learnku.com/docs/dcat-admin/2.x/install/8081#fa405f

3. 快速开发后台管理系统

  1. 数据库完成评审工作后,通过scaffold生成基础模块CRUD代码
  2. 通过scaffold生成基础模块CRUD代码
  1. 手动增加菜单
  2. 访问查看基础效果

4. AI prompt提示词技巧

4.1 调优管理界面

打开生成的模块ctroller或service文件,通过AI快速调优管理界面,prompt举例:

请修改:
服务封面 -> 图片
所属分类 -> 下拉单选 分类列表
服务价格、原价、物料费 -> 金额,单位:元
销量 -> 数字,单位:单
服务时长 -> 数字,单位:分
分佣比例 -> 数字,单位:%
加钟服务、支持到店、支持上门 -> 开关按钮
排序 -> 数字
项目介绍、禁忌说明、下单须知 -> 富文本编辑
其他列,隐藏

列表操作列,增加:
1. “取消订单”按钮,并参照以下逻辑实现handler:
这里面请复制你设计好的那个接口的后台逻辑描述
2. “删除”按钮,并参照以下逻辑实现handler:
这里面请复制你设计好的那个接口的后台逻辑描述
4.2 给技巧起个名字

待补充,研发过程中再补充,新的AI prompt提示词 技巧

二、工具类库

以下工具类库,默认基于laravel框架

开始开发前,每个项目参与者都必须对laravel、dcat中的一些模块或概念有个基本的认识。否则将无法有效提供AI提示词,则无法加快研发效率。 要求每个人在业余时间对官方文档提供的每一个功能点,做一个开发和测试,这样建立基本的认识。

1. 事务处理

场景说明
用法举例
// 串行化 (SERIALIZABLE) - 最严格的隔离级别,完全隔离,事务串行执行
use Illuminate\Support\Facades\DB;

DB::transaction(function () {
    // 操作1:读取用户A的当前余额
    $balanceA = DB::table('accounts')->where('user_id', $userIdA)->value('balance');

    // 操作2:减少用户A的余额
    DB::table('accounts')->where('user_id', $userIdA)->decrement('balance', $amount);

    // 操作3:增加用户B的余额
    DB::table('accounts')->where('user_id', $userIdB)->increment('balance', $amount);
}, DB::TRANSACTION_SERIALIZABLE);
// 可重复读 (REPEATABLE READ) - 保证事务中每次读取结果都相同,避免不可重复读和脏读
use Illuminate\Support\Facades\DB;

DB::transaction(function () {
   
}, DB::TRANSACTION_REPEATABLE_READ);
// 读已提交 (READ COMMITTED) - 每次读取只能看到其他事务已经提交的数据,避免脏读
use Illuminate\Support\Facades\DB;

DB::transaction(function () {
    
}, DB::TRANSACTION_READ_COMMITTED);
// 读未提交 (READ UNCOMMITTED) - 最宽松的隔离级别,可能会读取到其他事务未提交的数据(脏读)
use Illuminate\Support\Facades\DB;

DB::transaction(function () {
  
}, DB::TRANSACTION_READ_UNCOMMITTED);
事务嵌套

在 Laravel 中,如果你在一个 DB::transaction 回调中调用另一个也使用 DB::transaction 的方法,将会出现以下情况:

嵌套事务:Laravel 支持嵌套事务。当你在事务中调用另一个事务时,Laravel 会使用保存点(Savepoints)来处理嵌套的事务。保存点允许你在事务中设置一个点,之后可以回滚到这个点,而不影响事务中之前的操作。

保存点的创建:对于每个嵌套的事务,Laravel 会创建一个保存点。如果内部事务成功提交,保存点会被释放;如果内部事务失败并回滚,只有内部事务的更改会被回滚到保存点,外部事务的其他操作不受影响。

事务的回滚:如果内部事务中抛出异常,整个内部事务会被回滚到最近的保存点。如果外部事务中抛出异常,整个外部事务(包括所有内部事务)会被回滚。

下面是一个示例,说明这种情况:

use Illuminate\Support\Facades\DB;

DB::transaction(function () {
    // 外部事务开始

    // 一些数据库操作
    DB::table('accounts')->insert([...]);

    $this->nestedTransaction(); // 调用包含内部事务的方法

    // 更多数据库操作
    DB::table('accounts')->update([...]);
}, DB::TRANSACTION_SERIALIZABLE);

// 包含内部事务的方法
protected function nestedTransaction()
{
    DB::transaction(function () {
        // 内部事务开始

        // 一些数据库操作
        DB::table('accounts')->insert([...]);

        // 假设这里发生了错误,内部事务会回滚
        throw new Exception('Something went wrong!');

        // 更多数据库操作,如果内部事务成功,这些操作会执行
        DB::table('accounts')->update([...]);
    }, DB::TRANSACTION_SERIALIZABLE);
}

在这个例子中,如果 nestedTransaction 方法中的内部事务因为抛出异常而失败,只有内部事务中的操作会被回滚。外部事务中的操作(在调用 nestedTransaction 之前和之后的操作)不会受到影响,除非外部事务本身抛出异常。

2. 队列处理

参考laravel官方文档

3. 缓存处理

参考laravel官方文档

4. 日志记录

参考laravel官方文档

5. 其他请参考官方文档

laravel官方文档

dcat文档

WebSocket解决方案

WebSocket解决方案

SwaggerAPI文档解决方案

SwaggerAPI文档解决方案

多级配置参数设置解决方案

多级配置参数设置解决方案

统一支付(汇付天下)解决方案

统一支付(汇付天下)解决方案

基于LBS的Near算法解决方案

基于LBS的Near算法解决方案

技师抢单解决方案

技师抢单解决方案

订单状态机解决方案

订单状态机解决方案

技师排班的解决方案

SaaS多租户解决方案

SaaS多租户解决方案

告警监控解决方案

告警监控解决方案

系统架构

一、快速后台开发解决方案

二、工具类库