🍅 作者简介:CSDN特邀作者✌、java领域优质创作者💪
🍅关注公众号【java李杨勇】 简历模板、学习资料、面试题库等都给你
🍅文末获取源码联系🍅
一、前言介绍:
随着社会的快速发展,计算机的影响是全面且深入的。人们生活水平的不断提高,日常生活中用户对手办周边商城方面的要求也在不断提高,而漫威系列手办周边商城得到广大用户的青睐,使得漫威系列手办周边商城的开发成为必需而且紧迫的事情。漫威系列手办周边商城主要是借助计算机,通过对漫威系列手办周边商城所需的信息管理,增加用户的选择,同时也方便对广大用户信息的及时查询、修改以及对用户信息的及时了解。手办周边商城对用户带来了更多的便利,该系统通过和数据库管理系统软件协作来满足用户的需求。计算机技术在现代管理中的应用,使计算机成为人们应用现代技术的重要工具。能够有效的解决获取信息便捷化、全面化的问题,提高效率。
二、功能设计:
本漫威系列手办周边商城系统主要功能设计为实现管理员;个人中心、系统公告管理、用户管理、商品系列管理、商品信息管理、订单评价管理、论坛管理、系统管理、订单管理,用户;个人中心、订单评价管理、我的收藏管理、订单管理,前台首页;首页、商品信息、论坛信息、我的、跳转到后台、购物车客服等信息管理功能。系统操作流程如下:
三、功能截图:
普通用户登录注册:
首页主要功能介绍:商品信息、论坛信息、我的、跳转到后台、购物车客服等信息管理功能
商品详情:可加入购物车、修改数量、立即购买和收藏商品
商品详情可以配置图文介绍等
商品评论交流模块
添加了论坛帖子系列功能:普通用户可以发布、可以对帖子进行交流讨论等
帖子详情数据查看、可以在底部评论
在我的个人中心可以查看我的发布、我的订单、我的地址修改以及我的收藏模块和个人信息模块
购物车模块:要选择收货地址信息等
我的订单模块:
我的收藏模块:
普通用户后台中心:
订单评价:
收藏管理:
订单信息管理:
四、 后端主要功能:
修改密码:
用户管理:
商品系列管理:
商品信息管理:
商品详情修改:
商品评价管理:
论坛管理:
客服管理:
首页轮播图管理:
订单信息管理:
五、数据库设计:
表address (地址)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 |
1 | id | bigint | 20 | 0 | N | Y |
2 | addtime | timestamp | 19 | 0 | N | N |
3 | userid | bigint | 20 | 0 | N | N |
4 | address | varchar | 200 | 0 | N | N |
5 | name | varchar | 200 | 0 | N | N |
6 | phone | varchar | 200 | 0 | N | N |
7 | isdefault | varchar | 200 | 0 | N | N |
表cart (购物车表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 |
1 | id | bigint | 20 | 0 | N | Y |
2 | addtime | timestamp | 19 | 0 | N | N |
3 | tablename | varchar | 200 | 0 | Y | N |
4 | userid | bigint | 20 | 0 | N | N |
5 | goodid | bigint | 20 | 0 | N | N |
6 | goodname | varchar | 200 | 0 | Y | N |
7 | picture | varchar | 200 | 0 | Y | N |
8 | buynumber | int | 10 | 0 | N | N |
9 | price | float | 13 | 0 | Y | N |
10 | discountprice | float | 13 | 0 | Y | N |
表chat (客服聊天表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | userid | bigint | 20 | 0 | N | N | 用户id |
4 | adminid | bigint | 20 | 0 | Y | N | 管理员id |
5 | ask | longtext | 2147483647 | 0 | Y | N | 提问 |
6 | reply | longtext | 2147483647 | 0 | Y | N | 回复 |
7 | isreply | int | 10 | 0 | Y | N | 是否回复 |
表config (配置文件)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | name | varchar | 100 | 0 | N | N | 配置参数名称 |
3 | value | varchar | 100 | 0 | Y | N | 配置参数值 |
表dingdanpingjia (订单评价)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | dingdanbianhao | varchar | 200 | 0 | N | N | 订单编号 |
4 | shangpinbianhao | varchar | 200 | 0 | Y | N | 商品编号 |
5 | shangpinmingcheng | varchar | 200 | 0 | N | N | 商品名称 |
6 | shangpinxilie | varchar | 200 | 0 | Y | N | 商品系列 |
7 | pingfen | varchar | 200 | 0 | Y | N | 评分 |
8 | pingjianeirong | longtext | 2147483647 | 0 | Y | N | 评价内容 |
9 | tianjiatupian | varchar | 200 | 0 | Y | N | 添加图片 |
10 | pingjiariqi | date | 10 | 0 | Y | N | 评价日期 |
11 | yonghuming | varchar | 200 | 0 | Y | N | 用户名 |
12 | lianxidianhua | varchar | 200 | 0 | Y | N | 联系电话 |
13 | sfsh | varchar | 200 | 0 | Y | N | 是否审核 |
14 | shhf | longtext | 2147483647 | 0 | Y | N | 审核回复 |
表discussshangpinxinxi (商品信息评论表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | refid | bigint | 20 | 0 | N | N | 关联表id |
4 | userid | bigint | 20 | 0 | N | N | 用户id |
5 | content | longtext | 2147483647 | 0 | N | N | 评论内容 |
6 | reply | longtext | 2147483647 | 0 | Y | N | 回复内容 |
表discussxitonggonggao (系统公告评论表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | refid | bigint | 20 | 0 | N | N | 关联表id |
4 | userid | bigint | 20 | 0 | N | N | 用户id |
5 | content | longtext | 2147483647 | 0 | N | N | 评论内容 |
6 | reply | longtext | 2147483647 | 0 | Y | N | 回复内容 |
表forum (论坛表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | title | varchar | 200 | 0 | Y | N | 帖子标题 |
4 | content | longtext | 2147483647 | 0 | N | N | 帖子内容 |
5 | parentid | bigint | 20 | 0 | Y | N | 父节点id |
6 | userid | bigint | 20 | 0 | N | N | 用户id |
7 | username | varchar | 200 | 0 | Y | N | 用户名 |
8 | isdone | varchar | 200 | 0 | Y | N | 状态 |
表orders (订单)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | orderid | varchar | 200 | 0 | N | N | 订单编号 |
4 | tablename | varchar | 200 | 0 | Y | N | 商品表名 |
5 | userid | bigint | 20 | 0 | N | N | 用户id |
6 | goodid | bigint | 20 | 0 | N | N | 商品id |
7 | goodname | varchar | 200 | 0 | Y | N | 商品名称 |
8 | picture | varchar | 200 | 0 | Y | N | 商品图片 |
9 | buynumber | int | 10 | 0 | N | N | 购买数量 |
10 | price | float | 13 | 0 | N | N | 价格/积分 |
11 | discountprice | float | 13 | 0 | Y | N | 折扣价格 |
12 | total | float | 13 | 0 | N | N | 总价格/总积分 |
13 | discounttotal | float | 13 | 0 | Y | N | 折扣总价格 |
14 | type | int | 10 | 0 | Y | N | 支付类型 |
15 | status | varchar | 200 | 0 | Y | N | 状态 |
16 | address | varchar | 200 | 0 | Y | N | 地址 |
表shangpinxilie (商品系列)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | shangpinxilie | varchar | 200 | 0 | N | N | 商品系列 |
表shangpinxinxi (商品信息)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | shangpinbianhao | varchar | 200 | 0 | Y | N | 商品编号 |
4 | shangpinmingcheng | varchar | 200 | 0 | N | N | 商品名称 |
5 | shangpinxilie | varchar | 200 | 0 | Y | N | 商品系列 |
6 | tupian | varchar | 200 | 0 | Y | N | 图片 |
7 | guige | varchar | 200 | 0 | Y | N | 规格 |
8 | shangpinxiangqing | longtext | 2147483647 | 0 | Y | N | 商品详情 |
9 | clicktime | datetime | 19 | 0 | Y | N | 最近点击时间 |
10 | clicknum | int | 10 | 0 | Y | N | 点击次数 |
11 | price | float | 13 | 0 | N | N | 价格 |
表storeup (收藏表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | userid | bigint | 20 | 0 | N | N | 用户id |
4 | refid | bigint | 20 | 0 | Y | N | 收藏id |
5 | tablename | varchar | 200 | 0 | Y | N | 表名 |
6 | name | varchar | 200 | 0 | N | N | 收藏名称 |
7 | picture | varchar | 200 | 0 | N | N | 收藏图片 |
表token (token表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | userid | bigint | 20 | 0 | N | N | 用户id |
3 | username | varchar | 100 | 0 | N | N | 用户名 |
4 | tablename | varchar | 100 | 0 | Y | N | 表名 |
5 | role | varchar | 100 | 0 | Y | N | 角色 |
6 | token | varchar | 200 | 0 | N | N | 密码 |
7 | addtime | timestamp | 19 | 0 | N | N | 新增时间 |
8 | expiratedtime | timestamp | 19 | 0 | N | N | 过期时间 |
表users (用户表)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | username | varchar | 100 | 0 | N | N | 用户名 |
3 | password | varchar | 100 | 0 | N | N | 密码 |
4 | role | varchar | 100 | 0 | Y | N | 角色 |
5 | addtime | timestamp | 19 | 0 | N | N | 新增时间 |
表xitonggonggao (系统公告)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | gonggaobiaoti | varchar | 200 | 0 | N | N | 公告标题 |
4 | gonggaoleixing | varchar | 200 | 0 | N | N | 公告类型 |
5 | tupian | varchar | 200 | 0 | Y | N | 图片 |
6 | neirong | longtext | 2147483647 | 0 | Y | N | 内容 |
7 | faburiqi | date | 10 | 0 | Y | N | 发布日期 |
表yonghu (用户)
编号 | 名称 | 数据类型 | 长度 | 小数位 | 允许空值 | 主键 | 说明 |
1 | id | bigint | 20 | 0 | N | Y | 主键 |
2 | addtime | timestamp | 19 | 0 | N | N | 创建时间 |
3 | yonghuming | varchar | 200 | 0 | N | N | 用户名 |
4 | mima | varchar | 200 | 0 | N | N | 密码 |
5 | xingming | varchar | 200 | 0 | N | N | 姓名 |
6 | xingbie | varchar | 200 | 0 | Y | N | 性别 |
7 | touxiang | varchar | 200 | 0 | Y | N | 头像 |
8 | lianxidianhua | varchar | 200 | 0 | Y | N | 联系电话 |
9 | money | float | 13 | 0 | Y | N | 余额 |
六、关键代码:
/*** 登录相关*/
@RequestMapping("users")
@RestController
public class UserController{@Autowiredprivate UserService userService;@Autowiredprivate TokenService tokenService;/*** 登录*/@IgnoreAuth
// @PostMapping(value = "/login")@RequestMapping(value = "/login", method ={RequestMethod.GET,RequestMethod.POST} )public R login(String username, String password, String captcha, HttpServletRequest request) {UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null || !user.getPassword().equals(password)) {return R.error("账号或密码不正确");}String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());return R.ok().put("token", token);}/*** 注册*/@IgnoreAuth@PostMapping(value = "/register")public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 退出*/@GetMapping(value = "logout")public R logout(HttpServletRequest request) {request.getSession().invalidate();return R.ok("退出成功");}/*** 密码重置*/@IgnoreAuth@RequestMapping(value = "/resetPass")public R resetPass(String username, HttpServletRequest request){UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));if(user==null) {return R.error("账号不存在");}user.setPassword("123456");userService.update(user,null);return R.ok("密码已重置为:123456");}/*** 列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/list")public R list( UserEntity user){EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew));}/*** 信息*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") String id){UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 获取用户的session用户信息*/@RequestMapping("/session")public R getCurrUser(HttpServletRequest request){Long id = (Long)request.getSession().getAttribute("userId");UserEntity user = userService.selectById(id);return R.ok().put("data", user);}/*** 保存*/@PostMapping("/save")public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {return R.error("用户已存在");}userService.insert(user);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);userService.updateById(user);//全部更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){userService.deleteBatchIds(Arrays.asList(ids));return R.ok();}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsd"><!-- 配置数据源 --><bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="url" value="${jdbc_url}"/><property name="username" value="${jdbc_username}"/><property name="password" value="${jdbc_password}"/><!-- 初始化连接大小 --><property name="initialSize" value="0"/><!-- 连接池最大使用连接数量 --><property name="maxActive" value="20"/><!-- 连接池最大空闲 --><property name="maxIdle" value="20"/><!-- 连接池最小空闲 --><property name="minIdle" value="0"/><!-- 获取连接最大等待时间 --><property name="maxWait" value="60000"/><property name="validationQuery" value="${validationQuery}"/><property name="testOnBorrow" value="false"/><property name="testOnReturn" value="false"/><property name="testWhileIdle" value="true"/><!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000"/><!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="25200000"/><!-- 打开removeAbandoned功能 --><property name="removeAbandoned" value="true"/><!-- 1800秒,也就是30分钟 --><property name="removeAbandonedTimeout" value="1800"/><!-- 关闭abanded连接时输出错误日志 --><property name="logAbandoned" value="true"/><!-- 监控数据库 --><property name="filters" value="mergeStat"/></bean><!-- Spring整合Mybatis,更多查看文档:http://mp.baomidou.com --><bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><!-- 自动扫描Mapping.xml文件 --><property name="mapperLocations" value="classpath:mapper/*.xml"/><property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/><property name="typeAliasesPackage" value="com..model.*"/><property name="typeEnumsPackage" value="com.model.enums"/><property name="plugins"><array><!-- 分页插件配置 --><bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"></bean></array></property><!-- 全局配置注入 --><property name="globalConfig" ref="globalConfig" /></bean><bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration"><!--AUTO->`0`("数据库ID自增")INPUT->`1`(用户输入ID")ID_WORKER->`2`("全局唯一ID")UUID->`3`("全局唯一ID")--><property name="idType" value="2" /><!--MYSQL->`mysql`ORACLE->`oracle`DB2->`db2`H2->`h2`HSQL->`hsql`SQLITE->`sqlite`POSTGRE->`postgresql`SQLSERVER2005->`sqlserver2005`SQLSERVER->`sqlserver`--><!-- Oracle需要添加该项 --><!-- <property name="dbType" value="oracle" /> --><!-- 全局表为下划线命名设置 true --><!-- <property name="dbColumnUnderline" value="true" /> --><property name="metaObjectHandler"><bean class="com.config.MyMetaObjectHandler" /></property></bean><!-- MyBatis 动态扫描 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.dao"/></bean><!-- 配置事务管理 --><bean name="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 事务管理 属性 --><tx:advice id="transactionAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="append*" propagation="REQUIRED"/><tx:method name="save*" propagation="REQUIRED"/><tx:method name="update*" propagation="REQUIRED"/><tx:method name="modify*" propagation="REQUIRED"/><tx:method name="edit*" propagation="REQUIRED"/><tx:method name="insert*" propagation="REQUIRED"/><tx:method name="delete*" propagation="REQUIRED"/><tx:method name="remove*" propagation="REQUIRED"/><tx:method name="repair" propagation="REQUIRED"/><tx:method name="get*" propagation="REQUIRED" read-only="true"/><tx:method name="find*" propagation="REQUIRED" read-only="true"/><tx:method name="load*" propagation="REQUIRED" read-only="true"/><tx:method name="search*" propagation="REQUIRED" read-only="true"/><tx:method name="datagrid*" propagation="REQUIRED" read-only="true"/><tx:method name="*" propagation="REQUIRED"/></tx:attributes></tx:advice><!-- 配置切面 --><aop:config><aop:pointcut id="transactionPointcut" expression="execution(* com.service..*.*(..))"/><aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice"/></aop:config></beans>
七、论文报告:
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻微信公众号获取联系方式👇🏻👇🏻👇🏻
打卡 文章 更新 200/ 365天
精彩专栏推荐订阅:在下方专栏👇🏻👇🏻👇🏻👇🏻
Java项目精品实战案例《100套》
web前端期末大作业网页实战《100套》