#init commit

This commit is contained in:
ycl
2025-10-27 16:59:33 +08:00
parent a478ba8e61
commit 50ae0fd5b3
189 changed files with 18288 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.insigma_oracle</groupId>
<artifactId>insigma_oracle</artifactId>
<version>4.1.0-SNAPSHOT</version>
</parent>
<groupId>com.insigma_oracle</groupId>
<artifactId>odin-web</artifactId>
<version>4.1.0-SNAPSHOT</version>
<licenses>
<license>
<name>odin-base</name>
</license>
</licenses>
<properties>
<maven.compiler.target>17</maven.compiler.target>
<odin-est.version>2.0.0</odin-est.version>
<maven.compiler.source>17</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-core</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-web</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-firewall</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-jasypt</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-file-storage-mongo</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-scheduler-quartz</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-redis-session</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-ep-dev</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-excel</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-module</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-log-core</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-est</artifactId>
<version>${odin-est.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.insigma_oracle</groupId>
<artifactId>account-entrance-web</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>com.insigma_oracle</groupId>
<artifactId>account-entrance-rpc</artifactId>
<version>${revision}</version>
</dependency>
</dependencies>
<build>
<finalName>odin-web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>

118
template/odin-web/pom.xml Normal file
View File

@@ -0,0 +1,118 @@
<?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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>{{.groupId}}</groupId>
<artifactId>{{.artifactId}}</artifactId>
<version>${revision}</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>odin-web</artifactId>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<odin-est.version>2.0.0</odin-est.version>
</properties>
<dependencies>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-core</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-web</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-firewall</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-security-jasypt</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-file-storage-mongo</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-scheduler-quartz</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-redis-session</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-ep-dev</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-excel</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-web-support-module</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-log-core</artifactId>
</dependency>
<dependency>
<groupId>com.insigma</groupId>
<artifactId>odin-est</artifactId>
<version>${odin-est.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>odin-web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,19 @@
package com.insigma;
import com.vs.sqlmapper.spring.DataSourceConfig;
import com.vs.sqlmapper.spring.scan.VSDaoBeanScan;
import org.apache.ibatis.annotations.Mapper;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Import;
@SpringBootApplication(scanBasePackages = {"com.insigma", "com.vs","{{.groupId}}"})
@VSDaoBeanScan(basePackages = {"com.vs","{{.groupId}}"})
@Import(DataSourceConfig.class)
@MapperScan(value ={"{{.groupId}}.**.persist.mapper.mybatis","com.insigma.**.mapper","com.insigma.**.dao"})
public class OdinWebApplication {
public static void main(String[] args) {
SpringApplication.run(OdinWebApplication.class, args);
}
}

View File

@@ -0,0 +1,139 @@
package com.insigma.business.demo.controller;
import com.insigma.business.demo.dto.DemoPersonDTO;
import com.insigma.business.demo.service.DemoPersonService;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.log.core.annotation.OpLog;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* 人员增删改查demo
* <p>
* 实体类传参开发方式需继承BaseController并且需要实体类传参的方法上加上@OdinRequest
* 在doInit方法上需要加上注解@OdinRequest(init = true)init = true为初始化字典数据和模块信息其他方法上只需加@OdinRequest即可不需要参数
* 方法参数如果不指定@OdinRequestParam注解则按照参数名去取前端传过来的数据并将其转化成实体类
* 如果指定了@OdinRequestParam注解并且设定了value值则根据value值去取前端传过来的数据
* 其中@OdinRequestParam参数required默认为true即如果找不到对应的数据则返回错误当设置成false则不会
* 如果需要接收前端传过来的表格数据则可以通过定义PageInfo<T>来接收数据
*
* @author yinjh
*/
@RestController
@RequestMapping("/business/demo/DemoPerson")
public class DemoPersonController extends BaseController {
@Autowired
private DemoPersonService demoPersonService;
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(DemoPersonDTO f_form, Integer t_tableData_size) {
tableDataQuery(f_form, 1, t_tableData_size);
return this.ok();
}
@OdinRequest
@PostMapping("/query")
public ResponseMessage query(@OdinRequestParam("f_form") DemoPersonDTO queryDTO,
//@OdinRequestParam("t_tableData") PageInfo<DemoPersonDTO> pageInfo, // 没用到,只作如何取表格数据的演示
Integer t_tableData_size) {
tableDataQuery(queryDTO, 1, t_tableData_size);
// this.set("page", 1); // 需要将前端表格中:currentPage定义的值设置成1
return this.ok();
}
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") DemoPersonDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
// this.set("page", page); // 需要将t_tableData_page的值赋值到前端表格:currentPage的值中
return this.ok();
}
@OdinRequest
@PostMapping("/add")
public ResponseMessage add() {
this.clearForm("f_personForm");
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "新增人员");
return this.ok();
}
@OdinRequest
@PostMapping("/update")
public ResponseMessage update(String id) {
DemoPersonDTO dto = demoPersonService.queryPerson(id);
this.toForm("f_personForm", dto);
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "修改人员");
return this.ok();
}
@OdinRequest(refresh = true)
@PostMapping("/batchDelete")
public ResponseMessage batchDelete() {
List<DemoPersonDTO> list = this.getCheckedTableData("t_tableData", DemoPersonDTO.class);
if (list.size() == 0) {
return this.error("请勾选需要删除的人员!");
}
List<String> ids = list.stream().map(o -> o.getId()).collect(Collectors.toList());
demoPersonService.deletePersons(ids);
// this.refresh();
return this.ok("删除成功!");
}
@OdinRequest(refresh = true) // refresh = true 请求结束后刷新页面
@PostMapping("/delete")
public ResponseMessage delete(String id) {
List<String> ids = Arrays.asList(id);
demoPersonService.deletePersons(ids);
// this.refresh();
return this.ok("删除成功!");
}
@OpLog
@OdinRequest(refresh = true)
@PostMapping("/doSave/{name}")
public ResponseMessage doSave(@OdinRequestParam("f_personForm") DemoPersonDTO demoPersonDTO, @PathVariable String name) {
if (ObjectUtils.isEmpty(demoPersonDTO.getId())) {
DemoPersonDTO dto = demoPersonService.selectOne(demoPersonDTO);
if (dto != null) {
return this.error("不可添加重复数据!");
}
}
demoPersonService.savePerson(demoPersonDTO);
this.set("dialogFormVisible", false);
//this.refresh();
return this.ok("保存成功!");
}
public void tableDataQuery(DemoPersonDTO queryDTO, Integer t_tableData_page, Integer t_tableData_size) {
this.pageQuery("t_tableData", () -> {
this.set("page", t_tableData_page); // 需要将前端表格中:currentPage定义的值设置成page的值
return demoPersonService.queryPersonListByExport(queryDTO, t_tableData_page, t_tableData_size);
}, (demoPersonDTO, checkbox) -> {
if ("1".equals(demoPersonDTO.getSex())) {
// checkbox.setDisabled(true); // 设置行复选框不可编辑
} else {
// checkbox.setChecked(true); // 设置行复选框已选中
}
});
}
}

View File

@@ -0,0 +1,19 @@
package com.insigma.business.demo.dao;
import com.insigma.business.demo.entity.DemoPerson;
import com.insigma.framework.persistence.mybatis.plus.BaseDAO;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* Mapper 接口
* </p>
*
* @author yinjh
*/
@Mapper
public interface DemoPersonDAO extends BaseDAO<DemoPerson> {
DemoPerson selectDemoPersonById(String id);
}

View File

@@ -0,0 +1,37 @@
package com.insigma.business.demo.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 人员信息DTO
*
* @author yinjh
*/
@Data
public class DemoPersonDTO implements Serializable {
private Boolean checked;//用于设置复选框是否选中
private Boolean disabled;//用于设置复选框是否可编辑
private String id;
private String name;
private String sex;
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date birthday;
private String mobile;
private String address;
private String startTime;
private Date create_time;
}

View File

@@ -0,0 +1,51 @@
package com.insigma.business.demo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 人员信息
*
* @author yinjh
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("DEMO_PERSON")
public class DemoPerson implements Serializable {
private static final long serialVersionUID = 1L;
@TableId("ID")
private String id;
@TableField("NAME")
private String name;
@TableField("SEX")
private String sex;
@TableField("BIRTHDAY")
private Date birthday;
@TableField("MOBILE")
private String mobile;
@TableField("ADDRESS")
private String address;
@TableField("PRSENO")
private Long prseno;
@TableField("CREATE_TIME")
private Date create_time;
}

View File

@@ -0,0 +1,26 @@
package com.insigma.business.demo.service;
import com.insigma.business.demo.dto.DemoPersonDTO;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import java.util.List;
/**
* 人员管理服务接口
*
* @author yinjh
*/
public interface DemoPersonService {
DemoPersonDTO queryPerson(String id);
void deletePersons(List<String> ids);
void savePerson(DemoPersonDTO demoPersonDTO);
PageInfo<DemoPersonDTO> queryPersonList(DemoPersonDTO queryDTO, Integer page, Integer size);
DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO);
PageInfo<DemoPersonDTO> queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size);
}

View File

@@ -0,0 +1,152 @@
package com.insigma.business.demo.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.insigma.business.demo.dao.DemoPersonDAO;
import com.insigma.business.demo.dto.DemoPersonDTO;
import com.insigma.business.demo.entity.DemoPerson;
import com.insigma.business.demo.service.DemoPersonService;
import com.insigma.framework.core.util.DtoEntityUtil;
import com.insigma.framework.core.util.IDUtil;
import com.insigma.framework.persistence.core.jdbc.JdbcPageHelper;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.ep.dev.util.SysFunctionManager;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 人员管理业务实现类
*
* @author yinjh
*/
@Service
public class DemoPersonServiceImpl implements DemoPersonService {
@Autowired
private DemoPersonDAO demoPersonDAO;
@Autowired
private JdbcTemplate jdbcTemplate;
@Override
public DemoPersonDTO queryPerson(String id) {
DemoPerson dp = demoPersonDAO.selectDemoPersonById(id);
// DemoPerson dp = demoPersonDAO.sqlSession().selectOne("selectDemoPersonById", id);
// DemoPerson dp = demoPersonDAO.getById(id);
DemoPersonDTO dto = DtoEntityUtil.trans(dp, DemoPersonDTO.class);
return dto;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deletePersons(List<String> ids) {
demoPersonDAO.deleteByIds(ids);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void savePerson(DemoPersonDTO demoPersonDTO) {
DemoPerson dp = DtoEntityUtil.trans(demoPersonDTO, DemoPerson.class);
String id = null;
if (ObjectUtils.isEmpty(demoPersonDTO.getId())) { // 新增
id = IDUtil.generateUUID();
dp.setCreate_time(new Date());
} else {
id = demoPersonDTO.getId();
}
dp.setId(id);
demoPersonDAO.insertOrUpdate(dp);
// OpLogUtil.saveOpLog(SecurityUserUtil.getCurrentUser().getUsername(), "000000");
// demoPersonDTO = DtoEntityUtil.trans(dp, DemoPersonDTO.class);
// HUtil.insert("demo_person", JSONObject.parseObject(JSONObject.toJSONString(demoPersonDTO)), false, true);
}
@SneakyThrows
@Override
public PageInfo<DemoPersonDTO> queryPersonList(DemoPersonDTO queryDTO, Integer page, Integer size) {
//查询条件为时间段选项
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd");
Date oTime = null;
Date pTime = null;
if (!ObjectUtils.isEmpty(queryDTO.getStartTime())) {
oTime = st.parse(queryDTO.getStartTime().split(",")[0]);
pTime = st.parse(queryDTO.getStartTime().split(",")[1]);
}
LambdaQueryWrapper<DemoPerson> wrapper = new QueryWrapper<DemoPerson>().lambda();
wrapper.like(!ObjectUtils.isEmpty(queryDTO.getName()), DemoPerson::getName, "%" + queryDTO.getName() + "%")
.eq(!ObjectUtils.isEmpty(queryDTO.getSex()), DemoPerson::getSex, queryDTO.getSex())
.ge(!ObjectUtils.isEmpty(queryDTO.getStartTime()), DemoPerson::getBirthday, oTime)
.le(!ObjectUtils.isEmpty(queryDTO.getStartTime()), DemoPerson::getBirthday, pTime)
.orderByDesc(DemoPerson::getCreate_time);
Page<DemoPerson> dpPage = new Page<>(page, size);
IPage<DemoPerson> mapIPage = demoPersonDAO.selectPage(dpPage, wrapper);
List<DemoPerson> records = mapIPage.getRecords();
List<DemoPersonDTO> list = DtoEntityUtil.trans(records, DemoPersonDTO.class);
PageInfo<DemoPersonDTO> pageInfo = new PageInfo<>();
pageInfo.setTotal(mapIPage.getTotal());
pageInfo.setData(list);
return pageInfo;
}
@Override
public DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO) {
LambdaQueryWrapper<DemoPerson> wrapper = new QueryWrapper<DemoPerson>().lambda();
wrapper.eq(!ObjectUtils.isEmpty(demoPersonDTO.getName()), DemoPerson::getName, demoPersonDTO.getName())
.eq(!ObjectUtils.isEmpty(demoPersonDTO.getSex()), DemoPerson::getSex, demoPersonDTO.getSex())
.eq(!ObjectUtils.isEmpty(demoPersonDTO.getBirthday()), DemoPerson::getBirthday, demoPersonDTO.getBirthday())
.eq(!ObjectUtils.isEmpty(demoPersonDTO.getMobile()), DemoPerson::getMobile, demoPersonDTO.getAddress())
.eq(!ObjectUtils.isEmpty(demoPersonDTO.getAddress()), DemoPerson::getAddress, demoPersonDTO.getAddress());
//查询有没有相同的数据
DemoPerson demoPerson = demoPersonDAO.selectOne(wrapper);
DemoPersonDTO personDTO = DtoEntityUtil.trans(demoPerson, DemoPersonDTO.class);
return personDTO;
}
@SneakyThrows
@Override
public PageInfo<DemoPersonDTO> queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size) {
Map<String, Object> params = new HashMap<>();
StringBuffer sql = new StringBuffer("select * from demo_person");
boolean hasWhere = false;
if (!ObjectUtils.isEmpty(queryDTO.getName())) {
sql.append(hasWhere ? " and" : " where").append(" name like :name");
params.put("name", "%" + queryDTO.getName() + "%");
hasWhere = true;
}
if (!ObjectUtils.isEmpty(queryDTO.getSex())) {
sql.append(hasWhere ? " and" : " where").append(" sex = :sex");
params.put("sex", queryDTO.getSex());
hasWhere = true;
}
if (!ObjectUtils.isEmpty(queryDTO.getStartTime())) {
SimpleDateFormat st = new SimpleDateFormat("yyyy-MM-dd");
Date oTime = st.parse(queryDTO.getStartTime().split(",")[0]);
Date pTime = st.parse(queryDTO.getStartTime().split(",")[1]);
sql.append(hasWhere ? " and" : " where").append(" birthday > :startTime and birthday < :endTime");
params.put("startTime", oTime);
params.put("endTime", pTime);
}
JdbcPageHelper jdbcPageHelper = new JdbcPageHelper(jdbcTemplate, page, size, "grid", SysFunctionManager.getFunctionId());
return jdbcPageHelper.queryPagination(sql.toString(), params, DemoPersonDTO.class);
}
}

View File

@@ -0,0 +1,39 @@
package com.insigma.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* RestTemplate配置
*
* @author yinjh
*/
@Configuration
public class RestTemplateConfig {
@Value("${sys.rest-template.connect-timeout:30000}")
private int connectTimeout;
@Value("${sys.rest-template.read-timeout:30000}")
private int readTimeout;
@Bean
@Primary
public RestTemplate restTemplate(ClientHttpRequestFactory factory){
return new RestTemplate(factory);
}
@Bean
public ClientHttpRequestFactory simpleClientHttpRequestFactory(){
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setConnectTimeout(connectTimeout);
factory.setReadTimeout(readTimeout);
return factory;
}
}

View File

@@ -0,0 +1,138 @@
package com.insigma.sys.common;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.domain.core.entity.Aa26;
import com.insigma.framework.domain.core.entity.SysOrg;
import com.insigma.framework.domain.core.entity.SysRole;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.sys.service.Aa26Service;
import com.insigma.sys.service.SysOrgService;
import com.insigma.sys.service.SysRoleService;
import com.insigma.sys.service.SysUserService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* 统一验证器
*
* @author yinjh
*/
@Component
public class CommonValidator {
@Resource
private CurrentUserService currentUserService;
@Resource
private SysUserService sysUserService;
@Resource
private SysRoleService sysRoleService;
@Resource
private Aa26Service aa26Service;
@Resource
private SysOrgService sysOrgService;
/**
* 校验当前登录用户是否有相应角色的操作权限
* @param roleId 角色ID
* @return true有权限false无权限
*/
public boolean validateRole(String roleId) {
SysUser sysUser = currentUserService.getCurrentUser();
SysRole sysRole = sysRoleService.getByRoleId(roleId);
if (sysRole == null) {
throw new AppException("角色不存在!");
}
if ("1".equals(sysUser.getUserType())) {
return true;
} else if ("2".equals(sysUser.getUserType())) {
return sysUser.getAreaId() != null && sysUser.getAreaId().equals(sysRole.getAreaId());
} else if ("3".equals(sysUser.getUserType())) {
return sysUser.getOrgId() != null && sysUser.getOrgId().equals(sysRole.getOrgId());
}
return false;
}
/**
* 校验角色列表
* @param roleIds 角色ID列表
* @return true有权限false无权限
*/
public boolean validateRoleIds(List<String> roleIds) {
for (String roleId : roleIds) {
if (!validateRole(roleId)) {
return false;
}
}
return true;
}
/**
* 校验当前登录用户是否有相应行政区划的操作权限
* @param areaId 区域ID
* @return true有权限false无权限
*/
public boolean validateArea(String areaId, String userType) {
SysUser sysUser = currentUserService.getCurrentUser();
if ("1".equals(sysUser.getUserType()) && "1".equals(userType)) {
return true;
}
Aa26 aa26 = aa26Service.getByAab301(areaId);
if (aa26 == null) {
throw new AppException("行政区划不存在!");
}
if ("1".equals(sysUser.getUserType())) {
return true;
} else if ("2".equals(sysUser.getUserType())) {
List<Aa26> list = aa26Service.getByAab301AndIdPath(sysUser.getAreaId() + "", aa26.getIdPath());
return !list.isEmpty();
} else if ("3".equals(sysUser.getUserType())) {
return aa26.getAab301().equals(sysUser.getAreaId() + "");
}
return false;
}
/**
* 校验当前登录用户是否有相应机构的操作权限
* @param orgId 机构ID
* @return true有权限false无权限
*/
public boolean validateOrg(Long orgId, String userType) {
SysUser sysUser = currentUserService.getCurrentUser();
if ("1".equals(userType)) {
return "1".equals(sysUser.getUserType());
}
SysOrg sysOrg = sysOrgService.getByOrgId(orgId);
if (sysOrg == null) {
throw new AppException("机构不存在!");
}
if ("1".equals(sysUser.getUserType())) {
return true;
} else if ("2".equals(sysUser.getUserType())) {
List<SysOrg> list = sysOrgService.getByRegionCodeAndIdPath(sysUser.getAreaId() + "", sysOrg.getIdPath());
return !list.isEmpty();
} else if ("3".equals(sysUser.getUserType())) {
return sysOrg.getOrgId().equals(orgId);
}
return false;
}
/**
* 校验当前登录用户是否有相应用户的操作权限
* @param userId 用户ID
* @return true有权限false无权限
*/
public boolean validateUser(String userId) {
SysUser sysUser = sysUserService.getByUserId(userId);
if (sysUser == null) {
throw new AppException("用户不存在!");
}
return validateOrg(sysUser.getOrgId(), sysUser.getUserType());
}
}

View File

@@ -0,0 +1,16 @@
package com.insigma.sys.common;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.security.web.dto.SysUserDetails;
/**
* 获取当前用户信息的接口
*
* @author yinjh
*/
public interface CurrentUserService {
SysUser getCurrentUser();
SysUserDetails getCurrentUserDetails();
}

View File

@@ -0,0 +1,60 @@
package com.insigma.sys.common;
import com.insigma.framework.core.util.SpringContextUtil;
import com.insigma.odin.framework.est.EstException;
import com.insigma.odin.framework.est.auth.ClientAuth;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.context.ApplicationContext;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.web.authentication.WebAuthenticationDetails;
import org.springframework.security.web.authentication.logout.LogoutHandler;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* 登录认证
*
* @author jinw
*/
public class OdinClientAuth implements ClientAuth {
@Override
public boolean syslogon(String loginName, HttpServletRequest request) throws EstException {
UserDetailsService userDetailsService;
ApplicationContext applicationContext = WebApplicationContextUtils.findWebApplicationContext(request.getServletContext());
if (SpringContextUtil.getAppContext() != null) {
userDetailsService = SpringContextUtil.getBean(UserDetailsService.class);
} else {
userDetailsService = applicationContext.getBean(UserDetailsService.class);
}
UserDetails userDetails = userDetailsService.loadUserByUsername(loginName);
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(userDetails, userDetails.getPassword(), userDetails.getAuthorities());
token.setDetails(new WebAuthenticationDetails(request));
SecurityContextHolder.getContext().setAuthentication(token);
request.getSession().setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
request.getSession().setAttribute(OdinClientAuthExtendFilter.IS_SAVE_LOGONLOG_SESSION_KEY, Boolean.TRUE);
return true;
}
@Override
public boolean syslogout(String loginName, HttpServletRequest request, HttpServletResponse response) throws EstException {
LogoutHandler logoutHandler;
if (SpringContextUtil.getAppContext() != null) {
logoutHandler = SpringContextUtil.getBean("myLogoutHandler", LogoutHandler.class);;
} else {
logoutHandler = WebApplicationContextUtils.findWebApplicationContext(request.getServletContext()).getBean("myLogoutHandler",LogoutHandler.class);
}
SecurityContext securityContext = (SecurityContext) request.getSession().getAttribute("SPRING_SECURITY_CONTEXT");
if (securityContext != null) {
logoutHandler.logout(request, response, securityContext.getAuthentication());
request.getSession().removeAttribute("SPRING_SECURITY_CONTEXT");
}
request.getSession().invalidate();
return true;
}
}

View File

@@ -0,0 +1,54 @@
package com.insigma.sys.common;
import com.insigma.framework.security.core.consts.SecurityConst;
import com.insigma.framework.security.web.dto.SysUserDetails;
import com.insigma.framework.security.web.handler.SysLoginHandler;
import jakarta.annotation.Resource;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import java.io.IOException;
/**
* 单点登录扩展过滤器,用于记录登录日志
*
* @author jinw
*/
@Slf4j
@Component
@WebFilter(filterName = "odinClientExtendFilter",urlPatterns = "/*")
public class OdinClientAuthExtendFilter extends OncePerRequestFilter {
public static final String IS_SAVE_LOGONLOG_SESSION_KEY = "save_logonlog_flag";
@Resource
private SysLoginHandler sysLoginHandler;
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpSession session = request.getSession();
Boolean isSaveLogonlog = null;
try {
isSaveLogonlog = (Boolean) session.getAttribute(IS_SAVE_LOGONLOG_SESSION_KEY);
if (isSaveLogonlog != null && isSaveLogonlog) {
SysUserDetails userDetails = (SysUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
sysLoginHandler.innerLoginSuccess(userDetails, SecurityConst.LoginType.SSO_EST, request);
}
} catch (Exception e) {
log.error("记录登录日志失败!", e);
} finally {
if (isSaveLogonlog != null) {
session.removeAttribute(IS_SAVE_LOGONLOG_SESSION_KEY);
}
}
chain.doFilter(request, response);
}
}

View File

@@ -0,0 +1,49 @@
package com.insigma.sys.common;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.function.Supplier;
/**
* 系统管理模式
*
* @author jinw
*/
@Component
public final class SysManageMode {
@Value("${odin.sys.configure.triple-mode:false}")
private boolean tripleMode;
private static boolean TRIPLE_MODE = false;
@PostConstruct
public void init() {
TRIPLE_MODE = tripleMode;
}
public static boolean isTripleMode() {
return TRIPLE_MODE;
}
public static <T> T doActionInTripleMode(Supplier<T> tripleModeAction) {
if (TRIPLE_MODE)
return tripleModeAction.get();
return null;
}
public static void doActionInTripleMode(Runnable tripleModeRun) {
if (TRIPLE_MODE)
tripleModeRun.run();
}
public static void doAction(Runnable tripleModeRun, Runnable notTripleModeRun) {
if (TRIPLE_MODE) {
tripleModeRun.run();
} else {
notTripleModeRun.run();
}
}
}

View File

@@ -0,0 +1,58 @@
package com.insigma.sys.common.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.domain.core.mapper.SysUserBaseMapper;
import com.insigma.framework.security.web.dto.SysUserDetails;
import com.insigma.framework.security.core.util.SecurityUserUtil;
import com.insigma.sys.common.CurrentUserService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import java.util.Objects;
/**
* 获取当前登录人
*
* @author yinjh
*/
@Service
public class CurrentUserServiceImpl implements CurrentUserService {
@Resource
private SysUserBaseMapper sysUserBaseMapper;
@Override
public SysUser getCurrentUser() {
return currentUserFromSecurityContext();
}
@Override
public SysUserDetails getCurrentUserDetails() {
return (SysUserDetails) SecurityUserUtil.getCurrentUser();
}
/**
* 从SpringSecurity中获取当前用户信息 jinw
*
* @return 当前登录用户
*/
private SysUser currentUserFromSecurityContext() {
SysUser sysUser = null;
SysUserDetails userDetails = (SysUserDetails) SecurityUserUtil.getCurrentUser();
if (userDetails != null) {
sysUser = (SysUser) userDetails.getOthers().get("sysUser");
if (sysUser == null) {
sysUser = sysUserBaseMapper.selectOne(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getLogonName, userDetails.getUsername()));
userDetails.getOthers().put("sysUser", sysUser);
HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest();
request.getSession().setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
}
}
return sysUser;
}
}

View File

@@ -0,0 +1,29 @@
package com.insigma.sys.common.impl;//package com.insigma.sys.common.impl;
import com.insigma.odin.framework.est.EstException;
import com.insigma.odin.framework.est.auth.LogoutOrFailedExceptionHandler;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import java.io.IOException;
/**
* 登出或失败异常处理器
*
* @author yinjh
*/
@Slf4j
public class MyLogoutOrFailedExceptionHandler extends LogoutOrFailedExceptionHandler {
@Override
public void handle(EstException ex, HttpServletRequest request, HttpServletResponse response) {
try {
log.debug("异常处理:", ex);
response.sendError(401, "登录已失效,请重新登录!");
} catch (IOException e) {
log.error("返回异常码时失败!", e);
}
}
}

View File

@@ -0,0 +1,34 @@
package com.insigma.sys.common.impl;
import com.insigma.framework.security.core.dto.BaseUserInfo;
import com.insigma.framework.security.web.dto.SysUserDetails;
import com.insigma.framework.security.web.handler.SysLoginHandler;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.AuthenticationException;
import org.springframework.stereotype.Service;
/**
* 登录处理器
*
* @author yinjh
*/
@Slf4j
@Service
public class MySysLoginHandler extends SysLoginHandler {
@Override
public BaseUserInfo success(SysUserDetails sysUserDetails, String loginType, HttpServletRequest request) {
request.getSession().setAttribute("auth_filter_ignored",Boolean.TRUE);
BaseUserInfo baseUserInfo = new BaseUserInfo();
baseUserInfo.setUserid(sysUserDetails.getUserId());
baseUserInfo.setUsername(sysUserDetails.getUsername());
baseUserInfo.setNickname(sysUserDetails.getNickname());
return baseUserInfo;
}
@Override
public void failure(String username, String loginType, HttpServletRequest request, AuthenticationException exception) {
log.info("{} 登录失败,原因: {}", username, exception.getMessage());
}
}

View File

@@ -0,0 +1,37 @@
package com.insigma.sys.common.impl;
import com.insigma.framework.security.web.handler.SysLogoutHandler;
import com.insigma.odin.framework.est.service.SSOServiceFactory;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.security.core.Authentication;
import org.springframework.stereotype.Component;
/**
* 登出处理器
*
* @author yinjh
*/
@Slf4j
@Component
@ConditionalOnProperty(prefix = "sso", name = "app-name", matchIfMissing = false)
public class MySysLogoutHandler extends SysLogoutHandler {
@Value("${sso.app-name:}")
private String appName;
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
String est = (String) request.getSession().getAttribute("est");
if (est != null) {
log.info("存在est令牌执行注销操作est: {}, appName: {}", est, appName);
SSOServiceFactory.logoutService().logout(est, appName, request);
} else {
log.info("无est令牌不执行注销操作");
}
}
}

View File

@@ -0,0 +1,55 @@
package com.insigma.sys.config;//package com.insigma.sys.config;
import com.insigma.framework.security.core.config.SysSecurityConfig;
import com.insigma.framework.security.core.config.SysSecurityNoopConfig;
import com.insigma.odin.framework.est.auth.GenericAuthFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.Map;
/**
* 单点登录配置类
*
* @author jinw
*/
@Configuration
@EnableConfigurationProperties(SSOConfigProperties.class)
@AutoConfigureAfter({SysSecurityConfig.class, SysSecurityNoopConfig.class})
@ConditionalOnProperty(prefix = "sso", name = "app-name", matchIfMissing = false)
public class SSOConfig {
@Autowired
private SSOConfigProperties configProperties;
@Bean
public FilterRegistrationBean genericAuth() {
FilterRegistrationBean<GenericAuthFilter> filterRegistrationBean = new FilterRegistrationBean<>();
filterRegistrationBean.setFilter(new GenericAuthFilter());
Map<String, String> initParameters = new HashMap<>();
initParameters.put("app-name", configProperties.getAppName());
initParameters.put("auth-service-root-url", configProperties.getAuthServiceRootUrl());
initParameters.put("auth-logon-page-root-url", configProperties.getAuthLogonPageRootUrl());
initParameters.put("client-auth-class", configProperties.getClientAuthClass());
initParameters.put("free-urls", configProperties.getFreeUrls());
initParameters.put("auth-mode", configProperties.getAuthMode());
if (!ObjectUtils.isEmpty(configProperties.getAuthServiceContextPath())) {
initParameters.put("auth-service-context-path", configProperties.getAuthServiceContextPath());
}
if (!ObjectUtils.isEmpty(configProperties.getLogoutOrFailedExceptionHandler())) {
initParameters.put("logout-or-failed-exception-handler", configProperties.getLogoutOrFailedExceptionHandler());
}
filterRegistrationBean.setInitParameters(initParameters);
filterRegistrationBean.addUrlPatterns("/*");
filterRegistrationBean.setOrder(-100);
return filterRegistrationBean;
}
}

View File

@@ -0,0 +1,24 @@
package com.insigma.sys.config;//package com.insigma.sys.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
* 单点登录参数配置类
*
* @author jinw
*/
@ConfigurationProperties(prefix = "sso")
@Data
public class SSOConfigProperties {
private String appName;
private String authServiceRootUrl;
private String authLogonPageRootUrl;
private String clientAuthClass = "com.insigma.sys.common.OdinClientAuth";
private String freeUrls;
private String authMode;
private String authServiceContextPath;
private String logoutOrFailedExceptionHandler;
}

View File

@@ -0,0 +1,22 @@
package com.insigma.sys.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
* 系统配置参数类
*
* @author yinjh
*/
@Component
@ConfigurationProperties(prefix = "odin.sys.configure")
@Data
public class SysConfigProperties {
/**
* 重置默认密码
*/
private String defaultPassword;
private Boolean ipAndUserAgentControl = false;
}

View File

@@ -0,0 +1,51 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.encryption.util.SM3Utils;
import com.insigma.framework.core.util.IpUtil;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.sys.common.CurrentUserService;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.concurrent.TimeUnit;
/**
* @author yinjh
*/
@RestController
@RequestMapping("/auth")
public class AuthController {
@Autowired
private CurrentUserService currentUserService;
@Autowired(required = false)
private RedisTemplate redisTemplate;
@GetMapping("/getToken")
public ResponseMessage getToken(HttpServletRequest request) {
SysUser sysUser = currentUserService.getCurrentUser();
Date date = new Date();
long timetamp = date.getTime();
String token = SM3Utils.digest(IpUtil.getClientIp(request) + ";" + sysUser.getLogonName() + ";" + timetamp); // 生成token
redisTemplate.opsForValue().set(token, sysUser);
redisTemplate.expire(token, 300, TimeUnit.SECONDS);
return ResponseMessage.ok("", token);
}
@PostMapping("/getUserInfo")
public ResponseMessage getUserInfo(@RequestBody JSONObject jsonObject) {
String token = jsonObject.getString("token");
SysUser sysUser = (SysUser) redisTemplate.opsForValue().get(token);
if(sysUser == null) {
return ResponseMessage.error("获取用户信息失败!");
}
return ResponseMessage.ok("", sysUser);
}
}

View File

@@ -0,0 +1,55 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.domain.core.entity.SysHoliday;
import com.insigma.sys.service.HolidayService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author yinjh
*/
@RestController
@RequestMapping("/sys/holiday")
public class HolidayController {
@Autowired
private HolidayService holidayService;
@GetMapping("/query")
public ResponseMessage getHolidayList(int year){
List<SysHoliday> holidayList = holidayService.getHolidaysByYear(year);
if (holidayList == null || holidayList.isEmpty()) {
holidayList = holidayService.getWeekdays(year);
holidayService.updateHolidaysByYear(year, holidayList);
}
List<String> dates = holidayToDate(holidayList);
return ResponseMessage.ok("", dates);
}
@PostMapping("/{year}/update")
public ResponseMessage updateHolidays(@PathVariable int year, @RequestBody JSONObject jsonObject){
List<String> holidays = jsonObject.getJSONArray("holidays").toJavaList(String.class);
holidayService.updateHolidaysByYear(year, dateToHoliday(holidays));
return ResponseMessage.ok("保存成功!");
}
private List<String> holidayToDate(List<SysHoliday> holidays) {
return holidays.stream().map(s -> s.getYear() + "-" + (s.getMonth() < 10 ? "0" : "") + s.getMonth() + "-" + (s.getDay() < 10 ? "0" : "") + s.getDay()).collect(Collectors.toList());
}
private List<SysHoliday> dateToHoliday(List<String> dates) {
return dates.stream().map(s -> {
String[] date = s.split("-");
SysHoliday sysHoliday = new SysHoliday();
sysHoliday.setYear(Integer.parseInt(date[0]));
sysHoliday.setMonth(Integer.parseInt(date[1]));
sysHoliday.setDay(Integer.parseInt(date[2]));
return sysHoliday;
}).collect(Collectors.toList());
}
}

View File

@@ -0,0 +1,147 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.encryption.util.SM3Utils;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.domain.core.entity.Aa01;
import com.insigma.framework.domain.core.entity.SysLogonLog;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.security.core.password.SM3PasswordEncoder;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.config.SysConfigProperties;
import com.insigma.sys.service.Aa01Service;
import com.insigma.sys.service.SysLogonLogService;
import com.insigma.sys.service.SysUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 首页面公共Controller密码修改等在首页面的请求处理可统一放到这里来
* @author jinw
* @version 2019/4/2
* <p>epsoft - insiis7</p>
*/
@RestController
@Slf4j
public class HomeController {
@Autowired
private SysUserService sysUserService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysConfigProperties sysConfigProperties;
@Autowired
private Aa01Service aa01Service;
@Autowired
private SysLogonLogService syslogonLogService;
@PostMapping("/sys/modifypd")
public ResponseMessage modifyPasswd(@RequestBody JSONObject data) {
SysUser currentUser = currentUserService.getCurrentUser();
try {
String oldPass=data.getString("opasswd");
String newPass=data.getString("npasswd");
String confirmPass = data.getString("rpasswd");
if (ObjectUtils.isEmpty(newPass) || !newPass.equals(confirmPass)){
throw new AppException("新密码为空或两次输入不等!");
}
String sm3LogonName = SM3Utils.digest(currentUser.getLogonName());
String sm3ReverseLogonName = SM3Utils.digest(new StringBuffer(currentUser.getLogonName()).reverse().toString());
if (sm3LogonName.equals(newPass) || sm3ReverseLogonName.equals(newPass)) {
throw new AppException("新密码不能与登录名(包含逆序)相同!");
}
sysUserService.updataPassWD(oldPass,newPass);
return ResponseMessage.ok("修改密码成功");
} catch (Exception e) {
log.error(e.getMessage(),e);
return ResponseMessage.error("修改密码失败,失败原因:" + e.getMessage());
}
}
@PostMapping("/sys/checkDefaultPasswd")
public ResponseMessage checkDefaultPasswd() {
SysUser sysUser = currentUserService.getCurrentUser();
sysUser = sysUserService.getByLogonName(sysUser.getLogonName());
Date date = sysUser.getPwEditDate();
if(date==null){
return ResponseMessage.ok("", true);
}
String passwd = sysUser.getPassWD();
String defaultPasswd = sysConfigProperties.getDefaultPassword();
if(ObjectUtils.isEmpty(defaultPasswd)) {
return ResponseMessage.ok("", false);
}
return ResponseMessage.ok("", new SM3PasswordEncoder().matches(SM3Utils.digest(defaultPasswd), passwd));
}
@PostMapping("/sys/checkPasswordDisabled")
public ResponseMessage checkPasswordDisabled() {
SysUser sysUser = currentUserService.getCurrentUser();
sysUser = sysUserService.getByLogonName(sysUser.getLogonName());
if ("1".equals(sysUser.getPwExpireType())) {
// 密码周期过期
Aa01 aa01 = aa01Service.getByAaa001("PASSWORD_EXPIRED_PERIOD");
if (aa01 != null) {
Long period = Long.valueOf(aa01.getAaa005());
if (sysUser.getPwEditDate() != null) {
// 密码修改过,以修改之后的周期计算
if (sysUser.getPwEditDate().getTime() + period * 24 * 60 * 60 * 1000 <= System.currentTimeMillis()) {
return ResponseMessage.ok("", true);
}
} else {
// 密码没有修改过,以新建用户之后的周期计算
if (sysUser.getCreateTime().getTime() + period * 24 * 60 * 60 * 1000 <= System.currentTimeMillis()) {
return ResponseMessage.ok("", true);
}
}
}
} else if ("3".equals(sysUser.getPwExpireType())) {
// 指定日期过期
if (sysUser.getPwExpireDate() != null && sysUser.getPwExpireDate().getTime() <= System.currentTimeMillis()) {
return ResponseMessage.ok("", true);
}
}
return ResponseMessage.ok("", false);
}
@GetMapping("/sys/getLastLoginTime")
public ResponseMessage getLastLoginTime() {
SysUser sysUser = currentUserService.getCurrentUser();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<SysLogonLog> list = syslogonLogService.getLast(sysUser.getUserId(), 2);
String lastLoginTime = "首次登录";
if(list != null&& list.size() > 1){
lastLoginTime = sdf.format(list.get(1).getLogonTime());
}
return ResponseMessage.ok("", lastLoginTime);
}
@GetMapping("/sys/getUserInfo")
public ResponseMessage getUserInfo(){
SysUser sysUser = currentUserService.getCurrentUser();
// SysUser sysUser = sysUserService.queryOneUser(currentUserService.getCurrentUser().getUserId());
return ResponseMessage.ok("", sysUser);
}
@PostMapping("/sys/updateUserInfo")
public ResponseMessage updateUserInfo(@RequestBody SysUser sysUser){
sysUserService.update(sysUser);
return ResponseMessage.ok("修改成功");
}
}

View File

@@ -0,0 +1,95 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.web.support.excel.ExcelFactory;
import com.insigma.framework.web.support.module.dto.ImportConfigDTO;
import com.insigma.framework.web.support.module.dto.ImportConfigDetailDTO;
import com.insigma.framework.web.support.module.service.ImportConfigService;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.ImportConfigReDTO;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.service.SysFunctionService;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.List;
/**
* 通用导入配置
*
* @author yinjh
*/
@RestController
@RequestMapping("/sys/import/config")
public class ImportConfigController {
@Resource
private ImportConfigService importConfigService;
@Autowired
private SysFunctionService sysFunctionService;
@Autowired
private CurrentUserService currentUserService;
@GetMapping("/queryMenuList")
public ResponseMessage queryMenuList() {
List<MenuDTO> menuDTOS = sysFunctionService.getMenuList(currentUserService.getCurrentUser());
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children", "0");
return ResponseMessage.ok("查询成功", jsonArray);
}
@GetMapping("/query")
public ResponseMessage query(String configCode, String configName) {
List<ImportConfigDTO> list = importConfigService.queryConfigList(configCode, configName);
return ResponseMessage.ok(list);
}
@GetMapping("/queryConfig")
public ResponseMessage queryConfig(String configId) {
ImportConfigDTO config = importConfigService.queryConfig(configId);
List<ImportConfigDetailDTO> details = importConfigService.queryConfigDetails(configId);
ImportConfigReDTO reDTO = new ImportConfigReDTO();
reDTO.setConfig(config);
reDTO.setDetails(details);
return ResponseMessage.ok(reDTO);
}
@PostMapping("/importExcelTemplate")
public ResponseMessage importExcelTemplate(MultipartFile file, String sheetNameOrIndex, Integer headerRowIndex) {
try {
List<ImportConfigDetailDTO> list = new ArrayList<>();
ExcelFactory.readSax(file.getInputStream(), sheetNameOrIndex, (sheetIndexOrName, rowIndex, rowList) -> {
if (rowIndex == headerRowIndex) {
for (Object field : rowList) {
ImportConfigDetailDTO detailDTO = new ImportConfigDetailDTO();
detailDTO.setOriginFieldName(String.valueOf(field));
detailDTO.setFieldType("0");
list.add(detailDTO);
}
}
});
return ResponseMessage.ok(list);
} catch (Exception e) {
throw new AppException("读取模板失败:" + e.getMessage());
}
}
@PostMapping("/save")
public ResponseMessage save(@RequestBody ImportConfigReDTO reqDTO) {
importConfigService.saveConfig(reqDTO.getConfig(), reqDTO.getDetails());
return ResponseMessage.ok("保存成功");
}
@PostMapping("/delete/{configId}")
public ResponseMessage delete(@PathVariable String configId) {
importConfigService.deleteConfig(configId);
return ResponseMessage.ok("删除成功");
}
}

View File

@@ -0,0 +1,238 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.DtoEntityUtil;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.dto.SysAppDTO;
import com.insigma.sys.dto.SysFunctionDTO;
import com.insigma.sys.service.SysAppService;
import com.insigma.sys.service.SysFunctionService;
import com.insigma.sys.service.SysRoleFunctionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 菜单管理
*/
@Slf4j
@RestController
@RequestMapping("/sys/menu")
public class MenuController {
@Autowired
private SysFunctionService sysFunctionService;
@Autowired
private CodeTypeService codeTypeService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysAppService sysAppService;
@Autowired
private SysRoleFunctionService sysRoleFunctionService;
/**
* 初始化页面数据
* @return
*/
@PostMapping("/initCodeTypes")
public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) {
try {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
List<SysAppDTO> list = sysAppService.querySysAppDTO();
JSONArray jsonArray = new JSONArray();
for (SysAppDTO sysAppDTO : list) {
JSONObject j = new JSONObject();
j.put("value",sysAppDTO.getAppName());
j.put("key",sysAppDTO.getAppId());
jsonArray.add(j);
}
codeTypes.put("APPID",jsonArray);
return ResponseMessage.ok("", codeTypes);
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
@GetMapping("/queryTree")
public ResponseMessage queryTable(){
List<MenuDTO> menuDTOS = sysFunctionService.queryAllMenu();
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children");
return ResponseMessage.ok("查询成功", jsonArray);
}
/**
* 拖拽成功完成时触发
* @param jsonObject
* @return
*/
@PostMapping("/nodeDrop")
public ResponseMessage nodeDrop(@RequestBody JSONObject jsonObject){
System.out.println(jsonObject);
JSONArray jsonArray = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject oneMenu = jsonArray.getJSONObject(i);
SysFunction sysFunction = new SysFunction();
sysFunction.setFunctionId(oneMenu.getLong("functionid"));
sysFunction.setFunOrder(oneMenu.getInteger("funorder"));
sysFunction.setParentId(oneMenu.getLong("parentid"));
sysFunction.setTitle(oneMenu.getString("title"));
sysFunctionService.update(sysFunction);
}
return ResponseMessage.ok();
}
/**
* 点击左侧菜单后
*/
@PostMapping("/nodeClick")
public ResponseMessage nodeClick(@RequestBody() JSONObject jsonObject) {
String a = jsonObject.get("functionid").toString();
if (a != null){
long functionId = Long.parseLong(a);
SysFunction sysFunction = sysFunctionService.getByFunctionId(functionId);
List<SysFunction> menulist= sysFunctionService.getByParentId(sysFunction.getFunctionId());
SysFunctionDTO sysFunctionDTO = DtoEntityUtil.trans(sysFunction, SysFunctionDTO.class, true);
if (!menulist.isEmpty()){
//有子类
return ResponseMessage.ok("", sysFunctionDTO);
}else {
//没有子类
return ResponseMessage.ok("重复", sysFunctionDTO);
}
}else {
return ResponseMessage.error();
}
}
/**
* 根据id查找对象
* @param jsonObject
* @return
*/
@PostMapping("/queryById")
public ResponseMessage queryById(@RequestBody JSONObject jsonObject) {
String id=jsonObject.get("functionid").toString();
String funtype=jsonObject.get("funtype").toString();
List<MenuDTO> menuDTOS= sysFunctionService.queryMenuByFuntypeAndActive(funtype);
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children");
jsonObject.put("treedata",jsonArray);
long fId=Integer.parseInt(id);
SysFunction menu= sysFunctionService.getByFunctionId(fId);
List list=new ArrayList();
if(menu!=null){
String [] ms=menu.getIdPath().split("/");
if (ms.length>0){
for (String s:ms){
if(s.equals("0")){
continue;
}
list.add(Long.valueOf(s));
}
}}
jsonObject.put("pname",list);
return ResponseMessage.ok("", jsonObject);
}
/**
* 查询是否多于三层
* @param jsonObject
* @return
*/
@PostMapping("/querySumIsThree")
public ResponseMessage querySumIsThree(@RequestBody JSONObject jsonObject) {
try {
String id=jsonObject.get("functionid").toString();
Map<String,List> list= (Map<String, List>) jsonObject.get("pname");
long fId=Integer.parseInt(id);
SysFunction sysFunction= sysFunctionService.getByFunctionId(fId);
List<SysFunction> menu= sysFunctionService.getByIdPath(sysFunction.getIdPath());//查询当前子节点
for(int i=0;i<list.get("value").size();i++){
for (SysFunction menu1:menu){
if(String.valueOf(menu1.getFunctionId()).equals(list.get("value").get(i).toString())){
return ResponseMessage.error("上级菜单无法选择本身及下级菜单");
}
}
}
return ResponseMessage.ok();
}catch (Exception e){
return ResponseMessage.error(e.getMessage());
}
}
@PostMapping("/saveMenu")
public ResponseMessage saveMenu(@RequestBody JSONObject pageData){
Map<String,Object> map= (Map<String, Object>) pageData.get("form");
SysFunction sysFunction = sysFunctionService.getSysFunctionBean(map);
boolean flag = sysFunctionService.isManyLocations(sysFunction);
if (flag) {
return ResponseMessage.error("路径重复");
}
try {
sysFunctionService.save(sysFunction);
return ResponseMessage.ok("保存成功", sysFunction);
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("保存失败,失败原因:" +e.getMessage());
}
}
@PostMapping("/deleteMenu")
public ResponseMessage deleteMenu(@RequestBody JSONObject pageData){
if (!"1".equals(currentUserService.getCurrentUser().getUserType())) {
return ResponseMessage.error("无权操作!");
}
Long node=Long.valueOf(pageData.get("node").toString());
try {
// 根据ID删除会级联删除子节点和对应角色菜单关系
SysFunction sysFunction = sysFunctionService.getByFunctionId(node);
sysFunctionService.delete(sysFunction);
return ResponseMessage.ok("删除成功");
}catch (Exception e){
log.error(e.getMessage(), e);
return ResponseMessage.error("删除失败,失败原因:" +e.getMessage());
}
}
/**
* 查找是否有角色关系
*/
@PostMapping("/queryRoleBy")
public ResponseMessage queryRoleBy(@RequestBody JSONObject pageData){
Map<String,Object> map= (Map<String, Object>) pageData.get("form");
SysFunction sysFunction = sysFunctionService.getSysFunctionBean(map);
boolean f = sysFunctionService.findFunctionRoles(sysFunction);
if (f==true){
return ResponseMessage.error("有权限");
}else if (f==false){
return ResponseMessage.ok("没有权限");
}else {
return ResponseMessage.error();
}
}
//判断是否三级
@PostMapping("queryMenuByPid")
public ResponseMessage queryMenuByPid(@RequestBody JSONObject pageData) {
ResponseMessage rm=new ResponseMessage();
String a=pageData.get("parentid").toString();
if (a!=null){
long parentId = Long.parseLong(a);
SysFunction menu= sysFunctionService.getByFunctionId(parentId);
if (menu!=null){
SysFunction menu1= sysFunctionService.getByFunctionId(menu.getParentId());
if (menu1!=null){
rm= ResponseMessage.error("最多添加三级");
}
}
}else {
rm= ResponseMessage.error("没取到父节点");
}
return rm;
}
}

View File

@@ -0,0 +1,136 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MonitorCentersDTO;
import com.insigma.sys.service.MonitorCentersService;
import com.insigma.sys.service.SysFunctionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author GH
* @ClassName: MonitorCentersController
* @Description: 监控中心
* @version 2021/12/7 14:53
*/
@Slf4j
@RestController
@RequestMapping("/sys/monitoringcenter/MonitoringDetails")
public class MonitorCentersController extends BaseController {
@Autowired
private MonitorCentersService monitorCentersService;
@Autowired
private SysFunctionService sysFunctionService;
@Autowired
private CurrentUserService currentUserService;
/**
* 查询应用数据源信息
*
* @return
*/
@PostMapping("/querServiceDataSouce")
public JSONObject querServiceDataSouce(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.querServiceDataSouce(monitorCentersDTO);
}
/**
* 查询应用SQL监控列表
*
* @return
*/
@PostMapping("/querServiceDataSqlList")
public JSONObject querServiceDataSqlList(@RequestBody MonitorCentersDTO MonitorCentersDTO) {
return monitorCentersService.querServiceDataSqlList(MonitorCentersDTO);
}
/**
* 查询WBEAPP监控信息
*
* @return
*/
@PostMapping("/querServiceWebApp")
public JSONObject querServiceWebApp(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.querServiceWebApp(monitorCentersDTO);
}
/**
* 查询应用URI监控列表
*
* @return
*/
@PostMapping("/querServiceDataUriList")
public JSONObject querServiceDataUriList(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.querServiceDataUriList(monitorCentersDTO);
}
/**
* 查询应用Session监控列表
*
* @return
*/
@PostMapping("/querServiceDataSessionList")
public JSONObject querServiceDataSessionList(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.querServiceDataSessionList(monitorCentersDTO);
}
/**
* 查询每个应用下对应的实例IP
*
* @return
*/
@PostMapping("/querServiceIp")
public JSONObject querServiceIp(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.querServiceIp(monitorCentersDTO);
}
//获取菜单名称和id实体
@PostMapping("/queryEntity")
public ResponseMessage queryEntity(@RequestBody JSONObject jsonObject) {
String url = jsonObject.getString("url");
SysFunction sysFunction = sysFunctionService.getByLocation(url);
return ResponseMessage.ok("", sysFunction);
}
/**
* 清理全部监控数据
*
* @return
*/
@PostMapping("/clearAllMonitorData")
public JSONObject clearAllMonitorData() {
return monitorCentersService.clearAllMonitorData();
}
/**
* 清理对应的监控数据
*
* @return
*/
@PostMapping("/clearOneServiceData")
public JSONObject clearOneServiceData(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.clearOneServiceData(monitorCentersDTO);
}
//查询用户是否为超级管理员
@GetMapping("/queryUser")
public ResponseMessage queryUser() {
SysUser sysUser = currentUserService.getCurrentUser();
//超级管理员
if ("1".equals(sysUser.getUserType())) {
return ResponseMessage.ok("", true);
} else {
return ResponseMessage.ok("", false);
}
}
}

View File

@@ -0,0 +1,160 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.web.support.excel.ExcelFactory;
import com.insigma.framework.web.support.excel.ExcelWriter;
import com.insigma.framework.web.support.excel.config.ExcelColConfig;
import com.insigma.framework.web.support.excel.config.ExcelConfig;
import com.insigma.framework.web.support.excel.enums.ExcelTypeEnum;
import com.insigma.sys.dto.MonitorCentersDTO;
import com.insigma.sys.service.MonitorCentersService;
import com.insigma.sys.util.WordUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
/**
* @author GH
* @version 2022/3/8 16:46
* @ClassName: MonitorDataController
* @Description:
*/
@Slf4j
@RestController
@RequestMapping("/sys/monitoringcenter/index")
public class MonitorDataController {
@Autowired
MonitorCentersService monitorCentersService;
@Value("${spring.application.name}")
private String appName;
/**
* 获取报告数据
*
* @return
*/
@PostMapping("/getReportData")
public JSONObject getReportData(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.getReportData(monitorCentersDTO);
}
//导出监控大屏数据
@GetMapping("/dataExport")
public void dataExport(@RequestParam("excelName") String excelName, HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream; charset=UTF-8");
response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(excelName, "utf-8"));
ExcelTypeEnum excelType = excelName.endsWith(".xls") ? ExcelTypeEnum.XLS : ExcelTypeEnum.XLSX;
ExcelWriter writer = ExcelFactory.getWriter(response.getOutputStream(), new ExcelConfig(excelType, true,
ExcelColConfig.of("CREATE_TIME", "创建时间"),
ExcelColConfig.of("START_TIME", "统计开始时间"),
ExcelColConfig.of("END_TIME", "统计结束时间"),
ExcelColConfig.of("SQL_EXECUTE_COUNT", "SQL执行总数"),
ExcelColConfig.of("SQL_TOTAL_TIME", "SQL耗时总数"),
ExcelColConfig.of("SQL_AVG_TIME", "SQL执行平均耗时"),
ExcelColConfig.of("SQL_SLOWEST_TIME", "SQL执行最慢耗时"),
ExcelColConfig.of("SQL_AVG_READ_ROWS", "SQL单次平均读取行数"),
ExcelColConfig.of("URL_EXECUTE_COUNT", "URL执行总数"),
ExcelColConfig.of("URL_TOTAL_TIME", "URL耗时总数"),
ExcelColConfig.of("URL_AVG_TIME", "URL执行平均耗时"),
ExcelColConfig.of("URL_SLOWEST_TIME", "URL执行最慢耗时"),
ExcelColConfig.of("URL_AVG_JDBC_COUNT", "URL单次平均JDBC执行数"),
ExcelColConfig.of("SLOW_SQL_ONE", "慢SQL最慢第一段个数"),
ExcelColConfig.of("SLOW_SQL_TWO", "慢SQL最慢第二段个数"),
ExcelColConfig.of("SLOW_SQL_THREE", "慢SQL最慢第三段个数"),
ExcelColConfig.of("SLOW_SQL_AVG_ONE", "慢SQL平均第一段个数"),
ExcelColConfig.of("SLOW_SQL_AVG_TWO", "慢SQL平均第二段个数"),
ExcelColConfig.of("SLOW_SQL_AVG_THREE", "慢SQL平均第三段个数"),
ExcelColConfig.of("SQL_ERROR_COUNT", "SQL执行错误数"),
ExcelColConfig.of("URL_JDBC_ERROR_COUNT", "URLJDBC执行错误数"),
ExcelColConfig.of("SCORE", "得分"),
ExcelColConfig.of("SCORE_SLOW_SQL", "慢SQL影响分"),
ExcelColConfig.of("SCORE_ERROR_SQL", "错误SQL影响分"),
ExcelColConfig.of("SCORE_SLOW_URL", "慢URL影响分"),
ExcelColConfig.of("SCORE_JDBC_ERROR_URL", "JDBC错误URL影响分"),
ExcelColConfig.of("INSTANCE_COUNT", "集群实例数"),
ExcelColConfig.of("DS_MAX_ACTIVE", "数据库最大连接数")
));
final int[] index = {0};
List<Map> mapList = monitorCentersService.getDataExport(appName);
for (Map map : mapList) {
writer.writeRow(map, ++index[0]);
}
writer.finish();
}
//获取word文档数据
@PostMapping("/getWrodData")
public Map<String, Object> getWrodData(@RequestBody MonitorCentersDTO monitorCentersDTO) {
return monitorCentersService.getReportDetailedData(monitorCentersDTO);
}
//导出word文档
@GetMapping("/word")
public void generateWord(HttpServletRequest request, HttpServletResponse response) throws IOException {
MonitorCentersDTO dto = new MonitorCentersDTO();
dto.setAppName(appName);
// 要填入模本的数据文件
Map<String, Object> dataMap = monitorCentersService.getReportDetailedData(dto);
//提示在调用工具类生成Word文档之前应当检查所有字段是否完整
//否则Freemarker的模板殷勤在处理时可能会因为找不到值而报错这里暂时忽略这个步骤
File file = null;
InputStream in = null;
OutputStream out = null;
try {
//调用工具类WordGenerator的createDoc方法生成Word文档
file = WordUtil.createDoc(dataMap, "monReportTemplet");
in = new FileInputStream(file);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/msword");
out = response.getOutputStream();
//缓冲区
byte[] bytes = new byte[2048];
int len;
// 通过循环将读入的Word文件的内容输出到浏览器中
while ((len = in.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
out.flush();
} catch (Exception ex) {
ex.printStackTrace();
log.error("报告导出异常", ex);
} finally {
//释放资源
if (out != null) {
try {
out.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
if (file != null) {
// 删除临时文件
file.delete();
}
}
}
}

View File

@@ -0,0 +1,103 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.domain.core.entity.SbdsUserLog;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.log.core.util.OpLogUtil;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.ep.dev.service.PageInitService;
import com.insigma.framework.web.support.module.dto.UserLogDTO;
import com.insigma.framework.web.support.module.service.SbdsUserLogService;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.service.SysFunctionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.List;
/**
* Created by yinjh on 2019/1/29.
*/
@Slf4j
@RestController
@RequestMapping("/sys/oplog")
public class OpLogController {
@Autowired
private SbdsUserLogService sbdsUserLogService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private PageInitService pageInitService;
@Autowired
private SysFunctionService sysFunctionService;
@PostMapping("/initSysFunctions")
public ResponseMessage initSysFuntions(@RequestBody JSONObject jsonObject) {
List<MenuDTO> menuList = sysFunctionService.queryAllMenu();
menuList = menuList.stream().filter(menu -> "2".equals(menu.getNodetype())).toList();
jsonObject = pageInitService.loadCustomCodeType(jsonObject, menuList, "functionid", "title", "SYSFUNCTIONS");
return ResponseMessage.ok(jsonObject.getJSONObject("codeTypes"));
}
@PostMapping("/query")
public ResponseMessage query(@RequestBody JSONObject jsonObject) throws SQLException {
Integer page = jsonObject.getInteger("page");
Integer size = jsonObject.getInteger("size");
UserLogDTO queryParam = jsonObject.toJavaObject(UserLogDTO.class);
Boolean more = jsonObject.getBoolean("more");
if (more != null && !more) {
if (queryParam.getAae036() != null) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String aae036 = sdf.format(queryParam.getAae036());
queryParam.setStartTime(aae036 + " 00:00:00");
queryParam.setEndTime(aae036 + " 23:59:59");
}
}
PageInfo<UserLogDTO> pageInfo = sbdsUserLogService.queryUserLogList(queryParam, page, size);
return ResponseMessage.ok(pageInfo);
}
@GetMapping("/location")
public ResponseMessage getLocation(Long opseno) {
SbdsUserLog log = sbdsUserLogService.getByOpseno(opseno);
if (log != null) {
Long functionId = log.getFunctionId();
SysFunction sysFunction = sysFunctionService.getByFunctionId(functionId);
return ResponseMessage.ok("", sysFunction.getLocation());
}
return ResponseMessage.ok();
}
@GetMapping("/orisource")
public ResponseMessage getOriSource(Long opseno) {
String oriSource = OpLogUtil.getOriSource(opseno);
return ResponseMessage.ok("", oriSource);
}
@GetMapping("/oridata")
public ResponseMessage getOriData(Long opseno) {
String oriData = OpLogUtil.getOriData(opseno);
return ResponseMessage.ok("", oriData);
}
@GetMapping("/rollback")
public ResponseMessage rollback(Long opseno) {
try {
String logonName = currentUserService.getCurrentUser().getLogonName();
OpLogUtil.rollBack(opseno, logonName);
} catch (Exception e) {
log.error("回退失败!", e);
return ResponseMessage.error("回退失败:" + e.getMessage());
}
return ResponseMessage.ok("回退成功!");
}
}

View File

@@ -0,0 +1,185 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.DtoEntityUtil;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.Aa26;
import com.insigma.framework.domain.core.entity.SysOrg;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.sys.dto.Aa26DTO;
import com.insigma.sys.dto.SysOrgDTO;
import com.insigma.sys.service.Aa26Service;
import com.insigma.sys.service.SysOrgService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 菜单管理
*/
@Slf4j
@RestController
@RequestMapping("/sys/org")
public class OrgController {
@Autowired
private SysOrgService sysOrgService;
@Autowired
private Aa26Service aa26Service;
@Autowired
private CodeTypeService codeTypeService;
/**
* 初始化页面数据
* @return
*/
@PostMapping("/doInit")
public ResponseMessage doInit(@RequestBody JSONObject jsonObject) {
List<SysOrg> orgs=sysOrgService.getAll();
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(DtoEntityUtil.trans(orgs, SysOrgDTO.class, true))), "orgid", "parentid", "children");
return ResponseMessage.ok("查询成功", jsonArray);
}
/**
* 根据id查找org对象
* @return
*/
@PostMapping("/findOrgById")
public ResponseMessage findOrgById(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
String a=jsonObject.get("orgid").toString();
SysOrg sysOrg;
if (a!=null){
int orgid= Integer.parseInt(a) ;
sysOrg=sysOrgService.getByOrgId((long) orgid);
rm= ResponseMessage.ok(null, DtoEntityUtil.trans(sysOrg, SysOrgDTO.class, true));
}else {
rm= ResponseMessage.error();
}
return rm;
}
/**
* 保存机构
* @return
*/
@PostMapping("/saveOrg")
public ResponseMessage saveOrg(@RequestBody JSONObject jsonObject) {
ResponseMessage rm=null;
//List checkedCities= (List) jsonObject.get("checkedCities");
Map<String,Object> map= (Map<String, Object>) jsonObject.get("form");
SysOrg sysOrg=sysOrgService.getSysOrgBean(map);
Boolean flag=sysOrgService.isMany(sysOrg);
try {
if (flag==false){
//没有重复
if (sysOrg!=null){
sysOrgService.saveOrg(sysOrg);
rm= ResponseMessage.ok("保存成功");
}
}else {
//重复
rm= ResponseMessage.error("重复");
}
}catch (Exception e){
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
/**
* 初始化页面aa26
* @return
*/
@PostMapping("/initAA26")
public ResponseMessage initAA26() {
ResponseMessage rm;
try {
List<Aa26> aa26s = aa26Service.getAll();
JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(DtoEntityUtil.trans(aa26s, Aa26DTO.class, true))), "aab301", "aaa148", "children");
rm= ResponseMessage.ok(null, orgNodes);
} catch (Exception e) {
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
/**
根据id查找aa26
*/
@PostMapping("/queryAa26By301/{id}")
public ResponseMessage queryAa26By301(@PathVariable("id") String aab301) {
ResponseMessage rm;
try {
Aa26 aa26s = aa26Service.getByAab301(aab301);
rm= ResponseMessage.ok(null, DtoEntityUtil.trans(aa26s, Aa26DTO.class, true));
} catch (Exception e) {
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
/**
* 初始化页面数据
* @return
*/
@PostMapping("/initCodeTypes")
public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
try {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
rm = ResponseMessage.ok(null, codeTypes);
} catch (Exception e) {
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
/**
*
* @return
*/
@PostMapping("/queryUserOrg")
public ResponseMessage queryUserOrg(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
String regioncode="";
long node=Long.valueOf(jsonObject.get("node").toString());
Map<String,Object> form= (Map<String, Object>) jsonObject.get("form");
// JSONArray orgTreeData=jsonObject.getJSONArray("orgTreeData"); // 首先转成 JSONArray 对象
// String trees=orgTreeData.toJSONString();
List<SysOrg> list=sysOrgService.findNodes(node);
boolean s =sysOrgService.findByArea(list);
if (s==true){
rm= ResponseMessage.ok("有联系");
}else {
rm= ResponseMessage.error("没联系");
}
return rm;
}
/**
* 删除机构
*/
@PostMapping("/deleteOrg")
public ResponseMessage deleteMenu(@RequestBody JSONObject pageData){
ResponseMessage rm;
long node=Long.valueOf(pageData.get("node").toString());
boolean withUser= (boolean) pageData.get("withUser");
List<SysOrg> list=sysOrgService.findNodes(node);
try {
if (list.size()>0){
//withUser为true则和用户有关
sysOrgService.delOrg(list,withUser);
rm= ResponseMessage.ok("删除成功");
}else {
rm= ResponseMessage.error("数据不存在");
}
}catch (Exception e){
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
}

View File

@@ -0,0 +1,49 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.Aa01DTO;
import com.insigma.sys.service.Aa01Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author yinjh
* @version 2022/10/17
* @since 2.7.0
*/
@RestController
@RequestMapping("/sys/param/config")
public class ParamConfigController {
@Autowired
private Aa01Service aa01Service;
@GetMapping("/query")
public ResponseMessage query(String aaa001, String aaa002, Integer page, Integer size) {
PageInfo<Aa01DTO> pageInfo = aa01Service.query(aaa001, aaa002, page, size);
return ResponseMessage.ok(null, pageInfo);
}
@PostMapping("/insert")
public ResponseMessage insert(@RequestBody Aa01DTO aa01) {
aa01Service.save(aa01, false);
return ResponseMessage.ok("保存成功");
}
@PostMapping("/update")
public ResponseMessage update(@RequestBody Aa01DTO aa01) {
aa01Service.save(aa01, true);
return ResponseMessage.ok("修改成功");
}
@PostMapping("/delete")
public ResponseMessage delete(@RequestBody JSONObject jsonObject) throws AppException {
String aaa001 = jsonObject.getString("aaa001");
aa01Service.deleteByAaa001(aaa001);
return ResponseMessage.ok("删除成功");
}
}

View File

@@ -0,0 +1,222 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.SysRole;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.common.SysManageMode;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.dto.SysRoleDTO;
import com.insigma.sys.dto.SysUserDTO;
import com.insigma.sys.service.SysFunctionService;
import com.insigma.sys.service.SysRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
* Created by zhangxy on 2019/1/4.
*/
@RestController
@RequestMapping("/sys/role")
public class RoleController {
@Autowired
private CodeTypeService codeTypeService;
@Autowired
private SysRoleService sysRoleService;
@Autowired
private SysFunctionService sysFunctionService;
@Autowired
private CurrentUserService currentUserService;
/**
* 初始化页面数据
*
* @return
*/
@PostMapping("/doInit")
public ResponseMessage initPageDate(@RequestBody JSONObject jsonObject) {
JSONObject codeTypes = jsonObject.getJSONObject("codeTypes");
JSONObject codeTypesRes = codeTypeService.getCodeTypes(codeTypes);
jsonObject.put("codeTypes", codeTypesRes);
return ResponseMessage.ok(null, jsonObject);
}
@PostMapping("/initCodeTypes")
public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
try {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
rm = ResponseMessage.ok(null, codeTypes);
} catch (Exception e) {
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
@PostMapping("/save")
public ResponseMessage saveRole(@RequestBody SysRoleDTO sysRoleDTO) {
ResponseMessage rm = null;
String roleid = sysRoleDTO.getRoleid();
String rolename = sysRoleDTO.getRolename();
boolean flag = sysRoleService.checkRoleByRolename(rolename);
if (!"".equals(roleid) && roleid != null) {//说明是更新
flag = sysRoleService.checkRoleByRolenameAndRoleid(rolename, roleid);
}
if (flag) {
try {
SysUser sysUser = currentUserService.getCurrentUser();
Long areaid = sysUser.getAreaId();
Long orgid = sysUser.getOrgId();
String userid = sysUser.getUserId();
sysRoleDTO.setAreaid(areaid);
sysRoleDTO.setOrgid(orgid);
sysRoleDTO.setCreatorid(userid);
sysRoleService.save(sysRoleDTO);
rm = ResponseMessage.ok("保存成功");
} catch (Exception e) {
rm = ResponseMessage.error(e.getMessage());
}
} else {
rm = ResponseMessage.error("该角色名称已被其他行政区或机构占用!");
}
return rm;
}
@GetMapping("/queryRole")
public ResponseMessage queryRole(@RequestParam(name = "rolename") String rolename,
@RequestParam(name = "roledesc") String roledesc,
@RequestParam(name = "roletype") String roletype,
@RequestParam(name = "page") Integer page,
@RequestParam(name = "size") Integer size) {
SysUser sysUser = currentUserService.getCurrentUser();
Long areaid = sysUser.getAreaId();
Long orgid = sysUser.getOrgId();
String usertype = sysUser.getUserType();
if (SysManageMode.isTripleMode()) {//三员制
if ("5".equals(usertype)) {//安全管理员
usertype = "1";//按照超级管理员处理,可以查询所有的角色
}
}
ResponseMessage rm;
if (!"".equals(usertype) && usertype != null) {
PageInfo<SysRoleDTO> pageInfo = sysRoleService.query(rolename, roledesc, roletype, page, size, areaid, orgid, usertype);
rm = ResponseMessage.ok(null, pageInfo);
} else {//非管理员角色,不能看到任何角色
rm = ResponseMessage.ok();
}
return rm;
}
@PostMapping("/delete")
public ResponseMessage delete(@RequestBody SysRoleDTO sysRoleDTO) {
SysRole role = sysRoleService.getByRoleId(sysRoleDTO.getRoleid());
if (role == null) {
return ResponseMessage.error("角色不存在");
}
SysUser sysUser = currentUserService.getCurrentUser();
if (!sysRoleService.roleCanOperate(sysUser, role)) {
return ResponseMessage.error("无权操作");
}
sysRoleService.deleteRoleRef(role);
return ResponseMessage.ok("删除成功");
}
@GetMapping("/queryTree")
public ResponseMessage queryTable(String roletype) {
String funtype = "";
if (roletype != null && !"".equals(roletype)) {
if ("1".equals(roletype)) {//管理员角色
funtype = "1";
} else if ("2".equals(roletype)) {
funtype = "2";
} else if ("3".equals(roletype)) {
funtype = "3";
} else if ("4".equals(roletype)) {
funtype = "4";
}
}
List<MenuDTO> menuDTOS = sysFunctionService.queryMenuByFuntypeAndActive(funtype);
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid"
, "parentid", "children", "0");
return ResponseMessage.ok("查询成功", jsonArray);
}
@GetMapping("/getCheckedTree")
public ResponseMessage getCheckedTree(String roleId) {
List<Long> list = sysRoleService.queryFuncitonidByRoleid(roleId);
return ResponseMessage.ok("查询成功", list);
}
@PostMapping("/addRoleRef")
public ResponseMessage addRoleRef(@RequestBody JSONObject jsonObject) {
String roleid = (String) jsonObject.get("roleId");
SysRole role = sysRoleService.getByRoleId(roleid);
if (role == null) {
return ResponseMessage.error("角色不存在");
}
SysUser sysUser = currentUserService.getCurrentUser();
if (!sysRoleService.roleCanOperate(sysUser, role)) {
return ResponseMessage.error("无权操作");
}
sysRoleService.saveGrant(currentUserService.getCurrentUser(), role, jsonObject);
return ResponseMessage.ok("授权成功");
}
@GetMapping("getRoleTypeCode")
public ResponseMessage getUserTypeCode() {
List<Map<String, Object>> list = sysRoleService.findRoleTypesCode();
return ResponseMessage.ok(null, list);
}
@GetMapping("/queryToGrantUser")
public ResponseMessage queryToGrantUser(
@RequestParam(name = "roleId") String roleId,
@RequestParam(name = "roleType") String roleType,
@RequestParam(name = "logonname") String logonname,
@RequestParam(name = "displayname") String displayname,
@RequestParam(name = "page") Integer page,
@RequestParam(name = "size") Integer size) throws SQLException {
SysUser sysUser = currentUserService.getCurrentUser();
PageInfo<SysUserDTO> list = sysRoleService.queryToGrantUser(roleId, roleType, logonname, displayname, page, size);
return ResponseMessage.ok("查询成功", list);
}
@GetMapping("/queryGrantedUser")
public ResponseMessage queryGrantedUser(@RequestParam(name = "roleId") String roleId) throws SQLException {
SysUser sysUser = currentUserService.getCurrentUser();
SysRole sysRole = sysRoleService.getByRoleId(roleId);
if (!sysRoleService.roleCanOperate(sysUser, sysRole)) {
return ResponseMessage.error("无权访问");
}
List<SysUserDTO> list = sysRoleService.queryGrantedUser(roleId);
return ResponseMessage.ok("查询成功", list);
}
@GetMapping("/removeGrantUserRole")
public ResponseMessage removeGrantUserRole(@RequestParam(name = "roleId") String roleId,
@RequestParam(name = "userId") String userId) throws SQLException {
sysRoleService.removeGrantUserRole(roleId, userId);
return ResponseMessage.ok();
}
@PostMapping("/saveGrantUser")
public ResponseMessage saveGrantUser(@RequestBody JSONObject jsonObject) {
sysRoleService.saveGrantUser(jsonObject);
return ResponseMessage.ok("保存成功");
}
}

View File

@@ -0,0 +1,42 @@
package com.insigma.sys.controller;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.security.core.dto.BaseUserInfo;
import com.insigma.framework.security.core.exception.UnauthorizedException;
import com.insigma.framework.security.web.handler.SysLoginHandler;
import com.insigma.sys.common.CurrentUserService;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 单点登录控制器
*/
@RestController
@RequestMapping({"/sso", "/check"})
public class SSOController {
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysLoginHandler sysLoginHandler;
@PostMapping("/login")
public ResponseMessage login(HttpServletRequest request) {
try {
BaseUserInfo userInfo = sysLoginHandler.success(currentUserService.getCurrentUserDetails(), null, request);
return ResponseMessage.ok("", userInfo);
} catch (UnauthorizedException e) {
ResponseMessage rm = new ResponseMessage();
rm.setStatus("401");
rm.setMessage(e.getMessage());
return rm;
}
}
}

View File

@@ -0,0 +1,31 @@
package com.insigma.sys.controller;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SafetyFilterLogDTO;
import com.insigma.sys.service.SafetyFilterLogService;
import org.springframework.beans.factory.annotation.Autowired;
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;
/**
* @author yinjh
* @version 2022/9/15
* @since 2.7.0
*/
@RestController
@RequestMapping("/safety/filter/log")
public class SafetyFilterLogController {
@Autowired
private SafetyFilterLogService safetyFilterLogService;
@PostMapping("/query")
public ResponseMessage query(@RequestBody SafetyFilterLogDTO safetyFilterLogDTO) {
PageInfo<SafetyFilterLogDTO> pageInfo = safetyFilterLogService.query(safetyFilterLogDTO);
return ResponseMessage.ok(null, pageInfo);
}
}

View File

@@ -0,0 +1,323 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.encryption.util.SM3Utils;
import com.insigma.framework.core.util.ByteUtil;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.security.core.password.SM3PasswordEncoder;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.framework.web.support.ep.dev.util.pe.PageTable;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.SysAppAddressDTO;
import com.insigma.sys.dto.SysAppDTO;
import com.insigma.sys.service.SysAppService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.security.SecureRandom;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* 应用系统管理接口
*
* @author GH
* @version 2022/3/28
* @since 2.6.5
*/
@Slf4j
@RestController
@RequestMapping("/sys/sysapp/sysApp")
public class SysAppController extends BaseController {
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysAppService sysAppService;
@Autowired
private CodeTypeService codeTypeService;
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(@OdinRequestParam("f_form") SysAppDTO queryDTO, Integer size) throws SQLException {
tableDataQuery(queryDTO, 1, size);
return this.ok();
}
@OdinRequest
@PostMapping("/query")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysAppDTO queryDTO,
Integer size) {
tableDataQuery(queryDTO, 1, size);
return this.ok();
}
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysAppDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
this.set("page", page);
return this.ok();
}
public void tableDataQuery(SysAppDTO queryDTO, Integer page, Integer size) {
this.pageQuery("t_tableData", () -> {
this.set("page", page); // 需要将前端表格中:currentPage定义的值设置成page的值
return sysAppService.pageQuery(queryDTO, page, size);
});
}
@OdinRequest
@PostMapping("/add")
public ResponseMessage add() {
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "新增应用");
this.clearForm("f_sysAppForm");
this.getTable("t_tableData1").setData(new ArrayList<>());
this.getTable("t_tableData1").setTotal(0L);
return this.ok();
}
@OdinRequest
@PostMapping("/doSave/{name}")
public ResponseMessage doSave(@OdinRequestParam("f_sysAppForm") SysAppDTO sysAppDTO) {
PageTable t_tableData1 = this.getTable("t_tableData1");
List<SysAppAddressDTO> listsysAppAddressDTO = t_tableData1.getData(SysAppAddressDTO.class);
String portalurl = null;
String appurl = null;
for (int i = 0; i < listsysAppAddressDTO.size(); i++) {
portalurl = listsysAppAddressDTO.get(i).getPortalUrl();
if (portalurl == null || "".equals(portalurl)) {
return this.error("门户名称不能为空");
}
appurl = listsysAppAddressDTO.get(i).getAppUrl();
if (appurl == null || "".equals(appurl)) {
return this.error("应用地址不能为空");
} else {
if (appurl.indexOf("http://") == 0 || appurl.indexOf("https://") == 0) {
} else {
return this.error("门户名称为" + portalurl + "的应用地址不合法,请检查!");
}
}
}
if (ObjectUtils.isEmpty(sysAppDTO.getAppId())) {
boolean flag = sysAppService.selectAppCode(sysAppDTO.getAppCode());
if (flag) {
return ResponseMessage.error("异常应用编码重复!");
}
}
if (ObjectUtils.isEmpty(sysAppDTO.getAppId())) {
String secretKey = generateSecretKey();
sysAppDTO.setSecretKey(secretKey);
}
sysAppService.saveSysApp(sysAppDTO, listsysAppAddressDTO);
this.set("dialogFormVisible", false);
this.clearForm("f_sysAppForm");
this.getTable("t_tableData1").setData(new ArrayList<>());
this.getTable("t_tableData1").setTotal(0L);
this.refresh();
return this.ok("保存成功!");
}
@OdinRequest
@PostMapping("/update")
public ResponseMessage update(String appId) {
SysAppDTO sysAppDTO = sysAppService.querySysApp(appId);
this.toForm("f_sysAppForm", sysAppDTO);
List<SysAppAddressDTO> list = sysAppService.querySysAddressDTO(appId);
this.getTable("t_tableData1").setData(list);
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "修改应用");
return this.ok();
}
@OdinRequest(refresh = true) // refresh = true 请求结束后刷新页面
@PostMapping("/delete")
public ResponseMessage delete(String appId) {
sysAppService.deleteSysApp(appId);
return this.ok("删除成功!");
}
@PostMapping("/deleteSysAppAddress")
public ResponseMessage deleteSysAppAddress(@RequestBody SysAppAddressDTO sysAppAddressDTO) {
if (sysAppAddressDTO.getAddressId() == null || "".equals(sysAppAddressDTO.getAddressId())) {
return this.ok("删除成功!");
}
sysAppService.deleteSysAppAddress(sysAppAddressDTO.getAddressId());
return this.ok("删除成功!");
}
@GetMapping("/toActiveSysApp")
public ResponseMessage toActiveSysApp(@RequestParam(name = "appId") String appId) {
sysAppService.toActiveSysApp(appId);
return this.ok("启用成功!");
}
@GetMapping("/toNotActiveSysApp")
public ResponseMessage toNotActiveSysApp(@RequestParam(name = "appId") String appId) {
sysAppService.toNotActiveSysApp(appId);
return this.ok("禁用成功!");
}
@PostMapping("/verify")
public ResponseMessage verify(@RequestBody JSONObject jsonObject) {
//获取当前登录人去验证密码是否正确
SysUser sysUser = currentUserService.getCurrentUser();
String password = jsonObject.getString("password");
String id = jsonObject.getString("id");
SM3PasswordEncoder sm3PasswordEncoder = new SM3PasswordEncoder();
boolean b = sm3PasswordEncoder.matches(SM3Utils.digest(password), sysUser.getPassWD());
HashMap<String, Object> map = new HashMap<>();
if(b){
//查询安全key
SysAppDTO sysAppDTO = sysAppService.querySysApp(id);
map.put("appId",sysAppDTO.getAppId());
map.put("secretKey",sysAppDTO.getSecretKey());
map.put("verify",b);
}
map.put("verify",b);
return ResponseMessage.ok(null, map);
}
/**
* 以下都是vue3的请求
*/
@PostMapping("/new/initCodeTypes")
public ResponseMessage initCodeTypesVue3(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
try {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
rm = ResponseMessage.ok(codeTypes);
} catch (Exception e) {
log.error(e.getMessage(), e);
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
@PostMapping("/new/queryApp")
public ResponseMessage queryAppVue3(@RequestBody SysAppDTO sysAppDTO) {
return ResponseMessage.ok(sysAppService.pageQuery(sysAppDTO,sysAppDTO.getPage(),sysAppDTO.getSize()));
}
@GetMapping("/new/toActiveSysApp")
public ResponseMessage toActiveSysAppVue3(@RequestParam(name = "appId") String appId) {
sysAppService.toActiveSysApp(appId);
return ResponseMessage.ok("启用成功!");
}
@GetMapping("/new/toNotActiveSysApp")
public ResponseMessage toNotActiveSysAppVue3(@RequestParam(name = "appId") String appId) {
sysAppService.toNotActiveSysApp(appId);
return ResponseMessage.ok("禁用成功!");
}
@PostMapping("/new/verify")
public ResponseMessage verifyVue3(@RequestBody JSONObject jsonObject) {
//获取当前登录人去验证密码是否正确
SysUser sysUser = currentUserService.getCurrentUser();
String password = jsonObject.getString("password");
String id = jsonObject.getString("id");
SM3PasswordEncoder sm3PasswordEncoder = new SM3PasswordEncoder();
boolean b = sm3PasswordEncoder.matches(SM3Utils.digest(password), sysUser.getPassWD());
HashMap<String, Object> map = new HashMap<>();
if(b){
//查询安全key
SysAppDTO sysAppDTO = sysAppService.querySysApp(id);
map.put("appId",sysAppDTO.getAppId());
map.put("secretKey",sysAppDTO.getSecretKey());
map.put("verify",b);
}
map.put("verify",b);
return ResponseMessage.ok(map);
}
@GetMapping("/new/delete")
public ResponseMessage deleteVue3(@RequestParam(name = "appId") String appId) {
sysAppService.deleteSysApp(appId);
return ResponseMessage.ok("删除成功!");
}
@PostMapping("/new/save")
public ResponseMessage doSaveVue3(@RequestBody JSONObject jsonObject) throws Exception {
JSONArray jsonArray =jsonObject.getJSONArray("tableData1");
List<SysAppAddressDTO> listsysAppAddressDTO=jsonArray.toList(SysAppAddressDTO.class);
String portalurl = null;
String appurl = null;
for (int i = 0; i < listsysAppAddressDTO.size(); i++) {
portalurl = listsysAppAddressDTO.get(i).getPortalUrl();
if (portalurl == null || "".equals(portalurl)) {
return ResponseMessage.error("门户地址不能为空");
}
appurl = listsysAppAddressDTO.get(i).getAppUrl();
if (appurl == null || "".equals(appurl)) {
return ResponseMessage.error("应用地址不能为空");
} else {
if (appurl.indexOf("http://") == 0 || appurl.indexOf("https://") == 0) {
} else {
return ResponseMessage.error("门户地址为" + portalurl + "的应用地址不合法,请检查!");
}
}
}
JSONObject jsonObject1=jsonObject.getJSONObject("sysAppDTO");
SysAppDTO sysAppDTO=new SysAppDTO();
sysAppDTO.setAppId(jsonObject1.getString("appId"));
sysAppDTO.setAppCode(jsonObject1.getString("appCode"));
sysAppDTO.setAppName(jsonObject1.getString("appName"));
if (ObjectUtils.isEmpty(jsonObject.getString("appId"))) {
boolean flag = sysAppService.selectAppCode(jsonObject.getString("appCode"));
if (flag) {
return ResponseMessage.error("异常应用编码重复!");
}
}
if (ObjectUtils.isEmpty(sysAppDTO.getAppId())) {
String secretKey = generateSecretKey();
sysAppDTO.setSecretKey(secretKey);
}
sysAppService.saveSysApp(sysAppDTO, listsysAppAddressDTO);
return ResponseMessage.ok("保存成功!");
}
@GetMapping("/new/update")
public ResponseMessage updateVue3(String appId) {
List<SysAppAddressDTO> list = sysAppService.querySysAddressDTO(appId);
return ResponseMessage.ok(list);
}
@GetMapping("/new/deleteSysAppAddress")
public ResponseMessage deleteSysAppAddressVue3(String addressId) {
if (addressId == null || "".equals(addressId)) {
return ResponseMessage.ok("删除成功!");
}
sysAppService.deleteSysAppAddress(addressId);
return ResponseMessage.ok("删除成功!");
}
private String generateSecretKey() {
byte[] bytes = new byte[8];
SecureRandom random = new SecureRandom();
random.nextBytes(bytes);
return ByteUtil.byteToHex(bytes);
}
}

View File

@@ -0,0 +1,56 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.sys.dto.Aa10DTO;
import com.insigma.sys.service.Aa10Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 字典管理模块
*
* @author yinjh
*/
@RestController
@RequestMapping("/sys/code")
public class SysCodeController {
@Autowired
private Aa10Service aa10Service;
@Autowired
private CodeTypeService codeTypeService;
@PostMapping("/initCodeTypes")
public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
return ResponseMessage.ok(null, codeTypes);
}
@GetMapping("/query")
public ResponseMessage query(String aaa100, String aaa103, Integer page, Integer size) {
PageInfo<Aa10DTO> pageInfo = aa10Service.query(aaa100, aaa103, page, size);
return ResponseMessage.ok(null, pageInfo);
}
@PostMapping("/save")
public ResponseMessage save(@RequestBody Aa10DTO aa10DTO) {
aa10Service.saveCode(aa10DTO);
return ResponseMessage.ok("保存成功");
}
@PostMapping("/delete")
public ResponseMessage delete(@RequestBody JSONObject jsonObject) {
try {
Long aaz093=Long.valueOf(jsonObject.get("aaz093").toString());
aa10Service.deleteCode(aaz093);
}catch (Exception e){
throw new AppException("数据转换异常!");
}
return ResponseMessage.ok("删除成功");
}
}

View File

@@ -0,0 +1,575 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.core.util.StringUtil;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.file.storage.core.FSObject;
import com.insigma.framework.file.storage.core.FSService;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.SysDownloadCenterDTO;
import com.insigma.sys.service.SysDownloadCenterService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* @author GH
* @ClassName: SysDownloadCenterController
* @Description:
* @version 2021/8/4 10:13
*/
@Slf4j
@RestController
@RequestMapping("/sys/downloadcenter/DownloadCenter")
public class SysDownloadCenterController extends BaseController {
@Autowired
private SysDownloadCenterService sysDownloadCenterService;
@Autowired(required = false)
private FSService fsService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private CodeTypeService codeTypeService;
/**
* 初始化
*
* @param f_form
* @param size
* @return
*/
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(SysDownloadCenterDTO f_form, Integer size) {
tableDataQuery(f_form, 1, size);
return this.ok();
}
/**
* 查询
*
* @param queryDTO
* @param size
* @return
*/
@OdinRequest
@PostMapping("/query")
public ResponseMessage query(@OdinRequestParam("f_form") SysDownloadCenterDTO queryDTO,
Integer size) {
tableDataQuery(queryDTO, 1, size);
return this.ok();
}
/**
* @return
* @Description: 分页查询
* @author GH
* @version 2021/8/4 13:29
*/
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysDownloadCenterDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
return this.ok();
}
private void tableDataQuery(SysDownloadCenterDTO queryDTO, Integer page, Integer size) {
this.pageQuery("t_tableData", () -> {
this.set("page", page); // 需要将前端表格中:currentPage定义的值设置成page的值
return sysDownloadCenterService.queryDownloadCenterList(queryDTO, page, size);
});
}
/**
* 新增
*
* @return
*/
@OdinRequest
@PostMapping("/add")
public ResponseMessage add() {
this.clearForm("f_downloadCenterForm");
this.set("sysDownloadCenterDTO", new Object[]{});
this.set("fileList", new Object[]{});
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "材料新增");
return this.ok();
}
/**
* 保存
*
* @param sysDownloadCenterDTO
* @return
*/
@OdinRequest(refresh = true) // refresh = true 请求结束后刷新页面
@PostMapping("/doSave/{name}")
public ResponseMessage doSave(@OdinRequestParam("f_downloadCenterForm") SysDownloadCenterDTO sysDownloadCenterDTO,
@PathVariable String name) {
if(sysDownloadCenterDTO.getMaterial_type()==null|| "".equals(sysDownloadCenterDTO.getMaterial_type())){
return this.error("请选择文件类型!");
}
//设置保留位数
DecimalFormat df = new DecimalFormat("0.00");
JSONArray array = this.getPageData().getJSONArray("sysDownloadCenterDTO");
List<SysDownloadCenterDTO> list = array.toJavaList(SysDownloadCenterDTO.class);
if (list.isEmpty()) {
return ResponseMessage.error("请上传附件!");
} else {
for (SysDownloadCenterDTO downloadCenterDTO : list) {
//录入数据库
SysDownloadCenterDTO dto = new SysDownloadCenterDTO();
dto.setId(downloadCenterDTO.getId());
dto.setMaterial_name(downloadCenterDTO.getMaterial_name());
String size;
//字节
long baty = Long.parseLong(downloadCenterDTO.getMaterial_size());
//小于M用kb
if (baty < 1048576 && baty > 0) {
String kb = df.format((double) baty / 1024);
size = kb + "KB";
} else if (baty >= 1048576 && baty < 1073741824) { //用m表示
String m = df.format((double) baty / 1048576);
size = m + "M";
} else { //G表示
String g = df.format((double) baty / 1073741824);
size = g + "G";
}
dto.setMaterial_size(size);
dto.setMaterial_type(sysDownloadCenterDTO.getMaterial_type());
dto.setUpload_time(new Date());
sysDownloadCenterService.saveDownloadCenter(dto);
}
this.set("dialogFormVisible", false);
return this.ok("保存成功!!!");
}
}
/**
* 删除
*
* @param id
* @return
*/
@OdinRequest(refresh = true) // refresh = true 请求结束后刷新页面
@PostMapping("/delete")
public ResponseMessage delete(String id) {
sysDownloadCenterService.deleteById(id);
fsService.deleteObject(id);
return this.ok("删除成功!");
}
//移除文件
@GetMapping("/del/{id}")
public ResponseMessage del(@PathVariable String id) {
fsService.deleteObject(id);
return this.ok("文件移除成功!");
}
//批量下载
@GetMapping("/batchDownload/{ids}")
public void batchDownload(@PathVariable String ids, HttpServletResponse response) {
String[] s = ids.split(",");
String zipFileName = "batchDownload.zip";
// response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader("Content-Disposition", "attachment;filename=" + zipFileName);
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(response.getOutputStream());
for (String fileId : s) {
FSObject fsObject;
try {
fsObject = fsService.getObject(fileId);
} catch (Exception e) {
log.error("{}文件不存在!", fileId);
continue;
}
InputStream is = fsObject.getInputStream();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(is);
//将文件写入zip内即将文件进行打包
zos.putNextEntry(new ZipEntry(fsObject.getName()));
//写入文件的方法,同上
int size = 0;
byte[] buffer = new byte[1024];
//设置读取数据缓存大小
while ((size = bis.read(buffer)) > 0) {
zos.write(buffer, 0, size);
}
//关闭输入输出流
zos.closeEntry();
} catch (Exception e) {
throw e;
} finally {
if (bis != null) {
bis.close();
}
}
}
} catch (Exception e) {
throw new AppException("批量下载失败");
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
}
}
}
}
/**
* 下载
*
* @return
*/
@GetMapping("/download/{id}")
public void download(@PathVariable String id, HttpServletResponse response) throws IOException {
FSObject fsObject = null;
try {
fsObject = fsService.getObject(id);
} catch (Exception e) {
response.sendError(404, "文件不存在!");
return;
}
sysDownloadCenterService.saveDownloadLog(id, currentUserService.getCurrentUser().getLogonName());
OutputStream out = null;
InputStream in = fsObject.getInputStream();
try {
response.addHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fsObject.getName().getBytes("UTF-8"), "ISO8859-1"));
out = response.getOutputStream();
byte[] bytes = new byte[2048];
int len;
while ((len = in.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
} catch (Exception e) {
log.error("文件下载异常", e);
} finally {
//释放资源
if (out != null) {
try {
out.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
}
}
//上传
@PostMapping("/upload")
public ResponseMessage upload(@RequestParam MultipartFile file, HttpServletRequest request) throws IOException {
SysUser sysUser = currentUserService.getCurrentUser();
if (!"1".equals(sysUser.getUserType())) {
return ResponseMessage.error("只允许超级管理员上传附件!");
}
ResponseMessage rm;
String originalFilename = file.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
/*if (!".zip".equals(fileType)) {
rm = ResponseMessage.ok("文件类型不对!!!");
return rm;
}*/
//创建文件存储对象
FSObject fsObject = new FSObject();
fsObject.setName(file.getOriginalFilename());
fsObject.setContentType(file.getContentType());
fsObject.setInputStream(file.getInputStream());
fsObject.setSize(file.getSize());
//该id在文件存入后由mongodb返回
String id = fsService.pubObject(fsObject);
if (!ObjectUtils.isEmpty(id)) {
SysDownloadCenterDTO dto = new SysDownloadCenterDTO();
dto.setId(id);
dto.setMaterial_size(Long.toString(fsObject.getSize()));
dto.setMaterial_name(fsObject.getName());
rm = ResponseMessage.ok("文件上传成功!!!", dto);
} else {
rm = ResponseMessage.ok("文件上传失败!!!");
}
return rm;
}
//查询用户是否为超级管理员
@GetMapping("/queryUser")
public ResponseMessage queryUser() {
SysUser sysUser = currentUserService.getCurrentUser();
//超级管理员
if ("1".equals(sysUser.getUserType())) {
return ResponseMessage.ok(null, true);
} else {
return ResponseMessage.ok(null, false);
}
}
/**
*
* 以下都是vue3
*/
@PostMapping("/new/initCodeTypes")
public ResponseMessage initCodeTypesVue3(@RequestBody JSONObject jsonObject) {
ResponseMessage rm;
try {
JSONObject codeTypes = codeTypeService.getCodeTypes(jsonObject);
rm = ResponseMessage.ok(codeTypes);
} catch (Exception e) {
rm = ResponseMessage.error(e.getMessage());
}
return rm;
}
@PostMapping("/new/query")
public ResponseMessage queryVue3(@RequestBody SysDownloadCenterDTO queryDTO) {
return ResponseMessage.ok(sysDownloadCenterService.queryDownloadCenterList(queryDTO, queryDTO.getPage(), queryDTO.getSize()));
}
@GetMapping("/new/delete")
public ResponseMessage deleteVue3(String id) {
sysDownloadCenterService.deleteById(id);
fsService.deleteObject(id);
return ResponseMessage.ok("删除成功!");
}
@GetMapping("/new/queryUser")
public ResponseMessage queryUserVue3() {
SysUser sysUser = currentUserService.getCurrentUser();
//超级管理员
if ("1".equals(sysUser.getUserType())) {
return ResponseMessage.ok(true);
} else {
return ResponseMessage.ok(false);
}
}
//上传
@PostMapping("/new/upload")
public ResponseMessage uploadVue3(@RequestParam MultipartFile file, HttpServletRequest request) throws IOException {
SysUser sysUser = currentUserService.getCurrentUser();
if (!"1".equals(sysUser.getUserType())) {
return ResponseMessage.error("只允许超级管理员上传附件!");
}
ResponseMessage rm;
String originalFilename = file.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf("."));
/*if (!".zip".equals(fileType)) {
rm = ResponseMessage.ok("文件类型不对!!!");
return rm;
}*/
//创建文件存储对象
FSObject fsObject = new FSObject();
fsObject.setName(file.getOriginalFilename());
fsObject.setContentType(file.getContentType());
fsObject.setInputStream(file.getInputStream());
fsObject.setSize(file.getSize());
//该id在文件存入后由mongodb返回
String id = fsService.pubObject(fsObject);
if (StringUtil.isNotEmpty(id)) {
SysDownloadCenterDTO dto = new SysDownloadCenterDTO();
dto.setId(id);
dto.setMaterial_size(Long.toString(fsObject.getSize()));
dto.setMaterial_name(fsObject.getName());
rm = ResponseMessage.ok("文件上传成功!!!", dto);
} else {
rm = ResponseMessage.ok("文件上传失败!!!");
}
return rm;
}
@PostMapping("/new/save")
public ResponseMessage doSaveVue3(@RequestBody JSONObject jsonObjecte) {
if(jsonObjecte.get("material_type")==null|| "".equals(jsonObjecte.get("material_type"))){
return ResponseMessage.error("请选择文件类型!");
}
//设置保留位数
DecimalFormat df = new DecimalFormat("0.00");
JSONArray array = jsonObjecte.getJSONArray("sysDownloadCenterDTO");
List<SysDownloadCenterDTO> list = array.toJavaList(SysDownloadCenterDTO.class);
if (list.size() < 1) {
return ResponseMessage.error("请上传附件!");
} else {
for (SysDownloadCenterDTO downloadCenterDTO : list) {
//录入数据库
SysDownloadCenterDTO dto = new SysDownloadCenterDTO();
dto.setId(downloadCenterDTO.getId());
dto.setMaterial_name(downloadCenterDTO.getMaterial_name());
String size;
//字节
long baty = Long.parseLong(downloadCenterDTO.getMaterial_size());
//小于M用kb
if (baty < 1048576 && baty > 0) {
String kb = df.format((double) baty / 1024);
size = kb + "KB";
} else if (baty >= 1048576 && baty < 1073741824) { //用m表示
String m = df.format((double) baty / 1048576);
size = m + "M";
} else { //G表示
String g = df.format((double) baty / 1073741824);
size = g + "G";
}
dto.setMaterial_size(size);
dto.setMaterial_type((String) jsonObjecte.get("material_type"));
dto.setUpload_time(new Date());
sysDownloadCenterService.saveDownloadCenter(dto);
}
//this.set("dialogFormVisible", false);
return ResponseMessage.ok("保存成功!!!");
}
}
/**
* 下载
*
* @return
*/
@GetMapping("/new/download/{id}")
public void downloadVue3(@PathVariable String id, HttpServletResponse response) throws IOException {
FSObject fsObject = null;
try {
fsObject = fsService.getObject(id);
} catch (Exception e) {
response.sendError(404, "文件不存在!");
return;
}
sysDownloadCenterService.saveDownloadLog(id, currentUserService.getCurrentUser().getLogonName());
OutputStream out = null;
InputStream in = fsObject.getInputStream();
try {
response.addHeader("content-type", "application/octet-stream");
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename=" + new String(fsObject.getName().getBytes("UTF-8"), "ISO8859-1"));
out = response.getOutputStream();
byte[] bytes = new byte[2048];
int len;
while ((len = in.read(bytes)) > 0) {
out.write(bytes, 0, len);
}
} catch (Exception e) {
log.error("文件下载异常", e);
} finally {
//释放资源
if (out != null) {
try {
out.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
if (in != null) {
try {
in.close();
} catch (IOException e) {
log.error("IO close error!", e);
}
}
}
}
//批量下载
@GetMapping("/new/batchDownload/{ids}")
public void batchDownloadVue3(@PathVariable String ids, HttpServletResponse response) {
String[] s = ids.split(",");
String zipFileName = "batchDownload.zip";
// response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
response.setHeader("Content-Disposition", "attachment;filename=" + zipFileName);
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(response.getOutputStream());
for (String fileId : s) {
FSObject fsObject;
try {
fsObject = fsService.getObject(fileId);
} catch (Exception e) {
log.error("{}文件不存在!", fileId);
continue;
}
InputStream is = fsObject.getInputStream();
BufferedInputStream bis = null;
try {
bis = new BufferedInputStream(is);
//将文件写入zip内即将文件进行打包
zos.putNextEntry(new ZipEntry(fsObject.getName()));
//写入文件的方法,同上
int size = 0;
byte[] buffer = new byte[1024];
//设置读取数据缓存大小
while ((size = bis.read(buffer)) > 0) {
zos.write(buffer, 0, size);
}
//关闭输入输出流
zos.closeEntry();
} catch (Exception e) {
throw e;
} finally {
if (bis != null) {
bis.close();
}
}
}
} catch (Exception e) {
throw new AppException("批量下载失败");
} finally {
if (zos != null) {
try {
zos.close();
} catch (IOException e) {
}
}
}
}
}

View File

@@ -0,0 +1,162 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.domain.core.entity.SysError;
import com.insigma.framework.persistence.core.jdbc.JdbcPageHelper;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.service.SysErrorService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 异常信息维护
*/
@RestController
@RequestMapping("/sys/error")
public class SysErrorController {
@Autowired
private JdbcTemplate jdbcTemplate;
@Autowired
private SysErrorService sysErrorService;
@PostMapping("/doInit")
public ResponseMessage doInit(@RequestBody JSONObject pageData) throws SQLException {
Integer size = pageData.getInteger("size");
HashMap<String, Object> tableData = tableDataQuery(pageData, 1, size);
pageData.put("t_tableData", tableData);
/* List<SysError> errors=sysErrorService.queryAllErrors();
// JSONArray array1=new JSONArray();
JSONArray array=JSONArray.parseArray(JSONArray.toJSONString(errors));
JSONObject tableData = new JSONObject();
tableData.put("Data",array);
tableData.put("total",errors.size());*/
pageData.put("t_tableData", tableData);
return ResponseMessage.ok(null, pageData);
}
@PostMapping("/doQuery/goIt")
public ResponseMessage queryBySome(@RequestBody JSONObject pageData){
Map<String, HashMap<String,String>> map= (Map<String, HashMap<String, String>>) pageData.get("f_form1_n");
String serviceName=map.get("serviceName").get("value");
String functionName=map.get("functionName").get("value");
String errorCode= map.get("errorCode").get("value");
List<SysError> errors=sysErrorService.findAllBySome(serviceName,functionName,errorCode);
JSONArray array=JSONArray.parseArray(JSONArray.toJSONString(errors));
JSONObject tableData = new JSONObject();
tableData.put("Data",array);
tableData.put("total",errors.size());
pageData.put("t_tableData", tableData);
return ResponseMessage.ok(null, pageData);
}
@PostMapping("/doGridQuery/{id}")
public ResponseMessage doGridQuery(@RequestBody JSONObject jsonObject, @PathVariable String id) throws SQLException {
Integer page = jsonObject.getInteger("t_tableData_page");
Integer size = jsonObject.getInteger("t_tableData_size");
HashMap<String, Object> tableData = tableDataQuery(jsonObject, page, size);
jsonObject.put("t_tableData", tableData);
return ResponseMessage.ok(null, jsonObject);
}
@PostMapping("/delete")
public ResponseMessage deleteError(@RequestBody JSONObject pageData){
Map<String,String> map= (Map<String,String>) pageData.get("data");
try {
SysError sysError=sysErrorService.getSysErrorBean2(map);
sysErrorService.deleteError(sysError);
List<SysError> errors=sysErrorService.queryAllErrors();
JSONArray array=JSONArray.parseArray(JSONArray.toJSONString(errors));
JSONObject tableData = new JSONObject();
tableData.put("Data",array);
tableData.put("total",errors.size());
return ResponseMessage.ok("删除成功",tableData);
}catch (Exception e){
return ResponseMessage.error("删除失败");
}
}
@PostMapping("/doSave/addError")
public ResponseMessage addError(@RequestBody JSONObject pageData){
try {
Map<String,HashMap<String,String>> map= (Map<String,HashMap<String,String>>) pageData.get("f_errorForm_n");
SysError sysError=sysErrorService.getSysErrorBean1(map);
sysErrorService.save(sysError);
List<SysError> errors=sysErrorService.queryAllErrors();
JSONArray array=JSONArray.parseArray(JSONArray.toJSONString(errors));
JSONObject tableData = new JSONObject();
tableData.put("Data",array);
tableData.put("total",errors.size());
//将table装载到pageData
pageData.put("t_tableData", tableData);
pageData.put("dialogFormVisible",false);
return ResponseMessage.ok("增加成功",pageData);
}catch (Exception e){
pageData.put("dialogFormVisible",false);
return ResponseMessage.error("异常编码重复");
}
}
@PostMapping("/doCheck/{checkname}")
public ResponseMessage updateError(@RequestBody JSONObject pageData){
try {
int index=Integer.parseInt(pageData.get("index").toString());
HashMap<String,Object> maps= (HashMap<String,Object>) pageData.get("t_tableData_n");
// String datas=maps.get("Data").toString();
String datas=JSONObject.toJSONString(maps.get("Data"));
JSONArray jsonArray = JSON.parseArray(datas);
SysError sysError=JSON.toJavaObject(jsonArray.getJSONObject(index),SysError.class);
sysErrorService.save(sysError);
List<SysError> errors=sysErrorService.queryAllErrors();
JSONArray array=JSONArray.parseArray(JSONArray.toJSONString(errors));
JSONObject tableData = new JSONObject();
tableData.put("Data",array);
tableData.put("total",errors.size());
//将table装载到pageData
pageData.put("t_tableData_n", tableData);
return ResponseMessage.ok("修改成功",pageData);
}catch (Exception e){
return ResponseMessage.error(e.getMessage());
}
}
@PostMapping("/queryIsMany")
public ResponseMessage queryIsMany(@RequestBody JSONObject pageData){
Map<String,HashMap<String,String>> map= (Map<String,HashMap<String,String>>) pageData.get("f_errorForm_n");
String errCode=map.get("errorCode1").get("value");
boolean flag=sysErrorService.queryByErrCode(errCode);
if (flag==true){
map.get("errorCode1").put("value","");
pageData.put("f_errorForm",map);
return ResponseMessage.error("异常编码重复");
}
return ResponseMessage.ok(null, pageData);
}
public HashMap<String, Object> tableDataQuery(JSONObject jsonObject, Integer page, Integer size) throws SQLException {
StringBuffer querySQL = new StringBuffer("select * from syserror where 1=1 ");
JdbcPageHelper helper = new JdbcPageHelper(jdbcTemplate, page, size);
PageInfo<Map<String, Object>> data = helper.queryPagination(querySQL.toString(), new ArrayList<>(), rs -> {
Map<String, Object> map = new HashMap<>();
map.put("id", rs.getString("id"));
map.put("serviceName", rs.getString("servicename"));
map.put("functionName", rs.getString("functionname"));
map.put("errorCode", rs.getString("errorcode"));
map.put("message", rs.getString("message"));
map.put("createTime", rs.getDate("createtime"));
return map;
});
HashMap<String, Object> gridData = new HashMap<>();
gridData.put("total", data.getTotal());
gridData.put("Data", data.getData());
return gridData;
}
}

View File

@@ -0,0 +1,134 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.file.storage.core.FSObject;
import com.insigma.framework.file.storage.core.FSService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.FeedbackAnswerDTO;
import com.insigma.sys.dto.FeedbackDTO;
import com.insigma.sys.service.SysFeedbackService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
* @author yinjh
* @version 2022/2/23
*/
@RestController
@RequestMapping("/sys/feedback")
public class SysFeedbackController {
@Autowired
private SysFeedbackService sysFeedbackService;
@Autowired(required = false)
private FSService fsService;
@PostMapping("/query")
public ResponseMessage query(@RequestBody JSONObject jsonObject) throws SQLException {
FeedbackDTO queryDTO = jsonObject.toJavaObject(FeedbackDTO.class);
Integer page = jsonObject.getInteger("page");
Integer size = jsonObject.getInteger("size");
PageInfo<FeedbackDTO> pageInfo = sysFeedbackService.page(queryDTO, page, size);
return ResponseMessage.ok(null, pageInfo);
}
@PostMapping("/save")
public ResponseMessage save(@RequestBody FeedbackDTO feedbackDTO) {
if (ObjectUtils.isEmpty(feedbackDTO.getTitle())) {
return ResponseMessage.error("意见标题不能为空!");
}
if (ObjectUtils.isEmpty(feedbackDTO.getContent())) {
return ResponseMessage.error("意见内容不能为空!");
}
sysFeedbackService.save(feedbackDTO);
return ResponseMessage.ok("提交成功!");
}
@PostMapping("/get/{id}")
public ResponseMessage get(@PathVariable String id) {
if (ObjectUtils.isEmpty(id)) {
return ResponseMessage.error("意见ID不能为空");
}
FeedbackDTO feedbackDTO = sysFeedbackService.get(id);
return ResponseMessage.ok(null, feedbackDTO);
}
@PostMapping("/saveAnswer")
public ResponseMessage saveAnswer(@RequestBody FeedbackAnswerDTO feedbackAnswerDTO) {
if (ObjectUtils.isEmpty(feedbackAnswerDTO.getFeedbackId())) {
return ResponseMessage.error("意见ID不能为空");
}
if (ObjectUtils.isEmpty(feedbackAnswerDTO.getContent())) {
return ResponseMessage.error("回复内容不能为空!");
}
sysFeedbackService.saveAnswer(feedbackAnswerDTO);
return ResponseMessage.ok("提交成功!");
}
@PostMapping("/images")
public ResponseMessage upload(MultipartFile file) {
try {
if (fsService == null) {
return ResponseMessage.error("未启用FS");
}
if (ObjectUtils.isEmpty(file.getContentType())) {
return ResponseMessage.error("content-type不能为空");
}
if (!file.getContentType().toLowerCase().contains("image")) {
return ResponseMessage.error("图片格式不正确");
}
FSObject fsObject = new FSObject();
fsObject.setName(file.getOriginalFilename());
fsObject.setUploadDate(new Date());
fsObject.setInputStream(file.getInputStream());
fsObject.setContentType(file.getContentType());
fsObject.setSize(file.getSize());
Map<String, String> result = new HashMap<>();
result.put("location", "/sys/feedback/static/images/" + fsService.pubObject(fsObject) + file.getContentType().substring(file.getContentType().lastIndexOf("/")).toLowerCase().replace("/", "."));
return ResponseMessage.ok(null, result);
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
@GetMapping("/static/images/{prefix}.{suffix}")
public ResponseEntity view(@PathVariable String prefix, @PathVariable String suffix) {
try {
if (fsService == null) {
return ResponseEntity.notFound().build();
}
FSObject fsObject;
try {
fsObject = fsService.getObject(prefix);
} catch (Exception e) {
fsObject = null;
}
if (fsObject == null || !fsObject.getContentType().toLowerCase().contains(suffix.toLowerCase())) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok()
.header("Pragma", "no-cache")
.header("Cache-Control", "no-cache")
.header("Expires", "0")
.header("Content-Type", fsObject.getContentType())
.header("Content-Length", String.valueOf(fsObject.getSize()))
.body(new InputStreamResource(fsObject.getInputStream()));
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}

View File

@@ -0,0 +1,217 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.file.storage.core.FSObject;
import com.insigma.framework.file.storage.core.FSService;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.dto.SysFunctionDocDTO;
import com.insigma.sys.service.SysFunctionDocService;
import com.insigma.sys.service.SysFunctionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.*;
@Slf4j
@RestController
@RequestMapping("/sys/sysFunctionDoc")
public class SysFunctionDocController extends BaseController {
@Autowired
private SysFunctionDocService sysFunctionDocService;
@Autowired(required = false)
private FSService fsService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysFunctionService sysFunctionService;
@GetMapping("/queryTree")
public ResponseMessage queryTable(){
List<MenuDTO> menuDTOS = sysFunctionService.queryAllMenu();
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children");
return ResponseMessage.ok("查询成功", jsonArray);
}
@PostMapping("/nodeClick")
public ResponseMessage nodeClick(@RequestBody JSONObject jsonObject) {
SysFunction sysFunction;
String a=jsonObject.get("functionid").toString();
if (a!=null){
long functionid =(long)Integer.parseInt(a);
sysFunction = sysFunctionService.getByFunctionId(functionid);
List<SysFunction> menulist= sysFunctionService.getByParentId(sysFunction.getFunctionId());
if (menulist.size()>0){
//有子类
return ResponseMessage.ok(null, sysFunction);
}else {
//没有子类
return ResponseMessage.ok("重复", sysFunction);
}
}else {
return ResponseMessage.error();
}
}
/**
* 根据id查找对象
* @param jsonObject
* @return
*/
@PostMapping("/queryById")
public ResponseMessage queryById(@RequestBody JSONObject jsonObject) {
try {
String id=jsonObject.get("functionid").toString();
String funtype=jsonObject.get("funtype").toString();
List<MenuDTO> menuDTOS= sysFunctionService.queryMenuByFuntypeAndActive(funtype);
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children");
jsonObject.put("treedata",jsonArray);
long fId=Integer.parseInt(id);
SysFunction menu= sysFunctionService.getByFunctionId(fId);
List list=new ArrayList();
if(menu!=null){
String [] ms=menu.getIdPath().split("/");
if (ms.length>0){
for (String s:ms){
if(s.equals("0")){
continue;
}
list.add(Long.valueOf(s));
}
}}
jsonObject.put("pname",list);
return ResponseMessage.ok(null, jsonObject);
}catch (Exception e){
return ResponseMessage.error(e.getMessage());
}
}
@PostMapping("/doQuery")
public ResponseMessage doQuery(@RequestBody JSONObject jsonObject) {
String tmp = jsonObject.getString("functionid");
Long functionid;
if (ObjectUtils.isEmpty(tmp)) {
String location = jsonObject.getString("location");
if (ObjectUtils.isEmpty(location)) {
return ResponseMessage.error("传入菜单ID为空");
}
SysFunction sysFunction = sysFunctionService.getByLocation(location);
if (sysFunction == null) {
return ResponseMessage.error("模块不存在");
}
functionid = sysFunction.getFunctionId();
} else {
functionid = Long.parseLong(tmp);
}
SysFunctionDocDTO aysFunctionDocDTO = sysFunctionDocService.queryByFunctionID(functionid);
if (aysFunctionDocDTO == null) {
return ResponseMessage.error("未配置该模块的功能介绍");
}
return ResponseMessage.ok(null, aysFunctionDocDTO);
}
@PostMapping("/doSave")
public ResponseMessage doSave(@RequestBody SysFunctionDocDTO sysFunctionDocDTO ) {
try {
sysFunctionDocService.saveDoc(sysFunctionDocDTO);
return ResponseMessage.ok();
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
@OdinRequest
@PostMapping("/deleteMenu")
public ResponseMessage delete(@RequestBody JSONObject jsonObject) {
try {
String tmp = jsonObject.get("functionid").toString();
Long functionid = Long.parseLong(tmp);
if(functionid==0){
return ResponseMessage.error("传入菜单ID为空");
}
sysFunctionDocService.deleteByFunctionid(functionid);
return ResponseMessage.ok();
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
@PostMapping("/images")
public ResponseMessage upload(MultipartFile file, String messageId) {
try {
if (fsService == null) {
return ResponseMessage.error("未启用FS");
}
if (ObjectUtils.isEmpty(file.getContentType())) {
return ResponseMessage.error("content-type不能为空");
}
if (!file.getContentType().toLowerCase().contains("image")) {
return ResponseMessage.error("图片格式不正确");
}
FSObject fsObject = new FSObject();
fsObject.setName(file.getOriginalFilename());
fsObject.setUploadDate(new Date());
fsObject.setInputStream(file.getInputStream());
fsObject.setContentType(file.getContentType());
fsObject.setSize(file.getSize());
Map<String, String> result = new HashMap<>();
result.put("location", "/sys/sysFunctionDoc/static/images/" + fsService.pubObject(fsObject) + file.getContentType().substring(file.getContentType().lastIndexOf("/")).toLowerCase().replace("/", ".") + "?messageId=" + messageId);
return ResponseMessage.ok(null, result);
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
@GetMapping("/static/images/{prefix}.{suffix}")
public ResponseEntity view(@PathVariable String prefix, @PathVariable String suffix, String messageId) {
try {
SysUser sysUser = currentUserService.getCurrentUser();
SysFunctionDocDTO sysFunctionDocDTO = sysFunctionDocService.queryByFunctionID(Long.parseLong(messageId));
if (sysFunctionDocDTO != null ) {
if (sysFunctionDocDTO == null) {
return ResponseEntity.status(403).build();
}
}
if (fsService == null) {
return ResponseEntity.notFound().build();
}
FSObject fsObject;
try {
fsObject = fsService.getObject(prefix);
} catch (Exception e) {
fsObject = null;
}
if (fsObject == null || !fsObject.getContentType().toLowerCase().contains(suffix.toLowerCase())) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok()
.header("Pragma", "no-cache")
.header("Cache-Control", "no-cache")
.header("Expires", "0")
.header("Content-Type", fsObject.getContentType())
.header("Content-Length", String.valueOf(fsObject.getSize()))
.body(new InputStreamResource(fsObject.getInputStream()));
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}

View File

@@ -0,0 +1,212 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.dto.SysGuideDTO;
import com.insigma.sys.service.SysGuideService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.List;
@RestController
@RequestMapping("/sys/guide/Guide")
public class SysGuideController extends BaseController {
@Autowired
private SysGuideService sysGuideService;
/**
* 初始化
*
* @param f_form
* @param size
* @return
*/
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(SysGuideDTO f_form, Integer size) {
tableDataQuery(f_form, 1, size);
return this.ok();
}
/**
* 分页查询
*
* @param queryDTO
* @param page
* @param size
* @param name
* @return
*/
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysGuideDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
return this.ok();
}
/**
* 查询
*
* @param queryDTO
* @param size
* @return
*/
@OdinRequest
@PostMapping("/query")
public ResponseMessage query(@OdinRequestParam("f_form") SysGuideDTO queryDTO,
Integer size) {
tableDataQuery(queryDTO, 1, size);
return this.ok();
}
private void tableDataQuery(SysGuideDTO queryDTO, Integer page, Integer size) {
this.pageQuery("t_tableData", () -> {
this.set("page", page); // 需要将前端表格中:currentPage定义的值设置成page的值
return sysGuideService.queryGuideList(queryDTO, page, size);
});
}
/**
* 新增
*
* @return
*/
@OdinRequest
@PostMapping("/add")
public ResponseMessage add() {
this.clearForm("f_guideForm");
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "新增");
return this.ok();
}
/**
* 修改
*
* @param id
* @return
*/
@OdinRequest
@PostMapping("/update")
public ResponseMessage update(String id) {
SysGuideDTO dto = sysGuideService.queryGuide(id);
if(!ObjectUtils.isEmpty(dto.getAnswer_content())){
String s = dto.getAnswer_content().replaceAll("<br/>", "\n");
dto.setAnswer_content(s);
}
this.toForm("f_guideForm", dto);
this.set("dialogFormVisible", true);
this.set("dialogFormTitle", "修改");
return this.ok();
}
/**
* 批量删除
*
* @return
*/
@OdinRequest(refresh = true)
@PostMapping("/batchDelete")
public ResponseMessage batchDelete() {
List<SysGuideDTO> list = this.getCheckedTableData("t_tableData", SysGuideDTO.class);
if (list.size() == 0) {
return this.error("请勾选需要删除的内容!");
}
sysGuideService.deleteGuides(list);
return this.ok("删除成功!");
}
/**
* 删除
*
* @param id
* @return
*/
@OdinRequest
@PostMapping("/delete")
public ResponseMessage delete(String id) {
sysGuideService.delete(id);
this.setBackFunType("rQuery");
return this.ok("删除成功!");
}
/**
* 保存
*
* @param sysGuideDTO
* @param name
* @return
*/
@OdinRequest
@PostMapping("/doSave/{name}")
public ResponseMessage doSave(@OdinRequestParam("f_guideForm") SysGuideDTO sysGuideDTO, @PathVariable String name) {
sysGuideService.saveGuide(sysGuideDTO);
this.set("dialogFormVisible", false);
// doInit(new SysGuideDTO(),size);
this.setBackFunType("rQuery");
return this.ok("保存成功!");
}
/**
* 点击问题名称触发热度+1
*/
@GetMapping("/hot/{id}")
public ResponseMessage hot(@PathVariable String id) {
sysGuideService.hot(id);
return this.ok();
}
/**
* @Description: 根据不同选择进行详细的查询数据
* @author GH
* @version 2021/7/23 14:53
* @return
*/
@PostMapping("/findByQuestion_type")
public ResponseMessage findByQuestion_type(@RequestBody JSONObject jsonObjecte) {
Integer page = jsonObjecte.getInteger("page");
Integer size = jsonObjecte.getInteger("size");
String question_type = jsonObjecte.getString("question_type");
String sort = jsonObjecte.getString("sort");
String str = jsonObjecte.getString("str");
return ResponseMessage.ok(null, sysGuideService.findByQuestion_type(question_type,sort,str,page,size));
}
/**
* @Description: 查询首页引导信息
* @author GH
* @version 2021/7/30 13:09
* @return
*/
@GetMapping("/findFrontPage")
public ResponseMessage findFrontPage() {
List<HashMap<String, Object>> map = sysGuideService.findFrontPage();
return ResponseMessage.ok(null, map);
}
/**
* @Description: 更多详情页面
* @author GH
* @version 2021/7/30 13:09
* @return
*/
@PostMapping("/findDetailsPage/{id}")
public ResponseMessage findDetailsPage(@PathVariable String id) {
sysGuideService.hot(id);
return ResponseMessage.ok(null, sysGuideService.findDetailsPage(id));
}
}

View File

@@ -0,0 +1,62 @@
package com.insigma.sys.controller;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.dto.SysLogonLogDTO;
import com.insigma.sys.service.SysLogonLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* fukq 2020/6/2
*/
@RestController
@RequestMapping("/sys/syslogonlog")
public class SysLogonLogController extends BaseController {
@Autowired
private SysLogonLogService syslogonLogService;
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(SysLogonLogDTO f_form, Integer page, Integer size) {
tableDataQuery(f_form, page, size);
return this.ok();
}
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysLogonLogDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
this.set("page", page);
return this.ok();
}
@OdinRequest
@PostMapping("/query")
public ResponseMessage query(@OdinRequestParam("f_form") SysLogonLogDTO queryDTO,
@OdinRequestParam("t_tableData") PageInfo<SysLogonLogDTO> pageInfo,
Integer size) {
tableDataQuery(queryDTO, 1, size);
this.set("page", 1);
return this.ok();
}
public void tableDataQuery(SysLogonLogDTO queryDTO, Integer page, Integer size) {
this.pageQuery("t_tableData", () -> syslogonLogService.querySysLogonList(queryDTO, page, size));
}
@PostMapping("/new/query")
public ResponseMessage doGridQueryVue3(@RequestBody SysLogonLogDTO queryDTO) {
return ResponseMessage.ok(syslogonLogService.querySysLogonList(queryDTO, queryDTO.getPage(), queryDTO.getSize()));
}
}

View File

@@ -0,0 +1,119 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.file.storage.core.FSObject;
import com.insigma.framework.file.storage.core.FSService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MessageDTO;
import com.insigma.sys.service.SysMessageService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
/**
* Created by yinjh on 2020/6/16.
*/
@Slf4j
@RestController
@RequestMapping("/sys/message")
public class SysMessageController {
@Autowired
private SysMessageService sysMessageService;
@Autowired
private CurrentUserService currentUserService;
@Autowired(required = false)
private FSService fsService;
@PostMapping("/list")
public ResponseMessage list(@RequestBody JSONObject jsonObject) throws SQLException {
SysUser sysUser = currentUserService.getCurrentUser();
MessageDTO queryDTO = jsonObject.toJavaObject(MessageDTO.class);
Integer page = jsonObject.getInteger("page");
Integer size = jsonObject.getInteger("size");
PageInfo<MessageDTO> pageInfo = sysMessageService.getSysMessageList(sysUser, queryDTO, page, size, false);
return ResponseMessage.ok(null, pageInfo);
}
@PostMapping("/save")
public ResponseMessage save(@RequestBody MessageDTO messageDTO) {
String userId = currentUserService.getCurrentUser().getUserId();
if (ObjectUtils.isEmpty(messageDTO.getTitle())) {
return ResponseMessage.error("消息标题不能为空!");
}
if (ObjectUtils.isEmpty(messageDTO.getContent())) {
return ResponseMessage.error("消息内容不能为空!");
}
if (ObjectUtils.isEmpty(messageDTO.getType())) {
return ResponseMessage.error("消息类型不能为空!");
}
if ("1".equals(messageDTO.getType())) {
if (messageDTO.getUserIds() == null || messageDTO.getUserIds().size() == 0) {
return ResponseMessage.error("消息通知目标不能为空!");
}
}
sysMessageService.save(userId, messageDTO);
return ResponseMessage.ok("保存成功!");
}
@GetMapping("/read")
public ResponseMessage read(String messageId) {
String userId = currentUserService.getCurrentUser().getUserId();
MessageDTO messageDTO = sysMessageService.getSysMessage(userId, messageId);
if ("1".equals(messageDTO.getType()) && "-1".equals(messageDTO.getFlag())) {
return ResponseMessage.error("无权查看!");
}
if (!"1".equals(messageDTO.getFlag())) {
sysMessageService.updateFlag(userId, messageId);
}
return ResponseMessage.ok(null, messageDTO);
}
@GetMapping("/static/images/{prefix}.{suffix}")
public ResponseEntity view(@PathVariable String prefix, @PathVariable String suffix, String messageId) {
try {
SysUser sysUser = currentUserService.getCurrentUser();
MessageDTO messageDTO = sysMessageService.getSysMessage(messageId);
if (messageDTO != null && "1".equals(messageDTO.getType()) && !"1".equals(sysUser.getUserType())) {
messageDTO = sysMessageService.getSysUserMessage(sysUser.getUserId(), messageId);
if (messageDTO == null) {
return ResponseEntity.status(403).build();
}
}
if (fsService == null) {
return ResponseEntity.notFound().build();
}
FSObject fsObject;
try {
fsObject = fsService.getObject(prefix);
} catch (Exception e) {
fsObject = null;
}
if (fsObject == null || !fsObject.getContentType().toLowerCase().contains(suffix.toLowerCase())) {
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok()
.header("Pragma", "no-cache")
.header("Cache-Control", "no-cache")
.header("Expires", "0")
.header("Content-Type", fsObject.getContentType())
.header("Content-Length", String.valueOf(fsObject.getSize()))
.body(new InputStreamResource(fsObject.getInputStream()));
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());
}
}
}

View File

@@ -0,0 +1,130 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.IDUtil;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.file.storage.core.FSObject;
import com.insigma.framework.file.storage.core.FSService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.LazyTreeNode;
import com.insigma.sys.dto.MessageDTO;
import com.insigma.sys.service.SysMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.sql.SQLException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author yinjh
* @version 2021/8/23
*/
@RestController
@RequestMapping("/sys/message/manage")
public class SysMessageManageController {
@Autowired
private SysMessageService sysMessageService;
@Autowired
private CurrentUserService currentUserService;
@Autowired(required = false)
private FSService fsService;
@PostMapping("/init")
public ResponseMessage init() {
return ResponseMessage.ok("", IDUtil.generateUUID());
}
@PostMapping("/list")
public ResponseMessage list(@RequestBody JSONObject jsonObject) throws SQLException {
SysUser sysUser = currentUserService.getCurrentUser();
MessageDTO queryDTO = jsonObject.toJavaObject(MessageDTO.class);
Integer page = jsonObject.getInteger("page");
Integer size = jsonObject.getInteger("size");
PageInfo<MessageDTO> pageInfo = sysMessageService.getSysMessageList(sysUser, queryDTO, page, size, true);
return ResponseMessage.ok(null, pageInfo);
}
@PostMapping("/save")
public ResponseMessage save(@RequestBody MessageDTO messageDTO) {
String userId = currentUserService.getCurrentUser().getUserId();
if (ObjectUtils.isEmpty(messageDTO.getTitle())) {
return ResponseMessage.error("消息标题不能为空!");
}
if (ObjectUtils.isEmpty(messageDTO.getContent())) {
return ResponseMessage.error("消息内容不能为空!");
}
if (ObjectUtils.isEmpty(messageDTO.getType())) {
return ResponseMessage.error("消息类型不能为空!");
}
if ("1".equals(messageDTO.getType())) {
if (messageDTO.getUserIds() == null || messageDTO.getUserIds().size() == 0) {
return ResponseMessage.error("消息通知目标不能为空!");
}
}
MessageDTO message = sysMessageService.getSysMessage(messageDTO.getMessageId());
if (message == null) {
sysMessageService.save(userId, messageDTO);
} else {
sysMessageService.update(userId, messageDTO);
}
return ResponseMessage.ok("保存成功!");
}
@GetMapping("/read")
public ResponseMessage read(String messageId) {
MessageDTO messageDTO = sysMessageService.getSysMessage(messageId);
return ResponseMessage.ok(null, messageDTO);
}
@PostMapping("/delete")
public ResponseMessage delete(@RequestBody MessageDTO messageDTO) {
if (ObjectUtils.isEmpty(messageDTO.getMessageId())) {
return ResponseMessage.error("消息ID不能为空");
}
sysMessageService.deleteSysMessage(messageDTO.getMessageId());
return ResponseMessage.ok("删除成功!");
}
@GetMapping("/userOrgTree")
public ResponseMessage getUserOrgTree(String parentId) {
List<LazyTreeNode<String>> list = sysMessageService.getUserOrgTree(parentId);
return ResponseMessage.ok(null, list);
}
@PostMapping("/images")
public ResponseMessage upload(MultipartFile file, String messageId) {
try {
if (fsService == null) {
return ResponseMessage.error("未启用FS");
}
if (ObjectUtils.isEmpty(file.getContentType())) {
return ResponseMessage.error("content-type不能为空");
}
if (!file.getContentType().toLowerCase().contains("image")) {
return ResponseMessage.error("图片格式不正确");
}
FSObject fsObject = new FSObject();
fsObject.setName(file.getOriginalFilename());
fsObject.setUploadDate(new Date());
fsObject.setInputStream(file.getInputStream());
fsObject.setContentType(file.getContentType());
fsObject.setSize(file.getSize());
Map<String, String> result = new HashMap<>();
result.put("location", "/sys/message/static/images/" + fsService.pubObject(fsObject) + file.getContentType().substring(file.getContentType().lastIndexOf("/")).toLowerCase().replace("/", ".") + "?messageId=" + messageId);
return ResponseMessage.ok(null, result);
} catch (Exception e) {
return ResponseMessage.error(e.getMessage());
}
}
}

View File

@@ -0,0 +1,64 @@
package com.insigma.sys.controller;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequest;
import com.insigma.framework.web.support.ep.dev.annotation.OdinRequestParam;
import com.insigma.framework.web.support.ep.dev.controller.BaseController;
import com.insigma.sys.dto.SysOperateLogDTO;
import com.insigma.sys.service.SysOperateLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.sql.SQLException;
/**
* fukq 2020/6/1
*/
@RestController
@RequestMapping("/sys/sysoplog")
public class SysOpLogController extends BaseController {
@Autowired
SysOperateLogService sysOperateLogService;
@OdinRequest(init = true)
@PostMapping("/doInit")
public ResponseMessage doInit(SysOperateLogDTO f_form, Integer page, Integer size) {
tableDataQuery(f_form, page, size);
return this.ok();
}
@OdinRequest
@PostMapping("/doGridQuery/{name}")
public ResponseMessage doGridQuery(@OdinRequestParam("f_form") SysOperateLogDTO queryDTO,
@OdinRequestParam("t_tableData_page") Integer page,
@OdinRequestParam("t_tableData_size") Integer size,
@PathVariable String name) {
tableDataQuery(queryDTO, page, size);
this.set("page", page);
return this.ok();
}
@OdinRequest
@PostMapping("/query")
public ResponseMessage query(@OdinRequestParam("f_form") SysOperateLogDTO queryDTO,
@OdinRequestParam("t_tableData") PageInfo<SysOperateLogDTO> pageInfo,
Integer size) {
tableDataQuery(queryDTO, 1, size);
this.set("page", 1);
return this.ok();
}
public void tableDataQuery(SysOperateLogDTO queryDTO, Integer page, Integer size) {
this.pageQuery("t_tableData", () -> sysOperateLogService.querySysOperateLogList(queryDTO, page, size));
}
@PostMapping("/new/query")
public ResponseMessage query(@RequestBody SysOperateLogDTO queryDTO) throws SQLException {
return ResponseMessage.ok(sysOperateLogService.querySysOperateLogList(queryDTO, queryDTO.getPage(), queryDTO.getSize()));
}
}

View File

@@ -0,0 +1,495 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.encryption.util.SM3Utils;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.core.util.DtoEntityUtil;
import com.insigma.framework.core.util.IdCardUtil;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.*;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.framework.security.core.dto.BaseUserInfo;
import com.insigma.framework.web.support.core.service.CodeTypeService;
import com.insigma.framework.web.support.ep.dev.util.pe.PageForm;
import com.insigma.sys.common.CommonValidator;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.*;
import com.insigma.sys.service.Aa26Service;
import com.insigma.sys.service.SysOrgService;
import com.insigma.sys.service.SysUserService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.regex.Pattern;
/**
* @Author: caic
* @version: 10:40 2019/1/7
* @Description:
*/
@Data
@RestController
@RequestMapping("/sys/user")
@Slf4j
public class SysUserController {
@Autowired
private CodeTypeService codeTypeService;
@Autowired
private SysUserService sysUserService;
@Autowired
private CurrentUserService currentUserService;
@Autowired
private SysOrgService sysOrgService;
@Autowired
private Aa26Service aa26Service;
@Autowired
private CommonValidator validator;
Pattern patternCn = Pattern.compile("^[\u4E00-\u9FA5]+$");
Pattern patternEn = Pattern.compile("^[A-Za-z]+$");
Pattern patternEnCn = Pattern.compile("^[0-9a-zA-Z]+$");
/**
* 初始化页面数据
*
* @return
*/
@PostMapping("/doInit")
public ResponseMessage initPageDate(@RequestBody JSONObject jsonObject) {
String userType = currentUserService.getCurrentUser().getUserType();//获取当前登录用户类型
JSONObject codeTypes = jsonObject.getJSONObject("codeTypes");
JSONObject codeTypesRes = codeTypeService.getCodeTypes(codeTypes);
jsonObject.put("codeTypes", codeTypesRes);
jsonObject.put("currentUserType", userType);//设置当前登录用户类型
return ResponseMessage.ok(null, jsonObject);
}
/**
* 保存用户
*
* @param pageData
* @return
*/
@PostMapping("/doSave")
public ResponseMessage save(@RequestBody JSONObject pageData) {
try {
PageForm pageForm = new PageForm(pageData);
SysUserDTO sysUser = toUser(pageForm);
if (!patternEnCn.matcher(sysUser.getLogonName()).matches()) {
throw new AppException("登录名必须是英文或数字");
}
if (!patternCn.matcher(sysUser.getDisplayName()).matches() && !patternEn.matcher(sysUser.getDisplayName()).matches()) {
throw new AppException("姓名必须是中文或英文");
}
if ("1".equals(sysUser.getCardType()) && !IdCardUtil.verify(sysUser.getCardId())) {
throw new AppException("身份证号码格式不正确");
}
if ("1".equals(sysUser.getUserType()) && !"1".equals(currentUserService.getCurrentUser().getUserType())) {
throw new AppException("非超级管理员不能创建超级管理员");
}
String sm3LogonName = SM3Utils.digest(sysUser.getLogonName());
String sm3ReverseLogonName = SM3Utils.digest(new StringBuffer(sysUser.getLogonName()).reverse().toString());
if (sm3LogonName.equals(sysUser.getPassWD()) || sm3ReverseLogonName.equals(sysUser.getPassWD())) {
throw new AppException("新密码不能与登录名(包含逆序)相同!");
}
sysUser.setUserState("1");
JSONArray orgIds = pageData.getJSONObject("orgId").getJSONArray("value");
if (orgIds.size() > 0)
sysUser.setOrgId(Long.parseLong(orgIds.get(orgIds.size() - 1) + ""));
JSONArray aa26Ids = pageData.getJSONObject("aa26").getJSONArray("value");
if (aa26Ids.size() > 0)
sysUser.setAreaId(Long.parseLong(aa26Ids.get(aa26Ids.size() - 1) + ""));
JSONArray roleIds = pageData.getJSONObject("roleIds").getJSONArray("value");
List<SysUserRoleDTO> list = new ArrayList<>();
for (Object roleId : roleIds) {
if (roleId != null) {
SysUserRoleDTO sysUserRole = new SysUserRoleDTO();
sysUserRole.setRoleId(roleId.toString());
list.add(sysUserRole);
}
}
sysUser.setUserRoles(list);
sysUser.setCreateTime(new Date());
// 设定用户过期时间
sysUser.setUserExpireDate(pageData.getJSONObject("userExpireDate").getDate("value"));
// 获取密码过期策略
String pwExpireType = (String) pageData.getJSONObject("pwExpireType").get("value");
if (!ObjectUtils.isEmpty(pwExpireType) && pwExpireType.equals("1")) {
// 系统配置周期
long l = new Date().getTime() + 7 * 24 * 3600 * 1000;
sysUser.setPwExpireDate(new Date(l));
} else if (ObjectUtils.isEmpty(pwExpireType) || pwExpireType.equals("2")) {
// 永不过期
sysUser.setPwExpireDate(null);
} else if (!ObjectUtils.isEmpty(pwExpireType) && pwExpireType.equals("3")) {
// 指定日期
sysUser.setPwExpireDate(pageData.getJSONObject("pwExpireDate").getDate("value"));
}
JSONArray areaIds = pageData.getJSONObject("aa26Tree").getJSONArray("value");
List<String> addAreaIds = new ArrayList<>();
for (int i = 0; i < areaIds.size(); i++) {
JSONObject obj = areaIds.getJSONObject(i);
addAreaIds.add(obj.get("key").toString());
}
Map<String, List<String>> map = new ConcurrentHashMap<>();
map.put("addAreaIds", addAreaIds);
if (!validator.validateArea(sysUser.getAreaId() + "", sysUser.getUserType())
|| !validator.validateOrg(sysUser.getOrgId(), sysUser.getUserType())
|| !validator.validateRoleIds(roleIds.toJavaList(String.class))) {
throw new AppException("无权操作");
}
sysUserService.saveUser(sysUser, map);
return ResponseMessage.ok("保存成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("保存失败,失败原因:" + e.getMessage());
}
}
@GetMapping("/queryOneUser/{userId}")
public ResponseMessage queryOneUser(@PathVariable String userId) throws AppException {
SysUser sysUser = sysUserService.getByUserId(userId);
if (!validator.validateUser(sysUser.getUserId())) {
throw new AppException("无权查看");
}
//sysUser.setPassWD(null);
List<SysUserRole> roleList = sysUserService.queryUserRole(userId);
List<SysUserArea> areaList = sysUserService.queryUserArea(userId);
SysOrg sysOrg = sysOrgService.getByOrgId(sysUser.getOrgId());
Aa26 aa26 = aa26Service.getByAab301(sysUser.getAreaId() + "");
Map<String, Object> map = new ConcurrentHashMap<>();
map.put("sysUser", DtoEntityUtil.trans(sysUser, SysUserDTO.class, true));
map.put("roleList", DtoEntityUtil.trans(roleList, SysUserRoleDTO.class, true));
map.put("areaList", DtoEntityUtil.trans(areaList, SysUserAreaDTO.class, true));
if (sysOrg != null) {
map.put("orgId", sysUser.getOrgId());
map.put("sysOrgs", DtoEntityUtil.trans(sysOrg, SysOrgDTO.class, true));
//sysOrgService.findByRegioncode(sysUser.getAreaId()+"")
}
if (aa26 != null)
map.put("aa26", DtoEntityUtil.trans(aa26, Aa26DTO.class, true));
return ResponseMessage.ok(null, map);
}
@GetMapping("/queryTable")
public ResponseMessage queryTable(@RequestParam(name = "logonName") String logonName,
@RequestParam(name = "displayName") String displayName,
@RequestParam(name = "orgId") String orgId,
@RequestParam(name = "userState") String userState,
@RequestParam(name = "userType") String userType,
@RequestParam(name = "aa26") String aa26,
@RequestParam(name = "cardId") String cardId,
@RequestParam(name = "page") Integer page,
@RequestParam(name = "size") Integer size) {
PageInfo<SysUserDTO> pageInfo = sysUserService.findAll(logonName, displayName, orgId, userState,userType,aa26,cardId, page, size,"1");
JSONObject jsonObject=new JSONObject();
JSONArray jsonArray=JSONArray.parseArray(JSONArray.toJSONString(pageInfo.getData()));
for(int i=0; i < jsonArray.size(); i++){
if(jsonArray.getJSONObject(i).getString("orgId") != null) {
SysOrg sysOrg = sysOrgService.getByOrgId(Long.valueOf(jsonArray.getJSONObject(i).getString("orgId")));
if(sysOrg != null){
jsonArray.getJSONObject(i).put("orgId", sysOrg.getOrgName());
}else{
jsonArray.getJSONObject(i).put("orgId", "");
}
}
if(jsonArray.getJSONObject(i).getString("areaId") != null) {
Aa26 a=aa26Service.getByAab301(jsonArray.getJSONObject(i).getString("areaId"));
if(a != null) {
jsonArray.getJSONObject(i).put("areaId", a.getAaa146());
}else{
jsonArray.getJSONObject(i).put("areaId", "");
}
}
}
jsonObject.put("totalElements",pageInfo.getTotal());
jsonObject.put("content",jsonArray);
return ResponseMessage.ok(null, jsonObject);
}
/**
* 复制用户
* @param data
* @return
*/
@PostMapping(value = "/copyUser")
public ResponseMessage copyUser(@RequestBody JSONObject data){
try {
if (!validator.validateUser(currentUserService.getCurrentUser().getUserId())) {
throw new AppException("无权操作");
}
sysUserService.copyUser(data);
return ResponseMessage.ok("复制成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("复制失败原因:" + e.getMessage());
}
}
/**
* 注销用户
*
* @param data
* @return
*/
@PostMapping(value = "/logoutUser")
public ResponseMessage logoutUser(@RequestBody(required = true) JSONObject data) {
try {
String userId = data.getString("userId");
if (!validator.validateUser(userId)) {
throw new AppException("无权操作");
}
sysUserService.logoutUser(userId);
sysUserService.clearSessions(userId);
return ResponseMessage.ok("注销成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("注销失败,失败原因:" + e.getMessage());
}
}
/**
* 解锁用户
*
* @param data
* @return
*/
@PostMapping(value = "/unlockUser")
public ResponseMessage unlockUser(@RequestBody(required = true) JSONObject data) {
try {
String userId = data.getString("userId");
if (!validator.validateUser(userId)) {
throw new AppException("无权操作");
}
sysUserService.unlockUser(userId);
return ResponseMessage.ok("解锁成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("解锁失败,失败原因:" + e.getMessage());
}
}
/**
* 锁定用户
*
* @param data
* @return
*/
@PostMapping(value = "/lockUser")
public ResponseMessage lockUser(@RequestBody(required = true) JSONObject data) {
try {
String userId = data.getString("userId");
if (!validator.validateUser(userId)) {
throw new AppException("无权操作");
}
sysUserService.lockUser(userId);
sysUserService.clearSessions(userId);
return ResponseMessage.ok("锁定成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("锁定失败,失败原因:" + e.getMessage());
}
}
/**
* 重置密码
*
* @param data
* @return
*/
@PostMapping("/resetPassWD")
public ResponseMessage resetPassWD(@RequestBody(required = true) JSONObject data) {
try {
String userId = data.getString("userId");
if (!validator.validateUser(userId)) {
throw new AppException("无权操作");
}
sysUserService.resetPassWD(userId);
// return ResponseMessage.ok("重置密码成功,默认密码为:" + resetPassWD);
return ResponseMessage.ok("重置密码成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("重置密码失败,失败原因:" + e.getMessage());
}
}
@PostMapping("/editPass")
public ResponseMessage editPassWD(@RequestBody(required = true) JSONObject data){
try {
String oldPass=data.getString("oldPass");
String newPass=data.getString("newPass");
sysUserService.updataPassWD(oldPass,newPass);
return ResponseMessage.ok("修改密码成功");
} catch (Exception e) {
log.error(e.getMessage(), e);
return ResponseMessage.error("修改密码失败,失败原因:" + e.getMessage());
}
}
@GetMapping("/getOrgTreeNodes/{areaId}")
public ResponseMessage getOrgTreeNodes(@PathVariable String areaId) {
JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(sysUserService.queryOrgNodes(areaId))), "orgid", "parentid", "children");
return ResponseMessage.ok(null, orgNodes);
}
@GetMapping("/getAa26TreeNodes/{userType}")
public ResponseMessage getAa26TreeNodes(@PathVariable String userType) {
JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(sysUserService.queryAa26Nodes())), "aab301", "aaa148", "children");
//orgNodes= JSONArray.parseArray(JSONArray.toJSONString(orgNodes).replace("aab301","id"));
return ResponseMessage.ok(null, orgNodes);
}
@GetMapping("/getOrgTreeNodes1/{userType}")
public ResponseMessage getOrgTreeNodes1(@PathVariable String userType) {
List<SysOrg> list = sysOrgService.getAll();
JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(DtoEntityUtil.trans(list, SysOrgDTO.class, true))), "orgid", "parentid", "children");
return ResponseMessage.ok(null, orgNodes);
}
@GetMapping("/getUserTypeCode")
public ResponseMessage getUserTypeCode() {
List<Map<String, Object>> list = sysUserService.findUsetTypeCode();
return ResponseMessage.ok(null, list);
}
@GetMapping("/getUserStateCode")
public ResponseMessage getUserStateCode() {
return ResponseMessage.ok(null, sysUserService.getUserStateCode());
}
@GetMapping("/getRoleList/{userType}")
public ResponseMessage getRoleList(@PathVariable("userType") String userType) {
List<SysRole> list = sysUserService.findByRoleType(userType);
return ResponseMessage.ok(null, DtoEntityUtil.trans(list, SysRoleDTO.class, true));
}
@PostMapping("/doCheck/{id}")
public ResponseMessage doCheck(@PathVariable("id") String id, @RequestBody JSONObject data) {
boolean bool = true;//校验是否通过
if ("logonName".equals(id)) {
String logonName = data.getJSONObject("logonName").getString("value");
String userId=data.getJSONObject("userId").getString("value");
bool = sysUserService.checkLogonName(logonName,userId);
}
if (bool) {
ResponseMessage rm = ResponseMessage.error("存在相同登录名");
return rm;
} else {
return ResponseMessage.ok();
}
}
/**
* 获取所有机构
* @return
*/
@GetMapping("/findAllOrg")
private ResponseMessage findAllOrg() {
List<SysOrg> list = sysOrgService.getAll();
return ResponseMessage.ok(null, DtoEntityUtil.trans(list, SysOrgDTO.class, true));
}
/**
* 获取所有区域
* @return
*/
@GetMapping("/findAllAa26")
private ResponseMessage findAllAa26() {
List<Aa26> list = aa26Service.getAll();
return ResponseMessage.ok(null, DtoEntityUtil.trans(list, Aa26DTO.class, true));
}
/**
* 获取所有机构,返回格式为树结构
* @return
*/
@GetMapping("/findAllOrgTree")
private ResponseMessage findAllOrgTree() {
List<SysOrg> list = sysOrgService.getAll();
JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(DtoEntityUtil.trans(list, SysOrgDTO.class, true))), "orgid", "parentid", "children");
return ResponseMessage.ok(null, orgNodes);
}
/**
* 通用获取下拉框选项
* @param codeType
* @return
*/
@GetMapping("/getAa10Code/{codeType}")
public ResponseMessage getAa10Code(@PathVariable String codeType){
List<Map<String, Object>> list = sysUserService.getAa10Code(codeType);
return ResponseMessage.ok(null, list);
}
/**
* 获取当前登录用户
* @return
*/
@GetMapping("/getCurrentUser")
public ResponseMessage getCurrentUser(){
SysUser currentUser = currentUserService.getCurrentUser();
BaseUserInfo baseUserInfo = new BaseUserInfo();
baseUserInfo.setUserid(currentUser.getUserId());
baseUserInfo.setUsername(currentUser.getLogonName());
baseUserInfo.setNickname(currentUser.getUserType());
return ResponseMessage.ok(null, baseUserInfo);
}
/**
* 获取当前登录用户
* @return
*/
@GetMapping("/getUserSlevel")
public ResponseMessage getUserSlevel(){
/*return ResponseMessage.ok(sysUserService.getUserSlevel());*/
ResponseMessage t = new ResponseMessage();
t.setStatus("0");
t.setData(sysUserService.getUserSlevel());
return t;
}
private SysUserDTO toUser(PageForm pageForm) {
SysUserDTO sysUserDTO = new SysUserDTO();
sysUserDTO.setUserId(pageForm.getValue("userId", String.class));
sysUserDTO.setLogonName(pageForm.getValue("logonName", String.class));
sysUserDTO.setDisplayName(pageForm.getValue("displayName", String.class));
sysUserDTO.setUserType(pageForm.getValue("userType", String.class));
sysUserDTO.setPassWD(pageForm.getValue("passWD", String.class));
sysUserDTO.setUserExpireDate(pageForm.getValue("userExpireDate", Date.class));
sysUserDTO.setPwExpireType(pageForm.getValue("pwExpireType", String.class));
sysUserDTO.setPwExpireDate(pageForm.getValue("pwExpireDate", Date.class));
sysUserDTO.setPwEditDate(pageForm.getValue("pwEditDate", Date.class));
sysUserDTO.setCardType(pageForm.getValue("cardType", String.class));
sysUserDTO.setCardId(pageForm.getValue("cardId", String.class));
sysUserDTO.setTel(pageForm.getValue("tel", String.class));
sysUserDTO.setDepartment(pageForm.getValue("department", String.class));
return sysUserDTO;
}
}

View File

@@ -0,0 +1,49 @@
package com.insigma.sys.controller;
import com.alibaba.fastjson2.JSONArray;
import com.insigma.framework.core.ResponseMessage;
import com.insigma.framework.core.util.TreeUtil;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.sys.common.CurrentUserService;
import com.insigma.sys.dto.MenuDTO;
import com.insigma.sys.service.SysFunctionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* Created by yinjh on 2019/3/15.
*/
@RestController
@RequestMapping("/sys/usermenu")
public class UserMenuController {
@Autowired
private SysFunctionService sysFunctionService;
@Autowired
private CurrentUserService currentUserService;
@GetMapping("/getMenuList")
public ResponseMessage getMenuList() {
SysUser sysUser = currentUserService.getCurrentUser();
List<MenuDTO> menuDTOS = sysFunctionService.getMenuList(sysUser);
JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children", "0");
return ResponseMessage.ok("查询成功", jsonArray);
}
@GetMapping("/getButtonAuthList")
public ResponseMessage getButtonList(String location) {
if (ObjectUtils.isEmpty(location)) {
return ResponseMessage.error("location不能为空");
}
SysUser sysUser = currentUserService.getCurrentUser();
List<String> buttonAuthList = sysFunctionService.getButtonAuthList(sysUser, location);
return ResponseMessage.ok(null, buttonAuthList);
}
}

View File

@@ -0,0 +1,23 @@
package com.insigma.sys.controller;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.IOException;
/**
* @author yinjh
* @since 2025/2/8
*/
@Controller
public class ValidateCodeForwardController {
@RequestMapping("/validateCodeEnabled")
public void forward(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
request.getRequestDispatcher("/validateCode/enabled").forward(request, response);
}
}

View File

@@ -0,0 +1,44 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 系统参数 DTO
*
* @author yinjh
*/
@Data
public class Aa01DTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 参数类别代码
*/
private String aaa001;
/**
* 参数类别名称
*/
private String aaa002;
/**
* 参数值
*/
private String aaa005;
/**
* 参数值域说明
*/
private String aaa105;
/**
* 代码可维护标志1-可维护、0-不可维护
*/
private String aaa104;
}

View File

@@ -0,0 +1,54 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 字典代码 DTO
*
* @author yinjh
*/
@Data
public class Aa10DTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 代码ID
*/
private Long aaz093;
/**
* 代码类型
*/
private String aaa100;
/**
* 代码值
*/
private String aaa102;
/**
* 代码名称
*/
private String aaa103;
/**
* 参数分类
*/
private String aaa105;
/**
* 有效标志1-有效、0-无效
*/
private String aae100;
/**
* 可维护标志1-可维护、0-不可维护
*/
private String aaa104;
}

View File

@@ -0,0 +1,49 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 行政区划 DTO
*
* @author yinjh
*/
@Data
public class Aa26DTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 行政区划代码
*/
private String aab301;
/**
* 行政区划名称
*/
private String aaa146;
/**
* 行政区划级别
*/
private String aaa147;
/**
* 行政区划父级代码
*/
private String aaa148;
/**
* 是否统筹区01
*/
private String eae037;
/**
* id路径
*/
private String idpath;
}

View File

@@ -0,0 +1,51 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 系统反馈答复 DTO
*
* @author yinjh
*/
@Data
public class FeedbackAnswerDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 反馈答复内容
*/
private String content;
/**
* 用户ID
*/
private String userId;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 反馈ID
*/
private String feedbackId;
/**
* 回复类型0-问、1-答
*/
private String type;
}

View File

@@ -0,0 +1,71 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 问题反馈 DTO
*
* @author yinjh
*/
@Data
public class FeedbackDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 标题
*/
private String title;
/**
* 内容
*/
private String content;
/**
* 用户ID
*/
private String userId;
/**
* 显示名称
*/
private String displayName;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 最近应答0-无、1-有
*/
private String answered;
/**
* 日期范围
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private List<Date> dateRange;
/**
* 答复列表
*/
List<FeedbackAnswerDTO> answerList;
}

View File

@@ -0,0 +1,27 @@
package com.insigma.sys.dto;
import com.insigma.framework.web.support.module.dto.ImportConfigDTO;
import com.insigma.framework.web.support.module.dto.ImportConfigDetailDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 导入配置返回 DTO
*
* @author yinjh
*/
@Data
public class ImportConfigReDTO implements Serializable {
/**
* 导入配置
*/
private ImportConfigDTO config;
/**
* 导入配置明细
*/
private List<ImportConfigDetailDTO> details;
}

View File

@@ -0,0 +1,40 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 懒加载树节点对象
*
* @author yinjh
*/
@Data
public class LazyTreeNode<T> implements Serializable {
/**
* 节点ID
*/
private T id;
/**
* 节点名称
*/
private String label;
/**
* 节点父ID
*/
private T parent;
/**
* 是否是叶子节点
*/
private Boolean isLeaf;
/**
* 扩展属性
*/
private Object extra;
}

View File

@@ -0,0 +1,68 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serializable;
/**
* 菜单 DTO
*
* @author yinjh
*/
@Data
public class MenuDTO implements Serializable {
/**
* 功能ID
*/
private long functionid;
/**
* 链接
*/
private String path;
/**
* 标题
*/
private String title;
/**
* 功能分类0-通用、1-系统管理、2-业务功能(扩展:个人、单位、机构)
*/
private String funtype;
/**
* 父功能ID
*/
private long parentid;
/**
* 节点图标
*/
private String icon;
/**
* 排序号
*/
private int funorder;
/**
* 节点类型1-菜单节点2-菜单叶子
*/
private String nodetype;
/**
* 功能描述
*/
private String description;
/**
* 所属应用系统
*/
private String appid;
/**
* 打开模式1-tab页打开2-浏览器tab页打开
*/
private String openmode;
}

View File

@@ -0,0 +1,69 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 消息 DTO
*
* @author yinjh
*/
@Data
public class MessageDTO implements Serializable {
/**
* 消息ID
*/
private String messageId;
/**
* 消息标题
*/
private String title;
/**
* 消息内容
*/
private String content;
/**
* 消息创建人
*/
private String creator;
/**
* 消息创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 消息状态0未读1已读
*/
private String flag;
/**
* 消息接收人列表
*/
private List<String> userIds;
/**
* 开始时间
*/
private Date startDate;
/**
* 结束时间
*/
private Date endDate;
/**
* 消息类型0全员消息1局部消息
*/
private String type;
}

View File

@@ -0,0 +1,27 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @author GH
*/
@Data
public class MonitorCentersDTO implements Serializable {
private String ip;
private String appName;
private String timeStart;
private String timeEnd;
private String start;
private String rows;
private String uriFieldName;
private String sessionFieldName;
private String sqlFieldName;
private String sort;
private String appId;
private String title;
private String company;
private Date ctime;
}

View File

@@ -0,0 +1,78 @@
package com.insigma.sys.dto;
import com.insigma.framework.domain.core.entity.ScmSafetyFilterLog;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author yinjh
* @since 2025/1/21
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class SafetyFilterLogDTO extends ScmSafetyFilterLog implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 日志ID
*/
private String logId;
/**
* 请求URL
*/
private String requestUrl;
/**
* 请求时间
*/
private Date requestTime;
/**
* 登录名
*/
private String loginName;
/**
* 过滤内容
*/
private String filterContent;
/**
* 过滤类型
*/
private String filterType;
/**
* 功能ID
*/
private Long functionId;
/**
* 功能名称
*/
private String functionName;
/**
* 请求来源IP
*/
private String requestOriginIp;
/**
* 分页
*/
private Integer page;
/**
* 每页显示数量
*/
private Integer size;
}

View File

@@ -0,0 +1,43 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 应用地址配置 DTO
*
* @author yinjh
*/
@Data
public class SysAppAddressDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 应用地址ID
*/
private String addressId;
/**
* 门户地址
*/
private String portalUrl;
/**
* 应用地址
*/
private String appUrl;
/**
* 应用登录地址
*/
private String appLogoutUrl;
/**
* 应用ID
*/
private String appId;
}

View File

@@ -0,0 +1,66 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 应用 DTO
*
* @author yinjh
*/
@Data
public class SysAppDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 应用ID
*/
private String appId;
/**
* 应用编码
*/
private String appCode;
/**
* 应用名称
*/
private String appName;
/**
* 排序号
*/
private Long orderNo;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 修改时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
/**
* 是否有效1-有效、0-无效
*/
private String active;
/**
* 应用安全key
*/
private String secretKey;
public Integer page;
private Integer size;
}

View File

@@ -0,0 +1,58 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 审核配置 DTO
*
* @author yinjh
*/
@Data
public class SysAuditConfigDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 模块ID
*/
private Long functionId;
/**
* 审核总级别
*/
private Integer auditTotalLevel;
/**
* 服务名SpringBean的名称实现AuditResultHandler接口
*/
private String serviceName;
/**
* 是否允许回退到上一级
*/
private String allowRollback;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
/**
* 修改时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}

View File

@@ -0,0 +1,50 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 下载中心 DTO
*
* @author yinjh
*/
@Data
public class SysDownloadCenterDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 材料ID
*/
private String id;
/**
* 材料名称
*/
private String material_name;
/**
* 材料类型
*/
private String material_type;
/**
* 材料大小
*/
private String material_size;
/**
* 上传时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date upload_time;
private Integer page;
private Integer size;
}

View File

@@ -0,0 +1,51 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 系统错误信息 DTO
*
* @author yinjh
*/
@Data
public class SysErrorDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
private String id;
/**
* 服务编码
*/
private String serviceName;
/**
* 模块编码
*/
private String functionName;
/**
* 错误编码
*/
private String errorCode;
/**
* 错误信息
*/
private String message;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
}

View File

@@ -0,0 +1,119 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 功能菜单 DTO
*
* @author yinjh
*/
@Data
public class SysFunctionDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 功能ID
*/
private Long functionid;
/**
* 链接
*/
private String location;
/**
* 标题
*/
private String title;
/**
* 父功能ID
*/
private Long parentid;
/**
* 排序号
*/
private int funorder;
/**
* 节点类型1-菜单节点2-菜单叶子
*/
private String nodetype;
/**
* 是否记录日志 1-记,0-不记
*/
private String islog;
/**
* 开发人员
*/
private String developer;
/**
* 节点图标
*/
private String icon;
/**
* 功能的中文描述
*/
private String description;
/**
* 功能分类,0通用1系统管理2业务功能扩展个人、单位、机构
*/
private String funtype;
/**
* 是否有效
*/
private String active;
/**
* 功能编号
*/
private String funcode;
/**
* 审核标志0-不自动审核1-自动审核
*/
private String auflag;
/**
* 操作日志回退标志0-不可以1-可以
*/
private String rbflag;
/**
* ID路径
*/
private String idpath;
/**
* 摘要字段
*/
private String digest;
/**
* 密级字段 0-普通1-秘密2-机密
*/
private String slevel;
/**
* 所属应用系统
*/
private String appId;
/**
* 打开模式1-tab页打开2-浏览器tab页打开
*/
private String openmode;
}

View File

@@ -0,0 +1,47 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 功能文档 DTO
*
* @author yinjh
*/
@Data
public class SysFunctionDocDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 菜单ID
*/
private Long functionid;
/**
* 概述
*/
private String overview;
/**
* 详细说明
*/
private String detailed_view;
/**
* 更新时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date update_time;
/**
* 更新人
*/
private String update_name;
}

View File

@@ -0,0 +1,63 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 系统指南 DTO
*
* @author yinjh
*/
@Data
public class SysGuideDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 编号
*/
private String id;
/**
* 问题名称
*/
private String question_name;
/**
* 问题类型
*/
private String question_type;
/**
* 答案类型
*/
private String answer_type;
/**
* 答案内容
*/
private String answer_content;
/**
* 答案链接
*/
private String link_url;
/**
* 创建时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date create_time;
/**
* 热度
*/
private long hot_count;
}

View File

@@ -0,0 +1,93 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@Data
public class SysLogonLogDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 日志ID
*/
private String logonlogid;
/**
* 用户ID
*/
private String userid;
/**
* 登录IP
*/
private String logonip;
/**
* 登录时间
*/
private Date logontime;
/**
* 登出时间
*/
private Date logofftime;
/**
* 登录方式password账号密码登录、qrcode二维码扫码登录、sms短信验证码登录、sso_sat单点登录基于SAT、sso_est基于EST
*/
private String logontype;
/**
* 登录结果
*/
private String successflag = "1";
/**
* 登录失败原因
*/
private String failreason;
/**
* 登出原因
*/
private String logoffreason;
/**
* 会话ID
*/
private String sessionid;
/**
* 登录名
*/
private String logonname;
/**
* 显示名
*/
private String displayname;
/**
* 操作日期
*/
private String opDate;
/**
* 浏览器类型
*/
private String browser;
/**
* 操作系统
*/
private String os;
private Integer page;
private Integer size;
}

View File

@@ -0,0 +1,94 @@
package com.insigma.sys.dto;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* @author yinjh
*/
@Data
public class SysOperateLogDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 行为日志ID
*/
private String operatelogid;
/**
* 用户ID
*/
private String userid;
/**
* 登录日志ID
*/
private String logonlogid;
/**
* 登录IP
*/
private String logonip;
/**
* 操作内容
*/
private String operate;
/**
* 请求地址
*/
private String url;
/**
* 开始时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date begintime;
/**
* 结束时间
*/
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date endtime;
/**
* 模块ID
*/
private Long functionid;
/**
* 描述
*/
private String description;
/**
* 登录名
*/
private String logonname;
/**
* 显示名
*/
private String displayname;
/**
* 标题
*/
private String title;
/**
* 操作日期
*/
private String opDate;
private Integer page;
private Integer size;
}

View File

@@ -0,0 +1,109 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 机构 DTO
*
* @author yinjh
*/
@Data
public class SysOrgDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 机构ID
*/
private Long orgid;
/**
* 机构名称
*/
private String orgname;
/**
* 机构代码(即机构的编号,输入的编号)
*/
private String orgentercode;
/**
* 父机构ID
*/
private Long parentid;
/**
* 机构简称
*/
private String shortname;
/**
* 行政区划代码
*/
private String regioncode;
/**
* 机构负责人
*/
private String leader;
/**
* 机构联系人
*/
private String linkman;
/**
* 机构联系电话
*/
private String tel;
/**
* 机构地址
*/
private String orgaddr;
/**
* 机构描述
*/
private String orgdesc;
/**
* 在同一级机构中的序号
*/
private Integer orgorder;
/**
* 机构状态1-有效、0-无效
*/
private String orgstate;
/**
* 主管部门
*/
private String superdept;
/**
* 系统机构编码(自生成的编号)
*/
private String orgautocode;
/**
* 邮政编码
*/
private String zip;
/**
* ID路径
*/
private String idpath;
/**
* 分级
*/
private String rate;
}

View File

@@ -0,0 +1,60 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 角色 DTO
*
* @author yinjh
*/
@Data
public class SysRoleDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 角色ID
*/
private String roleid;
/**
* 角色名称
*/
private String rolename;
/**
* 角色描述
*/
private String roledesc;
/**
* 角色代码
*/
private String rolecode;
/**
* 角色类型1-系统管理员、2-业务操作员
*/
private String roletype;
/**
* 机构ID
*/
private Long orgid;
/**
* 区域ID
*/
private Long areaid;
/**
* 创建人ID
*/
private String creatorid;
}

View File

@@ -0,0 +1,34 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 用户管理区域 DTO
*
* @author yinjh
*/
@Data
public class SysUserAreaDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 关系ID
*/
private String relationId;
/**
* 用户ID
*/
private String userId;
/**
* 区域ID
*/
private String aab301;
}

View File

@@ -0,0 +1,169 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
* 用户 DTO
*
* @author yinjh
*/
@Data
public class SysUserDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
private String userId;
/**
* 登录名
*/
private String logonName;
/**
* 密码
*/
private String passWD;
/**
* 显示名
*/
private String displayName;
/**
* 区域ID
*/
private Long areaId;
/**
* 机构ID
*/
private Long orgId;
/**
* 用户状态1-正常、2-锁定、3-注销
*/
private String userState;
/**
* 用户类型1-超级管理员、2-行政区管理员、3-机构管理员、4-业务操作员
*/
private String userType;
/**
* 证件类型1-身份证、2-军官证、3-户口本、4-护照、5-其他
*/
private String cardType;
/**
* 证件号码
*/
private String cardId;
/**
* 联系电话
*/
private String tel;
/**
* 手机号码
*/
private String mobile;
/**
* 电子邮件
*/
private String eMail;
/**
* 地址
*/
private String userAddr;
/**
* 备注
*/
private String remark;
/**
* 创建人ID
*/
private String creatorId;
/**
* 创建时间
*/
private Date createTime;
/**
* 锁定时间
*/
private Date lockTime;
/**
* 解锁时间
*/
private Date unlockTime;
/**
* 锁定原因
*/
private String lockReason;
/**
* 用户过期时间
*/
private Date userExpireDate;
/**
* 登录失败次数
*/
private Long failNo;
/**
* 密码过期策略1-系统配置周期、2-永不过期、3-指定日期
*/
private String pwExpireType;
/**
* 密码过期日期
*/
private Date pwExpireDate;
/**
* 密码最近修改日期
*/
private Date pwEditDate;
/**
* 用户签到状态1-到、2-退
*/
private String signState;
/**
* 所属部门
*/
private String department;
/**
* 密级0-普通、1-秘密级、2-机密级
*/
private String sLevel;
/**
* hash值
*/
private String hashCode;
private String visible;
private List<SysUserRoleDTO> userRoles;
}

View File

@@ -0,0 +1,39 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* 用户角色 DTO
*
* @author yinjh
*/
@Data
public class SysUserRoleDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 关系ID
*/
private String relationId;
/**
* 用户ID
*/
private String userId;
/**
* 角色ID
*/
private String roleId;
/**
* 是否可分配权限
*/
private String dispatchAuth;
}

View File

@@ -0,0 +1,36 @@
package com.insigma.sys.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 树节点对象
*
* @author jinw
*/
@Data
public class TreeNode<T> implements Serializable {
/**
* 节点ID
*/
private T id;
/**
* 节点名称
*/
private String label;
/**
* 子节点列表
*/
private List<TreeNode<T>> children;
/**
* 父节点ID
*/
private T parent;
}

View File

@@ -0,0 +1,71 @@
package com.insigma.sys.mapper;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.persistence.mybatis.plus.BaseDAO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* SysFunctionMapper
*
* @author yinjh
*/
@Mapper
public interface SysFunctionMapper extends BaseDAO<SysFunction> {
@Select("""
<script>
SELECT DISTINCT s.*
FROM sysfunction s
JOIN sysrolefunction sr ON s.functionid = sr.functionid
WHERE s.nodetype &lt;&gt; '3'
AND s.active = '1'
AND sr.roleid IN
<foreach item="roleId" collection="roleIds" open="(" separator="," close=")">
#{roleId}
</foreach>
ORDER BY s.funorder
</script>
""")
List<SysFunction> getMenuList(@Param("roleIds") List<String> roleIds);
@Select("""
SELECT s.*
FROM sysfunction s
WHERE (s.funtype = #{funType} OR s.funtype = '0')
AND s.active = '1'
AND (s.auflag <> '1' OR s.auflag IS NULL)
ORDER BY s.funorder
""")
List<SysFunction> findTreesByFunTypeAndActive(@Param("funType") String funType);
@Select("""
SELECT DISTINCT s.funcode
FROM sysfunction s
WHERE s.nodetype = '3'
AND s.active = '1'
AND s.parentid = #{parentId}
AND s.funcode IS NOT NULL
""")
List<String> getAllButtonAuthList(@Param("parentId") Long parentId);
@Select("""
<script>
SELECT DISTINCT s.funcode
FROM sysfunction s
JOIN sysrolefunction sr ON s.functionid = sr.functionid
WHERE s.nodetype = '3'
AND s.active = '1'
AND sr.roleid IN
<foreach item="roleId" collection="roleIds" open="(" separator="," close=")">
#{roleId}
</foreach>
AND s.parentid = #{parentId}
AND s.funcode IS NOT NULL
</script>
""")
List<String> getButtonAuthList(@Param("roleIds") List<String> roleIds, @Param("parentId") Long parentId);
}

View File

@@ -0,0 +1,29 @@
package com.insigma.sys.mapper;
import com.insigma.framework.domain.core.entity.SysRoleFunction;
import com.insigma.framework.persistence.mybatis.plus.BaseDAO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* SysRoleFunctionMapper
*
* @author yinjh
*/
@Mapper
public interface SysRoleFunctionMapper extends BaseDAO<SysRoleFunction> {
@Select("""
SELECT srf.functionid
FROM sysrolefunction srf
JOIN sysfunction sf ON srf.functionid = sf.functionid
WHERE sf.active = '1'
AND sf.nodetype <> '1'
AND srf.roleid = #{roleId}
""")
List<Long> queryFunctionIdsByRoleId(@Param("roleId") String roleId);
}

View File

@@ -0,0 +1,31 @@
package com.insigma.sys.mapper;
import com.insigma.framework.domain.core.entity.SysRole;
import com.insigma.framework.persistence.mybatis.plus.BaseDAO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* SysRoleMapper
*
* @author yinjh
*/
@Mapper
public interface SysRoleMapper extends BaseDAO<SysRole> {
@Select("""
SELECT * FROM sysrole r
WHERE r.creatorid = #{userId}
OR EXISTS (
SELECT 1
FROM sysuserrole sur
WHERE sur.roleid = r.roleid
AND sur.userid = #{userId}
)
""")
List<SysRole> queryRoleByUserId(@Param("userId") String userId);
}

View File

@@ -0,0 +1,16 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.Aa01BaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.Aa01DTO;
/**
* @author yinjh
* @version 2022/10/17
* @since 2.7.0
*/
public interface Aa01Service extends Aa01BaseService {
PageInfo<Aa01DTO> query(String aaa001, String aaa002, Integer page, Integer size);
void save(Aa01DTO aa01DTO, boolean isUpdate);
}

View File

@@ -0,0 +1,18 @@
package com.insigma.sys.service;
import com.insigma.framework.core.exception.AppException;
import com.insigma.framework.domain.core.service.Aa10BaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.Aa10DTO;
/**
* Created by yinjh on 2019/1/9.
*/
public interface Aa10Service extends Aa10BaseService {
PageInfo<Aa10DTO> query(String aaa100, String aaa103, Integer page, Integer size);
void saveCode(Aa10DTO aa10DTO);
void deleteCode(Long aaz093) throws AppException;
}

View File

@@ -0,0 +1,12 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.Aa26BaseService;
/**
* Aa26 服务接口
*
* @author yinjh
*/
public interface Aa26Service extends Aa26BaseService {
}

View File

@@ -0,0 +1,15 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.entity.SysHoliday;
import com.insigma.framework.domain.core.service.SysHolidayBaseService;
import java.util.List;
/**
* 节假日维护服务接口
*
* @author yinjh
*/
public interface HolidayService extends SysHolidayBaseService {
List<SysHoliday> getWeekdays(int year);
}

View File

@@ -0,0 +1,94 @@
package com.insigma.sys.service;
import com.alibaba.fastjson2.JSONObject;
import com.insigma.sys.dto.MonitorCentersDTO;
import java.util.List;
import java.util.Map;
/**
* @author GH
* @ClassName: MonitorCentersService
* @Description:
* @version 2021/12/7 15:28
*/
public interface MonitorCentersService {
/**
* 查询应用数据源信息
*
* @return
*/
JSONObject querServiceDataSouce(MonitorCentersDTO monitorCentersDTO);
/**
* 查询应用SQL监控列表
*
* @return
*/
JSONObject querServiceDataSqlList(MonitorCentersDTO monitorCentersDTO);
/**
* 查询WBEAPP监控信息
*
* @return
*/
JSONObject querServiceWebApp(MonitorCentersDTO monitorCentersDTO);
/**
* 查询应用URI监控列表
*
* @return
*/
JSONObject querServiceDataUriList(MonitorCentersDTO monitorCentersDTO);
/**
* 查询应用Session监控列表
*
* @return
*/
JSONObject querServiceDataSessionList(MonitorCentersDTO monitorCentersDTO);
/**
* 查询每个应用下对应的实例IP
*
* @return
*/
JSONObject querServiceIp(MonitorCentersDTO monitorCentersDTO);
/**
* 清理全部监控数据
*
* @return
*/
JSONObject clearAllMonitorData();
/**
* 清理对应的监控数据
*
* @return
*/
JSONObject clearOneServiceData(MonitorCentersDTO monitorCentersDTO);
/**
* 获取报告数据
*
* @return
*/
JSONObject getReportData(MonitorCentersDTO monitorCentersDTO);
/**
* 获取报告详细数据
*
* @return
*/
Map<String, Object> getReportDetailedData(MonitorCentersDTO monitorCentersDTO);
/**
* 下载历史数据
*
* @return
*/
List<Map> getDataExport(String appName);
}

View File

@@ -0,0 +1,13 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.ScmSafetyFilterLogBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SafetyFilterLogDTO;
/**
* @author yinjh
* @since 2025/1/21
*/
public interface SafetyFilterLogService extends ScmSafetyFilterLogBaseService {
PageInfo<SafetyFilterLogDTO> query(SafetyFilterLogDTO safetyFilterLogDTO);
}

View File

@@ -0,0 +1,9 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysAppAddressBaseService;
/**
* @author yinjh
*/
public interface SysAppAddressService extends SysAppAddressBaseService {
}

View File

@@ -0,0 +1,35 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysAppBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SysAppAddressDTO;
import com.insigma.sys.dto.SysAppDTO;
import java.util.List;
/**
* @author GH
* @version 2022/3/28
* @since 2.6.5
*/
public interface SysAppService extends SysAppBaseService {
PageInfo<SysAppDTO> pageQuery(SysAppDTO queryDTO, Integer page, Integer size);
void saveSysApp(SysAppDTO sysAppDTO, List<SysAppAddressDTO> sysAppAddressDTOList);
SysAppDTO querySysApp(String appid);
List<SysAppAddressDTO> querySysAddressDTO(String appid);
void deleteSysApp(String appid);
void deleteSysAppAddress(String addressId);
void toActiveSysApp(String appid);
void toNotActiveSysApp(String appid);
List<SysAppDTO> querySysAppDTO();
boolean selectAppCode(String appCode);
}

View File

@@ -0,0 +1,20 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysDownloadCenterBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SysDownloadCenterDTO;
/**
* @author GH
* @ClassName: SysDownloadCenterService
* @Description:
* @version 2021/8/4 10:15
*/
public interface SysDownloadCenterService extends SysDownloadCenterBaseService {
PageInfo<SysDownloadCenterDTO> queryDownloadCenterList(SysDownloadCenterDTO queryDTO, Integer page, Integer size);
void saveDownloadCenter(SysDownloadCenterDTO sysDownloadCenterDTO);
void saveDownloadLog(String id, String logonName);
}

View File

@@ -0,0 +1,9 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysDownloadLogBaseService;
/**
* @author yinjh
*/
public interface SysDownloadLogService extends SysDownloadLogBaseService {
}

View File

@@ -0,0 +1,19 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.entity.SysError;
import com.insigma.framework.domain.core.service.SysErrorBaseService;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public interface SysErrorService extends SysErrorBaseService {
List<SysError> queryAllErrors();
List<SysError> findAllBySome(String serviceName, String functionName, String errorCode);
void save(SysError sysError);
void deleteError(SysError sysError);
SysError getSysErrorBean(Map<String, HashMap<String, String>> map);
SysError getSysErrorBean2(Map<String, String> map);
SysError getSysErrorBean1(Map<String, HashMap<String, String>> map);
boolean queryByErrCode(String code);
}

View File

@@ -0,0 +1,10 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysFeedbackAnswerBaseService;
/**
* @author yinjh
* @since 2025/1/20
*/
public interface SysFeedbackAnswerService extends SysFeedbackAnswerBaseService {
}

View File

@@ -0,0 +1,22 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysFeedbackBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.FeedbackAnswerDTO;
import com.insigma.sys.dto.FeedbackDTO;
import java.sql.SQLException;
/**
* @author yinjh
* @version 2022/2/23
*/
public interface SysFeedbackService extends SysFeedbackBaseService {
PageInfo<FeedbackDTO> page(FeedbackDTO queryDTO, Integer page, Integer size) throws SQLException;
void save(FeedbackDTO feedbackDTO);
FeedbackDTO get(String id);
void saveAnswer(FeedbackAnswerDTO feedbackAnswerDTO);
}

View File

@@ -0,0 +1,11 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysFunctionDocBaseService;
import com.insigma.sys.dto.SysFunctionDocDTO;
public interface SysFunctionDocService extends SysFunctionDocBaseService {
void saveDoc(SysFunctionDocDTO sysFunctionDocDTO);
SysFunctionDocDTO queryByFunctionID(Long functionid);
void deleteByFunctionid(Long functionid);
}

View File

@@ -0,0 +1,36 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.entity.SysFunction;
import com.insigma.framework.domain.core.entity.SysUser;
import com.insigma.framework.domain.core.service.SysFunctionBaseService;
import com.insigma.sys.dto.MenuDTO;
import java.util.List;
import java.util.Map;
public interface SysFunctionService extends SysFunctionBaseService {
List<MenuDTO> queryAllMenu();
void save(SysFunction sysFunction);
void update(SysFunction sysFunction);
boolean findFunctionRoles(SysFunction sysFunction);
List<MenuDTO> getMenuList(SysUser user);
//将pagedata转化为SysFunctionbean
SysFunction getSysFunctionBean(Map<String, Object> map);
//判断location是否存在
boolean isManyLocations(SysFunction sysFunction);
List<MenuDTO> queryMenuByFuntypeAndActive(String funtype);
List<String> getButtonAuthList(SysUser sysUser, String location);
//更新排序
String updateNodeOrder(MenuDTO nodeBy,MenuDTO nodeTo);
}

View File

@@ -0,0 +1,10 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysGuideHotBaseService;
/**
* @author yinjh
* @since 2025/1/20
*/
public interface SysGuideHotService extends SysGuideHotBaseService {
}

View File

@@ -0,0 +1,29 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysGuideBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SysGuideDTO;
import java.util.HashMap;
import java.util.List;
public interface SysGuideService extends SysGuideBaseService {
PageInfo<SysGuideDTO> queryGuideList(SysGuideDTO queryDTO, Integer page, Integer size);
SysGuideDTO queryGuide(String id);
void delete(String id);
void deleteGuides( List<SysGuideDTO> list);
void saveGuide(SysGuideDTO sysGuideDTO);
void hot(String id);
PageInfo<SysGuideDTO> findByQuestion_type(String question_type, String sort, String str, Integer page, Integer size);
List<HashMap<String, Object>> findFrontPage();
SysGuideDTO findDetailsPage(String id);
}

View File

@@ -0,0 +1,10 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysGuideTypeBaseService;
/**
* @author yinjh
* @since 2025/1/20
*/
public interface SysGuideTypeService extends SysGuideTypeBaseService {
}

View File

@@ -0,0 +1,15 @@
package com.insigma.sys.service;
import java.util.List;
/**
* @author yinjh
* @version 2021/8/19
*/
public interface SysHashService {
void saveHash(Object entity);
void saveAllHash(List<?> entities);
boolean checkHash(Object entity);
}

View File

@@ -0,0 +1,11 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.entity.SysIdMapping;
import com.insigma.framework.domain.core.service.SysIdMappingBaseService;
public interface SysIdMappingService extends SysIdMappingBaseService {
/**
* 保存用户组织两者id
*/
void saveGroupidToOrgid(SysIdMapping sysIdMapping);
}

View File

@@ -0,0 +1,23 @@
package com.insigma.sys.service;
import com.insigma.framework.domain.core.service.SysLogonLogBaseService;
import com.insigma.framework.persistence.core.jdbc.PageInfo;
import com.insigma.sys.dto.SysLogonLogDTO;
import java.sql.SQLException;
/**
* fukq 2020/6/2
*/
public interface SysLogonLogService extends SysLogonLogBaseService {
/**
* 分页查询登录日志
* @param queryDTO
* @param page
* @param size
* @return
* @throws SQLException
*/
PageInfo<SysLogonLogDTO> querySysLogonList(SysLogonLogDTO queryDTO, Integer page, Integer size);
}

Some files were not shown because too many files have changed in this diff Show More