diff --git a/jwtech-admin/src/main/java/com/kms/config/CallBackRequest.java b/jwtech-admin/src/main/java/com/kms/config/CallBackRequest.java new file mode 100644 index 00000000..25d31ec3 --- /dev/null +++ b/jwtech-admin/src/main/java/com/kms/config/CallBackRequest.java @@ -0,0 +1,11 @@ +package com.kms.config; + +import lombok.Data; + +@Data +public class CallBackRequest { + + private String type; + private String content; + +} diff --git a/jwtech-admin/src/main/java/com/kms/config/CallType.java b/jwtech-admin/src/main/java/com/kms/config/CallType.java new file mode 100644 index 00000000..8d972a3c --- /dev/null +++ b/jwtech-admin/src/main/java/com/kms/config/CallType.java @@ -0,0 +1,19 @@ +package com.kms.config; + +import lombok.Data; + +@Data +public class CallType { + + public final static String USER_ADD = "USER_ADD"; + public final static String USER_UPDATE = "USER_UPDATE"; + public static String USER_DELETE = "USER_DELETE"; + public static String ORG_UPDATE = "ORG_UPDATE"; + public static String ORG_ADD = "ORG_ADD"; + public static String ROLE_ADD = "ROLE_ADD"; + public static String ROLE_UPDATE = "ROLE_UPDATE"; + public static String ROLE_DELETE = "ROLE_DELETE"; + public static String ROLE_USER_BIND = "ROLE_USER_BIND";//用户角色关系绑定 + public static String ROLE_USER_UNBIND = "ROLE_USER_UNBIND";//用户角色关系解绑 + +} diff --git a/jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java b/jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java index a8b269f3..87215f28 100644 --- a/jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java +++ b/jwtech-admin/src/main/java/com/kms/config/WaterRequestUtil.java @@ -49,6 +49,8 @@ public class WaterRequestUtil { public String authUserAppsecret; @Value("${water.systemCode}") public String systemCode; + @Value("${water.systemName}") + public String systemName; //获取部门信息 @Value("${water.orgUrl}") @@ -67,6 +69,31 @@ public class WaterRequestUtil { @Value("${water.roleAppsecret}") public String roleAppsecret; + + + @Value("${water.systemUrl}") + public String systemUrl; + @Value("${water.systemServiceId}") + public String systemServiceId; + @Value("${water.systemAppsecret}") + public String systemAppsecret; + + + @Value("${water.usersUrl}") + public String usersUrl; + @Value("${water.usersServiceId}") + public String usersServiceId; + @Value("${water.usersAppsecret}") + public String usersAppsecret; + + + @Value("${water.resourceUrl}") + public String resourceUrl; + @Value("${water.resourceServiceId}") + public String resourceServiceId; + @Value("${water.resourceAppsecret}") + public String resourceAppsecret; + /** * 设置 * @param httpRequest @@ -104,6 +131,49 @@ public class WaterRequestUtil { return httpRequest; } + /** + * 业务系统 + * @return + */ + public WaterResult systemPage(){ + log.info("查询业务系统-----------------"); + HttpRequest post = createPost(systemUrl, systemServiceId, systemAppsecret); + HashMap query = new HashMap<>(); + query.put("code",systemCode); + query.put("name",systemName); + HttpResponse response = post.body(JSONObject.toJSONString(query)) + .execute(); + String body = response.body(); + WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); + isSuccess(waterResult); + //{ + // "msg": "操作成功", + // "code": 200, + // "data": { + // "code": 200, + // "message": "成功", + // "success": true, + // "data": "[{\"contractor\":\"数字广东网络建设有限公司\",\"code\":\"sgc-jg\",\"buildingLinkman\":\"张三\",\"contractorId\":\"1647768587123822593\",\"displayMobileFlag\":\"2\",\"manageUrl\":\"http://19.25.74.73:8001/\",\"type\":\"2\",\"building\":\"广东省水利厅\",\"developerId\":\"1732646766216482817\",\"developerPhone\":\"13333333333\",\"contractorPhone\":\"17324499124\",\"levelText\":\"省级\",\"buildingPhone\":\"13333333333\",\"id\":\"1732648267643097090\",\"manageImg\":\"{}\",\"area\":\"440000\",\"level\":\"1\",\"displayFlag\":\"1\",\"buildingId\":\"202206101718001\",\"createTime\":\"2023-12-07 06:28:33\",\"developerLinkman\":\"张三\",\"name\":\"水工程应用-水利工程建设管理模块\",\"publicUrl\":\"http://10.169.133.130:8001\",\"developer\":\"中通服建设有限公司\",\"contractorLinkman\":\"徐勇\",\"status\":\"1\"}]", + // "timestamp": "1710140017747" + // } + //} + return waterResult; + } + + +// public static void main(String[] args) { +// HttpRequest post = createPost("http://19.25.35.204:31190/data_center/gateway/api/usrc/open-api/system/list", "DGSP_1606199297580052481", "b26a1c7b95744369c00f65b7a0790b6"); +// HashMap query = new HashMap<>(); +// query.put("code","sgc-jg"); +// query.put("name","水工程应用-水利工程建设管理模块"); +// HttpResponse response = post.body(JSONObject.toJSONString(query)) +// .execute(); +// String body = response.body(); +// WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); +// +// } + + /** * 单点登录 * @return @@ -147,6 +217,33 @@ public class WaterRequestUtil { String body = response.body(); WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); + //{ + // "msg": "操作成功", + // "code": 200, + // "data": { + // "code": 200, + // "message": "成功", + // "success": true, + // "data": "{\"total\":4,\"size\":100,\"records\":[{\"parent\":\"202206101718001\",\"source\":\"tif\",\"type\":\"GA\",\"levelText\":\"省级\",\"id\":\"1646339896680984578\",\"area\":\"440000\",\"level\":\"1\",\"sourceText\":\"统一身份认证\",\"categoryText\":\"单位\",\"name\":\"水文局\",\"treeCode\":\"00030-00016\",\"status\":\"1\",\"code\":\"SJ0013\",\"orgId\":\"1646339896680984578\",\"tifld\":\"1232236\",\"seq\":18,\"areaText\":\"广东省\",\"updateTime\":\"2024-02-28 02:45:24\",\"createTime\":\"2023-04-13 02:29:54\",\"statusText\":\"启用\",\"category\":\"1\",\"crossParent\":\"\"},{\"parent\":\"0\",\"type\":\"FIRM\",\"levelText\":\"省级\",\"id\":\"1732646766216482817\",\"area\":\"440000\",\"level\":\"1\",\"categoryText\":\"单位\",\"name\":\"中通服建设有限公司\",\"treeCode\":\"00028\",\"status\":\"1\",\"code\":\"914400001903268010\",\"orgId\":\"1732646766216482817\",\"seq\":84,\"areaText\":\"广东省\",\"updateTime\":\"2023-12-11 18:05:29\",\"createTime\":\"2023-12-07 06:22:35\",\"statusText\":\"启用\",\"category\":\"1\"},{\"parent\":\"0\",\"natureText\":\"\",\"source\":\"input\",\"type\":\"GA\",\"levelText\":\"省级\",\"id\":\"202206101718001\",\"area\":\"440000\",\"level\":\"1\",\"sourceText\":\"手动创建\",\"categoryText\":\"单位\",\"name\":\"广东省水利厅\",\"treeCode\":\"00030\",\"status\":\"1\",\"code\":\"006941135\",\"abbrName\":\"水利厅\",\"uscc\":\"114400000069411352\",\"orgId\":\"202206101718001\",\"tifld\":\"114400000069411352\",\"seq\":67,\"nature\":\"1\",\"areaText\":\"广东省\",\"updateTime\":\"2024-02-28 02:45:24\",\"createTime\":\"2022-12-14 10:02:37\",\"statusText\":\"启用\",\"category\":\"1\",\"remarks\":\"默认机构,不可删除\"},{\"parent\":\"202206101718001\",\"source\":\"tif\",\"type\":\"GA\",\"deptTags\":\"noEntity\",\"levelText\":\"省级\",\"id\":\"1646339701234806785\",\"area\":\"440000\",\"level\":\"1\",\"sourceText\":\"统一身份认证\",\"categoryText\":\"部门\",\"name\":\"建设处\",\"treeCode\":\"00030-00044\",\"status\":\"1\",\"code\":\"SJ0001-024\",\"orgId\":\"1646339701234806785\",\"seq\":114,\"areaText\":\"广东省\",\"updateTime\":\"2024-01-08 18:47:31\",\"deptTagsText\":\"\",\"createTime\":\"2023-04-13 02:29:07\",\"statusText\":\"启用\",\"category\":\"2\",\"crossParent\":\"\"}],\"page\":1}", + // "timestamp": "1710140677104" + // } + //} + return waterResult; + } + + + public WaterResult getUserResource(String authorization){ + log.info("--------请求获取门户角色信息,请求地址为:"+resourceUrl); + HashMap hashMap = new HashMap<>(); + hashMap.put("systemCode",systemCode); + HttpRequest get = createPost(resourceUrl+"?systemCode="+systemCode,resourceServiceId,resourceAppsecret); + get.header("Authorization",authorization); + HttpResponse response = get + .execute(); + String body = response.body(); + WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); + isSuccess(waterResult); + //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} return waterResult; } @@ -163,12 +260,31 @@ public class WaterRequestUtil { String body = response.body(); WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); isSuccess(waterResult); + //{\"total\":1,\"size\":100,\"records\":[{\"area\":\"440000\",\"systemList\":[{\"area\":\"440000\",\"code\":\"sgc-jg\",\"name\":\"水工程应用-水利工程建设管理模块\",\"id\":\"1732648267643097090\"}],\"code\":\"YW00013\",\"level\":\"1d\",\"dataConfig\":\"none\",\"type\":\"BUSINESS\",\"posts\":[],\"users\":[{\"id\":\"20231225000006\"},{\"id\":\"20240119000002\"}],\"name\":\"水利工程应用-水利工程建设管理模块角色\",\"id\":\"20231213000001\",\"category\":\"BUSINESS\",\"businesses\":[{\"parent\":\"1762458920822599682\",\"businessCode\":\"YWSLGCJSGL0008\",\"parentName\":\"水利工程建设管理\",\"businessName\":\"水利工程建设管理\",\"description\":\"\",\"id\":\"1705128209926942721\",\"delFlag\":0}],\"status\":\"1\"}],\"page\":1} + return waterResult; + } + + + public WaterResult usersPage(){ + log.info("--------请求获取门户用户信息,请求地址为:"+usersUrl); + HashMap hashMap = new HashMap<>(); + hashMap.put("page",1); + hashMap.put("size",100); + hashMap.put("systemCode",systemCode); + HttpRequest get = createPost(usersUrl,usersServiceId,usersAppsecret); + HttpResponse response = get.body(JSONObject.toJSONString(hashMap)) + .execute(); + String body = response.body(); + WaterResult waterResult = JSONObject.parseObject(body, WaterResult.class); + isSuccess(waterResult); return waterResult; } + + private void isSuccess(WaterResult waterResult){ if(waterResult==null){ throw new CustomException("请求异常"); diff --git a/jwtech-admin/src/main/java/com/kms/config/WaterResult.java b/jwtech-admin/src/main/java/com/kms/config/WaterResult.java index c2639bec..09651119 100644 --- a/jwtech-admin/src/main/java/com/kms/config/WaterResult.java +++ b/jwtech-admin/src/main/java/com/kms/config/WaterResult.java @@ -2,9 +2,11 @@ package com.kms.config; import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data @AllArgsConstructor +@NoArgsConstructor public class WaterResult { private int code; @@ -12,4 +14,14 @@ public class WaterResult { private Boolean success; private String data; private String timestamp; + + + public static WaterResult success(){ + WaterResult waterResult = new WaterResult(); + waterResult.setCode(200); + waterResult.setSuccess(true); + waterResult.setTimestamp(String.valueOf(System.currentTimeMillis())); + waterResult.setMessage("发布成功"); + return waterResult; + } } diff --git a/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java b/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java index b020c2f2..4ba9b669 100644 --- a/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java +++ b/jwtech-admin/src/main/java/com/kms/config/scheduled/WaterScheduled.java @@ -1,15 +1,21 @@ package com.kms.config.scheduled; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.jianwei.common.constant.UserConstants; import com.jianwei.common.core.domain.entity.SysDept; import com.jianwei.common.core.domain.entity.SysRole; +import com.jianwei.common.core.domain.entity.SysUser; import com.jianwei.common.utils.password.MD5Util; +import com.jianwei.common.utils.password.PasswordUtil; +import com.jianwei.common.utils.uuid.IdUtils; import com.kms.common.utils.BaseEntityUtils; import com.kms.config.WaterRequestUtil; import com.kms.config.WaterResult; import com.kms.config.singleDomain.SingleOrg; import com.kms.config.singleDomain.SingleRole; +import com.kms.config.singleDomain.SingleUser; import com.kms.system.service.SysDeptService; import com.kms.system.service.SysRoleService; import com.kms.system.service.SysUserService; @@ -21,8 +27,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.Scheduled; +import java.util.Arrays; import java.util.Date; import java.util.List; +import java.util.stream.Collectors; @Configuration public class WaterScheduled { @@ -42,20 +50,68 @@ public class WaterScheduled { SysRoleService roleService; - /* @Scheduled + @Scheduled(cron = "0 0/1 * * * ?") public void userScheduled(){ - - - - - - }*/ + log.info("----------------------开始执行用户同步功能----------------------------"); + WaterResult waterResult = waterRequestUtil.usersPage(); + String data = waterResult.getData(); + String records = JSONObject.parseObject(data).getString("records"); + List singleUserList = JSONObject.parseArray(records, SingleUser.class); + for (SingleUser singleUser : singleUserList) { + String id = singleUser.getId(); + QueryWrapper query = Wrappers.query(); + query.eq("single_user_id",id); + SysUser user = userService.getOne(query,false); + Boolean flag = (user==null); + if(flag){ + user = new SysUser(); + user.preInsert(); + user.setCreateUid("1"); + user.setUpdateUid("1"); + user.setRemark("门户定时任务数据添加"); + user.setId(IdUtils.fastSimpleUUID()); + user.setIsPcUser("0"); + user.setDelFlag("0"); + user.setMd5(MD5Util.MD5Encode(singleUser.toString(), "utf-8")); + }else { + String md = MD5Util.MD5Encode(singleUser.toString(), "utf-8"); + if(user.getMd5()!=null&&md.equals(user.getMd5())){ + continue; + } + } + SingleOrg org = singleUser.getOrg(); + if(org!=null){ + user.setDeptId(org.getId()); + } + user.setPhonenumber(singleUser.getPhone()); + user.setNickName(singleUser.getName()); + user.setUserName(singleUser.getUsername()); + user.setSingleUserSource(singleUser.getSource()); + user.setSingleUserType(singleUser.getType()); + user.setSingleUserId(singleUser.getId()); + user.setPassword(PasswordUtil.entryptPassword(singleUser.getUsername())); + user.setIsFirst(singleUser.getFirstSignIn().toString()); + if(singleUser.getStatus()==null||singleUser.getStatus().equals("1")){ + user.setStatus("0"); + }else { + user.setStatus("1"); + } + List collect = singleUser.getRoleList().stream().map(singleRole -> singleRole.getId()).collect(Collectors.toList()); + user.setRoleIds(collect.toArray(new String[collect.size()])); + if(flag){ + userService.singleInsertUser(user); + }else { + userService.updateUser(user); + } + } + } /** * */ -// @Scheduled(cron = "0 0 0 ? * ? ") 每天 + @Scheduled(cron = "0 0/1 * * * ? ") public void orgScheduled(){ + log.info("----------------------开始执行部门同步功能----------------------------"); WaterResult waterResult = waterRequestUtil.getOrgPage(); String data = waterResult.getData(); String records = JSONObject.parseObject(data).getString("records"); @@ -69,12 +125,17 @@ public class WaterScheduled { continue; } }else { + dept = new SysDept(); + dept.setCreateUid("1"); + dept.setUpdateUid("1"); + dept.setRemark("门户定时任务数据添加"); dept.setIsDownload("0"); dept.setIsComment("0"); dept.setDelFlag("0"); dept.setCreateTime(new Date()); + String md = MD5Util.MD5Encode(singleOrg.toString(), "utf-8"); + dept.setMd5(md); } - dept = new SysDept(); dept.setMd5(MD5Util.MD5Encode(singleOrg.toString(), "utf-8")); BeanUtils.copyProperties(singleOrg,dept); dept.setXzqhId(singleOrg.getArea()); @@ -98,15 +159,16 @@ public class WaterScheduled { log.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); } if(flag){ - deptService.updateDept(dept); + deptService.updateById(dept); }else { - deptService.insertDept(dept); + deptService.save(dept); } } } -// @Scheduled(cron = "0/10 * * * * ? ") 10秒 - public void roeScheduled(){ + @Scheduled(cron = "0 0/1 * * * ?") + public void roleScheduled(){ + log.info("----------------------开始执行角色同步功能----------------------------"); WaterResult rolePage = waterRequestUtil.getRolePage(); String data = rolePage.getData(); String records = JSONObject.parseObject(data).getString("records"); @@ -123,19 +185,21 @@ public class WaterScheduled { sysRole.setRoleName(singleRole.getName()); sysRole.setRoleKey(singleRole.getCode()); sysRole.setUpdateTime(new Date()); - roleService.updateRole(sysRole); + roleService.updateById(sysRole); }else { sysRole = new SysRole(); + sysRole.preInsert(); sysRole.setStatus("0"); sysRole.setDelFlag("0"); sysRole.setRoleSort("0"); - sysRole.setCreateTime(new Date()); + sysRole.setCreateUid("1"); + sysRole.setUpdateUid("1"); + sysRole.setRemark("门户定时任务数据添加"); sysRole.setMd5(MD5Util.MD5Encode(singleRole.toString(), "utf-8")); BeanUtils.copyProperties(singleRole,sysRole); sysRole.setRoleName(singleRole.getName()); sysRole.setRoleKey(singleRole.getCode()); - sysRole.setUpdateTime(new Date()); - roleService.insertRole(sysRole); + roleService.save(sysRole); } } } diff --git a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java new file mode 100644 index 00000000..da11b394 --- /dev/null +++ b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleMenu.java @@ -0,0 +1,24 @@ +package com.kms.config.singleDomain; + +import lombok.Data; + +import java.util.List; + +@Data +public class SingleMenu { + + private String systemId; + private String code; //菜单标识 + private String visible; //是否可见 1可见 0不可见 + private String icon; //菜单图标 + private String pid; + private String type; + private String path; //路径 + private String name; //资源名称 + private String id; + private String iframe;//是否外链 + private Integer seq; //排序 + private String stats; //状态 1启用 0停用 + private List children; + +} diff --git a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleRole.java b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleRole.java index 78cfebaf..984317f6 100644 --- a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleRole.java +++ b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleRole.java @@ -21,4 +21,5 @@ public class SingleRole { private String name; private String businesses; + } diff --git a/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleUser.java b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleUser.java new file mode 100644 index 00000000..f0d13d8a --- /dev/null +++ b/jwtech-admin/src/main/java/com/kms/config/singleDomain/SingleUser.java @@ -0,0 +1,26 @@ +package com.kms.config.singleDomain; + +import lombok.Data; + +import java.util.List; + +@Data +public class SingleUser { + + private String id; + private String source; + private String type; + private Long seq; + private Integer firstSignIn; + private SingleOrg org; + private Boolean isPartTimeUser; + private List roleList; + private List deptList; + private List orgs; + private String phone; + private String name; + private String status; + private String username; + + +} diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/system/CmsCallBackController.java b/jwtech-admin/src/main/java/com/kms/web/controller/system/CmsCallBackController.java new file mode 100644 index 00000000..1faeb4dd --- /dev/null +++ b/jwtech-admin/src/main/java/com/kms/web/controller/system/CmsCallBackController.java @@ -0,0 +1,249 @@ +package com.kms.web.controller.system; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.jianwei.common.core.domain.AjaxResult; +import com.jianwei.common.core.domain.entity.SysDept; +import com.jianwei.common.core.domain.entity.SysRole; +import com.jianwei.common.core.domain.entity.SysUser; +import com.jianwei.common.exception.CustomException; +import com.jianwei.common.utils.password.MD5Util; +import com.jianwei.common.utils.password.PasswordUtil; +import com.jianwei.common.utils.uuid.IdUtils; +import com.kms.config.CallBackRequest; +import com.kms.config.CallType; +import com.kms.config.WaterResult; +import com.kms.config.scheduled.WaterScheduled; +import com.kms.config.singleDomain.SingleOrg; +import com.kms.config.singleDomain.SingleRole; +import com.kms.config.singleDomain.SingleUser; +import com.kms.system.domain.SysUserRole; +import com.kms.system.service.SysDeptService; +import com.kms.system.service.SysRoleService; +import com.kms.system.service.SysUserRoleService; +import com.kms.system.service.SysUserService; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.Arrays; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.stream.Collectors; + +@RequestMapping("/callBack") +@Controller +public class CmsCallBackController { + + @Autowired + SysUserService userService; + + @Autowired + SysDeptService deptService; + + @Autowired + SysRoleService roleService; + + @Autowired + SysUserRoleService userRoleService; + + + private static final Logger log = LoggerFactory.getLogger(CmsCallBackController.class); + + @PostMapping("/notify") + public WaterResult callBack(@RequestBody CallBackRequest callBackRequest){ + log.info("--------开启同步请求--------------,时间:{}",new Date()); + log.info("发起同步请求的参数为:{}",callBackRequest); + String type = callBackRequest.getType(); + String content = callBackRequest.getContent(); + if(type.equals(CallType.USER_ADD)){ + SingleUser singleUser = JSONObject.parseObject(content, SingleUser.class); + QueryWrapper query = Wrappers.query(); + query.eq("single_user_id",singleUser.getId()); + SysUser user = userService.getOne(query,false); + if(user!=null){ + throw new CustomException("该用户已存在,无法添加"); + } + user = new SysUser(); + user.preInsert(); + user.setCreateUid("1"); + user.setUpdateUid("1"); + user.setRemark("门户定时任务数据添加"); + user.setId(IdUtils.fastSimpleUUID()); + user.setIsPcUser("0"); + user.setDelFlag("0"); + user.setPhonenumber(singleUser.getPhone()); + user.setNickName(singleUser.getName()); + user.setUserName(singleUser.getUsername()); + user.setSingleUserSource(singleUser.getSource()); + user.setSingleUserType(singleUser.getType()); + user.setSingleUserId(singleUser.getId()); + user.setPassword(PasswordUtil.entryptPassword(singleUser.getUsername())); + user.setIsFirst(singleUser.getFirstSignIn().toString()); + if(singleUser.getStatus()==null||singleUser.getStatus().equals("1")){ + user.setStatus("0"); + }else { + user.setStatus("1"); + } + List collect = singleUser.getRoleList().stream().map(singleRole -> singleRole.getId()).collect(Collectors.toList()); + user.setRoleIds(collect.toArray(new String[collect.size()])); + userService.singleInsertUser(user); + }else if(type.equals(CallType.USER_UPDATE)){ + SingleUser singleUser = JSONObject.parseObject(content, SingleUser.class); + QueryWrapper query = Wrappers.query(); + query.eq("single_user_id",singleUser.getId()); + SysUser user = userService.getOne(query,false); + if(user==null){ + throw new CustomException("该用户不存在,无法修改"); + } + SingleOrg org = singleUser.getOrg(); + if(org!=null){ + user.setDeptId(org.getId()); + } + user.setPhonenumber(singleUser.getPhone()); + user.setNickName(singleUser.getName()); + user.setUserName(singleUser.getUsername()); + user.setSingleUserSource(singleUser.getSource()); + user.setSingleUserType(singleUser.getType()); + user.setSingleUserId(singleUser.getId()); + user.setPassword(PasswordUtil.entryptPassword(singleUser.getUsername())); + user.setIsFirst(singleUser.getFirstSignIn().toString()); + if(singleUser.getStatus()==null||singleUser.getStatus().equals("1")){ + user.setStatus("0"); + }else { + user.setStatus("1"); + } + List collect = singleUser.getRoleList().stream().map(singleRole -> singleRole.getId()).collect(Collectors.toList()); + user.setRoleIds(collect.toArray(new String[collect.size()])); + userService.singleInsertUser(user); + }else if(type.equals(CallType.USER_DELETE)){ + SingleUser singleUser = JSONObject.parseObject(content, SingleUser.class); + QueryWrapper query = Wrappers.query(); + query.eq("single_user_id",singleUser.getId()); + SysUser one = userService.getOne(query, false); + if(one==null){ + throw new CustomException("该用户不存在,无法删除"); + } + userService.deleteUserById(one.getId()); + }else if(type.equals(CallType.ORG_ADD)){ + SingleOrg singleOrg = JSONObject.parseObject(content, SingleOrg.class); + SysDept dept = deptService.getById(singleOrg.getId()); + if(dept==null) { + dept = new SysDept(); + dept.setIsDownload("0"); + dept.setIsComment("0"); + dept.setDelFlag("0"); + dept.setCreateTime(new Date()); + BeanUtils.copyProperties(singleOrg,dept); + dept.setXzqhId(singleOrg.getArea()); + dept.setXzqhName(singleOrg.getAreaText()); + dept.setSingleCode(singleOrg.getCode()); + dept.setSingleSeq(singleOrg.getSeq()); + dept.setSingleType(singleOrg.getType()); + dept.setDeptName(singleOrg.getName()); + dept.setParentId(singleOrg.getParent()); + dept.setLeader(singleOrg.getDutyPerson()); + dept.setName(singleOrg.getName()); + dept.setAdminName(singleOrg.getName()); + dept.setUpdateTime(new Date()); + if(singleOrg.getStatus()==null||singleOrg.getStatus().equals("1")){ + dept.setStatus("0"); + }else { + dept.setStatus("1"); + } + deptService.save(dept); + } + }else if(type.equals(CallType.ORG_UPDATE)){ + SingleOrg singleOrg = JSONObject.parseObject(content, SingleOrg.class); + SysDept dept = deptService.getById(singleOrg.getId()); + if(dept!=null) { + BeanUtils.copyProperties(singleOrg, dept); + dept.setXzqhId(singleOrg.getArea()); + dept.setXzqhName(singleOrg.getAreaText()); + dept.setSingleCode(singleOrg.getCode()); + dept.setSingleSeq(singleOrg.getSeq()); + dept.setSingleType(singleOrg.getType()); + dept.setDeptName(singleOrg.getName()); + dept.setParentId(singleOrg.getParent()); + dept.setLeader(singleOrg.getDutyPerson()); + dept.setName(singleOrg.getName()); + dept.setAdminName(singleOrg.getName()); + dept.setUpdateTime(new Date()); + if(singleOrg.getStatus()==null||singleOrg.getStatus().equals("1")){ + dept.setStatus("0"); + }else { + dept.setStatus("1"); + } + deptService.updateById(dept); + } + }else if(type.equals(CallType.ROLE_ADD)){ + log.info("执行消息:角色添加,参数为:"+content); + SingleRole singleRole = JSONObject.parseObject(content, SingleRole.class); + SysRole sysRole = roleService.getById(singleRole.getId()); + if(sysRole==null){ + sysRole = new SysRole(); + sysRole.setStatus("0"); + if(sysRole.getStatus()==null||sysRole.getStatus()=="0"){ + sysRole.setStatus("1"); + } + sysRole.setDelFlag("0"); + sysRole.setRoleSort("0"); + sysRole.setCreateTime(new Date()); + BeanUtils.copyProperties(singleRole,sysRole); + sysRole.setRoleName(singleRole.getName()); + sysRole.setRoleKey(singleRole.getCode()); + sysRole.setUpdateTime(new Date()); + roleService.save(sysRole); + } + }else if(type.equals(CallType.ROLE_UPDATE)){ + SingleRole singleRole = JSONObject.parseObject(content, SingleRole.class); + SysRole sysRole = roleService.getById(singleRole.getId()); + if(sysRole!=null){ + if(sysRole.getStatus()==null||sysRole.getStatus()=="0"){ + sysRole.setStatus("1"); + }else{ + sysRole.setStatus("0"); + } + BeanUtils.copyProperties(singleRole,sysRole); + sysRole.setRoleName(singleRole.getName()); + sysRole.setRoleKey(singleRole.getCode()); + sysRole.setUpdateTime(new Date()); + roleService.updateById(sysRole); + } + }else if(type.equals(CallType.ROLE_DELETE)){ + SingleRole singleRole = JSONObject.parseObject(content, SingleRole.class); + roleService.deleteRoleById(singleRole.getId()); + }else if(type.equals(CallType.ROLE_USER_BIND)){ //绑定 + JSONObject jsonObject = JSONObject.parseObject(content); + String roleId = jsonObject.getString("roleId"); + JSONArray userIds = jsonObject.getJSONArray("userIds"); + List list = userIds.toJavaList(String.class); + for (String id : list) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.preInsert(); + sysUserRole.setUserId(id); + sysUserRole.setRoleId(roleId); + userRoleService.save(sysUserRole); + } + }else if(type.equals(CallType.ROLE_USER_UNBIND)) { //解绑 + JSONObject jsonObject = JSONObject.parseObject(content); + String roleId = jsonObject.getString("roleId"); + JSONArray userIds = jsonObject.getJSONArray("userIds"); + List list = userIds.toJavaList(String.class); + QueryWrapper query = Wrappers.query(); + query.eq("role_id",roleId).in("user_id",list); + userRoleService.remove(query); + } + log.info("--------同步请求结束--------------,时间:{}",new Date()); + return WaterResult.success(); + } + +} diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java index 9706a963..cc19b43c 100644 --- a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java +++ b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysLoginController.java @@ -11,6 +11,7 @@ import com.jianwei.common.constant.YesOrNo; import com.jianwei.common.core.controller.BaseController; import com.jianwei.common.core.domain.AjaxResult; import com.jianwei.common.core.domain.entity.SysMenu; +import com.jianwei.common.core.domain.entity.SysRole; import com.jianwei.common.core.domain.entity.SysUser; import com.jianwei.common.core.domain.model.LoginBody; import com.jianwei.common.core.redis.RedisCache; @@ -23,10 +24,14 @@ import com.jianwei.common.utils.password.PasswordUtil; import com.kms.common.utils.UserUtils; import com.kms.config.WaterRequestUtil; import com.kms.config.WaterResult; +import com.kms.config.singleDomain.SingleMenu; +import com.kms.config.singleDomain.SingleRole; import com.kms.framework.manager.AsyncManager; import com.kms.framework.manager.factory.AsyncFactory; import com.kms.framework.web.service.SysPermissionService; import com.kms.system.service.SysMenuService; +import com.kms.system.service.SysRoleMenuService; +import com.kms.system.service.SysRoleService; import com.kms.system.service.SysUserService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -169,7 +174,13 @@ public class SysLoginController extends BaseController { public ModelAndView signOnLogin(HttpServletRequest request, HttpServletResponse response, @RequestParam(name = "token")String token) throws IOException { - WaterResult waterResult = waterRequestUtil.authUser(token); + WaterResult waterResult; + try { + waterResult = waterRequestUtil.authUser(token); + }catch (Exception e){ + log.error(e.getMessage()); + throw new CustomException("登录失败"); + } JSONObject jsonObject = JSONObject.parseObject(waterResult.getData()); String user = jsonObject.getString("user"); JSONObject userJsonObject = JSONObject.parseObject(user); @@ -196,9 +207,39 @@ public class SysLoginController extends BaseController { StpUtil.getSession().set("jianwei-user",user); String tokenValue = StpUtil.getTokenValue(); ajax.put("token",tokenValue); - RedirectView redirectView = new RedirectView(redirect+"?token="+tokenValue); + ajax.put("authorization",token); + RedirectView redirectView = new RedirectView(redirect+"?token="+tokenValue+"&authorization="+token); ModelAndView modelAndView = new ModelAndView(redirectView); return modelAndView; } + @Autowired + SysRoleService sysRoleService; + @Autowired + SysRoleMenuService sysRoleMenuService; + @Autowired + SysMenuService sysMenuService; + + @GetMapping("/getSingleRotes/{token}") + public AjaxResult getSingleRotes(@PathVariable String token){ + WaterResult waterResult = waterRequestUtil.authUser(token); + String data = waterResult.getData(); + JSONObject jsonObject = JSONObject.parseObject(data); + List functionPerms = jsonObject.getJSONArray("functionPerms").toJavaList(String.class); + List roles = jsonObject.getJSONArray("roles").toJavaList(String.class); + QueryWrapper query = Wrappers.query(); + query.in("role_key",roles); + List roleList = sysRoleService.list(query); + QueryWrapper menuQueryWrapper = Wrappers.query(); + query.in("perms",functionPerms); + List menus = sysMenuService.list(menuQueryWrapper); + + + WaterResult result = waterRequestUtil.getUserResource(token); + List singleUserList = JSONObject.parseArray(result.getData(), SingleMenu.class); + + + return null; + } + } diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysUserController.java b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysUserController.java index 5635bce4..d34aaa23 100644 --- a/jwtech-admin/src/main/java/com/kms/web/controller/system/SysUserController.java +++ b/jwtech-admin/src/main/java/com/kms/web/controller/system/SysUserController.java @@ -20,10 +20,13 @@ import com.jianwei.common.utils.StringUtils; import com.jianwei.common.utils.password.PasswordUtil; import com.jianwei.common.utils.poi.ExcelUtil; import com.kms.common.utils.UserUtils; +import com.kms.config.WaterRequestUtil; +import com.kms.config.WaterResult; import com.kms.system.service.SysDeptService; import com.kms.system.service.SysPostService; import com.kms.system.service.SysRoleService; import com.kms.system.service.SysUserService; +import org.springframework.aop.aspectj.AspectJExpressionPointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -51,6 +54,15 @@ public class SysUserController extends BaseController @Autowired private SysDeptService sysDeptService; + @Autowired + WaterRequestUtil waterRequestUtil; + + @GetMapping("test") + public AjaxResult test(){ + WaterResult waterResult = waterRequestUtil.systemPage(); + return AjaxResult.success(waterResult); + } + /** * 获取用户列表 diff --git a/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java b/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java index cc0c78a8..f98bed7a 100644 --- a/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java +++ b/jwtech-admin/src/main/java/com/kms/web/controller/tool/TestController.java @@ -4,6 +4,12 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; + +import com.alibaba.fastjson.JSONObject; +import com.kms.config.WaterRequestUtil; +import com.kms.config.WaterResult; +import com.kms.config.singleDomain.SingleUser; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -22,7 +28,7 @@ import io.swagger.annotations.ApiOperation; /** * swagger 用户测试方法 - * + * * @author kms */ @Api("用户信息管理") @@ -36,6 +42,18 @@ public class TestController extends BaseController users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); } + @Autowired + WaterRequestUtil waterRequestUtil; + + @GetMapping("test") + public WaterResult test(){ + WaterResult waterResult = waterRequestUtil.authUser("bearer 0e6d6082-9ae7-4313-b6b1-ea45179eee1e"); + String data = waterResult.getData(); +// String records = JSONObject.parseObject(data).getString("records"); +// List singleUserList = JSONObject.parseArray(records, SingleUser.class); + return waterResult; + } + @ApiOperation("获取用户列表") @GetMapping("/list") public AjaxResult userList() diff --git a/jwtech-admin/src/main/resources/application-test.yml b/jwtech-admin/src/main/resources/application-test.yml index 6d5a0603..845f7b69 100644 --- a/jwtech-admin/src/main/resources/application-test.yml +++ b/jwtech-admin/src/main/resources/application-test.yml @@ -255,8 +255,10 @@ water: redirect: http://19.25.74.73:8001/#/singleLogin #业务系统编码 systemCode: sgc-jg - #请求网关 - url: http://19.25.35.204:31190/data_center/gateway/api + systemName: 水工程应用-水利工程建设管理模块 + #请求测试环境网关 +# url: http://19.25.35.204:31190/data_center/gateway/api + url: http://119.25.40.10:31190/data_center/gateway/portal #应用token paasToken: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzeXN0ZW1JZCI6IjE3MzI3MDMxMTE1NDc0ODIxMTQifQ.4oiD3WBwrxT5z8goAvA9O88vsYVxwaE-8vyQmWl7xbg #应用id @@ -267,11 +269,30 @@ water: #服务密钥 singOnAppsecret: 92c8749c5a424758ba550f3cc79cf882 userUrl: ${water.url}/uaa/auth/user - authUserServiceId: DGSP_1606192911177592833 - authUserAppsecret: 4961464000044bb6907e9b61d736d194 + + usersUrl: ${water.url}/usrc/open-api/user/page + # 组织 orgUrl: ${water.url}/usrc/open-api/org/orgPage + # 业务系统 + systemUrl: ${water.url}/usrc/open-api/system/list + # 业务角色 + businessRole: ${water.url}/usrc/open-api/role/page + # 用户资源 + resourceUrl: ${water.url}/usrc/resource/build + + usersAppsecret: 97ba97908eca4624aa131f7530cc4d30 + usersServiceId: DGSP_1606198353790349313 orgServiceId: DGSP_1606197217079439362 orgAppsecret: 7ac7d77ddaa14ad1b653a0263906c0f8 roleUrl: ${water.url}/usrc/open-api/role/page + authUserServiceId: DGSP_1606192911177592833 + authUserAppsecret: 4961464000044bb6907e9b61d736d194 roleServiceId: DGSP_1731517609955848193 roleAppsecret: e49e175c07fd4bbe90b3c928772fa58f + systemServiceId: DGSP_1606199297580052481 + systemAppsecret: 4b26a1c7b95744369c00f65b7a0790b6 + + resourceServiceId: DGSP_1606193569955950593 + resourceAppsecret: e9fbf96d53b34abca030b8f64de70ce9 +# businessRoleServiceId: +# businessRoleAppsecret: diff --git a/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysUser.java b/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysUser.java index 8a722074..5014a3b8 100644 --- a/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysUser.java +++ b/jwtech-framework/src/main/java/com/jianwei/common/core/domain/entity/SysUser.java @@ -129,9 +129,13 @@ public class SysUser extends BaseEntity @TableField(exist = false) private String roleName; //邀请人 + private String md5; + private String singleUserId; //单点用户id + private String singleUserSource; //用户来源 + private String singleUserType; //用户类型 public String getInvitee() { return invitee; diff --git a/jwtech-system/src/main/java/com/kms/earlyStage/controller/ProjectBidPrequController.java b/jwtech-system/src/main/java/com/kms/earlyStage/controller/ProjectBidPrequController.java index 227933c5..48f0f8a5 100644 --- a/jwtech-system/src/main/java/com/kms/earlyStage/controller/ProjectBidPrequController.java +++ b/jwtech-system/src/main/java/com/kms/earlyStage/controller/ProjectBidPrequController.java @@ -12,7 +12,6 @@ import com.kms.common.utils.BaseEntityUtils; import com.kms.earlyStage.domain.SpecialProjectProposal; import com.kms.earlyStage.service.SpecialProjectProposalService; -import com.sun.tools.internal.ws.wsdl.parser.W3CAddressingExtensionHandler; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; diff --git a/jwtech-system/src/main/java/com/kms/system/service/SysUserService.java b/jwtech-system/src/main/java/com/kms/system/service/SysUserService.java index 6bd36993..4a793281 100644 --- a/jwtech-system/src/main/java/com/kms/system/service/SysUserService.java +++ b/jwtech-system/src/main/java/com/kms/system/service/SysUserService.java @@ -207,6 +207,18 @@ public class SysUserService extends BaseService { return rows; } + + @Transactional + public boolean singleInsertUser(SysUser user) { + // 新增用户信息 + boolean rows = saveWithRedis(user); + // 新增用户岗位关联 + insertUserPost(user); + // 新增用户与角色管理 + insertUserRole(user); + return rows; + } + /** * 修改保存用户信息 * @@ -299,6 +311,7 @@ public class SysUserService extends BaseService { List list = new ArrayList(); for (String roleId : roles) { SysUserRole ur = new SysUserRole(); + ur.preInsert(); ur.setUserId(user.getId()); ur.setRoleId(roleId); list.add(ur);