Files
integral-shop/backend/docs/后续工作完成情况.md
2026-03-08 18:35:11 +08:00

11 KiB
Raw Permalink Blame History

商品寄卖服务模块 - 后续工作完成情况

完成时间

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 - 轮播图表

使用方法

# 连接到 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 方法中添加了商品寄卖服务模块不需要登录验证的接口路由

新增的公开访问路由

"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 基本结构模板

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

Integer userId = frontTokenComponent.getUserId();
if (userId == null) {
    throw new CrmebException("请先登录");
}

2.3 分页查询示例

@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 事务处理示例

@Override
@Transactional(rollbackFor = Exception.class)
public Boolean createOrder(OrderRequest request) {
    // 1. 检查库存
    // 2. 创建订单
    // 3. 扣减库存
    // 4. 记录日志
    return true;
}

三、数据库部署说明

3.1 执行建表脚本

# 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 方法编写单元测试:

@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. 用户注册
POST /api/user/register
Content-Type: application/json

{
  "mobile": "18888888888",
  "password": "123456",
  "code": "123456",
  "inviteCode": ""
}
  1. 用户登录
POST /api/user/login
Content-Type: application/json

{
  "account": "18888888888",
  "password": "123456"
}
  1. 获取用户信息需要Token
POST /api/user/info
Authori-zation: Bearer YOUR_TOKEN

五、注意事项

  1. 密码加密:使用 CrmebUtil.encryptPassword() 方法加密密码
  2. 事务处理:涉及多表操作时使用 @Transactional 注解
  3. 异常处理:使用 CrmebException 抛出业务异常
  4. 日志记录:使用 @Slf4j 注解记录关键操作日志
  5. Token 验证:通过 FrontTokenComponent 获取当前用户信息
  6. 分页处理:使用 PageHelperPageInfo 处理分页
  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 XML14个

  • crmeb-service/src/main/resources/mapper/consignment/

7.9 SQL 脚本1个

  • sql/wa_consignment_tables.sql

维护人员: AI Assistant
完成日期: 2025-11-08
文档状态: 基础框架已完成,业务逻辑待完善