一、个人简介
💖💖作者:计算机编程果茶熊
💙💙个人简介:曾长期从事计算机专业培训教学,担任过编程老师,同时本人也热爱上课教学,擅长Java、微信小程序、Python、Golang、安卓Android等多个IT方向。会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💕💕文末获取源码联系计算机编程果茶熊
二、系统介绍
开发语言:Java+Python
数据库:MySQL
系统架构:B/S
后端框架:SpringBoot(Spring+SpringMVC+Mybatis)+Django
前端:Vue+HTML+CSS+JavaScript+jQuery
体育购物商城系统是一款基于B/S架构的综合电子商务平台,采用Java/Python双语言支持,分别基于Spring Boot(Spring+SpringMVC+Mybatis)和Django框架开发,前端使用Vue+ElementUI+HTML技术栈,数据库采用MySQL。系统功能完善,包括系统首页、个人中心、用户管理、商品分类管理、体育用品管理、系统管理和订单管理七大核心模块。用户可通过系统首页浏览各类体育用品,根据分类快速定位所需商品;个人中心模块支持用户管理个人信息、查看订单历史和收藏商品;用户管理模块实现对平台用户的增删改查操作;商品分类管理模块便于商品的科学分类与展示;体育用品管理模块支持商品的上架、下架、编辑和库存管理;系统管理模块提供平台基础配置和权限管理功能;订单管理模块则实现了从下单、支付到配送的全流程追踪。整个系统架构清晰,界面美观,操作流畅,为体育用品爱好者提供了便捷的在线购物体验,同时为管理员提供了高效的后台管理工具。
三、体育购物商城系统-视频解说
害怕毕设答辩被导师质疑?这套体育购物商城系统让你底气十足应对|计算机毕业设计0 播放 · 0 赞同 害怕毕设答辩被导师质疑?这套体育购物商城系统让你底气十足应对|计算机毕业设计
四、体育购物商城系统-功能展示
前台登录页
前台体育用品推荐
前台商品详情页
前台购物车页
前台公告页
前台个人中心
前台商品信息页
后台商品管理
后台用户管理
五、体育购物商城系统-代码展示
```
// 功能一:体育用品管理 - 添加新商品并处理图片上传
@PostMapping("/product/add")
@ResponseBody
public Result addSportsProduct(@RequestBody SportsProduct product, @RequestParam("file") MultipartFile file) {
try {
// 验证商品信息完整性
if (StringUtils.isEmpty(product.getName()) || product.getPrice() == null || product.getCategoryId() == null) {
return Result.error("商品信息不完整");
}
// 处理上传的商品图片
String originalFilename = file.getOriginalFilename();
String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));
String fileName = UUID.randomUUID().toString() + suffix;
String savePath = uploadPath + fileName;
// 保存图片到服务器
File saveFile = new File(savePath);
if (!saveFile.getParentFile().exists()) {
saveFile.getParentFile().mkdirs();
}
file.transferTo(saveFile);
// 设置商品图片路径
product.setImageUrl("/uploads/" + fileName);
// 设置商品创建时间和初始状态
product.setCreateTime(new Date());
product.setStatus(1); // 1表示上架状态
product.setSales(0); // 初始销量为0
// 保存商品信息到数据库
sportsProductService.insertProduct(product);
// 更新商品库存信息
Inventory inventory = new Inventory();
inventory.setProductId(product.getId());
inventory.setQuantity(product.getStock());
inventory.setUpdateTime(new Date());
inventoryService.insertInventory(inventory);
return Result.success("商品添加成功");
} catch (Exception e) {
log.error("添加商品失败", e);
return Result.error("添加商品失败: " + e.getMessage());
}
}
// 功能二:订单管理 - 创建新订单
@Transactional
public OrderResult createOrder(OrderCreateDTO orderDTO) {
try {
// 1. 检查用户是否存在
User user = userMapper.selectById(orderDTO.getUserId());
if (user == null) {
return OrderResult.fail("用户不存在");
}
// 2. 创建订单主表记录
Order order = new Order();
String orderNo = generateOrderNo();
order.setOrderNo(orderNo);
order.setUserId(orderDTO.getUserId());
order.setTotalAmount(new BigDecimal(0));
order.setStatus(OrderStatus.PENDING_PAYMENT.getCode());
order.setAddress(orderDTO.getAddress());
order.setReceiverName(orderDTO.getReceiverName());
order.setReceiverPhone(orderDTO.getReceiverPhone());
order.setCreateTime(new Date());
// 3. 计算订单总金额并检查库存
BigDecimal totalAmount = new BigDecimal(0);
List<OrderItem> orderItems = new ArrayList<>();
for (OrderItemDTO item : orderDTO.getItems()) {
// 查询商品信息
SportsProduct product = productMapper.selectById(item.getProductId());
if (product == null) {
throw new BusinessException("商品不存在: " + item.getProductId());
}
// 检查库存
Inventory inventory = inventoryMapper.selectByProductId(item.getProductId());
if (inventory == null || inventory.getQuantity() < item.getQuantity()) {
throw new BusinessException("商品库存不足: " + product.getName());
}
// 计算商品总价
BigDecimal itemTotal = product.getPrice().multiply(new BigDecimal(item.getQuantity()));
totalAmount = totalAmount.add(itemTotal);
// 创建订单项
OrderItem orderItem = new OrderItem();
orderItem.setOrderNo(orderNo);
orderItem.setProductId(item.getProductId());
orderItem.setProductName(product.getName());
orderItem.setProductImage(product.getImageUrl());
orderItem.setQuantity(item.getQuantity());
orderItem.setUnitPrice(product.getPrice());
orderItem.setTotalPrice(itemTotal);
orderItems.add(orderItem);
}
// 4. 更新订单总金额
order.setTotalAmount(totalAmount);
orderMapper.insert(order);
// 5. 批量插入订单项
for (OrderItem orderItem : orderItems) {
orderItemMapper.insert(orderItem);
}
// 6. 扣减库存
for (OrderItemDTO item : orderDTO.getItems()) {
inventoryMapper.decreaseStock(item.getProductId(), item.getQuantity());
// 更新商品销量
productMapper.increaseSales(item.getProductId(), item.getQuantity());
}
// 7. 创建支付记录
PaymentRecord payment = new PaymentRecord();
payment.setOrderNo(orderNo);
payment.setUserId(orderDTO.getUserId());
payment.setAmount(totalAmount);
payment.setStatus(PaymentStatus.UNPAID.getCode());
payment.setCreateTime(new Date());
paymentRecordMapper.insert(payment);
return OrderResult.success(orderNo);
} catch (BusinessException e) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return OrderResult.fail(e.getMessage());
} catch (Exception e) {
log.error("创建订单失败", e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return OrderResult.fail("系统错误,创建订单失败");
}
}
// 功能三:用户管理 - 用户注册与安全验证
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Autowired
private PasswordEncoder passwordEncoder;
@Autowired
private EmailService emailService;
@Override
@Transactional
public RegisterResult register(UserRegisterDTO registerDTO) {
// 1. 验证用户名是否已存在
User existingUser = userMapper.findByUsername(registerDTO.getUsername());
if (existingUser != null) {
return RegisterResult.fail("用户名已被注册");
}
// 2. 验证邮箱是否已存在
existingUser = userMapper.findByEmail(registerDTO.getEmail());
if (existingUser != null) {
return RegisterResult.fail("邮箱已被注册");
}
// 3. 验证手机号是否已存在
existingUser = userMapper.findByPhone(registerDTO.getPhone());
if (existingUser != null) {
return RegisterResult.fail("手机号已被注册");
}
// 4. 验证密码强度
if (!isPasswordStrong(registerDTO.getPassword())) {
return RegisterResult.fail("密码强度不够,需包含数字、字母和特殊字符,长度至少8位");
}
// 5. 创建用户对象
User user = new User();
user.setUsername(registerDTO.getUsername());
user.setEmail(registerDTO.getEmail());
user.setPhone(registerDTO.getPhone());
// 6. 密码加密存储
String encodedPassword = passwordEncoder.encode(registerDTO.getPassword());
user.setPassword(encodedPassword);
// 7. 设置用户默认信息
user.setNickname(registerDTO.getUsername());
user.setStatus(UserStatus.UNVERIFIED.getCode());
user.setRole(UserRole.CUSTOMER.getCode());
user.setCreateTime(new Date());
user.setLastLoginTime(null);
// 8. 生成邮箱验证码
String verificationCode = generateVerificationCode();
user.setVerificationCode(verificationCode);
user.setVerificationExpireTime(DateUtils.addHours(new Date(), 24));
// 9. 保存用户信息
userMapper.insert(user);
// 10. 创建用户钱包
UserWallet wallet = new UserWallet();
wallet.setUserId(user.getId());
wallet.setBalance(new BigDecimal(0));
wallet.setPoints(0);
wallet.setUpdateTime(new Date());
userWalletMapper.insert(wallet);
// 11. 发送验证邮件
try {
String emailContent = buildVerificationEmail(user.getUsername(), verificationCode);
emailService.sendHtmlMail(user.getEmail(), "体育购物商城 - 账号验证", emailC
```
六、体育购物商城系统-文档展示
部分文档
七、END
致谢
💕💕文末获取源码联系计算机编程果茶熊