From f955449bf78c8704290b48612218a66e9a7b9eed Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 30 一月 2024 14:29:41 +0800
Subject: [PATCH] #
---
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/BaseController.java | 32 ++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/UpdatePasswordParam.java | 16 ++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Menu.java | 5 +
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java | 33 ++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java | 66 +++++++++++++++-
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/annotation/OperationLog.java | 41 ++++++++++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java | 10 ++
zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java | 2
8 files changed, 200 insertions(+), 5 deletions(-)
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/annotation/OperationLog.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/annotation/OperationLog.java
new file mode 100644
index 0000000..5069bb0
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/annotation/OperationLog.java
@@ -0,0 +1,41 @@
+package com.zy.asrs.wcs.common.annotation;
+
+import java.lang.annotation.*;
+
+/**
+ * 鎿嶄綔鏃ュ織璁板綍娉ㄨВ
+ *
+ * @author vincent
+ * @since 2020-03-21 17:03:08
+ */
+@Documented
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface OperationLog {
+
+ /**
+ * 鎿嶄綔鍔熻兘
+ */
+ String value() default "";
+
+ /**
+ * 鎿嶄綔妯″潡
+ */
+ String module() default "";
+
+ /**
+ * 澶囨敞
+ */
+ String comments() default "";
+
+ /**
+ * 鏄惁璁板綍璇锋眰鍙傛暟
+ */
+ boolean param() default true;
+
+ /**
+ * 鏄惁璁板綍杩斿洖缁撴灉
+ */
+ boolean result() default true;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
index cac933e..92e3bbd 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
@@ -1,23 +1,27 @@
package com.zy.asrs.wcs.sys.controller;
-import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.annotation.OperationLog;
import com.zy.asrs.wcs.common.config.ConfigProperties;
import com.zy.asrs.wcs.common.security.JwtSubject;
import com.zy.asrs.wcs.sys.controller.param.LoginParam;
+import com.zy.asrs.wcs.sys.controller.param.UpdatePasswordParam;
import com.zy.asrs.wcs.sys.controller.result.LoginResult;
+import com.zy.asrs.wcs.sys.entity.Menu;
import com.zy.asrs.wcs.sys.entity.User;
import com.zy.asrs.wcs.sys.entity.UserLogin;
+import com.zy.asrs.wcs.sys.service.RoleMenuService;
import com.zy.asrs.wcs.sys.service.UserLoginService;
import com.zy.asrs.wcs.sys.service.UserService;
import com.zy.asrs.wcs.utils.JwtUtil;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import com.zy.asrs.wcs.utils.Utils;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.util.List;
/**
* 璁よ瘉鎺у埗鍣�
@@ -34,6 +38,8 @@
private UserService userService;
@Resource
private UserLoginService userLoginService;
+ @Resource
+ private RoleMenuService roleMenuService;
@PostMapping("/login")
public R login(@RequestBody LoginParam param, HttpServletRequest request) {
@@ -55,5 +61,55 @@
return R.ok("鐧诲綍鎴愬姛").add(new LoginResult(accessToken, user));
}
+ @GetMapping("/auth/user")
+ public R userInfo() {
+ return R.ok(userService.getByIdRel(getLoginUserId()));
+ }
+
+ @GetMapping("/auth/menu")
+ public R userMenu() {
+ List<Menu> menus = roleMenuService.listMenuByUserId(getLoginUserId(), Menu.TYPE_MENU);
+ return R.ok().add(Utils.toTreeData(menus, 0, Menu::getParentId, Menu::getId, Menu::setChildren));
+ }
+
+ @PreAuthorize("hasAuthority('sys:auth:user')")
+ @OperationLog
+ @PutMapping("/auth/user")
+ public R updateInfo(@RequestBody User user) {
+ user.setId(getLoginUserId());
+ // 涓嶈兘淇敼鐨勫瓧娈�
+ user.setUsername(null);
+ user.setPassword(null);
+ user.setEmailVerified(null);
+ user.setHostId(null);
+ user.setStatus(null);
+ if (userService.updateById(user)) {
+ return R.ok().add(userService.getByIdRel(user.getId()));
+ }
+ return R.error("淇濆瓨澶辫触");
+ }
+
+ @PreAuthorize("hasAuthority('sys:auth:password')")
+ @OperationLog
+ @PutMapping("/auth/password")
+ public R updatePassword(@RequestBody UpdatePasswordParam param) {
+ if (Cools.isEmpty(param.getOldPassword(), param.getPassword())) {
+ return R.error("鍙傛暟涓嶈兘涓虹┖");
+ }
+ Long userId = getLoginUserId();
+ if (userId == null) {
+ return R.error("鏈櫥褰�");
+ }
+ if (!userService.comparePassword(userService.getById(userId).getPassword(), param.getOldPassword())) {
+ return R.error("鍘熷瘑鐮佽緭鍏ヤ笉姝g‘");
+ }
+ User user = new User();
+ user.setId(userId);
+ user.setPassword(userService.encodePassword(param.getPassword()));
+ if (userService.updateById(user)) {
+ return R.ok("淇敼鎴愬姛");
+ }
+ return R.error("淇敼澶辫触");
+ }
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/BaseController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/BaseController.java
new file mode 100644
index 0000000..4bbfd32
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/BaseController.java
@@ -0,0 +1,32 @@
+package com.zy.asrs.wcs.sys.controller;
+
+import com.zy.asrs.wcs.sys.entity.User;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+
+/**
+ * Created by vincent on 1/30/2024
+ */
+public class BaseController {
+
+ public User getLoginUser() {
+ try {
+ Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+ if (authentication != null) {
+ Object object = authentication.getPrincipal();
+ if (object instanceof User) {
+ return (User) object;
+ }
+ }
+ } catch (Exception e) {
+ System.out.println(e.getMessage());
+ }
+ return null;
+ }
+
+ public Long getLoginUserId() {
+ User loginUser = getLoginUser();
+ return loginUser == null ? null : loginUser.getId();
+ }
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/UpdatePasswordParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/UpdatePasswordParam.java
new file mode 100644
index 0000000..4931a0f
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/UpdatePasswordParam.java
@@ -0,0 +1,16 @@
+package com.zy.asrs.wcs.sys.controller.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class UpdatePasswordParam implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ private String oldPassword;
+
+ private String password;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Menu.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Menu.java
index 7b014d1..f312f35 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Menu.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/entity/Menu.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wcs.sys.entity;
import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.zy.asrs.framework.common.Cools;
@@ -15,6 +16,7 @@
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.List;
@Data
@TableName("sys_menu")
@@ -160,6 +162,9 @@
@ApiModelProperty(value= "澶囨敞")
private String memo;
+ @TableField(exist = false)
+ private List<Menu> children;
+
public Menu() {}
public Menu(String name,Long parentId,String parentName,String path,String pathName,String route,String brief,String code,Integer type,String authority,String icon,Integer sort,String meta,Long hostId,Integer status,Integer deleted,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
index b4b2a55..fe72fd9 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
@@ -7,6 +7,8 @@
User getByUsername(String username, Long hostId);
+ User getByIdRel(Long userId);
+
boolean comparePassword(String dbPassword, String inputPassword);
String encodePassword(String password);
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
index af82439..81953c4 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
@@ -36,6 +36,16 @@
}
@Override
+ public User getByIdRel(Long userId) {
+ User user = this.getById(userId);
+ if (user != null) {
+ user.setRoles(userRoleService.listByUserId(user.getId()));
+ user.setAuthorities(roleMenuService.listMenuByUserId(user.getId(), null));
+ }
+ return user;
+ }
+
+ @Override
public boolean comparePassword(String dbPassword, String inputPassword) {
return bCryptPasswordEncoder.matches(inputPassword, dbPassword);
}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
index 9db68ff..5c21a4f 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/utils/Utils.java
@@ -3,7 +3,11 @@
import com.zy.asrs.framework.common.Cools;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Optional;
+import java.util.function.BiConsumer;
+import java.util.function.Function;
/**
* Created by vincent on 2023/3/14
@@ -11,6 +15,35 @@
public class Utils {
/**
+ * List杞负鏍戝舰缁撴瀯
+ *
+ * @param data List
+ * @param parentId 椤剁骇鐨刾arentId
+ * @param parentIdMapper 鑾峰彇parentId鐨凢unction
+ * @param idMapper 鑾峰彇id鐨凢unction
+ * @param consumer 璧嬪�糲hildren鐨凜onsumer
+ * @param <T> 鏁版嵁鐨勭被鍨�
+ * @param <R> parentId鐨勭被鍨�
+ * @return List<T>
+ */
+ public static <T, R> List<T> toTreeData(List<T> data, R parentId,
+ Function<? super T, ? extends R> parentIdMapper,
+ Function<? super T, ? extends R> idMapper,
+ BiConsumer<T, List<T>> consumer) {
+ List<T> result = new ArrayList<>();
+ for (T d : data) {
+ R dParentId = parentIdMapper.apply(d);
+ if (parentId.equals(dParentId)) {
+ R dId = idMapper.apply(d);
+ List<T> children = toTreeData(data, dId, parentIdMapper, idMapper, consumer);
+ consumer.accept(d, children);
+ result.add(d);
+ }
+ }
+ return result;
+ }
+
+ /**
* 鏁扮粍鍊掑簭
* @param bytes
* @param <T>
--
Gitblit v1.9.1