这是大四上学期的专业综合课程设计。项目以 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、演示与验证
课程材料记录了以下演示流程:
- 管理后台登录。
- 微信小程序授权和手机号登录。
- 管理员查看用户并授予后台权限。
- 用户浏览商品、填写地址并创建订单。
- 后台查看订单和库存变化。
- 用户管理自己的商城内容。
报告中的并发量、性能和高可用描述更多是设计分析或后续方向,没有完整压测材料支撑。复盘时我把它们放在“方案理解”层面,而不是当作已经完成的生产级验证结果。
8、个人承担
根据计划表和报告,个人主要参与项目选题与计划、整体文档和方案梳理、需求与数据库设计、系统安全、模块集成与部署,以及答辩材料组织。项目主体是团队协作和开源整合,不把所有模块表述为个人独立开发。
9、复盘
这次实践让我学会先读懂一个规模较大的既有系统,再决定修改和部署位置。真正需要继续补强的部分是:版本依赖锁定、环境一键化、敏感配置清理、接口自动化测试、权限审计,以及对“已实现”“已配置”“仅计划”三种状态做更严格的区分。