From 5ad8e86d522ba4ff6e5b9bf945a80adc3b04ccb9 Mon Sep 17 00:00:00 2001 From: du <1725534722@qq.com> Date: Thu, 30 May 2024 14:23:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8D=95=E7=82=B9=E7=99=BB?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/BmsTemplateRecordServiceImpl.java | 38 +++++- .../controller/SingleLoginController.java | 125 +++++++++++++----- .../single/dto/reqponse/UserMainResponse.java | 2 +- .../single/dto/reqponse/UserResponse.java | 2 +- .../src/main/resources/application-druid.yml | 4 +- .../src/main/resources/application.yml | 4 + 6 files changed, 136 insertions(+), 39 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/service/impl/BmsTemplateRecordServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/service/impl/BmsTemplateRecordServiceImpl.java index b896b8c..5e3e1a9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/service/impl/BmsTemplateRecordServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/service/impl/BmsTemplateRecordServiceImpl.java @@ -49,6 +49,7 @@ public class BmsTemplateRecordServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("enterprise_directory", bmsTemplateRecordUpdateDto.getEnterpriseDirectory()); + List isFlag = baseMapper.selectList(queryWrapper); + if(!isFlag.isEmpty()){ + throw new ServiceException("该申报任务标题已经存在"); + } tiTimeChange.getTime(bmsTemplateRecordUpdateDto); - int num = baseMapper.updateById(bmsTemplateRecordUpdateDto); + int num = baseMapper.updateById(bmsTemplateRecordUpdateDto); // 删除企业相关列表 - QueryWrapper queryWrapper = new QueryWrapper<>(); + QueryWrapper queryWrapper1 = new QueryWrapper<>(); queryWrapper.eq("template_record_id", bmsTemplateRecordUpdateDto.getId()); - enterpriseDirectoryService.remove(queryWrapper); - // 新增企业相关列表 + enterpriseDirectoryService.remove(queryWrapper1); + QueryWrapper queryWrapper2 = new QueryWrapper<>(); + queryWrapper.eq("template_record_id", bmsTemplateRecordUpdateDto.getId()); + bmsDeclarationRecordsService.remove(queryWrapper2); + + //前端excel企业名录集合 List enterpriseDirectoryList = bmsTemplateRecordUpdateDto .getEnterpriseDirectoryList(); + //要添加的在线申报记录 + List drlist = new ArrayList<>(); + //如果前端部分企业名录集合为空 if (null != enterpriseDirectoryList && enterpriseDirectoryList.size() > 0) { enterpriseDirectoryList.forEach(x -> { + getDeclarationRecordsList(bmsTemplateRecordUpdateDto, drlist, x.getCreditCode(), bmsTemplateRecordUpdateDto.getTemplateId()); x.setTemplateRecordId(bmsTemplateRecordUpdateDto.getId()); }); - enterpriseDirectoryService.saveOrUpdateBatch(enterpriseDirectoryList); + enterpriseDirectoryService.saveBatch(enterpriseDirectoryList); + } else { + List list = iBmsEnterpriseBasicInfoService.list(); + List copyList = new ArrayList<>(); + for (BmsEnterpriseBasicInfo items : list) { + BmsEnterpriseDirectory bms = new BmsEnterpriseDirectory(); + bms.setTemplateRecordId(bmsTemplateRecordUpdateDto.getId()); + bms.setEnterpriseName(items.getEnterpriseName()); + bms.setCreditCode(items.getCreditCode()); + copyList.add(bms); + getDeclarationRecordsList(bmsTemplateRecordUpdateDto, drlist, items.getCreditCode(), bmsTemplateRecordUpdateDto.getTemplateId()); + } + enterpriseDirectoryService.saveBatch(copyList); } + iBmsDeclarationRecordsService.saveBatch(drlist); return num; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/controller/SingleLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/controller/SingleLoginController.java index 27138ef..6025eb0 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/controller/SingleLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/controller/SingleLoginController.java @@ -5,27 +5,29 @@ package com.ruoyi.jjh.declaration.single.controller; * @since 2024/5/22 15:50 */ -import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import com.alibaba.fastjson2.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.core.domain.model.RegisterBody; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.user.UserPasswordNotMatchException; import com.ruoyi.common.utils.MessageUtils; +import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.security.context.AuthenticationContextHolder; -import com.ruoyi.framework.web.service.SysRegisterService; import com.ruoyi.framework.web.service.TokenService; +import com.ruoyi.jjh.declaration.entity.BmsEnterpriseBasicInfo; +import com.ruoyi.jjh.declaration.mapper.BmsEnterpriseBasicInfoMapper; import com.ruoyi.jjh.declaration.single.dto.reqponse.UserMainResponse; import com.ruoyi.jjh.declaration.single.dto.reqponse.UserResponse; +import com.ruoyi.system.service.ISysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -45,6 +47,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.Base64; +import java.util.Map; import java.util.concurrent.TimeUnit; /** @@ -62,6 +65,13 @@ public class SingleLoginController { @Value("${infoUrl}") private String infoUrl; + + @Value("${logoutUrl}") + private String logoutUrl; + + @Value("${returnUrl}") + private String returnUrl; + @Resource private RedisCache redisCache; @@ -72,9 +82,13 @@ public class SingleLoginController { @Resource private TokenService tokenService; + @Resource + private BmsEnterpriseBasicInfoMapper bmsEnterpriseBasicInfoMapper; + @Resource - private SysRegisterService sysRegisterService; + private ISysUserService userService; + /** * 统一登陆 * @@ -83,13 +97,12 @@ public class SingleLoginController { @ApiOperation("统一登陆") @GetMapping("/login") public void login(HttpServletResponse response) throws IOException { - String clientUrl = "http://192.168.0.111:80/system/singlelogin/getInfo"; //变成参数模式,appid 用于校验提交的来源地址,生产环境会校验,试用环境暂不校验 - String scUrl = "clientUrl=" + URLEncoder.encode(clientUrl, "UTF-8") + "&appid=b40b40e3-f188-4e00-b67a6ec5701ce02b"; + String scUrl = "clientUrl=" + URLEncoder.encode(returnUrl, "UTF-8") + "?appid=b40b40e3-f188-4e00-b67a6ec5701ce02b"; //加密后的客户端地址 scUrl = Base64.getEncoder().encodeToString(scUrl.getBytes()); //最终跳转地址 - String jumpurl = url + "&scUrl=" + URLEncoder.encode(scUrl, "UTF-8"); + String jumpurl = url + "?scUrl=" + URLEncoder.encode(scUrl, "UTF-8"); // 添加请求头 response.setHeader("Content-Type", "application/json"); response.setHeader("X-Requested-With", "XMLHttpRequest"); @@ -116,54 +129,104 @@ public class SingleLoginController { responseBody = response.body(); JSONObject jsonObj = JSONUtil.parseObj(responseBody); JSONObject dataObj = jsonObj.getJSONObject("data"); - JSONObject mainobj = dataObj.getJSONObject("mainbody"); - UserResponse res = JSONUtil.toBean(dataObj, UserResponse.class); - UserMainResponse req = JSONUtil.toBean(mainobj, UserMainResponse.class); - // 将用户信息存储到Redis中 - String key = "user:" + clientToken; // 设置过期时间(可选) int expirationSeconds = 24 * 60; - // 设置过期时间为8小时 - redisCache.setCacheObject(key, res, expirationSeconds, TimeUnit.MINUTES); - String token = singleLogin(res.getUserid()); - res.setToken(token); - res.setMain(req); - return AjaxResult.success(res); + // 将用户信息存储到Redis中 + String key = "user:" + clientToken; + //判断是法人用户 + if("ep".equals(dataObj.get("usertype"))){ + JSONObject mainobj = dataObj.getJSONObject("mainbody"); + UserResponse res = JSONUtil.toBean(dataObj, UserResponse.class); + UserMainResponse req = JSONUtil.toBean(mainobj, UserMainResponse.class); + //存储到企业信息库 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("credit_code", req.getUscc()); + BmsEnterpriseBasicInfo bmsEnterpriseBasicInfo = bmsEnterpriseBasicInfoMapper.selectOne(queryWrapper); + BmsEnterpriseBasicInfo bms = new BmsEnterpriseBasicInfo(); + Long id; + if (bmsEnterpriseBasicInfo == null) { + bms.setCreditCode(req.getUscc()); + bms.setEnterpriseName(req.getEpname()); + bms.setIsDeleted(0L); + bmsEnterpriseBasicInfoMapper.insert(bms); + id = bms.getId(); + }else { + id = bmsEnterpriseBasicInfo.getId(); + } + // 设置过期时间为8小时 + String token = singleLogin(req.getUscc(),req.getEpname(),id); + res.setToken(token); + res.setMain(req); + redisCache.setCacheObject(key, res, expirationSeconds, TimeUnit.MINUTES); + + return AjaxResult.success(res); + }else { + log.error(response.body()); + throw new ServiceException("未知异常请联系管理员"); + } } else { log.error(response.body()); throw new ServiceException("未知异常请联系管理员"); } + } + -} + @ApiOperation(value = "退出登录") + @GetMapping("/enterpriseLogout") + public AjaxResult enterpriseLogout(@RequestParam("clienttoken") String clienttoken) { + String url = logoutUrl + "?clienttoken=" + clienttoken; + HttpResponse execute = HttpUtil.createGet(url).execute(); + String str; + // 获取响应状态码 + int statusCode = execute.getStatus(); + if(statusCode==200){ + str = "退出成功"; + }else { + str = "退出失败"; + } + return AjaxResult.success(str); + } - private String singleLogin(String userId) { + private String singleLogin(String userName,String nickName,Long id) { // 用户验证 Authentication authentication; try { - RegisterBody registerBody=new RegisterBody(); - registerBody.setValue(String.valueOf(1)); - registerBody.setUsername(userId); - registerBody.setPassword("admin123"); - sysRegisterService.register(registerBody); + SysUser user = new SysUser(); + user.setUserName(userName); + user.setNickName(nickName); + user.setPassword("admin123"); + Long[] roles = new Long[1]; + roles[0]=101L; + user.setRoleIds(roles); + user.setStatus("0"); + user.setUserType("01"); + user.setEnterpriseId(id); + //如果用户名也就是信用代码没有重复的就新增用户 + if (userService.checkUserNameUnique(user)) + { + user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); + userService.insertUser(user); + } //新增user账号密码 - UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userId, "admin123"); + UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(userName, "admin123"); AuthenticationContextHolder.setContext(authenticationToken); // 该方法会去调用UserDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); } catch (Exception e) { if (e instanceof BadCredentialsException) { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(userId, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); } else { - AsyncManager.me().execute(AsyncFactory.recordLogininfor(userId, Constants.LOGIN_FAIL, e.getMessage())); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_FAIL, e.getMessage())); throw new ServiceException(e.getMessage()); } } finally { AuthenticationContextHolder.clearContext(); } - AsyncManager.me().execute(AsyncFactory.recordLogininfor(userId, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); + AsyncManager.me().execute(AsyncFactory.recordLogininfor(userName, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); // 生成token - return tokenService.createToken(loginUser); + Map token = tokenService.createToken(loginUser); + return String.valueOf(token.get("access_token")); } } \ No newline at end of file diff --git a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserMainResponse.java b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserMainResponse.java index 51b7f23..342e74e 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserMainResponse.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserMainResponse.java @@ -9,7 +9,7 @@ import lombok.Data; * @since 2024/5/27 14:37 */ @Data -@ApiModel("企业机构代码") +@ApiModel("法人用户机构代码") public class UserMainResponse { /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserResponse.java b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserResponse.java index ae6145c..8986d02 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserResponse.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/jjh/declaration/single/dto/reqponse/UserResponse.java @@ -12,7 +12,7 @@ import java.io.Serializable; * @author dong * @since 2024/5/27 10:55 */ -@ApiModel(value = "单点登录用户信息响应类") +@ApiModel(value = "法人用户") @Data public class UserResponse implements Serializable { private static final long serialVersionUID = -5117946174934452302L; diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 71a9323..8c1a615 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -60,4 +60,6 @@ spring: merge-sql: true wall: config: - multi-statement-allow: true \ No newline at end of file + multi-statement-allow: true +#自己客户端地址 +returnUrl: http://39.101.188.84:9999/demo/JinJiHu/#/login \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 3445d4a..57f0c63 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -130,3 +130,7 @@ xss: url: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogin #用户信息url infoUrl: https://qytt.sipac.gov.cn/api/usercenter/User/getInfo +#退出登录url +logoutUrl: https://qytt.sipac.gov.cn/api/usercenter/User/ssoLogOut + +