add 企业端用户登录判断是否为有密码,增加短信修改密码,发送验证码,登出
This commit is contained in:
+6
-1
@@ -93,6 +93,12 @@ public class ShiroConfig {
|
||||
filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
|
||||
filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
|
||||
filterChainDefinitionMap.put("/paymentRecord/payPaymentRecord/standardsAddAR", "anon");//标协会员添加来款
|
||||
//企业端登录
|
||||
filterChainDefinitionMap.put("/company/login", "anon");//登录接口排除
|
||||
filterChainDefinitionMap.put("/company/logout", "anon");//登出接口排除
|
||||
filterChainDefinitionMap.put("/company/changePassword", "anon");//短信验证码修改密码
|
||||
filterChainDefinitionMap.put("/company/sendVerificationCode", "anon");//企业端发送验证码
|
||||
|
||||
//和会员系统交互的接口
|
||||
filterChainDefinitionMap.put("/meeting/payMeeting/addStandards","anon");//会员系统推送会议
|
||||
filterChainDefinitionMap.put("/meeting/payMeeting/addStandardsFile","anon");//会员系统推送文件
|
||||
@@ -108,7 +114,6 @@ public class ShiroConfig {
|
||||
filterChainDefinitionMap.put("/company/payContactsManagement/queryByName","anon");//联系人校验
|
||||
filterChainDefinitionMap.put("/sys/common/download/**","anon");//下载接口
|
||||
filterChainDefinitionMap.put("/sys/oss/file/queryById","anon");//通过id查询文件
|
||||
filterChainDefinitionMap.put("/company/login", "anon"); //登录接口排除
|
||||
|
||||
filterChainDefinitionMap.put("/", "anon");
|
||||
filterChainDefinitionMap.put("/doc.html", "anon");
|
||||
|
||||
+40
-5
@@ -3,6 +3,7 @@ package com.jero.company.controller;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.constant.CacheConstant;
|
||||
import com.jero.common.constant.CommonConstant;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.system.api.ISysBaseAPI;
|
||||
@@ -11,19 +12,22 @@ import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.common.util.*;
|
||||
import com.jero.company.entity.PayContactsManagement;
|
||||
import com.jero.company.service.IPayContactsManagementService;
|
||||
import com.jero.company.vo.CompanyLoginVO;
|
||||
import com.jero.modules.base.service.BaseCommonService;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.model.SysLoginModel;
|
||||
import com.jero.modules.system.service.ISysDictService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
@@ -136,6 +140,37 @@ public class CompanyLoginController {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/logout")
|
||||
public Result<Object> logout(HttpServletRequest request, HttpServletResponse response) {
|
||||
//用户退出逻辑
|
||||
String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
|
||||
if (oConvertUtils.isEmpty(token)) {
|
||||
return Result.error("退出登录失败!");
|
||||
}
|
||||
String phone = JwtUtil.getUsername(token);
|
||||
LambdaQueryWrapper<PayContactsManagement> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(PayContactsManagement::getPhone, phone);
|
||||
PayContactsManagement contactsManagement = payContactsManagementService.getOne(queryWrapper);
|
||||
if (contactsManagement != null) {
|
||||
baseCommonService.addLog("用户名: " + contactsManagement.getName() + ",退出成功!", CommonConstant.LOG_TYPE_1, null, null);
|
||||
log.info(" 企业端用户: " + contactsManagement.getName() + ",退出成功! ");
|
||||
//清空用户登录Token缓存
|
||||
redisUtil.del(CommonConstant.PREFIX_USER_TOKEN + token);
|
||||
//调用shiro的logout
|
||||
SecurityUtils.getSubject().logout();
|
||||
return Result.OK("退出登录成功!");
|
||||
} else {
|
||||
return Result.error("Token无效!");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
*
|
||||
@@ -179,10 +214,10 @@ public class CompanyLoginController {
|
||||
return Result.OK();
|
||||
}
|
||||
|
||||
@ApiOperation(value = "忘记密码", notes = "忘记密码")
|
||||
@PostMapping(value = "/forgetPassword")
|
||||
public Result<?> forgetPassword(@RequestBody PayContactsManagement user) {
|
||||
//payContactsManagementService.forgetPassword(user);
|
||||
@ApiOperation(value = "短信验证码修改密码")
|
||||
@PostMapping(value = "/changePassword")
|
||||
public Result<?> changePassword(@RequestBody CompanyLoginVO companyLoginVO) {
|
||||
payContactsManagementService.changePassword(companyLoginVO);
|
||||
return Result.OK("修改密码成功");
|
||||
}
|
||||
|
||||
|
||||
+9
-6
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.company.entity.PayContactsManagement;
|
||||
import com.jero.company.vo.CompanyLoginVO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
@@ -12,15 +13,15 @@ import java.util.List;
|
||||
/**
|
||||
* @Description: pay_contacts_management
|
||||
* @Author: jeecg-boot
|
||||
* @Date: 2021-08-25
|
||||
* @Date: 2021-08-25
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface PayContactsManagementMapper extends BaseMapper<PayContactsManagement> {
|
||||
|
||||
/**
|
||||
* @Description 分页查询
|
||||
* @Author lqt
|
||||
* @Date 2021/8/27
|
||||
* @Author lqt
|
||||
* @Date 2021/8/27
|
||||
* @Param
|
||||
* @Return
|
||||
* @Exception
|
||||
@@ -29,11 +30,13 @@ public interface PayContactsManagementMapper extends BaseMapper<PayContactsManag
|
||||
|
||||
/**
|
||||
* @Description 根据手机号查询联系人信息
|
||||
* @Author lqt
|
||||
* @Date 2021/8/30
|
||||
* @Param phoneList 手机号集合
|
||||
* @Author lqt
|
||||
* @Date 2021/8/30
|
||||
* @Param phoneList 手机号集合
|
||||
* @Return
|
||||
* @Exception
|
||||
*/
|
||||
List<PayContactsManagement> listPayContactsManagement(List<String> phoneList);
|
||||
|
||||
void forgetPassword(@Param("companyLoginVO") CompanyLoginVO companyLoginVO);
|
||||
}
|
||||
|
||||
+7
@@ -59,4 +59,11 @@
|
||||
#{item}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<update id="forgetPassword">
|
||||
update pay_contacts_management set password = #{companyLoginVO.password}
|
||||
<where>
|
||||
phone = #{companyLoginVO.phone}
|
||||
</where>
|
||||
</update>
|
||||
</mapper>
|
||||
+2
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.company.entity.PayCompanyManagement;
|
||||
import com.jero.company.entity.PayContactsManagement;
|
||||
import com.jero.company.vo.CompanyLoginVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -48,4 +49,5 @@ public interface IPayContactsManagementService extends IService<PayContactsManag
|
||||
*/
|
||||
List<PayContactsManagement> listPayContactsManagement(List<String> phoneList);
|
||||
|
||||
void changePassword(CompanyLoginVO companyLoginVO);
|
||||
}
|
||||
|
||||
+55
@@ -1,16 +1,25 @@
|
||||
package com.jero.company.service.impl;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.CommonUtils;
|
||||
import com.jero.common.util.PasswordUtil;
|
||||
import com.jero.common.util.RedisUtil;
|
||||
import com.jero.common.util.ValidUtil;
|
||||
import com.jero.company.entity.PayContactsManagement;
|
||||
import com.jero.company.mapper.PayContactsManagementMapper;
|
||||
import com.jero.company.service.IPayContactsManagementService;
|
||||
import com.jero.company.vo.CompanyLoginVO;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
@@ -28,6 +37,8 @@ public class PayContactsManagementServiceImpl extends ServiceImpl<PayContactsMan
|
||||
|
||||
@Resource
|
||||
PayContactsManagementMapper payContactsManagementMapper;
|
||||
@Resource
|
||||
private RedisUtil redisUtil;
|
||||
|
||||
@Override
|
||||
public IPage<PayContactsManagement> queryPageList(Page<PayContactsManagement> page, PayContactsManagement payContactsManagement) {
|
||||
@@ -51,4 +62,48 @@ public class PayContactsManagementServiceImpl extends ServiceImpl<PayContactsMan
|
||||
public List<PayContactsManagement> listPayContactsManagement(List<String> phoneList) {
|
||||
return payContactsManagementMapper.listPayContactsManagement(phoneList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changePassword(CompanyLoginVO companyLoginVO) {
|
||||
ValidUtil.validate(companyLoginVO);
|
||||
|
||||
//前端传入密码解密
|
||||
String phone = companyLoginVO.getPhone();
|
||||
String password = companyLoginVO.getPassword();
|
||||
String verifyPassword = companyLoginVO.getVerifyPassword();
|
||||
String RSAPublicKey = companyLoginVO.getRsapublickey();
|
||||
String RSAPrivateKey = String.valueOf(redisUtil.get(RSAPublicKey));
|
||||
try {
|
||||
password = CommonUtils.decryptBtRsaPriKey(password, RSAPrivateKey);
|
||||
verifyPassword = CommonUtils.decryptBtRsaPriKey(verifyPassword, RSAPrivateKey);
|
||||
companyLoginVO.setPassword(password);
|
||||
companyLoginVO.setVerifyPassword(verifyPassword);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
//处理手机获取验证码的逻辑
|
||||
Object obj = redisUtil.get("_verification:_phone:" + companyLoginVO.getPhone());
|
||||
if (obj == null) {
|
||||
throw new JeroBootException("验证码失效,请重新发送");
|
||||
}
|
||||
String code = obj.toString();
|
||||
if (!companyLoginVO.getVerifyCode().equals(code)) {
|
||||
throw new JeroBootException("验证码错误!");
|
||||
}
|
||||
|
||||
if (!password.equals(verifyPassword)) {
|
||||
throw new JeroBootException("新密码和确认密码不一致,请重新输入");
|
||||
}
|
||||
LambdaQueryWrapper<PayContactsManagement> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(PayContactsManagement::getPhone, phone);
|
||||
PayContactsManagement contactsManagement = this.getOne(queryWrapper);
|
||||
if (ObjectUtils.isEmpty(contactsManagement)) {
|
||||
throw new JeroBootException("用户不存在");
|
||||
}
|
||||
String passwordEncode = PasswordUtil.encrypt(contactsManagement.getPhone(), password, contactsManagement.getSalt());
|
||||
companyLoginVO.setPassword(passwordEncode);
|
||||
payContactsManagementMapper.forgetPassword(companyLoginVO);
|
||||
redisUtil.del("_verification:_phone:" + companyLoginVO.getPhone());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.jero.company.vo;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
@@ -13,6 +14,7 @@ import javax.validation.constraints.Pattern;
|
||||
* @author liJiaRao
|
||||
* @date 2021-09-23 14:59
|
||||
*/
|
||||
@Data
|
||||
public class CompanyLoginVO {
|
||||
/**手机号*/
|
||||
@ApiModelProperty(value = "手机号")
|
||||
@@ -21,21 +23,30 @@ public class CompanyLoginVO {
|
||||
private String phone;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
* 密码
|
||||
*/
|
||||
@ApiModelProperty(value = "验证码")
|
||||
@TableField(exist = false)
|
||||
private String verifyCode;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "RSA公钥")
|
||||
private String rsapublickey;
|
||||
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||
@ApiModelProperty(value = "密码")
|
||||
@NotEmpty(message = "密码不能为空!")
|
||||
private String password;
|
||||
|
||||
/**
|
||||
* 确认密码
|
||||
*/
|
||||
@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
|
||||
@ApiModelProperty(value = "确认密码")
|
||||
@TableField(exist = false)
|
||||
@NotEmpty(message = "确认密码不能为空!")
|
||||
private String verifyPassword;
|
||||
|
||||
/**
|
||||
* 验证码
|
||||
*/
|
||||
@ApiModelProperty(value = "验证码")
|
||||
@NotEmpty(message = "验证码不能为空!")
|
||||
private String verifyCode;
|
||||
|
||||
@ApiModelProperty(value = "RSA公钥")
|
||||
@NotEmpty(message = "RSA公钥不能为空!")
|
||||
private String rsapublickey;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user