【AI应用探索】-10- Cursor实战:小程序&APP - 下

作者:bblb日期:2025/11/14

【AI应用探索】-10- Cursor实战:小程序&APP - 下

  • 1 开发商城微信小程序
    • 1.1 微信小程序发布流程准备
    • 1.2 Cursor需求设计
    • 1.3 数据库准备
    • 1.4 生成对应代码
      • 1.4.1 小程序前端
        • 1.4.2 小程序后端API
        • 1.4.3 商家后端
  • 2 开发安卓APP
    • 2.1 创建项目
    • 2.2 Cursor介入
    • 2.3 源码开放

1 开发商城微信小程序

1.1 微信小程序发布流程准备

因为我之前开发过微信小程序,所以上一个小程序的信息还在这里留存着,所以有这些信息,如果
在这里插入图片描述
获取好对应的appid
在这里插入图片描述

我们准备进入微信开发者工具进行开发,我们创建一个全新的,不使用云服务和任何模板的小程序
在这里插入图片描述
这样我们的前置工作就做好了,接下来就可以进入我们的Cursor进行设计了
在这里插入图片描述

1.2 Cursor需求设计

先添加我们的需求设计

1我现在要开发一个微信小程序,这是一个商城小程序,商城小程序的功能如下:
21、用户可以登录注册
32、用户可以浏览商品
43、用户可以搜索商品
54、用户可以查看商品详情
65、用户可以添加商品到购物车
76、用户下单购买商品,暂时不接支付功能,下单后立即成功
87、用户可以查看订单
98、用户可以查看订单详情
109、用户可以查看订单列表
11前端我已经使用微信开发者工具生成好了一个不适用模板的空项目,地址为:F:\Code\AI\Cursor\WechatCursorMail\WechatAPP
12前端我需要你进行开发,开发需求如下:
131、使用微信小程序的官方组件库进行开发
142、使用微信小程序的官方API进行开发
15前端功能如下:
161、首页
17    1.1、轮播图
18    1.2、推荐商品列表
19        1.2.1、显示推荐商品名称、图片、价格、库存、加入购物车按钮
20        1.2.2、点击商品进入商品详情页
21    1.3、分类列表
22        1.3.1、显示分类名称、图片
23        1.3.2、点击分类进入分类商品列表页
24        1.3.3、显示分类商品名称、图片、价格、库存、加入购物车按钮
25        1.3.4、点击商品进入商品详情页
262、分类
27    2.1、分类列表
28        2.1.1、显示分类名称、图片
29        2.1.2、点击分类进入分类商品列表页
30        2.1.3、显示分类商品名称、图片、价格、库存、加入购物车按钮
31        2.1.4、点击商品进入商品详情页
323、购物车
33    3.1、购物车列表
34        3.1.1、显示购物车商品名称、图片、价格、数量(可以加减)、删除按钮
35        3.1.2、每个购物车商品前有一个按钮,页面顶部有一个全选按钮,点击全选按钮,所有购物车商品前都选中,点击全选按钮,所有购物车商品前都不选中
36        3.1.3、页面底部有一个结算按钮,点击结算按钮,进入结算页
374、我的
38    4.1、我的页面
39        4.1.1、显示用户头像、用户昵称、用户手机号、用户性别、用户地址、用户积分、用户等级、用户优惠券、用户订单、用户收藏、用户足迹、用户评论、用户反馈、用户帮助、用户关于、用户退出登录按钮
40        4.1.2、点击用户头像进入用户信息页
415、订单
42    5.1、订单列表
43        5.1.1、显示订单编号、订单金额、订单状态、订单时间、订单操作按钮
44        5.1.2、点击订单进入订单详情页
45    5.2、订单详情
46        5.2.1、显示订单编号、订单金额、订单状态、订单时间、订单操作按钮
47        5.2.2、点击订单进入订单详情页
48    5.3、订单结算
49        5.3.1、显示订单编号、订单金额、订单状态、订单时间、订单操作按钮
50
51后端需求如下:
52后端使用Java开发,使用Spring Boot框架,数据库使用MySQL。
53数据库连接信息为:
54jdbc:mysql://xxx:3306/cursor_mail?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
55username:xxx
56password:xxx
57driver-class-name: com.mysql.cj.jdbc.Driver
58有两个后端服务,一个是商城小程序的后端服务,一个是商城后台管理系统的后端服务。
59暂时数据库里还没任何表,你可以根据需求创建表。
60
61商城小程序的后端服务的后端我需要你在:F:\Code\AI\Cursor\WechatCursorMail\WechatBack中进后端的开发。
62
63后端接口设计如下:
641、用户相关接口:
65    1.1、用户登录接口
66        路径:/api/user/login
67    1.2、用户注册接口
68        路径:/api/user/register
69    1.3、用户信息接口
70        路径:/api/user/info
71    1.4、用户订单接口
72        路径:/api/user/order
73    1.5、用户订单详情接口
74        路径:/api/user/order/detail
75    1.6、用户订单列表接口
76        路径:/api/user/order/list
772、商品相关接口:
78    2.1、商品列表接口
79        路径:/api/product/list
80    2.2、商品详情接口
81        路径:/api/product/detail
82    2.3、商品分类接口
83        路径:/api/product/category
84    2.4、商品分类列表接口
85        路径:/api/product/category/list
863、订单相关接口:
87    3.1、订单列表接口
88        路径:/api/order/list
89    3.2、订单详情接口
90        路径:/api/order/detail
91    3.3、订单支付接口
92        路径:/api/order/pay
934、地址相关接口:
94    4.1、地址列表接口
95        路径:/api/address/list
96    4.2、地址详情接口
97        路径:/api/address/detail
98    4.3、地址添加接口
99        路径:/api/address/add
100    4.4、地址修改接口
101        路径:/api/address/update
102    4.5、地址删除接口
103        路径:/api/address/delete
104
105
106商城后台管理系统的后端服务,需要你在F:\Code\AI\Cursor\WechatCursorMail\WechatMail中进行开发,商城后台管理系统的功能如下:
1071、商品管理
108    1.1、商品列表
109        路径:/admin/product/list
110        1.1.1、显示商品名称、图片、价格、库存、状态、操作按钮
111        1.1.2、点击商品进入商品详情页
112    1.2、商品添加
113        路径:/admin/product/add
114        1.2.1、显示商品名称、图片、价格、库存、状态、操作按钮
115        1.2.2、点击商品进入商品详情页
116    1.3、商品编辑
117        路径:/admin/product/edit
118        1.3.1、显示商品名称、图片、价格、库存、状态、操作按钮
119        1.3.2、点击商品进入商品详情页
120    1.4、商品删除
121        路径:/admin/product/delete
122        1.4.1、显示商品名称、图片、价格、库存、状态、操作按钮
123        1.4.2、点击商品进入商品详情页
1242、订单管理
125    2.1、订单列表
126        路径:/admin/order/list
127        2.1.1、显示订单编号、订单金额、订单状态、订单时间、订单操作按钮
128        2.1.2、点击订单进入订单详情页
129    2.2、订单详情
130        路径:/admin/order/detail
131        2.2.1、显示订单编号、订单金额、订单状态、订单时间、订单操作按钮
132        2.2.2、点击订单进入订单详情页
1333、用户管理
134    3.1、用户列表
135        路径:/admin/user/list
136        3.1.1、显示用户头像、用户昵称、用户手机号、用户性别、用户地址、用户积分、用户等级、用户优惠券、用户订单、用户收藏、用户足迹、用户评论、用户反馈、用户帮助、用户关于、用户退出登录按钮
137        3.1.2、点击用户进入用户信息页
138    3.2、用户详情
139        路径:/admin/user/detail
140        3.2.1、显示用户头像、用户昵称、用户手机号、用户性别、用户地址、用户积分、用户等级、用户优惠券、用户订单、用户收藏、用户足迹、用户评论、用户反馈、用户帮助、用户关于、用户退出登录按钮
141        3.2.2、点击用户进入用户信息页
142
143暂时就这么多功能,你可以根据需求进行扩展。
144
1@微信小程序需求设计  请你根据这个需求设计文档,分别细化小程序前端、小程序后端API、商城管理后台这三个,生成的内容分别写到文件:前缀为项目需求分析-的文档中,并且设计项目架构,生成的内容分别写到文件:前缀为项目架构设计-的文档中
2

生成六个文档
在这里插入图片描述

1.3 数据库准备

生成对应数据库文件

1@项目需求分析-小程序后端API.md @项目需求分析-商城管理后台.md @项目架构设计-商城管理后台.md @项目架构设计-小程序后端API.md 请你根据里面的设计,分析我应该在数据库创建哪些表?给出创建数据库表的sql语言并保存到文件中
2
1-- ============================================
2-- 微信商城小程序数据库表结构
3-- 数据库名: cursor_mail
4-- 创建时间: 2024
5-- ============================================
6
7-- 设置字符集
8SET NAMES utf8mb4;
9SET FOREIGN_KEY_CHECKS = 0;
10
11-- ============================================
12-- 1. 用户表(user)
13-- ============================================
14DROP TABLE IF EXISTS `user`;
15CREATE TABLE `user` (
16  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
17  `openid` VARCHAR(100) DEFAULT NULL COMMENT '微信openid',
18  `nickname` VARCHAR(50) DEFAULT NULL COMMENT '用户昵称',
19  `avatar` VARCHAR(500) DEFAULT NULL COMMENT '用户头像URL',
20  `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
21  `gender` TINYINT(1) DEFAULT 0 COMMENT '性别(0-未知,1-男,2-女)',
22  `points` INT(11) DEFAULT 0 COMMENT '积分',
23  `level` INT(11) DEFAULT 1 COMMENT '用户等级',
24  `status` TINYINT(1) DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
25  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
26  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
27  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
28  UNIQUE KEY `uk_openid` (`openid`),
29  KEY `idx_phone` (`phone`),
30  KEY `idx_status` (`status`),
31  KEY `idx_create_time` (`create_time`)
32) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
33
34-- ============================================
35-- 2. 商品分类表(category)
36-- ============================================
37DROP TABLE IF EXISTS `category`;
38CREATE TABLE `category` (
39  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
40  `name` VARCHAR(50) NOT NULL COMMENT '分类名称',
41  `image` VARCHAR(500) DEFAULT NULL COMMENT '分类图片URL',
42  `parent_id` BIGINT(20) DEFAULT 0 COMMENT '父分类ID(0表示顶级分类)',
43  `sort` INT(11) DEFAULT 0 COMMENT '排序字段',
44  `status` TINYINT(1) DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
45  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
46  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
47  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
48  KEY `idx_parent_id` (`parent_id`),
49  KEY `idx_status` (`status`),
50  KEY `idx_sort` (`sort`)
51) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品分类表';
52
53-- ============================================
54-- 3. 商品表(product)
55-- ============================================
56DROP TABLE IF EXISTS `product`;
57CREATE TABLE `product` (
58  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
59  `name` VARCHAR(200) NOT NULL COMMENT '商品名称',
60  `description` TEXT COMMENT '商品描述',
61  `image` VARCHAR(500) DEFAULT NULL COMMENT '商品主图URL',
62  `images` TEXT COMMENT '商品图片列表(JSON格式)',
63  `price` INT(11) NOT NULL DEFAULT 0 COMMENT '商品价格(单位:分)',
64  `stock` INT(11) DEFAULT 0 COMMENT '库存数量',
65  `category_id` BIGINT(20) DEFAULT NULL COMMENT '分类ID',
66  `status` TINYINT(1) DEFAULT 1 COMMENT '状态(0-下架,1-上架)',
67  `sort` INT(11) DEFAULT 0 COMMENT '排序字段',
68  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
69  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
70  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
71  KEY `idx_category_id` (`category_id`),
72  KEY `idx_status` (`status`),
73  KEY `idx_sort` (`sort`),
74  KEY `idx_create_time` (`create_time`),
75  CONSTRAINT `fk_product_category` FOREIGN KEY (`category_id`) REFERENCES `category` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE SET NULL ON UPDATE CASCADE
76) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='商品表';
77
78-- ============================================
79-- 4. 购物车表(cart)
80-- ============================================
81DROP TABLE IF EXISTS `cart`;
82CREATE TABLE `cart` (
83  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
84  `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
85  `product_id` BIGINT(20) NOT NULL COMMENT '商品ID',
86  `quantity` INT(11) NOT NULL DEFAULT 1 COMMENT '商品数量',
87  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
88  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
89  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
90  UNIQUE KEY `uk_user_product` (`user_id`, `product_id`),
91  KEY `idx_user_id` (`user_id`),
92  KEY `idx_product_id` (`product_id`),
93  CONSTRAINT `fk_cart_user` FOREIGN KEY (`user_id`) REFERENCES `user` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE CASCADE ON UPDATE CASCADE,
94  CONSTRAINT `fk_cart_product` FOREIGN KEY (`product_id`) REFERENCES `product` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE CASCADE ON UPDATE CASCADE
95) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='购物车表';
96
97-- ============================================
98-- 5. 收货地址表(address)
99-- ============================================
100DROP TABLE IF EXISTS [`address`](https://xplanc.org/primers/document/zh/03.HTML/EX.HTML%20%E5%85%83%E7%B4%A0/EX.address.md);
101CREATE TABLE [`address`](https://xplanc.org/primers/document/zh/03.HTML/EX.HTML%20%E5%85%83%E7%B4%A0/EX.address.md) (
102  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
103  `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
104  `name` VARCHAR(50) NOT NULL COMMENT '收货人姓名',
105  `phone` VARCHAR(20) NOT NULL COMMENT '收货人手机号',
106  `province` VARCHAR(50) DEFAULT NULL COMMENT '省份',
107  `city` VARCHAR(50) DEFAULT NULL COMMENT '城市',
108  `district` VARCHAR(50) DEFAULT NULL COMMENT '区县',
109  `detail` VARCHAR(200) NOT NULL COMMENT '详细地址',
110  `is_default` TINYINT(1) DEFAULT 0 COMMENT '是否默认地址(0-否,1-是)',
111  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
112  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
113  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
114  KEY `idx_user_id` (`user_id`),
115  KEY `idx_is_default` (`is_default`),
116  CONSTRAINT `fk_address_user` FOREIGN KEY (`user_id`) REFERENCES `user` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE CASCADE ON UPDATE CASCADE
117) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收货地址表';
118
119-- ============================================
120-- 6. 订单表(order)
121-- ============================================
122DROP TABLE IF EXISTS `order`;
123CREATE TABLE `order` (
124  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
125  `order_no` VARCHAR(50) NOT NULL COMMENT '订单编号',
126  `user_id` BIGINT(20) NOT NULL COMMENT '用户ID',
127  `total_amount` INT(11) NOT NULL DEFAULT 0 COMMENT '订单总金额(单位:分)',
128  `status` TINYINT(1) DEFAULT 0 COMMENT '订单状态(0-待付款,1-待发货,2-待收货,3-已完成,4-已取消)',
129  `address_id` BIGINT(20) DEFAULT NULL COMMENT '收货地址ID',
130  `remark` VARCHAR(500) DEFAULT NULL COMMENT '订单备注',
131  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
132  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
133  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
134  UNIQUE KEY `uk_order_no` (`order_no`),
135  KEY `idx_user_id` (`user_id`),
136  KEY `idx_status` (`status`),
137  KEY `idx_create_time` (`create_time`),
138  KEY `idx_address_id` (`address_id`),
139  CONSTRAINT `fk_order_user` FOREIGN KEY (`user_id`) REFERENCES `user` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE RESTRICT ON UPDATE CASCADE,
140  CONSTRAINT `fk_order_address` FOREIGN KEY (`address_id`) REFERENCES [`address`](https://xplanc.org/primers/document/zh/03.HTML/EX.HTML%20%E5%85%83%E7%B4%A0/EX.address.md) ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE SET NULL ON UPDATE CASCADE
141) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
142
143-- ============================================
144-- 7. 订单商品表(order_item)
145-- ============================================
146DROP TABLE IF EXISTS `order_item`;
147CREATE TABLE `order_item` (
148  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
149  `order_id` BIGINT(20) NOT NULL COMMENT '订单ID',
150  `product_id` BIGINT(20) DEFAULT NULL COMMENT '商品ID',
151  `product_name` VARCHAR(200) NOT NULL COMMENT '商品名称(快照)',
152  `product_image` VARCHAR(500) DEFAULT NULL COMMENT '商品图片(快照)',
153  `product_price` INT(11) NOT NULL DEFAULT 0 COMMENT '商品价格(快照,单位:分)',
154  `quantity` INT(11) NOT NULL DEFAULT 1 COMMENT '商品数量',
155  `subtotal` INT(11) NOT NULL DEFAULT 0 COMMENT '小计金额(单位:分)',
156  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
157  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
158  KEY `idx_order_id` (`order_id`),
159  KEY `idx_product_id` (`product_id`),
160  CONSTRAINT `fk_order_item_order` FOREIGN KEY (`order_id`) REFERENCES `order` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE CASCADE ON UPDATE CASCADE,
161  CONSTRAINT `fk_order_item_product` FOREIGN KEY (`product_id`) REFERENCES `product` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE SET NULL ON UPDATE CASCADE
162) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单商品表';
163
164-- ============================================
165-- 8. 管理员表(admin)
166-- ============================================
167DROP TABLE IF EXISTS `admin`;
168CREATE TABLE `admin` (
169  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
170  `username` VARCHAR(50) NOT NULL COMMENT '管理员账号',
171  `password` VARCHAR(100) NOT NULL COMMENT '密码(加密存储)',
172  `nickname` VARCHAR(50) DEFAULT NULL COMMENT '管理员昵称',
173  `role` VARCHAR(20) DEFAULT 'admin' COMMENT '角色(super_admin-超级管理员,admin-普通管理员)',
174  `status` TINYINT(1) DEFAULT 1 COMMENT '状态(0-禁用,1-启用)',
175  `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间',
176  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
177  `update_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
178  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
179  UNIQUE KEY `uk_username` (`username`),
180  KEY `idx_status` (`status`),
181  KEY `idx_role` (`role`)
182) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='管理员表';
183
184-- ============================================
185-- 9. 操作日志表(admin_log)
186-- ============================================
187DROP TABLE IF EXISTS `admin_log`;
188CREATE TABLE `admin_log` (
189  [`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md) BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
190  `admin_id` BIGINT(20) NOT NULL COMMENT '管理员ID',
191  `action` VARCHAR(20) NOT NULL COMMENT '操作类型(add-新增,update-修改,delete-删除,query-查询)',
192  `module` VARCHAR(20) NOT NULL COMMENT '操作模块(product-商品,order-订单,user-用户)',
193  `content` VARCHAR(500) DEFAULT NULL COMMENT '操作内容',
194  `ip` VARCHAR(50) DEFAULT NULL COMMENT '操作IP',
195  `create_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '操作时间',
196  PRIMARY KEY ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)),
197  KEY `idx_admin_id` (`admin_id`),
198  KEY `idx_module` (`module`),
199  KEY `idx_action` (`action`),
200  KEY `idx_create_time` (`create_time`),
201  CONSTRAINT `fk_admin_log_admin` FOREIGN KEY (`admin_id`) REFERENCES `admin` ([`id`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.id.md)) ON DELETE CASCADE ON UPDATE CASCADE
202) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';
203
204-- ============================================
205-- 初始化数据
206-- ============================================
207
208-- 插入默认管理员账号(密码需要加密后存储,这里仅作示例)
209-- 默认账号: admin
210-- 默认密码: admin123 (需要使用BCrypt加密后存储)
211-- INSERT INTO `admin` (`username`, `password`, `nickname`, `role`, `status`) 
212-- VALUES ('admin', '$2a$10$加密后的密码', '系统管理员', 'super_admin', 1);
213
214-- 插入示例分类数据
215INSERT INTO `category` (`name`, `image`, `parent_id`, `sort`, `status`) VALUES
216('电子产品', NULL, 0, 1, 1),
217('服装鞋帽', NULL, 0, 2, 1),
218('食品饮料', NULL, 0, 3, 1),
219('手机', NULL, 1, 1, 1),
220('电脑', NULL, 1, 2, 1),
221('男装', NULL, 2, 1, 1),
222('女装', NULL, 2, 2, 1);
223
224SET FOREIGN_KEY_CHECKS = 1;
225

运行sql后,数据库多出几张表
在这里插入图片描述

1.4 生成对应代码

1@项目架构设计-商城管理后台.md @项目架构设计-小程序后端API.md @项目架构设计-小程序前端.md @项目需求分析-商城管理后台.md @项目需求分析-小程序后端API.md @项目需求分析-小程序前端.md 请你按照要求,在对应的目录中生成代码
2

1.4.1 小程序前端

生成的代码如图所示
在这里插入图片描述
我们可以看到只要配置好对应的图片资源,整个页面的大体是已经显现出来了

在这里插入图片描述
调试我就懒得调试了,如果真正开发的时候再好好调试吧

1.4.2 小程序后端API

在这里插入图片描述

1.4.3 商家后端

在这里插入图片描述
其实还是有点小毛病的,比如引用错误什么的,这时候其实大概就已经可以了,我们就可以自己下手改了。整个过程不超过20分钟,大大减轻了我们的CRUD的过程,只需要关注整个架构和一些复杂的业务实现。

这里我就懒得改了,我们只是关注下他的过程就可以了。

2 开发安卓APP

我们之前使用过qwen的文生图,我们就来开发一个文生图的APP

2.1 创建项目

先用Android Studio创建一个Android API 21的项目,安装到我们的设备中
在这里插入图片描述
在这里插入图片描述

2.2 Cursor介入

需求文档:

1我想做一个安卓APP,项目名称为神笔马良,使用Android API 21.项目由Android Studio初始生成,目录为F:\Code\AI\Cursor\GenerateImage\Maliang
2我要求实现以下功能:
31、用户输入一段文字,点击生成按钮,生成一个图片
42、图片生成后,用户可以下载图片
5文生图的能力使用的是qwen的文生图模型,可以生成高质量的图片
6模型名称是:qwen-image-plus
7apikey是:sk-xxxx
8

prompt:

1@需求文件 请根据需求文件帮我生成一个UI示意图,生成的文件写入UI示意图
2

在这里插入图片描述
生成ui设计图后,接着生成代码

1@需求文件 @UI示意图 请根据需求和UI示意图生成代码
2

在这里插入图片描述
已经生成完了,我们来拿拿味儿,当然中间有几次报错比如import没对,样式不对之类的,他都能识别出来
在这里插入图片描述
依旧输入我们的prompt:

1芝士菠萝虾堡,高清美食摄影,细节丰富,白色背景,光线明亮柔和
2

请求以下,请求成功,很完美哈
在这里插入图片描述

2.3 源码开放

项目源码均放于github:神笔马良
有兴趣的小伙伴可以下载使用下。


【AI应用探索】-10- Cursor实战:小程序&APP - 下》 是转载文章,点击查看原文


相关推荐


flutter项目老是卡在Running Gradle task ‘assembleRelease‘......
Sindyue2025/11/13

调试开发: 1. adb logcat | grep "tag flutter" 2. flutter clean flutter run --verbose 可以看到下载卡在哪里了 Set environment variables set PUB_HOSTED_URL=https://pub.flutter-io.cn set FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn Then run your Flutter com


Python 的内置函数 hex
IMPYLH2025/11/11

Python 内建函数列表 > Python 的内置函数 hex Python 的内置函数 hex() 用于将一个整数转换为以 “0x” 为前缀的小写十六进制字符串。该函数接受一个整数作为参数,并返回对应的十六进制字符串表示。 详细说明 函数语法: hex(x) x:必须是一个整数对象(可以是 Python 的 int 类型,或者实现了 __index__() 方法的自定义对象) 返回值: 返回字符串类型,格式为 "0x" 开头,后面跟随十六进制数字(a-f 使用小写字母


C++ 图片加背景音乐的处理
laocooon5238578862025/11/9

//music_manager.h #pragma once // 播放背景音乐 void playBackgroundMusic(const char* music, bool repeat = false, int volume = -1); // 暂停当前播放的音乐 void pauseBackgroundMusic(); // 恢复暂停的音乐 void resumeBackgroundMusic(); // 停止并关闭当前音乐 void stopBackgroundMusic()


让数据库“听懂“人话:Text2Sql.Net 深度技术解析
许泽宇的技术分享2025/11/6

从自然语言到SQL的智能转换之旅——基于.NET与Semantic Kernel的企业级实践 📖 引言:当AI遇见数据库 想象一下这样的场景:产品经理走到你面前说"帮我查一下上个月销售额最高的前10个产品",你不用打开SQL客户端,不用回忆表结构,甚至不用写一行代码,只需要把这句话原封不动地"告诉"数据库,几秒钟后,结果就呈现在眼前。 这不是科幻,这就是 Text2Sql.Net 正在做的事情。 在数据驱动的时代,SQL依然是连接人与数据的桥梁。但让我们面对现实:不是每个人都会


Redis(98) Redis的安全更新如何进行?
Victor3562025/11/2

保持Redis的安全更新至关重要,以防止潜在的安全漏洞和攻击。以下是详细的Redis安全更新步骤和相关代码示例。 1. 检查当前Redis版本 首先,检查当前安装的Redis版本。 redis-server --version 或通过Redis CLI: redis-cli info server | grep redis_version 2. 备份Redis数据 在进行任何更新之前,务必备份Redis数据,以防止数据丢失。 手动触发RDB快照 redis-cli BGSAVE 备份RDB


Python 的内置函数 eval
IMPYLH2025/10/30

Python 内建函数列表 > Python 的内置函数 eval Python 的内置函数 eval() 是一个强大的功能函数,用于执行动态生成的 Python 表达式。它的完整语法是: eval(expression, globals=None, locals=None) 其中: expression 是必需参数,表示要执行的字符串形式的 Python 表达式globals 是可选的全局变量字典locals 是可选的局部变量字典 示例: x = 10 result = eval


Spring Boot 启动流程源码解析
湮酒2025/10/28

⚙️Spring Boot 启动流程源码解析 文章目录 ⚙️Spring Boot 启动流程源码解析🎯 一、Spring Boot 启动流程概览🔄 启动流程全景图⏱️ 启动阶段时间线 🏗️ 二、SpringApplication 初始化阶段🚀 SpringApplication.run() 入口分析🔧 应用类型推断机制📦 工厂加载机制 ⚙️ 三、启动前准备:Banner、Environment、Listener🚀 run() 方法执行流程🎨 Banner 打印机


BUYCOIN:以社区共治重构加密交易版图,定义交易所3.0时代
焦点链创研究所2025/10/25

2025年,全球加密市场在合规化浪潮与信任重建需求的双重驱动下,正经历一场深刻的范式革命。当FTX暴雷事件的余波仍在引发行业对中心化模式的反思,当传统交易所“少数人受益”的分配壁垒愈发凸显,持有美国MSB合规牌照的BUYCOIN交易所横空出世。它以“非托管架构+DAO治理”为双引擎,以“全民持股”为核心内核,不仅破解了传统交易所的信任难题与价值分配困局,更在加密行业迈入万亿美元规模的关键节点,为全球用户勾勒出“共建、共治、共享”的交易新生态。 破局者登场:瞄准行业沉疴的范式革新 当前加密市场呈


UVa 1660 Cable TV Network
寂静山林2025/10/22

题目描述 给定一个双向连接的有线电视网络,网络由中继器(节点)和电缆(边)组成。网络连通的定义是:任意两个节点之间至少存在一条路径。安全系数 fff 的定义如下: 如果无论删除多少个节点(只要不全部删除),网络都保持连通,则 f=nf = nf=n(nnn 为节点数)。 否则,fff 等于能够使网络断开的最小删除节点数。 注意: 空网络(n=0n = 0n=0)或单节点网络(n=1n = 1n=1)视为连通。 输入数据保证正确,节点数 n≤50n \leq 50n


Android studio 修改包名
lichong9512025/10/22

在 Android Studio 里把 package="com.fhvideo.phone" 整体改掉(例如换成 com.mycompany.newapp)分两步走: 让 源码目录结构 和 package 声明 一致让 build.gradle 的 applicationId 与 AndroidManifest.xml 的 package 同步(否则安装时会当成全新应用) 下面给出 最简无坑流程,全程 2-3 min,复制即可用。 一、一键重命名(IDE 自带) 切到 Projec

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0