393 lines
11 KiB
Markdown
393 lines
11 KiB
Markdown
# 商品寄卖服务模块 - 后续工作完成情况
|
||
|
||
## 完成时间
|
||
2025-11-08
|
||
|
||
## 一、已完成工作清单
|
||
|
||
### 1. ✅ Dao/Mapper 接口创建(14个)
|
||
|
||
所有 Dao 接口已创建在:`crmeb-service/src/main/java/com/zbkj/service/dao/consignment/`
|
||
|
||
| 序号 | 文件名 | 说明 | 状态 |
|
||
|------|--------|------|------|
|
||
| 1 | WaUsersDao.java | 用户表 Mapper | ✅ 已完成 |
|
||
| 2 | WaGoodsDao.java | 商品表 Mapper | ✅ 已完成 |
|
||
| 3 | WaMerchandiseDao.java | 寄售商品表 Mapper | ✅ 已完成 |
|
||
| 4 | WaOrderDao.java | 订单表 Mapper | ✅ 已完成 |
|
||
| 5 | WaCategoryDao.java | 商品分类表 Mapper | ✅ 已完成 |
|
||
| 6 | WaAddressDao.java | 收货地址表 Mapper | ✅ 已完成 |
|
||
| 7 | WaMoneyLogDao.java | 余额变动表 Mapper | ✅ 已完成 |
|
||
| 8 | WaCouponLogDao.java | 优惠券变动表 Mapper | ✅ 已完成 |
|
||
| 9 | WaSelfbonusLogDao.java | 个人奖金变动表 Mapper | ✅ 已完成 |
|
||
| 10 | WaSharebonusLogDao.java | 推广奖金变动表 Mapper | ✅ 已完成 |
|
||
| 11 | WaWithdrawDao.java | 提现表 Mapper | ✅ 已完成 |
|
||
| 12 | WaAlipayDao.java | 用户支付宝表 Mapper | ✅ 已完成 |
|
||
| 13 | WaBankDao.java | 用户银行卡表 Mapper | ✅ 已完成 |
|
||
| 14 | WaBannerDao.java | 轮播图表 Mapper | ✅ 已完成 |
|
||
|
||
---
|
||
|
||
### 2. ✅ MyBatis XML 映射文件创建(14个)
|
||
|
||
所有 XML 映射文件已创建在:`crmeb-service/src/main/resources/mapper/consignment/`
|
||
|
||
| 序号 | 文件名 | 对应 Dao | 状态 |
|
||
|------|--------|----------|------|
|
||
| 1 | WaUsersMapper.xml | WaUsersDao | ✅ 已完成 |
|
||
| 2 | WaGoodsMapper.xml | WaGoodsDao | ✅ 已完成 |
|
||
| 3 | WaMerchandiseMapper.xml | WaMerchandiseDao | ✅ 已完成 |
|
||
| 4 | WaOrderMapper.xml | WaOrderDao | ✅ 已完成 |
|
||
| 5 | WaCategoryMapper.xml | WaCategoryDao | ✅ 已完成 |
|
||
| 6 | WaAddressMapper.xml | WaAddressDao | ✅ 已完成 |
|
||
| 7 | WaMoneyLogMapper.xml | WaMoneyLogDao | ✅ 已完成 |
|
||
| 8 | WaCouponLogMapper.xml | WaCouponLogDao | ✅ 已完成 |
|
||
| 9 | WaSelfbonusLogMapper.xml | WaSelfbonusLogDao | ✅ 已完成 |
|
||
| 10 | WaSharebonusLogMapper.xml | WaSharebonusLogDao | ✅ 已完成 |
|
||
| 11 | WaWithdrawMapper.xml | WaWithdrawDao | ✅ 已完成 |
|
||
| 12 | WaAlipayMapper.xml | WaAlipayDao | ✅ 已完成 |
|
||
| 13 | WaBankMapper.xml | WaBankDao | ✅ 已完成 |
|
||
| 14 | WaBannerMapper.xml | WaBannerDao | ✅ 已完成 |
|
||
|
||
**说明**:XML 文件已创建基础结构,使用 MyBatis Plus 的 BaseMapper,常用的 CRUD 操作无需手动编写 SQL。
|
||
|
||
---
|
||
|
||
### 3. ✅ 数据库建表 SQL 脚本创建
|
||
|
||
**文件位置**:`sql/wa_consignment_tables.sql`
|
||
|
||
**包含内容**:
|
||
- 14 张数据表的完整建表语句
|
||
- 所有字段定义和注释
|
||
- 主键、唯一键、普通索引定义
|
||
- 表引擎和字符集配置
|
||
- 初始化数据(商品分类)
|
||
|
||
**表清单**:
|
||
1. wa_users - 寄卖服务用户表
|
||
2. wa_goods - 商品表
|
||
3. wa_merchandise - 寄售商品表
|
||
4. wa_order - 订单表
|
||
5. wa_category - 商品分类表
|
||
6. wa_address - 收货地址表
|
||
7. wa_money_log - 余额变动表
|
||
8. wa_coupon_log - 优惠券变动表
|
||
9. wa_selfbonus_log - 个人奖金变动表
|
||
10. wa_sharebonus_log - 推广奖金变动表
|
||
11. wa_withdraw - 提现表
|
||
12. wa_alipay - 用户支付宝表
|
||
13. wa_bank - 用户银行卡表
|
||
14. wa_banner - 轮播图表
|
||
|
||
**使用方法**:
|
||
```bash
|
||
# 连接到 MySQL 数据库
|
||
mysql -u root -p your_database_name
|
||
|
||
# 执行建表脚本
|
||
source sql/wa_consignment_tables.sql
|
||
```
|
||
|
||
---
|
||
|
||
### 4. ✅ 拦截器配置更新
|
||
|
||
**文件位置**:`crmeb-common/src/main/java/com/zbkj/common/token/FrontTokenComponent.java`
|
||
|
||
**更新内容**:在 `checkRouter` 方法中添加了商品寄卖服务模块不需要登录验证的接口路由
|
||
|
||
**新增的公开访问路由**:
|
||
```java
|
||
"api/user/login", // 用户登录
|
||
"api/user/register", // 用户注册
|
||
"api/goods/category", // 获取商品分类
|
||
"api/goods/list", // 获取商品列表
|
||
"api/goods/detail", // 获取商品详情
|
||
"api/index/banner", // 获取轮播图
|
||
"api/index/get", // 获取首页配置
|
||
"api/sms/send" // 发送短信验证码
|
||
```
|
||
|
||
---
|
||
|
||
### 5. ✅ Service 实现类创建
|
||
|
||
**已创建**:
|
||
- `WaUserServiceImpl.java` - 用户服务实现类(包含完整的登录、注册、获取信息等逻辑)
|
||
|
||
**其他 8 个 Service 实现类状态**:
|
||
由于业务逻辑复杂,需要根据实际业务需求完善,建议采用以下方式:
|
||
|
||
1. **WaGoodsServiceImpl** - 商品服务
|
||
- 实现商品分类查询
|
||
- 实现商品列表查询
|
||
- 实现商品详情查询
|
||
|
||
2. **WaOrderServiceImpl** - 订单服务
|
||
- 实现订单创建(抢单)
|
||
- 实现订单支付
|
||
- 实现订单确认
|
||
- 实现订单取消
|
||
- 实现订单转拍
|
||
- 实现订单列表和详情查询
|
||
|
||
3. **WaAddressServiceImpl** - 地址服务
|
||
- 实现地址的增删改查
|
||
- 实现默认地址设置
|
||
|
||
4. **WaMoneyServiceImpl** - 财务服务
|
||
- 实现财务记录查询
|
||
- 实现提现申请
|
||
- 实现财务变动日志记录
|
||
|
||
5. **WaPayServiceImpl** - 支付服务
|
||
- 实现支付宝绑定
|
||
- 实现银行卡绑定
|
||
- 实现支付信息查询
|
||
|
||
6. **WaShareServiceImpl** - 分享推广服务
|
||
- 实现分享数据统计
|
||
- 实现粉丝列表查询
|
||
|
||
7. **WaIndexServiceImpl** - 首页服务
|
||
- 实现轮播图查询
|
||
- 实现配置数据查询
|
||
|
||
8. **WaSmsServiceImpl** - 短信服务
|
||
- 实现短信验证码发送
|
||
- 实现验证码验证
|
||
|
||
---
|
||
|
||
## 二、Service 实现类编写指南
|
||
|
||
### 2.1 基本结构模板
|
||
|
||
```java
|
||
package com.zbkj.front.service.impl;
|
||
|
||
import com.zbkj.common.token.FrontTokenComponent;
|
||
import com.zbkj.front.service.XXXService;
|
||
import com.zbkj.service.dao.consignment.XXXDao;
|
||
import lombok.extern.slf4j.Slf4j;
|
||
import org.springframework.beans.factory.annotation.Autowired;
|
||
import org.springframework.stereotype.Service;
|
||
import org.springframework.transaction.annotation.Transactional;
|
||
|
||
@Slf4j
|
||
@Service
|
||
public class XXXServiceImpl implements XXXService {
|
||
|
||
@Autowired
|
||
private XXXDao xxxDao;
|
||
|
||
@Autowired
|
||
private FrontTokenComponent frontTokenComponent;
|
||
|
||
// 实现接口方法...
|
||
}
|
||
```
|
||
|
||
### 2.2 获取当前用户ID
|
||
|
||
```java
|
||
Integer userId = frontTokenComponent.getUserId();
|
||
if (userId == null) {
|
||
throw new CrmebException("请先登录");
|
||
}
|
||
```
|
||
|
||
### 2.3 分页查询示例
|
||
|
||
```java
|
||
@Override
|
||
public PageInfo<XXXResponse> getList(PageParamRequest pageParamRequest) {
|
||
PageHelper.startPage(pageParamRequest.getPage(), pageParamRequest.getLimit());
|
||
|
||
LambdaQueryWrapper<XXX> wrapper = new LambdaQueryWrapper<>();
|
||
wrapper.orderByDesc(XXX::getCreatedAt);
|
||
|
||
List<XXX> list = xxxDao.selectList(wrapper);
|
||
|
||
// 转换为 Response 对象
|
||
List<XXXResponse> responseList = list.stream()
|
||
.map(this::convertToResponse)
|
||
.collect(Collectors.toList());
|
||
|
||
return new PageInfo<>(responseList);
|
||
}
|
||
```
|
||
|
||
### 2.4 事务处理示例
|
||
|
||
```java
|
||
@Override
|
||
@Transactional(rollbackFor = Exception.class)
|
||
public Boolean createOrder(OrderRequest request) {
|
||
// 1. 检查库存
|
||
// 2. 创建订单
|
||
// 3. 扣减库存
|
||
// 4. 记录日志
|
||
return true;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 三、数据库部署说明
|
||
|
||
### 3.1 执行建表脚本
|
||
|
||
```bash
|
||
# 1. 登录 MySQL
|
||
mysql -u root -p
|
||
|
||
# 2. 选择数据库
|
||
use your_database_name;
|
||
|
||
# 3. 执行建表脚本
|
||
source /path/to/sql/wa_consignment_tables.sql;
|
||
|
||
# 4. 验证表是否创建成功
|
||
show tables like 'wa_%';
|
||
|
||
# 5. 检查表结构
|
||
desc wa_users;
|
||
```
|
||
|
||
### 3.2 初始化数据
|
||
|
||
建表脚本中已包含商品分类的初始化数据:
|
||
- 手机数码
|
||
- 家用电器
|
||
- 服装鞋帽
|
||
- 图书音像
|
||
- 运动户外
|
||
|
||
---
|
||
|
||
## 四、测试建议
|
||
|
||
### 4.1 单元测试
|
||
|
||
建议为每个 Service 方法编写单元测试:
|
||
|
||
```java
|
||
@RunWith(SpringRunner.class)
|
||
@SpringBootTest
|
||
public class WaUserServiceTest {
|
||
|
||
@Autowired
|
||
private WaUserService waUserService;
|
||
|
||
@Test
|
||
public void testLogin() {
|
||
WaUserLoginRequest request = new WaUserLoginRequest();
|
||
request.setAccount("18888888888");
|
||
request.setPassword("123456");
|
||
|
||
WaLoginResponse response = waUserService.login(request);
|
||
assertNotNull(response.getToken());
|
||
}
|
||
}
|
||
```
|
||
|
||
### 4.2 接口测试
|
||
|
||
使用 Postman 或其他工具测试 API 接口:
|
||
|
||
1. **用户注册**
|
||
```http
|
||
POST /api/user/register
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"mobile": "18888888888",
|
||
"password": "123456",
|
||
"code": "123456",
|
||
"inviteCode": ""
|
||
}
|
||
```
|
||
|
||
2. **用户登录**
|
||
```http
|
||
POST /api/user/login
|
||
Content-Type: application/json
|
||
|
||
{
|
||
"account": "18888888888",
|
||
"password": "123456"
|
||
}
|
||
```
|
||
|
||
3. **获取用户信息(需要Token)**
|
||
```http
|
||
POST /api/user/info
|
||
Authori-zation: Bearer YOUR_TOKEN
|
||
```
|
||
|
||
---
|
||
|
||
## 五、注意事项
|
||
|
||
1. **密码加密**:使用 `CrmebUtil.encryptPassword()` 方法加密密码
|
||
2. **事务处理**:涉及多表操作时使用 `@Transactional` 注解
|
||
3. **异常处理**:使用 `CrmebException` 抛出业务异常
|
||
4. **日志记录**:使用 `@Slf4j` 注解记录关键操作日志
|
||
5. **Token 验证**:通过 `FrontTokenComponent` 获取当前用户信息
|
||
6. **分页处理**:使用 `PageHelper` 和 `PageInfo` 处理分页
|
||
7. **时间处理**:统一使用 `Date` 类型,数据库使用 `datetime` 类型
|
||
8. **金额处理**:统一使用 `BigDecimal` 类型,避免精度丢失
|
||
|
||
---
|
||
|
||
## 六、下一步工作
|
||
|
||
1. ⏳ **完善 Service 实现类**:根据业务需求实现剩余 8 个 Service 的业务逻辑
|
||
2. ⏳ **编写单元测试**:为所有 Service 方法编写单元测试
|
||
3. ⏳ **接口测试**:使用 Postman 测试所有 API 接口
|
||
4. ⏳ **性能优化**:对频繁查询的接口添加缓存
|
||
5. ⏳ **安全加固**:添加接口防刷、限流等安全措施
|
||
6. ⏳ **API 文档**:使用 Swagger 生成完整的 API 文档
|
||
|
||
---
|
||
|
||
## 七、文件清单汇总
|
||
|
||
### 7.1 实体类(14个)
|
||
- `crmeb-common/src/main/java/com/zbkj/common/model/consignment/`
|
||
|
||
### 7.2 Request 类(8个)
|
||
- `crmeb-common/src/main/java/com/zbkj/common/request/`
|
||
|
||
### 7.3 Response 类(9个)
|
||
- `crmeb-common/src/main/java/com/zbkj/common/response/`
|
||
|
||
### 7.4 Controller 类(9个)
|
||
- `crmeb-front/src/main/java/com/zbkj/front/controller/`
|
||
|
||
### 7.5 Service 接口(9个)
|
||
- `crmeb-front/src/main/java/com/zbkj/front/service/`
|
||
|
||
### 7.6 Service 实现类(部分完成)
|
||
- `crmeb-front/src/main/java/com/zbkj/front/service/impl/`
|
||
- ✅ WaUserServiceImpl.java
|
||
- ⏳ 其他 8 个实现类待完善
|
||
|
||
### 7.7 Dao 接口(14个)
|
||
- `crmeb-service/src/main/java/com/zbkj/service/dao/consignment/`
|
||
|
||
### 7.8 Mapper XML(14个)
|
||
- `crmeb-service/src/main/resources/mapper/consignment/`
|
||
|
||
### 7.9 SQL 脚本(1个)
|
||
- `sql/wa_consignment_tables.sql`
|
||
|
||
---
|
||
|
||
**维护人员**: AI Assistant
|
||
**完成日期**: 2025-11-08
|
||
**文档状态**: 基础框架已完成,业务逻辑待完善
|
||
|