当前位置: 首页 > news >正文

大连网站的优化wordpress文章显示不全

大连网站的优化,wordpress文章显示不全,旅游网站模板,金融seo公司目录 模块功能介绍 具体实现讲解 constants层#xff1a;存放用户模块常量类 entity层#xff1a;存放实体类#xff0c;与数据库中的属性值基本保持一致 mapper层#xff1a;对数据库进行数据持久化操作 service层#xff1a;业务逻辑层#xff0c;主要是针对具体…目录 模块功能介绍 具体实现讲解 constants层存放用户模块常量类 entity层存放实体类与数据库中的属性值基本保持一致 mapper层对数据库进行数据持久化操作 service层业务逻辑层主要是针对具体的问题的操作 controller层负责请求转发接收页面过来的参数传给service处理接到返回值并再次传给页面 po层controller层向外接参的实体对象 context层上下文的实体对象 vo层视图对象用于展示层把某个指定页面的所有数据封装起来方便前端获取数据 converter层实体对象转换器 项目演示博客 模块功能介绍 用户注册 接口幂等性全局唯一的用户名称用户登录 使用缓存实现单机登录使用jwt token实现时效性以及分布式的问题用户登出用户忘记密码 校验用户名称校验用户密保问题的答案修改用户密码用户在线修改密码 校验旧密码修改密码查询用户的基本信息 具体实现讲解 用户模块下共分有9层分别是 constants层存放用户模块常量类 entity层存放实体类与数据库中的属性值基本保持一致 用户信息表(RPanUser)用户搜索历史表(RPanUserSearchHistory) mapper层对数据库进行数据持久化操作 针对用户信息表的数据库操作Mapper(RPanUserMapper)针对用户搜索历史表的数据库操作Mapper(RPanUserSearchHistoryMapper) service层业务逻辑层主要是针对具体的问题的操作 针对用户信息表的数据库操作Service(IUserService) 首先需要把 转换器针对用户文件信息表的数据库操作Service缓存管理器CacheManager用户模块缓存业务处理类 注入进来用户注册的业务实现(register) 需要实现的功能点 1、注册用户信息2、创建新用户的根本目录信息需要实现的技术难点 1、该业务是幂等的2、要保证用户名全局唯一实现技术难点的处理方案幂等性通过数据库表对于用户名字段添加唯一索引上游业务捕获对应的冲突异常转化返回它只有1个参数即UserRegisterContext首先需要实例化用户信息表的实体对象(实体转化由上下文信息转化成用户实体封装进上下文)(assembleUserEntity) 它只有1个参数即UserRegisterContext首先通过converter的映射方法来完成实体转换得到entity用户实体对象然后通过PasswordUtil的MessageDigestUtil.md5获取盐值信息(随机生成盐值)同时利用PasswordUtil的MessageDigestUtil.sha256传入盐值和上下文对象传来的密码进行密码加密然后对entity进行属性设置(UserId通过雪花算法id生成器生成创建时间与更新时间通过new Date()来生成)最后将这个entity封装进上下文对象中然后实现注册用户的业务(需要捕获数据库的唯一索引冲突异常来实现全局用户名称唯一)(doRegister) 它只有1个参数即UserRegisterContext首先从上下文实体对象(UserRegisterContext)中获取用户实体对象得到entity然后对entity进行判空处理如果是空则抛出对应错误提示如果不是空则首先需要捕获DuplicateKeyException异常表示在数据库中插入或更新数据时违反了唯一性约束即出现了重复的键值然后抛出用户名已存在然后调用mybatisplus的save如果保存失败也抛出对应异常然后创建用户的根目录信息(createUserRootFolder) 它只有1个参数即UserRegisterContext首先需要创建一个文件夹上下文实体对象然后设置它的3个属性(它的userid就是上下文实体对象(UserRegisterContext)中entity的userid)最后调用IUserFileService的创建文件夹信息(createFolder)方法传入设置好的文件夹上下文实体对象来完成创建最后返回这个上下文对象里的entity里的userid用户登录的业务实现(login) 需要实现的功能 1、用户的登录信息校验2、生成一个具有时效性的accessToken3、将accessToken缓存起来去实现单机登录它只有1个参数即UserLoginContext首先要校验传入的信息即校验用户名密码(checkLoginInfo) 它只有1个参数即UserLoginContext首先要通过传入的UserLoginContext上下文对象获取用户名和密码然后通过用户名获取用户实体信息(getRPanUserByUsername)entity 它只有1个参数即username通过QueryWrapper进行eq实现如果查询出来的entity用户实体信息是null则抛出对应异常然后用户名校验通过后则校验密码信息首先要获取到它的盐值(entity的盐值)然后通过PasswordUtil传入盐值和上下文对象获取到的密码进行加密同时获取到用户实体信息entity的密码加密后的密码和数据库中的密码(用户实体信息entity的密码)进行比较不相等则抛出对应异常最后用户名和密码都通过后UserLoginContext上下文对象设置用户实体对象为entity方便下游使用然后生成并保存登陆之后的凭证(generateAndSaveAccessToken) 它只有1个参数即UserLoginContext首先要通过传入的UserLoginContext上下文对象获取用户实体对象entity然后向Jwt工具类传入 entity的username常量key值entity的userid和过期时间 进行token生成然后通过CacheManager获取到服务端公用缓存cache以 用户登录缓存前缀entity的userid 为键缓存token最后UserLoginContext上下文对象设置登陆成功之后的凭证信息为token最后将UserLoginContext上下文对象中的Token返回出去用户退出登录的业务实现(exit) 只需清除用户的登录凭证缓存即可它只有1个参数即当前登录用户的userid首先通过CacheManager获取到服务端公用缓存cache然后以 用户登录缓存前缀当前登录用户的userid 为键清除token即可用户忘记密码-校验用户名称的业务实现(checkUsername) 它只有1个参数即CheckUsernameContext首先从context中获取Username通过Username在数据库中查询对应的密保问题如果查询为空则抛出对应异常没有此用户查询成功则返回查询到的密保问题供后续服务使用用户忘记密码-校验密保答案的业务实现(checkAnswer) 它只有1个参数即CheckAnswerContext首先从context中获取UsernameQuestionAnswer通过UsernameQuestionAnswer在数据库中进行对应的查询并进行eqeq失败则抛出对应异常密保答案错误成功则生成用户忘记密码-校验密保答案通过的临时token并返回token的失效时间为五分钟用户忘记密码-重置用户密码的业务实现(resetPassword) 它只有1个参数即ResetPasswordContext首先验证忘记密码的token是否有效(checkForgetPasswordToken) 它只有1个参数即ResetPasswordContext首先通过context把token取出来然后通过JwtUtil分析这个token返回一个value(Username)如果这个value为空则说明token过期了抛出对应异常如果没有过期解析成功了就把这个token转为string然后与context中的Username进行对比不等则抛出对应异常token错误然后校验用户信息并重置用户密码(checkAndResetUserPassword) 它只有1个参数即ResetPasswordContext首先通过context把Username和Password取出来然后通过传入Username进getRPanUserByUsername来判断user实体entity是否存在不存在则抛出对应异常用户信息不存在如果存在则进行密码的重置然后对Password进行加密加密完成后重新设置entity的Password和UpdateTime属性最后传入处理好的entity进updateById进行修改用户在线修改密码的业务实现(changePassword) 它只有1个参数即ChangePasswordContext首先需要校验旧密码(checkOldPassword) 它只有1个参数即ChangePasswordContext首先需要从context中获取userId和oldPassword然后通过getById查询userId得到用户的实体信息entity如果entity为空则抛出对应异常用户信息不存在查询成功则将用户的实体信息entity封装到上下文对象context中然后要获取到它的盐值(entity的盐值)然后通过PasswordUtil传入盐值和上下文对象获取到的密码进行加密同时获取到用户实体信息entity的密码加密后的密码和数据库中的密码(用户实体信息entity的密码)进行比较不相等则抛出对应异常旧密码不正确然后需要重置新密码(doChangePassword) 它只有1个参数即ChangePasswordContext首先需要从context中获取newPassword和entity然后要获取到它的盐值(entity的盐值)然后通过PasswordUtil传入盐值和新密码newPassword重新进行加密然后用加密密码覆盖掉entity原有密码最后通过向updateById传入entity进行修改失败则抛出对应异常修改用户密码失败最后退出当前的登录状态(exitLoginStatus) 它只有1个参数即ChangePasswordContext直接调用exit传入context中的UserId完成退出查询在线用户的基本信息的业务实现(info) 它只有1个参数即userId首先通过getById查询用户的基本信息实体entity对其进行判空处理查询失败则抛出对应异常用户信息查询失败然后查询用户的根文件夹信息(getUserRootFileInfo) 它只有1个参数即userId委托给文件模块的IUserFileService的getUserRootFile进行处理查询失败则抛出对应异常查询用户根文件夹信息失败最后通过converter的映射方法拼装VO对象(基本信息实体和根文件夹信息)返回针对用户搜索历史表的数据库操作Service(IUserSearchHistoryService) 首先需要把 *** 注入进来查询用户的搜索历史记录默认十条(getUserSearchHistories) 它只有1个参数即QueryUserSearchHistoryContext直接通过Context上下文通过baseMapper调用自定义Mapper操作进行数据库对应查询并返回查询结果 controller层负责请求转发接收页面过来的参数传给service处理接到返回值并再次传给页面 用户模块的控制器实体(UserController) 首先需要把 *** 注入进来register 它只有1个参数即UserRegisterPO首先在调用service的register方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换转换了实体之后调用service的register方法把这个context给它传进去完成调用返回一个新注册的userid最后把这id加密下返回给客户端去使用返回相关状态码login 它只有1个参数即UserLoginPO首先在调用service的login方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换转换了实体之后调用service的login方法把这个context给它传进去完成调用返回一个有时效性的accessToken供后续服务使用返回相关状态码exit 没有参数由于每次请求token放于header中想要获取token每次都要通过在control层获取header才能获取到登录信息很麻烦所以通过用户ID存储工具类里配置好的 ThreadLocal 获取到当前登录用户的userid然后调用service的exit方法把这个userid给它传进去完成调用返回相关状态码即可checkUsername 它只有1个参数即CheckUsernamePO首先在调用service的checkUsername方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换转换了实体之后调用service的checkUsername方法把这个context给它传进去完成调用返回下一步需要校验的密保问题供后续服务使用返回相关状态码checkAnswer 它只有1个参数即CheckAnswerPO首先在调用service的checkAnswer方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换转换了实体之后调用service的checkAnswer方法把这个context给它传进去完成调用返回token供后续服务使用返回相关状态码resetPassword 它只有1个参数即ResetPasswordPO首先在调用service的resetPassword方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换转换了实体之后调用service的resetPassword方法把这个context给它传进去完成调用返回相关状态码即可changePassword 它只有1个参数即ChangePasswordPO首先在调用service的changePassword方法前需要将这个po对象转换成上下文对象通过converter的映射方法来完成转换然后需要获取当前线程的用户ID用来设置上下文对象的UserId调用service的changePassword方法把这个context给它传进去完成调用返回相关状态码即可info 没有参数通过获取当前线程的用户ID直接调用service的info查询在线用户的基本信息查询成功返回对应vo对象同时返回相关状态码用户搜索历史模块的控制器实体(UserSearchHistoryController) 首先需要把 *** 注入进来获取用户最新的搜索历史记录默认十条(getUserSearchHistories) 首先需要创建一个 用户查询搜索历史记录上下文实体(QueryUserSearchHistoryContext)然后通过 用户ID存储工具类获取当前线程的用户ID 进行Context属性设置最后调用service的 getUserSearchHistories 方法把这个context给它传进去完成调用返回用户最新的搜索历史记录和相关状态码 po层controller层向外接参的实体对象 注册用户参数实体对象(UserRegisterPO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加4个属性用户名密码密保问题密保答案最后利用NotBlank 进行非空校验Pattern 进行用户名正则校验Length 进行长度校验登录用户参数实体对象(UserLoginPO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加2个属性用户名密码最后利用NotBlank 进行非空校验Pattern 进行用户名正则校验Length 进行长度校验用户忘记密码-校验用户名称PO对象(CheckUsernamePO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加1个属性用户名最后利用NotBlank 进行非空校验Pattern 进行用户名正则校验用户忘记密码-校验密保答案PO对象(CheckAnswerPO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加3个属性用户名密保问题密保答案最后利用NotBlank 进行非空校验Pattern 进行用户名正则校验Length 进行长度校验用户忘记密码-重置用户密码PO对象(ResetPasswordPO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加3个属性用户名密码验证通过提交重置密码的token最后利用NotBlank 进行非空校验Pattern 进行用户名正则校验Length 进行长度校验用户在线修改密码PO对象(ChangePasswordPO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加2个属性旧密码和新密码最后利用NotBlank 进行非空校验Length 进行长度校验 context层上下文的实体对象 用户注册业务的上下文实体对象(UserRegisterContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加5个属性用户名密码密保问题密保答案用户实体对象(RPanUser)用户登录业务的上下文实体对象(UserLoginContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加4个属性用户名密码用户实体对象(RPanUser)登陆成功之后的凭证信息用户忘记密码-校验用户名称业务的上下文实体对象(CheckUsernameContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加1个属性用户名用户忘记密码-校验密保答案业务的上下文实体对象(CheckAnswerContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加3个属性用户名密保问题密保答案用户忘记密码-重置用户密码业务的上下文实体对象(ResetPasswordContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加3个属性用户名密码验证通过提交重置密码的token用户在线修改密码业务的上下文实体对象(ChangePasswordContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加4个属性当前登录的用户ID旧密码新密码当前登录用户的实体信息(RPanUser)用户查询搜索历史记录上下文实体(QueryUserSearchHistoryContext) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加1个属性当前登录用户的ID vo层视图对象用于展示层把某个指定页面的所有数据封装起来方便前端获取数据 用户基本信息实体(UserInfoVO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加3个属性用户名称用户根目录的加密ID用户根目录名称同时通过JsonSerialize 自定义序列化类对ID进行自动加密用户搜索历史返回实体(UserSearchHistoryVO) 首先它要实现Serializable序列化接口然后给它添加序列化UID这一属性再添加1个属性搜索文案 converter层实体对象转换器 用户模块实体转化工具类(UserConverter) 首先利用MapStruct的Mapper 注解标记这个接口作为一个映射接口并且是编译时MapStruct处理器的入口简化不同的Java Bean之间映射的处理同时指定Mapper 注解的componentModel属性为spring这样生成的实现类上面会自动添加一个Component注解可以通过Spring的 Autowired 方式进行注入然后添加若干映射方法MapStruct会自动生成转换
http://www.huolong8.cn/news/49320/

相关文章:

  • 建设网站成本预算企业门户网站需求文档
  • 一个虚拟主机能安装2个网站吗简述新建站点的步骤
  • 个人网站效果图网站建设厘金手指排名十九
  • 新余网站开发阿里云域名注册步骤
  • 长沙建网站理国内 上市网站建设公司
  • 类似头条的网站怎么做网站做关键词库的作用
  • 网站建立方案天津建设工程信息网公布
  • 南昌网站建设设计住房城乡建设部官网站
  • 网站素材网龙岩兼职招聘最新发布
  • 网站商城建设方式做报名链接的网站
  • 初创公司 建网站做矿产公司的网站
  • 海南省建设培训网站报名好网站用户体验
  • 网站建设电话销售技巧沧州全网推网络科技有限公司
  • 上海网站建设-新闻动态南宁工程建设网站有哪些
  • 建站语言门户网站流程图
  • 网站后台报表统计系统Wordpress编辑工具
  • 潍坊做网站公司找外国女朋友的网站建设
  • 网站ie兼容性网站建设 虚拟化
  • 网站建设后台 手工上传网站制作与建设
  • 微网站建设讯息网站投资多少钱
  • 科技网站配色方案cms系统的优点
  • 创业网站模板做普通网站选择什么服务器
  • 怎么导入网站源码设计师网上接单被骗
  • 做视频网站挣钱吗简单网页模版
  • 织梦做的网站怎么传到网上工程承包合作协议书
  • 用ps做网站主页永清网站建设
  • 电子商务网站建设学什么建筑设计作品展示网站
  • 供求信息网站开发背景旅游网站首页设计图片
  • 建网站首选公司网上销售平台怎么做
  • 可以做一键拨号和导航的网站网页前端设计流程