Commit 180c4693 by giaogiao

商家用户修改密码功能

parent 1d011660
...@@ -3,6 +3,7 @@ package com.jumeirah.api.app.controller; ...@@ -3,6 +3,7 @@ package com.jumeirah.api.app.controller;
import com.jumeirah.api.app.service.AppUserApiService; import com.jumeirah.api.app.service.AppUserApiService;
import com.jumeirah.common.param.app.AppSmsRegisterParam; import com.jumeirah.common.param.app.AppSmsRegisterParam;
import com.jumeirah.common.param.app.AppUserInfoParam; import com.jumeirah.common.param.app.AppUserInfoParam;
import com.jumeirah.common.param.app.AppUserPhoneUpdateParam;
import com.jumeirah.common.service.AppUserService; import com.jumeirah.common.service.AppUserService;
import com.jumeirah.common.vo.app.LoginAppUserTokenVo; import com.jumeirah.common.vo.app.LoginAppUserTokenVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -19,7 +20,6 @@ import org.springframework.web.bind.annotation.PostMapping; ...@@ -19,7 +20,6 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
...@@ -58,9 +58,9 @@ public class AppUserController extends BaseController { ...@@ -58,9 +58,9 @@ public class AppUserController extends BaseController {
@PostMapping("/updatePhone") @PostMapping("/updatePhone")
@OperationLog(name = "修改手机号", type = OperationLogType.ADD) @OperationLog(name = "修改手机号", type = OperationLogType.ADD)
@ApiOperation(value = "修改手机号", response = ApiResult.class) @ApiOperation(value = "修改手机号", response = ApiResult.class)
public ApiResult<Boolean> updatePhone(@RequestParam String phoneArea, @RequestParam String phone, @RequestParam String code) throws Exception { public ApiResult<Boolean> updatePhone(@RequestBody AppUserPhoneUpdateParam userPhoneUpdateParam) throws Exception {
return appUserApiService.updatePhone(phoneArea, phone, code); return appUserApiService.updatePhone(userPhoneUpdateParam.getPhoneArea(), userPhoneUpdateParam.getPhone(), userPhoneUpdateParam.getCode());
} }
/* *//** /* *//**
......
package com.jumeirah.api.merchant.controller; package com.jumeirah.api.merchant.controller;
import com.jumeirah.common.param.MerchantLoginParam; import com.jumeirah.common.param.MerchantLoginParam;
import com.jumeirah.common.param.MerchantUpdatePwdParam;
import com.jumeirah.common.service.MerchantService; import com.jumeirah.common.service.MerchantService;
import com.jumeirah.common.service.MerchantUserService; import com.jumeirah.common.service.MerchantUserService;
import com.jumeirah.common.vo.LoginMerUserTokenVo; import com.jumeirah.common.vo.LoginMerUserTokenVo;
...@@ -100,6 +101,14 @@ public class MerchantUserController extends BaseController { ...@@ -100,6 +101,14 @@ public class MerchantUserController extends BaseController {
return merchantUserService.login(merchantLoginParam); return merchantUserService.login(merchantLoginParam);
} }
@PostMapping("/updatePwd")
@OperationLogIgnore
@ApiOperation(value = "商家用户修改密码", notes = "商家用户修改密码, 修改完后需要跳到登陆界面,并重新登陆")
public ApiResult<Boolean> updatePwd(@Validated @RequestBody MerchantUpdatePwdParam merchantUpdatePwdParam) throws Exception {
return merchantUserService.updatePwd(merchantUpdatePwdParam);
}
// @PostMapping("/register") // @PostMapping("/register")
// @OperationLogIgnore // @OperationLogIgnore
// @ApiOperation(value = "注册", notes = "商家注册") // @ApiOperation(value = "注册", notes = "商家注册")
......
/*
* Copyright 2019-2029 geekidea(https://github.com/geekidea)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jumeirah.common.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 登录参数
*
* @author geekidea
* @date 2019-05-15
**/
@Data
@ApiModel("商家用户修改密码参数")
public class MerchantUpdatePwdParam implements Serializable {
private static final long serialVersionUID = 2854217576695117356L;
@NotBlank(message = "请输入密码")
@ApiModelProperty(value = "密码", example = "123456")
private String oldPassword;
@NotBlank(message = "请输入密码")
@ApiModelProperty(value = "密码", example = "123456")
private String newPassword;
}
package com.jumeirah.common.param.app;
import io.geekidea.springbootplus.framework.common.entity.BaseEntity;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* APP用户
*
* @author wei
* @since 2020-09-23
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "AppUserPhoneUpdateParam")
public class AppUserPhoneUpdateParam extends BaseEntity {
private String phoneArea;
private String phone;
private String code;
}
...@@ -2,6 +2,7 @@ package com.jumeirah.common.service; ...@@ -2,6 +2,7 @@ package com.jumeirah.common.service;
import com.jumeirah.common.entity.MerchantUser; import com.jumeirah.common.entity.MerchantUser;
import com.jumeirah.common.param.MerchantLoginParam; import com.jumeirah.common.param.MerchantLoginParam;
import com.jumeirah.common.param.MerchantUpdatePwdParam;
import com.jumeirah.common.param.MerchantUserPageParam; import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.vo.LoginMerUserTokenVo; import com.jumeirah.common.vo.LoginMerUserTokenVo;
import com.jumeirah.common.vo.MerchantUserQueryVo; import com.jumeirah.common.vo.MerchantUserQueryVo;
...@@ -37,6 +38,8 @@ public interface MerchantUserService extends BaseService<MerchantUser> { ...@@ -37,6 +38,8 @@ public interface MerchantUserService extends BaseService<MerchantUser> {
*/ */
ApiResult<LoginMerUserTokenVo> login(MerchantLoginParam merchantLoginParam) throws Exception; ApiResult<LoginMerUserTokenVo> login(MerchantLoginParam merchantLoginParam) throws Exception;
ApiResult<Boolean> updatePwd(MerchantUpdatePwdParam merchantUpdatePwdParam) throws Exception;
// ApiResult<Boolean> register(MerchantRegisterParam merchantRegisterParam) throws Exception; // ApiResult<Boolean> register(MerchantRegisterParam merchantRegisterParam) throws Exception;
......
package com.jumeirah.common.service.impl; package com.jumeirah.common.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.core.metadata.OrderItem;
...@@ -10,6 +11,7 @@ import com.jumeirah.common.entity.MerchantUserPermission; ...@@ -10,6 +11,7 @@ import com.jumeirah.common.entity.MerchantUserPermission;
import com.jumeirah.common.enums.StateEnum; import com.jumeirah.common.enums.StateEnum;
import com.jumeirah.common.mapper.MerchantUserMapper; import com.jumeirah.common.mapper.MerchantUserMapper;
import com.jumeirah.common.param.MerchantLoginParam; import com.jumeirah.common.param.MerchantLoginParam;
import com.jumeirah.common.param.MerchantUpdatePwdParam;
import com.jumeirah.common.param.MerchantUserPageParam; import com.jumeirah.common.param.MerchantUserPageParam;
import com.jumeirah.common.service.MerchantPermissionService; import com.jumeirah.common.service.MerchantPermissionService;
import com.jumeirah.common.service.MerchantUserPermissionService; import com.jumeirah.common.service.MerchantUserPermissionService;
...@@ -31,6 +33,7 @@ import io.geekidea.springbootplus.framework.shiro.util.SaltUtil; ...@@ -31,6 +33,7 @@ import io.geekidea.springbootplus.framework.shiro.util.SaltUtil;
import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo; import io.geekidea.springbootplus.framework.shiro.vo.LoginUserVo;
import io.geekidea.springbootplus.framework.util.PasswordUtil; import io.geekidea.springbootplus.framework.util.PasswordUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -208,6 +211,56 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper, ...@@ -208,6 +211,56 @@ public class MerchantUserServiceImpl extends BaseServiceImpl<MerchantUserMapper,
return ApiResult.ok(loginSysUserTokenVo); return ApiResult.ok(loginSysUserTokenVo);
} }
@Override
public ApiResult<Boolean> updatePwd(MerchantUpdatePwdParam merchantUpdatePwdParam) throws Exception {
// 判断旧密码是否正确
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
MerchantUser merchantUser = this.getById(jwtToken.getUserId());
if (merchantUser == null) {
log.error("登录失败,用户名或密码错误merchantLoginParam:{}", merchantUpdatePwdParam);
return ApiResult.result(ApiCode.PWD_OR_USERNAME_ERROR, null);
}
if (StateEnum.DISABLE.getCode().equals(merchantUser.getState())) {
log.error("登录失败,禁用:{}", merchantUpdatePwdParam);
return ApiResult.result(ApiCode.LOGIN_EXCEPTION, null);
}
// 后台加密规则:sha256(sha256(123456) + salt)
String encryptPassword = PasswordUtil.encrypt(merchantUpdatePwdParam.getOldPassword(), merchantUser.getSalt());
if (!encryptPassword.equals(merchantUser.getPassword())) {
return ApiResult.result(ApiCode.PWD_OR_USERNAME_ERROR, null);
}
// 生成盐值
String salt = null;
String password = merchantUpdatePwdParam.getNewPassword();
// 如果密码为空,则设置默认密码
if (StringUtils.isBlank(password)) {
salt = springBootPlusProperties.getLoginInitSalt();
password = springBootPlusProperties.getLoginInitPassword();
} else {
salt = SaltUtil.generateSalt();
}
MerchantUser newMerchantUser = new MerchantUser();
// 密码加密
newMerchantUser.setSalt(salt);
newMerchantUser.setPassword(PasswordUtil.encrypt(password, salt));
newMerchantUser.setId(jwtToken.getUserId());
// 修改新密码
boolean updateById = this.updateById(newMerchantUser);
if (updateById) {
// 删除redis中的token,需要用户重新登陆
merchantLoginRedisService.deleteUserAllCache(jwtToken.getUsername());
return ApiResult.ok();
} else {
return ApiResult.fail();
}
}
// @Override // @Override
// public ApiResult<Boolean> register(MerchantRegisterParam merchantRegisterPram) throws Exception { // public ApiResult<Boolean> register(MerchantRegisterParam merchantRegisterPram) throws Exception {
// //
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment