From 9eb8988d9cce983ab2cee6d299e6819ae1c8ba87 Mon Sep 17 00:00:00 2001
From: DB <2502523450@qq.com>
Date: Thu, 19 Oct 2023 21:51:22 +0800
Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=9F=8E=E8=A7=92=E8=89=B2=E5=AE=9A?=
=?UTF-8?q?=E5=88=B6=E6=9F=A5=E8=AF=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/cpop/core/config/SecurityConfig.java | 6 +-
.../MiniProgramAuthenticationFilter.java | 2 +-
...UsernamePasswordAuthenticationFilter.java} | 4 +-
.../impl/OamStaffDetailsServiceImpl.java | 2 +-
Cpop-Mall/pom.xml | 6 ++
.../controller/MallRoleController.java | 7 +-
.../cpop/mall/business/entity/RoleBrand.java | 10 +--
.../business/service/RoleBrandService.java | 13 ++-
.../service/impl/RoleBrandServiceImpl.java | 82 ++++++++++++++++---
.../cpop/mall/business/vo/MallRolePageVo.java | 9 +-
.../com/cpop/system/business/bo/RoleBo.java | 6 ++
11 files changed, 112 insertions(+), 35 deletions(-)
rename Cpop-Core/src/main/java/com/cpop/core/gateway/oam/{OamUsernamePasswordAuthenticationFilter.java => CpopUsernamePasswordAuthenticationFilter.java} (91%)
diff --git a/Cpop-Core/src/main/java/com/cpop/core/config/SecurityConfig.java b/Cpop-Core/src/main/java/com/cpop/core/config/SecurityConfig.java
index 14601e2..8c0b0ae 100644
--- a/Cpop-Core/src/main/java/com/cpop/core/config/SecurityConfig.java
+++ b/Cpop-Core/src/main/java/com/cpop/core/config/SecurityConfig.java
@@ -6,7 +6,7 @@ import com.cpop.core.filter.JwtAuthenticationFilter;
import com.cpop.core.filter.RepeatableFilter;
import com.cpop.core.gateway.miniProgram.MiniProgramAuthenticationFilter;
import com.cpop.core.gateway.miniProgram.MiniProgramAuthenticationProvider;
-import com.cpop.core.gateway.oam.OamUsernamePasswordAuthenticationFilter;
+import com.cpop.core.gateway.oam.CpopUsernamePasswordAuthenticationFilter;
import com.cpop.core.gateway.sys.SysAuthenticationFilter;
import com.cpop.core.gateway.sys.SysAuthenticationProvider;
import com.cpop.core.handler.*;
@@ -126,8 +126,8 @@ public class SecurityConfig implements WebMvcConfigurer {
* @return OamUsernamePasswordAuthenticationFilter oma管理器
*/
@Bean
- public OamUsernamePasswordAuthenticationFilter oamLoginFilter(AuthenticationManager authenticationManager) {
- OamUsernamePasswordAuthenticationFilter loginFilter = new OamUsernamePasswordAuthenticationFilter();
+ public CpopUsernamePasswordAuthenticationFilter oamLoginFilter(AuthenticationManager authenticationManager) {
+ CpopUsernamePasswordAuthenticationFilter loginFilter = new CpopUsernamePasswordAuthenticationFilter();
loginFilter.setFilterProcessesUrl("/login");
loginFilter.setAuthenticationManager(authenticationManager);
loginFilter.setAuthenticationSuccessHandler(loginSuccessHandler);
diff --git a/Cpop-Core/src/main/java/com/cpop/core/gateway/miniProgram/MiniProgramAuthenticationFilter.java b/Cpop-Core/src/main/java/com/cpop/core/gateway/miniProgram/MiniProgramAuthenticationFilter.java
index 49e58ff..f6e9451 100644
--- a/Cpop-Core/src/main/java/com/cpop/core/gateway/miniProgram/MiniProgramAuthenticationFilter.java
+++ b/Cpop-Core/src/main/java/com/cpop/core/gateway/miniProgram/MiniProgramAuthenticationFilter.java
@@ -23,7 +23,7 @@ public class MiniProgramAuthenticationFilter extends AbstractAuthenticationProce
public MiniProgramAuthenticationFilter() {
- super(new AntPathRequestMatcher("/miniProgramLogin", "POST"));
+ super(new AntPathRequestMatcher("/miniLogin", "POST"));
}
@Override
diff --git a/Cpop-Core/src/main/java/com/cpop/core/gateway/oam/OamUsernamePasswordAuthenticationFilter.java b/Cpop-Core/src/main/java/com/cpop/core/gateway/oam/CpopUsernamePasswordAuthenticationFilter.java
similarity index 91%
rename from Cpop-Core/src/main/java/com/cpop/core/gateway/oam/OamUsernamePasswordAuthenticationFilter.java
rename to Cpop-Core/src/main/java/com/cpop/core/gateway/oam/CpopUsernamePasswordAuthenticationFilter.java
index 620419a..b5d047b 100644
--- a/Cpop-Core/src/main/java/com/cpop/core/gateway/oam/OamUsernamePasswordAuthenticationFilter.java
+++ b/Cpop-Core/src/main/java/com/cpop/core/gateway/oam/CpopUsernamePasswordAuthenticationFilter.java
@@ -16,9 +16,9 @@ import java.util.Map;
/**
* @author DB
* @create 2023-04-05 17:38
- * OAM管理系统为基础认证系统,使用默认的过滤认证方式
+ * Cpop管理系统为基础认证系统,使用默认的过滤认证方式
*/
-public class OamUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
+public class CpopUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
@SuppressWarnings("rawtypes")
@Override
diff --git a/Cpop-Core/src/main/java/com/cpop/core/service/impl/OamStaffDetailsServiceImpl.java b/Cpop-Core/src/main/java/com/cpop/core/service/impl/OamStaffDetailsServiceImpl.java
index c3955c7..69cdc08 100644
--- a/Cpop-Core/src/main/java/com/cpop/core/service/impl/OamStaffDetailsServiceImpl.java
+++ b/Cpop-Core/src/main/java/com/cpop/core/service/impl/OamStaffDetailsServiceImpl.java
@@ -39,7 +39,7 @@ public class OamStaffDetailsServiceImpl implements UserDetailsService {
* @author DB
* @date 2023/09/11 10:57
* @param username 用户名
- * @return org.springframework.security.core.userdetails.UserDetails
+ * @return org.springframework.security.core.user.details.UserDetails
*/
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
diff --git a/Cpop-Mall/pom.xml b/Cpop-Mall/pom.xml
index b5574b6..4bf0859 100644
--- a/Cpop-Mall/pom.xml
+++ b/Cpop-Mall/pom.xml
@@ -19,10 +19,16 @@
com.cpop
Cpop-Core
+
com.cpop
Cpop-System
+
+
+ com.cpop
+ Cpop-Jambox
+
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/MallRoleController.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/MallRoleController.java
index 8599566..2d15c3c 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/MallRoleController.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/controller/MallRoleController.java
@@ -12,7 +12,6 @@ import com.cpop.system.business.bo.RoleStatusBo;
import com.cpop.system.business.service.MenuService;
import com.cpop.system.business.service.RoleService;
import com.cpop.system.business.vo.MenuVo;
-import com.cpop.system.business.vo.RolePageVo;
import com.mybatisflex.core.paginate.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -67,9 +66,9 @@ public class MallRoleController {
@PreAuthorize("@aps.hasPermission('system:role:insert')")
@OperationLog(operationLogEnumType = OperationLogEnum.INSERT_OAM_ROLE)
@ApiOperation("新增商城角色")
- @PostMapping("/insertSysRole")
- public R insertSysRole(@RequestBody @Validated RoleBo bo) {
- roleService.insertSysRole(bo);
+ @PostMapping("/insertMallRole")
+ public R insertMallRole(@RequestBody @Validated RoleBo bo) {
+ roleBrandService.insertMallRole(bo);
return R.ok();
}
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/entity/RoleBrand.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/entity/RoleBrand.java
index 90affb7..2657667 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/entity/RoleBrand.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/entity/RoleBrand.java
@@ -5,13 +5,11 @@ import com.cpop.core.base.entity.BaseInsertListener;
import com.cpop.core.base.entity.BaseUpdateListener;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.Table;
-import java.io.Serializable;
-import java.time.LocalDateTime;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
+import java.io.Serializable;
+
/**
* 商城-角色-品牌id 实体类。
*
@@ -43,8 +41,4 @@ public class RoleBrand extends BaseEntity implements Serializable {
*/
private String brandId;
-
-
-
-
}
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/RoleBrandService.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/RoleBrandService.java
index 63d4277..2d4c65a 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/RoleBrandService.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/RoleBrandService.java
@@ -1,11 +1,11 @@
package com.cpop.mall.business.service;
+import com.cpop.mall.business.entity.RoleBrand;
import com.cpop.mall.business.vo.MallRolePageVo;
+import com.cpop.system.business.bo.RoleBo;
import com.cpop.system.business.bo.RolePageBo;
-import com.cpop.system.business.vo.RolePageVo;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.service.IService;
-import com.cpop.mall.business.entity.RoleBrand;
/**
* 商城-角色-品牌id 服务层。
@@ -23,4 +23,13 @@ public interface RoleBrandService extends IService {
* @return R>
*/
Page getMallRolePageList(RolePageBo bo);
+
+ /**
+ * @descriptions 新增角色
+ * @author DB
+ * @date 2023/10/12 10:48
+ * @param bo 请求参数
+ * @return: com.cpop.core.base.R
+ */
+ void insertMallRole(RoleBo bo);
}
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/RoleBrandServiceImpl.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/RoleBrandServiceImpl.java
index 0c47ae4..97c9614 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/RoleBrandServiceImpl.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/service/impl/RoleBrandServiceImpl.java
@@ -1,19 +1,37 @@
package com.cpop.mall.business.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.cpop.common.utils.bean.BeanUtils;
import com.cpop.core.base.entity.PageDomain;
+import com.cpop.core.utils.SecurityUtils;
+import com.cpop.core.utils.SpringUtils;
import com.cpop.core.utils.sql.SqlUtils;
-import com.cpop.mall.business.vo.MallRolePageVo;
-import com.cpop.system.business.bo.RolePageBo;
-import com.cpop.system.business.vo.RolePageVo;
-import com.mybatisflex.core.paginate.Page;
-import com.mybatisflex.core.query.QueryWrapper;
-import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.cpop.mall.business.entity.RoleBrand;
import com.cpop.mall.business.mapper.RoleBrandMapper;
import com.cpop.mall.business.service.RoleBrandService;
+import com.cpop.mall.business.vo.MallRolePageVo;
+import com.cpop.system.business.bo.RoleBo;
+import com.cpop.system.business.bo.RolePageBo;
+import com.cpop.system.business.entity.Role;
+import com.cpop.system.business.entity.RoleMenu;
+import com.cpop.system.business.service.RoleMenuService;
+import com.cpop.system.business.service.RoleService;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import com.mybatisflex.spring.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+
+import static com.cpop.jambox.business.entity.table.BrandTableDef.BRAND;
import static com.cpop.mall.business.entity.table.RoleBrandTableDef.ROLE_BRAND;
+import static com.cpop.mall.business.entity.table.StaffTableDef.STAFF;
+import static com.cpop.system.business.entity.table.MenuTableDef.MENU;
+import static com.cpop.system.business.entity.table.RoleMenuTableDef.ROLE_MENU;
+import static com.cpop.system.business.entity.table.RoleTableDef.ROLE;
+import static com.mybatisflex.core.query.QueryMethods.groupConcat;
/**
* 商城-角色-品牌id 服务层实现。
@@ -33,14 +51,58 @@ public class RoleBrandServiceImpl extends ServiceImpl getMallRolePageList(RolePageBo bo) {
+ //获取当前登录用户信息
+ JSONObject staffInfo = SecurityUtils.getInstance().getLoginStaffInfo();
//获取分页参数
PageDomain pageDomain = SqlUtils.getInstance().getPageDomain();
- this.mapper.paginateAs(pageDomain.getPageNum(),pageDomain.getPageSize(),
+ return this.mapper.paginateAs(pageDomain.getPageNum(), pageDomain.getPageSize(),
QueryWrapper.create()
.select(ROLE_BRAND.ALL_COLUMNS)
+ //角色信息
+ .select(ROLE.ROLE_NAME, ROLE.ROLE_VALUE, ROLE.STATUS, ROLE.REMARK, ROLE.ORDER_NO, ROLE.CREATE_TIME)
+ .select(groupConcat(MENU.ID).as(MallRolePageVo::getMenuIds))
+ .leftJoin(STAFF).on(STAFF.ROLE_BRAND_ID.eq(ROLE_BRAND.ID))
+ .leftJoin(ROLE).on(ROLE.ID.eq(ROLE_BRAND.ROLE_ID))
+ //左联品牌表
+ .leftJoin(BRAND).on(ROLE_BRAND.ID.eq(ROLE_BRAND.BRAND_ID))
+ //角色菜单中甲表
+ .leftJoin(ROLE_MENU).on(ROLE_MENU.ROLE_ID.eq(ROLE_BRAND.ROLE_ID))
+ .leftJoin(MENU).on(MENU.ID.eq(ROLE_MENU.MENU_ID))
+ .where(STAFF.ID.eq(staffInfo.getString("id")))
+ .and(ROLE.ROLE_NAME.like(bo.getRoleName()))
+ .and(ROLE.STATUS.eq(bo.getStatus()))
+ .groupBy(ROLE.ID)
+ .orderBy(ROLE.ORDER_NO.asc())
+ , MallRolePageVo.class);
+ }
- ,RolePageVo.class);
-
- return null;
+ /**
+ * @descriptions 新增角色
+ * @author DB
+ * @date 2023/10/12 10:48
+ * @param bo 请求参数
+ * @return: com.cpop.core.base.R
+ */
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void insertMallRole(RoleBo bo) {
+ Role role = BeanUtils.mapToClass(bo, Role.class);
+ SpringUtils.getBean(RoleService.class).save(role);
+ //将菜单信息录入中间表
+ if (!bo.getMenuIds().isEmpty()) {
+ List roleMenus = new ArrayList<>();
+ bo.getMenuIds().forEach(item -> {
+ RoleMenu roleMenu = new RoleMenu();
+ roleMenu.setMenuId(item);
+ roleMenu.setRoleId(role.getId());
+ roleMenus.add(roleMenu);
+ });
+ SpringUtils.getBean(RoleMenuService.class).saveBatch(roleMenus);
+ }
+ //录入商城角色品牌表
+ RoleBrand roleBrand = new RoleBrand();
+ roleBrand.setRoleId(role.getId())
+ .setBrandId(bo.getBrandId());
+ this.save(roleBrand);
}
}
diff --git a/Cpop-Mall/src/main/java/com/cpop/mall/business/vo/MallRolePageVo.java b/Cpop-Mall/src/main/java/com/cpop/mall/business/vo/MallRolePageVo.java
index 787e348..e72fd2d 100644
--- a/Cpop-Mall/src/main/java/com/cpop/mall/business/vo/MallRolePageVo.java
+++ b/Cpop-Mall/src/main/java/com/cpop/mall/business/vo/MallRolePageVo.java
@@ -1,5 +1,6 @@
package com.cpop.mall.business.vo;
+import com.cpop.core.annontation.StringArrayConvert;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.Column;
import io.swagger.annotations.ApiModel;
@@ -8,8 +9,7 @@ import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
-import java.sql.Timestamp;
-import java.util.List;
+import java.time.LocalDateTime;
/**
* @author DB
@@ -70,12 +70,13 @@ public class MallRolePageVo implements Serializable {
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8")
@ApiModelProperty("更新时间")
- private Timestamp updateTime;
+ private LocalDateTime updateTime;
/**
* 角色所属菜单id集合
*/
+ @StringArrayConvert
@ApiModelProperty("角色所属菜单id集合")
@Column(ignore = true)
- private List menuIds;
+ private String menuIds;
}
diff --git a/Cpop-System/src/main/java/com/cpop/system/business/bo/RoleBo.java b/Cpop-System/src/main/java/com/cpop/system/business/bo/RoleBo.java
index 68a94dd..2ad28eb 100644
--- a/Cpop-System/src/main/java/com/cpop/system/business/bo/RoleBo.java
+++ b/Cpop-System/src/main/java/com/cpop/system/business/bo/RoleBo.java
@@ -69,4 +69,10 @@ public class RoleBo implements Serializable {
@ApiModelProperty("菜单集合")
private List menuIds;
+ /**
+ * 当前品牌id
+ */
+ @ApiModelProperty("菜单集合")
+ private String brandId;
+
}