这是大四上学期的专业综合课程设计。项目以 litemall 为主体,参考并整合多个开源商城项目,完成管理后台、微信小程序和商城业务的部署与演示。

返回项目实践 · 课程资料(提取码:3ezu

1、项目概览

项目 内容
学习阶段 大四上学期
项目形式 五人小组课程设计
目标用户 希望低成本搭建在线商城的个人或中小企业
使用端 平台后台、商家后台、微信小程序
现有材料 计划表、课程报告、源码压缩包、演示 PDF、讲稿和视频

2、来源与项目定位

该系统不是从零开发的商业商城。课程材料明确记录,它基于或参考了:

  • litemall
  • nideshop-mini-program
  • vue-element-admin
  • mall-admin-web
  • biu
  • vant-mobile-mall

项目的主要工作是理解现有架构、整合模块、配置部署、梳理业务、补充权限与展示流程。公开展示时应把它描述为开源项目二次学习与集成实践,而不是完全原创系统。

3、系统架构

模块 作用
litemall-all 系统启动与模块整合
litemall-db 数据访问与数据库配置
litemall-core 核心服务、存储和通知能力
litemall-admin-api 管理后台接口
litemall-wx-api 微信商城接口
管理前端 Vue、Vuex、Vue Router、Element UI
微信端 微信小程序与商城页面

后端使用 Spring、Spring Boot、Spring MVC、MyBatis 和 Redis;前端采用 Vue 技术栈;移动端以微信小程序为主。

4、关键代码入口

4.1 总启动类

源码中的 litemall-all 是总入口,启动时扫描 org.ysling.litemall 下的模块,并开启缓存、事务和 MyBatis Mapper 扫描。

1
2
3
4
5
6
7
8
9
10
@EnableCaching
@ServletComponentScan
@MapperScan("org.ysling.litemall.db.mapper")
@EnableTransactionManagement(proxyTargetClass = true)
@SpringBootApplication(scanBasePackages = {"org.ysling.litemall"})
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}

4.2 模块配置

litemall-all/src/main/resources/application.yml 通过 Profile 同时加载数据库、核心服务、后台接口和微信接口配置。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
spring:
profiles:
active: db, core, admin, wx
servlet:
multipart:
max-file-size: 20MB
max-request-size: 20MB
enabled: true
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss

server:
port: 6913

4.3 后台登录入口

后台认证接口使用 Sa-Token,登录成功后返回管理员信息、登录 token 和租户 token。这个接口能代表后台权限链路的入口。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@SaIgnore
@PostMapping("/login")
public Object login(@Valid @RequestBody LoginBody body) {
String username = body.getUsername();
String password = body.getPassword();
tenantService.setTenant(body.getAppid());

LitemallAdmin admin = new LitemallAdmin();
admin.setUsername(username);
admin.setPassword(password);
AuthenticationInfo.login(admin, body.getCode());

AdminInfo adminInfo = new AdminInfo();
BeanUtil.copyProperties(admin, adminInfo);

LoginResult result = new LoginResult();
result.setAdminInfo(adminInfo);
result.setToken(StpUtil.getTokenValue());
result.setTenantId(TokenManager.createTenantToken(admin.getTenantId()));
return ResponseUtil.ok(result);
}

4.4 微信端认证入口

微信端认证控制器把账号登录、微信登录、注册、重置、绑定手机等动作交给 WxWebAuthService,控制器本身主要负责路由和参数校验。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@RestController
@RequestMapping("/wx/auth")
@Validated
public class WxAuthController {

@Autowired
private WxWebAuthService authService;

@PostMapping("login")
public Object login(@LoginUser String userId,
@Valid @RequestBody AuthLoginBody body) {
return authService.login(userId, body);
}

@PostMapping("login_by_weixin")
public Object loginByWeixin(@Valid @RequestBody WxLoginInfo wxLoginInfo,
HttpServletRequest request) {
return authService.loginByWeixin(wxLoginInfo, request);
}
}

5、主要业务

  • 用户注册、登录和个人信息管理。
  • 商品、规格、库存、品牌和分类管理。
  • 购物车、收货地址、下单和订单查询。
  • 售后、评论、优惠券和团购等商城功能。
  • 平台管理员、商家与普通用户的角色区分。
  • 本地或第三方对象存储,以及邮件、短信、微信模板通知配置。

6、数据库与安全

课程报告按用户、商品、订单和其他业务划分数据库内容。表之间较少使用外键,主要由 Java 服务层维护关联。

安全部分实践了登录认证、角色权限、Shiro、最小权限思想和 BCrypt 密码处理。不过报告也明确将其定位为基础安全能力,尚不能视为完成了完整的电商安全体系。

7、演示与验证

课程材料记录了以下演示流程:

  1. 管理后台登录。
  2. 微信小程序授权和手机号登录。
  3. 管理员查看用户并授予后台权限。
  4. 用户浏览商品、填写地址并创建订单。
  5. 后台查看订单和库存变化。
  6. 用户管理自己的商城内容。

报告中的并发量、性能和高可用描述更多是设计分析或后续方向,没有完整压测材料支撑。复盘时我把它们放在“方案理解”层面,而不是当作已经完成的生产级验证结果。

8、个人承担

根据计划表和报告,个人主要参与项目选题与计划、整体文档和方案梳理、需求与数据库设计、系统安全、模块集成与部署,以及答辩材料组织。项目主体是团队协作和开源整合,不把所有模块表述为个人独立开发。

9、复盘

这次实践让我学会先读懂一个规模较大的既有系统,再决定修改和部署位置。真正需要继续补强的部分是:版本依赖锁定、环境一键化、敏感配置清理、接口自动化测试、权限审计,以及对“已实现”“已配置”“仅计划”三种状态做更严格的区分。