已修改8个文件
已重命名12个文件
已删除1个文件
已添加8个文件
| | |
| | | <groupId>com.github.xiaoymin</groupId> |
| | | <artifactId>knife4j-spring-ui</artifactId> |
| | | </dependency> |
| | | <!-- aop--> |
| | | <dependency> |
| | | <groupId>org.springframework.boot</groupId> |
| | | <artifactId>spring-boot-starter-aop</artifactId> |
| | | </dependency> |
| | | |
| | | <!--redis jarå
--> |
| | | <dependency> |
| | |
| | | <groupId>cn.hutool</groupId> |
| | | <artifactId>hutool-all</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.squareup.okhttp3</groupId> |
| | | <artifactId>okhttp</artifactId> |
| | | </dependency> |
| | | <dependency> |
| | | <groupId>com.google.code.gson</groupId> |
| | | <artifactId>gson</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.annotation; |
| | | |
| | | import java.lang.annotation.ElementType; |
| | | import java.lang.annotation.Retention; |
| | | import java.lang.annotation.RetentionPolicy; |
| | | import java.lang.annotation.Target; |
| | | |
| | | /** |
| | | * @author å¼ å®¾ |
| | | */ |
| | | @Target({ElementType.METHOD, ElementType.TYPE}) |
| | | @Retention(RetentionPolicy.RUNTIME) |
| | | public @interface RequestInfo { |
| | | |
| | | String type(); |
| | | |
| | | String name() ; |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.controllerServerApi; |
| | | |
| | | import com.yuanchu.limslaboratory.utils.HttpUtils; |
| | | import com.yuanchu.limslaboratory.utils.JsonUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023/8/26 |
| | | */ |
| | | @Component |
| | | public class LaboratoryServerApi { |
| | | |
| | | private final String ROLE_MANAGER="/role-manager"; |
| | | |
| | | @Resource |
| | | HttpUtils httpUtils; |
| | | |
| | | public Map<String, Object> getRoleAndMenuByRole(Long roleId){ |
| | | String url=ROLE_MANAGER+ "/getRoleAndMenuByRole"; |
| | | HashMap<String, String>map=new HashMap<>(); |
| | | map.put("roleId",String.valueOf(roleId)); |
| | | String result = httpUtils.get(url, map, String.valueOf(RedisUtil.get("access_token"))); |
| | | return JsonUtil.jsonToPojo(result,Map.class); |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.enums; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023825 |
| | | */ |
| | | public enum MenuEnum { |
| | | standardLibrary(1L,"æ ååº"), |
| | | inspectionManagement(2L,"æ¥æ£ç®¡ç"), |
| | | commissionInspection(3L,"å§ææ£éª"), |
| | | reportForInspection(4L,"åæææ¥æ£"), |
| | | experiment(5L,"è¯éªç®¡ç"), |
| | | inspectionApplication(6L,"æ°å¢æ£éª"), |
| | | planAssignments(7L,"æ£éªè®¡å"), |
| | | checkTheReport(8L,"æ£éªæ¥å"), |
| | | reportAuditing(9L,"æ¥åå®¡æ ¸"), |
| | | nonConformanceReview(10L,"ä¸åæ ¼ååé¦"), |
| | | nonConformingFeedback(11L,"ä¸åæ ¼åè¯å®¡"), |
| | | passRateStatistics(12L,"åæ ¼çç»è®¡"), |
| | | laboratory(13L,"å®éªå®¤ç®¡ç"), |
| | | ledger(14L,"设å¤å°è´¦"), |
| | | measure(15L,"计é管ç"), |
| | | gather(16L,"设å¤éé"), |
| | | personnel(17L,"人å管ç"), |
| | | role(18L,"è§è²ç®¡ç"), |
| | | CNAS(19L,"CNS管ç"), |
| | | reviewAnnualPlan(20L,"å®¡æ ¸å¹´åº¦è®¡å"), |
| | | nonConformanceManage(21L,"ä¸ç¬¦å项管ç"), |
| | | nonConformanceStatistics(22L,"ä¸ç¬¦å项ç»è®¡"), |
| | | satisfactionSurveys(23L,"满æåº¦è°æ¥"), |
| | | chart(24L,"æºè½å¾è¡¨"), |
| | | center(25L,"å®éªä¸å¿"), |
| | | spc(26L,"SPCæ§å¶å¾"), |
| | | shota(27L,"æ£å¤ªåå¸å¾"), |
| | | work(28L,"å·¥ä½ç»è®¡"), |
| | | message(29L,"æ¶æ¯ä»£å"), |
| | | messages(30L,"æçæ¶æ¯"), |
| | | toDo(31L,"æç代å"), |
| | | personal(32L,"人å管ç"), |
| | | myInformation(33L,"æçä¿¡æ¯"), |
| | | baseData(34L,"åºç¡æ°æ®"), |
| | | basicDataMessage(35L,"åºç¡æ°æ®"), |
| | | org(36L,"ç»ç»æ¶æ"); |
| | | |
| | | private Long menuId; |
| | | private String menuName; |
| | | |
| | | |
| | | MenuEnum(Long menuId, String menuName) { |
| | | this.menuId = menuId; |
| | | this.menuName = menuName; |
| | | } |
| | | public Long menuId() { |
| | | return this.menuId; |
| | | } |
| | | |
| | | public String menuName() { |
| | | return this.menuName; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.exception; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023/8/25 |
| | | */ |
| | | public class AuthException extends RuntimeException { |
| | | |
| | | /** |
| | | * ä¸å¡ç¼ç å®ä¹ |
| | | * @return ä¸å¡ç¼ç |
| | | */ |
| | | private String code; |
| | | |
| | | /** |
| | | * ä¸å¡ä¿¡æ¯å®ä¹ |
| | | * @return ä¸å¡ä¿¡æ¯å®ä¹ |
| | | */ |
| | | private String msg; |
| | | |
| | | |
| | | public AuthException(String code, String msg) { |
| | | |
| | | super(msg); |
| | | this.code = code; |
| | | this.msg = msg; |
| | | } |
| | | |
| | | public AuthException() { |
| | | } |
| | | } |
| | |
| | | package com.yuanchu.limslaboratory.handler; |
| | | |
| | | import com.yuanchu.limslaboratory.exception.AuthException; |
| | | import com.yuanchu.limslaboratory.exception.MyFileException; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | |
| | | e.printStackTrace(); |
| | | return Result.fail("ç½ç»è¿æ¥å¤±è´¥ï¼è¯·éåºååè¯"); |
| | | } |
| | | |
| | | @ExceptionHandler({AuthException.class}) |
| | | public Result<?> noAuth(AuthException e){ |
| | | e.printStackTrace(); |
| | | return Result.fail(400,"æ æé"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.utils; |
| | | |
| | | import com.google.gson.Gson; |
| | | import okhttp3.*; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.io.IOException; |
| | | import java.util.Arrays; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023/8/26 |
| | | */ |
| | | @Component |
| | | public class HttpUtils { |
| | | |
| | | private final String IP="http://localhost:"; |
| | | |
| | | @Value("${server.port}") |
| | | private String port; |
| | | |
| | | public static final MediaType JSON = MediaType.get("application/json; charset=utf-8"); |
| | | |
| | | public static final Logger logger = LoggerFactory.getLogger(HttpUtils.class); |
| | | |
| | | final OkHttpClient client |
| | | = new OkHttpClient.Builder() |
| | | .connectTimeout(10, TimeUnit.SECONDS) |
| | | .writeTimeout(10, TimeUnit.SECONDS) |
| | | .readTimeout(20, TimeUnit.SECONDS) |
| | | .build(); |
| | | |
| | | public String postJson(String url, Map<String, String> map,String token){ |
| | | url=IP+port+url; |
| | | if (map == null || StringUtils.isEmpty(url)) { |
| | | throw new RuntimeException("urlæè¯·æ±åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | Gson gson = new Gson(); |
| | | String json = gson.toJson(map); |
| | | RequestBody body = RequestBody.create(JSON, json); |
| | | Request request = builderRequest(url, body, token); |
| | | try (Response response = client.newCall(request).execute()) { |
| | | ResponseBody responseBody = response.body(); |
| | | if (Objects.isNull(responseBody)) { |
| | | throw new RuntimeException("ååºä½ä¸ºç©º"); |
| | | } |
| | | return responseBody.string(); |
| | | } catch (Exception e) { |
| | | logger.error(e.toString()); |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | private Request builderRequest(String url,RequestBody body,String token) { |
| | | if(StringUtils.isNotEmpty(token)){ |
| | | return new Request.Builder() |
| | | .url(url) |
| | | .post(body) |
| | | .addHeader("X-Token", token) |
| | | .build(); |
| | | }else { |
| | | return new Request.Builder() |
| | | .url(url) |
| | | .post(body) |
| | | .build(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * éè¦ä½¿ç¨åºååå·¥å
·å°å¯¹è±¡åºååæå符串ï¼å¦gson |
| | | * |
| | | * @param url |
| | | * @param json |
| | | * @return |
| | | */ |
| | | public String postJson(String url, String json,String token) { |
| | | url=IP+port+url; |
| | | if (StringUtils.isEmpty(json) || StringUtils.isEmpty(url)) { |
| | | throw new RuntimeException("urlæè¯·æ±åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | RequestBody body = RequestBody.create(JSON, json); |
| | | Request request = builderRequest(url, body, token); |
| | | try (Response response = client.newCall(request).execute()) { |
| | | ResponseBody responseBody = response.body(); |
| | | if (Objects.isNull(responseBody)) { |
| | | throw new RuntimeException("ååºä½ä¸ºç©º"); |
| | | } |
| | | return responseBody.string(); |
| | | } catch (Exception e) { |
| | | logger.error(e.toString()); |
| | | return ""; |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * @param url |
| | | * @param queryParamMap |
| | | * @return |
| | | */ |
| | | public String get(String url, Map<String, String> queryParamMap, String token){ |
| | | url=IP+port+url; |
| | | if (StringUtils.isEmpty(url)) { |
| | | throw new RuntimeException("urlæè¯·æ±åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | System.out.println(url); |
| | | HttpUrl.Builder builder = Objects.requireNonNull(HttpUrl.parse(url)).newBuilder(); |
| | | if (queryParamMap != null && queryParamMap.size() != 0) { |
| | | queryParamMap.forEach(builder::addQueryParameter); |
| | | } |
| | | url = builder.build().toString(); |
| | | Request request=null; |
| | | if(StringUtils.isNotEmpty(token)){ |
| | | request = new Request.Builder() |
| | | .url(url) |
| | | .addHeader("X-Token", token) |
| | | .build(); |
| | | }else { |
| | | request = new Request.Builder() |
| | | .url(url) |
| | | .build(); |
| | | } |
| | | try (Response response = client.newCall(request).execute()) { |
| | | ResponseBody responseBody = response.body(); |
| | | if (Objects.isNull(responseBody)) { |
| | | throw new RuntimeException("ååºä½ä¸ºç©º"); |
| | | } |
| | | return responseBody.string(); |
| | | } catch (Exception e) { |
| | | logger.error(e.toString()); |
| | | return ""; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.aop; |
| | | |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.yuanchu.limslaboratory.annotation.RequestInfo; |
| | | import com.yuanchu.limslaboratory.exception.AuthException; |
| | | import com.yuanchu.limslaboratory.utils.ServletUtils; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import lombok.SneakyThrows; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.aspectj.lang.JoinPoint; |
| | | import org.aspectj.lang.ProceedingJoinPoint; |
| | | import org.aspectj.lang.annotation.Around; |
| | | import org.aspectj.lang.annotation.Aspect; |
| | | import org.aspectj.lang.annotation.Before; |
| | | import org.aspectj.lang.annotation.Pointcut; |
| | | import org.aspectj.lang.reflect.MethodSignature; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.lang.annotation.Annotation; |
| | | import java.lang.reflect.Method; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023/8/25 |
| | | */ |
| | | @Component |
| | | @Slf4j |
| | | @Aspect |
| | | public class AuthRequestAspect { |
| | | |
| | | @Pointcut("@annotation(com.yuanchu.limslaboratory.annotation.RequestInfo)") |
| | | public void pointCut() { |
| | | } |
| | | |
| | | //private ThreadLocal<ConcurrentHashMap<String, Map>> threadLocal; |
| | | |
| | | @SneakyThrows |
| | | @Before("pointCut()") |
| | | public void before(JoinPoint joinPoint) { |
| | | HttpServletRequest request = ServletUtils.getRequest(); |
| | | log.info("æ¦æª=====ã"+request.getServletPath()); |
| | | Class<?> clazz = joinPoint.getTarget().getClass(); |
| | | String clazzName = joinPoint.getTarget().getClass().getName(); |
| | | // è·å访é®çæ¹æ³å |
| | | String methodName = joinPoint.getSignature().getName(); |
| | | // è·åæ¹æ³ææåæ°åå
¶ç±»å |
| | | Class[] argClz = ((MethodSignature) joinPoint.getSignature()).getParameterTypes(); |
| | | // è·å访é®çæ¹æ³å¯¹è±¡ |
| | | Method method = clazz.getDeclaredMethod(methodName, argClz); |
| | | // 夿å½å访é®çæ¹æ³æ¯å¦å卿宿³¨è§£ |
| | | if (method.isAnnotationPresent(RequestInfo.class)) { |
| | | RequestInfo annotation = method.getAnnotation(RequestInfo.class); |
| | | System.out.println(annotation.name()); |
| | | System.out.println(annotation.type()); |
| | | } |
| | | //throw new AuthException("400","æ æé"); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | |
| | | # redisæ°æ®åºç´¢å¼(é»è®¤ä¸º0)ï¼æä»¬ä½¿ç¨ç´¢å¼ä¸º3çæ°æ®åºï¼é¿å
åå
¶ä»æ°æ®åºå²çª |
| | | database: 0 |
| | | # redisæå¡å¨å°åï¼é»è®¤ä¸ºlocalhostï¼ |
| | | host: 192.168.110.209 |
| | | host: 192.168.110.209 |
| | | # redis端å£ï¼é»è®¤ä¸º6379ï¼ |
| | | port: 6380 |
| | | # redis访é®å¯ç ï¼é»è®¤ä¸ºç©ºï¼ |
| | |
| | | <groupId>org.springframework.cloud</groupId> |
| | | <artifactId>spring-cloud-starter-openfeign</artifactId> |
| | | </dependency> |
| | | |
| | | <!--okhttp--> |
| | | <dependency> |
| | | <groupId>io.github.openfeign</groupId> |
| | |
| | | package com.yuanchu.limslaboratory.clients; |
| | | |
| | | import com.yuanchu.limslaboratory.controllerServerApi.LaboratoryServerApi; |
| | | import com.yuanchu.limslaboratory.mapper.RoleManageMapper; |
| | | import com.yuanchu.limslaboratory.mapper.UserMapper; |
| | | import com.yuanchu.limslaboratory.pojo.Menu; |
| | | import com.yuanchu.limslaboratory.pojo.RoleMenu; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; |
| | | import com.yuanchu.limslaboratory.shiro.utils.JwtUtils; |
| | | import com.yuanchu.limslaboratory.utils.MyUtil; |
| | | import com.yuanchu.limslaboratory.utils.RedisUtil; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Component |
| | | public class UserLoginUtils { |
| | |
| | | |
| | | @Value("${login.secret}") |
| | | private String LoginSecret; |
| | | |
| | | |
| | | |
| | | public Result<Map<String, Object>> LoginExamine(User user){ |
| | | Map<String, Object> mapData = new HashMap<>(); |
| | |
| | | mapRedis.put("name", user.getName()); |
| | | mapRedis.put("enterpriseId", user.getEnterpriseId()); |
| | | mapRedis.put("data", data); |
| | | mapRedis.put("roleId",user.getRoleId()); |
| | | //åå
¥redis,äºä¸ªå°æ¶åå é¤ |
| | | RedisUtil.set(token, mapRedis, 120); |
| | | // |
| | | RedisUtil.set("access_token",token,120); |
| | | // å°ç¾åç JWT token è¿åç»å端 |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | String refresh = JwtUtils.sign(user.getAccount()); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // public Result<Map<String, Object>> LoginExamine(User user){ |
| | | // String token = JwtUtils.sign(user.getAccount()); |
| | | // //åå
¥redis,äºä¸ªå°æ¶åå é¤ |
| | | // RedisUtil.set(token, user, 2); |
| | | // // å°ç¾åç JWT token è¿åç»å端 |
| | | // HashMap<String, Object> map = new HashMap<>(); |
| | | // String refresh = JwtUtils.sign(user.getAccount()); |
| | | // map.put("token", token); |
| | | // map.put("refresh", refresh); |
| | | // RedisUtil.set(user.getAccount(), map, 120); |
| | | // return Result.success(map); |
| | | // } |
| | | } |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/controller/RoleMangerController.java ÐÞ¸Ä |
| | |
| | | package com.yuanchu.limslaboratory.controller; |
| | | |
| | | import com.yuanchu.limslaboratory.annotation.RequestInfo; |
| | | import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateRoleMenuDto; |
| | | import com.yuanchu.limslaboratory.service.RoleManagerService; |
| | | import com.yuanchu.limslaboratory.vo.Result; |
| | | import io.swagger.annotations.Api; |
| | |
| | | |
| | | @ApiOperation("è·åèååè½æ ") |
| | | @GetMapping("/getMenusTree") |
| | | @RequestInfo(type = "add",name="ccc") |
| | | public Result<?>getMenusTree() { |
| | | return Result.success(roleManagerService.getMenusTree()); |
| | | }; |
| | |
| | | public Result<?> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto){ |
| | | return Result.success(roleManagerService.getAllRoleAndMenuInfo(dto)); |
| | | } |
| | | |
| | | @ApiOperation("é»è¾å é¤è§è²") |
| | | @GetMapping("/deleteRole") |
| | | public Result<?> deleteRole(Long id){ |
| | | return Result.success(roleManagerService.deleteRole(id)); |
| | | } |
| | | |
| | | @ApiOperation("ä¿®æ¹æé") |
| | | @PostMapping("/updateRoleMenu") |
| | | public Result<?> updateRoleMenu(@RequestBody UpdateRoleMenuDto dto){ |
| | | return Result.success(roleManagerService.updateRoleMenu(dto)); |
| | | } |
| | | |
| | | @ApiOperation("/æ ¹æ®è§è²è·åRole") |
| | | @GetMapping("/getRoleAndMenuByRole") |
| | | public Result<?> getRoleAndMenuByRole(Long roleId){ |
| | | return Result.success(roleManagerService.getRoleAndMenuByRole(roleId)); |
| | | } |
| | | } |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/mapper/RoleManageMapper.java ÐÞ¸Ä |
| | |
| | | package com.yuanchu.limslaboratory.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.yuanchu.limslaboratory.pojo.LimitPage; |
| | | import com.yuanchu.limslaboratory.pojo.Role; |
| | | import com.yuanchu.limslaboratory.pojo.RoleInfo; |
| | | import com.yuanchu.limslaboratory.pojo.RoleMenu; |
| | | import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.GetPlanMeasureInstrumentDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.springframework.stereotype.Repository; |
| | |
| | | |
| | | List<RoleAndMenuDto>selectAllRoleAndMenu(@Param("dto") GetAllRoleAndMenuByConditionPageDto dto); |
| | | |
| | | List<Role>getRoleByName(@Param("roleName") String roleName); |
| | | List<RoleInfo>getRoleInfoByName(@Param("roleName") String roleName); |
| | | |
| | | int updateRoleState(Long id); |
| | | |
| | | int deleteRoleMenuByRoleId(Long id); |
| | | |
| | | RoleAndMenuDto selectAllRoleAndMenuByRoleId(Long roleId); |
| | | } |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/RoleMenu.java ÐÞ¸Ä |
| | |
| | | |
| | | private String menuName; |
| | | |
| | | private String menuUrl; |
| | | |
| | | private String redirect; |
| | | |
| | | private String icon; |
| | | |
| | | private Long menuId; |
| | | |
| | | private Boolean selected; |
| | |
| | | private Integer version; |
| | | |
| | | @ApiModelProperty(value = "å
³è è§è²id") |
| | | private Integer roleId; |
| | | private Long roleId; |
| | | |
| | | @ApiModelProperty(value = "å
³è ä¼ä¸id") |
| | | private Integer enterpriseId; |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/GetAllRoleAndMenuByConditionPageDto.java ÐÞ¸Ä |
| | |
| | | @Data |
| | | @ApiModel(value = "GetAllRoleAndMenuByConditionPageDto对象", description = "") |
| | | public class GetAllRoleAndMenuByConditionPageDto implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "å½å页", example = "1", required = true) |
| | | private Long currentPage; |
| | | @ApiModelProperty(value = "æ¯é¡µå¤å°æ¡", required = true) |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/pojo/dto/RoleAndMenuDto.java ÐÞ¸Ä |
| | |
| | | @Data |
| | | public class RoleAndMenuDto implements Serializable { |
| | | |
| | | private Long roleId; |
| | | private String roleId; |
| | | |
| | | private String roleName; |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.yuanchu.limslaboratory.pojo.dto; |
| | | |
| | | import com.yuanchu.limslaboratory.pojo.RoleMenu; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Author å¼ å®¾ |
| | | * @Date 2023/8/25 |
| | | */ |
| | | @Data |
| | | public class UpdateRoleMenuDto implements Serializable { |
| | | |
| | | @ApiModelProperty(value = "è§è²ID", required = true) |
| | | private Long roleId; |
| | | @ApiModelProperty(value = "è§è²å", required = true) |
| | | private String roleName; |
| | | //@ApiModelProperty(value = "ä¿®æ¹å", required = true) |
| | | //private List<RoleMenu> lastMenuSelect; |
| | | @ApiModelProperty(value = "å½åéæ©", required = true) |
| | | private List<RoleMenu> menuData; |
| | | |
| | | |
| | | } |
| | |
| | | private String account; |
| | | |
| | | @ApiModelProperty(value = "0ï¼æ æéï¼1ï¼ææé", example = "1", required = true) |
| | | private Integer role_id; |
| | | private Long role_id; |
| | | |
| | | @ApiModelProperty(value = "å¹´é¾", example = "23") |
| | | private Integer age; |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/RoleManagerService.java ÐÞ¸Ä |
| | |
| | | import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateRoleMenuDto; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | boolean assertRepeat(String roleName); |
| | | |
| | | Map<String, Object> getAllRoleAndMenuInfo(GetAllRoleAndMenuByConditionPageDto dto); |
| | | |
| | | boolean deleteRole(Long id); |
| | | |
| | | boolean updateRoleMenu(UpdateRoleMenuDto dto); |
| | | |
| | | RoleAndMenuDto getRoleAndMenuByRole(Long roleId); |
| | | } |
ÎļþÃû´Ó laboratory-server/src/main/java/com/yuanchu/limslaboratory/service/impl/RoleManagerServiceImpl.java ÐÞ¸Ä |
| | |
| | | |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.IdUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.mapper.MenuMapper; |
| | | import com.yuanchu.limslaboratory.mapper.RoleManageMapper; |
| | | import com.yuanchu.limslaboratory.pojo.LimitPage; |
| | | import com.yuanchu.limslaboratory.pojo.Menu; |
| | | import com.yuanchu.limslaboratory.pojo.RoleInfo; |
| | | import com.yuanchu.limslaboratory.pojo.RoleMenu; |
| | | import com.yuanchu.limslaboratory.pojo.dto.GetAllRoleAndMenuByConditionPageDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleInfoDto; |
| | | import com.yuanchu.limslaboratory.pojo.dto.UpdateRoleMenuDto; |
| | | import com.yuanchu.limslaboratory.service.RoleManagerService; |
| | | import com.yuanchu.limslaboratory.utils.JsonUtil; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | List<RoleAndMenuDto> roleAndMenuDtos = roleManageMapper.selectAllRoleAndMenu(dto); |
| | | roleAndMenuDtos.forEach(r->{ |
| | | List<RoleMenu>roleMenuList=r.getRoleMenuList(); |
| | | System.out.println(roleMenuList); |
| | | //System.out.println(roleMenuList); |
| | | List<RoleMenu> collect = roleMenuList.stream() |
| | | .filter(t -> t.getParentId() == 0) |
| | | .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleMenuList))) |
| | |
| | | }); |
| | | Map<String, Object>result=new HashMap<>(3); |
| | | result.put("list",roleAndMenuDtos); |
| | | int size = roleManageMapper.getRoleByName(dto.getName()).size(); |
| | | int size = roleManageMapper.getRoleInfoByName(dto.getName()).size(); |
| | | result.put("total",size); |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public boolean deleteRole(Long id) { |
| | | return roleManageMapper.updateRoleState(id)>0; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean updateRoleMenu(UpdateRoleMenuDto dto) { |
| | | //ä¿®æ¹roleè¡¨ä¿¡æ¯ |
| | | UpdateWrapper<RoleInfo>updateWrapper=new UpdateWrapper<>(); |
| | | updateWrapper.lambda() |
| | | .set(RoleInfo::getName,dto.getRoleName()) |
| | | .set(RoleInfo::getUpdateTime,DateUtil.toLocalDateTime(DateUtil.date())) |
| | | .eq(RoleInfo::getId,dto.getRoleId()); |
| | | int update = roleManageMapper.update(null, updateWrapper); |
| | | //å é¤role_menuä¿¡æ¯ |
| | | int deleteRoleMenuByRoleId = roleManageMapper.deleteRoleMenuByRoleId(dto.getRoleId()); |
| | | //æ·»å ææ°éæ©ã |
| | | dto.getMenuData().forEach(l->{ |
| | | l.setRoleId(dto.getRoleId()); |
| | | l.setCreateTime(DateUtil.toLocalDateTime(DateUtil.date())); |
| | | l.setUpdateTime(DateUtil.toLocalDateTime(DateUtil.date())); |
| | | }); |
| | | int insertBatchRoleMenu = roleManageMapper.insertBatchRoleMenu(dto.getMenuData()); |
| | | return update>0&&deleteRoleMenuByRoleId>0&&insertBatchRoleMenu>0; |
| | | } |
| | | |
| | | @Override |
| | | public RoleAndMenuDto getRoleAndMenuByRole(Long roleId) { |
| | | return roleManageMapper.selectAllRoleAndMenuByRoleId(roleId); |
| | | } |
| | | |
| | | |
| | | private List<Menu> getEnumChildren(Menu root, List<Menu> all) { |
| | | return all.stream() |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.yuanchu.limslaboratory.mapper.RoleManageMapper; |
| | | import com.yuanchu.limslaboratory.pojo.RoleMenu; |
| | | import com.yuanchu.limslaboratory.pojo.User; |
| | | import com.yuanchu.limslaboratory.mapper.UserMapper; |
| | | import com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto; |
| | | import com.yuanchu.limslaboratory.service.UserService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.yuanchu.limslaboratory.utils.JackSonUtil; |
| | |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | |
| | | @Resource |
| | | private UserMapper userMapper; |
| | | |
| | | @Resource |
| | | private RoleManageMapper roleManageMapper; |
| | | |
| | | @Override |
| | | public Map<String, Object> getUserInfo(String token) { |
| | |
| | | data.put("name",loginUser.get("name")); |
| | | data.put("id",loginUser.get("id")); |
| | | data.put("remind", remind); |
| | | RoleAndMenuDto role = getRoleInfo(Long.valueOf(String.valueOf(loginUser.get("roleId")))); |
| | | System.out.println("+++++++++++++++++++++++++++++++++++++++++++++"); |
| | | System.out.println(role); |
| | | System.out.println("++++++++++++++++++++++++++++++++++++++++++++++"); |
| | | data.put("role",role); |
| | | return data; |
| | | } |
| | | return null; |
| | |
| | | public User AccordingUsernameSelectAll(String account) { |
| | | LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>(); |
| | | wrapper.eq(User::getAccount, account); |
| | | wrapper.select(User::getPassword, User::getId, User::getName, User::getAccount, User::getEnterpriseId); |
| | | wrapper.select(User::getPassword, User::getRoleId,User::getId, User::getName, User::getAccount, User::getEnterpriseId); |
| | | return userMapper.selectOne(wrapper); |
| | | } |
| | | |
| | |
| | | MyUtil.PrintLog(name + status + "============="); |
| | | return userMapper.getNewPersonnelPage(name, page, status); |
| | | } |
| | | |
| | | |
| | | public RoleAndMenuDto getRoleInfo(Long roleId) { |
| | | RoleAndMenuDto roleAndMenuDto = roleManageMapper.selectAllRoleAndMenuByRoleId(roleId); |
| | | List<RoleMenu> collect = roleAndMenuDto.getRoleMenuList() |
| | | .stream() |
| | | .filter(t -> t.getParentId() == 0) |
| | | .peek((menu) -> menu.setChildren(this.getRoleMenuChildren(menu, roleAndMenuDto.getRoleMenuList()))) |
| | | .collect(Collectors.toList()); |
| | | roleAndMenuDto.setRoleMenuList(collect); |
| | | return roleAndMenuDto; |
| | | } |
| | | |
| | | |
| | | private List<RoleMenu> getRoleMenuChildren(RoleMenu root, List<RoleMenu> all) { |
| | | return all.stream() |
| | | .filter(t -> Objects.equals(t.getParentId(), root.getMenuId())) |
| | | .peek(g -> { |
| | | //æ¾åèå |
| | | g.setChildren(getRoleMenuChildren(g, all)); |
| | | }) |
| | | .collect(Collectors.toList()); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8" ?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > |
| | | <mapper namespace="com.yuanchu.limslaboratory.mapper.RoleManageMapper"> |
| | | <insert id="insertBatchRoleMenu" useGeneratedKeys="true" keyProperty="id"> |
| | | insert |
| | | role_menu (id,`role_id`,`menu_id`,`selected`,`added`,`updated`,`deleted`,`create_time`) |
| | | values |
| | | <foreach collection="roleMenuAddList" separator="," item="r"> |
| | | (#{r.id},#{r.roleId},#{r.menuId},#{r.selected},#{r.added},#{r.updated},#{r.deleted},#{r.createTime}) |
| | | </foreach> |
| | | </insert> |
| | | <insert id="insertRole"> |
| | | insert |
| | | role(id,name,create_time) value ( |
| | | #{id}, |
| | | #{name}, |
| | | #{createTime} |
| | | ) |
| | | </insert> |
| | | <update id="updateRoleState"> |
| | | UPDATE role SET state = 0 WHERE (id = #{id}) |
| | | </update> |
| | | <delete id="deleteRoleMenuByRoleId"> |
| | | delete from role_menu where role_id =#{id} |
| | | </delete> |
| | | <select id="getAssertName" resultType="com.yuanchu.limslaboratory.pojo.RoleInfo"> |
| | | select id |
| | | from role |
| | | where name = #{roleName} |
| | | and state=1 |
| | | </select> |
| | | <select id="selectAllRoleAndMenu" resultMap="roleAndMenu"> |
| | | SELECT r.id roleId, |
| | | r.`name` roleName, |
| | | menu_id menuId, |
| | | parent_id parentId, |
| | | m.`name` menuName, |
| | | rm.selected, |
| | | rm.added, |
| | | rm.updated, |
| | | rm.deleted, |
| | | r.create_time createTime, |
| | | r.update_time updateTime |
| | | FROM role_menu rm, |
| | | (select id, name, create_Time, update_Time,state |
| | | from role |
| | | where 1=1 |
| | | <if test="dto.name!=null and dto.name!=''"> |
| | | and name like CONCAT('%',#{dto.name},'%') |
| | | </if> |
| | | limit #{dto.currentPage}, #{dto.pageSize}) r, |
| | | menu m |
| | | WHERE rm.role_id = r.id |
| | | AND rm.menu_id = m.id |
| | | AND r.state = 1 |
| | | AND rm.state = 1 |
| | | AND m.state = 1 |
| | | </select> |
| | | <select id="getRoleInfoByName" resultType="com.yuanchu.limslaboratory.pojo.RoleInfo"> |
| | | select id |
| | | from role |
| | | where 1=1 |
| | | and state=1 |
| | | <if test="roleName!=null and roleName!=''"> |
| | | and name like CONCAT('%',#{roleName},'%') |
| | | </if> |
| | | </select> |
| | | <select id="selectAllRoleAndMenuByRoleId" resultMap="roleAndMenuById"> |
| | | SELECT |
| | | r.`name` roleName, |
| | | menu_id menuId, |
| | | parent_id parentId, |
| | | m.`name` menuName, |
| | | m.url menuUrl, |
| | | -- m.redirect redirect, |
| | | -- m.icon icon, |
| | | rm.selected, |
| | | rm.added, |
| | | rm.updated, |
| | | rm.deleted |
| | | FROM |
| | | role_menu rm, |
| | | role r, |
| | | menu m |
| | | WHERE |
| | | rm.role_id = r.id |
| | | AND rm.menu_id = m.id |
| | | AND r.state = 1 |
| | | AND rm.state = 1 |
| | | AND m.state = 1 |
| | | and r.id=#{roleId} |
| | | </select> |
| | | |
| | | <resultMap id="roleAndMenuById" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto"> |
| | | <result property="roleName" column="roleName"/> |
| | | <result property="createTime" column="createTime"/> |
| | | <result property="updateTime" column="updateTime"/> |
| | | <collection property="roleMenuList" ofType="roleMenu"> |
| | | <result property="menuId" column="menuId"/> |
| | | <result property="added" column="added"/> |
| | | <result property="deleted" column="deleted"/> |
| | | <result property="updated" column="updated"/> |
| | | <result property="selected" column="selected"/> |
| | | <result property="menuName" column="menuName"/> |
| | | <result property="menuUrl" column="menuUrl"/> |
| | | <result property="redirect" column="redirect"/> |
| | | <result property="icon" column="icon"/> |
| | | <result property="parentId" column="parentId"/> |
| | | </collection> |
| | | </resultMap> |
| | | |
| | | <resultMap id="roleAndMenu" type="com.yuanchu.limslaboratory.pojo.dto.RoleAndMenuDto"> |
| | | <result property="roleId" column="roleId"/> |
| | | <result property="roleName" column="roleName"/> |
| | | <result property="createTime" column="createTime"/> |
| | | <result property="updateTime" column="updateTime"/> |
| | | <collection property="roleMenuList" ofType="roleMenu"> |
| | | <result property="menuId" column="menuId"/> |
| | | <result property="added" column="added"/> |
| | | <result property="deleted" column="deleted"/> |
| | | <result property="updated" column="updated"/> |
| | | <result property="selected" column="selected"/> |
| | | <result property="menuName" column="menuName"/> |
| | | <result property="parentId" column="parentId"/> |
| | | </collection> |
| | | </resultMap> |
| | | </mapper> |