dongdingding 2 months ago
commit aadf64cb69

@ -3,6 +3,9 @@ package com.ruoyi.tc.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.tc.entity.Unit; import com.ruoyi.tc.entity.Unit;
import com.ruoyi.tc.entity.request.UnitRequest; import com.ruoyi.tc.entity.request.UnitRequest;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
@ -44,6 +47,9 @@ public class UnitController {
@Resource @Resource
private ExamineInfoService examineInfoService; private ExamineInfoService examineInfoService;
@Resource
private ISysUserService iSysUserService;
/** /**
* *
*/ */
@ -97,6 +103,7 @@ public class UnitController {
@ApiOperation(value = "根据用户编号获取详细信息") @ApiOperation(value = "根据用户编号获取详细信息")
@GetMapping("/{id}") @GetMapping("/{id}")
public AjaxResult getInfo(@PathVariable(value = "id") Long id) { public AjaxResult getInfo(@PathVariable(value = "id") Long id) {
System.out.println(SecurityUtils.encryptPassword("TcZc@2024"));
return AjaxResult.success(unitService.getById(id)); return AjaxResult.success(unitService.getById(id));
} }
@ -130,10 +137,8 @@ public class UnitController {
@PutMapping @PutMapping
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public AjaxResult edit(@RequestBody Unit x) { public AjaxResult edit(@RequestBody Unit x) {
Unit byId = unitService.getById(x.getId()); //查询用户表是否存在该用户
if (!byId.getUserName().equals(x.getUserName()) || !byId.getNickName().equals(x.getNickName())) { unitService.validUser(x);
throw new ServiceException("不允许修改单位名称和统一信用代码!");
}
unitService.updateById(x); unitService.updateById(x);
if(!x.getOtherConcat().isEmpty()){ if(!x.getOtherConcat().isEmpty()){
x.getOtherConcat().forEach(y->{ x.getOtherConcat().forEach(y->{
@ -159,7 +164,13 @@ public class UnitController {
public AjaxResult remove(@PathVariable Long id) { public AjaxResult remove(@PathVariable Long id) {
List<String> userNames = unitService.selectByIds(id); List<String> userNames = unitService.selectByIds(id);
//逻辑删除单位和用户 //逻辑删除单位和用户
unitService.deleteUsers(userNames); if(!userNames.isEmpty()){
for (String it : userNames) {
if(it!=null){
unitService.deleteUsers(it);
}
}
}
unitService.deleteUnits(id); unitService.deleteUnits(id);
unitOtherConcatService.deleteByUnitIds(id); unitOtherConcatService.deleteByUnitIds(id);
examineInfoService.deleteByUnitIds(id); examineInfoService.deleteByUnitIds(id);

@ -44,7 +44,7 @@ public interface UnitMapper extends BaseMapper<Unit> {
/** /**
* *
*/ */
void deleteUsers(List<String> userNames); void deleteUsers(@Param("userNames") String userNames);
/** /**
* id * id

@ -50,7 +50,7 @@ public interface UnitService extends IService<Unit> {
/** /**
* *
*/ */
void deleteUsers(List<String> userNames); void deleteUsers(String userNames);
/** /**
* *
*/ */

@ -35,8 +35,6 @@ public class UnitServiceImpl extends ServiceImpl<UnitMapper, Unit> implements Un
*/ */
@Override @Override
public Page<Unit> page(Page<Unit> page, UnitRequest unit) { public Page<Unit> page(Page<Unit> page, UnitRequest unit) {
return baseMapper.selectUnitList(page,unit); return baseMapper.selectUnitList(page,unit);
} }
@ -61,21 +59,24 @@ public class UnitServiceImpl extends ServiceImpl<UnitMapper, Unit> implements Un
/** /**
* *
*/ */
@Override @Override
public void validUser(Unit x) { public void validUser(Unit x) {
SysUser user = new SysUser(); if(x.getUserName()!=null && x.getUserName().length()>6){
user.setUserName(x.getUserName()); SysUser user = new SysUser();
user.setPassword(SecurityUtils.encryptPassword(x.getUserName().substring(x.getUserName().length() - 6))); user.setUserName(x.getUserName());
user.setNickName(x.getNickName()); user.setPassword(SecurityUtils.encryptPassword(x.getUserName().substring(x.getUserName().length() - 6)));
SysUser u = userService.selectUserByUserName(x.getUserName()); user.setNickName(x.getNickName());
if (StringUtils.isNull(u)) { SysUser u = userService.selectUserByUserName(x.getUserName());
userService.insertUser(user); if (StringUtils.isNull(u)) {
Long[] roles = new Long[]{100L}; userService.insertUser(user);
userService.insertUserAuth(user.getUserId(), roles); Long[] roles = new Long[]{100L};
}else { userService.insertUserAuth(user.getUserId(), roles);
throw new ServiceException(x.getUserName() + "'已存在单位!"); }else {
//只修改用户账号,密码,单位名称
userService.updateUserProfile(user);
}
} }
} }
@ -90,7 +91,7 @@ public class UnitServiceImpl extends ServiceImpl<UnitMapper, Unit> implements Un
* *
*/ */
@Override @Override
public void deleteUsers(List<String> userNames) { public void deleteUsers(String userNames) {
baseMapper.deleteUsers(userNames); baseMapper.deleteUsers(userNames);
} }

@ -52,7 +52,7 @@ spring:
# 国际化资源文件路径 # 国际化资源文件路径
basename: i18n/messages basename: i18n/messages
profiles: profiles:
active: test active: druid
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:

@ -28,6 +28,7 @@
and create_time &lt;= #{req.endTime} and create_time &lt;= #{req.endTime}
</if> </if>
</where> </where>
order by create_time desc
</select> </select>
<select id="page1" resultType="com.ruoyi.tc.entity.AssetExport"> <select id="page1" resultType="com.ruoyi.tc.entity.AssetExport">
@ -119,8 +120,8 @@
and a.create_time &lt;= #{req.endTime} and a.create_time &lt;= #{req.endTime}
</if> </if>
</where> </where>
order by create_time desc
</select> </select>
<update id="deleteByUnitIds"> <update id="deleteByUnitIds">
update asset_current update asset_current
set del_flag = '2' set del_flag = '2'

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.tc.mapper.ExamineInfoMapper"> <mapper namespace="com.ruoyi.tc.mapper.ExamineInfoMapper">
<update id="deleteByUnitIds"> <update id="deleteByUnitIds">
update asset_examine_info set del_flag = '2' where unit_id = #{id} update unit_examine_info set del_flag = '2' where unit_id = #{id}
</update> </update>
</mapper> </mapper>

@ -136,9 +136,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
update unit_info set del_flag = '2' where id = #{id} update unit_info set del_flag = '2' where id = #{id}
</update> </update>
<update id="deleteUsers"> <update id="deleteUsers">
update sys_user set del_flag = '2' where user_name in update sys_user set del_flag = '2' where user_name = #{userNames}
<foreach collection="array" item="userNames" open="(" separator="," close=")">
#{userNames}
</foreach>
</update> </update>
</mapper> </mapper>

@ -5,9 +5,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper namespace="com.ruoyi.tc.mapper.UnitOtherConcatMapper"> <mapper namespace="com.ruoyi.tc.mapper.UnitOtherConcatMapper">
<update id="deleteByUnitIds"> <update id="deleteByUnitIds">
update asset_supply_chain set del_flag = '2' where unit_id = #{id} update unit_other_contact set del_flag = '2' where unit_id = #{id}
</update> </update>
<update id="deleteByAssetIds"> <update id="deleteByAssetIds">
update asset_supply_chain set del_flag = '2' where asset_id = #{id} update unit_other_contact set del_flag = '2' where asset_id = #{id}
</update> </update>
</mapper> </mapper>

@ -0,0 +1,45 @@
package com.ruoyi.common.utils;
import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.spec.PKCS8EncodedKeySpec;
/**
* RSA
*
* @author ruoyi
**/
public class RsaUtils
{
// Rsa 私钥
private static final String PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXxtLWRhOIyEhLkxlTbndtzS6RrGsDWV8LOIAEXFCsLZzT20ytAaO4fpXXHah80EwaE4P25Y3+qQBDL8fA5780pSoLDo3Si/qC5KuowNb8F1ncGXSuYzX/3mNMLXF98UW96PvFY198hto8j5snhYtf01WI2L0eZPQFE3Mnh3ZHzos88Jr5vEto+OyHZHa0GRsuRSi33vr1olo8+LA8JkcyS5B6eMdKalYvSiSV6owfwQZfuPoDkD/ghRc8w0owzOSJJGmwgnrkYmYMBudHdldF8LwzNUEEkHrOvk3QXg33Fl8X4lL9jHvbq0K76sDoYMLJPG1D/Ccqk93AU/mdRYJZAgMBAAECggEAG+w3M7aWt25pZoX8fc3v6OJ7s88trOMPSkgtvR+is9p8ZLmOxLFthm67cGUDb1r+9Tkr6QtYcUZ0RugObt3z3mKYdopJ6zdXcidRsW0w4BYHsSd5wO99qsImMIiXvZzawNKRJ0Jd+dHxanzdBYtbFdkSfmepe2MFRb3LTLVuPE1oCTKbzwqPSGWERpkejZJz+Cthc/xp7PWNFtfmEASEuAmYV0tdWC0H6NJqTtg2Stotp4hlk/jTKLoYQW/m3pmnkw1QbVRh1B9mtxTVtGV6HzhiQbuc5HWaUvBm4ysiXjFEtCTpBeDjwvnD1wkDXR1SyVdYiAfDYM2zCCs5OvWPFQKBgQD3MONf6Jn7x6Xo2uwsKwca4HFkfIHpK5TdiFB9p2eCZ4V8JZNPv02fPRldFb56nYVmdNVoo8/z4WG9t6uNoTLDMqTI0wVkrJCufQCI/50XnKITEmLfXOKXkwhekRLi1oho0nEsbaQllFFrlfx4NkcgoW6XL1TW8eRx8JD7EORI9wKBgQCdL3mZ5gumLLhB/RTK5G786jJtztNxQ4jpFtClv25uPJgqsRgSVoLnnTCmLm/yGsHNna/CHbA4mYOYzXiM10WUK1tEqPwYm0nalQAxtXJjNgERKjWWaopZW/f4pCBPV8RG4dk/+13zjPCYTeS4i7J89psHljqoeQoLe4xazLKLLwKBgHgV+f/34gadIQ6UfDOg25zE+JFWo04BbBqLRH8munRxkjmTj5MoXq9DYXUFQToUGGCD1cE2A6p5DaC6/86YRy7pBYDCc1ZLNyZtd7sWYty7rUkSn5Hfb/0u4tv+ImysyCwUQALTaPEQstVPUg2cYMWLZ0xvJAogDVkFA4nU1PJVAoGAEBQ7LDMMHgOVFar95YNYlyad4f22Q2/VIYLj9RCQC1bHehaDj9ypp2e9AkLd0LZL/OyUfhbrX97UR109Z6rdwzpsK6ndn+bCt0lmq68T9HIhyc+3i5t6a4ms5BJl+7fOrDGON61O/wr70ZimPPqNV5siYLRNa8516JbK1L77xKECgYEAyaTui+7B27219nwgoin9AuM0H7B+rzz0GkXmYXzWhxgKB+eBuJbZsrUTOBVkk66j3Ss4cJvQJ9utcFBnS6msEAUCYU6OuInIb/PMv8I7DC7SrrTZpyD9LXKIB4aYtqPrntZSo+75EAHgXNpRYqUwkpZbCuYSIXebno4JOxB1RK8=" +
"CfhCau4K5xqFfYnCDxwN6EfWtl118/RC/H1G6YUH9VZ02hTsIKtcdoz/w3knVDuL/i1uCtKtJDdyejF8osix2IVVA2HNoUPEG+3VH0IJjOoFTZTP76LcuQvgig6pjAtB5+GFPVkkrdxWZc3rn+psCdzYBueVhDRDFatKxfvAQMk90SMNVOLApB8u4aWUdxGju3vOKO5ShBUVutyczTzAOW39hHdzXX5CvGPXNYNv7S55AVAI5ZVdn11dyxgPr6u7n7AuHtc2pvUddHTRM/UczNN5lkpdMvISQy4iHwCw9wGVax3kvRxMzhYiBricSKJWbl4LiAMRV3P15LWkaBwSkw==";
/**
*
*/
public static String decryptByPrivateKey(String decodeString) throws Exception {
// 将传入的Base64编码字符串解码为字节数组
byte[] encryptedBytes = java.util.Base64.getDecoder().decode(decodeString);
// 使用私钥解密
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(org.apache.commons.codec.binary.Base64.decodeBase64(PRIVATE_KEY));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
byte[] decryptedBytes = decrypt(encryptedBytes, privateKey);
// 返回解密后的字符串
return new String(decryptedBytes);
}
/**
*
*/
private static byte[] decrypt(byte[] data, PrivateKey privateKey) throws Exception {
// 获取RSA算法的Cipher实例
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");
// 用私钥初始化Cipher实例设置为解密模式
cipher.init(Cipher.DECRYPT_MODE, privateKey);
// 执行解密操作,返回解密后的字节数组
return cipher.doFinal(data);
}
}

@ -1,6 +1,8 @@
package com.ruoyi.framework.web.service; package com.ruoyi.framework.web.service;
import javax.annotation.Resource; import javax.annotation.Resource;
import com.ruoyi.common.utils.RsaUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.BadCredentialsException; import org.springframework.security.authentication.BadCredentialsException;
@ -63,15 +65,21 @@ public class SysLoginService
*/ */
public String login(String username, String password, String code, String uuid) public String login(String username, String password, String code, String uuid)
{ {
String strP;
try {
strP = RsaUtils.decryptByPrivateKey(password);
} catch (Exception e) {
throw new RuntimeException(e);
}
// 验证码校验 // 验证码校验
validateCaptcha(username, code, uuid); validateCaptcha(username, code, uuid);
// 登录前置校验 // 登录前置校验
loginPreCheck(username, password); loginPreCheck(username, strP);
// 用户验证 // 用户验证
Authentication authentication = null; Authentication authentication = null;
try try
{ {
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, strP);
AuthenticationContextHolder.setContext(authenticationToken); AuthenticationContextHolder.setContext(authenticationToken);
// 该方法会去调用UserDetailsServiceImpl.loadUserByUsername // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername
authentication = authenticationManager.authenticate(authenticationToken); authentication = authenticationManager.authenticate(authenticationToken);

Loading…
Cancel
Save