Browse Source

执法端-计划

dev-V1.0.1
庄锐波 4 months ago
parent
commit
78e51df691
  1. 182
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java

182
zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java

@ -28,97 +28,97 @@ public class AppEnfLoginController extends LoginController {
private final ISysUserService sysUserService;
private final ISysDeptService sysDeptService;
private final IAppEnfLoginService appEnfLoginService;
//
// /**
// * 执法端用户登录
// *
// * @param params 包含 secretName(登录账号)和 secretKey(AES加密后的密码)
// * @return 登录结果(token + 用户信息)
// */
// @SaIgnore
// @PostMapping("/do")
// public R<Map<String, Object>> validate(@RequestBody Map<String, String> params) {
// String loginName = params.get("secretName");
// String secretKey = params.get("secretKey");
//
// // 1. 参数校验
// R<Map<String, Object>> paramCheck = validateLoginParams(loginName, secretKey);
// if (paramCheck != null) {
// return paramCheck;
// }
//
// // 2. 根据登录账号查询 sys_user 表
// SysUserVo user = sysUserService.selectUserByLoginName(loginName);
// if (user == null) {
// return R.fail("用户不存在");
// }
//
// // 3. 检查用户状态(0正常 1停用)
// if ("1".equals(user.getStatus())) {
// return R.fail("该用户已被停用");
// }
//
// // 4. AES解密前端传来的密码
// String decryptedPassword = decryptPassword(secretKey);
// if (decryptedPassword == null) {
// return R.fail("密码解密失败");
// }
//
// // 5. MD5加盐校验密码(使用loginName作为加盐因子)
// if (!verifyPassword(loginName, decryptedPassword, user.getSalt(), user.getPassword())) {
// return R.fail("用户名或密码错误");
// }
//
// // 6. 检查执法证件号是否为空
// if (user.getLawCertificateNum() == null || user.getLawCertificateNum().isBlank()) {
// return R.fail("该用户不是执法人员,无法登录执法端");
// }
//
// // 7. 查询部门信息
// SrzDeptVo srzOrgan = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserOrganDept(user.getUserId());
// SysDeptVo sysDept = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserSysDept(user.getUserId());
// SysDeptVo bureauDept = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserBureauDept(user.getUserId());
//
// // 7. 构建LoginUser并生成SaToken
// String token = doSaTokenLogin(user.getUserId(), user.getUserName(), user.getNickName(),
// user.getDeptId(), "enforcement_user", "enforcement_app", "enforcement");
//
//
// // 验证关键组织信息不能为空
// if (srzOrgan == null) {
// return R.fail("该用户未关联认证机构,无法登录执法端");
// }
// if (sysDept == null) {
// return R.fail("该用户未关联部门,无法登录执法端");
// }
// if (bureauDept == null) {
// return R.fail("该用户未关联执法单位,无法登录执法端");
// }
//
// if (!sysDept.getDeptId().equals(user.getDeptId())){
// return R.fail("部门ID查找错误!");
// }
//
// // 8. 构造返回数据
// Map<String, Object> data = new HashMap<>();
// data.put("token", token);
// data.put("userId", user.getUserId());
// data.put("userName", user.getUserName());
// data.put("loginName", user.getLoginName());
// data.put("nickName", user.getNickName());
// data.put("phonenumber", user.getPhonenumber() != null ? user.getPhonenumber() : "");
//
// data.put("deptId", user.getDeptId());
// data.put("deptName", sysDept.getDeptName());
//
// data.put("organId", srzOrgan.getOrganizationid());
// data.put("organName", srzOrgan.getName());
//
// data.put("bureauUnitId", bureauDept.getDeptId());
// data.put("bureauUnitName", bureauDept.getDeptId());
//
// return R.ok(data);
// }
/**
* 执法端用户登录
*
* @param params 包含 secretName登录账号 secretKeyAES加密后的密码
* @return 登录结果token + 用户信息
*/
@SaIgnore
@PostMapping("/do")
public R<Map<String, Object>> validate(@RequestBody Map<String, String> params) {
String loginName = params.get("secretName");
String secretKey = params.get("secretKey");
// 1. 参数校验
R<Map<String, Object>> paramCheck = validateLoginParams(loginName, secretKey);
if (paramCheck != null) {
return paramCheck;
}
// 2. 根据登录账号查询 sys_user 表
SysUserVo user = sysUserService.selectUserByLoginName(loginName);
if (user == null) {
return R.fail("用户不存在");
}
// 3. 检查用户状态(0正常 1停用)
if ("1".equals(user.getStatus())) {
return R.fail("该用户已被停用");
}
// 4. AES解密前端传来的密码
String decryptedPassword = decryptPassword(secretKey);
if (decryptedPassword == null) {
return R.fail("密码解密失败");
}
// 5. MD5加盐校验密码(使用loginName作为加盐因子)
if (!verifyPassword(loginName, decryptedPassword, user.getSalt(), user.getPassword())) {
return R.fail("用户名或密码错误");
}
// 6. 检查执法证件号是否为空
if (user.getLawCertificateNum() == null || user.getLawCertificateNum().isBlank()) {
return R.fail("该用户不是执法人员,无法登录执法端");
}
// 7. 查询部门信息
SrzDeptVo srzOrgan = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserOrganDept(user.getUserId());
SysDeptVo sysDept = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserSysDept(user.getUserId());
SysDeptVo bureauDept = com.zdxt.enforcementcode.common.util.DataFilterUtil.getUserBureauDept(user.getUserId());
// 7. 构建LoginUser并生成SaToken
String token = doSaTokenLogin(user.getUserId(), user.getUserName(), user.getNickName(),
user.getDeptId(), "enforcement_user", "enforcement_app", "f0535c2a32ab4d0496ab9a699b2a7d36");
// 验证关键组织信息不能为空
if (srzOrgan == null) {
return R.fail("该用户未关联认证机构,无法登录执法端");
}
if (sysDept == null) {
return R.fail("该用户未关联部门,无法登录执法端");
}
if (bureauDept == null) {
return R.fail("该用户未关联执法单位,无法登录执法端");
}
if (!sysDept.getDeptId().equals(user.getDeptId())){
return R.fail("部门ID查找错误!");
}
// 8. 构造返回数据
Map<String, Object> data = new HashMap<>();
data.put("token", token);
data.put("userId", user.getUserId());
data.put("userName", user.getUserName());
data.put("loginName", user.getLoginName());
data.put("nickName", user.getNickName());
data.put("phonenumber", user.getPhonenumber() != null ? user.getPhonenumber() : "");
data.put("deptId", user.getDeptId());
data.put("deptName", sysDept.getDeptName());
data.put("organId", srzOrgan.getOrganizationid());
data.put("organName", srzOrgan.getName());
data.put("bureauUnitId", bureauDept.getDeptId());
data.put("bureauUnitName", bureauDept.getDeptId());
return R.ok(data);
}
/**

Loading…
Cancel
Save