mirror of
https://gitee.com/youlaitech/youlai-mall.git
synced 2024-12-22 20:54:26 +08:00
wip: 项目结构重构开发中
This commit is contained in:
parent
a5c0081885
commit
954bd11a2d
@ -23,13 +23,6 @@
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 单元测试 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Cloud & Alibaba -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
|
@ -17,6 +17,12 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 会员管理
|
||||
*
|
||||
* @author Ray
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
@Tag(name = "Admin-会员管理")
|
||||
@RestController
|
||||
@ -26,14 +32,14 @@ public class MemberController {
|
||||
|
||||
private final MemberService memberService;
|
||||
|
||||
@Operation(summary= "会员分页列表")
|
||||
@Operation(summary = "会员分页列表")
|
||||
@GetMapping("/page")
|
||||
public PageResult<MemberPageVO> listPagedMembers(MemberPageQuery pageQuery) {
|
||||
IPage<MemberPageVO> page = memberService.listPagedMembers(pageQuery);
|
||||
public PageResult<MemberPageVO> getMemberPage(MemberPageQuery pageQuery) {
|
||||
IPage<MemberPageVO> page = memberService.getMemberPage(pageQuery);
|
||||
return PageResult.success(page);
|
||||
}
|
||||
|
||||
@Operation(summary= "修改会员")
|
||||
@Operation(summary = "修改会员")
|
||||
@PutMapping(value = "/{memberId}")
|
||||
public <T> Result<T> update(
|
||||
@Parameter(description = "会员ID") @PathVariable Long memberId,
|
||||
@ -43,7 +49,7 @@ public class MemberController {
|
||||
return Result.judge(status);
|
||||
}
|
||||
|
||||
@Operation(summary= "修改会员状态")
|
||||
@Operation(summary = "修改会员状态")
|
||||
@PatchMapping("/{memberId}/status")
|
||||
public <T> Result<T> updateMemberStatus(
|
||||
@Parameter(description = "会员ID") @PathVariable Long memberId,
|
||||
@ -57,7 +63,7 @@ public class MemberController {
|
||||
return Result.judge(status);
|
||||
}
|
||||
|
||||
@Operation(summary= "删除会员")
|
||||
@Operation(summary = "删除会员")
|
||||
@DeleteMapping("/{ids}")
|
||||
public <T> Result<T> delete(
|
||||
@Parameter(description = "会员ID,多个以英文逗号(,)拼接") @PathVariable String ids
|
||||
|
@ -25,5 +25,5 @@ public interface MemberMapper extends BaseMapper<Member> {
|
||||
* @param queryParams 查询参数
|
||||
* @return
|
||||
*/
|
||||
Page<MemberBO> listPagedMembers(Page<MemberBO> page, MemberPageQuery queryParams);
|
||||
Page<MemberBO> getMemberPage(Page<MemberBO> page, MemberPageQuery queryParams);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ public interface MemberService extends IService<Member> {
|
||||
/**
|
||||
* 会员分页列表
|
||||
*/
|
||||
IPage<MemberPageVO> listPagedMembers(MemberPageQuery queryParams);
|
||||
IPage<MemberPageVO> getMemberPage(MemberPageQuery queryParams);
|
||||
|
||||
|
||||
/**
|
||||
|
@ -51,8 +51,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||
* @return 会员分页列表
|
||||
*/
|
||||
@Override
|
||||
public IPage<MemberPageVO> listPagedMembers(MemberPageQuery queryParams) {
|
||||
Page<MemberBO> boPage = this.baseMapper.listPagedMembers(
|
||||
public IPage<MemberPageVO> getMemberPage(MemberPageQuery queryParams) {
|
||||
Page<MemberBO> boPage = this.baseMapper.getMemberPage(
|
||||
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
queryParams
|
||||
);
|
||||
|
@ -12,7 +12,7 @@
|
||||
</resultMap>
|
||||
|
||||
<!-- 会员分页列表 -->
|
||||
<select id="listPagedMembers" resultMap="MemberPageResultMap">
|
||||
<select id="getMemberPage" resultMap="MemberPageResultMap">
|
||||
SELECT
|
||||
id,
|
||||
nickName,
|
||||
|
@ -6,6 +6,12 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
|
||||
/**
|
||||
* 商品服务启动类
|
||||
*
|
||||
* @since 1.0.0
|
||||
* @author Ray
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackageClasses = {MemberFeignClient.class})
|
||||
|
@ -11,7 +11,6 @@
|
||||
|
||||
<artifactId>sale-boot</artifactId>
|
||||
<properties>
|
||||
|
||||
<service.port>8804</service.port>
|
||||
<service.nodeport>32002</service.nodeport>
|
||||
</properties>
|
||||
@ -23,13 +22,6 @@
|
||||
<artifactId>spring-boot-configuration-processor</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 单元测试 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Cloud & Alibaba -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
@ -53,11 +45,6 @@
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>sale-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
@ -73,6 +60,11 @@
|
||||
<artifactId>common-security</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>sale-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
@ -85,5 +77,4 @@
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
|
||||
</project>
|
||||
|
@ -16,6 +16,13 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
|
||||
/**
|
||||
* 营销广告
|
||||
*
|
||||
* @author Ray
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Tag(name = "Admin-营销广告")
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/adverts")
|
||||
@ -24,7 +31,7 @@ public class AdvertController {
|
||||
|
||||
private final AdvertService advertService;
|
||||
|
||||
@Operation(summary= "广告分页列表")
|
||||
@Operation(summary = "广告分页列表")
|
||||
@GetMapping("/page")
|
||||
public PageResult<Advert> getAdvertPage(AdvertPageQuery queryParams) {
|
||||
|
||||
@ -43,7 +50,7 @@ public class AdvertController {
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@Operation(summary= "广告详情")
|
||||
@Operation(summary = "广告详情")
|
||||
@GetMapping("/{id}")
|
||||
public Result getAdvertDetail(
|
||||
@Parameter(description = "广告ID") @PathVariable Long id
|
||||
@ -52,14 +59,14 @@ public class AdvertController {
|
||||
return Result.success(advert);
|
||||
}
|
||||
|
||||
@Operation(summary= "新增广告")
|
||||
@Operation(summary = "新增广告")
|
||||
@PostMapping
|
||||
public Result addAvert(@RequestBody Advert advert) {
|
||||
boolean status = advertService.save(advert);
|
||||
return Result.judge(status);
|
||||
}
|
||||
|
||||
@Operation(summary= "修改广告")
|
||||
@Operation(summary = "修改广告")
|
||||
@PutMapping(value = "/{id}")
|
||||
public Result updateAdvert(
|
||||
@Parameter(description = "广告ID") @PathVariable Long id,
|
||||
@ -68,13 +75,11 @@ public class AdvertController {
|
||||
return Result.judge(status);
|
||||
}
|
||||
|
||||
@Operation(summary= "删除广告")
|
||||
@Operation(summary = "删除广告")
|
||||
@DeleteMapping("/{ids}")
|
||||
public Result deleteAdverts(@Parameter(description = "广告ID,多个以英文逗号(,)分割") @PathVariable("ids") String ids) {
|
||||
boolean status = advertService.removeByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.judge(status);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,11 +7,14 @@ import com.youlai.mall.sale.mapper.CouponHistoryMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* 优惠券领取历史记录 服务实现类
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2.0.0
|
||||
*/
|
||||
@Service
|
||||
public class CouponHistoryServiceImpl extends ServiceImpl<CouponHistoryMapper, CouponHistory>
|
||||
implements CouponHistoryService {
|
||||
implements CouponHistoryService {
|
||||
|
||||
}
|
||||
|
||||
|
3
pom.xml
3
pom.xml
@ -21,8 +21,7 @@
|
||||
<module>mall-member</module>
|
||||
<module>mall-product</module>
|
||||
<module>mall-order</module>
|
||||
<module>youlai-common/common-framework</module>
|
||||
<module>youlai-common/common-service</module>
|
||||
<module>youlai-generator</module>
|
||||
</modules>
|
||||
|
||||
<parent>
|
||||
|
@ -64,6 +64,21 @@
|
||||
<artifactId>weixin-java-miniapp</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-base</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-mybatis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-sms</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>member-api</artifactId>
|
||||
@ -74,16 +89,6 @@
|
||||
<artifactId>system-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-base</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-sms</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -20,7 +20,10 @@ import org.springframework.web.servlet.handler.HandlerMappingIntrospector;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 默认安全配置
|
||||
* Spring Security安全配置
|
||||
*
|
||||
* @author Ray
|
||||
* @since 3.0.0
|
||||
*/
|
||||
@ConfigurationProperties(prefix = "security")
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@ -31,7 +34,7 @@ public class SecurityConfig {
|
||||
* 白名单路径列表
|
||||
*/
|
||||
@Setter
|
||||
private List<String> whitelistPaths;
|
||||
private List<String> ignoreUris;
|
||||
|
||||
/**
|
||||
* Spring Security 安全过滤器链配置
|
||||
@ -45,9 +48,9 @@ public class SecurityConfig {
|
||||
MvcRequestMatcher.Builder mvcMatcherBuilder = new MvcRequestMatcher.Builder(introspector);
|
||||
http.authorizeHttpRequests((requests) ->
|
||||
{
|
||||
if (CollectionUtil.isNotEmpty(whitelistPaths)) {
|
||||
for (String whitelistPath : whitelistPaths) {
|
||||
requests.requestMatchers(mvcMatcherBuilder.pattern(whitelistPath)).permitAll();
|
||||
if (CollectionUtil.isNotEmpty(ignoreUris)) {
|
||||
for (String ignoreUri : ignoreUris) {
|
||||
requests.requestMatchers(mvcMatcherBuilder.pattern(ignoreUri)).permitAll();
|
||||
}
|
||||
}
|
||||
requests.anyRequest().authenticated();
|
||||
|
@ -6,7 +6,6 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 自定义 OIDC 用户信息服务
|
||||
|
@ -14,8 +14,9 @@ import java.lang.reflect.ParameterizedType;
|
||||
import java.lang.reflect.Type;
|
||||
|
||||
/**
|
||||
* Feign 响应解码器
|
||||
*
|
||||
* @author Ray
|
||||
* @link https://zhuanlan.zhihu.com/p/545505705
|
||||
* @since 2023/8/23
|
||||
*/
|
||||
public class FeignDecoder implements Decoder {
|
||||
|
@ -52,8 +52,6 @@
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
</dependencies>
|
||||
|
||||
</project>
|
@ -23,6 +23,11 @@
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-base</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- MinIO -->
|
||||
<dependency>
|
||||
<groupId>io.minio</groupId>
|
||||
|
@ -1,8 +1,10 @@
|
||||
package com.youlai.system.controller;
|
||||
package com.youlai.common.file.contoller;
|
||||
|
||||
import com.youlai.common.file.model.FileInfo;
|
||||
import com.youlai.common.file.service.OssService;
|
||||
import com.youlai.common.result.Result;
|
||||
import io.swagger.v3.oas.annotations.enums.ParameterIn;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
@ -10,7 +12,14 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@Tag(name = "06.文件接口")
|
||||
|
||||
/**
|
||||
* 文件控制器
|
||||
*
|
||||
* @author Ray
|
||||
* @since 1.0.0
|
||||
*/
|
||||
@Tag(name = "11.文件接口")
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/files")
|
||||
@RequiredArgsConstructor
|
||||
@ -19,9 +28,15 @@ public class FileController {
|
||||
private final OssService ossService;
|
||||
|
||||
@PostMapping
|
||||
@Operation(summary= "文件上传")
|
||||
@Operation(summary = "上传文件")
|
||||
public Result<FileInfo> uploadFile(
|
||||
@Parameter(name = "file",description = "表单文件对象")
|
||||
@Parameter(
|
||||
name = "file",
|
||||
description = "表单文件对象",
|
||||
required = true,
|
||||
in = ParameterIn.DEFAULT,
|
||||
schema = @Schema(name = "file", format = "binary")
|
||||
)
|
||||
@RequestParam(value = "file") MultipartFile file
|
||||
) {
|
||||
FileInfo fileInfo = ossService.uploadFile(file);
|
||||
@ -29,7 +44,7 @@ public class FileController {
|
||||
}
|
||||
|
||||
@DeleteMapping
|
||||
@Operation(summary= "文件删除")
|
||||
@Operation(summary = "删除文件")
|
||||
public Result deleteFile(
|
||||
@Parameter(description = "文件路径") @RequestParam String filePath
|
||||
) {
|
@ -16,6 +16,7 @@
|
||||
<modules>
|
||||
<module>common-base</module>
|
||||
<module>common-core</module>
|
||||
<module>common-framework</module>
|
||||
<module>common-middleware</module>
|
||||
<module>common-service</module>
|
||||
</modules>
|
||||
|
@ -7,7 +7,8 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
/**
|
||||
* 网关服务启动类
|
||||
*
|
||||
* @author ray
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
|
@ -30,7 +30,7 @@ import java.text.ParseException;
|
||||
@Component
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class TokenValidationGlobalFilter implements GlobalFilter, Ordered {
|
||||
public class TokenBlacklistGlobalFilter implements GlobalFilter, Ordered {
|
||||
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
||||
|
@ -18,13 +18,6 @@
|
||||
|
||||
<dependencies>
|
||||
|
||||
<!-- 单元测试 -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-test</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Spring Cloud & Alibaba -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
@ -73,12 +66,7 @@
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>system-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-mybatis</artifactId>
|
||||
<artifactId>common-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -88,7 +76,7 @@
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>common-core</artifactId>
|
||||
<artifactId>common-mybatis</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -106,6 +94,11 @@
|
||||
<artifactId>common-file</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.youlai</groupId>
|
||||
<artifactId>system-api</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -7,7 +7,8 @@ import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
/**
|
||||
* 系统服务启动类
|
||||
*
|
||||
* @author ray
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
|
@ -6,7 +6,7 @@ import com.youlai.system.model.form.DeptForm;
|
||||
import com.youlai.system.model.query.DeptQuery;
|
||||
import com.youlai.system.model.vo.DeptVO;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.service.SysDeptService;
|
||||
import com.youlai.system.service.DeptService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -30,8 +30,8 @@ import java.util.List;
|
||||
@RequestMapping("/api/v1/dept")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysDeptController {
|
||||
private final SysDeptService deptService;
|
||||
public class DeptController {
|
||||
private final DeptService deptService;
|
||||
|
||||
@Operation(summary = "获取部门列表")
|
||||
@GetMapping
|
@ -28,7 +28,7 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/dict")
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictController {
|
||||
public class DictController {
|
||||
|
||||
private final SysDictService dictService;
|
||||
|
@ -8,7 +8,7 @@ import com.youlai.system.model.query.MenuQuery;
|
||||
import com.youlai.system.model.vo.MenuVO;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.vo.RouteVO;
|
||||
import com.youlai.system.service.SysMenuService;
|
||||
import com.youlai.system.service.MenuService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -33,9 +33,9 @@ import java.util.Set;
|
||||
@RequestMapping("/api/v1/menus")
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysMenuController {
|
||||
public class MenuController {
|
||||
|
||||
private final SysMenuService menuService;
|
||||
private final MenuService menuService;
|
||||
|
||||
@Operation(summary = "菜单列表")
|
||||
@GetMapping
|
@ -8,7 +8,7 @@ import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.form.RoleForm;
|
||||
import com.youlai.system.model.query.RolePageQuery;
|
||||
import com.youlai.system.model.vo.RolePageVO;
|
||||
import com.youlai.system.service.SysRoleService;
|
||||
import com.youlai.system.service.RoleService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
|
||||
@ -25,9 +25,9 @@ import java.util.List;
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/roles")
|
||||
@RequiredArgsConstructor
|
||||
public class SysRoleController {
|
||||
public class RoleController {
|
||||
|
||||
private final SysRoleService roleService;
|
||||
private final RoleService roleService;
|
||||
|
||||
@Operation(summary = "角色分页列表" )
|
||||
@GetMapping("/page")
|
@ -9,12 +9,13 @@ import com.youlai.common.result.Result;
|
||||
import com.youlai.common.core.annotation.RepeatSubmit;
|
||||
import com.youlai.system.dto.UserAuthInfo;
|
||||
import com.youlai.system.listener.excel.UserImportListener;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.form.UserForm;
|
||||
import com.youlai.system.model.form.UserRegisterForm;
|
||||
import com.youlai.system.model.query.UserPageQuery;
|
||||
import com.youlai.mall.system.model.vo.*;
|
||||
import com.youlai.system.model.vo.*;
|
||||
import com.youlai.system.service.SysUserService;
|
||||
import com.youlai.system.service.UserService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
@ -38,22 +39,22 @@ import java.util.List;
|
||||
* 用户控制器
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2022/10/16
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@Tag(name = "01.用户接口")
|
||||
@RestController
|
||||
@RequestMapping("/api/v1/users")
|
||||
@RequiredArgsConstructor
|
||||
public class SysUserController {
|
||||
public class UserController {
|
||||
|
||||
private final SysUserService userService;
|
||||
private final UserService userService;
|
||||
|
||||
@Operation(summary = "用户分页列表")
|
||||
@GetMapping("/page")
|
||||
public PageResult<UserPageVO> listPagedUsers(
|
||||
public PageResult<UserPageVO> getUserPage(
|
||||
@ParameterObject UserPageQuery queryParams
|
||||
) {
|
||||
IPage<UserPageVO> result = userService.listPagedUsers(queryParams);
|
||||
IPage<UserPageVO> result = userService.getUserPage(queryParams);
|
||||
return PageResult.success(result);
|
||||
}
|
||||
|
||||
@ -114,9 +115,9 @@ public class SysUserController {
|
||||
@Parameter(description = "用户ID") @PathVariable Long userId,
|
||||
@Parameter(description = "用户状态(1:启用;0:禁用)") @RequestParam Integer status
|
||||
) {
|
||||
boolean result = userService.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getStatus, status)
|
||||
boolean result = userService.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getStatus, status)
|
||||
);
|
||||
return Result.judge(result);
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
package com.youlai.system.converter;
|
||||
|
||||
import com.youlai.system.model.entity.SysDept;
|
||||
import com.youlai.system.model.entity.Dept;
|
||||
import com.youlai.system.model.form.DeptForm;
|
||||
import com.youlai.system.model.vo.DeptVO;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -14,9 +14,9 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DeptConverter {
|
||||
|
||||
DeptForm convertToForm(SysDept entity);
|
||||
DeptVO entity2Vo(SysDept entity);
|
||||
DeptForm convertToForm(Dept entity);
|
||||
DeptVO entity2Vo(Dept entity);
|
||||
|
||||
SysDept convertToForm(DeptForm deptForm);
|
||||
Dept convertToForm(DeptForm deptForm);
|
||||
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.system.model.entity.SysDict;
|
||||
import com.youlai.system.model.entity.Dict;
|
||||
import com.youlai.system.model.form.DictForm;
|
||||
import com.youlai.system.model.vo.DictPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -15,9 +15,9 @@ import org.mapstruct.Mapper;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictConverter {
|
||||
|
||||
Page<DictPageVO> convertToPageVo(Page<SysDict> page);
|
||||
Page<DictPageVO> convertToPageVo(Page<Dict> page);
|
||||
|
||||
DictForm convertToForm(SysDict entity);
|
||||
DictForm convertToForm(Dict entity);
|
||||
|
||||
SysDict convertToEntity(DictForm entity);
|
||||
Dict convertToEntity(DictForm entity);
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package com.youlai.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.entity.SysDictItem;
|
||||
import com.youlai.system.model.entity.DictItem;
|
||||
import com.youlai.system.model.form.DictForm;
|
||||
import com.youlai.system.model.vo.DictPageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -20,20 +20,20 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface DictItemConverter {
|
||||
|
||||
Page<DictPageVO> convertToPageVo(Page<SysDictItem> page);
|
||||
Page<DictPageVO> convertToPageVo(Page<DictItem> page);
|
||||
|
||||
DictForm convertToForm(SysDictItem entity);
|
||||
DictForm convertToForm(DictItem entity);
|
||||
|
||||
SysDictItem convertToEntity(DictForm.DictItem dictFormDictItems);
|
||||
List<SysDictItem> convertToEntity(List<DictForm.DictItem> dictFormDictItems);
|
||||
DictItem convertToEntity(DictForm.DictItem dictFormDictItems);
|
||||
List<DictItem> convertToEntity(List<DictForm.DictItem> dictFormDictItems);
|
||||
|
||||
DictForm.DictItem convertToDictFormDictItem(SysDictItem entity);
|
||||
List<DictForm.DictItem> convertToDictFormDictItem(List<SysDictItem> entities);
|
||||
DictForm.DictItem convertToDictFormDictItem(DictItem entity);
|
||||
List<DictForm.DictItem> convertToDictFormDictItem(List<DictItem> entities);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "value", source = "id"),
|
||||
@Mapping(target = "label", source = "name")
|
||||
})
|
||||
Option convertToOption(SysDictItem dictItem);
|
||||
List<Option> convertToOption(List<SysDictItem> dictItems);
|
||||
Option convertToOption(DictItem dictItem);
|
||||
List<Option> convertToOption(List<DictItem> dictItems);
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.youlai.system.converter;
|
||||
|
||||
import com.youlai.system.model.entity.SysMenu;
|
||||
import com.youlai.system.model.entity.Menu;
|
||||
import com.youlai.system.model.form.MenuForm;
|
||||
import com.youlai.system.model.vo.MenuVO;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -15,11 +15,11 @@ import org.mapstruct.Mapping;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface MenuConverter {
|
||||
|
||||
MenuVO entity2Vo(SysMenu entity);
|
||||
MenuVO entity2Vo(Menu entity);
|
||||
|
||||
@Mapping(target = "params", ignore = true)
|
||||
MenuForm convertToForm(SysMenu entity);
|
||||
MenuForm convertToForm(Menu entity);
|
||||
|
||||
@Mapping(target = "params", ignore = true)
|
||||
SysMenu toEntity(MenuForm menuForm);
|
||||
Menu toEntity(MenuForm menuForm);
|
||||
}
|
@ -2,7 +2,7 @@ package com.youlai.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.entity.SysRole;
|
||||
import com.youlai.system.model.entity.Role;
|
||||
import com.youlai.system.model.form.RoleForm;
|
||||
import com.youlai.system.model.vo.RolePageVO;
|
||||
import org.mapstruct.Mapper;
|
||||
@ -20,18 +20,18 @@ import java.util.List;
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface RoleConverter {
|
||||
|
||||
Page<RolePageVO> entity2Page(Page<SysRole> page);
|
||||
Page<RolePageVO> entity2Page(Page<Role> page);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "value", source = "id"),
|
||||
@Mapping(target = "label", source = "name")
|
||||
})
|
||||
Option entity2Option(SysRole role);
|
||||
Option entity2Option(Role role);
|
||||
|
||||
|
||||
List<Option> entities2Options(List<SysRole> roles);
|
||||
List<Option> entities2Options(List<Role> roles);
|
||||
|
||||
SysRole toEntity(RoleForm roleForm);
|
||||
Role toEntity(RoleForm roleForm);
|
||||
|
||||
RoleForm convertToForm(SysRole entity);
|
||||
RoleForm convertToForm(Role entity);
|
||||
}
|
@ -2,7 +2,7 @@ package com.youlai.system.converter;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.system.model.bo.UserBO;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.form.UserForm;
|
||||
import com.youlai.system.model.vo.UserImportVO;
|
||||
import com.youlai.system.model.vo.UserInfoVO;
|
||||
@ -31,17 +31,17 @@ public interface UserConverter {
|
||||
|
||||
UserForm toForm(UserBO bo);
|
||||
|
||||
UserForm convertToForm(SysUser entity);
|
||||
UserForm convertToForm(User entity);
|
||||
|
||||
@InheritInverseConfiguration(name = "convertToForm")
|
||||
SysUser toEntity(UserForm entity);
|
||||
User toEntity(UserForm entity);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "userId", source = "id")
|
||||
})
|
||||
UserInfoVO entity2InfoVo(SysUser entity);
|
||||
UserInfoVO entity2InfoVo(User entity);
|
||||
|
||||
SysUser importVo2Entity(UserImportVO vo);
|
||||
User importVo2Entity(UserImportVO vo);
|
||||
|
||||
@Mappings({
|
||||
@Mapping(target = "genderLabel", expression = "java(com.youlai.common.base.IBaseEnum.getLabelByValue(bo.getGender(), com.youlai.common.enums.GenderEnum.class))")
|
||||
|
@ -12,13 +12,13 @@ import com.youlai.common.constant.SystemConstants;
|
||||
import com.youlai.common.enums.GenderEnum;
|
||||
import com.youlai.common.enums.StatusEnum;
|
||||
import com.youlai.system.converter.UserConverter;
|
||||
import com.youlai.system.model.entity.SysRole;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.SysUserRole;
|
||||
import com.youlai.system.model.entity.Role;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.entity.UserRole;
|
||||
import com.youlai.system.model.vo.UserImportVO;
|
||||
import com.youlai.system.service.SysRoleService;
|
||||
import com.youlai.system.service.SysUserRoleService;
|
||||
import com.youlai.system.service.SysUserService;
|
||||
import com.youlai.system.service.RoleService;
|
||||
import com.youlai.system.service.UserRoleService;
|
||||
import com.youlai.system.service.UserService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
|
||||
@ -49,22 +49,22 @@ public class UserImportListener extends MyAnalysisEventListener<UserImportVO> {
|
||||
// 部门ID
|
||||
private final Long deptId;
|
||||
|
||||
private final SysUserService userService;
|
||||
private final UserService userService;
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
private final UserConverter userConverter;
|
||||
|
||||
private final SysRoleService roleService;
|
||||
private final RoleService roleService;
|
||||
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final UserRoleService userRoleService;
|
||||
|
||||
public UserImportListener(Long deptId) {
|
||||
this.deptId = deptId;
|
||||
this.userService = SpringUtil.getBean(SysUserService.class);
|
||||
this.userService = SpringUtil.getBean(UserService.class);
|
||||
this.passwordEncoder = SpringUtil.getBean(PasswordEncoder.class);
|
||||
this.roleService = SpringUtil.getBean(SysRoleService.class);
|
||||
this.userRoleService = SpringUtil.getBean(SysUserRoleService.class);
|
||||
this.roleService = SpringUtil.getBean(RoleService.class);
|
||||
this.userRoleService = SpringUtil.getBean(UserRoleService.class);
|
||||
this.userConverter = SpringUtil.getBean(UserConverter.class);
|
||||
}
|
||||
|
||||
@ -87,7 +87,7 @@ public class UserImportListener extends MyAnalysisEventListener<UserImportVO> {
|
||||
if (StrUtil.isBlank(username)) {
|
||||
validationMsg.append("用户名为空;");
|
||||
} else {
|
||||
long count = userService.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
|
||||
long count = userService.count(new LambdaQueryWrapper<User>().eq(User::getUsername, username));
|
||||
if (count > 0) {
|
||||
validationMsg.append("用户名已存在;");
|
||||
}
|
||||
@ -109,7 +109,7 @@ public class UserImportListener extends MyAnalysisEventListener<UserImportVO> {
|
||||
|
||||
if (validationMsg.length() == 0) {
|
||||
// 校验通过,持久化至数据库
|
||||
SysUser entity = userConverter.importVo2Entity(userImportVO);
|
||||
User entity = userConverter.importVo2Entity(userImportVO);
|
||||
entity.setDeptId(deptId); // 部门
|
||||
entity.setPassword(passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD)); // 默认密码
|
||||
// 性别翻译
|
||||
@ -124,10 +124,10 @@ public class UserImportListener extends MyAnalysisEventListener<UserImportVO> {
|
||||
List<Long> roleIds = null;
|
||||
if (StrUtil.isNotBlank(roleCodes)) {
|
||||
roleIds = roleService.list(
|
||||
new LambdaQueryWrapper<SysRole>()
|
||||
.in(SysRole::getCode, roleCodes.split(","))
|
||||
.eq(SysRole::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(SysRole::getId)
|
||||
new LambdaQueryWrapper<Role>()
|
||||
.in(Role::getCode, roleCodes.split(","))
|
||||
.eq(Role::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(Role::getId)
|
||||
).stream()
|
||||
.map(role -> role.getId())
|
||||
.collect(Collectors.toList());
|
||||
@ -139,8 +139,8 @@ public class UserImportListener extends MyAnalysisEventListener<UserImportVO> {
|
||||
validCount++;
|
||||
// 保存用户角色关联
|
||||
if (CollectionUtil.isNotEmpty(roleIds)) {
|
||||
List<SysUserRole> userRoles = roleIds.stream()
|
||||
.map(roleId -> new SysUserRole(entity.getId(), roleId))
|
||||
List<UserRole> userRoles = roleIds.stream()
|
||||
.map(roleId -> new UserRole(entity.getId(), roleId))
|
||||
.collect(Collectors.toList());
|
||||
userRoleService.saveBatch(userRoles);
|
||||
}
|
||||
|
@ -1,13 +1,10 @@
|
||||
package com.youlai.system.listener.rabbitmq;
|
||||
|
||||
import com.youlai.system.service.SysMenuService;
|
||||
import com.youlai.system.service.MenuService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.messaging.handler.annotation.Payload;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* Canal + RabbitMQ 监听数据库数据变化
|
||||
*
|
||||
@ -19,7 +16,7 @@ import java.util.Arrays;
|
||||
@RequiredArgsConstructor
|
||||
public class CanalListener {
|
||||
|
||||
private final SysMenuService menuService;
|
||||
private final MenuService menuService;
|
||||
|
||||
//@RabbitListener(queues = "canal.queue")
|
||||
public void handleDataChange() {
|
||||
|
@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
import com.youlai.common.core.annotation.DataPermission;
|
||||
import com.youlai.system.model.entity.SysDept;
|
||||
import com.youlai.system.model.entity.Dept;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@ -12,9 +12,9 @@ import java.util.List;
|
||||
|
||||
|
||||
@Mapper
|
||||
public interface SysDeptMapper extends BaseMapper<SysDept> {
|
||||
public interface DeptMapper extends BaseMapper<Dept> {
|
||||
|
||||
@DataPermission(deptIdColumnName = "id")
|
||||
@Override
|
||||
List<SysDept> selectList(@Param(Constants.WRAPPER) Wrapper<SysDept> queryWrapper);
|
||||
List<Dept> selectList(@Param(Constants.WRAPPER) Wrapper<Dept> queryWrapper);
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.system.model.entity.SysDictItem;
|
||||
import com.youlai.system.model.entity.DictItem;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
|
||||
public interface DictItemMapper extends BaseMapper<DictItem> {
|
||||
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.system.model.entity.SysDict;
|
||||
import com.youlai.system.model.entity.Dict;
|
||||
import com.youlai.system.model.query.DictPageQuery;
|
||||
import com.youlai.system.model.vo.DictPageVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@ -14,7 +14,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2.9.0
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysDictMapper extends BaseMapper<SysDict> {
|
||||
public interface DictMapper extends BaseMapper<Dict> {
|
||||
|
||||
/**
|
||||
* 字典分页列表
|
@ -2,7 +2,7 @@ package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.system.model.bo.RouteBO;
|
||||
import com.youlai.system.model.entity.SysMenu;
|
||||
import com.youlai.system.model.entity.Menu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -17,7 +17,7 @@ import java.util.Set;
|
||||
*/
|
||||
|
||||
@Mapper
|
||||
public interface SysMenuMapper extends BaseMapper<SysMenu> {
|
||||
public interface MenuMapper extends BaseMapper<Menu> {
|
||||
|
||||
/**
|
||||
* 获取菜单路由列表
|
@ -1,13 +1,13 @@
|
||||
package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.system.model.entity.SysRole;
|
||||
import com.youlai.system.model.entity.Role;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Mapper
|
||||
public interface SysRoleMapper extends BaseMapper<SysRole> {
|
||||
public interface RoleMapper extends BaseMapper<Role> {
|
||||
|
||||
|
||||
/**
|
@ -2,7 +2,7 @@ package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.system.model.bo.RolePermsBO;
|
||||
import com.youlai.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.system.model.entity.RoleMenu;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
@ -14,7 +14,7 @@ import java.util.List;
|
||||
* @since 2022/6/4
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysRoleMenuMapper extends BaseMapper<SysRoleMenu> {
|
||||
public interface RoleMenuMapper extends BaseMapper<RoleMenu> {
|
||||
|
||||
/**
|
||||
* 获取角色拥有的菜单ID集合
|
@ -5,7 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.youlai.common.core.annotation.DataPermission;
|
||||
import com.youlai.system.dto.UserAuthInfo;
|
||||
import com.youlai.system.model.bo.UserBO;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.query.UserPageQuery;
|
||||
import com.youlai.system.model.vo.UserExportVO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
@ -19,7 +19,7 @@ import java.util.List;
|
||||
* @since 2022/1/14
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
|
||||
/**
|
||||
* 获取用户分页列表
|
||||
@ -29,7 +29,7 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
|
||||
* @return {@link List<UserBO>}
|
||||
*/
|
||||
@DataPermission(deptAlias = "u")
|
||||
Page<UserBO> listPagedUsers(Page<UserBO> page, UserPageQuery queryParams);
|
||||
Page<UserBO> getUserPage(Page<UserBO> page, UserPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取用户表单详情
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.youlai.system.model.entity.SysUserRole;
|
||||
import com.youlai.system.model.entity.UserRole;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
/**
|
||||
@ -11,7 +11,7 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
* @since 2022/1/15
|
||||
*/
|
||||
@Mapper
|
||||
public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
|
||||
public interface UserRoleMapper extends BaseMapper<UserRole> {
|
||||
|
||||
/**
|
||||
* 获取角色绑定的用户数
|
@ -14,7 +14,7 @@ import lombok.EqualsAndHashCode;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SysDept extends BaseEntity {
|
||||
public class Dept extends BaseEntity {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
@ -12,7 +12,7 @@ import lombok.Data;
|
||||
* @since 2022/12/17
|
||||
*/
|
||||
@Data
|
||||
public class SysDict extends BaseEntity {
|
||||
public class Dict extends BaseEntity {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
@ -4,16 +4,15 @@ import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 字典项实体
|
||||
*
|
||||
* @author haoxr
|
||||
* @since 2022/12/17
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@Data
|
||||
public class SysDictItem implements Serializable {
|
||||
public class DictItem {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
@ -0,0 +1,53 @@
|
||||
package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.common.base.BaseEntity;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 代码生成基础配置
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@TableName(value = "gen_config")
|
||||
@Getter
|
||||
@Setter
|
||||
public class GenConfig extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 表名
|
||||
*/
|
||||
private String tableName;
|
||||
|
||||
/**
|
||||
* 包名
|
||||
*/
|
||||
private String packageName;
|
||||
|
||||
/**
|
||||
* 模块名
|
||||
*/
|
||||
private String moduleName;
|
||||
|
||||
/**
|
||||
* 实体类名
|
||||
*/
|
||||
private String entityName;
|
||||
|
||||
/**
|
||||
* 业务名
|
||||
*/
|
||||
private String businessName;
|
||||
|
||||
/**
|
||||
* 父菜单ID
|
||||
*/
|
||||
private Long parentMenuId;
|
||||
|
||||
/**
|
||||
* 作者
|
||||
*/
|
||||
private String author;
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.youlai.boot.common.base.BaseEntity;
|
||||
import com.youlai.boot.common.enums.FormTypeEnum;
|
||||
import com.youlai.boot.common.enums.QueryTypeEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
/**
|
||||
* 字段生成配置实体
|
||||
*
|
||||
* @author Ray
|
||||
* @since 2.10.0
|
||||
*/
|
||||
@TableName(value = "gen_field_config")
|
||||
@Getter
|
||||
@Setter
|
||||
public class GenFieldConfig extends BaseEntity {
|
||||
|
||||
|
||||
/**
|
||||
* 关联的配置ID
|
||||
*/
|
||||
private Long configId;
|
||||
|
||||
/**
|
||||
* 列名
|
||||
*/
|
||||
private String columnName;
|
||||
|
||||
/**
|
||||
* 列类型
|
||||
*/
|
||||
private String columnType;
|
||||
|
||||
/**
|
||||
* 字段长度
|
||||
*/
|
||||
private Integer maxLength;
|
||||
|
||||
/**
|
||||
* 字段名称
|
||||
*/
|
||||
private String fieldName;
|
||||
|
||||
/**
|
||||
* 字段排序
|
||||
*/
|
||||
private Integer fieldSort;
|
||||
|
||||
/**
|
||||
* 字段类型
|
||||
*/
|
||||
private String fieldType;
|
||||
|
||||
/**
|
||||
* 字段描述
|
||||
*/
|
||||
private String fieldComment;
|
||||
|
||||
/**
|
||||
* 表单类型
|
||||
*/
|
||||
private FormTypeEnum formType;
|
||||
|
||||
/**
|
||||
* 查询方式
|
||||
*/
|
||||
private QueryTypeEnum queryType;
|
||||
|
||||
/**
|
||||
* 是否在列表显示
|
||||
*/
|
||||
private Integer isShowInList;
|
||||
|
||||
/**
|
||||
* 是否在表单显示
|
||||
*/
|
||||
private Integer isShowInForm;
|
||||
|
||||
/**
|
||||
* 是否在查询条件显示
|
||||
*/
|
||||
private Integer isShowInQuery;
|
||||
|
||||
/**
|
||||
* 是否必填
|
||||
*/
|
||||
private Integer isRequired;
|
||||
|
||||
/**
|
||||
* TypeScript类型
|
||||
*/
|
||||
@TableField(exist = false)
|
||||
@JsonIgnore
|
||||
private String tsType;
|
||||
|
||||
/**
|
||||
* 字典类型
|
||||
*/
|
||||
private String dictType;
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.youlai.common.base.BaseEntity;
|
||||
import com.youlai.system.enums.MenuTypeEnum;
|
||||
import lombok.Data;
|
||||
|
||||
@ -15,7 +14,7 @@ import java.util.Date;
|
||||
*/
|
||||
@TableName(value ="sys_menu")
|
||||
@Data
|
||||
public class SysMenu{
|
||||
public class Menu {
|
||||
/**
|
||||
* 菜单ID
|
||||
*/
|
@ -2,7 +2,6 @@ package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.youlai.common.base.BaseEntity;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@ -12,7 +11,7 @@ import lombok.EqualsAndHashCode;
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SysRole extends BaseEntity {
|
||||
public class Role extends BaseEntity {
|
||||
/**
|
||||
*
|
||||
*/
|
@ -1,6 +1,5 @@
|
||||
package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -8,11 +7,14 @@ import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 角色和菜单关联表
|
||||
*
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SysRoleMenu {
|
||||
public class RoleMenu {
|
||||
/**
|
||||
* 角色ID
|
||||
*/
|
||||
@ -22,7 +24,4 @@ public class SysRoleMenu {
|
||||
* 菜单ID
|
||||
*/
|
||||
private Long menuId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -8,12 +8,15 @@ import lombok.EqualsAndHashCode;
|
||||
|
||||
/**
|
||||
* 用户实体
|
||||
*
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class SysUser extends BaseEntity {
|
||||
public class User extends BaseEntity {
|
||||
/**
|
||||
*
|
||||
* 主键
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
@ -29,7 +32,7 @@ public class SysUser extends BaseEntity {
|
||||
private String nickname;
|
||||
|
||||
/**
|
||||
* 性别((1:男;2:女))
|
||||
* 性别(1:男;2:女)
|
||||
*/
|
||||
private Integer gender;
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.youlai.system.model.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
@ -15,7 +14,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class SysUserRole {
|
||||
public class UserRole {
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ -26,6 +25,4 @@ public class SysUserRole {
|
||||
*/
|
||||
private Long roleId;
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysDept;
|
||||
import com.youlai.system.model.entity.Dept;
|
||||
import com.youlai.system.model.form.DeptForm;
|
||||
import com.youlai.system.model.query.DeptQuery;
|
||||
import com.youlai.system.model.vo.DeptVO;
|
||||
@ -15,7 +15,7 @@ import java.util.List;
|
||||
* @author Ray
|
||||
* @since 2021/8/22
|
||||
*/
|
||||
public interface SysDeptService extends IService<SysDept> {
|
||||
public interface DeptService extends IService<Dept> {
|
||||
/**
|
||||
* 部门列表
|
||||
*/
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysDictItem;
|
||||
import com.youlai.system.model.entity.DictItem;
|
||||
|
||||
/**
|
||||
* 字典项 接口
|
||||
@ -9,7 +9,7 @@ import com.youlai.system.model.entity.SysDictItem;
|
||||
* @author Ray Hao
|
||||
* @since 2023/3/4
|
||||
*/
|
||||
public interface SysDictItemService extends IService<SysDictItem> {
|
||||
public interface DictItemService extends IService<DictItem> {
|
||||
|
||||
/**
|
||||
* 根据字典ID删除字典项
|
@ -3,7 +3,7 @@ package com.youlai.system.service;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.entity.SysDict;
|
||||
import com.youlai.system.model.entity.Dict;
|
||||
import com.youlai.system.model.form.DictForm;
|
||||
import com.youlai.system.model.query.DictPageQuery;
|
||||
import com.youlai.system.model.vo.DictPageVO;
|
||||
@ -16,7 +16,7 @@ import java.util.List;
|
||||
* @author haoxr
|
||||
* @since 2022/10/12
|
||||
*/
|
||||
public interface SysDictService extends IService<SysDict> {
|
||||
public interface SysDictService extends IService<Dict> {
|
||||
|
||||
/**
|
||||
* 字典分页列表
|
@ -1,7 +1,7 @@
|
||||
package com.youlai.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysMenu;
|
||||
import com.youlai.system.model.entity.Menu;
|
||||
import com.youlai.system.model.form.MenuForm;
|
||||
import com.youlai.system.model.query.MenuQuery;
|
||||
import com.youlai.system.model.vo.MenuVO;
|
||||
@ -17,7 +17,7 @@ import java.util.Set;
|
||||
* @author Ray
|
||||
* @since 2020/11/06
|
||||
*/
|
||||
public interface SysMenuService extends IService<SysMenu> {
|
||||
public interface MenuService extends IService<Menu> {
|
||||
|
||||
/**
|
||||
* 获取菜单表格列表
|
@ -2,7 +2,7 @@ package com.youlai.system.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.system.model.entity.RoleMenu;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -12,7 +12,7 @@ import java.util.List;
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
public interface SysRoleMenuService extends IService<SysRoleMenu> {
|
||||
public interface RoleMenuService extends IService<RoleMenu> {
|
||||
|
||||
/**
|
||||
* 获取角色拥有的菜单ID集合
|
@ -3,7 +3,7 @@ package com.youlai.system.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysRole;
|
||||
import com.youlai.system.model.entity.Role;
|
||||
import com.youlai.system.model.form.RoleForm;
|
||||
import com.youlai.system.model.query.RolePageQuery;
|
||||
import com.youlai.common.core.model.Option;
|
||||
@ -18,7 +18,7 @@ import java.util.Set;
|
||||
* @author Ray
|
||||
* @since 2022/6/3
|
||||
*/
|
||||
public interface SysRoleService extends IService<SysRole> {
|
||||
public interface RoleService extends IService<Role> {
|
||||
|
||||
/**
|
||||
* 角色分页列表
|
@ -2,7 +2,7 @@ package com.youlai.system.service;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.model.entity.SysUserRole;
|
||||
import com.youlai.system.model.entity.UserRole;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -12,7 +12,7 @@ import java.util.List;
|
||||
* @author Ray
|
||||
* @since 0.0.1
|
||||
*/
|
||||
public interface SysUserRoleService extends IService<SysUserRole> {
|
||||
public interface UserRoleService extends IService<UserRole> {
|
||||
|
||||
/**
|
||||
* 保存用户角色
|
@ -4,7 +4,7 @@ package com.youlai.system.service;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.youlai.system.dto.UserAuthInfo;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.form.UserForm;
|
||||
import com.youlai.system.model.form.UserRegisterForm;
|
||||
import com.youlai.system.model.query.UserPageQuery;
|
||||
@ -21,15 +21,14 @@ import java.util.List;
|
||||
* @author Ray
|
||||
* @since 2022/1/14
|
||||
*/
|
||||
public interface SysUserService extends IService<SysUser> {
|
||||
public interface UserService extends IService<User> {
|
||||
|
||||
/**
|
||||
* 用户分页列表
|
||||
*
|
||||
* @return {@link IPage<UserPageVO>}
|
||||
*/
|
||||
IPage<UserPageVO> listPagedUsers(UserPageQuery queryParams);
|
||||
|
||||
IPage<UserPageVO> getUserPage(UserPageQuery queryParams);
|
||||
|
||||
/**
|
||||
* 获取用户表单数据
|
||||
@ -39,7 +38,6 @@ public interface SysUserService extends IService<SysUser> {
|
||||
*/
|
||||
UserForm getUserFormData(Long userId);
|
||||
|
||||
|
||||
/**
|
||||
* 新增用户
|
||||
*
|
||||
@ -57,7 +55,6 @@ public interface SysUserService extends IService<SysUser> {
|
||||
*/
|
||||
boolean updateUser(Long userId, UserForm userForm);
|
||||
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
*
|
||||
@ -66,7 +63,6 @@ public interface SysUserService extends IService<SysUser> {
|
||||
*/
|
||||
boolean deleteUsers(String idsStr);
|
||||
|
||||
|
||||
/**
|
||||
* 修改用户密码
|
||||
*
|
@ -7,13 +7,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.common.constant.GlobalConstants;
|
||||
import com.youlai.common.enums.StatusEnum;
|
||||
import com.youlai.system.converter.DeptConverter;
|
||||
import com.youlai.system.mapper.SysDeptMapper;
|
||||
import com.youlai.system.model.entity.SysDept;
|
||||
import com.youlai.system.mapper.DeptMapper;
|
||||
import com.youlai.system.model.entity.Dept;
|
||||
import com.youlai.system.model.form.DeptForm;
|
||||
import com.youlai.system.model.query.DeptQuery;
|
||||
import com.youlai.system.model.vo.DeptVO;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.service.SysDeptService;
|
||||
import com.youlai.system.service.DeptService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -30,7 +30,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
|
||||
public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements DeptService {
|
||||
|
||||
|
||||
private final DeptConverter deptConverter;
|
||||
@ -45,19 +45,19 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
Integer status = queryParams.getStatus();
|
||||
|
||||
// 查询数据
|
||||
List<SysDept> deptList = this.list(
|
||||
new LambdaQueryWrapper<SysDept>()
|
||||
.like(StrUtil.isNotBlank(keywords), SysDept::getName, keywords)
|
||||
.eq(status != null, SysDept::getStatus, status)
|
||||
.orderByAsc(SysDept::getSort)
|
||||
List<Dept> deptList = this.list(
|
||||
new LambdaQueryWrapper<Dept>()
|
||||
.like(StrUtil.isNotBlank(keywords), Dept::getName, keywords)
|
||||
.eq(status != null, Dept::getStatus, status)
|
||||
.orderByAsc(Dept::getSort)
|
||||
);
|
||||
|
||||
Set<Long> deptIds = deptList.stream()
|
||||
.map(SysDept::getId)
|
||||
.map(Dept::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<Long> parentIds = deptList.stream()
|
||||
.map(SysDept::getParentId)
|
||||
.map(Dept::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<Long> rootIds = CollectionUtil.subtractToList(parentIds, deptIds);
|
||||
@ -76,7 +76,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
* @param deptList
|
||||
* @return
|
||||
*/
|
||||
public List<DeptVO> recurDeptList(Long parentId, List<SysDept> deptList) {
|
||||
public List<DeptVO> recurDeptList(Long parentId, List<Dept> deptList) {
|
||||
return deptList.stream()
|
||||
.filter(dept -> dept.getParentId().equals(parentId))
|
||||
.map(dept -> {
|
||||
@ -95,18 +95,18 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
@Override
|
||||
public List<Option> listDeptOptions() {
|
||||
|
||||
List<SysDept> deptList = this.list(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(SysDept::getId, SysDept::getParentId, SysDept::getName)
|
||||
.orderByAsc(SysDept::getSort)
|
||||
List<Dept> deptList = this.list(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getStatus, StatusEnum.ENABLE.getValue())
|
||||
.select(Dept::getId, Dept::getParentId, Dept::getName)
|
||||
.orderByAsc(Dept::getSort)
|
||||
);
|
||||
|
||||
Set<Long> parentIds = deptList.stream()
|
||||
.map(SysDept::getParentId)
|
||||
.map(Dept::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
Set<Long> deptIds = deptList.stream()
|
||||
.map(SysDept::getId)
|
||||
.map(Dept::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<Long> rootIds = CollectionUtil.subtractToList(parentIds, deptIds);
|
||||
@ -126,7 +126,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
*/
|
||||
@Override
|
||||
public Long saveDept(DeptForm formData) {
|
||||
SysDept entity = deptConverter.convertToForm(formData);
|
||||
Dept entity = deptConverter.convertToForm(formData);
|
||||
// 部门层级路径
|
||||
String treePath = buildTreePath(formData.getParentId());
|
||||
entity.setTreePath(treePath);
|
||||
@ -142,7 +142,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
* @param deptList
|
||||
* @return
|
||||
*/
|
||||
public static List<Option> recurDeptTreeOptions(long parentId, List<SysDept> deptList) {
|
||||
public static List<Option> recurDeptTreeOptions(long parentId, List<Dept> deptList) {
|
||||
List<Option> list = CollectionUtil.emptyIfNull(deptList).stream()
|
||||
.filter(dept -> dept.getParentId().equals(parentId))
|
||||
.map(dept -> {
|
||||
@ -170,8 +170,8 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
if (StrUtil.isNotBlank(ids)) {
|
||||
String[] deptIds = ids.split(",");
|
||||
for (String deptId : deptIds) {
|
||||
this.remove(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getId, deptId)
|
||||
this.remove(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getId, deptId)
|
||||
.or()
|
||||
.apply("CONCAT (',',tree_path,',') LIKE CONCAT('%,',{0},',%')", deptId));
|
||||
}
|
||||
@ -187,14 +187,14 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
@Override
|
||||
public DeptForm getDeptForm(Long deptId) {
|
||||
|
||||
SysDept entity = this.getOne(new LambdaQueryWrapper<SysDept>()
|
||||
.eq(SysDept::getId, deptId)
|
||||
Dept entity = this.getOne(new LambdaQueryWrapper<Dept>()
|
||||
.eq(Dept::getId, deptId)
|
||||
.select(
|
||||
SysDept::getId,
|
||||
SysDept::getName,
|
||||
SysDept::getParentId,
|
||||
SysDept::getStatus,
|
||||
SysDept::getSort
|
||||
Dept::getId,
|
||||
Dept::getName,
|
||||
Dept::getParentId,
|
||||
Dept::getStatus,
|
||||
Dept::getSort
|
||||
));
|
||||
|
||||
return deptConverter.convertToForm(entity);
|
||||
@ -212,7 +212,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
|
||||
if (GlobalConstants.ROOT_NODE_ID.equals(parentId)) {
|
||||
treePath = String.valueOf(parentId);
|
||||
} else {
|
||||
SysDept parent = this.getById(parentId);
|
||||
Dept parent = this.getById(parentId);
|
||||
if (parent != null) {
|
||||
treePath = parent.getTreePath() + "," + parent.getId();
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package com.youlai.system.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.system.mapper.SysDictItemMapper;
|
||||
import com.youlai.system.model.entity.SysDictItem;
|
||||
import com.youlai.system.service.SysDictItemService;
|
||||
import com.youlai.system.mapper.DictItemMapper;
|
||||
import com.youlai.system.model.entity.DictItem;
|
||||
import com.youlai.system.service.DictItemService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDictItem> implements SysDictItemService {
|
||||
public class DictItemServiceImpl extends ServiceImpl<DictItemMapper, DictItem> implements DictItemService {
|
||||
|
||||
/**
|
||||
* 根据字典ID删除字典项
|
@ -15,16 +15,16 @@ import com.youlai.common.core.model.KeyValue;
|
||||
import com.youlai.system.enums.MenuTypeEnum;
|
||||
import com.youlai.common.enums.StatusEnum;
|
||||
import com.youlai.system.converter.MenuConverter;
|
||||
import com.youlai.system.mapper.SysMenuMapper;
|
||||
import com.youlai.system.mapper.MenuMapper;
|
||||
import com.youlai.system.model.bo.RouteBO;
|
||||
import com.youlai.system.model.entity.SysMenu;
|
||||
import com.youlai.system.model.entity.Menu;
|
||||
import com.youlai.system.model.form.MenuForm;
|
||||
import com.youlai.system.model.query.MenuQuery;
|
||||
import com.youlai.system.model.vo.MenuVO;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.vo.RouteVO;
|
||||
import com.youlai.system.service.SysMenuService;
|
||||
import com.youlai.system.service.SysRoleMenuService;
|
||||
import com.youlai.system.service.MenuService;
|
||||
import com.youlai.system.service.RoleMenuService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -40,10 +40,10 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> implements SysMenuService {
|
||||
public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements MenuService {
|
||||
|
||||
private final MenuConverter menuConverter;
|
||||
private final SysRoleMenuService roleMenuService;
|
||||
private final RoleMenuService roleMenuService;
|
||||
|
||||
/**
|
||||
* 菜单列表
|
||||
@ -52,16 +52,16 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public List<MenuVO> listMenus(MenuQuery queryParams) {
|
||||
List<SysMenu> menus = this.list(new LambdaQueryWrapper<SysMenu>()
|
||||
.like(StrUtil.isNotBlank(queryParams.getKeywords()), SysMenu::getName, queryParams.getKeywords())
|
||||
.orderByAsc(SysMenu::getSort)
|
||||
List<Menu> menus = this.list(new LambdaQueryWrapper<Menu>()
|
||||
.like(StrUtil.isNotBlank(queryParams.getKeywords()), Menu::getName, queryParams.getKeywords())
|
||||
.orderByAsc(Menu::getSort)
|
||||
);
|
||||
|
||||
Set<Long> parentIds = menus.stream()
|
||||
.map(SysMenu::getParentId)
|
||||
.map(Menu::getParentId)
|
||||
.collect(Collectors.toSet());
|
||||
Set<Long> menuIds = menus.stream()
|
||||
.map(SysMenu::getId)
|
||||
.map(Menu::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 获取根节点ID
|
||||
@ -83,7 +83,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
* @param menuList 菜单列表
|
||||
* @return 菜单列表
|
||||
*/
|
||||
private List<MenuVO> buildMenuTree(Long parentId, List<SysMenu> menuList) {
|
||||
private List<MenuVO> buildMenuTree(Long parentId, List<Menu> menuList) {
|
||||
return CollectionUtil.emptyIfNull(menuList)
|
||||
.stream()
|
||||
.filter(menu -> menu.getParentId().equals(parentId))
|
||||
@ -100,7 +100,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public List<Option> listMenuOptions() {
|
||||
List<SysMenu> menuList = this.list(new LambdaQueryWrapper<SysMenu>().orderByAsc(SysMenu::getSort));
|
||||
List<Menu> menuList = this.list(new LambdaQueryWrapper<Menu>().orderByAsc(Menu::getSort));
|
||||
return buildMenuOptions(GlobalConstants.ROOT_NODE_ID, menuList);
|
||||
}
|
||||
|
||||
@ -111,10 +111,10 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
* @param menuList 菜单列表
|
||||
* @return 菜单下拉列表
|
||||
*/
|
||||
private List<Option> buildMenuOptions(Long parentId, List<SysMenu> menuList) {
|
||||
private List<Option> buildMenuOptions(Long parentId, List<Menu> menuList) {
|
||||
List<Option> menuOptions = new ArrayList<>();
|
||||
|
||||
for (SysMenu menu : menuList) {
|
||||
for (Menu menu : menuList) {
|
||||
if (menu.getParentId().equals(parentId)) {
|
||||
Option option = new Option(menu.getId(), menu.getName());
|
||||
List<Option> subMenuOptions = buildMenuOptions(menu.getId(), menuList);
|
||||
@ -228,7 +228,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
menuForm.setComponent(null);
|
||||
}
|
||||
|
||||
SysMenu entity = menuConverter.toEntity(menuForm);
|
||||
Menu entity = menuConverter.toEntity(menuForm);
|
||||
String treePath = generateMenuTreePath(menuForm.getParentId());
|
||||
entity.setTreePath(treePath);
|
||||
|
||||
@ -261,7 +261,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
if (GlobalConstants.ROOT_NODE_ID.equals(parentId)) {
|
||||
return String.valueOf(parentId);
|
||||
} else {
|
||||
SysMenu parent = this.getById(parentId);
|
||||
Menu parent = this.getById(parentId);
|
||||
return parent != null ? parent.getTreePath() + "," + parent.getId() : null;
|
||||
}
|
||||
}
|
||||
@ -276,9 +276,9 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public boolean updateMenuVisible(Long menuId, Integer visible) {
|
||||
return this.update(new LambdaUpdateWrapper<SysMenu>()
|
||||
.eq(SysMenu::getId, menuId)
|
||||
.set(SysMenu::getVisible, visible)
|
||||
return this.update(new LambdaUpdateWrapper<Menu>()
|
||||
.eq(Menu::getId, menuId)
|
||||
.set(Menu::getVisible, visible)
|
||||
);
|
||||
}
|
||||
|
||||
@ -290,7 +290,7 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public MenuForm getMenuForm(Long id) {
|
||||
SysMenu entity = this.getById(id);
|
||||
Menu entity = this.getById(id);
|
||||
Assert.isTrue(entity != null, "菜单不存在");
|
||||
MenuForm formData = menuConverter.convertToForm(entity);
|
||||
// 路由参数字符串 {"id":"1","name":"张三"} 转换为 [{key:"id", value:"1"}, {key:"name", value:"张三"}]
|
||||
@ -324,8 +324,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||
*/
|
||||
@Override
|
||||
public boolean deleteMenu(Long id) {
|
||||
boolean result = this.remove(new LambdaQueryWrapper<SysMenu>()
|
||||
.eq(SysMenu::getId, id)
|
||||
boolean result = this.remove(new LambdaQueryWrapper<Menu>()
|
||||
.eq(Menu::getId, id)
|
||||
.or()
|
||||
.apply("CONCAT (',',tree_path,',') LIKE CONCAT('%,',{0},',%')", id));
|
||||
|
@ -3,10 +3,10 @@ package com.youlai.system.service.impl;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.common.constant.RedisConstants;
|
||||
import com.youlai.system.mapper.SysRoleMenuMapper;
|
||||
import com.youlai.system.mapper.RoleMenuMapper;
|
||||
import com.youlai.system.model.bo.RolePermsBO;
|
||||
import com.youlai.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.system.service.SysRoleMenuService;
|
||||
import com.youlai.system.model.entity.RoleMenu;
|
||||
import com.youlai.system.service.RoleMenuService;
|
||||
import jakarta.annotation.PostConstruct;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
@ -20,7 +20,7 @@ import java.util.Set;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysRoleMenuServiceImpl extends ServiceImpl<SysRoleMenuMapper, SysRoleMenu> implements SysRoleMenuService {
|
||||
public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements RoleMenuService {
|
||||
|
||||
|
||||
private final RedisTemplate<String, Object> redisTemplate;
|
@ -10,16 +10,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.common.constant.SystemConstants;
|
||||
import com.youlai.common.security.util.SecurityUtils;
|
||||
import com.youlai.system.converter.RoleConverter;
|
||||
import com.youlai.system.mapper.SysRoleMapper;
|
||||
import com.youlai.system.model.entity.SysRole;
|
||||
import com.youlai.system.model.entity.SysRoleMenu;
|
||||
import com.youlai.system.mapper.RoleMapper;
|
||||
import com.youlai.system.model.entity.Role;
|
||||
import com.youlai.system.model.entity.RoleMenu;
|
||||
import com.youlai.system.model.form.RoleForm;
|
||||
import com.youlai.system.model.query.RolePageQuery;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.model.vo.RolePageVO;
|
||||
import com.youlai.system.service.SysRoleMenuService;
|
||||
import com.youlai.system.service.SysRoleService;
|
||||
import com.youlai.system.service.SysUserRoleService;
|
||||
import com.youlai.system.service.RoleMenuService;
|
||||
import com.youlai.system.service.RoleService;
|
||||
import com.youlai.system.service.UserRoleService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -36,10 +36,10 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> implements SysRoleService {
|
||||
public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements RoleService {
|
||||
|
||||
private final SysRoleMenuService roleMenuService;
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final RoleMenuService roleMenuService;
|
||||
private final UserRoleService userRoleService;
|
||||
private final RoleConverter roleConverter;
|
||||
|
||||
/**
|
||||
@ -56,15 +56,15 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
String keywords = queryParams.getKeywords();
|
||||
|
||||
// 查询数据
|
||||
Page<SysRole> rolePage = this.page(new Page<>(pageNum, pageSize),
|
||||
new LambdaQueryWrapper<SysRole>()
|
||||
Page<Role> rolePage = this.page(new Page<>(pageNum, pageSize),
|
||||
new LambdaQueryWrapper<Role>()
|
||||
.and(StrUtil.isNotBlank(keywords),
|
||||
wrapper ->
|
||||
wrapper.like(StrUtil.isNotBlank(keywords), SysRole::getName, keywords)
|
||||
wrapper.like(StrUtil.isNotBlank(keywords), Role::getName, keywords)
|
||||
.or()
|
||||
.like(StrUtil.isNotBlank(keywords), SysRole::getCode, keywords)
|
||||
.like(StrUtil.isNotBlank(keywords), Role::getCode, keywords)
|
||||
)
|
||||
.ne(!SecurityUtils.isRoot(), SysRole::getCode, SystemConstants.ROOT_ROLE_CODE) // 非超级管理员不显示超级管理员角色
|
||||
.ne(!SecurityUtils.isRoot(), Role::getCode, SystemConstants.ROOT_ROLE_CODE) // 非超级管理员不显示超级管理员角色
|
||||
);
|
||||
|
||||
// 实体转换
|
||||
@ -80,10 +80,10 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
@Override
|
||||
public List<Option> listRoleOptions() {
|
||||
// 查询数据
|
||||
List<SysRole> roleList = this.list(new LambdaQueryWrapper<SysRole>()
|
||||
.ne(!SecurityUtils.isRoot(), SysRole::getCode, SystemConstants.ROOT_ROLE_CODE)
|
||||
.select(SysRole::getId, SysRole::getName)
|
||||
.orderByAsc(SysRole::getSort)
|
||||
List<Role> roleList = this.list(new LambdaQueryWrapper<Role>()
|
||||
.ne(!SecurityUtils.isRoot(), Role::getCode, SystemConstants.ROOT_ROLE_CODE)
|
||||
.select(Role::getId, Role::getName)
|
||||
.orderByAsc(Role::getSort)
|
||||
);
|
||||
|
||||
// 实体转换
|
||||
@ -102,22 +102,22 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
Long roleId = roleForm.getId();
|
||||
|
||||
// 编辑角色时,判断角色是否存在
|
||||
SysRole oldRole = null;
|
||||
Role oldRole = null;
|
||||
if (roleId != null) {
|
||||
oldRole = this.getById(roleId);
|
||||
Assert.isTrue(oldRole != null, "角色不存在");
|
||||
}
|
||||
|
||||
String roleCode = roleForm.getCode();
|
||||
long count = this.count(new LambdaQueryWrapper<SysRole>()
|
||||
.ne(roleId != null, SysRole::getId, roleId)
|
||||
long count = this.count(new LambdaQueryWrapper<Role>()
|
||||
.ne(roleId != null, Role::getId, roleId)
|
||||
.and(wrapper ->
|
||||
wrapper.eq(SysRole::getCode, roleCode).or().eq(SysRole::getName, roleForm.getName())
|
||||
wrapper.eq(Role::getCode, roleCode).or().eq(Role::getName, roleForm.getName())
|
||||
));
|
||||
Assert.isTrue(count == 0, "角色名称或角色编码已存在,请修改后重试!");
|
||||
|
||||
// 实体转换
|
||||
SysRole role = roleConverter.toEntity(roleForm);
|
||||
Role role = roleConverter.toEntity(roleForm);
|
||||
|
||||
boolean result = this.saveOrUpdate(role);
|
||||
if (result) {
|
||||
@ -141,7 +141,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
*/
|
||||
@Override
|
||||
public RoleForm getRoleForm(Long roleId) {
|
||||
SysRole entity = this.getById(roleId);
|
||||
Role entity = this.getById(roleId);
|
||||
return roleConverter.convertToForm(entity);
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
*/
|
||||
@Override
|
||||
public boolean updateRoleStatus(Long roleId, Integer status) {
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
role.setStatus(status);
|
||||
@ -180,7 +180,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
.toList();
|
||||
|
||||
for (Long roleId : roleIds) {
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
// 判断角色是否被用户关联
|
||||
@ -218,15 +218,15 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||
@Transactional
|
||||
@CacheEvict(cacheNames = "menu", key = "'routes'")
|
||||
public boolean assignMenusToRole(Long roleId, List<Long> menuIds) {
|
||||
SysRole role = this.getById(roleId);
|
||||
Role role = this.getById(roleId);
|
||||
Assert.isTrue(role != null, "角色不存在");
|
||||
|
||||
// 删除角色菜单
|
||||
roleMenuService.remove(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, roleId));
|
||||
roleMenuService.remove(new LambdaQueryWrapper<RoleMenu>().eq(RoleMenu::getRoleId, roleId));
|
||||
// 新增角色菜单
|
||||
if (CollectionUtil.isNotEmpty(menuIds)) {
|
||||
List<SysRoleMenu> roleMenus = menuIds.stream()
|
||||
.map(menuId -> new SysRoleMenu(roleId, menuId))
|
||||
List<RoleMenu> roleMenus = menuIds.stream()
|
||||
.map(menuId -> new RoleMenu(roleId, menuId))
|
||||
.collect(Collectors.toList());
|
||||
roleMenuService.saveBatch(roleMenus);
|
||||
}
|
@ -10,13 +10,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.common.core.model.Option;
|
||||
import com.youlai.system.converter.DictConverter;
|
||||
import com.youlai.system.converter.DictItemConverter;
|
||||
import com.youlai.system.mapper.SysDictMapper;
|
||||
import com.youlai.system.model.entity.SysDict;
|
||||
import com.youlai.system.model.entity.SysDictItem;
|
||||
import com.youlai.system.mapper.DictMapper;
|
||||
import com.youlai.system.model.entity.Dict;
|
||||
import com.youlai.system.model.entity.DictItem;
|
||||
import com.youlai.system.model.form.DictForm;
|
||||
import com.youlai.system.model.query.DictPageQuery;
|
||||
import com.youlai.system.model.vo.DictPageVO;
|
||||
import com.youlai.system.service.SysDictItemService;
|
||||
import com.youlai.system.service.DictItemService;
|
||||
import com.youlai.system.service.SysDictService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
@ -33,9 +33,9 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> implements SysDictService {
|
||||
public class SysDictServiceImpl extends ServiceImpl<DictMapper, Dict> implements SysDictService {
|
||||
|
||||
private final SysDictItemService dictItemService;
|
||||
private final DictItemService dictItemService;
|
||||
private final DictConverter dictConverter;
|
||||
private final DictItemConverter dictItemConverter;
|
||||
|
||||
@ -62,11 +62,11 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public boolean saveDict(DictForm dictForm) {
|
||||
// 保存字典
|
||||
SysDict entity = dictConverter.convertToEntity(dictForm);
|
||||
Dict entity = dictConverter.convertToEntity(dictForm);
|
||||
|
||||
// 校验 code 是否唯一
|
||||
long count = this.count(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, entity.getCode())
|
||||
long count = this.count(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, entity.getCode())
|
||||
);
|
||||
Assert.isTrue(count == 0, "字典编码已存在");
|
||||
|
||||
@ -74,7 +74,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
// 保存字典项
|
||||
if (result) {
|
||||
List<DictForm.DictItem> dictFormDictItems = dictForm.getDictItems();
|
||||
List<SysDictItem> dictItems = dictItemConverter.convertToEntity(dictFormDictItems);
|
||||
List<DictItem> dictItems = dictItemConverter.convertToEntity(dictFormDictItems);
|
||||
dictItems.forEach(dictItem -> dictItem.setDictId(entity.getId()));
|
||||
dictItemService.saveBatch(dictItems);
|
||||
}
|
||||
@ -90,13 +90,13 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public DictForm getDictForm(Long id) {
|
||||
// 获取字典
|
||||
SysDict entity = this.getById(id);
|
||||
Dict entity = this.getById(id);
|
||||
Assert.isTrue(entity != null, "字典不存在");
|
||||
DictForm dictForm = dictConverter.convertToForm(entity);
|
||||
|
||||
// 获取字典项集合
|
||||
List<SysDictItem> dictItems = dictItemService.list(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, id)
|
||||
List<DictItem> dictItems = dictItemService.list(new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, id)
|
||||
);
|
||||
// 转换数据项
|
||||
List<DictForm.DictItem> dictItemList = dictItemConverter.convertToDictFormDictItem(dictItems);
|
||||
@ -113,12 +113,12 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public boolean updateDict(Long id, DictForm dictForm) {
|
||||
// 更新字典
|
||||
SysDict entity = dictConverter.convertToEntity(dictForm);
|
||||
Dict entity = dictConverter.convertToEntity(dictForm);
|
||||
|
||||
// 校验 code 是否唯一
|
||||
long count = this.count(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, entity.getCode())
|
||||
.ne(SysDict::getId, id)
|
||||
long count = this.count(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, entity.getCode())
|
||||
.ne(Dict::getId, id)
|
||||
);
|
||||
Assert.isTrue(count == 0, "字典编码已存在");
|
||||
|
||||
@ -127,21 +127,21 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
if (result) {
|
||||
// 更新字典项
|
||||
List<DictForm.DictItem> dictFormDictItems = dictForm.getDictItems();
|
||||
List<SysDictItem> dictItems = dictItemConverter.convertToEntity(dictFormDictItems);
|
||||
List<DictItem> dictItems = dictItemConverter.convertToEntity(dictFormDictItems);
|
||||
|
||||
// 获取当前数据库中的字典项
|
||||
List<SysDictItem> currentDictItemEntities = dictItemService.list(new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, id)
|
||||
List<DictItem> currentDictItemEntities = dictItemService.list(new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, id)
|
||||
);
|
||||
|
||||
// 获取当前数据库中存在的字典项ID集合
|
||||
Set<Long> currentDictItemIds = currentDictItemEntities.stream()
|
||||
.map(SysDictItem::getId)
|
||||
.map(DictItem::getId)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 获取新提交的字典项ID集合
|
||||
Set<Long> newAttrIds = dictItems.stream()
|
||||
.map(SysDictItem::getId)
|
||||
.map(DictItem::getId)
|
||||
.filter(Objects::nonNull)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
@ -155,7 +155,7 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
}
|
||||
|
||||
// 更新或新增字典项
|
||||
for (SysDictItem dictItem : dictItems) {
|
||||
for (DictItem dictItem : dictItems) {
|
||||
if (dictItem.getId() != null && currentDictItemIds.contains(dictItem.getId())) {
|
||||
// 更新现有字典项
|
||||
dictItemService.updateById(dictItem);
|
||||
@ -200,9 +200,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
@Override
|
||||
public List<Option> listDictItemsByCode(String code) {
|
||||
// 根据字典编码获取字典ID
|
||||
SysDict dict = this.getOne(new LambdaQueryWrapper<SysDict>()
|
||||
.eq(SysDict::getCode, code)
|
||||
.select(SysDict::getId)
|
||||
Dict dict = this.getOne(new LambdaQueryWrapper<Dict>()
|
||||
.eq(Dict::getCode, code)
|
||||
.select(Dict::getId)
|
||||
.last("limit 1")
|
||||
);
|
||||
// 如果字典不存在,则返回空集合
|
||||
@ -211,9 +211,9 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
|
||||
}
|
||||
|
||||
// 获取字典项
|
||||
List<SysDictItem> dictItems = dictItemService.list(
|
||||
new LambdaQueryWrapper<SysDictItem>()
|
||||
.eq(SysDictItem::getDictId, dict.getId())
|
||||
List<DictItem> dictItems = dictItemService.list(
|
||||
new LambdaQueryWrapper<DictItem>()
|
||||
.eq(DictItem::getDictId, dict.getId())
|
||||
);
|
||||
|
||||
// 转换为 Option
|
||||
|
@ -3,9 +3,9 @@ package com.youlai.system.service.impl;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.youlai.system.mapper.SysUserRoleMapper;
|
||||
import com.youlai.system.model.entity.SysUserRole;
|
||||
import com.youlai.system.service.SysUserRoleService;
|
||||
import com.youlai.system.mapper.UserRoleMapper;
|
||||
import com.youlai.system.model.entity.UserRole;
|
||||
import com.youlai.system.service.UserRoleService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@ -13,7 +13,7 @@ import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
|
||||
public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements UserRoleService {
|
||||
|
||||
/**
|
||||
* 保存用户角色
|
||||
@ -31,10 +31,10 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
}
|
||||
|
||||
// 用户原角色ID集合
|
||||
List<Long> userRoleIds = this.list(new LambdaQueryWrapper<SysUserRole>()
|
||||
.eq(SysUserRole::getUserId, userId))
|
||||
List<Long> userRoleIds = this.list(new LambdaQueryWrapper<UserRole>()
|
||||
.eq(UserRole::getUserId, userId))
|
||||
.stream()
|
||||
.map(SysUserRole::getRoleId)
|
||||
.map(UserRole::getRoleId)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// 新增用户角色
|
||||
@ -47,9 +47,9 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
List<SysUserRole> saveUserRoles = saveRoleIds
|
||||
List<UserRole> saveUserRoles = saveRoleIds
|
||||
.stream()
|
||||
.map(roleId -> new SysUserRole(userId, roleId))
|
||||
.map(roleId -> new UserRole(userId, roleId))
|
||||
.collect(Collectors.toList());
|
||||
this.saveBatch(saveUserRoles);
|
||||
|
||||
@ -60,9 +60,9 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
|
||||
.collect(Collectors.toList());
|
||||
|
||||
if (CollectionUtil.isNotEmpty(removeRoleIds)) {
|
||||
this.remove(new LambdaQueryWrapper<SysUserRole>()
|
||||
.eq(SysUserRole::getUserId, userId)
|
||||
.in(SysUserRole::getRoleId, removeRoleIds)
|
||||
this.remove(new LambdaQueryWrapper<UserRole>()
|
||||
.eq(UserRole::getUserId, userId)
|
||||
.in(UserRole::getRoleId, removeRoleIds)
|
||||
);
|
||||
}
|
||||
}
|
@ -19,9 +19,9 @@ import com.youlai.common.sms.config.AliyunSmsProperties;
|
||||
import com.youlai.common.sms.service.SmsService;
|
||||
import com.youlai.system.converter.UserConverter;
|
||||
import com.youlai.system.dto.UserAuthInfo;
|
||||
import com.youlai.system.mapper.SysUserMapper;
|
||||
import com.youlai.system.mapper.UserMapper;
|
||||
import com.youlai.system.model.bo.UserBO;
|
||||
import com.youlai.system.model.entity.SysUser;
|
||||
import com.youlai.system.model.entity.User;
|
||||
import com.youlai.system.model.form.UserForm;
|
||||
import com.youlai.system.model.form.UserRegisterForm;
|
||||
import com.youlai.system.model.query.UserPageQuery;
|
||||
@ -29,9 +29,9 @@ import com.youlai.system.model.vo.UserExportVO;
|
||||
import com.youlai.system.model.vo.UserInfoVO;
|
||||
import com.youlai.system.model.vo.UserPageVO;
|
||||
import com.youlai.system.model.vo.UserProfileVO;
|
||||
import com.youlai.system.service.SysRoleService;
|
||||
import com.youlai.system.service.SysUserRoleService;
|
||||
import com.youlai.system.service.SysUserService;
|
||||
import com.youlai.system.service.RoleService;
|
||||
import com.youlai.system.service.UserRoleService;
|
||||
import com.youlai.system.service.UserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
@ -52,13 +52,13 @@ import java.util.stream.Collectors;
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements SysUserService {
|
||||
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
|
||||
|
||||
private final PasswordEncoder passwordEncoder;
|
||||
|
||||
private final SysUserRoleService userRoleService;
|
||||
private final UserRoleService userRoleService;
|
||||
|
||||
private final SysRoleService roleService;
|
||||
private final RoleService roleService;
|
||||
|
||||
private final UserConverter userConverter;
|
||||
|
||||
@ -77,9 +77,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
* @return {@link UserPageVO}
|
||||
*/
|
||||
@Override
|
||||
public IPage<UserPageVO> listPagedUsers(UserPageQuery queryParams) {
|
||||
public IPage<UserPageVO> getUserPage(UserPageQuery queryParams) {
|
||||
|
||||
Page<UserBO> userPage = this.baseMapper.listPagedUsers(
|
||||
Page<UserBO> userPage = this.baseMapper.getUserPage(
|
||||
new Page<>(queryParams.getPageNum(), queryParams.getPageSize()),
|
||||
queryParams
|
||||
);
|
||||
@ -111,11 +111,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
|
||||
String username = userForm.getUsername();
|
||||
|
||||
long count = this.count(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username));
|
||||
long count = this.count(new LambdaQueryWrapper<User>().eq(User::getUsername, username));
|
||||
Assert.isTrue(count == 0, "用户名已存在");
|
||||
|
||||
// 实体转换 form->entity
|
||||
SysUser entity = userConverter.toEntity(userForm);
|
||||
User entity = userConverter.toEntity(userForm);
|
||||
|
||||
// 设置默认加密密码
|
||||
String defaultEncryptPwd = passwordEncoder.encode(SystemConstants.DEFAULT_PASSWORD);
|
||||
@ -144,14 +144,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
|
||||
String username = userForm.getUsername();
|
||||
|
||||
long count = this.count(new LambdaQueryWrapper<SysUser>()
|
||||
.eq(SysUser::getUsername, username)
|
||||
.ne(SysUser::getId, userId)
|
||||
long count = this.count(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getUsername, username)
|
||||
.ne(User::getId, userId)
|
||||
);
|
||||
Assert.isTrue(count == 0, "用户名已存在");
|
||||
|
||||
// form -> entity
|
||||
SysUser entity = userConverter.toEntity(userForm);
|
||||
User entity = userConverter.toEntity(userForm);
|
||||
|
||||
// 修改用户
|
||||
boolean result = this.updateById(entity);
|
||||
@ -188,9 +188,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
*/
|
||||
@Override
|
||||
public boolean updatePassword(Long userId, String password) {
|
||||
return this.update(new LambdaUpdateWrapper<SysUser>()
|
||||
.eq(SysUser::getId, userId)
|
||||
.set(SysUser::getPassword, passwordEncoder.encode(password))
|
||||
return this.update(new LambdaUpdateWrapper<User>()
|
||||
.eq(User::getId, userId)
|
||||
.set(User::getPassword, passwordEncoder.encode(password))
|
||||
);
|
||||
}
|
||||
|
||||
@ -234,12 +234,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
@Override
|
||||
public UserInfoVO getCurrentUserInfo() {
|
||||
// 登录用户entity
|
||||
SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>()
|
||||
.eq(SysUser::getUsername, SecurityUtils.getUsername())
|
||||
User user = this.getOne(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getUsername, SecurityUtils.getUsername())
|
||||
.select(
|
||||
SysUser::getId,
|
||||
SysUser::getNickname,
|
||||
SysUser::getAvatar
|
||||
User::getId,
|
||||
User::getNickname,
|
||||
User::getAvatar
|
||||
)
|
||||
);
|
||||
// entity->VO
|
||||
@ -305,14 +305,14 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||
redisTemplate.delete(RedisConstants.REGISTER_SMS_CODE_PREFIX + mobile);
|
||||
|
||||
// 校验手机号是否已注册
|
||||
long count = this.count(new LambdaQueryWrapper<SysUser>()
|
||||
.eq(SysUser::getMobile, mobile)
|
||||
long count = this.count(new LambdaQueryWrapper<User>()
|
||||
.eq(User::getMobile, mobile)
|
||||
.or()
|
||||
.eq(SysUser::getUsername, mobile)
|
||||
.eq(User::getUsername, mobile)
|
||||
);
|
||||
Assert.isTrue(count == 0, "手机号已注册");
|
||||
|
||||
SysUser entity = new SysUser();
|
||||
User entity = new User();
|
||||
entity.setUsername(mobile);
|
||||
entity.setMobile(mobile);
|
||||
entity.setStatus(GlobalConstants.STATUS_YES);
|
@ -2,6 +2,6 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysDeptMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.DeptMapper">
|
||||
|
||||
</mapper>
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysDictItemMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.DictItemMapper">
|
||||
|
||||
<!-- 根据字典编码获取字典列表 -->
|
||||
<select id="listDictItemsByDictId" resultType="com.youlai.system.model.vo.DictPageVO$DictItem">
|
@ -2,13 +2,13 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysDictMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.DictMapper">
|
||||
|
||||
<!-- 字典映射 -->
|
||||
<resultMap id="DictMap" type="com.youlai.system.model.vo.DictPageVO">
|
||||
<collection property="dictItems"
|
||||
column="{dictId=id}"
|
||||
select="com.youlai.system.mapper.SysDictItemMapper.listDictItemsByDictId">
|
||||
select="com.youlai.system.mapper.DictItemMapper.listDictItemsByDictId">
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysMenuMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.MenuMapper">
|
||||
|
||||
<!-- 菜单路由映射 -->
|
||||
<resultMap id="RouteMap" type="com.youlai.system.model.bo.RouteBO">
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysRoleMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.RoleMapper">
|
||||
|
||||
<!-- 获取最大范围的数据权限 -->
|
||||
<select id="getMaxDataRangeDataScope" resultType="java.lang.Integer">
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysRoleMenuMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.RoleMenuMapper">
|
||||
|
||||
<!-- 获取角色拥有的菜单ID集合 -->
|
||||
<select id="listMenuIdsByRoleId" resultType="java.lang.Long">
|
@ -2,10 +2,10 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysUserMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.UserMapper">
|
||||
|
||||
<!-- 用户分页列表 -->
|
||||
<select id="listPagedUsers" resultType="com.youlai.system.model.bo.UserBO">
|
||||
<select id="getUserPage" resultType="com.youlai.system.model.bo.UserBO">
|
||||
SELECT
|
||||
u.id,
|
||||
u.username,
|
||||
@ -55,7 +55,7 @@
|
||||
<collection
|
||||
property="roleIds"
|
||||
column="id"
|
||||
select="com.youlai.system.mapper.SysUserRoleMapper.listRoleIdsByUserId" >
|
||||
select="com.youlai.system.mapper.UserRoleMapper.listRoleIdsByUserId" >
|
||||
<result column="role_id" />
|
||||
</collection>
|
||||
</resultMap>
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.youlai.system.mapper.SysUserRoleMapper">
|
||||
<mapper namespace="com.youlai.system.mapper.UserRoleMapper">
|
||||
|
||||
<!-- 根据用户ID获取角色ID集合 -->
|
||||
<select id="listRoleIdsByUserId" resultType="java.lang.Long">
|
Loading…
Reference in New Issue
Block a user