![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
springboot单体应用电商开发
文章平均质量分 52
三十岁之前尽量不秃
这个作者很懒,什么都没留下…
展开
-
16.用户搜索历史保存到redis中
目的:将用户搜索的关键词保存到redis中,且只显示最近的8条,在redis中,key的格式是HISTORY+用户的id实现方式:使用单键多值的列表实现具体代码package com.cy.store.util;import com.cy.store.common.Const;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.Redis原创 2022-05-19 23:01:42 · 1016 阅读 · 2 评论 -
15.登录模块增加验证码部分
验证码登录流程,别人博客看的实现过程之前SSM其实就做过了,保存session中,只不过之前是将验证码的值放到session中,而这次是将验证码的值保存到redis中,并给它设置一个过期时间,120秒引入redis和Kaptcha依赖<!--kaptcha依赖--><dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactI原创 2022-05-19 22:48:15 · 336 阅读 · 0 评论 -
14.设置默认地址模块
1.业务分析可能存在的异常: 用户在设置的时候,该地址可能同时被管理员删除,抛AddressNotFoundException异常在设置当前地址为默认之前,将该用户的所有地址都设置成非默认,即is_default设置成为0根据地址的id设置其字段is_default为12.持久层接口及mapper映射/** *@描述 根据aid查找收货地址是否存在 *@参数 收货地址id *@返回值 收货地址 *@创建人 ZhangHailong */Address selectAddressBy原创 2022-05-15 12:16:31 · 351 阅读 · 0 评论 -
13.用户收货地址展示
1.持久层根据用户的id查找收货地址/** *@描述 根据用户id查找他的收货地址 *@参数 用户id *@返回值 收货地址列表 *@创建人 ZhangHailong */List<Address> selectAddressesByUid(Integer uid);<!--...........................收货地址展示start...............................--><resultMap id="add原创 2022-05-15 12:00:09 · 317 阅读 · 0 评论 -
12.收货地址模块-新增收货地址②
本博客处理该部分1.业务流程首先通过观察表得知,该表是将省、市、区都进行了存放,省的parent是国(编号是86),市的parent是省(编号依省而定),区的parent是市(编号依市而定),用户在页面的操作肯定是,先选择省份下拉框,得到所有市的数据,选择市以后,得到所有区的数据,再加上省一开始就能选择,说明进入页面以后,发送了一次请求,得到国家下的所有省份,综合以上操作,都是根据parent进行查询查询到的数据返回给前端,前端将下拉框里的选项和数据中的code进行绑定,以便进行下一级的查询返回原创 2022-05-15 11:42:27 · 375 阅读 · 0 评论 -
11.收货地址模块-新增收货地址①
1.前端输入的信息后端用Address实体类对象接收,接收的数据存到对象中的数据有private String name; // 收货人姓名private String provinceCode; // 省份编号private String cityCode; // 城市编号private String areaCode; // 区县编号private String zip; // 邮政编号private String address; // 详细地址private String ph原创 2022-05-15 11:18:46 · 1244 阅读 · 0 评论 -
10.集成Swagger2
1.添加pom依赖<!--swagger2依赖--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.sprin原创 2022-05-14 23:09:10 · 242 阅读 · 0 评论 -
9.上传头像模块
持久层更新用户的头像的流程: 将用户的头像保存到服务器,然后将头像的地址更新到数据库中,一般存放的是相对路径,这对服务器迁移提供方便,但是这里仅实现将头像文件保存到本地,并将文件地址存放到数据库中保存头像的持久层操作是: 将用户更新后的头像地址,更新人,更新时间存放到数据库中<update id="updateAvatarByUid"> UPDATE t_user SET avatar=#{avatar}, modified_user=#{m原创 2022-05-13 12:02:09 · 417 阅读 · 0 评论 -
8.修改密码模块
修改密码模块功能用户在前端输入的原密码加密后与数据库中的原密码不一致,抛出PasswordNotFoundException异常新密码加密存储1.持久层修改用户密码持久层核心代码<update id="UpdatePassword" > UPDATE t_user SET password=#{password}, modified_user=#{modifiedUser}, modified_time=#{modifie原创 2022-05-12 10:28:37 · 584 阅读 · 0 评论 -
7.登录模块-控制层开发
控制层基类添加功能session中的uid和username在后续的其他模块中也能使用,并且只在控制层会使用到,所以将获取uid和username声明到控制层的基类BaseController中package com.cy.store.controller;import com.cy.store.service.ex.*;import com.cy.store.util.JsonResult;import org.springframework.web.bind.annotation.Exc原创 2022-05-12 10:02:50 · 127 阅读 · 0 评论 -
6.登录模块-业务层开发
业务层要实现的功能拦截所有的请求,根据session中是否存在uid判断用户是否已经登录,如果登录,放行请求,如果没有登录,如果访问的网址不在白名单内,就跳转到登录页面根据用户名查找是否存在该用户,如果不存在,抛出UserNotFoundException异常还需要判断用户在登录页面输入的登录名在库中对应的用户是否已经逻辑删除,如果已经逻辑删除,则抛出UserNotFoundException异常该登录用户名的用户存在,根据用户的盐值对登录密码进行加密,加密后与查找结果的密码比对,不同抛出Pass原创 2022-05-12 09:58:00 · 147 阅读 · 0 评论 -
5.登录模块-持久层开发
登录模块要实现的功能用户输入用户名和密码验证登录实现思路: 用户在前端输入登录用户名和登录密码以后,后台接收,在持久层的操作是,根据用户名去查找用户,①如果找到了该用户名的用户,根据结果的盐值将登录密码加密,与结果中的密码进行验证,②如果没找到,抛出UserNotFound异常,③如果用户名和密码不匹配,抛出PasswordNotMatchException异常用户在第一次登录以后,将uid和username存放到session中,头像存放到cookie中系统检测用户是否登录,如果没有登录,原创 2022-05-12 09:12:52 · 168 阅读 · 0 评论 -
4.注册模块-控制层开发
响应体响应体应该包含状态码,描述信息(如果需要的话),响应数据(如果需要的话)package com.cy.store.util;import java.io.Serializable;/** * @author ZhangHailong * @date 2022/5/10 - 9:12 * @project_name 统一使用json格式的数据进行响应 */public class JsonResult<E> implements Serializable{原创 2022-05-10 11:33:27 · 72 阅读 · 0 评论 -
3.用户注册-业务层开发
用户注册模块需要关注的事项业务层要抛出可能存在的异常,而用户注册过程中可能出现的异常有用户名已被其他用户使用,服务器宕机,数据库宕机等问题,都是运行时异常,所以创建一个业务层异常基类,继承运行时异常,重写它的方法package com.cy.store.service.ex;/** * @author ZhangHailong * @date 2022/5/9 - 21:09 * @project_name 业务层异常的基类,业务层的异常只会发生在运行时,所以继承RuntimeExcept原创 2022-05-10 11:22:43 · 241 阅读 · 0 评论 -
2.用户注册-持久层开发
创建用户表CREATE TABLE t_user ( uid INT AUTO_INCREMENT COMMENT '用户id', username VARCHAR(20) NOT NULL UNIQUE COMMENT '用户名', password CHAR(32) NOT NULL COMMENT '密码', salt CHAR(36) COMMENT '盐值', phone VARCHAR(20) COMMENT '电话号码', email VARCHAR(30) COMMENT '电原创 2022-05-10 11:00:22 · 98 阅读 · 0 评论 -
1.开发环境+新建项目
开发环境jdk版本: 1.8maven版本: 3.8.4MySQL数据库版本: 5.5.27新建springboot项目有网的情况下项目命名,注意这里使用jdk8选择依赖, ①Web下的Spring Web ②SQL下的MyBatis Framework ③SQL下的MySQL Driver选择项目存放位置项目结构创建名为store的数据库,偷个懒,用可视化工具navicat创建配置文件application.propertiesspring.datasou原创 2022-05-10 10:25:34 · 204 阅读 · 0 评论