Browse Source

深i企登录对接

dev
蟑螂恶霸 1 month ago
parent
commit
4c4a99ec62
  1. 112
      zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/enforcement/AppEnfLoginController.java

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

@ -22,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
@ -146,15 +147,112 @@ public class AppEnfLoginController extends LoginController {
/**
* 深政易用户登录
* @param code 授权码
* @return 登录结果包含token和用户信息
* 深圳易平台登录
*/
@PostMapping("/szyptLogin")
@GetMapping("/szyptLogin/{code}")
@ResponseBody
public R<Map<String, Object>> szyptLogin(@RequestBody Map<String, String> params ){
String code = params.get("code");
return appEnfLoginService.szyptLogin(code);
public R<Map<String, Object>> szyptLogin(@PathVariable String code){
log.info("--> 深政易用户登录code:{}",code);
String accessTokenJson = "";
String userJson = "";
SysUserVo user = null;
try {
// 获取 access_token
accessTokenJson = HttpUtil.HttpSendGet(szyptUrl + "/cgi-bin/gettoken?corpid="+szyptCorpid+"&corpsecret="+szyptCorpsecret, null);
JSONObject tokenObj = JSONObject.parseObject(accessTokenJson);
String token = tokenObj.getString("access_token");
// 获取 用户Id
userJson = HttpUtil.HttpSendGet(szyptUrl + "/cgi-bin/user/getuserinfo?access_token="+token+"&code="+code, null);
log.info(">>> {} 市认证用户信息: {}", code, userJson);
JSONObject userOjb = JSONObject.parseObject(userJson);
String loginName = userOjb.getString("UserId");
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("");
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
token = doSaTokenLogin(user.getUserId(), user.getUserName(), user.getNickName(),
user.getDeptId(), "app_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. 手机号解密处理(如是加密存储则返回明文以供前端展示与业务使用)
String phonenumber = user.getPhonenumber();
if (CommonUtil.isPhoneEncrypted(phonenumber)) {
phonenumber = CommonUtil.decryptPhone(phonenumber);
}
// 9. 构造返回数据
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", phonenumber != null ? phonenumber : "");
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.getDeptName());
data.put("lawOfficer", true);
data.put("platformType", PlatformTypeEnums.ENFORCEMENT.getKey());
return R.ok(data);
} catch (Exception e) {
log.error("---> {} 市认证用户信息: {}", code, userJson);
log.error("---> 本系统用户信息: {}", user);
log.error(e.getMessage());
e.printStackTrace();
}
return R.ok();
}
/**

Loading…
Cancel
Save