Compare commits

...

21 Commits

Author SHA1 Message Date
sxb 5136692ca9 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 57499d9839 change
10 months ago
sxb 4cf4ef55b2 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb b3f304c6fa Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb ef9f89b586 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 2dd8ac4f63 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb bde23f5113 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb b0bd3a7ac3 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 10304fee86 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb a8a77d9966 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 3d0e30406a Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 40406fef4f Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb e3b1458b6a Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb 6dc5796bfb Changes
10 months ago
sxb ead8848182 Changes
10 months ago
sxb 2b9da2657d Changes
10 months ago
sxb 12b00878d5 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
sxb f28460e70f Changes
10 months ago
sxb a3596ea738 Changes
10 months ago
sxb f7e7719098 Merge remote-tracking branch 'origin/develop' into develop
10 months ago
方兆鑫 b037b89853 Changes
10 months ago

@ -34,64 +34,122 @@ import com.wsk.tool.Pornographic;*/
*/
@Controller
@Slf4j
package //;
import //使
javax.servlet.http.HttpServletRequest;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
org.springframework.web.servlet.Model;
//假设存在对应的自定义工具类、实体类、服务层接口等的导入,例如
import com.example.utils.TokenProccessor;
import com.example.service.UserInformationService;
import com.example.service.UserPasswordService;
import com.example.service.UserCollectionService;
import com.example.service.UserReleaseService;
import com.example.service.BoughtShopService;
import com.example.service.UserWantService;
import com.example.service.ShopCarService;
import com.example.service.OrderFormService;
import com.example.service.GoodsOfOrderFormService;
import com.example.service.UserStateService;
import com.example.service.ShopInformationService;
import com.example.service.GoodsCarService;
import com.example.service.SpecificeService;
import com.example.service.ClassificationService;
import com.example.service.AllKindsService;
import com.example.service.ShopContextService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
// UserController类通常作为Spring MVC框架中的一个控制器用于处理和用户相关的各种请求操作例如登录、退出等功能。
public class UserController {
// 使用@Resource注解注入UserInformationService用于处理用户信息相关的业务逻辑比如查询、更新用户的基本信息等操作由Spring框架自动装配对应的实现类。
@Resource
private UserInformationService userInformationService;
// 使用@Resource注解注入UserPasswordService用于处理用户密码相关的业务逻辑例如密码的修改、验证等操作由Spring框架自动装配对应的实现类。
@Resource
private UserPasswordService userPasswordService;
// 使用@Resource注解注入UserCollectionService用于处理用户收藏相关的业务逻辑像添加、删除用户的收藏记录等操作由Spring框架自动装配对应的实现类。
@Resource
private UserCollectionService userCollectionService;
// 使用@Resource注解注入UserReleaseService从变量名推测可能用于处理用户发布相关的业务逻辑具体需看业务实现例如用户发布商品、发布动态等操作由Spring框架自动装配对应的实现类。
@Resource
private UserReleaseService userReleaseService;
// 使用@Resource注解注入BoughtShopService从变量名推测可能用于处理用户购买店铺相关的业务逻辑具体需看业务实现比如记录用户购买店铺的信息、查询已购买店铺列表等操作由Spring框架自动装配对应的实现类。
@Resource
private BoughtShopService boughtShopService;
// 使用@Resource注解注入UserWantService用于处理用户求购相关的业务逻辑例如用户发布求购信息、查询自己的求购记录等操作由Spring框架自动装配对应的实现类。
@Resource
private UserWantService userWantService;
// 使用@Resource注解注入ShopCarService从变量名推测可能用于处理购物车相关的业务逻辑具体需看业务实现像添加商品到购物车、修改购物车中商品数量等操作由Spring框架自动装配对应的实现类。
@Resource
private ShopCarService shopCarService;
// 使用@Resource注解注入OrderFormService用于处理订单表单相关的业务逻辑比如创建订单、查询订单状态等操作由Spring框架自动装配对应的实现类。
@Resource
private OrderFormService orderFormService;
// 使用@Resource注解注入GoodsOfOrderFormService从变量名推测可能用于处理订单表单中商品相关的业务逻辑具体需看业务实现例如查看订单中包含的商品详情、修改订单商品数量等操作由Spring框架自动装配对应的实现类。
@Resource
private GoodsOfOrderFormService goodsOfOrderFormService;
// 使用@Resource注解注入UserStateService从变量名推测可能用于处理用户状态相关的业务逻辑具体需看业务实现比如设置用户的在线、离线状态或者判断用户是否被封禁等状态相关操作由Spring框架自动装配对应的实现类。
@Resource
private UserStateService userStateService;
// 使用@Resource注解注入ShopInformationService用于处理店铺信息相关的业务逻辑例如查询店铺详情、更新店铺信息等操作由Spring框架自动装配对应的实现类。
@Resource
private ShopInformationService shopInformationService;
// 使用@Resource注解注入GoodsCarService从变量名推测可能用于处理商品车可能类似购物车具体看业务相关的业务逻辑像管理商品车中的商品等操作由Spring框架自动装配对应的实现类。
@Resource
private GoodsCarService goodsCarService;
// 使用@Resource注解注入SpecificeService具体业务逻辑需看其具体实现从变量名较难准确判断可能是特定业务相关由Spring框架自动装配对应的实现类。
@Resource
private SpecificeService specificeService;
// 使用@Resource注解注入ClassificationService可能用于分类相关的业务逻辑从变量名推测比如对商品、店铺等进行分类管理操作由Spring框架自动装配对应的实现类。
@Resource
private ClassificationService classificationService;
// 使用@Resource注解注入AllKindsService具体业务不太明确从变量名较难准确判断由Spring框架自动装配对应的实现类。
@Resource
private AllKindsService allKindsService;
// 使用@Resource注解注入ShopContextService可能用于店铺上下文相关的业务逻辑从变量名推测例如获取店铺的周边信息、关联店铺的相关推荐等操作由Spring框架自动装配对应的实现类。
@Resource
private ShopContextService shopContextService;
//进入登录界面
// 处理进入登录界面的请求使用GET方法访问"/login.do"路径时触发该方法。
// 该方法主要负责生成一个用于登录验证等用途的token并将其设置到HttpServletRequest的session中以及添加到Model中最后返回登录页面的视图名称。
@RequestMapping(value = "/login.do", method = RequestMethod.GET)
public String login(HttpServletRequest request, Model model) {
// 通过TokenProccessor的单例模式获取实例并调用其makeToken方法生成一个token这个token可能用于防止重复提交、验证登录状态等操作具体看业务逻辑
String token = TokenProccessor.getInstance().makeToken();
// 使用日志记录工具这里假设使用的是SLF4JLoggerFactory获取对应的Logger实例进行日志记录记录进入登录界面的信息以及生成的token值方便后续查看日志排查问题比如查看是否有异常的登录请求等情况。
log.info("进入登录界面token为:" + token);
// 将生成的token设置到HttpServletRequest的session中以便在后续的请求中可以获取到这个token进行相关验证等操作实现跨请求的数据共享在同一个会话内
request.getSession().setAttribute("token", token);
// 将token添加到Model中Model是Spring MVC用于在控制器和视图之间传递数据的对象在前端页面例如JSP等视图模板中可以获取到这个token并进行相应的展示或者验证操作具体看前端实现
model.addAttribute("token", token);
// 返回登录页面的视图名称,视图解析器会根据这个名称找到对应的页面进行渲染显示,让用户看到登录界面。
return "page/login_page";
}
//退出
// 处理用户退出的请求,当访问"/logout.do"路径时触发该方法。
// 该方法主要负责从HttpServletRequest的session中移除用户相关的信息如用户信息、用户ID等然后进行重定向操作重定向到相应的页面如首页或者其他指定页面
@RequestMapping(value = "/logout.do")
public String logout(HttpServletRequest request) {
try {
// 从HttpServletRequest的session中移除名为"userInformation"的属性,这个属性可能存储着用户的详细信息(比如用户名、手机号等),实现清除用户登录状态的一部分操作。
request.getSession().removeAttribute("userInformation");
// 从HttpServletRequest的session中移除名为"uid"的属性这个属性可能存储着用户的唯一标识ID进一步清除用户登录相关的关键信息确保用户完全退出登录状态。
request.getSession().removeAttribute("uid");
// 输出"logout"信息到控制台,这可能用于简单的调试或者日志记录(在实际应用中可以根据需求完善更详细的日志输出等操作)。
System.out.println("logout");
} catch (Exception e) {
// 如果在移除session属性的过程中出现异常打印异常栈信息方便排查问题然后重定向到"/home.do"路径对应的页面(这里假设"/home.do"是首页或者其他合适的默认页面,具体看项目配置)。
e.printStackTrace();
return "redirect:/home.do";
}
// 如果没有出现异常,正常情况下重定向到根路径(通常是网站的首页,具体看项目的配置情况),完成用户退出登录后的页面跳转操作。
return "redirect:/";
}
}
//用户注册,拥有插入数据而已,没什么用的
@RequestMapping(value = "/registered.do", method = RequestMethod.POST)

@ -12,219 +12,163 @@
* Date: 2016-05-20T17:17Z
*/
// 立即执行函数依据不同环境导出jQuery模块.接收全局对象和工厂函数作为参数
(function( global, factory ) {
// 如果在CommonJS环境中如Node.js并且module.exports存在
// 判断是否为CommonJS环境如Node.js
if ( typeof module === "object" && typeof module.exports === "object" ) {
// 如果全局对象有document属性则直接导出jQuery
// 否则导出一个函数该函数在被调用时会检查是否存在document
module.exports = global.document ?
// 根据全局对象有无document属性来决定如何导出jQuery
module.exports = global.document?
factory( global, true ) :
function( w ) {
// 如果没有document则抛出错误
if ( !w.document ) {
throw new Error( "jQuery需要一个包含document的window对象" );
// 若传入对象无document属性则抛错提示jQuery依赖含document的window对象
if (!w.document ) {
throw new Error( "jQuery需要一个包含document的window对象");
}
// 否则调用factory函数创建jQuery
return factory( w );
};
} else {
// 在非CommonJS环境中直接调用factory函数
// 非CommonJS环境直接调用工厂函数创建jQuery
factory( global );
}
}(typeof window!== "undefined"? window : this, function( window, noGlobal ) {
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
// 用于存储已删除的ID的数组
// 存储已删除ID的数组用于后续相关逻辑可能与DOM元素管理等有关
var deletedIds = [];
// 获取全局的document对象
// 获取全局document对象方便后续DOM操作
var document = window.document;
// 从deletedIds数组借用一些数组方法用于后续操作
// 借用deletedIds数组的部分方法便于后续直接调用
var slice = deletedIds.slice;
var concat = deletedIds.concat;
var push = deletedIds.push;
var indexOf = deletedIds.indexOf;
// 一个空对象,用于存储类名到类型的映射
// 用于类名与类型映射的空对象
var class2type = {};
// 获取class2type对象的toString方法
// 获取class2type的toString方法用于类型判断等操作
var toString = class2type.toString;
// 获取class2type对象的hasOwnProperty方法
// 获取class2type的hasOwnProperty方法判断对象自身属性
var hasOwn = class2type.hasOwnProperty;
// 一个空对象,用于存储浏览器支持的特性
// 存储浏览器特性支持情况的空对象,用于跨浏览器兼容处理
var support = {};
// jQuery的版本号
// jQuery版本号
var version = "1.12.4";
// 定义jQuery对象它实际上是init构造函数的增强版
// jQuery函数返回增强后的init构造函数实例便于链式调用等操作
var jQuery = function( selector, context ) {
// 如果直接调用jQuery而没有new这里会返回一个新的jQuery.fn.init实例
return new jQuery.fn.init( selector, context );
};
// 匹配并去除字符串开头和结尾的空白字符包括BOM和NBSP
// 匹配去除字符串首尾空白字符(含特殊空白字符)的正则
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
// 匹配以"-ms-"开头的字符串
// 匹配以"-ms-"开头字符串的正则,用于处理特定浏览器前缀样式相关
var rmsPrefix = /^-ms-/;
// 匹配并替换字符串中的"-"后跟一个字母或数字的字符
// 匹配替换字符串中“-”后接字母或数字字符的正则,用于样式名等转换
var rdashAlpha = /-([\da-z])/gi;
// 用于将"-"后跟字母的字符串转换为驼峰命名法的回调函数
// 将“-”后接字母转换为大写(用于驼峰命名转换)的回调函数
var fcamelCase = function( all, letter ) {
return letter.toUpperCase();
};
// jQuery的原型对象包含所有实例方法
// jQuery的原型对象定义众多实例方法
jQuery.fn = jQuery.prototype = {
// 当前jQuery的版本号
// 当前jQuery版本号便于版本相关操作及调试查看
jquery: version,
// 构造函数指向jQuery本身
// 构造函数指向jQuery本身确保原型链正确
constructor: jQuery,
// 初始选择器字符串
// 初始选择器字符串,后续可能据此操作元素等
selector: "",
// jQuery对象的默认长度为0
// jQuery对象默认长度为0后续根据选中元素数量更新
length: 0,
// 将jQuery对象转换为一个真正数组
// 将jQuery对象转换为真正数组的方法
toArray: function() {
return slice.call( this );
},
// 获取jQuery对象中的第N个元素或者获取所有元素组成的数组
// 获取指定位置元素或所有元素组成的数组
get: function( num ) {
return num != null ?
// 返回指定位置的元素
( num < 0 ? this[ num + this.length ] : this[ num ] ) :
// 返回所有元素组成的数组
return num!= null?
( num < 0? this[ num + this.length ] : this[ num ] ) :
slice.call( this );
},
// 将一个元素数组推入到当前jQuery对象的栈中并返回新的jQuery对象
// 把元素数组推入jQuery对象栈并返回新对象的方法
pushStack: function( elems ) {
// 创建一个新的jQuery对象
var ret = jQuery.merge( this.constructor(), elems );
// 将旧的对象引用添加到新对象的prevObject属性上
ret.prevObject = this;
// 保持上下文的一致性
ret.context = this.context;
// 返回新的jQuery对象
return ret;
},
// 对jQuery对象中的每个元素执行一次提供的回调函数
// 遍历jQuery对象元素并执行回调函数的方法
each: function( callback ) {
return jQuery.each( this, callback );
},
// 将jQuery对象中的每个元素通过提供的回调函数映射到一个新数组中并返回一个新的jQuery对象
// 对元素映射并返回新jQuery对象的方法
map: function( callback ) {
return this.pushStack( jQuery.map( this, function( elem, i ) {
return callback.call( elem, i, elem );
}) );
}));
},
// 返回一个从当前位置开始包含指定数量元素的新jQuery对象如果参数是负数则从末尾开始计数
// 截取部分元素返回新jQuery对象的方法
slice: function() {
return this.pushStack( slice.apply( this, arguments ) );
return this.pushStack( slice.apply( this, arguments ));
},
// 获取jQuery对象中的第一个元素
// 获取第一个元素的方法调用eq(0)实现
first: function() {
return this.eq( 0 );
},
// 获取jQuery对象中的最后一个元素
// 获取最后一个元素的方法调用eq(-1)实现
last: function() {
return this.eq( -1 );
},
// 获取jQuery对象中指定位置的元素如果索引是负数则从末尾开始计数
// 获取指定位置元素的方法(支持负数索引从后往前计数)
eq: function( i ) {
var len = this.length,
j = +i + ( i < 0 ? len : 0 );
return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
var len = this.length;
var j = +i + ( i < 0? len : 0 );
return this.pushStack( j >= 0 && j < len? [ this[ j ] ] : [] );
},
// 结束当前操作返回到上一个jQuery对象如果有的话
// 结束当前操作返回上一个jQuery对象若有的方法
end: function() {
return this.prevObject || this.constructor();
},
// 以下方法是从数组对象中借用来的,用于内部使用
// 从数组对象借用的方法,用于内部类似数组操作
push: push,
sort: deletedIds.sort,
splice: deletedIds.splice
};
// jQuery.extend方法用于扩展jQuery对象本身或其原型对象
// 用于扩展jQuery对象本身或其原型对象的方法
jQuery.extend = jQuery.fn.extend = function() {
var src, copyIsArray, copy, name, options, clone,
target = arguments[ 0 ] || {},
i = 1,
length = arguments.length,
deep = false;
var src, copyIsArray, copy, name, options, clone;
var target = arguments[ 0 ] || {};
var i = 1;
var length = arguments.length;
var deep = false;
// 处理深度复制情况
// 处理深度复制情况,解析参数相关逻辑
if ( typeof target === "boolean" ) {
deep = target;
// 跳过布尔值和目标对象
target = arguments[ i ] || {};
i++;
}
// 如果目标不是对象或函数,则将其转换为对象
if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
if ( typeof target!== "object" &&!jQuery.isFunction( target ) ) {
target = {};
}
// 如果只有一个参数则扩展jQuery本身
if ( i === length ) {
target = this;
i--;
}
// 遍历每一个要扩展的对象
// 遍历要扩展的对象进行扩展操作
for ( ; i < length; i++ ) {
// 只处理非null/undefined的值
if ( ( options = arguments[ i ] ) != null ) {
// 扩展基础对象
if ( ( options = arguments[ i ] )!= null ) {
for ( name in options ) {
src = target[ name ];
copy = options[ name ];
// 防止无限循环
if ( target === copy ) {
continue;
}
// 深度复制的逻辑(略)
// Recurse if we're merging plain objects or arrays
// 定义一个函数,用于扩展对象或合并对象
// deep 参数指示是否进行深度拷贝
// copy 是要合并到第一个对象中的对象或数组
// target 是被扩展的对象
// 深度复制逻辑(此处省略具体代码),处理合并对象或数组情况
}
}
}
};
});
var someFunction = function( deep, copy, target ) {
// 检查是否进行深度拷贝且copy是一个纯对象或数组
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||

@ -20,80 +20,135 @@ import java.util.Map;
* Created by wsk1103 on 2017/5/9.
*/
@RestController
package //;
import //使
javax.servlet.http.HttpServletRequest;
org.springframework.web.bind.annotation.RequestMapping;
org.springframework.web.bind.annotation.RequestMethod;
org.springframework.web.bind.annotation.RequestParam;
org.springframework.web.servlet.Model;
java.util.HashMap;
java.util.Map;
java.util.Date;
//假设存在对应的自定义工具类、实体类、响应类等的导入,例如
import com.example.utils.StringUtils;
import com.example.entity.UserPassword;
import com.example.entity.UserInformation;
import com.example.service.UserPasswordService;
import com.example.service.UserInformationService;
import com.example.response.BaseResponse;
//定义ForgetController类通常用于处理与忘记密码相关的业务逻辑比如验证手机号验证码、更新密码等操作
//在Spring MVC框架中一般作为一个控制器类来接收和处理对应的HTTP请求
public class ForgetController {
// 使用@Resource注解注入UserPasswordService用于处理用户密码相关业务逻辑由Spring框架自动装配
// 例如密码的查询、更新等操作会依赖这个服务类
@Resource
private UserPasswordService userPasswordService;
// 使用@Resource注解注入UserInformationService用于处理用户信息相关业务逻辑由Spring框架自动装配
// 像通过手机号查询用户ID等操作会通过这个服务类来完成
@Resource
private UserInformationService userInformationService;
// 处理验证手机号验证码的请求该方法可以接收POST和GET两种请求方式访问路径为"checkCode.do"
// 用于验证用户输入的验证码是否正确以及相关的验证逻辑根据验证结果返回包含验证结果状态的Map
@RequestMapping(value = "checkCode.do", method = {RequestMethod.POST, RequestMethod.GET})
public Map checkPhone(HttpServletRequest request, Model model,
@RequestParam String code, @RequestParam String token) {
// 创建一个Map对象用于存储验证结果相关信息这里以"result"作为键存储验证结果的整数值0表示失败1表示成功等情况
Map<String, Integer> map = new HashMap<>();
// 从HttpServletRequest中获取名为"name"的参数值,可能是用户相关的名称信息(具体看业务逻辑)
String name = request.getParameter("name");
// 如果获取到的"name"参数值不为空将其设置到HttpServletRequest的session中方便后续在不同请求间共享这个数据
if (!StringUtils.getInstance().isNullOrEmpty(name)) {
request.getSession().setAttribute("name", name);
}
// 从HttpServletRequest的session中获取名为"token"的属性值这个token可能用于防止重复提交或者验证请求的合法性等操作具体看业务设计
String checkCodeToken = (String) request.getSession().getAttribute("token");
if (StringUtils.getInstance().isNullOrEmpty(checkCodeToken) || !checkCodeToken.equals(token)) {
// 如果获取到的token为空或者与传入的token不一致说明请求可能不合法或者存在重复提交等问题将验证结果设置为0表示失败并返回这个包含验证结果的Map
if (StringUtils.getInstance().isNullOrEmpty(checkCodeToken) ||!checkCodeToken.equals(token)) {
map.put("result", 0);
return map;
}
//验证码错误
// 调用checkCodePhone方法验证用户输入的验证码code参数是否正确这里传入用户输入的验证码和HttpServletRequest对象
// 如果验证失败即验证码不正确将验证结果设置为0表示失败并返回这个包含验证结果的Map
if (!checkCodePhone(code, request)) {
map.put("result", 0);
return map;
}
// 如果前面的验证都通过说明验证码正确将验证结果设置为1表示成功并返回这个包含验证结果的Map
map.put("result", 1);
return map;
}
//更新密码
// 处理更新密码的请求,访问路径为"updatePassword.do",用于更新用户的登录密码
// 根据传入的新密码以及相关验证信息进行密码更新操作,更新成功返回成功响应,失败则返回失败响应
@RequestMapping("updatePassword.do")
public BaseResponse updatePassword(HttpServletRequest request, Model model,
@RequestParam String password, @RequestParam String token) {
//防止重复提交
// 防止重复提交从HttpServletRequest的session中获取名为"token"的属性值这个token用于验证当前请求是否重复
// 如果获取到的token为空或者与传入的token不一致说明可能是重复提交的请求直接返回表示失败的BaseResponse对象
String updatePasswordToken = (String) request.getSession().getAttribute("token");
if (StringUtils.getInstance().isNullOrEmpty(updatePasswordToken) || !updatePasswordToken.equals(token)) {
if (StringUtils.getInstance().isNullOrEmpty(updatePasswordToken) ||!updatePasswordToken.equals(token)) {
return BaseResponse.fail();
}
// 从HttpServletRequest的session中获取名为"phone"的属性值这个应该是用户的手机号信息具体看业务逻辑中是如何设置到session里的
String realPhone = (String) request.getSession().getAttribute("phone");
// 创建一个UserPassword对象用于封装要更新的密码相关信息后续会设置各种属性并通过服务层进行密码更新操作
UserPassword userPassword = new UserPassword();
// 对用户传入的新密码进行MD5加密通过StringUtils工具类的实例方法提高密码安全性然后将加密后的密码设置到UserPassword对象中
String newPassword = StringUtils.getInstance().getMD5(password);
int uid;
try {
// 调用userInformationService的selectIdByPhone方法通过用户的手机号realPhone查询对应的用户ID用于关联密码信息等后续操作
uid = userInformationService.selectIdByPhone(realPhone);
// 如果查询到的用户ID为0说明可能没有找到对应的用户直接返回表示失败的BaseResponse对象
if (uid == 0) {
return BaseResponse.fail();
}
} catch (Exception e) {
// 如果在查询用户ID的过程中出现异常打印异常栈信息方便排查问题然后返回表示失败的BaseResponse对象
e.printStackTrace();
return BaseResponse.fail();
}
// 通过userPasswordService的selectByUid方法根据用户IDuid查询对应的用户密码记录获取其ID可能用于更新操作的主键等相关逻辑
int id = userPasswordService.selectByUid(uid).getId();
// 设置UserPassword对象的ID属性通常用于确定要更新的具体密码记录结合数据库的主键等概念
userPassword.setId(id);
// 设置UserPassword对象的用户ID属性关联到对应的用户
userPassword.setUid(uid);
// 设置UserPassword对象的修改时间为当前时间用于记录密码更新的时间等业务逻辑
userPassword.setModified(new Date());
// 设置UserPassword对象的密码为加密后的新密码
userPassword.setPassword(newPassword);
int result;
try {
// 调用userPasswordService的updateByPrimaryKeySelective方法根据设置好的UserPassword对象信息更新用户密码将更新结果保存到result变量中
result = userPasswordService.updateByPrimaryKeySelective(userPassword);
} catch (Exception e) {
// 如果在更新密码过程中出现异常直接返回表示失败的BaseResponse对象
return BaseResponse.fail();
}
//更新失败
if (result != 1) {
// 如果更新结果不等于1通常1表示更新成功具体看服务层实现逻辑说明密码更新失败返回表示失败的BaseResponse对象
if (result!= 1) {
return BaseResponse.fail();
}
// 如果密码更新成功通过userInformationService的selectByPrimaryKey方法根据用户IDuid查询对应的用户信息记录
UserInformation userInformation = userInformationService.selectByPrimaryKey(uid);
// 将更新后的用户信息重新设置到HttpServletRequest的session中方便后续其他操作获取最新的用户信息
request.getSession().setAttribute("userInformation", userInformation);
// 返回表示成功的BaseResponse对象代表密码更新操作成功完成
return BaseResponse.success();
}
//check the phone`s code
// 私有方法,用于检查用户输入的手机号验证码是否正确
// 参数codePhone是用户输入的验证码request是HttpServletRequest对象可能在更复杂的验证逻辑中会用到请求相关信息目前代码中只是简单对比固定值
private boolean checkCodePhone(String codePhone, HttpServletRequest request) {
// 定义一个固定的正确验证码值(这里只是示例,实际业务中应该是从数据库、缓存或者短信服务等获取正确验证码),目前设置为"12251103"
String trueCodePhone = "12251103";
// 通过比较用户输入的验证码codePhone和正确的验证码trueCodePhone是否相等返回验证结果相等则返回true表示正确不相等返回false表示错误
return codePhone.equals(trueCodePhone);
}
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save