From 2b4b341117f19c861a621d3bad25fcb90ddb8736 Mon Sep 17 00:00:00 2001 From: xinsin <2890826955@qq.com> Date: Sat, 29 Apr 2023 22:38:30 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20Feat:=20=E6=9D=83=E9=99=90=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=8E=A5=E5=8F=A3=E5=9F=BA=E6=9C=AC=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../xinsin/config/SecurityConfiguration.java | 11 ++- .../xinsin/controller/AccountController.java | 18 +++++ .../controller/AuthPermissionsController.java | 34 +++++++++ ...ntroller.java => AuthRolesController.java} | 4 +- .../AuthRolesPermissionController.java | 20 ++++++ .../controller/PermissionsController.java | 15 ---- ...Mapper.java => AuthPermissionsMapper.java} | 2 +- ...{RolesMapper.java => AuthRolesMapper.java} | 2 +- .../mapper/AuthRolesPermissionsMapper.java | 14 ++++ .../java/top/xinsin/pojo/AuthPermissions.java | 9 +-- src/main/java/top/xinsin/pojo/AuthRoles.java | 4 +- .../top/xinsin/pojo/AuthRolesPermissions.java | 37 ++++++++++ .../pojo/vo/AuthPermissionsAndUserVo.java | 56 +++++++++++++++ .../top/xinsin/service/AccountService.java | 69 +++++++++++++++---- .../service/AuthPermissionsService.java | 67 ++++++++++++++++++ ....java => AuthRolesPermissionsService.java} | 7 +- .../top/xinsin/service/AuthRolesService.java | 16 +++++ .../xinsin/service/PermissionsService.java | 14 ---- .../java/top/xinsin/util/PojoToVoUtils.java | 16 +++++ src/main/resources/application.yml | 10 +-- src/main/resources/log4j-spring.properties | 12 ++++ ...nsMapper.xml => AuthPermissionsMapper.xml} | 2 +- .../{RolesMapper.xml => AuthRolesMapper.xml} | 2 +- src/test/java/top/xinsin/MainTest.java | 2 +- 25 files changed, 374 insertions(+), 71 deletions(-) create mode 100644 src/main/java/top/xinsin/controller/AuthPermissionsController.java rename src/main/java/top/xinsin/controller/{RolesController.java => AuthRolesController.java} (78%) create mode 100644 src/main/java/top/xinsin/controller/AuthRolesPermissionController.java delete mode 100644 src/main/java/top/xinsin/controller/PermissionsController.java rename src/main/java/top/xinsin/mapper/{PermissionsMapper.java => AuthPermissionsMapper.java} (76%) rename src/main/java/top/xinsin/mapper/{RolesMapper.java => AuthRolesMapper.java} (78%) create mode 100644 src/main/java/top/xinsin/mapper/AuthRolesPermissionsMapper.java create mode 100644 src/main/java/top/xinsin/pojo/AuthRolesPermissions.java create mode 100644 src/main/java/top/xinsin/pojo/vo/AuthPermissionsAndUserVo.java create mode 100644 src/main/java/top/xinsin/service/AuthPermissionsService.java rename src/main/java/top/xinsin/service/{RolesService.java => AuthRolesPermissionsService.java} (58%) create mode 100644 src/main/java/top/xinsin/service/AuthRolesService.java delete mode 100644 src/main/java/top/xinsin/service/PermissionsService.java create mode 100644 src/main/java/top/xinsin/util/PojoToVoUtils.java create mode 100644 src/main/resources/log4j-spring.properties rename src/main/resources/mapper/{PermissionsMapper.xml => AuthPermissionsMapper.xml} (93%) rename src/main/resources/mapper/{RolesMapper.xml => AuthRolesMapper.xml} (92%) diff --git a/pom.xml b/pom.xml index 365e82a..6afbc0b 100644 --- a/pom.xml +++ b/pom.xml @@ -99,7 +99,7 @@ com.baomidou mybatis-plus-generator - 3.5.1 + 3.5.3.1 diff --git a/src/main/java/top/xinsin/config/SecurityConfiguration.java b/src/main/java/top/xinsin/config/SecurityConfiguration.java index 3e88c9f..2186f49 100644 --- a/src/main/java/top/xinsin/config/SecurityConfiguration.java +++ b/src/main/java/top/xinsin/config/SecurityConfiguration.java @@ -1,5 +1,6 @@ package top.xinsin.config; +import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; @@ -97,17 +98,13 @@ public class SecurityConfiguration { if (authority.startsWith("ROLE_id=")){ jsonObject.fluentPut("id",authority.replace("ROLE_id=", "")); } - if (authority.startsWith("ROLE_role=")){ - jsonObject.fluentPut("role",authority.replace("ROLE_role=","")); - } }); - jsonObject - .fluentPut("message","登陆成功"); + jsonObject.fluentPut("message","登陆成功"); httpServletResponse.setStatus(HttpCodes.HTTP_CODES200.getCode()); - httpServletResponse.getWriter().write(JSONObject.toJSONString(R.success(jsonObject))); + httpServletResponse.getWriter().write(JSON.toJSONString(R.success(jsonObject))); } else if(httpServletRequest.getRequestURI().endsWith("/logout")) { httpServletResponse.setStatus(HttpCodes.HTTP_CODES200.getCode()); - httpServletResponse.getWriter().write(JSONObject.toJSONString(R.success("退出登录成功"))); + httpServletResponse.getWriter().write(JSON.toJSONString(R.success("退出登录成功"))); } } private void onFailureLoginHandler(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse,AuthenticationException authentication) throws IOException { diff --git a/src/main/java/top/xinsin/controller/AccountController.java b/src/main/java/top/xinsin/controller/AccountController.java index f66c2a7..45dfb8c 100644 --- a/src/main/java/top/xinsin/controller/AccountController.java +++ b/src/main/java/top/xinsin/controller/AccountController.java @@ -2,6 +2,11 @@ package top.xinsin.controller; import com.alibaba.fastjson2.JSONObject; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.User; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -37,4 +42,17 @@ public class AccountController { @RequestMapping(path = "/getUser", method = RequestMethod.GET) public R getUser(@RequestParam("page") Integer page, @RequestParam("num") Integer num) {return this.accountService.getUser(page, num);} + @RequestMapping(path = "/getUserInfo",method = RequestMethod.GET) + public R getUserInfo(){ + GrantedAuthority grantedAuthority = ((User) SecurityContextHolder + .getContext() + .getAuthentication() + .getPrincipal()) + .getAuthorities() + .stream() + .filter(e -> e.getAuthority().startsWith("ROLE_id=")) + .findFirst() + .get(); + return accountService.getUserInfo(Integer.parseInt(grantedAuthority.getAuthority().replace("ROLE_id=",""))); + } } diff --git a/src/main/java/top/xinsin/controller/AuthPermissionsController.java b/src/main/java/top/xinsin/controller/AuthPermissionsController.java new file mode 100644 index 0000000..2f8751f --- /dev/null +++ b/src/main/java/top/xinsin/controller/AuthPermissionsController.java @@ -0,0 +1,34 @@ +package top.xinsin.controller; + +import com.alibaba.fastjson2.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import top.xinsin.pojo.AuthPermissions; +import top.xinsin.pojo.Commission; +import top.xinsin.service.AuthPermissionsService; +import top.xinsin.service.AuthRolesService; +import top.xinsin.util.R; + +/** + * @author xinsin + * Created On 2023/4/24 21:07 + * @version 1.0 + */ +@RestController +@RequestMapping("/authPermissions") +public class AuthPermissionsController { + + @Autowired + private AuthPermissionsService authPermissionsService; + + @RequestMapping(path = "/addAuthPermissions",method = RequestMethod.POST) + public R addAuthPermissions(@RequestBody AuthPermissions authPermissions){return authPermissionsService.addAuthPermissions(authPermissions);} + @RequestMapping(path = "/changeAuthPermissions",method = RequestMethod.POST) + public R changeAuthPermissions(@RequestBody AuthPermissions authPermissions){return authPermissionsService.changeAuthPermissions(authPermissions);} + @RequestMapping(path = "/delAuthPermissions",method = RequestMethod.GET) + public R delAuthPermissions(@RequestParam("id")Integer id){return authPermissionsService.delAuthPermissions(id);} + @RequestMapping(path = "/getAuthPermissions",method = RequestMethod.GET) + public R getAuthPermissions(@RequestParam("page")Integer page, @RequestParam("num")Integer num){return authPermissionsService.getAuthPermissions(page,num);} + @RequestMapping(path = "/changeAuthPermissionsStats", method = RequestMethod.GET) + public R changeAuthPermissionsStats(@RequestParam("authPermissionId") Integer authPermissionId, @RequestParam("status") Boolean status) {return authPermissionsService.changeAuthPermissionsStats(authPermissionId, status);} +} \ No newline at end of file diff --git a/src/main/java/top/xinsin/controller/RolesController.java b/src/main/java/top/xinsin/controller/AuthRolesController.java similarity index 78% rename from src/main/java/top/xinsin/controller/RolesController.java rename to src/main/java/top/xinsin/controller/AuthRolesController.java index bc7a9c2..292457e 100644 --- a/src/main/java/top/xinsin/controller/RolesController.java +++ b/src/main/java/top/xinsin/controller/AuthRolesController.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.RestController; * @version 1.0 */ @RestController -@RequestMapping("/roles") -public class RolesController { +@RequestMapping("/authRoles") +public class AuthRolesController { } \ No newline at end of file diff --git a/src/main/java/top/xinsin/controller/AuthRolesPermissionController.java b/src/main/java/top/xinsin/controller/AuthRolesPermissionController.java new file mode 100644 index 0000000..2f22b3c --- /dev/null +++ b/src/main/java/top/xinsin/controller/AuthRolesPermissionController.java @@ -0,0 +1,20 @@ +package top.xinsin.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import top.xinsin.service.AuthRolesPermissionsService; + +/** + * @author xinsin + * Created On 2023/4/29 21:05 + * @version 1.0 + */ +@RestController +@RequestMapping("/authRolesPermission") +public class AuthRolesPermissionController { + @Autowired + private AuthRolesPermissionsService authRolesPermissionsService; + + +} diff --git a/src/main/java/top/xinsin/controller/PermissionsController.java b/src/main/java/top/xinsin/controller/PermissionsController.java deleted file mode 100644 index 0c410aa..0000000 --- a/src/main/java/top/xinsin/controller/PermissionsController.java +++ /dev/null @@ -1,15 +0,0 @@ -package top.xinsin.controller; - -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author xinsin - * Created On 2023/4/24 21:07 - * @version 1.0 - */ -@RestController -@RequestMapping("/permissions") -public class PermissionsController { - -} \ No newline at end of file diff --git a/src/main/java/top/xinsin/mapper/PermissionsMapper.java b/src/main/java/top/xinsin/mapper/AuthPermissionsMapper.java similarity index 76% rename from src/main/java/top/xinsin/mapper/PermissionsMapper.java rename to src/main/java/top/xinsin/mapper/AuthPermissionsMapper.java index 57b0082..3a5da82 100644 --- a/src/main/java/top/xinsin/mapper/PermissionsMapper.java +++ b/src/main/java/top/xinsin/mapper/AuthPermissionsMapper.java @@ -10,5 +10,5 @@ import top.xinsin.pojo.AuthPermissions; * @version 1.0 */ @Mapper -public interface PermissionsMapper extends BaseMapper { +public interface AuthPermissionsMapper extends BaseMapper { } diff --git a/src/main/java/top/xinsin/mapper/RolesMapper.java b/src/main/java/top/xinsin/mapper/AuthRolesMapper.java similarity index 78% rename from src/main/java/top/xinsin/mapper/RolesMapper.java rename to src/main/java/top/xinsin/mapper/AuthRolesMapper.java index 03cf517..5d55817 100644 --- a/src/main/java/top/xinsin/mapper/RolesMapper.java +++ b/src/main/java/top/xinsin/mapper/AuthRolesMapper.java @@ -10,5 +10,5 @@ import top.xinsin.pojo.AuthRoles; * @version 1.0 */ @Mapper -public interface RolesMapper extends BaseMapper { +public interface AuthRolesMapper extends BaseMapper { } \ No newline at end of file diff --git a/src/main/java/top/xinsin/mapper/AuthRolesPermissionsMapper.java b/src/main/java/top/xinsin/mapper/AuthRolesPermissionsMapper.java new file mode 100644 index 0000000..75a646a --- /dev/null +++ b/src/main/java/top/xinsin/mapper/AuthRolesPermissionsMapper.java @@ -0,0 +1,14 @@ +package top.xinsin.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import top.xinsin.pojo.AuthRolesPermissions; + +/** + * @author xinsin + * Created On 2023/4/29 20:28 + * @version 1.0 + */ +@Mapper +public interface AuthRolesPermissionsMapper extends BaseMapper { +} diff --git a/src/main/java/top/xinsin/pojo/AuthPermissions.java b/src/main/java/top/xinsin/pojo/AuthPermissions.java index 6692691..0d806a9 100644 --- a/src/main/java/top/xinsin/pojo/AuthPermissions.java +++ b/src/main/java/top/xinsin/pojo/AuthPermissions.java @@ -8,6 +8,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; /** * @author xinsin @@ -27,16 +28,16 @@ public class AuthPermissions implements Serializable { private String permissionCode; @TableField("description") private String description; - @TableField("account_id") - private Integer accountId; + @TableField("create_id") + private Integer createId; @TableField("create_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private LocalDateTime updateTime; + private Date updateTime; @TableField("status") private Boolean status; @TableField("del") diff --git a/src/main/java/top/xinsin/pojo/AuthRoles.java b/src/main/java/top/xinsin/pojo/AuthRoles.java index c172885..0e0d270 100644 --- a/src/main/java/top/xinsin/pojo/AuthRoles.java +++ b/src/main/java/top/xinsin/pojo/AuthRoles.java @@ -25,8 +25,8 @@ public class AuthRoles implements Serializable { private String roleName; @TableField("description") private String description; - @TableField("account_id") - private Integer accountId; + @TableField("create_id") + private Integer createId; @TableField("create_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") diff --git a/src/main/java/top/xinsin/pojo/AuthRolesPermissions.java b/src/main/java/top/xinsin/pojo/AuthRolesPermissions.java new file mode 100644 index 0000000..8c61f24 --- /dev/null +++ b/src/main/java/top/xinsin/pojo/AuthRolesPermissions.java @@ -0,0 +1,37 @@ +package top.xinsin.pojo; + +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * @author xinsin + * Created On 2023/4/29 14:41 + * @version 1.0 + */ +@Data +@TableName("auth_roles_permissions") +public class AuthRolesPermissions implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Integer roleId; + private Integer permissionId; + private Integer createId; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + @TableLogic + private Integer del; + +} diff --git a/src/main/java/top/xinsin/pojo/vo/AuthPermissionsAndUserVo.java b/src/main/java/top/xinsin/pojo/vo/AuthPermissionsAndUserVo.java new file mode 100644 index 0000000..92e9b83 --- /dev/null +++ b/src/main/java/top/xinsin/pojo/vo/AuthPermissionsAndUserVo.java @@ -0,0 +1,56 @@ +package top.xinsin.pojo.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; +import top.xinsin.pojo.AuthPermissions; + +import java.util.Date; + +/** + * @author xinsin + * Created On 2023/4/29 21:27 + * @version 1.0 + */ +@Data +public class AuthPermissionsAndUserVo { + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + @TableField("permission_name") + private String permissionName; + @TableField("permission_code") + private String permissionCode; + @TableField("description") + private String description; + @TableField(exist = false) + private String createName; + @TableField("create_id") + private Integer createId; + @TableField("create_time") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + @TableField("update_time") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + @TableField("status") + private Boolean status; + + public AuthPermissionsAndUserVo(AuthPermissions authPermissions) { + this.id = authPermissions.getId(); + this.permissionName = authPermissions.getPermissionName(); + this.permissionCode = authPermissions.getPermissionCode(); + this.description = authPermissions.getDescription(); + this.createId = authPermissions.getCreateId(); + this.createTime = authPermissions.getCreateTime(); + this.updateTime = authPermissions.getUpdateTime(); + this.status = authPermissions.getStatus(); + } +} diff --git a/src/main/java/top/xinsin/service/AccountService.java b/src/main/java/top/xinsin/service/AccountService.java index e62e4a4..8e3666c 100644 --- a/src/main/java/top/xinsin/service/AccountService.java +++ b/src/main/java/top/xinsin/service/AccountService.java @@ -1,5 +1,6 @@ package top.xinsin.service; +import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -12,11 +13,18 @@ import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import top.xinsin.mapper.AccountMapper; +import top.xinsin.mapper.AuthPermissionsMapper; +import top.xinsin.mapper.AuthRolesMapper; +import top.xinsin.mapper.AuthRolesPermissionsMapper; import top.xinsin.pojo.AuthAccount; +import top.xinsin.pojo.AuthPermissions; +import top.xinsin.pojo.AuthRoles; +import top.xinsin.pojo.AuthRolesPermissions; import top.xinsin.util.HttpCodes; import top.xinsin.util.R; import java.util.Date; +import java.util.HashMap; import java.util.List; /** @@ -29,21 +37,32 @@ import java.util.List; public class AccountService implements UserDetailsService { @Autowired private AccountMapper accountMapper; + @Autowired + private AuthRolesPermissionsMapper authRolesPermissionsMapper; + @Autowired + private AuthRolesMapper authRolesMapper; + @Autowired + private AuthPermissionsMapper authPermissionsMapper; + BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(); - public AccountService() { - } - public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - System.out.println(username); if (username == null) { throw new UsernameNotFoundException("用户名不能为空"); } else { - AuthAccount authAccount = this.accountMapper.selectOne(new LambdaQueryWrapper().eq(AuthAccount::getUsername, username).or().eq(AuthAccount::getEmail, username).eq(AuthAccount::getStatus, true)); + AuthAccount authAccount = this.accountMapper.selectOne(new LambdaQueryWrapper() + .eq(AuthAccount::getUsername, username) + .or() + .eq(AuthAccount::getEmail, username) + .eq(AuthAccount::getStatus, true)); if (authAccount == null) { throw new UsernameNotFoundException("用户名或密码错误"); } else { - return User.withUsername(authAccount.getUsername()).password(authAccount.getPassword()).roles(new String[]{"role=" + authAccount.getRoleId(), "id=" + authAccount.getId()}).build(); + return User + .withUsername(authAccount.getUsername()) + .password(authAccount.getPassword()) + .roles("id=" + authAccount.getId()) + .build(); } } } @@ -81,19 +100,21 @@ public class AccountService implements UserDetailsService { AuthAccount authAccount = new AuthAccount(); authAccount.setPassword(this.encoder.encode(newPassword)); LambdaQueryWrapper accountLambdaQueryWrapper = new LambdaQueryWrapper<>(); - accountLambdaQueryWrapper.eq(AuthAccount::getId, userId).eq(AuthAccount::getPassword, this.encoder.encode(oldPassword)); + accountLambdaQueryWrapper + .eq(AuthAccount::getId, userId) + .eq(AuthAccount::getPassword, this.encoder.encode(oldPassword)); int update = this.accountMapper.update(authAccount, accountLambdaQueryWrapper); return update == 1 ? R.success("修改密码成功") : R.failed(HttpCodes.HTTP_CODES555, "修改密码失败,请联系服务器管理员"); } public R getUser(Integer page, Integer num) { - Page accountPage = new Page<>((long)page, (long)num); + Page accountPage = new Page<>(page, num); Page accountPage1 = this.accountMapper.selectPage(accountPage, null); JSONObject jsonObject = new JSONObject(); - List collect = accountPage1.getRecords().stream().peek((e) -> { - e.setPassword((String)null); - }).toList(); - jsonObject.fluentPut("info", collect).fluentPut("total", accountPage1.getTotal()); + List collect = accountPage1.getRecords().stream().peek((e) -> e.setPassword(null)).toList(); + jsonObject + .fluentPut("info", collect) + .fluentPut("total", accountPage1.getTotal()); return R.success(jsonObject); } @@ -101,4 +122,28 @@ public class AccountService implements UserDetailsService { int delete = this.accountMapper.deleteById(id); return delete == 1 ? R.success("删除用户成功") : R.failed(HttpCodes.HTTP_CODES555, "删除用户失败,请联系服务器管理员"); } + + public R getUserInfo(int rolesId) { + JSONObject globalReturnData = new JSONObject(); + JSONArray globalReturnPermissionList = new JSONArray(); + List authRolesPermissions = authRolesPermissionsMapper + .selectList(new LambdaQueryWrapper() + .eq(AuthRolesPermissions::getRoleId, rolesId)); + List permissionsList = authRolesPermissions.stream().map(AuthRolesPermissions::getPermissionId).toList(); + List authPermissions = authPermissionsMapper.selectList(new LambdaQueryWrapper() + .in(AuthPermissions::getId, permissionsList)); + authPermissions.forEach(e -> { + HashMap returnPermissionJson = new HashMap<>(); + returnPermissionJson.put("permissionName",e.getPermissionName()); + returnPermissionJson.put("permissionCode",e.getPermissionCode()); + globalReturnPermissionList.add(returnPermissionJson); + }); + AuthRoles authRoles = authRolesMapper.selectOne(new LambdaQueryWrapper().eq(AuthRoles::getId, rolesId)); +// 角色名 + String roleName = authRoles.getRoleName(); + globalReturnData + .fluentPut("info",globalReturnPermissionList) + .fluentPut("roleName",roleName); + return R.success(globalReturnData); + } } diff --git a/src/main/java/top/xinsin/service/AuthPermissionsService.java b/src/main/java/top/xinsin/service/AuthPermissionsService.java new file mode 100644 index 0000000..d918cbc --- /dev/null +++ b/src/main/java/top/xinsin/service/AuthPermissionsService.java @@ -0,0 +1,67 @@ +package top.xinsin.service; + +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.xinsin.mapper.AccountMapper; +import top.xinsin.mapper.AuthPermissionsMapper; +import top.xinsin.pojo.AuthAccount; +import top.xinsin.pojo.AuthPermissions; +import top.xinsin.pojo.vo.AuthPermissionsAndUserVo; +import top.xinsin.util.HttpCodes; +import top.xinsin.util.R; + +import java.util.*; + +import static org.springframework.data.util.Pair.toMap; + +/** + * @author xinsin + * Created On 2023/4/24 21:13 + * @version 1.0 + */ +@Service +public class AuthPermissionsService { + + @Autowired + private AuthPermissionsMapper authPermissionsMapper; + @Autowired + private AccountMapper accountMapper; + public R addAuthPermissions(AuthPermissions authPermissions) { + authPermissions.setCreateTime(new Date()); + int insert = authPermissionsMapper.insert(authPermissions); + return insert == 1 ? R.success(true) : R.failed(HttpCodes.HTTP_CODES555, false); + } + + public R changeAuthPermissions(AuthPermissions authPermissions) { + authPermissions.setUpdateTime(new Date()); + int update = authPermissionsMapper.updateById(authPermissions); + return update == 1 ? R.success(true) : R.failed(HttpCodes.HTTP_CODES555, false); + } + + public R delAuthPermissions(Integer id) { + int delete = authPermissionsMapper.deleteById(id); + return delete == 1 ? R.success(true) : R.failed(HttpCodes.HTTP_CODES555, false); + } + + public R getAuthPermissions(Integer page, Integer num) { + Page authPermissionsPage = new Page<>(page, num); + Page authPermissionsPage1 = authPermissionsMapper.selectPage(authPermissionsPage, null); + List records = authPermissionsPage1.getRecords(); + List integers = records.stream().map(AuthPermissions::getCreateId).toList(); + List authAccounts = accountMapper.selectList(new LambdaQueryWrapper() + .in(AuthAccount::getId, integers)); + Map map = new HashMap<>(); + authAccounts.forEach(e -> map.put(e.getId(), e.getUsername())); + List authPermissionsAndUserVos = records.stream().map(AuthPermissionsAndUserVo::new).toList(); + authPermissionsAndUserVos.forEach(e -> e.setCreateName(map.get(e.getCreateId()))); + return R.success(new JSONObject().fluentPut("info",authPermissionsAndUserVos).fluentPut("total",authPermissionsPage.getTotal())); + } + + public R changeAuthPermissionsStats(Integer authPermissionId, Boolean status) { + return R.success(""); + } +} diff --git a/src/main/java/top/xinsin/service/RolesService.java b/src/main/java/top/xinsin/service/AuthRolesPermissionsService.java similarity index 58% rename from src/main/java/top/xinsin/service/RolesService.java rename to src/main/java/top/xinsin/service/AuthRolesPermissionsService.java index d2c86d5..abe8afb 100644 --- a/src/main/java/top/xinsin/service/RolesService.java +++ b/src/main/java/top/xinsin/service/AuthRolesPermissionsService.java @@ -4,11 +4,10 @@ import org.springframework.stereotype.Service; /** * @author xinsin - * Created On 2023/4/24 21:13 + * Created On 2023/4/29 20:28 * @version 1.0 */ @Service -public class RolesService { - public RolesService() { - } +public class AuthRolesPermissionsService { + } diff --git a/src/main/java/top/xinsin/service/AuthRolesService.java b/src/main/java/top/xinsin/service/AuthRolesService.java new file mode 100644 index 0000000..e997805 --- /dev/null +++ b/src/main/java/top/xinsin/service/AuthRolesService.java @@ -0,0 +1,16 @@ +package top.xinsin.service; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import top.xinsin.mapper.AuthRolesMapper; + +/** + * @author xinsin + * Created On 2023/4/24 21:13 + * @version 1.0 + */ +@Service +public class AuthRolesService { + @Autowired + private AuthRolesMapper authRolesMapper; +} diff --git a/src/main/java/top/xinsin/service/PermissionsService.java b/src/main/java/top/xinsin/service/PermissionsService.java deleted file mode 100644 index 87702b6..0000000 --- a/src/main/java/top/xinsin/service/PermissionsService.java +++ /dev/null @@ -1,14 +0,0 @@ -package top.xinsin.service; - -import org.springframework.stereotype.Service; - -/** - * @author xinsin - * Created On 2023/4/24 21:13 - * @version 1.0 - */ -@Service -public class PermissionsService { - public PermissionsService() { - } -} diff --git a/src/main/java/top/xinsin/util/PojoToVoUtils.java b/src/main/java/top/xinsin/util/PojoToVoUtils.java new file mode 100644 index 0000000..016a4d4 --- /dev/null +++ b/src/main/java/top/xinsin/util/PojoToVoUtils.java @@ -0,0 +1,16 @@ +package top.xinsin.util; + +import org.springframework.beans.BeanUtils; + +/** + * @author xinsin + * Created On 2023/4/29 21:17 + * @version 1.0 + */ +public class PojoToVoUtils { + + public static T pojoToVo(T filed,Object data){ +// BeanUtils.copyProperties(); + return (T) new Object(); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 42fa8a2..84f06c1 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,9 +2,9 @@ server: port: 8001 spring: datasource: - username: commerce - password: Jix656dzD6St4YCn_ - url: jdbc:mysql://localhost:3306/commerce_system?serverTimezone=UTC-8 + username: commerce_system + password: Jix656dzD6St4YCn + url: jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8 driver-class-name: com.mysql.cj.jdbc.Driver # druid配置 type: com.alibaba.druid.pool.DruidDataSource @@ -36,8 +36,8 @@ spring: user: password: 123456 mybatis-plus: -# configuration: -# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: logic-delete-field: del # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) diff --git a/src/main/resources/log4j-spring.properties b/src/main/resources/log4j-spring.properties new file mode 100644 index 0000000..1ee0523 --- /dev/null +++ b/src/main/resources/log4j-spring.properties @@ -0,0 +1,12 @@ +# LOG4J?? +log4j.rootCategory=INFO,stdout,file +# ????? +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n +# ??????? +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.file=logs/springboot.log +log4j.appender.file.DatePattern='.'yyyy-MM-dd +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/src/main/resources/mapper/PermissionsMapper.xml b/src/main/resources/mapper/AuthPermissionsMapper.xml similarity index 93% rename from src/main/resources/mapper/PermissionsMapper.xml rename to src/main/resources/mapper/AuthPermissionsMapper.xml index 0e66b75..a67fc8d 100644 --- a/src/main/resources/mapper/PermissionsMapper.xml +++ b/src/main/resources/mapper/AuthPermissionsMapper.xml @@ -1,6 +1,6 @@ - + diff --git a/src/main/resources/mapper/RolesMapper.xml b/src/main/resources/mapper/AuthRolesMapper.xml similarity index 92% rename from src/main/resources/mapper/RolesMapper.xml rename to src/main/resources/mapper/AuthRolesMapper.xml index 5de7f0a..e7a332c 100644 --- a/src/main/resources/mapper/RolesMapper.xml +++ b/src/main/resources/mapper/AuthRolesMapper.xml @@ -1,6 +1,6 @@ - + diff --git a/src/test/java/top/xinsin/MainTest.java b/src/test/java/top/xinsin/MainTest.java index 14ef63d..17985cf 100644 --- a/src/test/java/top/xinsin/MainTest.java +++ b/src/test/java/top/xinsin/MainTest.java @@ -16,7 +16,7 @@ public class MainTest { @Test public void test01(){ - System.out.println(new BCryptPasswordEncoder().encode(DigestUtils.md5Hex("12345678"))); + System.out.println(new BCryptPasswordEncoder().encode(DigestUtils.md5Hex("xinsin"))); System.out.println(DigestUtils.md5Hex("xinsin")); }