微服务版后端初始化
This commit is contained in:
16
xjrsoft-service/xjrsoft-service-desktop/Dockerfile
Normal file
16
xjrsoft-service/xjrsoft-service-desktop/Dockerfile
Normal file
@ -0,0 +1,16 @@
|
||||
# 基础镜像
|
||||
FROM nexus.gdyditc.com:8082/openjdk:11-arm64
|
||||
# author
|
||||
MAINTAINER xjrsoft
|
||||
|
||||
# 挂载目录
|
||||
VOLUME /home/xjrsoft
|
||||
# 创建目录
|
||||
RUN mkdir -p /home/xjrsoft
|
||||
# 指定路径
|
||||
WORKDIR /home/xjrsoft
|
||||
# 复制jar文件到路径
|
||||
RUN ls
|
||||
COPY ./target/xjrsoft-service-desktop.jar /home/xjrsoft/xjrsoft-service-desktop.jar
|
||||
# 启动认证服务
|
||||
ENTRYPOINT ["java","-Dfile.encoding=utf-8","--add-opens","java.base/java.lang.reflect=ALL-UNNAMED","-jar","xjrsoft-service-desktop.jar"]
|
||||
87
xjrsoft-service/xjrsoft-service-desktop/pom.xml
Normal file
87
xjrsoft-service/xjrsoft-service-desktop/pom.xml
Normal file
@ -0,0 +1,87 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<parent>
|
||||
<artifactId>xjrsoft-service</artifactId>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<version>1.0.0-SNAPSHOT</version>
|
||||
</parent>
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>xjrsoft-service-desktop</artifactId>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>${java.version}</maven.compiler.source>
|
||||
<maven.compiler.target>${java.version}</maven.compiler.target>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-service-system-api</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-common-core</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-common-mybatis</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<version>${lombok.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-service-desktop-api</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-service-organization-api</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.xjrsoft</groupId>
|
||||
<artifactId>xjrsoft-service-form-api</artifactId>
|
||||
<version>${xjrsoft.framework.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-loadbalancer</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
</project>
|
||||
@ -0,0 +1,25 @@
|
||||
package com.xjrsoft.desktop;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
|
||||
|
||||
/**
|
||||
* @Author: tzx
|
||||
* @Date: 2023/10/10 17:16
|
||||
*/
|
||||
|
||||
@SpringBootApplication
|
||||
@EnableDiscoveryClient
|
||||
@EnableFeignClients(basePackages = "com.xjrsoft")
|
||||
@MapperScan(value = "com.xjrsoft.**.mapper")
|
||||
@ComponentScan(value = "com.xjrsoft")
|
||||
public class DesktopApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DesktopApplication.class, args);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,50 @@
|
||||
package com.xjrsoft.desktop.client;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import com.xjrsoft.desktop.entity.UserDesktopRelation;
|
||||
import com.xjrsoft.desktop.mapper.DesktopSchemaMapper;
|
||||
import com.xjrsoft.desktop.mapper.UserDesktopRelationMapper;
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: tzx
|
||||
* @Date: 2023/10/11 16:35
|
||||
*/
|
||||
@Hidden
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class DesktopSchemaClient implements IDesktopSchemaClient {
|
||||
private final DesktopSchemaMapper desktopSchemaMapper;
|
||||
|
||||
|
||||
private final UserDesktopRelationMapper userDesktopRelationMapper;
|
||||
|
||||
@Override
|
||||
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_DESKTOP_NAME + "/getDesktopSchemaFeign")
|
||||
public DesktopSchema getDesktopSchemaFeign(Long desktopId) {
|
||||
return desktopSchemaMapper.selectById(desktopId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@GetMapping(GlobalConstant.CLIENT_API_PRE+ GlobalConstant.MODULE_DESKTOP_NAME + "/getDesktopSchemaByUserIdFeign")
|
||||
public DesktopSchema getDesktopSchemaByUserIdFeign(Long userId) {
|
||||
|
||||
|
||||
UserDesktopRelation userDesktopRelation = userDesktopRelationMapper.selectOne(
|
||||
Wrappers.lambdaQuery(UserDesktopRelation.class).eq(UserDesktopRelation::getUserId, userId));
|
||||
|
||||
Long desktopId = userDesktopRelation == null ? null : userDesktopRelation.getDesktopId();
|
||||
|
||||
|
||||
return desktopSchemaMapper.selectOne(
|
||||
Wrappers.lambdaQuery(DesktopSchema.class)
|
||||
.eq(desktopId == null, DesktopSchema::getIsFirst, YesOrNoEnum.YES.getCode())
|
||||
.eq(desktopId != null, DesktopSchema::getId, desktopId));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.xjrsoft.desktop.client;
|
||||
|
||||
import io.swagger.v3.oas.annotations.Hidden;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
/**
|
||||
* @Author: tzx
|
||||
* @Date: 2023/10/10 14:50
|
||||
*/
|
||||
@Hidden
|
||||
@RestController
|
||||
@AllArgsConstructor
|
||||
public class UserDesktopRelationClient implements IUserDesktopRelationClient {
|
||||
|
||||
}
|
||||
@ -0,0 +1,78 @@
|
||||
package com.xjrsoft.desktop.controller;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.github.yulichang.toolkit.MPJWrappers;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.domain.page.PageOutput;
|
||||
import com.xjrsoft.common.core.domain.result.R;
|
||||
import com.xjrsoft.common.core.uitls.VoToColumnUtil;
|
||||
import com.xjrsoft.common.mybatis.utils.ConventPage;
|
||||
import com.xjrsoft.desktop.dto.DesktopHistoryPageDto;
|
||||
import com.xjrsoft.desktop.dto.SetActivityDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopHistory;
|
||||
import com.xjrsoft.desktop.service.IDesktopHistoryService;
|
||||
import com.xjrsoft.desktop.vo.DesktopHistoryPageVo;
|
||||
import com.xjrsoft.organization.entity.User;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(GlobalConstant.DESKTOP_MODULE_PREFIX + "/history")
|
||||
@Tag(name = GlobalConstant.SYSTEM_MODULE_PREFIX + "/history", description = "桌面设计历史记录接口")
|
||||
@AllArgsConstructor
|
||||
public class DesktopHistoryController {
|
||||
|
||||
private final IDesktopHistoryService desktopHistoryService;
|
||||
|
||||
@GetMapping(value = "/page")
|
||||
@Operation(summary = "桌面设计历史记录列表(分页)")
|
||||
public R page(@Valid DesktopHistoryPageDto dto) {
|
||||
|
||||
IPage<DesktopHistoryPageVo> desktopHistoryPageVoIPage = desktopHistoryService.selectJoinListPage(ConventPage.getPage(dto), DesktopHistoryPageVo.class,
|
||||
MPJWrappers.<DesktopHistory>lambdaJoin().disableSubLogicDel()
|
||||
.orderByDesc(DesktopHistory::getId)
|
||||
.select(DesktopHistory::getId)
|
||||
.selectAs(User::getName, DesktopHistoryPageVo::getCreateUserName)
|
||||
.eq(ObjectUtil.isNotEmpty(dto.getSchemaId()), DesktopHistory::getSchemaId, dto.getSchemaId())
|
||||
.eq(StrUtil.isNotBlank(dto.getKeyword()), DesktopHistory::getSchemaId, dto.getSchemaId())
|
||||
.select(DesktopHistory.class, x -> VoToColumnUtil.fieldsToColumns(DesktopHistoryPageVo.class).contains(x.getProperty()))
|
||||
.leftJoin(User.class, User::getId, DesktopHistory::getCreateUserId)
|
||||
);
|
||||
PageOutput<DesktopHistoryPageVo> pageOutput = ConventPage.getPageOutput(desktopHistoryPageVoIPage);
|
||||
// LambdaQueryWrapper<DesktopHistory> queryWrapper = new LambdaQueryWrapper<>();
|
||||
// queryWrapper
|
||||
// .eq(ObjectUtil.isNotEmpty(dto.getSchemaId()), DesktopHistory::getSchemaId, dto.getSchemaId())
|
||||
// .eq(StrUtil.isNotBlank(dto.getKeyword()), DesktopHistory::getSchemaId, dto.getSchemaId());
|
||||
// IPage<DesktopHistory> page = desktopHistoryService.page(ConventPage.getPage(dto), queryWrapper);
|
||||
// PageOutput<DesktopHistory> pageOutput = ConventPage.getPageOutput(page, DesktopHistory.class);
|
||||
|
||||
return R.ok(pageOutput);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/info")
|
||||
@Operation(summary = "桌面设计历史记录详情")
|
||||
public R info(@RequestParam Long id) {
|
||||
return R.ok(desktopHistoryService.getById(id));
|
||||
}
|
||||
|
||||
@PutMapping("/set-activity")
|
||||
@Operation(summary = "设置为活动版本")
|
||||
public R setActivity(@Valid @RequestBody SetActivityDto dto) {
|
||||
return R.ok(desktopHistoryService.setActivity(dto));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,116 @@
|
||||
package com.xjrsoft.desktop.controller;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.domain.page.ListInput;
|
||||
import com.xjrsoft.common.core.domain.result.R;
|
||||
import com.xjrsoft.common.core.enums.EnabledMark;
|
||||
import com.xjrsoft.common.core.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.common.core.uitls.VoToColumnUtil;
|
||||
import com.xjrsoft.desktop.dto.SetDesktopRelationDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopRelation;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import com.xjrsoft.desktop.service.IDesktopRelationService;
|
||||
import com.xjrsoft.desktop.service.IDesktopSchemaService;
|
||||
import com.xjrsoft.desktop.vo.DesktopSchemaVo;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计授权表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-01
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(GlobalConstant.DESKTOP_MODULE_PREFIX + "/relation")
|
||||
@Tag(name = GlobalConstant.SYSTEM_MODULE_PREFIX + "/relation", description = "桌面设计权限接口")
|
||||
@AllArgsConstructor
|
||||
public class DesktopRelationController {
|
||||
|
||||
private final IDesktopRelationService relationService;
|
||||
|
||||
private final IDesktopSchemaService desktopSchemaService;
|
||||
|
||||
@GetMapping(value = "/role")
|
||||
@Operation(summary = "查询角色授权的桌面设计")
|
||||
public R getRelationsOfRole(@RequestParam Long roleId) {
|
||||
List<DesktopRelation> relationList = relationService.list(Wrappers.lambdaQuery(DesktopRelation.class)
|
||||
.eq(DesktopRelation::getRoleId, roleId));
|
||||
if (CollectionUtils.isNotEmpty(relationList)) {
|
||||
Set<Long> desktopIdList = relationList.stream().map(DesktopRelation::getDesktopId).collect(Collectors.toSet());
|
||||
List<DesktopSchema> desktopSchemaList = desktopSchemaService.list(Wrappers.lambdaQuery(DesktopSchema.class)
|
||||
.select(DesktopSchema.class, x -> VoToColumnUtil.fieldsToColumns(DesktopSchemaVo.class).contains(x.getProperty()))
|
||||
.in(DesktopSchema::getId, desktopIdList)
|
||||
.eq(DesktopSchema::getEnabledMark, EnabledMark.ENABLED.getCode()));
|
||||
return R.ok(BeanUtil.copyToList(desktopSchemaList, DesktopSchemaVo.class));
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Operation(summary = "保存角色的桌面设计权限")
|
||||
@Transactional
|
||||
public R add(@Valid @RequestBody SetDesktopRelationDto dto) {
|
||||
Long roleId = dto.getRoleId();
|
||||
// 先删除角色的权限
|
||||
relationService.remove(Wrappers.<DesktopRelation>query().lambda().eq(DesktopRelation::getRoleId, roleId));
|
||||
List<Long> desktopIds = dto.getDesktopIds();
|
||||
if (CollectionUtils.isNotEmpty(desktopIds)) {
|
||||
List<DesktopRelation> toSaveList = new ArrayList<>(desktopIds.size());
|
||||
for (Long desktopId : desktopIds) {
|
||||
DesktopRelation relation = new DesktopRelation();
|
||||
relation.setRoleId(roleId);
|
||||
relation.setDesktopId(desktopId);
|
||||
toSaveList.add(relation);
|
||||
}
|
||||
relationService.saveBatch(toSaveList);
|
||||
}
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
@GetMapping(value = "/current-desktops")
|
||||
@Operation(summary = "查询当前用户拥有权限的桌面设计")
|
||||
public R getDesktopsOfCurrentUser(ListInput dto) {
|
||||
List<DesktopSchemaVo> resultList = new ArrayList<>();
|
||||
// 查询默认首页
|
||||
DesktopSchema firstDesktop = desktopSchemaService.getOne(Wrappers.lambdaQuery(DesktopSchema.class)
|
||||
.eq(DesktopSchema::getIsFirst, YesOrNoEnum.YES.getCode())
|
||||
.select(DesktopSchema.class, x -> VoToColumnUtil.fieldsToColumns(DesktopSchemaVo.class).contains(x.getProperty())));
|
||||
if (firstDesktop != null&&StrUtil.isBlank(dto.getKeyword())) {//当搜索关键字为空时将默认首页添加进去
|
||||
resultList.add(BeanUtil.toBean(firstDesktop, DesktopSchemaVo.class));
|
||||
}
|
||||
// 查询授权的桌面设计
|
||||
List<Long> currentRoleIdList = StpUtil.getTokenSession().get(GlobalConstant.LOGIN_USER_ROLE_ID_KEY, new ArrayList<>());
|
||||
if(CollectionUtils.isNotEmpty(currentRoleIdList)) {
|
||||
List<DesktopRelation> desktopRelationList = relationService.list(
|
||||
Wrappers.lambdaQuery(DesktopRelation.class).in(DesktopRelation::getRoleId, currentRoleIdList));
|
||||
if (CollectionUtils.isNotEmpty(desktopRelationList)) {
|
||||
Set<Long> desktopIdList = desktopRelationList.stream().map(DesktopRelation::getDesktopId).collect(Collectors.toSet());
|
||||
List<DesktopSchema> desktopSchemaList = desktopSchemaService.list(Wrappers.lambdaQuery(DesktopSchema.class)
|
||||
.select(DesktopSchema.class, x -> VoToColumnUtil.fieldsToColumns(DesktopSchemaVo.class).contains(x.getProperty()))
|
||||
.in(DesktopSchema::getId, desktopIdList)
|
||||
.eq(DesktopSchema::getEnabledMark, EnabledMark.ENABLED.getCode())
|
||||
.like(StrUtil.isNotBlank(dto.getKeyword()), DesktopSchema::getName, dto.getKeyword()));
|
||||
resultList.addAll(BeanUtil.copyToList(desktopSchemaList, DesktopSchemaVo.class));
|
||||
}
|
||||
}
|
||||
List<DesktopSchemaVo> collect = resultList.stream().distinct().collect(Collectors.toList());//去重操作,防止默认首页出现两次
|
||||
return R.ok(collect);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,233 @@
|
||||
package com.xjrsoft.desktop.controller;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.domain.page.PageOutput;
|
||||
import com.xjrsoft.common.core.domain.result.R;
|
||||
import com.xjrsoft.common.core.enums.EnabledMark;
|
||||
import com.xjrsoft.common.core.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.common.core.uitls.VoToColumnUtil;
|
||||
import com.xjrsoft.common.mybatis.utils.ConventPage;
|
||||
import com.xjrsoft.desktop.dto.*;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import com.xjrsoft.desktop.service.IDesktopSchemaService;
|
||||
import com.xjrsoft.desktop.vo.DesktopSchemaInfoVo;
|
||||
import com.xjrsoft.desktop.vo.DesktopSchemaPageVo;
|
||||
import com.xjrsoft.form.client.IFormExecuteClient;
|
||||
import com.xjrsoft.system.client.IMenuClient;
|
||||
import com.xjrsoft.system.entity.Menu;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计历史记录 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
|
||||
@RestController
|
||||
@RequestMapping(GlobalConstant.DESKTOP_MODULE_PREFIX + "/schema")
|
||||
@Tag(name = GlobalConstant.SYSTEM_MODULE_PREFIX + "/schema", description = "桌面设计模块接口")
|
||||
@AllArgsConstructor
|
||||
public class DesktopSchemaController {
|
||||
|
||||
private final IDesktopSchemaService desktopSchemaService;
|
||||
|
||||
private final IMenuClient menuClient;
|
||||
|
||||
private final IFormExecuteClient formExecuteClient;
|
||||
|
||||
@GetMapping(value = "/page")
|
||||
@Operation(summary = "桌面设计列表(分页)")
|
||||
public R page(@Valid DesktopSchemaPageDto dto) {
|
||||
|
||||
LambdaQueryWrapper<DesktopSchema> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper
|
||||
.like(StrUtil.isNotBlank(dto.getKeyword()), DesktopSchema::getCode, dto.getKeyword())
|
||||
.or()
|
||||
.like(StrUtil.isNotBlank(dto.getKeyword()), DesktopSchema::getName, dto.getKeyword())
|
||||
.select(DesktopSchema.class, x -> VoToColumnUtil.fieldsToColumns(DesktopSchemaPageVo.class).contains(x.getProperty()));
|
||||
IPage<DesktopSchema> page = desktopSchemaService.page(ConventPage.getPage(dto), queryWrapper);
|
||||
PageOutput<DesktopSchemaPageVo> pageOutput = ConventPage.getPageOutput(page, DesktopSchemaPageVo.class);
|
||||
return R.ok(pageOutput);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/enabled-page")
|
||||
@Operation(summary = "桌面设计列表(分页, 有效标记为1,不是默认首页)")
|
||||
public R enabledPage(@Valid DesktopSchemaPageDto dto) {
|
||||
|
||||
LambdaQueryWrapper<DesktopSchema> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper
|
||||
.like(StrUtil.isNotBlank(dto.getKeyword()), DesktopSchema::getCode, dto.getKeyword())
|
||||
.or()
|
||||
.like(StrUtil.isNotBlank(dto.getKeyword()), DesktopSchema::getName, dto.getKeyword())
|
||||
.select(DesktopSchema.class, x -> VoToColumnUtil.fieldsToColumns(DesktopSchemaPageVo.class).contains(x.getProperty()))
|
||||
.eq(DesktopSchema::getIsFirst, YesOrNoEnum.NO.getCode())
|
||||
.eq(DesktopSchema::getEnabledMark, EnabledMark.ENABLED.getCode());
|
||||
IPage<DesktopSchema> page = desktopSchemaService.page(ConventPage.getPage(dto), queryWrapper);
|
||||
PageOutput<DesktopSchemaPageVo> pageOutput = ConventPage.getPageOutput(page, DesktopSchemaPageVo.class);
|
||||
return R.ok(pageOutput);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/info")
|
||||
@Operation(summary = "桌面设计详情")
|
||||
public R info(@RequestParam Long id){
|
||||
DesktopSchema desktopSchema = desktopSchemaService.getById(id);
|
||||
DesktopSchemaInfoVo infoVo = BeanUtil.toBean(desktopSchema, DesktopSchemaInfoVo.class);
|
||||
Integer isMenu = desktopSchema.getIsMenu();
|
||||
if (isMenu != null && isMenu == 1) {
|
||||
Menu menu = menuClient.getMenuByIdFeign(desktopSchema.getMenuId());
|
||||
if (menu == null) {
|
||||
infoVo.setIsMenu(0);
|
||||
infoVo.setMenuId(0L);
|
||||
} else {
|
||||
infoVo.setParentId(menu.getParentId());
|
||||
infoVo.setIcon(menu.getIcon());
|
||||
}
|
||||
}
|
||||
return R.ok(infoVo);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@Operation(summary = "桌面设计新增")
|
||||
public R add(@Valid @RequestBody AddDesktopSchemaDto dto){
|
||||
return R.ok(desktopSchemaService.add(dto));
|
||||
}
|
||||
|
||||
@PostMapping("/copy")
|
||||
@Operation(summary = "复制桌面设计")
|
||||
public R copy(@Valid @RequestBody CopyDesktopSchemaDto dto){
|
||||
return R.ok(desktopSchemaService.copy(dto));
|
||||
}
|
||||
|
||||
|
||||
@PutMapping
|
||||
@Operation(summary = "桌面设计修改")
|
||||
public R update(@Valid @RequestBody UpdateDesktopSchemaDto dto){
|
||||
return R.ok(desktopSchemaService.update(dto));
|
||||
}
|
||||
|
||||
@PutMapping("/set-default")
|
||||
@Operation(summary = "设置桌面设计为默认首页")
|
||||
public R setFirst(@Valid @RequestBody SetFirstDto dto){
|
||||
return R.ok(desktopSchemaService.setFirst(dto));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@DeleteMapping
|
||||
@Operation(summary = "桌面设计删除")
|
||||
public R delete(@RequestBody List<Long> ids){
|
||||
return R.ok(desktopSchemaService.delete(ids));
|
||||
}
|
||||
|
||||
@GetMapping("/export")
|
||||
@Operation(summary = "导出模板")
|
||||
@SneakyThrows
|
||||
public R export(@RequestParam Long id) {
|
||||
DesktopSchema desktopSchema = desktopSchemaService.getById(id);
|
||||
return R.ok(JSONUtil.toJsonStr(desktopSchema));
|
||||
}
|
||||
|
||||
@PostMapping("/import")
|
||||
@Operation(summary = "导入模板")
|
||||
@SneakyThrows
|
||||
public R importSchema(@RequestParam(value = "file") MultipartFile multipartFile) {
|
||||
return R.ok(desktopSchemaService.importDesktopSchema(multipartFile));
|
||||
}
|
||||
|
||||
@PutMapping("/enabled")
|
||||
@Operation(summary = "启用/禁用")
|
||||
public R enabled(@Valid @RequestBody DesktopEnabledDto dto) {
|
||||
DesktopSchema desktopSchema = new DesktopSchema();
|
||||
desktopSchema.setId(dto.getId());
|
||||
desktopSchema.setEnabledMark(dto.getEnabledMark());
|
||||
return R.ok(desktopSchemaService.updateById(desktopSchema));
|
||||
|
||||
}
|
||||
|
||||
@PutMapping("/first")
|
||||
@Operation(summary = "设置首页")
|
||||
public R setFirst(@Valid @RequestBody DesktopFirstDto dto) {
|
||||
DesktopSchema desktopSchema = new DesktopSchema();
|
||||
desktopSchema.setId(dto.getId());
|
||||
desktopSchema.setIsFirst(dto.getIsFirst());
|
||||
if (dto.getIsFirst() != null && dto.getIsFirst().equals(1)) {
|
||||
// 将其他桌面设计设置为非首页
|
||||
desktopSchemaService.update(Wrappers.<DesktopSchema>update().lambda().set(DesktopSchema::getIsFirst, 0).eq(DesktopSchema::getIsFirst, 1));
|
||||
}
|
||||
return R.ok(desktopSchemaService.updateById(desktopSchema));
|
||||
|
||||
}
|
||||
|
||||
@PostMapping("/complex-add")
|
||||
@Operation(summary = "桌面设计-复杂列表页-新增(公共接口)")
|
||||
public R complexAdd(@Valid @RequestBody AddDeskComplexDto dto){
|
||||
return R.ok(formExecuteClient.complexAddFeign(dto));
|
||||
}
|
||||
|
||||
@PutMapping("/complex-update")
|
||||
@Operation(summary = "桌面设计-复杂列表页-编辑(公共接口)")
|
||||
public R complexUpdate(@Valid @RequestBody UpdateDeskComplexDto dto){
|
||||
return R.ok(formExecuteClient.complexUpdateFeign(dto));
|
||||
}
|
||||
|
||||
@DeleteMapping("/complex-delete")
|
||||
@Operation(summary = "桌面设计-复杂列表页-删除(公共接口)")
|
||||
public R complexDelete(@Valid @RequestBody DeleteDeskComplexDto dto){
|
||||
return R.ok(formExecuteClient.complexDeleteFeign(dto));
|
||||
}
|
||||
@PostMapping(value = "/complex-info")
|
||||
@Operation(summary = "桌面设计-复杂列表页-数据(公共接口)")
|
||||
public R complexInfo(@Valid @RequestBody DeskComplexInfoDto dto) {
|
||||
return R.ok(formExecuteClient.complexInfoFeign(dto));
|
||||
}
|
||||
|
||||
@GetMapping("/get-release-info")
|
||||
@Operation(summary = "桌面设计-复杂列表页-根据表单id查询发布信息")
|
||||
@SneakyThrows
|
||||
public R getReleaseInfo(@RequestParam Long formId) {
|
||||
return R.ok(formExecuteClient.getReleaseInfoFeign(formId));
|
||||
}
|
||||
|
||||
@PostMapping("/complex-query")
|
||||
@Operation(summary = "桌面设计-复杂列表页-根据发布id获取查询配置数据")
|
||||
@SneakyThrows
|
||||
public R complexQuery(@Valid @RequestBody ComplexQueryDto dto) {
|
||||
return R.ok(formExecuteClient.complexQueryFeign(dto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 桌面设计-复杂列表页-获取列表数据 分页
|
||||
*
|
||||
* @param dto
|
||||
*/
|
||||
@PostMapping(value = "/complex-page")
|
||||
@Operation(summary = "桌面设计-复杂列表页-获取列表数据 分页")
|
||||
public R complexPage(@Valid @RequestBody ComplexPageDto dto) {
|
||||
return R.ok(formExecuteClient.complexPageFeign(dto));
|
||||
}
|
||||
|
||||
@GetMapping("/get-table-info")
|
||||
@Operation(summary = "桌面设计-复杂列表页-根据表单id查询表单信息")
|
||||
@SneakyThrows
|
||||
public R getTableInfo(@RequestParam Long formId) {
|
||||
return R.ok(formExecuteClient.getTableInfoFeign(formId));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,46 @@
|
||||
package com.xjrsoft.desktop.controller;
|
||||
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.xjrsoft.common.core.constant.GlobalConstant;
|
||||
import com.xjrsoft.common.core.domain.result.R;
|
||||
import com.xjrsoft.desktop.dto.UserDesktopRelationDto;
|
||||
import com.xjrsoft.desktop.entity.UserDesktopRelation;
|
||||
import com.xjrsoft.desktop.service.IUserDesktopRelationService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.Valid;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户桌面设计首页关系表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-02
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping(GlobalConstant.DESKTOP_MODULE_PREFIX + "/user-relation")
|
||||
@Tag(name = GlobalConstant.SYSTEM_MODULE_PREFIX + "/user-relation", description = "用户和桌面设计关系模块接口")
|
||||
@AllArgsConstructor
|
||||
public class UserDesktopRelationController {
|
||||
|
||||
private final IUserDesktopRelationService relationService;
|
||||
|
||||
@PostMapping
|
||||
@Operation(summary = "设置用户首页")
|
||||
public R add(@Valid @RequestBody UserDesktopRelationDto dto) {
|
||||
long loginUserId = StpUtil.getLoginIdAsLong();
|
||||
relationService.remove(Wrappers.lambdaQuery(UserDesktopRelation.class).eq(UserDesktopRelation::getUserId, loginUserId));
|
||||
UserDesktopRelation relation = new UserDesktopRelation();
|
||||
relation.setDesktopId(dto.getDesktopId());
|
||||
relation.setUserId(loginUserId);
|
||||
return R.ok(relationService.save(relation));
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,19 @@
|
||||
package com.xjrsoft.desktop.service;
|
||||
|
||||
import com.github.yulichang.base.MPJBaseService;
|
||||
import com.xjrsoft.desktop.dto.SetActivityDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopHistory;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
public interface IDesktopHistoryService extends MPJBaseService<DesktopHistory> {
|
||||
|
||||
boolean setActivity(SetActivityDto dto);
|
||||
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.xjrsoft.desktop.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjrsoft.desktop.entity.DesktopRelation;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计授权表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-01
|
||||
*/
|
||||
public interface IDesktopRelationService extends IService<DesktopRelation> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,35 @@
|
||||
package com.xjrsoft.desktop.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjrsoft.desktop.dto.AddDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.dto.CopyDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.dto.SetFirstDto;
|
||||
import com.xjrsoft.desktop.dto.UpdateDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计历史记录 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
public interface IDesktopSchemaService extends IService<DesktopSchema> {
|
||||
|
||||
boolean add(AddDesktopSchemaDto dto);
|
||||
|
||||
boolean update(UpdateDesktopSchemaDto dto);
|
||||
|
||||
boolean delete(List<Long> ids);
|
||||
|
||||
boolean copy(CopyDesktopSchemaDto dto);
|
||||
|
||||
boolean setFirst(SetFirstDto dto);
|
||||
|
||||
boolean importDesktopSchema(MultipartFile multipartFile);
|
||||
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
package com.xjrsoft.desktop.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjrsoft.desktop.entity.UserDesktopRelation;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户桌面设计首页关系表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-02
|
||||
*/
|
||||
public interface IUserDesktopRelationService extends IService<UserDesktopRelation> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package com.xjrsoft.desktop.service.impl;
|
||||
|
||||
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||
import com.xjrsoft.common.core.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.desktop.dto.SetActivityDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopHistory;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import com.xjrsoft.desktop.mapper.DesktopHistoryMapper;
|
||||
import com.xjrsoft.desktop.mapper.DesktopSchemaMapper;
|
||||
import com.xjrsoft.desktop.service.IDesktopHistoryService;
|
||||
import lombok.AllArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class DesktopHistoryServiceImpl extends MPJBaseServiceImpl<DesktopHistoryMapper, DesktopHistory> implements IDesktopHistoryService {
|
||||
|
||||
private final DesktopSchemaMapper desktopSchemaMapper;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean setActivity(SetActivityDto dto) {
|
||||
DesktopHistory history = getById(dto.getId());
|
||||
history.setActivityFlag(YesOrNoEnum.YES.getCode());
|
||||
|
||||
DesktopSchema desktopSchema = desktopSchemaMapper.selectById(history.getSchemaId());
|
||||
|
||||
desktopSchema.setJsonContent(history.getJsonContent());
|
||||
|
||||
updateById(history);
|
||||
|
||||
desktopSchemaMapper.updateById(desktopSchema);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xjrsoft.desktop.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjrsoft.desktop.entity.DesktopRelation;
|
||||
import com.xjrsoft.desktop.mapper.DesktopRelationMapper;
|
||||
import com.xjrsoft.desktop.service.IDesktopRelationService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计授权表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-01
|
||||
*/
|
||||
@Service
|
||||
public class DesktopRelationServiceImpl extends ServiceImpl<DesktopRelationMapper, DesktopRelation> implements IDesktopRelationService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,300 @@
|
||||
package com.xjrsoft.desktop.service.impl;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjrsoft.common.core.enums.MenuType;
|
||||
import com.xjrsoft.common.core.enums.YesOrNoEnum;
|
||||
import com.xjrsoft.desktop.dto.AddDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.dto.CopyDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.dto.SetFirstDto;
|
||||
import com.xjrsoft.desktop.dto.UpdateDesktopSchemaDto;
|
||||
import com.xjrsoft.desktop.entity.DesktopHistory;
|
||||
import com.xjrsoft.desktop.entity.DesktopSchema;
|
||||
import com.xjrsoft.desktop.mapper.DesktopHistoryMapper;
|
||||
import com.xjrsoft.desktop.mapper.DesktopSchemaMapper;
|
||||
import com.xjrsoft.desktop.service.IDesktopSchemaService;
|
||||
import com.xjrsoft.system.client.IMenuClient;
|
||||
import com.xjrsoft.system.entity.Menu;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 桌面设计历史记录 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-04-13
|
||||
*/
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class DesktopSchemaServiceImpl extends ServiceImpl<DesktopSchemaMapper, DesktopSchema> implements IDesktopSchemaService {
|
||||
|
||||
private final DesktopHistoryMapper desktopHistoryMapper;
|
||||
|
||||
private final IMenuClient menuClient;
|
||||
|
||||
public final String componentPath = "/generator/desktop/home";
|
||||
|
||||
public final String urlPath = "/desktop-home/";
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean add(AddDesktopSchemaDto dto) {
|
||||
DesktopSchema desktopSchema = BeanUtil.toBean(dto, DesktopSchema.class);
|
||||
|
||||
long snowflakeNextId = IdUtil.getSnowflakeNextId();
|
||||
desktopSchema.setId(snowflakeNextId);
|
||||
|
||||
//是否菜单
|
||||
if (desktopSchema.getIsMenu() == YesOrNoEnum.YES.getCode()) {
|
||||
Menu menu = new Menu();
|
||||
long menuId = IdUtil.getSnowflakeNextId();
|
||||
desktopSchema.setMenuId(menuId);
|
||||
menu.setId(menuId);
|
||||
menu.setCode(desktopSchema.getCode());
|
||||
menu.setName(desktopSchema.getName());
|
||||
menu.setParentId(dto.getParentId());
|
||||
menu.setTitle(desktopSchema.getName());
|
||||
menu.setSystemId(desktopSchema.getSystemId());
|
||||
menu.setIcon(dto.getIcon());
|
||||
menu.setPath(urlPath + snowflakeNextId);
|
||||
menu.setComponent(componentPath);
|
||||
menu.setMenuType(MenuType.FUNCTION.getCode());
|
||||
menu.setDisplay(YesOrNoEnum.YES.getCode());
|
||||
menu.setAllowModify(YesOrNoEnum.YES.getCode());
|
||||
menu.setAllowDelete(YesOrNoEnum.YES.getCode());
|
||||
menu.setOutLink(YesOrNoEnum.NO.getCode());
|
||||
menu.setKeepAlive(YesOrNoEnum.NO.getCode());
|
||||
menu.setRemark(desktopSchema.getRemark());
|
||||
menu.setSortCode(dto.getSortCode());
|
||||
|
||||
menuClient.insertMenuFeign(menu);
|
||||
}
|
||||
|
||||
//如果此模板为首屏 需要吧其他的所有 设置为非首屏
|
||||
if (desktopSchema.getIsFirst() == YesOrNoEnum.YES.getCode()) {
|
||||
//将所有模板设置为 非默认
|
||||
LambdaQueryWrapper<DesktopSchema> select = Wrappers.lambdaQuery(DesktopSchema.class).eq(DesktopSchema::getIsFirst, YesOrNoEnum.YES.getCode()).select(DesktopSchema::getId);
|
||||
|
||||
List<DesktopSchema> list = list(select);
|
||||
|
||||
for (DesktopSchema schema : list) {
|
||||
schema.setIsFirst(YesOrNoEnum.NO.getCode());
|
||||
}
|
||||
updateBatchById(list);
|
||||
}
|
||||
save(desktopSchema);
|
||||
|
||||
|
||||
DesktopHistory history = new DesktopHistory();
|
||||
history.setSchemaId(desktopSchema.getId());
|
||||
history.setActivityFlag(YesOrNoEnum.YES.getCode());
|
||||
history.setJsonContent(desktopSchema.getJsonContent());
|
||||
desktopHistoryMapper.insert(history);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean update(UpdateDesktopSchemaDto dto) {
|
||||
DesktopSchema desktopSchema = BeanUtil.toBean(dto, DesktopSchema.class);
|
||||
|
||||
//是否菜单
|
||||
if (desktopSchema.getIsMenu() == YesOrNoEnum.YES.getCode()) {
|
||||
Menu menu = new Menu();
|
||||
menu.setCode(desktopSchema.getCode());
|
||||
menu.setName(desktopSchema.getName());
|
||||
menu.setParentId(dto.getParentId());
|
||||
menu.setTitle(desktopSchema.getName());
|
||||
menu.setSystemId(desktopSchema.getSystemId());
|
||||
menu.setIcon(dto.getIcon());
|
||||
menu.setId(dto.getMenuId());
|
||||
//如果是已经存在菜单 默认是修改原菜单
|
||||
if (ObjectUtil.isNotNull(dto.getMenuId()) && !dto.getMenuId().equals(0L)) {
|
||||
menuClient.updateMenuFeign(menu);
|
||||
}
|
||||
//如果取消了菜单 菜单数据不在 需要重新新增
|
||||
else {
|
||||
long menuId = IdUtil.getSnowflakeNextId();
|
||||
desktopSchema.setMenuId(menuId);
|
||||
menu.setId(menuId);
|
||||
menu.setPath(urlPath + dto.getId());
|
||||
menu.setComponent(componentPath);
|
||||
menu.setComponentType(YesOrNoEnum.YES.getCode());
|
||||
menu.setMenuType(MenuType.FUNCTION.getCode());
|
||||
menu.setDisplay(YesOrNoEnum.YES.getCode());
|
||||
menu.setAllowModify(YesOrNoEnum.YES.getCode());
|
||||
menu.setAllowDelete(YesOrNoEnum.YES.getCode());
|
||||
menu.setOutLink(YesOrNoEnum.NO.getCode());
|
||||
menu.setKeepAlive(YesOrNoEnum.NO.getCode());
|
||||
menu.setRemark(desktopSchema.getRemark());
|
||||
|
||||
menuClient.insertMenuFeign(menu);
|
||||
}
|
||||
|
||||
desktopSchema.setMenuId(menu.getId());
|
||||
}
|
||||
//如果不是菜单 需要把原菜单删除
|
||||
else {
|
||||
if(ObjectUtil.isNotNull(dto.getMenuId()) && dto.getMenuId() != 0L){
|
||||
menuClient.deleteMenuFeign(dto.getMenuId());
|
||||
desktopSchema.setMenuId(0L);
|
||||
}
|
||||
}
|
||||
|
||||
//如果此模板为首屏 需要吧其他的所有 设置为非首屏
|
||||
if (desktopSchema.getIsFirst() == YesOrNoEnum.YES.getCode()) {
|
||||
//将所有模板设置为 非默认
|
||||
//将所有模板设置为 非默认
|
||||
LambdaQueryWrapper<DesktopSchema> select = Wrappers.lambdaQuery(DesktopSchema.class).eq(DesktopSchema::getIsFirst, YesOrNoEnum.YES.getCode()).select(DesktopSchema::getId);
|
||||
|
||||
List<DesktopSchema> list = list(select);
|
||||
|
||||
for (DesktopSchema schema : list) {
|
||||
schema.setIsFirst(YesOrNoEnum.NO.getCode());
|
||||
}
|
||||
updateBatchById(list);
|
||||
}
|
||||
|
||||
updateById(desktopSchema);
|
||||
|
||||
|
||||
|
||||
|
||||
//修改原有历史记录 当前版本 标记
|
||||
DesktopHistory old = new DesktopHistory();
|
||||
old.setActivityFlag(YesOrNoEnum.NO.getCode());
|
||||
LambdaQueryWrapper<DesktopHistory> updateWrapper = Wrappers.lambdaQuery(DesktopHistory.class).eq(DesktopHistory::getSchemaId, desktopSchema.getId());
|
||||
desktopHistoryMapper.update(old, updateWrapper);
|
||||
|
||||
//新增一条历史记录
|
||||
DesktopHistory history = new DesktopHistory();
|
||||
history.setSchemaId(desktopSchema.getId());
|
||||
history.setActivityFlag(YesOrNoEnum.YES.getCode());
|
||||
history.setJsonContent(desktopSchema.getJsonContent());
|
||||
desktopHistoryMapper.insert(history);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean delete(List<Long> ids) {
|
||||
if (CollectionUtil.isEmpty(ids)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<DesktopSchema> wrapper = Wrappers.lambdaQuery(DesktopSchema.class)
|
||||
.eq(DesktopSchema::getIsMenu,YesOrNoEnum.YES.getCode())
|
||||
.isNotNull(DesktopSchema::getMenuId)
|
||||
.in(DesktopSchema::getId, ids).select(DesktopSchema::getId,DesktopSchema::getMenuId);
|
||||
|
||||
List<DesktopSchema> list = list(wrapper);
|
||||
List<Long> menuIds = list.stream().map(DesktopSchema::getMenuId).collect(Collectors.toList());
|
||||
|
||||
if (menuIds.size() > 0) {
|
||||
menuClient.deleteMenuBatchFeign(menuIds);
|
||||
}
|
||||
|
||||
removeBatchByIds(ids);
|
||||
|
||||
desktopHistoryMapper.delete(Wrappers.lambdaQuery(DesktopHistory.class).in(DesktopHistory::getSchemaId, ids));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean copy(CopyDesktopSchemaDto dto) {
|
||||
|
||||
DesktopSchema copySchema = getById(dto.getId());
|
||||
//不生成菜单
|
||||
copySchema.setId(null);
|
||||
copySchema.setIsFirst(YesOrNoEnum.NO.getCode());
|
||||
copySchema.setIsMenu(YesOrNoEnum.NO.getCode());
|
||||
copySchema.setMenuId(null);
|
||||
|
||||
save(copySchema);
|
||||
|
||||
DesktopHistory history = new DesktopHistory();
|
||||
history.setSchemaId(copySchema.getId());
|
||||
history.setActivityFlag(YesOrNoEnum.YES.getCode());
|
||||
history.setJsonContent(copySchema.getJsonContent());
|
||||
desktopHistoryMapper.insert(history);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean setFirst(SetFirstDto dto) {
|
||||
//将所有模板设置为 非默认
|
||||
LambdaQueryWrapper<DesktopSchema> select = Wrappers.lambdaQuery(DesktopSchema.class).eq(DesktopSchema::getIsFirst, YesOrNoEnum.YES.getCode()).select(DesktopSchema::getId);
|
||||
|
||||
List<DesktopSchema> list = list(select);
|
||||
|
||||
for (DesktopSchema desktopSchema : list) {
|
||||
desktopSchema.setIsFirst(YesOrNoEnum.NO.getCode());
|
||||
}
|
||||
updateBatchById(list);
|
||||
|
||||
//将当前模板所选模板设置为默认
|
||||
DesktopSchema schema = new DesktopSchema();
|
||||
schema.setId(dto.getId());
|
||||
schema.setIsFirst(YesOrNoEnum.YES.getCode());
|
||||
schema.setEnabledMark(YesOrNoEnum.YES.getCode());
|
||||
updateById(schema);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public boolean importDesktopSchema(MultipartFile multipartFile) {
|
||||
//用流读取文件
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(multipartFile.getInputStream()));
|
||||
String line;
|
||||
StringBuilder content = new StringBuilder();
|
||||
// 读取想定文件
|
||||
while ((line = bufferedReader.readLine()) != null) {
|
||||
content.append(line);
|
||||
}
|
||||
|
||||
DesktopSchema desktopSchema = JSONUtil.toBean(content.toString(), DesktopSchema.class);
|
||||
|
||||
//不生成菜单
|
||||
desktopSchema.setId(null);
|
||||
desktopSchema.setIsFirst(YesOrNoEnum.NO.getCode());
|
||||
desktopSchema.setIsMenu(YesOrNoEnum.NO.getCode());
|
||||
desktopSchema.setMenuId(null);
|
||||
|
||||
save(desktopSchema);
|
||||
|
||||
|
||||
DesktopHistory history = new DesktopHistory();
|
||||
history.setSchemaId(desktopSchema.getId());
|
||||
history.setActivityFlag(YesOrNoEnum.YES.getCode());
|
||||
history.setJsonContent(desktopSchema.getJsonContent());
|
||||
desktopHistoryMapper.insert(history);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,20 @@
|
||||
package com.xjrsoft.desktop.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjrsoft.desktop.entity.UserDesktopRelation;
|
||||
import com.xjrsoft.desktop.mapper.UserDesktopRelationMapper;
|
||||
import com.xjrsoft.desktop.service.IUserDesktopRelationService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户桌面设计首页关系表 服务实现类
|
||||
* </p>
|
||||
*
|
||||
* @author tzx
|
||||
* @since 2023-06-02
|
||||
*/
|
||||
@Service
|
||||
public class UserDesktopRelationServiceImpl extends ServiceImpl<UserDesktopRelationMapper, UserDesktopRelation> implements IUserDesktopRelationService {
|
||||
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
spring:
|
||||
profiles:
|
||||
active: public
|
||||
@ -0,0 +1,75 @@
|
||||
server:
|
||||
port: 3003
|
||||
|
||||
|
||||
spring:
|
||||
application:
|
||||
name: desktop-service
|
||||
main:
|
||||
allow-bean-definition-overriding: true
|
||||
autoconfigure:
|
||||
#自动化配置 例外处理
|
||||
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
|
||||
datasource:
|
||||
type: com.alibaba.druid.pool.DruidDataSource
|
||||
dynamic:
|
||||
primary: master
|
||||
datasource:
|
||||
master:
|
||||
driver-class-name: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://new-energy-mysqlt.itc.gdyd.com:3307/fcd2-msat-init?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
|
||||
username: learun4dev
|
||||
password: ABcd1234@
|
||||
|
||||
cloud:
|
||||
nacos: #nacos监控
|
||||
discovery:
|
||||
server-addr: 10.0.252.1:8848
|
||||
namespace: ITC
|
||||
group: DNE
|
||||
username: nacos
|
||||
password: ABcd1234@
|
||||
config:
|
||||
server-addr: 10.0.252.1:8848 # nacos 配置中心地址
|
||||
namespace: ITC
|
||||
group: DNE
|
||||
username: nacos
|
||||
password: ABcd1234@
|
||||
file-extension: yml # 指定格式 xjrsoft-demo-service-dev.yml
|
||||
extension-configs:
|
||||
- data-id: global-config.yml #导入全局配置
|
||||
refresh: true
|
||||
group: DNE
|
||||
- data-id: mybatis-plus-config.yml #导入mybatisplus 配置
|
||||
refresh: true
|
||||
group: DNE
|
||||
- data-id: sa-token-client-config.yml #导入sa-token配置
|
||||
refresh: true
|
||||
group: DNE
|
||||
- data-id: redis-config.yml #导入redis配置
|
||||
refresh: true
|
||||
group: DNE
|
||||
- data-id: seata-config.yml #导入seata配置
|
||||
refresh: true
|
||||
group: DNE
|
||||
sentinel:
|
||||
transport:
|
||||
dashboard: localhost:8080 #sentinel dashboard 地址
|
||||
port: 8719 #默认端口, 如果 被占用,会一直+1 直到未被占用为止
|
||||
|
||||
|
||||
|
||||
|
||||
springdoc:
|
||||
swagger-ui:
|
||||
path: /swagger-ui.html
|
||||
tags-sorter: alpha
|
||||
operations-sorter: alpha
|
||||
show-extensions: true
|
||||
api-docs:
|
||||
path: /desktop/v3/api-docs
|
||||
group-configs:
|
||||
- group: 'default'
|
||||
paths-to-match: '/desktop/**'
|
||||
packages-to-scan: com.xjrsoft.desktop
|
||||
default-flat-param-object: false
|
||||
Reference in New Issue
Block a user