基于spring的前后端一体化积分商城系统 您所在的位置:网站首页 if10086cn积分商城 基于spring的前后端一体化积分商城系统

基于spring的前后端一体化积分商城系统

2024-07-18 04:15| 来源: 网络整理| 查看: 265

目录

系统介绍

系统设计

系统结构图

 积分商城系统前台模块

积分商城系统后台模块

概念模型设计

系统实现

管理员登录界面

用户主界面

管理员主界面

用户管理模块

分类管理模块

产品管理模块

套餐管理模块

订单细明模块

用户端主页模块

个人中心模块

 支付模块

核心功能实现

项目地址

系统介绍

积分商城系统是一个基于Spring、MySQL和Redis等技术栈构建的全功能商城解决方案。该系统旨在为用户提供一个便捷的购物体验,并以积分作为支付和奖励的核心机制。

系统的核心功能包括商品浏览、购买下单、积分管理和订单处理。用户可以通过客户端访问系统,浏览商城中的各类商品,查看商品详情、价格、库存等信息,并将心仪的商品加入购物车。在下单过程中,用户可以选择使用积分进行支付或与其他支付方式结合使用。

积分是系统的重要特色,用户可以通过多种方式获取积分,如购买商品、参与活动、邀请好友等。积分可用于支付部分或全部商品价格,还可以用于兑换优惠券或其他福利。用户可以在系统中查看自己的积分余额,并根据积分情况做出相应的决策。

管理员通过管理端对商品、订单和用户积分进行管理和处理。他们可以添加、编辑和删除商品,设置商品的价格、库存和促销活动。同时,管理员可以查看订单信息,处理退款、发货和售后等操作。对于用户积分管理,管理员可以进行调整、奖励或扣除积分,以维护系统的积分平衡和公平性。

积分商城系统采用现代化的Web技术和RESTful API设计,使得系统具备良好的用户体验和扩展性。前端界面友好美观,响应迅速,可以适配各种设备和浏览器。后端采用分层架构,将业务逻辑、数据存储和缓存分离,提供高效的数据处理和访问性能。

积分商城系统是一个综合运用Spring、MySQL和Redis等技术构建的全功能商城解决方案,为用户和管理员提供了便捷、安全和可靠的购物和管理体验。通过积分机制的引入,系统在用户激励和促销方面具备独特的优势,为商家和消费者带来更多价值和乐趣。

系统设计 系统结构图

 积分商城系统前台模块

积分商城系统后台模块

概念模型设计

系统实现 管理员登录界面

管理员登录系统需要输入自己的姓名和密码,经过后台校验后才可以进入系统主界面

用户主界面

登录成功之后,就会跳转到用户主页面,主界面有不同的商品展示,用户可以选择满意的商品进行下单处理。普通用户主页面如图5.3所示。

管理员主界面

管理员除了可以能看到管理主界面,有员工管理,分类管理,产品管理,套餐管理,订单明细的选项。会议管理员主页面如图所示。

用户管理模块

用户管理是超级管理员角色才拥有的功能,超级管理员可以通过它来更改用户的角色属性,如图所示,以及新增、删除用户,以及管理员的搜索功能如图所示。

分类管理模块

分类管理可以将产品进行划分,便于用户端展示,可以增加产品分类和套餐分类。

产品管理模块

产品管理可以增加,删除,修改,查询相应的产品,设置商品是否停售等功能,支持批量操作。

套餐管理模块

套餐管理模块可以对套餐进行管理

订单细明模块

支持外卖员查询订单,实现派送

用户端主页模块

用户端可以看到不同的分类以及不同的商品

个人中心模块

个人中心可以查看个人余额,个人积分,最近订单,历史订单等信息

 支付模块

支付模块

核心功能实现

订单模块

package com.frx01.reggie.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.frx01.reggie.common.BaseContext; import com.frx01.reggie.common.CustomException; import com.frx01.reggie.entity.*; import com.frx01.reggie.mapper.OrderMapper; import com.frx01.reggie.mapper.UserMapper; import com.frx01.reggie.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; /** * @version 1.0 * @date 2022/6/6 21:04 */ @Slf4j @Service public class OrderServiceImpl extends ServiceImpl implements OrderService { @Autowired private ShoppingCartService shoppingCartService; @Autowired private UserService userService; @Autowired private AddressBookService addressBookService; @Autowired private OrderDetailService orderDetailService; @Autowired private UserMapper userMapper; /** * 用户下单 * @param orders */ @Transactional @Override public void submit(Orders orders) { //获得当前用户Id Long userId = BaseContext.getCurrentId(); //查询当前用户的购物车数据 LambdaQueryWrapper wrapper=new LambdaQueryWrapper(); wrapper.eq(ShoppingCart::getUserId,userId); List shoppingCarts = shoppingCartService.list(wrapper); if(shoppingCarts==null||shoppingCarts.size()==0){ throw new CustomException("购物车为空,不能下单"); } //查询用户数据 User user = userService.getById(userId); //查询地址数据 Long addressBookId = orders.getAddressBookId(); AddressBook addressBook = addressBookService.getById(addressBookId); if(addressBook==null){ throw new CustomException("用户地址信息有误,不能下单"); } long orderId = IdWorker.getId();//订单号 AtomicInteger amount=new AtomicInteger(0); List orderDetails=shoppingCarts.stream().map((item)->{ OrderDetail orderDetail=new OrderDetail(); orderDetail.setOrderId(orderId); orderDetail.setNumber(item.getNumber()); orderDetail.setDishFlavor(item.getDishFlavor()); orderDetail.setDishId(item.getDishId()); orderDetail.setSetmealId(item.getSetmealId()); orderDetail.setName(item.getName()); orderDetail.setImage(item.getImage()); orderDetail.setAmount(item.getAmount()); amount.addAndGet(item.getAmount().multiply(new BigDecimal(item.getNumber())).intValue()); return orderDetail; }).collect(Collectors.toList()); orders.setId(orderId); orders.setOrderTime(LocalDateTime.now()); orders.setCheckoutTime(LocalDateTime.now()); orders.setStatus(2); orders.setAmount(new BigDecimal(amount.get()));//总金额 orders.setUserId(userId); orders.setNumber(String.valueOf(orderId)); orders.setUserName(user.getName()); orders.setConsignee(addressBook.getConsignee()); orders.setPhone(addressBook.getPhone()); orders.setAddress((addressBook.getProvinceName() == null ? "" : addressBook.getProvinceName()) + (addressBook.getCityName() == null ? "" : addressBook.getCityName()) + (addressBook.getDistrictName() == null ? "" : addressBook.getDistrictName()) + (addressBook.getDetail() == null ? "" : addressBook.getDetail())); //向订单表插入数据,一条数据 this.save(orders); BigDecimal bd2 = new BigDecimal(100.00); BigDecimal amount1 = orders.getAmount().divide(bd2); //个人积分增加 userMapper.add(userId,amount1); //向订单明细表插入数据,多条数据 orderDetailService.saveBatch(orderDetails); //清空购物车数据 shoppingCartService.remove(wrapper); } @Transactional @Override public void submit2(Orders orders) { //获得当前用户Id Long userId = BaseContext.getCurrentId(); //查询当前用户的购物车数据 LambdaQueryWrapper wrapper=new LambdaQueryWrapper(); wrapper.eq(ShoppingCart::getUserId,userId); List shoppingCarts = shoppingCartService.list(wrapper); if(shoppingCarts==null||shoppingCarts.size()==0){ throw new CustomException("购物车为空,不能下单"); } //查询用户数据 User user = userService.getById(userId); // if(user.getScores()-5{ OrderDetail orderDetail=new OrderDetail(); orderDetail.setOrderId(orderId); orderDetail.setNumber(item.getNumber()); orderDetail.setDishFlavor(item.getDishFlavor()); orderDetail.setDishId(item.getDishId()); orderDetail.setSetmealId(item.getSetmealId()); orderDetail.setName(item.getName()); orderDetail.setImage(item.getImage()); orderDetail.setAmount(item.getAmount()); amount.addAndGet(item.getAmount().multiply(new BigDecimal(item.getNumber())).intValue()); return orderDetail; }).collect(Collectors.toList()); orders.setId(orderId); orders.setOrderTime(LocalDateTime.now()); orders.setCheckoutTime(LocalDateTime.now()); orders.setStatus(2); orders.setAmount(new BigDecimal(amount.get()));//总金额 orders.setUserId(userId); orders.setNumber(String.valueOf(orderId)); orders.setUserName(user.getName()); orders.setConsignee(addressBook.getConsignee()); orders.setPhone(addressBook.getPhone()); orders.setAddress((addressBook.getProvinceName() == null ? "" : addressBook.getProvinceName()) + (addressBook.getCityName() == null ? "" : addressBook.getCityName()) + (addressBook.getDistrictName() == null ? "" : addressBook.getDistrictName()) + (addressBook.getDetail() == null ? "" : addressBook.getDetail())); //向订单表插入数据,一条数据 this.save(orders); //向订单明细表插入数据,多条数据 orderDetailService.saveBatch(orderDetails); //清空购物车数据 shoppingCartService.remove(wrapper); } @Override public String subscore(int money) { //获得当前用户Id Long userId = BaseContext.getCurrentId(); //查询用户数据 User user = userService.getById(userId); int mymoney = user.getMoney(); int myscore = user.getScores(); double costmoney = money*0.7,costscore = money*0.3; // 余额不足 if(costmoney > mymoney){ return "请充值"; } if(costscore>myscore){ if( mymoney - (costscore-myscore)-costmoney


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有