diff --git a/README.md b/README.md deleted file mode 100644 index e69de29..0000000 diff --git a/template/.devcontainer/devcontainer.json b/template/.devcontainer/devcontainer.json new file mode 100644 index 0000000..10f1066 --- /dev/null +++ b/template/.devcontainer/devcontainer.json @@ -0,0 +1,44 @@ +{ + "name": "devcontainer", + "image": "registry.cn-hangzhou.aliyuncs.com/zeroware/devcontainer:latest", + "runArgs": ["--name", "${localWorkspaceFolderBasename}_devcontainer", "--env-file",".env"], + "forwardPorts": [ + 8080 + ], + "postStartCommand": "git config --global --add safe.directory ${containerWorkspaceFolder}", + "containerUser": "ubuntu", + "remoteUser": "ubuntu", + "containerEnv": { + "HOME": "/home/ubuntu" + }, + "remoteEnv": { + "HOME": "/home/ubuntu" + }, + "updateRemoteUserUID": true, + "mounts": [ + { + "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.m2/repository", + "target": "/home/ubuntu/.m2/repository", + "type": "bind" + }, + { + "source": "${localEnv:HOME}${localEnv:USERPROFILE}/.ssh", + "target": "/home/ubuntu/.ssh", + "type": "bind" + } + ], + "customizations": { + // Configure properties specific to VS Code. + "vscode": { + // Set *default* container specific settings.json values on container create. + "extensions": [ + "vscjava.vscode-java-dependency", + "vscjava.vscode-maven", + "vscjava.vscode-java-test", + "vscjava.vscode-java-debug", + "vscjava.vscode-java-pack", + "esbenp.prettier-vscode" + ] + } + } + } diff --git a/template/.env b/template/.env new file mode 100644 index 0000000..7aa7206 --- /dev/null +++ b/template/.env @@ -0,0 +1,12 @@ +DB_HOST=116.63.207.117:13306 + +ROCKETMQ_HOST=116.63.207.117:19876 + +OPENSEARCH_HOST=116.63.207.117:19200 +OPENSEARCH_PASSWORD=UW15/xI9CRFfAexPJWWZ6g + +XXL_JOB_ADMIN_ADDRESS=https://xxljob.byteawake.com/xxl-job-admin +XXL_JOB_ADMIN_PASSWORD=7t/IbuxDLIU + +REDIS_HOST=116.63.207.117:16379 +REDIS_PASSWORD=9P7Alc4bicS/rC992aO45Q diff --git a/template/.gitignore b/template/.gitignore new file mode 100644 index 0000000..a300369 --- /dev/null +++ b/template/.gitignore @@ -0,0 +1,33 @@ +## java +bin/ +classes/ + + +## eclipse +.settings/ +.classpath +.project + +## idea +*.iml +.idea/** +HELP.md +!.idea/dataSources.xml + +## vscode +.vscode/ +.factorypath + +## maven: +target/ +test-output/ + +## system +.DS_Store +logs/ +*.log + +## vs +.vs +modules/** +!modules/.gitkeep diff --git a/template/.gitlab-ci.yml b/template/.gitlab-ci.yml new file mode 100644 index 0000000..e3eedf3 --- /dev/null +++ b/template/.gitlab-ci.yml @@ -0,0 +1,4 @@ +include: + - project: 'internal/gitlab-ci-template' + ref: master + file: '/vs-server-generate-ci.yml' diff --git a/template/.idea/dataSources.xml b/template/.idea/dataSources.xml new file mode 100644 index 0000000..5791137 --- /dev/null +++ b/template/.idea/dataSources.xml @@ -0,0 +1,16 @@ + + + + + mysql.8 + true +{{- if eq .dbType "mysql" }} + com.mysql.cj.jdbc.Driver +{{- else if eq .dbType "postgresql" }} + org.postgresql.Driver +{{- end }} + jdbc:{{ .dbType }}://{{ .db_address }}/{{ .db_database }} + $ProjectFileDir$ + + + diff --git a/template/.mvn/jvm.config b/template/.mvn/jvm.config new file mode 100644 index 0000000..f432c96 --- /dev/null +++ b/template/.mvn/jvm.config @@ -0,0 +1 @@ +-Xmx1536m \ No newline at end of file diff --git a/template/.mvn/wrapper/maven-wrapper.jar b/template/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000..cb28b0e Binary files /dev/null and b/template/.mvn/wrapper/maven-wrapper.jar differ diff --git a/template/.mvn/wrapper/maven-wrapper.properties b/template/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000..95d441b --- /dev/null +++ b/template/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,20 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +distributionUrl=https://maven.aliyun.com/repository/public/org/apache/maven/apache-maven/3.9.5/apache-maven-3.9.5-bin.zip +distributionSha256Sum=7822eb593d29558d8edf87845a2c47e36e2a89d17a84cd2390824633214ed423 +wrapperUrl=https://maven.aliyun.com/repository/public/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar +wrapperUrlSha256Sum=e63a53cfb9c4d291ebe3c2b0edacb7622bbc480326beaa5a0456e412f52f066a diff --git a/template/.values.yml b/template/.values.yml new file mode 100644 index 0000000..106909e --- /dev/null +++ b/template/.values.yml @@ -0,0 +1 @@ +{{ toYaml . }} diff --git a/template/Dockerfile b/template/Dockerfile new file mode 100644 index 0000000..dde693a --- /dev/null +++ b/template/Dockerfile @@ -0,0 +1,21 @@ +# syntax=registry.cn-hangzhou.aliyuncs.com/imageacc/dockerfile:experimental +FROM registry.cn-hangzhou.aliyuncs.com/zeroware/javaapp-builder:latest as builder +WORKDIR source +COPY ./ ./ +ARG JAR_FILE=entrance/web/target/*.jar +RUN --mount=type=cache,target=/root/.m2/repository,rw --mount=type=tmpfs,target=/root/.m2/repository/{{ .groupId | replace "." "/" }} mvnd clean package -Dmaven.test.skip=true +RUN cp ${JAR_FILE} app.jar +RUN java -Djarmode=layertools -jar ./app.jar extract + +FROM registry.cn-hangzhou.aliyuncs.com/zeroware/openjdk-17:latest +WORKDIR /application +RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN echo 'Asia/Shanghai' >/etc/timezone +RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list +COPY --from=builder source/dependencies/ ./ +COPY --from=builder source/snapshot-dependencies/ ./ +COPY --from=builder source/spring-boot-loader/ ./ +COPY --from=builder source/application/ ./ +ENV JAVA_OPTS="-Xms512m -Xmx512m" +ENV MAIN_CLASS="org.springframework.boot.loader.JarLauncher" +ENTRYPOINT ["sh", "-c", "exec java ${JAVA_OPTS} -Djava.security.egd=file:dev/./urandom ${MAIN_CLASS}"] diff --git a/template/devfile.yaml b/template/devfile.yaml new file mode 100644 index 0000000..2f266a3 --- /dev/null +++ b/template/devfile.yaml @@ -0,0 +1,34 @@ +schemaVersion: 2.2.0 + +metadata: + name: {{ .projectName }} + +components: + - name: tools + container: + image: registry.cn-hangzhou.aliyuncs.com/zeroware/devcontainer:latest + memoryLimit: 4Gi + + endpoints: + - name: http + exposure: public + protocol: http + targetPort: 8080 + + - name: ssh-service + kubernetes: + deployByDefault: true + inlined: | + apiVersion: v1 + kind: Service + metadata: + name: {{ .projectName }}-ssh + spec: + ports: + - name: ssh + port: 22222 + protocol: TCP + targetPort: 22222 + selector: + controller.devfile.io/devworkspace_name: {{ .projectName }} + type: NodePort diff --git a/template/environment.yml b/template/environment.yml new file mode 100644 index 0000000..2153344 --- /dev/null +++ b/template/environment.yml @@ -0,0 +1,42 @@ +groupId: {{ .groupId }} +artifactId: {{ .artifactId }} +projectName: {{ .projectName }} +applicationName: {{ .applicationName }} +branchName: {{ .branchName }} +clusterName: {{ .clusterName }} +version: {{ .version }} +dbType: {{ .dbType }} +__package: {{ .package }} +__packagePath: {{ .packagePath }} +__resources: + db: + address: {{ .db_address }} + database: {{ .db_database }} + username: {{ .db_username }} + password: {{ .db_password }} + rocketmq: + address: {{ .rocketmq_address }} + topic: {{ .rocketmq_topic }} + consumerGroup: {{ .rocketmq_consumerGroup }} + producerGroup: {{ .rocketmq_producerGroup }} + elasticsearch: + host: {{ .elasticsearch_host }} + port: {{ .elasticsearch_port }} + scheme: {{ .elasticsearch_scheme }} + username: {{ .elasticsearch_username }} + password: {{ .elasticsearch_password }} + xxljob: + address: {{ .xxljob_address }} + username: {{ .xxljob_username }} + password: {{ .xxljob_password }} + accessToken: {{ .xxljob_accessToken }} + redis: + address: {{ .redis_address }} + password: {{ .redis_password }} + maxTotal: {{ .redis_maxTotal }} + maxIdle: {{ .redis_maxIdle }} + minIdle: {{ .redis_minIdle }} +__platforms: + git_url: {{ .git_url }} + git_ssh_url: {{ .git_ssh_url }} + freeway_url: {{ .freeway_url }} diff --git a/template/insiis-web/pom.xml b/template/insiis-web/pom.xml new file mode 100644 index 0000000..94e4fc6 --- /dev/null +++ b/template/insiis-web/pom.xml @@ -0,0 +1,444 @@ + + + 4.0.0 + + insiis-web + com.insigma + 1.1.1-SNAPSHOT + jar + + insiis-web + Web project for Insiis7 + + + com.insigma + insiis7 + ${revision} + + + 7.0.0-SNAPSHOT + 1.2 + 1.0.8 + 12.2.0.1 + 8.0.31 + 8.6.0 + 2.4.0 + 42.5.6 + UTF-8 + 11 + 11 + 4.12 + 1.2.2 + 1.2.0 + 1.0-SNAPSHOT + 1.18.20 + 1.3.2 + 1.2.3 + 1.0-SNAPSHOT + 5.2.4 + 1.3.0-SNAPSHOT + 1.0.0-SNAPSHOT + 1.0.0-SNAPSHOT + 1.0.0-SNAPSHOT + 5.5.7.Final + 1.0-SNAPSHOT + 5.7.4 + 1.0.0-SNAPSHOT + 2.2 + 7.3.1 + 1.2.2 + + + + + cn.hutool + hutool-all + ${cn.hutool.all} + + + javax.persistence + javax.persistence-api + ${javax.persistence-api} + + + org.hibernate + hibernate-core + ${org.hibernate.core} + + + com.vs + ox-bo-common + ${vs.bo.common} + + + org.springframework.boot + spring-boot-dependencies + 2.6.2 + pom + import + + + junit + junit + ${junit.version} + test + + + com.vs + dist + ${dist.version} + + + org.projectlombok + lombok + ${lombok.version} + + + javax.annotation + javax.annotation-api + ${javax.annotation.api.version} + + + ch.qos.logback + logback-classic + ${logback.classic.version} + + + com.vs + ox-basidc-common + ${ox.basidc.common} + + + org.flywaydb + flyway-core + ${flyway.version} + + + com.vs + common-rpc + ${vs.common.rpc.version} + + + com.vs + vs-sqlmapper-spring + ${vs.sqlmapper.spring} + + + com.vs + vs-elasticsearch + ${vs.elasticsearch.version} + + + com.vs + vs-mock-web + ${vs.mock.spring} + + + com.vs + vs-debug-agent + ${vs.debug.version} + + + com.vs + vs-debug-plugin + ${vs.debug.version} + + + com.vs + vs.common.util + ${vs.common.util.version} + + + + + + org.springframework.boot + spring-boot-starter-test + + + com.vs + ox-bo-common + ${vs.bo.common} + + + com.vs + common-rpc + ${vs.common.rpc.version} + + + com.insigma + insiis-encryptor + 1.2.0-SNAPSHOT + + + com.insigma + insiis-core + ${revision} + + + com.insigma + insiis-commons + ${revision} + + + com.insigma + insiis-securities + ${revision} + + + com.insigma + insiis-web-support + ${revision} + + + com.insigma + insiis-scheduler + ${revision} + + + com.insigma + insiis-dfs + ${revision} + + + cn.ctyun + oos-sdk + + + + + com.insigma + insiis-export-queue + ${revision} + + + com.insigma + ucenter-sdk + ${ucenter-sdk.version} + + + com.vs + common-rpc + 1.3.0-SNAPSHOT + + + com.vs + vs-sqlmapper-spring + + + + com.epsoft.isp + isp-assist-client + 5.0.5 + + + com.github.danielwegener + logback-kafka-appender + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + org.springframework.cloud + spring-cloud-sleuth-zipkin + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + + + com.oracle.jdbc + ojdbc8 + ${oracle.version} + + + mysql + mysql-connector-java + ${mysql.version} + + + com.oceanbase + oceanbase-client + ${oceanbase.version} + + + com.google.guava + guava + + + + + cn.com.kingbase + kingbase8 + ${kingbase8.version} + + + + org.postgresql + postgresql + ${postgresql.version} + + + + + org.apache.commons + commons-lang3 + + + org.mohrss.leaf + leaf-core-framework + ${leaf-framework.version} + + + mybatis-plus-annotation + com.baomidou + + + org.codehaus.jackson + jackson-mapper-asl + + + + + org.mohrss.leaf + leaf-uni-common + ${leaf-framework.version} + + + org.apache.poi + poi-ooxml + + + org.apache.poi + poi + + + com.alibaba + fastjson + + + + + com.insigma + odin-est + ${odin-est.version} + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.baomidou + mybatis-plus-generator + ${mybaits-plus.version} + provided + + + + + org.yaml + snakeyaml + 2.2 + + + com.google.guava + guava + 32.1.3-jre + + + + commons-fileupload + commons-fileupload + 1.5 + + + org.codehaus.jettison + jettison + 1.5.4 + + + com.thoughtworks.xstream + xstream + 1.4.20 + + + com.fasterxml.woodstox + woodstox-core + 6.5.1 + + + + com.insigma + insiis-data-firewall + 1.0.0-SNAPSHOT + + + + com.demoyjh + demo_person-entrance-web + 3.0-SNAPSHOT + + + com.demoyjh + demo_person-entrance-rpc + 3.0-SNAPSHOT + + + org.springframework + spring-web + + + + + + insiis7 + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + true + + + + + + + diff --git a/template/insiis-web/src/main/java/com/insigma/InsiisWebApplication.java b/template/insiis-web/src/main/java/com/insigma/InsiisWebApplication.java new file mode 100644 index 0000000..b983b09 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/InsiisWebApplication.java @@ -0,0 +1,29 @@ +package com.insigma; + +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.vs.sqlmapper.spring.scan.VSDaoBeanScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Import; + +@EnableDiscoveryClient +@EnableFeignClients +@SpringBootApplication(scanBasePackages = {"{{.groupId}}", "com.vs","com.insigma"}) +@VSDaoBeanScan(basePackages = {"com.vs","{{.groupId}}"}) +@Import({DataSourceConfig.class,com.vs.sqlmapper.spring.DataSourceConfig.class}) +public class InsiisWebApplication extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(InsiisWebApplication.class, args); + } + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { + return builder.sources(InsiisWebApplication.class); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/common/controller/CommonSearchController.java b/template/insiis-web/src/main/java/com/insigma/business/common/controller/CommonSearchController.java new file mode 100644 index 0000000..e173a4e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/common/controller/CommonSearchController.java @@ -0,0 +1,46 @@ +package com.insigma.business.common.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.repository.SysUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.*; +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/6/15 + * @since 2.6.5 + */ +@RestController +@RequestMapping("/common/search") +public class CommonSearchController { + + @Autowired + private SysUserRepository sysUserRepository; + + @PostMapping("/person") + public ResponseMessage personSearch(@RequestBody JSONObject jsonObject) { + String keyWord = jsonObject.getString("keyWord"); + Integer page = jsonObject.getInteger("page"); + Integer size = jsonObject.getInteger("size"); + SysUser params = new SysUser(); + params.setLogonName(keyWord); + page = page < 0 ? 0 : page; + Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Order.asc("logonName"))); + + ExampleMatcher matcher = ExampleMatcher.matching() + .withMatcher("logonName", ExampleMatcher.GenericPropertyMatchers.contains()); + Page p = sysUserRepository.findAll(Example.of(params, matcher), pageable); + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setTotal(p.getTotalElements()); + pageInfo.setData(p.getContent()); + return ResponseMessage.ok(pageInfo); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/blo/DemoPersonBLO.java b/template/insiis-web/src/main/java/com/insigma/business/demo/blo/DemoPersonBLO.java new file mode 100644 index 0000000..bd7549b --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/blo/DemoPersonBLO.java @@ -0,0 +1,26 @@ +package com.insigma.business.demo.blo; + +import com.insigma.business.demo.dto.DemoPersonDTO; +import com.insigma.framework.db.PageInfo; +import org.mohrss.leaf.core.framework.domain.blo.IBLO; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/3/12 + */ +public interface DemoPersonBLO extends IBLO { + + DemoPersonDTO queryPerson(String id); + + void deletePersons(List ids); + + void savePerson(DemoPersonDTO demoPersonDTO); + + PageInfo queryPersonList(DemoPersonDTO queryDTO, Integer page, Integer size); + + DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO); + + PageInfo queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size); +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/blo/impl/DemoPersonBLOImpl.java b/template/insiis-web/src/main/java/com/insigma/business/demo/blo/impl/DemoPersonBLOImpl.java new file mode 100644 index 0000000..5fcc4c1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/blo/impl/DemoPersonBLOImpl.java @@ -0,0 +1,148 @@ +package com.insigma.business.demo.blo.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.blo.DemoPersonBLO; +import com.insigma.business.demo.dao.DemoPersonDAO; +import com.insigma.business.demo.dto.DemoPersonDTO; +import com.insigma.business.demo.entity.DemoPerson; +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.framework.util.IDUtil; +import com.insigma.web.support.util.SysFunctionManager; +import lombok.SneakyThrows; +import org.mohrss.leaf.uni.common.domain.blo.impl.BLOImpl; +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 + * @version 2021/3/12 + */ +@Service +public class DemoPersonBLOImpl extends BLOImpl implements DemoPersonBLO { + + @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 ids) { + demoPersonDAO.deleteBatchIds(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(); + } else { + id = demoPersonDTO.getId(); + } + dp.setId(id); + dp.setCreate_time(new Date()); +// HList hList = new HList(JSON.parseObject(JSON.toJSONString(dp))); +// hList.setNVarchar2Columns("address"); +// hList.save("demo_person", "address;name", "id", HList.SAVEMODE_INSERT_OR_UPDATE); + demoPersonDAO.insertOrUpdate(dp); + } + + @SneakyThrows + @Override + public PageInfo 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 wrapper = new QueryWrapper().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 dpPage = new Page<>(page, size); + + IPage mapIPage = demoPersonDAO.page(dpPage, wrapper); + List records = mapIPage.getRecords(); + List list = DtoEntityUtil.trans(records, DemoPersonDTO.class); + + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setTotal(mapIPage.getTotal()); + pageInfo.setData(list); + return pageInfo; + } + + @Override + public DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO) { + LambdaQueryWrapper wrapper = new QueryWrapper().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 queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size) { + Map params = new HashMap<>(); + StringBuffer sql = new StringBuffer("select * from demo_person where 1=1 "); + if (!ObjectUtils.isEmpty(queryDTO.getName())) { + sql.append(" and name like :name"); + params.put("name", "%" + queryDTO.getName() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getSex())) { + sql.append(" and sex = :sex"); + params.put("sex", queryDTO.getSex()); + } + 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(" and 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); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/DemoPersonBPO.java b/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/DemoPersonBPO.java new file mode 100644 index 0000000..82008bc --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/DemoPersonBPO.java @@ -0,0 +1,27 @@ +package com.insigma.business.demo.bpo; + +import com.insigma.business.demo.dto.DemoPersonDTO; +import com.insigma.framework.db.PageInfo; +import org.mohrss.leaf.core.framework.domain.bpo.IBPO; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/3/12 + */ +public interface DemoPersonBPO extends IBPO { + + DemoPersonDTO queryPerson(String id); + + void deletePersons(List ids); + + void savePerson(DemoPersonDTO demoPersonDTO); + + PageInfo queryPersonList(DemoPersonDTO queryDTO, Integer page, Integer size); + + + DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO); + + PageInfo queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size); +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/impl/DemoPersonBPOImpl.java b/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/impl/DemoPersonBPOImpl.java new file mode 100644 index 0000000..4637aad --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/bpo/impl/DemoPersonBPOImpl.java @@ -0,0 +1,56 @@ +package com.insigma.business.demo.bpo.impl; + +import com.insigma.business.demo.blo.DemoPersonBLO; +import com.insigma.business.demo.bpo.DemoPersonBPO; +import com.insigma.business.demo.dto.DemoPersonDTO; +import com.insigma.framework.db.PageInfo; +import org.mohrss.leaf.uni.common.domain.bpo.impl.BPOImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/3/12 + */ +@Service +public class DemoPersonBPOImpl extends BPOImpl implements DemoPersonBPO { + + @Autowired + private DemoPersonBLO demoPersonBLO; + + @Override + public DemoPersonDTO queryPerson(String id) { + DemoPersonDTO demoPersonDTO = demoPersonBLO.queryPerson(id); + return demoPersonDTO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deletePersons(List ids) { + demoPersonBLO.deletePersons(ids); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void savePerson(DemoPersonDTO demoPersonDTO) { + demoPersonBLO.savePerson(demoPersonDTO); + } + + @Override + public PageInfo queryPersonList(DemoPersonDTO queryDTO, Integer page, Integer size) { + return demoPersonBLO.queryPersonList(queryDTO, page, size); + } + + @Override + public DemoPersonDTO selectOne(DemoPersonDTO demoPersonDTO) { + return demoPersonBLO.selectOne(demoPersonDTO); + } + + @Override + public PageInfo queryPersonListByExport(DemoPersonDTO queryDTO, Integer page, Integer size) { + return demoPersonBLO.queryPersonListByExport(queryDTO, page, size); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/controller/DemoPersonController.java b/template/insiis-web/src/main/java/com/insigma/business/demo/controller/DemoPersonController.java new file mode 100644 index 0000000..9900f18 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/controller/DemoPersonController.java @@ -0,0 +1,138 @@ +package com.insigma.business.demo.controller; + +import com.insigma.business.demo.bpo.DemoPersonBPO; +import com.insigma.business.demo.dto.DemoPersonDTO; +import com.insigma.framework.ResponseMessage; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.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 + *

+ * 实体类传参开发方式,需继承BaseController,并且需要实体类传参的方法上加上@OdinRequest + * 在doInit方法上需要加上注解@OdinRequest(init = true),init = true为初始化字典数据和模块信息,其他方法上只需加@OdinRequest即可,不需要参数 + * 方法参数如果不指定@OdinRequestParam注解,则按照参数名去取前端传过来的数据,并将其转化成实体类 + * 如果指定了@OdinRequestParam注解,并且设定了value值,则根据value值去取前端传过来的数据 + * 其中@OdinRequestParam参数required默认为true,即如果找不到对应的数据,则返回错误,当设置成false,则不会 + * 如果需要接收前端传过来的表格数据,则可以通过定义PageInfo来接收数据 + * + * @author yinjh + * @since 2020-05-28 + */ +@RestController +@RequestMapping("/business/demo/DemoPerson") +public class DemoPersonController extends BaseController { + + @Autowired + private DemoPersonBPO demoPersonBPO; + + @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 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 = demoPersonBPO.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 list = this.getCheckedTableData("t_tableData", DemoPersonDTO.class); + if (list.size() == 0) { + return this.error("请勾选需要删除的人员!"); + } + List ids = list.stream().map(o -> o.getId()).collect(Collectors.toList()); + demoPersonBPO.deletePersons(ids); +// this.refresh(); + return this.ok("删除成功!"); + } + + @OdinRequest(refresh = true) // refresh = true 请求结束后刷新页面 + @PostMapping("/delete") + public ResponseMessage delete(String id) { + List ids = Arrays.asList(id); + demoPersonBPO.deletePersons(ids); +// this.refresh(); + return this.ok("删除成功!"); + } + + @OdinRequest(refresh = true) + @PostMapping("/doSave/{name}") + public ResponseMessage doSave(@OdinRequestParam("f_personForm") DemoPersonDTO demoPersonDTO, @PathVariable String name) { + + if (ObjectUtils.isEmpty(demoPersonDTO.getId())) { + DemoPersonDTO dto = demoPersonBPO.selectOne(demoPersonDTO); + if (dto != null) { + return this.error("不可添加重复数据!!"); + } + } + demoPersonBPO.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 demoPersonBPO.queryPersonListByExport(queryDTO, t_tableData_page, t_tableData_size); + }, (demoPersonDTO, checkbox) -> { + if ("1".equals(demoPersonDTO.getSex())) { +// checkbox.setDisabled(true); // 设置行复选框不可编辑 + } else { +// checkbox.setChecked(true); // 设置行复选框已选中 + } + }); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/dao/DemoPersonDAO.java b/template/insiis-web/src/main/java/com/insigma/business/demo/dao/DemoPersonDAO.java new file mode 100644 index 0000000..1ade262 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/dao/DemoPersonDAO.java @@ -0,0 +1,20 @@ +package com.insigma.business.demo.dao; + +import com.insigma.business.demo.entity.DemoPerson; +import com.insigma.framework.mybatis.BaseDAO; +import org.apache.ibatis.annotations.Mapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author yinjh + * @since 2020-05-28 + */ +@Mapper +public interface DemoPersonDAO extends BaseDAO { + + DemoPerson selectDemoPersonById(String id); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/dto/DemoPersonDTO.java b/template/insiis-web/src/main/java/com/insigma/business/demo/dto/DemoPersonDTO.java new file mode 100644 index 0000000..526c77f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/dto/DemoPersonDTO.java @@ -0,0 +1,36 @@ +package com.insigma.business.demo.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import com.baomidou.mybatisplus.annotation.TableField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * Created by yinjh on 2020/5/28. + */ +@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; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/dto/TestDTO.java b/template/insiis-web/src/main/java/com/insigma/business/demo/dto/TestDTO.java new file mode 100644 index 0000000..a1c26f0 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/dto/TestDTO.java @@ -0,0 +1,18 @@ +package com.insigma.business.demo.dto; + +import com.insigma.framework.data.firewall.desensitization.annotation.NameDesensitization; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author yinjh + * @since 2024/5/22 + */ +@Data +public class TestDTO implements Serializable { + + @NameDesensitization + private String name; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/business/demo/entity/DemoPerson.java b/template/insiis-web/src/main/java/com/insigma/business/demo/entity/DemoPerson.java new file mode 100644 index 0000000..9560261 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/business/demo/entity/DemoPerson.java @@ -0,0 +1,54 @@ +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 + * @since 2020-05-28 + */ +@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; + + +} diff --git a/template/insiis-web/src/main/java/com/insigma/config/RestTemplateConfig.java b/template/insiis-web/src/main/java/com/insigma/config/RestTemplateConfig.java new file mode 100644 index 0000000..9c426a9 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/config/RestTemplateConfig.java @@ -0,0 +1,38 @@ +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; + +/** + * @author Linwj + * @version 2019/6/12 10:26 + */ +@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; + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/CommonValidator.java b/template/insiis-web/src/main/java/com/insigma/sys/common/CommonValidator.java new file mode 100644 index 0000000..7104037 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/CommonValidator.java @@ -0,0 +1,137 @@ +package com.insigma.sys.common; + +import com.insigma.framework.exception.AppException; +import com.insigma.sys.entity.Aa26; +import com.insigma.sys.entity.SysOrg; +import com.insigma.sys.entity.SysRole; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.repository.Aa26Repository; +import com.insigma.sys.repository.RoleRepository; +import com.insigma.sys.repository.SysOrgRepository; +import com.insigma.sys.repository.SysUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/12/8 + */ +@Component +public class CommonValidator { + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private RoleRepository roleRepository; + + @Autowired + private SysOrgRepository sysOrgRepository; + + @Autowired + private Aa26Repository aa26Repository; + + @Autowired + private SysUserRepository sysUserRepository; + + /** + * 校验当前登录用户是否有相应角色的操作权限 + * @param roleId 角色ID + * @return + */ + public boolean validateRole(String roleId) { + SysUser sysUser = currentUserService.getCurrentUser(); + SysRole sysRole = roleRepository.findById(roleId).orElseThrow(() -> new AppException("角色不存在!")); + if ("1".equals(sysUser.getUserType())) { + return true; + } else if ("2".equals(sysUser.getUserType())) { + if (sysUser.getAreaId() != null && sysUser.getAreaId().equals(sysRole.getAreaid())) { + return true; + } + } else if ("3".equals(sysUser.getUserType())) { + if (sysUser.getOrgId() != null && sysUser.getOrgId().equals(sysRole.getOrgid())) { + return true; + } + } + return false; + } + + /** + * 校验角色列表 + * @param roleIds + * @return + */ + public boolean validateRoleIds(List roleIds) { + for (int i = 0; i < roleIds.size(); i++) { + if (!validateRole(roleIds.get(i))) { + return false; + } + } + return true; + } + + /** + * 校验当前登录用户是否有相应行政区划的操作权限 + * @param areaId 区域ID + * @return + */ + public boolean validateArea(String areaId, String userType) { + SysUser sysUser = currentUserService.getCurrentUser(); + if ("1".equals(sysUser.getUserType()) && "1".equals(userType)) { + return true; + } + Aa26 aa26 = aa26Repository.findById(areaId).orElseThrow(() -> new AppException("行政区划不存在!")); + if ("1".equals(sysUser.getUserType())) { + return true; + } else if ("2".equals(sysUser.getUserType())) { + List list = aa26Repository.findByAab301AndIdPath(sysUser.getAreaId() + "", aa26.getIdpath()); + if (list.size() > 0) { + return true; + } + } else if ("3".equals(sysUser.getUserType())) { + if (aa26.getAab301().equals(sysUser.getAreaId() + "")) { + return true; + } + } + return false; + } + + /** + * 校验当前登录用户是否有相应机构的操作权限 + * @param orgId 机构ID + * @return + */ + public boolean validateOrg(Long orgId, String userType) { + SysUser sysUser = currentUserService.getCurrentUser(); + if ("1".equals(userType)) { + return "1".equals(sysUser.getUserType()); + } + SysOrg sysOrg = sysOrgRepository.findById(orgId).orElseThrow(() -> new AppException("机构不存在!")); + if ("1".equals(sysUser.getUserType())) { + return true; + } else if ("2".equals(sysUser.getUserType())) { + List list = sysOrgRepository.findByRegioncodeAndIdPath(sysUser.getAreaId() + "", sysOrg.getIdpath()); + if (list.size() > 0) { + return true; + } + } else if ("3".equals(sysUser.getUserType())) { + if (sysOrg.getOrgid().equals(orgId)) { + return true; + } + } + return false; + } + + /** + * 校验当前登录用户是否有相应用户的操作权限 + * @param userId + * @return + */ + public boolean validateUser(String userId) { + SysUser sysUser = sysUserRepository.findById(userId).orElseThrow(() -> new AppException("用户不存在!")); + return validateOrg(sysUser.getOrgId(), sysUser.getUserType()); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/CurrentUserService.java b/template/insiis-web/src/main/java/com/insigma/sys/common/CurrentUserService.java new file mode 100644 index 0000000..1b3ae38 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/CurrentUserService.java @@ -0,0 +1,15 @@ +package com.insigma.sys.common; + +import com.insigma.sys.entity.SysUser; + +/** + * 获取当前用户信息服务类 + * @author jinw + * @version 2019/1/9 + *

epsoft - insiis7

+ */ + +public interface CurrentUserService { + + SysUser getCurrentUser(); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuth.java b/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuth.java new file mode 100644 index 0000000..afb685d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuth.java @@ -0,0 +1,64 @@ +package com.insigma.sys.common; + +import com.insigma.framework.util.SysUtils; +import com.insigma.odin.framework.est.EstException; +import com.insigma.odin.framework.est.auth.ClientAuth; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +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; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author jinw + * @version 2020/2/7 + *

epsoft - insiis7

+ */ +public class OdinClientAuth implements ClientAuth { + + private static final Logger log = LoggerFactory.getLogger(OdinClientAuth.class); + + @Override + public boolean syslogon(String loginName, HttpServletRequest request) throws EstException { + UserDetailsService userDetailsService; + ApplicationContext applicationContext = WebApplicationContextUtils.findWebApplicationContext(request.getServletContext()); + if (SysUtils.getAppContext() != null) { + userDetailsService = SysUtils.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 (SysUtils.getAppContext() != null) { + logoutHandler = SysUtils.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; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuthExtendFilter.java b/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuthExtendFilter.java new file mode 100644 index 0000000..953468d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/OdinClientAuthExtendFilter.java @@ -0,0 +1,55 @@ +package com.insigma.sys.common; + +import com.insigma.framework.util.SysUtils; +import com.insigma.framework.util.UserAgentUtil; +import com.insigma.framework.web.securities.commons.SecurityUtils; +import com.insigma.framework.web.securities.entity.SysLogonLog; +import com.insigma.framework.web.securities.entity.SysUserDetails; +import com.insigma.framework.web.securities.service.SysLogService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Component; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.*; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +/** + * @author jinw + * @version 2020/2/13 + *

epsoft - insiis7

+ */ +@Component +@WebFilter(filterName = "odinClientExtendFilter",urlPatterns = "/*") +@Slf4j +public class OdinClientAuthExtendFilter extends OncePerRequestFilter { + + public static final String IS_SAVE_LOGONLOG_SESSION_KEY = "save_logonlog_flag"; + + @Override + protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException { + HttpSession session = httpServletRequest.getSession(); + Boolean isSaveLogonlog = null; + try { + isSaveLogonlog = (Boolean) session.getAttribute(IS_SAVE_LOGONLOG_SESSION_KEY); + if (isSaveLogonlog != null && isSaveLogonlog.booleanValue()) { + SysLogonLog logonLog = SysUtils.getBean(SysLogService.class).saveLogonLog(SecurityUtils.getIpAddr(httpServletRequest), session.getId(), UserAgentUtil.getBrowser(httpServletRequest), UserAgentUtil.getSystem(httpServletRequest)); + SysUserDetails userDetails = (SysUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + if (userDetails != null) { + userDetails.getOthers().put("logid", logonLog.getLogonlogid()); + } + } + } catch (Exception e) { + log.error("记录登录日志失败!", e); + } finally { + if (isSaveLogonlog != null) { + session.removeAttribute(IS_SAVE_LOGONLOG_SESSION_KEY); + } + } + filterChain.doFilter(httpServletRequest, httpServletResponse); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/SysEntityListener.java b/template/insiis-web/src/main/java/com/insigma/sys/common/SysEntityListener.java new file mode 100644 index 0000000..dc48ad1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/SysEntityListener.java @@ -0,0 +1,47 @@ +package com.insigma.sys.common; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.util.SysUtils; +import com.insigma.sys.service.SysHashService; +import lombok.extern.slf4j.Slf4j; + +import javax.persistence.PostPersist; +import javax.persistence.PostRemove; +import javax.persistence.PostUpdate; + +/** + * @author jinw + * @version 2021/8/16 + *

epsoft - insiis7

+ */ +@Slf4j +public class SysEntityListener { + + @PostPersist + public void postPersist(Object entity) { + saveEntityHashCode(entity, PostMode.SAVE); + } + + @PostUpdate + public void postUpdate(Object entity) { + saveEntityHashCode(entity, PostMode.UPDATE); + } + + @PostRemove + public void postRemove(Object entity) { + saveEntityHashCode(entity, PostMode.DELETE); + } + + public void saveEntityHashCode(Object entity, PostMode postMode) { + log.debug("Class: {}, Spe: {}", entity.getClass().getCanonicalName(), JSONObject.toJSONString(entity)); + SysHashService sysHashService = SysUtils.getBean(SysHashService.class); + sysHashService.saveHash(entity); + } + + private enum PostMode { + SAVE, + UPDATE, + DELETE + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/SysManageMode.java b/template/insiis-web/src/main/java/com/insigma/sys/common/SysManageMode.java new file mode 100644 index 0000000..064ec38 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/SysManageMode.java @@ -0,0 +1,49 @@ +package com.insigma.sys.common; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.PostConstruct; +import java.util.function.Supplier; + +/** + * @author jinw + * @version 2020/5/19 + *

epsoft - insiis7

+ */ +@Component +public final class SysManageMode { + + @Value("${sys.mode.triple: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 doActionInTripleMode(Supplier 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(); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/impl/CurrentUserServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/CurrentUserServiceImpl.java new file mode 100644 index 0000000..32118a8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/CurrentUserServiceImpl.java @@ -0,0 +1,57 @@ +package com.insigma.sys.common.impl; + +import com.insigma.framework.exception.UserNoLoginException; +import com.insigma.framework.web.securities.entity.SysUserDetails; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.repository.SysUserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +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 javax.servlet.http.HttpServletRequest; +import java.util.Objects; + +/** + * Created by Administrator on 2019/1/15. + */ +@Service +public class CurrentUserServiceImpl implements CurrentUserService { + @Autowired + private SysUserRepository sysUserRepository; + + @Override + public SysUser getCurrentUser() { + SysUser sysUser = currentUserFromSecurityContext(); + if (sysUser == null) { + throw new UserNoLoginException("获取不到当前登录用户信息!"); + } + return sysUser; + } + + /** + * 从SpringSecurity中获取当前用户信息 jinw + * + * @return + */ + private SysUser currentUserFromSecurityContext() { + SysUser sysUser = null; + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.getPrincipal() != null) { + if (authentication.getPrincipal() instanceof SysUserDetails) { + SysUserDetails userDetails = (SysUserDetails) authentication.getPrincipal(); + sysUser = (SysUser) userDetails.getOthers().get("sysUser"); + if (sysUser == null) { + sysUser = sysUserRepository.findByLogonName(userDetails.getUsername()).get(0); + userDetails.getOthers().put("sysUser", sysUser); + HttpServletRequest request = ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + request.getSession().setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext()); + } + } + } + return sysUser; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MyLogoutOrFailedExceptionHandler.java b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MyLogoutOrFailedExceptionHandler.java new file mode 100644 index 0000000..9684ce7 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MyLogoutOrFailedExceptionHandler.java @@ -0,0 +1,28 @@ +package com.insigma.sys.common.impl; + +import com.insigma.odin.framework.est.EstException; +import com.insigma.odin.framework.est.auth.LogoutOrFailedExceptionHandler; +import lombok.extern.slf4j.Slf4j; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * @author yinjh + * @version 2021/9/1 + */ +@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); + } + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLoginHandler.java b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLoginHandler.java new file mode 100644 index 0000000..0871a19 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLoginHandler.java @@ -0,0 +1,56 @@ +package com.insigma.sys.common.impl; + +import com.insigma.framework.data.firewall.permission.validate.ValidateKeyValueStore; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.web.securities.auth.SysLoginHandler; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysHashService; +import com.insigma.sys.service.SysUserService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; + +@Slf4j +@Service +public class MySysLoginHandler implements SysLoginHandler { + + @Value("${sys.hash.enabled:false}") + private boolean hashEnabled; + + @Autowired + private SysHashService sysHashService; + + @Autowired + private SysUserService sysUserService; + + @Autowired + private ValidateKeyValueStore validateKeyValueStore; + + @Override + public void success(String username, HttpServletRequest request) { + request.getSession().setAttribute("auth_filter_ignored",Boolean.TRUE); + log.info("{} 登录成功!", username); + if (hashEnabled) { + SysUser sysUser = sysUserService.findUserByLogonName(username); + if (!sysHashService.checkHash(sysUser)) { + throw new AppException("用户数据不合法!"); + } + } + + + // 测试数据与安全 + SysUser sysUser = sysUserService.findUserByLogonName(username); + validateKeyValueStore.set("orgid", String.valueOf(sysUser.getOrgId())); + if ("admin".equals(sysUser.getLogonName())) { + validateKeyValueStore.skip(); + } + } + + @Override + public void failure(String username, HttpServletRequest request) { + log.info("{} 登录失败!", username); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLogoutHandler.java b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLogoutHandler.java new file mode 100644 index 0000000..e207d8f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/common/impl/MySysLogoutHandler.java @@ -0,0 +1,36 @@ +package com.insigma.sys.common.impl; + +import com.insigma.framework.web.securities.auth.ExtSysLogoutHandler; +import com.insigma.odin.framework.est.service.SSOServiceFactory; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +/** + * @author yinjh + * @version 2022/5/10 + * @since 2.6.5 + */ +@Slf4j +@Component +@ConditionalOnProperty(prefix = "sso", name = "app-name", matchIfMissing = false) +public class MySysLogoutHandler implements ExtSysLogoutHandler { + + @Value("${sso.app-name:}") + private String appName; + + @Override + public void logout(HttpServletRequest request, HttpServletResponse response) { + 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令牌,不执行注销操作!"); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/config/JdbcConfig.java b/template/insiis-web/src/main/java/com/insigma/sys/config/JdbcConfig.java new file mode 100644 index 0000000..08ab576 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/config/JdbcConfig.java @@ -0,0 +1,19 @@ +package com.insigma.sys.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; + +/** + * Created by yinjh on 2019/6/28. + */ +@Configuration +public class JdbcConfig { + + @Bean + public NamedParameterJdbcTemplate namedParameterJdbcTemplate(JdbcTemplate jdbcTemplate) { + return new NamedParameterJdbcTemplate(jdbcTemplate); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/config/JpaConfig.java b/template/insiis-web/src/main/java/com/insigma/sys/config/JpaConfig.java new file mode 100644 index 0000000..091e027 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/config/JpaConfig.java @@ -0,0 +1,17 @@ +package com.insigma.sys.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +/** + * @author jinw + * @version 2021/8/16 + *

epsoft - insiis7

+ */ +@Configuration +@EnableJpaAuditing +public class JpaConfig { + + + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfig.java b/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfig.java new file mode 100644 index 0000000..b9cf547 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfig.java @@ -0,0 +1,59 @@ +package com.insigma.sys.config; + +import com.insigma.framework.web.securities.config.SysSecurityConfig; +import com.insigma.framework.web.securities.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 + * @version 2020/2/7 + *

epsoft - insiis7

+ */ +@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 filterRegistrationBean = new FilterRegistrationBean<>(); + filterRegistrationBean.setFilter(new GenericAuthFilter()); + Map initParameters = new HashMap<>(); + /*initParameters.put("app-name", "odin7c"); + initParameters.put("auth-service-root-url", "http://127.0.0.1:8080/"); + initParameters.put("client-auth-class", "com.insigma.sys.common.OdinClientAuth"); + initParameters.put("free-urls", "/login");*/ + 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; + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfigProperties.java b/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfigProperties.java new file mode 100644 index 0000000..3952ec8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/config/SSOConfigProperties.java @@ -0,0 +1,24 @@ +package com.insigma.sys.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * @author jinw + * @version 2020/2/7 + *

epsoft - insiis7

+ */ +@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; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/AuthController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/AuthController.java new file mode 100644 index 0000000..0713fd1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/AuthController.java @@ -0,0 +1,51 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.encryption.util.SM3Utils; +import com.insigma.framework.util.IpUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysUser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; +import java.util.concurrent.TimeUnit; + +/** + * Created by yinjh on 2019/10/14. + */ +@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); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/HolidayController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/HolidayController.java new file mode 100644 index 0000000..3ad7697 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/HolidayController.java @@ -0,0 +1,56 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.sys.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 + * @version 2021/6/16 + */ +@RestController +@RequestMapping("/sys/holiday") +public class HolidayController { + + @Autowired + private HolidayService holidayService; + + @GetMapping("/query") + public ResponseMessage getHolidayList(int year){ + List holidayList = holidayService.queryHolidayList(year); + if (holidayList == null || holidayList.isEmpty()) { + holidayList = holidayService.getWeekdays(year); + holidayService.updateHolidays(year, holidayList); + } + List dates = holidayToDate(holidayList); + return ResponseMessage.ok(dates); + } + + @PostMapping("/{year}/update") + public ResponseMessage updateHolidays(@PathVariable int year, @RequestBody JSONObject jsonObject){ + List holidays = jsonObject.getJSONArray("holidays").toJavaList(String.class); + holidayService.updateHolidays(year, dateToHoliday(holidays)); + return ResponseMessage.ok("保存成功!"); + } + + private List holidayToDate(List 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 dateToHoliday(List 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()); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/HomeController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/HomeController.java new file mode 100644 index 0000000..9a16c5e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/HomeController.java @@ -0,0 +1,147 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.encryption.util.SM3Utils; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.web.securities.commons.SM3PasswordEncoder; +import com.insigma.framework.web.securities.entity.SysLogonLog; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysUserService; +import com.insigma.sys.service.SyslogonLogService; +import com.insigma.web.support.config.SysConfigProperties; +import com.insigma.web.support.repository.Aa01Repository; +import com.insigma.web.support.entity.Aa01; +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 + *

epsoft - insiis7

+ */ +@RestController +@Slf4j +public class HomeController { + + @Autowired + private SysUserService sysUserService; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private SysConfigProperties sysConfigProperties; + + @Autowired + private Aa01Repository aa01Repository; + + @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.findUserByLogonName(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.findUserByLogonName(sysUser.getLogonName()); + if ("1".equals(sysUser.getPwExpireType())) { + // 密码周期过期 + Aa01 aa01 = aa01Repository.findByAaa001("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 list = syslogonLogService.getLastLoginTime(sysUser.getUserId()); + 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.updateUser(sysUser); + return ResponseMessage.ok("修改成功"); + + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/ImportConfigController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/ImportConfigController.java new file mode 100644 index 0000000..cc76671 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/ImportConfigController.java @@ -0,0 +1,94 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.ImportConfigReDTO; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.service.MenuService; +import com.insigma.web.support.dto.ImportConfigDTO; +import com.insigma.web.support.dto.ImportConfigDetailDTO; +import com.insigma.web.support.fileaccess.excel.ExcelFactory; +import com.insigma.web.support.service.ImportConfigService; +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 + * @version 2023/7/18 + * @since 2.7.0 + */ +@RestController +@RequestMapping("/sys/import/config") +public class ImportConfigController { + + @Autowired + private ImportConfigService importConfigService; + + @Autowired + private MenuService menuService; + + @Autowired + private CurrentUserService currentUserService; + + @GetMapping("/queryMenuList") + public ResponseMessage queryMenuList() { + List menuDTOS = menuService.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 list = importConfigService.queryConfigList(configCode, configName); + return ResponseMessage.ok(list); + } + + @GetMapping("/queryConfig") + public ResponseMessage queryConfig(String configId) { + ImportConfigDTO config = importConfigService.queryConfig(configId); + List 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 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("删除成功"); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/MenuController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/MenuController.java new file mode 100644 index 0000000..d122bbc --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/MenuController.java @@ -0,0 +1,244 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.dto.SysAppDTO; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.service.MenuService; +import com.insigma.sys.service.SysAppService; +import com.insigma.sys.service.SysCodeService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 菜单管理 + */ +@Slf4j +@RestController +@RequestMapping("/sys/menu") +public class MenuController { + @Autowired + private MenuService menuService; + @Autowired + private SysCodeService sysCodeService; + @Autowired + private CurrentUserService currentUserService; + @Autowired + private SysAppService sysAppService; + /** + * 初始化页面数据 + * @return + */ + @PostMapping("/initCodeTypes") + public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) { + try { + JSONObject codeTypes = sysCodeService.getCodeTypes(jsonObject); + List 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 menuDTOS = menuService.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); + SysMenu sysMenu = new SysMenu(); + sysMenu.setFunctionid(oneMenu.getLong("functionid")); + sysMenu.setFunorder(oneMenu.getInteger("funorder")); + sysMenu.setParentid(oneMenu.getLong("parentid")); + sysMenu.setTitle(oneMenu.getString("title")); + menuService.update(sysMenu); + System.out.println(sysMenu); + } + return ResponseMessage.ok(); + } + /** + * 点击左侧菜单后 + */ + @PostMapping("/nodeClick") + public ResponseMessage nodeClick(@RequestBody() JSONObject jsonObject) { + SysMenu sysMenu; + String a=jsonObject.get("functionid").toString(); + if (a!=null){ + long functionid =(long)Integer.parseInt(a); + sysMenu =menuService.findMenuById(functionid); + List menulist=menuService.findTreesByPId(sysMenu.getFunctionid()); + if (menulist.size()>0){ + //有子类 + return ResponseMessage.ok(sysMenu); + }else { + //没有子类 + return ResponseMessage.ok("重复",sysMenu); + } + }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 menuDTOS=menuService.queryMenuByFuntypeAndActive(funtype); + JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children"); + jsonObject.put("treedata",jsonArray); + long fId=Integer.parseInt(id); + SysMenu menu=menuService.findMenuById(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); + }catch (Exception e){ + return ResponseMessage.error(e.getMessage()); + } + } + /** + * 查询是否多于三层 + * @param jsonObject + * @return + */ + @PostMapping("/querySumIsThree") + public ResponseMessage querySumIsThree(@RequestBody JSONObject jsonObject) { + try { + String id=jsonObject.get("functionid").toString(); + Map list= (Map) jsonObject.get("pname"); + long fId=Integer.parseInt(id); + SysMenu sysMenu=menuService.findMenuById(fId); + List menu=menuService.findNodes(sysMenu.getIdpath());//查询当前子节点 + for(int i=0;i map= (Map) pageData.get("form"); + SysMenu sysMenu = menuService.getSysMenuBean(map); + boolean flag = menuService.isManyLocations(sysMenu); + if (flag) { + return ResponseMessage.error("路径重复"); + } + try { + menuService.save(sysMenu); + return ResponseMessage.ok("保存成功", sysMenu); + } 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()); + boolean withRole= (boolean) pageData.get("withRole"); + List m=menuService.findNodes(menuService.findMenuById(node).getIdpath()); + //当withRole为false时,和角色没有关系,如果是1就和角色有关系 + try { + if (m!=null){ + menuService.delete(m,withRole); + return ResponseMessage.ok("删除成功"); + }else{ + return ResponseMessage.error("删除失败"); + } + }catch (Exception e){ + log.error(e.getMessage(), e); + return ResponseMessage.error("删除失败,失败原因:" +e.getMessage()); + } + } + /** + * 查找是否有角色关系 + */ + @PostMapping("/queryRoleBy") + public ResponseMessage queryRoleBy(@RequestBody JSONObject pageData){ + Map map= (Map) pageData.get("form"); + SysMenu sysMenu=menuService.getSysMenuBean(map); + boolean f=menuService.findFunctionRoles(sysMenu); + 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){ + int parentid =Integer.parseInt(a); + SysMenu menu=menuService.queryByFuncID(parentid); + if (menu!=null){ + SysMenu menu1=menuService.queryByFuncID(menu.getParentid()); + if (menu1!=null){ + rm= ResponseMessage.error("最多添加三级"); + } + } + }else { + rm= ResponseMessage.error("没取到父节点"); + } + return rm; + } + + + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorCentersController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorCentersController.java new file mode 100644 index 0000000..a8b2333 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorCentersController.java @@ -0,0 +1,133 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.MonitorCentersDTO; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.MonitorCentersService; +import com.insigma.web.support.controller.BaseController; +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 + MonitorCentersService monitorCentersService; + @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"); + SysMenu sysMenu = monitorCentersService.queryEntity(url); + return ResponseMessage.ok(sysMenu); + } + + /** + * 清理全部监控数据 + * + * @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); + } + } +} + + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorDataController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorDataController.java new file mode 100644 index 0000000..3b6552e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/MonitorDataController.java @@ -0,0 +1,169 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.sys.dto.MonitorCentersDTO; +import com.insigma.sys.service.MonitorCentersService; +import com.insigma.sys.util.WordUtil; +import com.insigma.web.support.fileaccess.excel.ExcelFactory; +import com.insigma.web.support.fileaccess.excel.ExcelWriter; +import com.insigma.web.support.fileaccess.excel.config.ExcelColConfig; +import com.insigma.web.support.fileaccess.excel.config.ExcelConfig; +import com.insigma.web.support.fileaccess.excel.enums.ExcelTypeEnum; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowCallbackHandler; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.io.IOException; +import java.net.URLEncoder; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.HashMap; +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; + @Autowired + private JdbcTemplate jdbcTemplate; + @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 mapList = monitorCentersService.getDataExport(appName); + for (Map map : mapList) { + writer.writeRow(map, ++index[0]); + } + writer.finish(); + } + + + //获取word文档数据 + @PostMapping("/getWrodData") + public Map 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 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(); + } + } + + } + +} \ No newline at end of file diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/OpLogController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/OpLogController.java new file mode 100644 index 0000000..2c7a608 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/OpLogController.java @@ -0,0 +1,98 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.oplog.dto.UserLogDTO; +import com.insigma.framework.oplog.entity.SbdsUserLog; +import com.insigma.framework.oplog.service.OpLogService; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.service.MenuService; +import com.insigma.web.support.service.PageInitService; +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; + +/** + * Created by yinjh on 2019/1/29. + */ +@Slf4j +@RestController +@RequestMapping("/sys/oplog") +public class OpLogController { + + @Autowired + private OpLogService opLogService; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private PageInitService pageInitService; + + @Autowired + private MenuService menuService; + + @PostMapping("/initSysFunctions") + public ResponseMessage initSysFuntions(@RequestBody JSONObject jsonObject) { + jsonObject = pageInitService.loadCustomCodeType(jsonObject, "sysfunction", "functionid", "title", "nodetype='2'", "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 pageInfo = opLogService.queryUserLogList(queryParam, page, size); + return ResponseMessage.ok(pageInfo); + } + + @GetMapping("/location") + public ResponseMessage getLocation(Long opseno) { + SbdsUserLog log = opLogService.getOpLog(opseno); + if (log != null) { + Long functionId = log.getFunctionid(); + SysMenu sysMenu = menuService.findMenuById(functionId); + return ResponseMessage.ok("", sysMenu.getLocation()); + } + return ResponseMessage.ok(); + } + + @GetMapping("/orisource") + public ResponseMessage getOriSource(Long opseno) { + String oriSource = opLogService.getOriSource(opseno); + return ResponseMessage.ok("", oriSource); + } + + @GetMapping("/oridata") + public ResponseMessage getOriData(Long opseno) { + String oriData = opLogService.getOriData(opseno); + return ResponseMessage.ok("", oriData); + } + + @GetMapping("/rollback") + public ResponseMessage rollback(Long opseno) { + try { + String logonName = currentUserService.getCurrentUser().getLogonName(); + opLogService.rollBack(opseno, logonName); + } catch (Exception e) { + log.error("回退失败!", e); + return ResponseMessage.error("回退失败:" + e.getMessage()); + } + return ResponseMessage.ok("回退成功!"); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/OrgController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/OrgController.java new file mode 100644 index 0000000..bed077e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/OrgController.java @@ -0,0 +1,199 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.entity.Aa26; +import com.insigma.sys.entity.SysOrg; +import com.insigma.sys.service.SysCodeService; +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 SysCodeService sysCodeService; + /** + * 初始化页面数据 + * @return + */ + @PostMapping("/doInit") + public ResponseMessage doInit(@RequestBody JSONObject jsonObject) { + List orgs=sysOrgService.queryAllOrg(); + JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(orgs)), "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.findByOrgid((long) orgid); + rm= ResponseMessage.ok(sysOrg); + }else { + rm= ResponseMessage.error(); + } + return rm; + } + /** + * 根据id查找险种 + * @return + */ +// @PostMapping("/findInsTypeById") +// public ResponseMessage findInTypeById(@RequestBody JSONObject jsonObject) { +// ResponseMessage rm; +// String a=jsonObject.get("regioncode").toString(); +// List list=new ArrayList(); +// if (a!=null){ +// long regioncode=Long.valueOf(a); +// List ins=sysOrgService.queryInsTypeById(regioncode); +// for (SysOrgInsType s:ins){ +// list.add(s.getInstype()); +// } +// rm=ResponseMessage.ok(list); +// }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 map= (Map) 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 aa26s = sysOrgService.getAA26(); + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(aa26s)), "aab301", "aaa148", "children"); + rm= ResponseMessage.ok(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 = sysOrgService.queryAa26By301(aab301); + rm= ResponseMessage.ok(aa26s); + } 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 = sysCodeService.getCodeTypes(jsonObject); + rm = ResponseMessage.ok(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 form= (Map) jsonObject.get("form"); + // JSONArray orgTreeData=jsonObject.getJSONArray("orgTreeData"); // 首先转成 JSONArray 对象 + // String trees=orgTreeData.toJSONString(); + List 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 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; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/ParamConfigController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/ParamConfigController.java new file mode 100644 index 0000000..fc7eeae --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/ParamConfigController.java @@ -0,0 +1,49 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.service.ParamConfigService; +import com.insigma.web.support.entity.Aa01; +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 ParamConfigService paramConfigService; + + @GetMapping("/query") + public ResponseMessage query(String aaa001, String aaa002, Integer page, Integer size) { + PageInfo pageInfo = paramConfigService.query(aaa001, aaa002, page, size); + return ResponseMessage.ok(null, pageInfo); + } + + @PostMapping("/insert") + public ResponseMessage insert(@RequestBody Aa01 aa01) { + paramConfigService.save(aa01, false); + return ResponseMessage.ok("保存成功"); + } + + @PostMapping("/update") + public ResponseMessage update(@RequestBody Aa01 aa01) { + paramConfigService.save(aa01, true); + return ResponseMessage.ok("修改成功"); + } + + @PostMapping("/delete") + public ResponseMessage delete(@RequestBody JSONObject jsonObject) throws AppException { + String aaa001 = jsonObject.getString("aaa001"); + paramConfigService.delete(aaa001); + return ResponseMessage.ok("删除成功"); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/RoleController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/RoleController.java new file mode 100644 index 0000000..f5d609f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/RoleController.java @@ -0,0 +1,308 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.PageResponseMessage; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.commons.syslog.Syslog; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.TreeUtil; +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.UserDTO; +import com.insigma.sys.entity.SysRole; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.MenuService; +import com.insigma.sys.service.RoleService; +import com.insigma.sys.service.SysCodeService; +import com.insigma.web.support.service.CodeTypeService; +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 codeService; + @Autowired + private SysCodeService sysCodeService; + @Autowired + private RoleService roleService; + @Autowired + private MenuService menuService; + @Autowired + private CurrentUserService currentUserService; + + /** + * 初始化页面数据 + * + * @return + */ + @PostMapping("/doInit") + public ResponseMessage initPageDate(@RequestBody JSONObject jsonObject) { + JSONObject codeTypes = jsonObject.getJSONObject("codeTypes"); + JSONObject codeTypesRes = codeService.getCodeTypes(codeTypes); + jsonObject.put("codeTypes", codeTypesRes); + return ResponseMessage.ok(jsonObject); + + } + + + @PostMapping("/initCodeTypes") + public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) { + ResponseMessage rm; + try { + JSONObject codeTypes = roleService.getCodeTypes(jsonObject); + rm = ResponseMessage.ok(codeTypes); + } catch (Exception e) { + rm = ResponseMessage.error(e.getMessage()); + } + return rm; + + } + + + @Syslog("${sysRole.rolename}") + @PostMapping("/save") + public ResponseMessage saveRole(@RequestBody SysRole sysRole) { + PageResponseMessage rm = null; + String roleid = sysRole.getRoleid(); + String rolename = sysRole.getRolename(); + boolean flag = false; //true代表有重复 + /*if(!"".equals(roleid) && roleid!=null){ + //flag=false; + flag=roleService.checkRoleByRolename(rolename); + if(flag){ + flag=false; + }else{ + rm = ResponseMessage.error("该角色名称已被其他行政区或机构占用!"); + return rm; + } + }else{ + flag=roleService.checkRoleByRolename(rolename); + }*/ + + flag = roleService.checkRoleByRolename(rolename); + if (!"".equals(roleid) && roleid != null) {//说明是更新 + flag = roleService.checkRoleByRolenameAndRoleid(rolename, roleid); + } + if (flag) { + try { + /*List listUser= currentUserService.getCurrentUserByLoginname("admin"); + long areaid=listUser.get(0).getAreaId(); + long orgid=listUser.get(0).getOrgId(); + String userid=listUser.get(0).getUserId();*/ + SysUser sysUser = currentUserService.getCurrentUser(); + /* long areaid = listUser.get(0).getAreaId(); + long orgid = listUser.get(0).getOrgId(); + String userid = listUser.get(0).getUserId(); + String usertype = listUser.get(0).getUserType();*/ + Long areaid = sysUser.getAreaId(); + Long orgid = sysUser.getOrgId(); + String userid = sysUser.getUserId(); + String usertype = sysUser.getUserType(); + sysRole.setAreaid(areaid); + sysRole.setOrgid(orgid); + sysRole.setCreatorid(userid); + roleService.save(sysRole); + rm = PageResponseMessage.ok("保存成功"); + } catch (Exception e) { + rm = PageResponseMessage.error(e.getMessage()); + } + } else { + rm = PageResponseMessage.error("该角色名称已被其他行政区或机构占用!"); + } + return rm; + } + + + /* @PostMapping("/queryRole") + public ResponseMessage queryRole(@RequestBody JSONObject pageData){ + ResponseMessage rm; + try { + List sysRoles=roleService.queryRole(pageData); + rm=ResponseMessage.ok("",sysRoles); + }catch (Exception e){ + rm = ResponseMessage.error(e.getMessage()); + } + return rm; + }*/ + + /*@PostMapping("/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){ + ResponseMessage rm; + try { + SysRoleDTO sysRoleDTO=roleService.query(rolename, roledesc, roletype, page, size); + rm=ResponseMessage.ok("",sysRoleDTO); + }catch (Exception e){ + rm = ResponseMessage.error(e.getMessage()); + } + 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) { + ResponseMessage rm; + //查询当前登录用户信息 + //List listUser = currentUserService.getCurrentUserByLoginname("admin"); + SysUser sysUser = currentUserService.getCurrentUser(); + /* long areaid = listUser.get(0).getAreaId(); + long orgid = listUser.get(0).getOrgId(); + String userid = listUser.get(0).getUserId(); + String usertype = listUser.get(0).getUserType();*/ + Long areaid = sysUser.getAreaId(); + Long orgid = sysUser.getOrgId(); + String userid = sysUser.getUserId(); + String usertype = sysUser.getUserType(); + + if (SysManageMode.isTripleMode()) {//三员制 + if ("5".equals(usertype)) {//安全管理员 + usertype = "1";//按照超级管理员处理,可以查询所有的角色 + } + } + SysRoleDTO sysRoleDTO = null; + if (!"".equals(usertype) && usertype != null) { + //查询当前用户拥有的角色 + //List listRole=roleService.queryRoleByUserId(userid); + try { + sysRoleDTO = roleService.query(rolename, roledesc, roletype, page, size, areaid, orgid, usertype); + rm = ResponseMessage.ok("", sysRoleDTO); + } catch (Exception e) { + rm = ResponseMessage.error(e.getMessage()); + } + } else {//非管理员角色,不能看到任何角色 + rm = ResponseMessage.ok(); + } + + return rm; + } + + @PostMapping("/delete") + public ResponseMessage delete(@RequestBody SysRole sysRole) { + SysRole role = roleService.getRoleById(sysRole.getRoleid()); + if (role == null) { + return ResponseMessage.error("角色不存在"); + } + SysUser sysUser = currentUserService.getCurrentUser(); + if (!roleService.roleCanOperate(sysUser, role)) { + return ResponseMessage.error("无权操作"); + } + roleService.deleteRoleRef(sysRole); + 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 menuDTOS = menuService.queryMenuByFuntypeAndActive(funtype); + /*SysUser sysUser = currentUserService.getCurrentUser(); + List menuDTOS = new ArrayList<>(); + if ("1".equals(sysUser.getUserType())) { + // 超级管理员,查询所有 + menuDTOS = menuService.queryMenuByFuntypeAndActive(funtype); + } else if ("2".equals(sysUser.getUserType()) || "3".equals(sysUser.getUserType())) { + // 行政区管理员和机构管理员查询自己拥有的角色 + menuDTOS = menuService.queryMenusByUserId(sysUser.getUserId()); + } else { + // 其他无权限查询 + throw new AppException("无权查询!"); + }*/ + 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 list = roleService.queryFuncitonidByRoleid(roleId); + return ResponseMessage.ok("查询成功", list); + } + + @PostMapping("/addRoleRef") + public ResponseMessage addRoleRef(@RequestBody JSONObject jsonObject) { + String roleid = (String) jsonObject.get("roleId"); + SysRole role = roleService.getRoleById(roleid); + if (role == null) { + return ResponseMessage.error("角色不存在"); + } + SysUser sysUser = currentUserService.getCurrentUser(); + if (!roleService.roleCanOperate(sysUser, role)) { + return ResponseMessage.error("无权操作"); + } + roleService.saveGrant(currentUserService.getCurrentUser(), role, jsonObject); + return ResponseMessage.ok("授权成功"); + } + + + @GetMapping("getRoleTypeCode") + public ResponseMessage getUserTypeCode() { + List> list = roleService.findRoleTypesCode(); + return ResponseMessage.ok(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 list = roleService.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 = roleService.getRoleById(roleId); + if (!roleService.roleCanOperate(sysUser, sysRole)) { + return ResponseMessage.error("无权访问"); + } + List list = roleService.queryGrantedUser(roleId); + return ResponseMessage.ok("查询成功", list); + } + + @GetMapping("/removeGrantUserRole") + public ResponseMessage removeGrantUserRole(@RequestParam(name = "roleId") String roleId, + @RequestParam(name = "userId") String userId) throws SQLException { + roleService.removeGrantUserRole(roleId, userId); + return ResponseMessage.ok(); + } + + @PostMapping("/saveGrantUser") + public ResponseMessage saveGrantUser(@RequestBody JSONObject jsonObject) throws SQLException { + roleService.saveGrantUser(jsonObject); + return ResponseMessage.ok("保存成功"); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SSOController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SSOController.java new file mode 100644 index 0000000..aeec6d7 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SSOController.java @@ -0,0 +1,42 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.web.securities.auth.SysLoginHandler; +import com.insigma.framework.web.securities.dto.BaseUserInfo; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysUser; +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; + +import javax.servlet.http.HttpServletRequest; + +/** + * 获取当前登录人 + * Created by yinjh on 2020/2/21. + */ +@RestController +@RequestMapping({"/sso", "/check"}) +public class SSOController { + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private SysLoginHandler sysLoginHandler; + + @PostMapping("/login") + public ResponseMessage login(HttpServletRequest request) { + SysUser sysUser = currentUserService.getCurrentUser(); + BaseUserInfo userInfo = new BaseUserInfo(); + userInfo.setUserid(sysUser.getUserId()); + userInfo.setUsername(sysUser.getLogonName()); + userInfo.setNickname(sysUser.getDisplayName()); + + sysLoginHandler.success(userInfo.getUsername(), request); + + return ResponseMessage.ok(userInfo); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SafetyFilterLogController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SafetyFilterLogController.java new file mode 100644 index 0000000..cadf801 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SafetyFilterLogController.java @@ -0,0 +1,31 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.system.safety.log.dto.SafetyFilterLogDTO; +import com.insigma.framework.system.safety.log.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 pageInfo = safetyFilterLogService.query(safetyFilterLogDTO); + return ResponseMessage.ok(pageInfo); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/ScmMyFavoritesController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/ScmMyFavoritesController.java new file mode 100644 index 0000000..8f8c92f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/ScmMyFavoritesController.java @@ -0,0 +1,93 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.ScmMyFavoritesDTO; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.ScmMyFavoritesService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + + +/** + * @Author tanyj + * @Version 2022/8/23 11:27 + * @since 2.7.0 + **/ +@RestController +@RequestMapping("/scmMyFavorites") +public class ScmMyFavoritesController { + + @Autowired + private ScmMyFavoritesService scmMyFavoritesService; + + @Autowired + private CurrentUserService currentUserService; + + /** + * 新增我的收藏 + * + * @param jsonObject jsonObject + */ + @PostMapping("/addScmMyFavorites") + public ResponseMessage addScmMyFavorites(@RequestBody JSONObject jsonObject) { + ScmMyFavoritesDTO scmMyFavoritesDTO = new ScmMyFavoritesDTO(); + scmMyFavoritesDTO.setTitle(jsonObject.getString("title")); + scmMyFavoritesDTO.setFunctionRoutePath(jsonObject.getString("path")); + SysUser currentUser = currentUserService.getCurrentUser(); + return scmMyFavoritesService.addScmMyFavorites(currentUser.getUserId(), scmMyFavoritesDTO); + } + + /** + * 根据用户id查询我的收藏 + * + * @return + */ + @RequestMapping("/getScmMyFavorites") + public ResponseMessage getScmMyFavorites() { + SysUser currentUser = currentUserService.getCurrentUser(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("data", scmMyFavoritesService.getScmMyFavorites(currentUser.getUserId())); + jsonObject.put("total", scmMyFavoritesService.getScmMyFavorites(currentUser.getUserId()).size()); + return ResponseMessage.ok("查询成功", jsonObject); + } + + /** + * 根据用户id删除我的收藏 + * + * @param jsonObject jsonObject + */ + @RequestMapping("/deleteScmMyFavorites") + public ResponseMessage deleteScmMyFavorites(@RequestBody JSONObject jsonObject) { + ScmMyFavoritesDTO scmMyFavoritesDTO = new ScmMyFavoritesDTO(); + scmMyFavoritesDTO.setTitle(jsonObject.getString("title")); + scmMyFavoritesDTO.setFunctionRoutePath(jsonObject.getString("functionRoutePath")); + SysUser currentUser = currentUserService.getCurrentUser(); + scmMyFavoritesService.deleteScmMyFavorites(currentUser.getUserId(), scmMyFavoritesDTO); + return ResponseMessage.ok(); + } + + /** + * 根据用户id更新我的收藏 + * + * @param jsonObject jsonObject + */ + @RequestMapping("/orderScmMyFavorites") + public ResponseMessage orderScmMyFavorites(@RequestBody JSONObject jsonObject){ + System.out.println(jsonObject); + SysUser currentUser = currentUserService.getCurrentUser(); + JSONArray jsonArray = jsonObject.getJSONArray("data"); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject oneSmf = jsonArray.getJSONObject(i); + ScmMyFavoritesDTO scmMyFavoritesDTO = new ScmMyFavoritesDTO(); + scmMyFavoritesDTO.setTitle(oneSmf.getString("title")); + scmMyFavoritesDTO.setFunctionRoutePath(oneSmf.getString("functionRoutePath")); + scmMyFavoritesDTO.setOrderNo(i); + scmMyFavoritesService.orderScmMyFavorites(currentUser.getUserId(), scmMyFavoritesDTO); + } + return ResponseMessage.ok(); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAppController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAppController.java new file mode 100644 index 0000000..4f8c9b4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAppController.java @@ -0,0 +1,200 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.encryption.util.SM3Utils; +import com.insigma.framework.util.StringUtil; +import com.insigma.framework.web.securities.commons.SM3PasswordEncoder; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.SysAppAddressDTO; +import com.insigma.sys.dto.SysAppDTO; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysAppService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +import com.insigma.web.support.service.token.AppTokenService; +import com.insigma.web.support.util.pe.PageTable; +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.sql.SQLException; +import java.util.*; + +/** + * 应用系统管理接口 + * + * @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 AppTokenService appTokenService; + + + @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 queryDTO) { + PageTable t_tableData1 = this.getTable("t_tableData1"); + List 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(queryDTO.getAppId())) { + boolean flag = sysAppService.selectAppCode(queryDTO.getAppCode()); + if (flag) { + return ResponseMessage.error("异常应用编码重复!"); + } + } + String secretKey = null; + if (StringUtil.isEmpty(queryDTO.getAppId())) { + secretKey = appTokenService.generateSecretKey(); + } + String appId = sysAppService.saveSysAppDTO(queryDTO, secretKey); + if ("".equals(appId) && appId == null) { + return ResponseMessage.error("保存失败!"); + }else { + sysAppService.saveSysAppAddressDTO(listsysAppAddressDTO, appId); + } + 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 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); + sysAppService.deleteSysAppAddressByAppId(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 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); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditConfigController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditConfigController.java new file mode 100644 index 0000000..e80ff2d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditConfigController.java @@ -0,0 +1,55 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.audit.dto.AuditConfig; +import com.insigma.framework.audit.service.SysAuditConfigService; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.exception.AppException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; + +import java.sql.SQLException; + +/** + * @author yinjh + * @version 2022/11/15 + * @since 2.7.0 + */ +@RestController +@RequestMapping("/sys/audit/config") +public class SysAuditConfigController { + + @Autowired + private SysAuditConfigService sysAuditConfigService; + + @GetMapping("/query") + public ResponseMessage query(String functionName, Integer page, Integer size) throws SQLException { + PageInfo pageInfo = sysAuditConfigService.query(functionName, page, size); + return ResponseMessage.ok(pageInfo); + } + + @PostMapping("/save") + public ResponseMessage save(@RequestBody AuditConfig auditConfig) { + if (auditConfig.getFunctionId() == null) { + return ResponseMessage.error("请选择功能模块"); + } + if (auditConfig.getAuditTotalLevel() == null) { + return ResponseMessage.error("请输入审核总级别"); + } + if (ObjectUtils.isEmpty(auditConfig.getServiceName())) { + return ResponseMessage.error("请输入服务名称"); + } + sysAuditConfigService.save(auditConfig); + return ResponseMessage.ok("保存成功"); + } + + @PostMapping("/delete") + public ResponseMessage delete(@RequestBody AuditConfig auditConfig) throws AppException { + if (ObjectUtils.isEmpty(auditConfig.getId())) { + return ResponseMessage.error("请选择需要删除的配置"); + } + sysAuditConfigService.delete(auditConfig.getId()); + return ResponseMessage.ok("删除成功"); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditController.java new file mode 100644 index 0000000..4dec330 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysAuditController.java @@ -0,0 +1,76 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.audit.dto.AuditHistory; +import com.insigma.framework.audit.dto.AuditInfo; +import com.insigma.framework.audit.dto.AuditResult; +import com.insigma.framework.audit.service.SysAuditService; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.common.CurrentUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; +import org.springframework.util.ObjectUtils; +import org.springframework.web.bind.annotation.*; + +import java.sql.SQLException; +import java.util.List; + +/** + * @author yinjh + * @version 2022/11/14 + * @since 2.7.0 + */ +@RestController +@RequestMapping("/sys/audit") +public class SysAuditController { + + @Autowired + private SysAuditService sysAuditService; + + @Autowired + private CurrentUserService currentUserService; + + /** + * 待审核列表 + * @param functionId 模块ID + * @param level 审核级别 + * @param page 分页 + * @param size 大小 + * @return 审核列表 + */ + @GetMapping("/{functionId}/{level}/list") + public ResponseMessage list(@PathVariable Long functionId, @PathVariable Integer level, Integer page, Integer size) throws SQLException { + PageInfo pageInfo = sysAuditService.query(functionId, level, page, size); + return ResponseMessage.ok(pageInfo); + } + + /** + * 审核 + * + * @param functionId 模块ID + * @param level 审核级别 + * @param auditResult 审核信息 + * @return 审核结果 + */ + @PostMapping("/{functionId}/{level}/post") + public ResponseMessage audit(@PathVariable Long functionId, @PathVariable Integer level, @RequestBody AuditResult auditResult) { + if (CollectionUtils.isEmpty(auditResult.getOpsenos())) { + return ResponseMessage.error("请选择需要审核的业务!"); + } + if (ObjectUtils.isEmpty(auditResult.getResult())) { + return ResponseMessage.error("审核结果不能为空!"); + } + if ("0".equals(auditResult.getResult()) && ObjectUtils.isEmpty(auditResult.getReason())) { + return ResponseMessage.error("审核不通过时,审核原因不能为空!"); + } + sysAuditService.audit(currentUserService.getCurrentUser().getLogonName(), functionId, level, auditResult); + return ResponseMessage.ok("审核成功!"); + } + + @GetMapping("/{functionId}/{level}/history") + public ResponseMessage history(@PathVariable Long functionId, @PathVariable Integer level, Long opseno) { + List histories = sysAuditService.queryHistories(opseno); + return ResponseMessage.ok(histories); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysCodeController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysCodeController.java new file mode 100644 index 0000000..f39eec4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysCodeController.java @@ -0,0 +1,50 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.dto.CodeDTO; +import com.insigma.sys.entity.Aa10; +import com.insigma.sys.service.SysCodeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +/** + * Created by yinjh on 2019/1/9. + */ +@RestController +@RequestMapping("/sys/code") +public class SysCodeController { + + @Autowired + private SysCodeService sysCodeService; + + @PostMapping("/initCodeTypes") + public ResponseMessage initCodeTypes(@RequestBody JSONObject jsonObject) { + JSONObject codeTypes = sysCodeService.getCodeTypes(jsonObject); + return ResponseMessage.ok(codeTypes); + } + + @GetMapping("/query") + public ResponseMessage query(String aaa100, String aaa103, Integer page, Integer size) { + CodeDTO codeDTO = sysCodeService.query(aaa100, aaa103, page, size); + return ResponseMessage.ok(null, codeDTO); + } + + @PostMapping("/save") + public ResponseMessage save(@RequestBody Aa10 aa10) { + sysCodeService.saveCode(aa10); + return ResponseMessage.ok("保存成功"); + } + + @PostMapping("/delete") + public ResponseMessage delete(@RequestBody JSONObject jsonObject) throws AppException { + try { + Long aaz093=Long.valueOf(jsonObject.get("aaz093").toString()); + sysCodeService.deleteCode(aaz093); + }catch (Exception e){ + throw new AppException("数据转换异常!"); + } + return ResponseMessage.ok("删除成功"); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysDownloadCenterController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysDownloadCenterController.java new file mode 100644 index 0000000..c66e723 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysDownloadCenterController.java @@ -0,0 +1,351 @@ +package com.insigma.sys.controller; + + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.dfs.FSObject; +import com.insigma.framework.dfs.FSService; +import com.insigma.framework.dfs.exception.DfsException; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.StringUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.SysDownloadCenterDTO; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysDownloadCenterService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +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; + + /** + * 初始化 + * + * @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, @RequestBody JSONObject jsonObjecte) throws DfsException { + if(sysDownloadCenterDTO.getMaterial_type()==null|| "".equals(sysDownloadCenterDTO.getMaterial_type())){ + return this.error("请选择文件类型!"); + } + //设置保留位数 + DecimalFormat df = new DecimalFormat("0.00"); + JSONArray array = jsonObjecte.getJSONArray("sysDownloadCenterDTO"); + List 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(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) throws DfsException { + sysDownloadCenterService.delete(id); + fsService.deleteObject(id); + return this.ok("删除成功!"); + + } + + //移除文件 + @GetMapping("/del/{id}") + public ResponseMessage del(@PathVariable String id) throws DfsException { + fsService.deleteObject(id); + return this.ok("文件移除成功!"); + } + + //批量下载 + @GetMapping("/batchDownload/{ids}") + public void batchDownload(@PathVariable String ids, HttpServletResponse response) throws DfsException { + 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 (DfsException 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, DfsException { + 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; + } + + + //查询用户是否为超级管理员 + @GetMapping("/queryUser") + public ResponseMessage queryUser() { + SysUser sysUser = currentUserService.getCurrentUser(); + //超级管理员 + if ("1".equals(sysUser.getUserType())) { + return ResponseMessage.ok(true); + } else { + return ResponseMessage.ok(false); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysErrorController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysErrorController.java new file mode 100644 index 0000000..432704a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysErrorController.java @@ -0,0 +1,161 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.entity.SysError; +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 tableData = tableDataQuery(pageData, 1, size); + pageData.put("t_tableData", tableData); + + /* List 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(pageData); + } + @PostMapping("/doQuery/goIt") + public ResponseMessage queryBySome(@RequestBody JSONObject pageData){ + Map> map= (Map>) 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 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(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 tableData = tableDataQuery(jsonObject, page, size); + jsonObject.put("t_tableData", tableData); + return ResponseMessage.ok(jsonObject); + } + @PostMapping("/delete") + public ResponseMessage deleteError(@RequestBody JSONObject pageData){ + Map map= (Map) pageData.get("data"); + try { + SysError sysError=sysErrorService.getSysErrorBean2(map); + sysErrorService.deleteError(sysError); + List 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> map= (Map>) pageData.get("f_errorForm_n"); + SysError sysError=sysErrorService.getSysErrorBean1(map); + sysErrorService.save(sysError); + List 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 maps= (HashMap) 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 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> map= (Map>) 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(pageData); + } + public HashMap 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> data = helper.queryPagination(querySQL.toString(), new ArrayList<>(), rs -> { + Map 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 gridData = new HashMap<>(); + gridData.put("total", data.getTotal()); + gridData.put("Data", data.getData()); + return gridData; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFeedbackController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFeedbackController.java new file mode 100644 index 0000000..c346cb1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFeedbackController.java @@ -0,0 +1,134 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.dfs.FSObject; +import com.insigma.framework.dfs.FSService; +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 pageInfo = sysFeedbackService.page(queryDTO, page, size); + return ResponseMessage.ok(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(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 result = new HashMap<>(); + result.put("location", "/sys/feedback/static/images/" + fsService.pubObject(fsObject) + file.getContentType().substring(file.getContentType().lastIndexOf("/")).toLowerCase().replace("/", ".")); + return ResponseMessage.ok(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()); + } + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFunctionDocController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFunctionDocController.java new file mode 100644 index 0000000..6b9b7db --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysFunctionDocController.java @@ -0,0 +1,222 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.dfs.FSObject; +import com.insigma.framework.dfs.FSService; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.dto.SysFunctionDocDTO; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.MenuService; +import com.insigma.sys.service.SysFunctionDocService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.controller.BaseController; +import com.insigma.web.support.repository.MdParamRepository; +import com.insigma.web.support.entity.MdParam; +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 + private MdParamRepository mdParamRepository; + + @Autowired(required = false) + private FSService fsService; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private MenuService menuService; + + @GetMapping("/queryTree") + public ResponseMessage queryTable(){ + List menuDTOS = menuService.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) { + SysMenu sysMenu; + String a=jsonObject.get("functionid").toString(); + if (a!=null){ + long functionid =(long)Integer.parseInt(a); + sysMenu =menuService.findMenuById(functionid); + List menulist=menuService.findTreesByPId(sysMenu.getFunctionid()); + if (menulist.size()>0){ + //有子类 + return ResponseMessage.ok(sysMenu); + }else { + //没有子类 + return ResponseMessage.ok("重复",sysMenu); + } + }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 menuDTOS=menuService.queryMenuByFuntypeAndActive(funtype); + JSONArray jsonArray = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(menuDTOS)), "functionid", "parentid", "children"); + jsonObject.put("treedata",jsonArray); + long fId=Integer.parseInt(id); + SysMenu menu=menuService.findMenuById(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); + }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为空"); + } + MdParam mdParam = mdParamRepository.findByLocation(location); + if (mdParam == null) { + return ResponseMessage.error("模块不存在"); + } + functionid = mdParam.getFunctionid(); + } else { + functionid = Long.parseLong(tmp); + } + SysFunctionDocDTO aysFunctionDocDTO = sysFunctionDocService.queryByFunctionID(functionid); + if (aysFunctionDocDTO == null) { + return ResponseMessage.error("未配置该模块的功能介绍"); + } + return ResponseMessage.ok(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 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(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()); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGrantController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGrantController.java new file mode 100644 index 0000000..ad0b32d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGrantController.java @@ -0,0 +1,343 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CommonValidator; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import com.insigma.sys.service.Aa26Service; +import com.insigma.sys.service.SysOrgService; +import com.insigma.sys.service.SysUserService; +import com.insigma.web.support.service.CodeTypeService; +import com.insigma.web.support.util.JavaBeanUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + + +@RestController +@RequestMapping("/sys/grant") +@Slf4j +public class SysGrantController { + @Autowired + private CodeTypeService codeTypeService; + + @Autowired + private SysUserService sysUserService; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private SysOrgService sysOrgService; + + @Autowired + private Aa26Service aa26Service; + + @Autowired + private CommonValidator validator; + + /** + * 初始化页面数据 + * + * @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(jsonObject); + } + + /** + * 保存用户 + * + * @param pageData + * @return + */ + @PostMapping("/doSave") + public ResponseMessage save(@RequestBody JSONObject pageData) { + try { + SysUser sysUser = JavaBeanUtils.pageElementToBean(pageData,SysUser.class); + JSONArray roleIds = pageData.getJSONObject("roleIds").getJSONArray("value"); + List list = new ArrayList<>(); + for (Object roleId : roleIds) { + if (roleId != null) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(roleId.toString()); + list.add(sysUserRole); + } + } + if (!validator.validateRoleIds(roleIds.toJavaList(String.class))) { + throw new AppException("无权操作"); + } + sysUser.setSysUserRoleList(list); + sysUserService.saveUserRole(sysUser); + ResponseMessage rm = ResponseMessage.ok("保存成功"); + + return rm; + } 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.queryOneUser(userId); + //sysUser.setPassWD(null); + List roleList = sysUserService.queryUserRole(userId); + List areaList = sysUserService.queryUserArea(userId); + SysOrg sysOrg = sysOrgService.findByOrgid(sysUser.getOrgId()); + Aa26 aa26 = aa26Service.findByAab301(sysUser.getAreaId() + ""); + Map map = new ConcurrentHashMap<>(); + map.put("sysUser", sysUser); + map.put("roleList", roleList); + map.put("areaList", areaList); + + if (sysOrg != null) { + map.put("orgId", sysUser.getOrgId()); + map.put("sysOrgs",sysOrg); + //sysOrgService.findByRegioncode(sysUser.getAreaId()+"") + } + if (aa26 != null) + map.put("aa26", aa26); + return ResponseMessage.ok(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) { + Page list = sysUserService.findAll(logonName, displayName, orgId, userState,userType,aa26,cardId, page, size,"3"); + return ResponseMessage.ok(list); + } + + /** + * 注销用户 + * + * @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); + 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); + 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("重置密码成功"); + } 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(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(orgNodes); + } + @GetMapping("/getOrgTreeNodes1/{userType}") + public ResponseMessage getOrgTreeNodes1(@PathVariable String userType) { + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(sysUserService.findAllOrg())), "orgid", "parentid", "children"); + //orgNodes= JSONArray.parseArray(JSONArray.toJSONString(orgNodes).replace("aab301","id")); + return ResponseMessage.ok(orgNodes); + } + @GetMapping("getUserTypeCode") + public ResponseMessage getUserTypeCode() { + List> list = sysUserService.findUsetTypeCode(); + return ResponseMessage.ok(list); + } + + @GetMapping("getSlevel") + public ResponseMessage getSlevel() { + List> list = sysUserService.findSlevel(); + return ResponseMessage.ok(list); + } + + @GetMapping("getUserStateCode") + public ResponseMessage getUserStateCode() { + return ResponseMessage.ok(sysUserService.getUserStateCode()); + } + + @GetMapping("/getRoleList/{userType}") + public ResponseMessage getRoleList(@PathVariable("userType") String userType) { + List list = sysUserService.findByRoleType(userType); + return ResponseMessage.ok(list); + } + + @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 list = sysUserService.findAllOrg(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有区域 + * @return + */ + @GetMapping("/findAllAa26") + private ResponseMessage findAllAa26() { + List list = sysOrgService.getAA26(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有机构,返回格式为树结构 + * @return + */ + @GetMapping("/findAllOrgTree") + private ResponseMessage findAllOrgTree() { + List list = sysUserService.findAllOrg(); + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(list)), "orgid", "parentid", "children"); + + return ResponseMessage.ok(orgNodes); + } + + /** + * 通用获取下拉框选项 + * @param codeType + * @return + */ + @GetMapping("/getAa10Code/{codeType}") + public ResponseMessage getAa10Code(@PathVariable String codeType){ + List> list = sysUserService.getAa10Code(codeType); + return ResponseMessage.ok(list); + } + + /** + * 获取当前登录用户 + * @return + */ + @GetMapping("/getCurrentUser") + public ResponseMessage getCurrentUser(){ + return ResponseMessage.ok(currentUserService.getCurrentUser()); + } + +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGuideController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGuideController.java new file mode 100644 index 0000000..c38e4fa --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysGuideController.java @@ -0,0 +1,213 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.sys.dto.SysGuideDTO; +import com.insigma.sys.service.SysGuideService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +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("
", "\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 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(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> map = sysGuideService.findFrontPage(); + return ResponseMessage.ok(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(sysGuideService.findDetailsPage(id)); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageController.java new file mode 100644 index 0000000..1905677 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageController.java @@ -0,0 +1,119 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.dfs.FSObject; +import com.insigma.framework.dfs.FSService; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.MessageDTO; +import com.insigma.sys.entity.SysUser; +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 pageInfo = sysMessageService.getSysMessageList(sysUser, queryDTO, page, size, false); + return ResponseMessage.ok(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(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()); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageManageController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageManageController.java new file mode 100644 index 0000000..efb4e9c --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysMessageManageController.java @@ -0,0 +1,130 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.dfs.FSObject; +import com.insigma.framework.dfs.FSService; +import com.insigma.framework.util.IDUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.LazyTreeNode; +import com.insigma.sys.dto.MessageDTO; +import com.insigma.sys.entity.SysUser; +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 pageInfo = sysMessageService.getSysMessageList(sysUser, queryDTO, page, size, true); + return ResponseMessage.ok(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(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> list = sysMessageService.getUserOrgTree(parentId); + return ResponseMessage.ok(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 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(result); + } catch (Exception e) { + return ResponseMessage.error(e.getMessage()); + } + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysOpLogController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysOpLogController.java new file mode 100644 index 0000000..49281b0 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysOpLogController.java @@ -0,0 +1,61 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysOperateLogDTO; +import com.insigma.sys.service.SysOperateLogService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +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; + + +/** + * 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 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)); + + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUserController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUserController.java new file mode 100644 index 0000000..1e05862 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUserController.java @@ -0,0 +1,476 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.encryption.util.SM3Utils; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.IDCardUtil; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CommonValidator; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import com.insigma.sys.service.Aa26Service; +import com.insigma.sys.service.SysOrgService; +import com.insigma.sys.service.SysUserService; +import com.insigma.web.support.service.CodeTypeService; +import com.insigma.web.support.util.JavaBeanUtils; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +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(jsonObject); + } + + /** + * 保存用户 + * + * @param pageData + * @return + */ + @PostMapping("/doSave") + public ResponseMessage save(@RequestBody JSONObject pageData) { + try { + SysUser sysUser = JavaBeanUtils.pageElementToBean(pageData,SysUser.class); + 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 list = new ArrayList<>(); + for (Object roleId : roleIds) { + if (roleId != null) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(roleId.toString()); + list.add(sysUserRole); + } + } + sysUser.setSysUserRoleList(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 addAreaIds = new ArrayList<>(); + List removeAreaIds = new ArrayList<>(); + for (int i = 0; i < areaIds.size(); i++) { + JSONObject obj = areaIds.getJSONObject(i); + if ((boolean) obj.get("value")) { + addAreaIds.add(obj.get("key").toString()); + } else { + removeAreaIds.add(obj.get("key").toString()); + } + } + Map> map = new ConcurrentHashMap<>(); + map.put("addAreaIds", addAreaIds); + map.put("removeAreaIds", removeAreaIds); + + 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.queryOneUser(userId); + if (!validator.validateUser(sysUser.getUserId())) { + throw new AppException("无权查看"); + } + //sysUser.setPassWD(null); + List roleList = sysUserService.queryUserRole(userId); + List areaList = sysUserService.queryUserArea(userId); + SysOrg sysOrg = sysOrgService.findByOrgid(sysUser.getOrgId()); + Aa26 aa26 = aa26Service.findByAab301(sysUser.getAreaId() + ""); + Map map = new ConcurrentHashMap<>(); + map.put("sysUser", sysUser); + map.put("roleList", roleList); + map.put("areaList", areaList); + + if (sysOrg != null) { + map.put("orgId", sysUser.getOrgId()); + map.put("sysOrgs",sysOrg); + //sysOrgService.findByRegioncode(sysUser.getAreaId()+"") + } + if (aa26 != null) + map.put("aa26", aa26); + return ResponseMessage.ok(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) { + Page list = sysUserService.findAll(logonName, displayName, orgId, userState,userType,aa26,cardId, page, size,"1"); + JSONObject jsonObject=new JSONObject(); + JSONArray jsonArray=JSONArray.parseArray(JSONArray.toJSONString(list.getContent())); + for(int i=0; i < jsonArray.size(); i++){ + if(jsonArray.getJSONObject(i).getString("orgId") != null) { + SysOrg sysOrg = sysOrgService.findByOrgid(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.findByAab301(jsonArray.getJSONObject(i).getString("areaId")); + if(a != null) { + jsonArray.getJSONObject(i).put("areaId", a.getAaa146()); + }else{ + jsonArray.getJSONObject(i).put("areaId", ""); + } + } + } + jsonObject.put("totalElements",list.getTotalElements()); + jsonObject.put("content",jsonArray); + return ResponseMessage.ok(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(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(orgNodes); + } + @GetMapping("/getOrgTreeNodes1/{userType}") + public ResponseMessage getOrgTreeNodes1(@PathVariable String userType) { + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(sysUserService.findAllOrg())), "orgid", "parentid", "children"); + //orgNodes= JSONArray.parseArray(JSONArray.toJSONString(orgNodes).replace("aab301","id")); + return ResponseMessage.ok(orgNodes); + } + @GetMapping("getUserTypeCode") + public ResponseMessage getUserTypeCode() { + List> list = sysUserService.findUsetTypeCode(); + return ResponseMessage.ok(list); + } + + @GetMapping("getUserStateCode") + public ResponseMessage getUserStateCode() { + return ResponseMessage.ok(sysUserService.getUserStateCode()); + } + + @GetMapping("/getRoleList/{userType}") + public ResponseMessage getRoleList(@PathVariable("userType") String userType) { + List list = sysUserService.findByRoleType(userType); + return ResponseMessage.ok(list); + } + + @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 list = sysUserService.findAllOrg(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有区域 + * @return + */ + @GetMapping("/findAllAa26") + private ResponseMessage findAllAa26() { + List list = sysOrgService.getAA26(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有机构,返回格式为树结构 + * @return + */ + @GetMapping("/findAllOrgTree") + private ResponseMessage findAllOrgTree() { + List list = sysUserService.findAllOrg(); + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(list)), "orgid", "parentid", "children"); + + return ResponseMessage.ok(orgNodes); + } + + /** + * 通用获取下拉框选项 + * @param codeType + * @return + */ + @GetMapping("/getAa10Code/{codeType}") + public ResponseMessage getAa10Code(@PathVariable String codeType){ + List> list = sysUserService.getAa10Code(codeType); + return ResponseMessage.ok(list); + } + + /** + * 获取当前登录用户 + * @return + */ + @GetMapping("/getCurrentUser") + public ResponseMessage getCurrentUser(){ + return ResponseMessage.ok(currentUserService.getCurrentUser()); + } + + + /** + * 获取当前登录用户 + * @return + */ + @GetMapping("/getUserSlevel") + public ResponseMessage getUserSlevel(){ + + /*return ResponseMessage.ok(sysUserService.getUserSlevel());*/ + ResponseMessage t = new ResponseMessage(); + t.setStatus("0"); + t.setData(sysUserService.getUserSlevel()); + return t; + } + + +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUsertmsController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUsertmsController.java new file mode 100644 index 0000000..bbe5b3f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SysUsertmsController.java @@ -0,0 +1,350 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import com.insigma.sys.service.Aa26Service; +import com.insigma.sys.service.SysOrgService; +import com.insigma.sys.service.SysUserService; +import com.insigma.web.support.service.CodeTypeService; +import com.insigma.web.support.util.JavaBeanUtils; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +@RestController +@RequestMapping("/sys/usertms") +@Slf4j +public class SysUsertmsController { + @Autowired + private CodeTypeService codeTypeService; + + @Autowired + private SysUserService sysUserService; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private SysOrgService sysOrgService; + + @Autowired + private Aa26Service aa26Service; + + /** + * 初始化页面数据 + * + * @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(jsonObject); + } + + /** + * 保存用户 + * + * @param pageData + * @return + */ + @PostMapping("/doSave") + public ResponseMessage save(@RequestBody JSONObject pageData) { + try { + SysUser sysUser = JavaBeanUtils.pageElementToBean(pageData,SysUser.class); + 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) + "")); + + if(!SysManageMode.isTripleMode()){//不是三员制 + JSONArray roleIds = pageData.getJSONObject("roleIds").getJSONArray("value"); + List list = new ArrayList<>(); + for (Object roleId : roleIds) { + if (roleId != null) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(roleId.toString()); + list.add(sysUserRole); + } + } + sysUser.setSysUserRoleList(list); + } + JSONArray areaIds = pageData.getJSONObject("aa26Tree").getJSONArray("value"); + List addAreaIds = new ArrayList<>(); + List removeAreaIds = new ArrayList<>(); + for (int i = 0; i < areaIds.size(); i++) { + JSONObject obj = (JSONObject) areaIds.get(i); + if ((boolean) obj.get("value")) { + addAreaIds.add(obj.get("key").toString()); + } else { + removeAreaIds.add(obj.get("key").toString()); + } + } + Map> map = new ConcurrentHashMap<>(); + map.put("addAreaIds", addAreaIds); + map.put("removeAreaIds", removeAreaIds); + + sysUserService.saveUser(sysUser, map); + ResponseMessage rm = ResponseMessage.ok("保存成功"); + + return rm; + } 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.queryOneUser(userId); + //sysUser.setPassWD(null); + List roleList = sysUserService.queryUserRole(userId); + List areaList = sysUserService.queryUserArea(userId); + SysOrg sysOrg = sysOrgService.findByOrgid(sysUser.getOrgId()); + Aa26 aa26 = aa26Service.findByAab301(sysUser.getAreaId() + ""); + Map map = new ConcurrentHashMap<>(); + map.put("sysUser", sysUser); + map.put("roleList", roleList); + map.put("areaList", areaList); + + if (sysOrg != null) { + map.put("orgId", sysUser.getOrgId()); + map.put("sysOrgs",sysOrg); + //sysOrgService.findByRegioncode(sysUser.getAreaId()+"") + } + if (aa26 != null) + map.put("aa26", aa26); + return ResponseMessage.ok(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) { + Page list = sysUserService.findAll(logonName, displayName, orgId, userState,userType,aa26,cardId, page, size,"2"); + return ResponseMessage.ok(list); + } + + /** + * 注销用户 + * + * @param data + * @return + */ + @PostMapping(value = "/logoutUser") + public ResponseMessage logoutUser(@RequestBody(required = true) JSONObject data) { + try { + String userId = data.getString("userId"); + sysUserService.logoutUser(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"); + 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"); + sysUserService.lockUser(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"); + sysUserService.resetPassWD(userId); + 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(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(orgNodes); + } + @GetMapping("/getOrgTreeNodes1/{userType}") + public ResponseMessage getOrgTreeNodes1(@PathVariable String userType) { + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(sysUserService.findAllOrg())), "orgid", "parentid", "children"); + //orgNodes= JSONArray.parseArray(JSONArray.toJSONString(orgNodes).replace("aab301","id")); + return ResponseMessage.ok(orgNodes); + } + @GetMapping("getUserTypeCode") + public ResponseMessage getUserTypeCode() { + List> list = sysUserService.findUsetTypeCode(); + return ResponseMessage.ok(list); + } + + @GetMapping("getSlevel") + public ResponseMessage getSlevel() { + List> list = sysUserService.findSlevel(); + return ResponseMessage.ok(list); + } + + @GetMapping("getUserStateCode") + public ResponseMessage getUserStateCode() { + return ResponseMessage.ok(sysUserService.getUserStateCode()); + } + + @GetMapping("/getRoleList/{userType}") + public ResponseMessage getRoleList(@PathVariable("userType") String userType) { + List list = sysUserService.findByRoleType(userType); + return ResponseMessage.ok(list); + } + + @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 list = sysUserService.findAllOrg(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有区域 + * @return + */ + @GetMapping("/findAllAa26") + private ResponseMessage findAllAa26() { + List list = sysOrgService.getAA26(); + return ResponseMessage.ok(list); + } + + /** + * 获取所有机构,返回格式为树结构 + * @return + */ + @GetMapping("/findAllOrgTree") + private ResponseMessage findAllOrgTree() { + List list = sysUserService.findAllOrg(); + JSONArray orgNodes = TreeUtil.listToTree(JSONArray.parseArray(JSONArray.toJSONString(list)), "orgid", "parentid", "children"); + + return ResponseMessage.ok(orgNodes); + } + + /** + * 通用获取下拉框选项 + * @param codeType + * @return + */ + @GetMapping("/getAa10Code/{codeType}") + public ResponseMessage getAa10Code(@PathVariable String codeType){ + List> list = sysUserService.getAa10Code(codeType); + return ResponseMessage.ok(list); + } + + /** + * 获取当前登录用户 + * @return + */ + @GetMapping("/getCurrentUser") + public ResponseMessage getCurrentUser(){ + return ResponseMessage.ok(currentUserService.getCurrentUser()); + } + +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SyslogonLogController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SyslogonLogController.java new file mode 100644 index 0000000..28a0361 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SyslogonLogController.java @@ -0,0 +1,60 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysLogonLogDTO; +import com.insigma.sys.service.SyslogonLogService; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +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; + +/** + * fukq 2020/6/2 + */ +@RestController +@RequestMapping("/sys/syslogonlog") +public class SyslogonLogController extends BaseController { + + + @Autowired + 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 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)); + + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/SystemConfigController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/SystemConfigController.java new file mode 100644 index 0000000..5d1bc6b --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/SystemConfigController.java @@ -0,0 +1,27 @@ +package com.insigma.sys.controller; + +import com.insigma.framework.ResponseMessage; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.Map; + +@RestController +public class SystemConfigController { + @Autowired + private JdbcTemplate jdbcTemplate; + @GetMapping("/getSystemPeiz") + public ResponseMessage getSystemPeiz() { + String sql="select aaa001,aaa005 from aa01 where aaa001 in('logo_url','sidebar_backgroundImage','home_image','sidebar_title','sidebar_color'\n" + + ",'home_title','login_title')"; + Map map = new HashMap<>(); + jdbcTemplate.query(sql, (rs, i) -> { + map.put(rs.getString("aaa001"), rs.getString("aaa005")); + return map; + }); + return ResponseMessage.ok(map); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/controller/UserMenuController.java b/template/insiis-web/src/main/java/com/insigma/sys/controller/UserMenuController.java new file mode 100644 index 0000000..eaded89 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/controller/UserMenuController.java @@ -0,0 +1,49 @@ +package com.insigma.sys.controller; + +import com.alibaba.fastjson.JSONArray; +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.util.TreeUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.MenuService; +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 MenuService menuService; + + @Autowired + private CurrentUserService currentUserService; + + @GetMapping("/getMenuList") + public ResponseMessage getMenuList() { + SysUser sysUser = currentUserService.getCurrentUser(); + List menuDTOS = menuService.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 buttonAuthList = menuService.getButtonAuthList(sysUser, location); + return ResponseMessage.ok(buttonAuthList); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/CodeDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/CodeDTO.java new file mode 100644 index 0000000..b13cec8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/CodeDTO.java @@ -0,0 +1,19 @@ +package com.insigma.sys.dto; + +import com.insigma.sys.entity.Aa10; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * Created by yinjh on 2019/1/9. + */ +@Data +public class CodeDTO implements Serializable { + + private Long total; + + private List data; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackAnswerDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackAnswerDTO.java new file mode 100644 index 0000000..e137366 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackAnswerDTO.java @@ -0,0 +1,31 @@ +package com.insigma.sys.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Data +public class FeedbackAnswerDTO implements Serializable { + + private String id; + + private String content; + + private String userId; + + private String displayName; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private String type; + + private String feedbackId; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackDTO.java new file mode 100644 index 0000000..de35def --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/FeedbackDTO.java @@ -0,0 +1,38 @@ +package com.insigma.sys.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import com.insigma.sys.entity.SysFeedbackAnswer; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Data +public class FeedbackDTO implements Serializable { + + private String id; + + private String title; + + private String content; + + private String userId; + + private String displayName; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private String answered; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private List dateRange; + + List answerList; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/ImportConfigReDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/ImportConfigReDTO.java new file mode 100644 index 0000000..7c7312f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/ImportConfigReDTO.java @@ -0,0 +1,21 @@ +package com.insigma.sys.dto; + +import com.insigma.web.support.dto.ImportConfigDTO; +import com.insigma.web.support.dto.ImportConfigDetailDTO; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author yinjh + * @version 2023/7/18 + * @since 2.7.0 + */ +@Data +public class ImportConfigReDTO implements Serializable { + + private ImportConfigDTO config; + + private List details; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/LazyTreeNode.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/LazyTreeNode.java new file mode 100644 index 0000000..88f0f00 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/LazyTreeNode.java @@ -0,0 +1,24 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author yinjh + * @version 2021/8/23 + */ +@Data +public class LazyTreeNode implements Serializable { + + private T id; + + private String label; + + private T parent; + + private Boolean isLeaf; + + private Object extra; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/MenuDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/MenuDTO.java new file mode 100644 index 0000000..9ef901e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/MenuDTO.java @@ -0,0 +1,19 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class MenuDTO implements Serializable { + private long functionid; //功能ID + private String path;//链接 + private String title;//标题 + private long parentid;//父功能ID + private String icon;//节点图标 + private int funorder;//排序号 + private String nodetype;//节点类型:1-菜单节点,2-菜单叶子 + private String description; // 功能描述 + private String appid;//所属应用系统 + private String openmode;//打开模式:1-tab页打开,2-浏览器tab页打开 +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/MessageDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/MessageDTO.java new file mode 100644 index 0000000..903c4a8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/MessageDTO.java @@ -0,0 +1,37 @@ +package com.insigma.sys.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * Created by yinjh on 2020/6/15. + */ +@Data +public class MessageDTO implements Serializable { + + private String messageId; + + private String title; + + private String content; + + private String creator; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private Date createTime; + + private String flag; // 0:未读,1:已读 + + private List userIds; + + private Date startDate; + + private Date endDate; + + private String type; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/MonitorCentersDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/MonitorCentersDTO.java new file mode 100644 index 0000000..73017ca --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/MonitorCentersDTO.java @@ -0,0 +1,31 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author GH + * @ClassName: MonitorCentersDTO + * @Description: + * @version 2021/12/7 15:49 + */ +@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; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/OrgDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/OrgDTO.java new file mode 100644 index 0000000..fcfafc6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/OrgDTO.java @@ -0,0 +1,22 @@ +package com.insigma.sys.dto; + +import com.insigma.sys.entity.SysOrg; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author jinw + * @version 2019/1/4 + *

epsoft - insiis7

+ */ +@Data +public class OrgDTO extends SysOrg { + + /** + * 机构险种编码集合 + */ + private List instypes; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/RoleDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/RoleDTO.java new file mode 100644 index 0000000..0b00d6d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/RoleDTO.java @@ -0,0 +1,18 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * Created by zxy on 2019/1/7. + */ +@Data +public class RoleDTO implements Serializable { + private String rolename; + private String roledesc; + private String roletype; + private int orgid; + private int areaid; + private String creatorid; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/ScmMyFavoritesDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/ScmMyFavoritesDTO.java new file mode 100644 index 0000000..b05ca64 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/ScmMyFavoritesDTO.java @@ -0,0 +1,36 @@ +package com.insigma.sys.dto; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import javax.persistence.Table; +import java.util.Date; + +/** + * @Author tanyj + * @Version 2022/8/22 17:13 + * @since 2.7.0 + **/ +@Data +public class ScmMyFavoritesDTO { + + private String id; + + private Integer functionId; + + private String functionRoutePath; + + private String userid; + + private Date favorTime; + + private Integer orderNo; + + private String title; + + private Boolean tableDelFlag; + + private String icon; +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppAddressDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppAddressDTO.java new file mode 100644 index 0000000..7bafb52 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppAddressDTO.java @@ -0,0 +1,19 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author GH + * @version 2022/3/28 + * @since 2.6.5 + */ + +@Data +public class SysAppAddressDTO implements Serializable { + private String addressId; + private String portalUrl; + private String appUrl; + private String appId; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppDTO.java new file mode 100644 index 0000000..8348df8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysAppDTO.java @@ -0,0 +1,25 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @author GH + * @version 2022/3/28 + * @since 2.6.5 + */ + +@Data +public class SysAppDTO implements Serializable { + private String appId; + private String appCode; + private String appName; + private Long orderNo; + private Date createTime; + private Date updateTime; + private String active; + private String secretKey; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysDownloadCenterDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysDownloadCenterDTO.java new file mode 100644 index 0000000..9c7e0f5 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysDownloadCenterDTO.java @@ -0,0 +1,32 @@ +package com.insigma.sys.dto; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.Data; +import java.io.Serializable; +import java.util.Date; + +/** + * @author GH + * @ClassName: SysDownloadCenterDTO + * @Description: + * @version 2021/8/4 10:11 + */ +@Data +public class SysDownloadCenterDTO implements Serializable { + + 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; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysErrorDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysErrorDTO.java new file mode 100644 index 0000000..856fb53 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysErrorDTO.java @@ -0,0 +1,14 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.util.Date; +@Data +public class SysErrorDTO { + private String id; + private String serviceName; + private String functionName; + private String errorCode; + private String message; + private Date createTime; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysFunctionDocDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysFunctionDocDTO.java new file mode 100644 index 0000000..03c4ded --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysFunctionDocDTO.java @@ -0,0 +1,16 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.util.Date; + + +@Data +public class SysFunctionDocDTO { + + private long functionid; + private String overview; + private String detailed_view; + private Date update_time; + private String update_name; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysGuideDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysGuideDTO.java new file mode 100644 index 0000000..24a49b3 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysGuideDTO.java @@ -0,0 +1,30 @@ +package com.insigma.sys.dto; + + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +@Data +public class SysGuideDTO implements Serializable { + + 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; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysLogonLogDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysLogonLogDTO.java new file mode 100644 index 0000000..0318a46 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysLogonLogDTO.java @@ -0,0 +1,23 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.util.Date; +@Data +public class SysLogonLogDTO { + + private String logonlogid; + private String userid; + private String logonip; + private Date logontime; + private Date logofftime; + private String successflag = "1"; + private String failreason; + private String logoffreason; + private String sessionid; + private String logonname; + private String displayname; + private String opDate; + private String browser; + private String os; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysOperateLogDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysOperateLogDTO.java new file mode 100644 index 0000000..ded7d72 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysOperateLogDTO.java @@ -0,0 +1,23 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.util.Date; + +@Data +public class SysOperateLogDTO { + private String operatelogid; + private String userid; + private String logonlogid; + private String logonip; + private String operate; + private String url; + private Date begintime; + private Date endtime; + private String functionid; + private String description; + private String logonname; + private String displayname; + private String title; + private String opDate; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/SysRoleDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysRoleDTO.java new file mode 100644 index 0000000..e15c3a8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/SysRoleDTO.java @@ -0,0 +1,30 @@ +package com.insigma.sys.dto; + + +import com.insigma.sys.entity.SysRole; + +import java.util.List; + +/** + * Created by Administrator on 2019/1/9. + */ +public class SysRoleDTO { + private Long total; + private List data; + + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/TreeNode.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/TreeNode.java new file mode 100644 index 0000000..48e46b6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/TreeNode.java @@ -0,0 +1,21 @@ +package com.insigma.sys.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * @author jinw + * @version 2019/1/7 + *

epsoft - insiis7

+ */ +@Data +public class TreeNode implements Serializable { + + private T id; + private String label; + private List> children; + private T parent; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/dto/UserDTO.java b/template/insiis-web/src/main/java/com/insigma/sys/dto/UserDTO.java new file mode 100644 index 0000000..e50549d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/dto/UserDTO.java @@ -0,0 +1,39 @@ +package com.insigma.sys.dto; + + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @Author: caic + * @version: 16:15 2019/1/11 + * @Description: + */ +@Entity +@Table(name="sysuser") +@Data +public class UserDTO { + @Id + private String userId; + private String logonName; + private String displayName; + private Long orgId; + private String userState; + private String userType; + private String areaId; + private String cardType; + private String cardId; + private String tel; + private String visible; + +// @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) +// @JoinColumn(name = "userType",referencedColumnName="aaa102",insertable=false,updatable=false) +// private Aa10 userTypeCode; + +// @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) +// @JoinColumn(name = "userState",referencedColumnName="aaa102") +// private Aa10 userStateCode; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa10.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa10.java new file mode 100644 index 0000000..a944317 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa10.java @@ -0,0 +1,52 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * Created by yinjh on 2019/1/9. + */ +@Data +@Entity +@Table(name = "AA10") +public class Aa10 implements Serializable { + + @Id + //@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_AAZ093") +// @SequenceGenerator(name = "sq_aaz093", sequenceName = "sq_aaz093", allocationSize = 1) + /*@TableGenerator(name = "sq_aaz093", + table = "sys_sequence", + pkColumnName = "sequence_name", + valueColumnName = "sequence_next_value", + pkColumnValue = "sq_aaz093", + allocationSize = 1) + @GeneratedValue(strategy = GenerationType.TABLE, generator = "sq_aaz093")*/ + @GenericGenerator( name="sq_aaz093", strategy="com.insigma.framework.db.generator.TableOrSequenceGenerator", + parameters = { + @Parameter( name = "table_name", value = "sys_sequence"), + @Parameter( name = "value_column_name", value = "sequence_next_value"), + @Parameter( name = "segment_column_name",value = "sequence_name"), + @Parameter( name = "segment_value", value = "sq_aaz093"), + @Parameter( name = "increment_size", value = "10"), + @Parameter( name = "optimizer",value = "pooled-lo") + }) + @GeneratedValue(generator="sq_aaz093") + private Long aaz093; + + private String aaa100; + + private String aaa102; + + private String aaa103; + + private String aaa105; + + private String aae100; + + private String aaa104; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa26.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa26.java new file mode 100644 index 0000000..ecaedf4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/Aa26.java @@ -0,0 +1,26 @@ +package com.insigma.sys.entity; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; + +/** + * @author jinw + * @version 2019/1/8 + *

epsoft - insiis7

+ */ +@Entity +@Data +public class Aa26 implements Serializable { + + @Id + private String aab301; + private String aaa146; + private String aaa147; + private String aaa148; + private String eae037; + private String idpath; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/ScmMyFavorites.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/ScmMyFavorites.java new file mode 100644 index 0000000..4eda0e6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/ScmMyFavorites.java @@ -0,0 +1,46 @@ +package com.insigma.sys.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.util.Date; + +/** + * @Author tanyj + * @Version 2022/8/22 17:13 + * @since 2.7.0 + **/ +@Entity +@Data +@Table(name = "SCM_MY_FAVORITES") +public class ScmMyFavorites implements Serializable { + + @Id + @Column(name = "ID") + private String id; + + @Column(name = "FUNCTIONID") + private int functionId; + + @Column(name = "FUNCTION_ROUTE_PATH") + private String functionRoutePath; + + @Column(name = "USERID") + private String userid; + + @Column(name = "FAVOR_TIME") + private Date favorTime; + + @Column(name = "ORDER_NO") + private int orderNo; + + @Column(name = "TITLE") + private String title; +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysApp.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysApp.java new file mode 100644 index 0000000..a5ed81b --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysApp.java @@ -0,0 +1,71 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.util.Date; + +/** + * 应用表 + * + * @author yinjh + * @version 2022/3/28 + * @since 2.6.5 + */ +@Data +@Table(name = "SYSAPP") +@Entity +public class SysApp { + + /** + * 应用ID + */ + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + @Column(name = "APP_ID") + private String appId; + + /** + * 应用编码 + */ + @Column(name = "APP_CODE") + private String appCode; + + /** + * 应用名称 + */ + @Column(name = "APP_NAME") + private String appName; + + /** + * 排序号 + */ + @Column(name = "ORDER_NO") + private Long orderNo; + + /** + * 创建时间 + */ + @Column(name = "CREATE_TIME") + private Date createTime; + + /** + * 修改时间 + */ + @Column(name = "UPDATE_TIME") + private Date updateTime; + + /** + * 是否有效,1:有效,0:无效 + */ + @Column(name = "ACTIVE") + private String active; + + /** + * 应用安全key + */ + @Column(name = "SECRET_KEY") + private String secretKey; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysAppAddress.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysAppAddress.java new file mode 100644 index 0000000..ebca9ff --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysAppAddress.java @@ -0,0 +1,47 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +/** + * 应用地址配置表 + * + * @author yinjh + * @version 2022/3/28 + * @since 2.6.5 + */ +@Data +@Table(name = "SYSAPPADDRESS") +@Entity +public class SysAppAddress { + + /** + * 应用地址ID + */ + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + @Column(name = "ADDRESS_ID") + private String addressId; + + /** + * 门户地址 + */ + @Column(name = "PORTAL_URL") + private String portalUrl; + + /** + * 应用地址 + */ + @Column(name = "APP_URL") + private String appUrl; + + /** + * 应用ID + */ + @Column(name = "APP_ID") + private String appId; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadCenter.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadCenter.java new file mode 100644 index 0000000..1bdd94a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadCenter.java @@ -0,0 +1,42 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.util.Date; + +/** + * @author GH + * @ClassName: SysDownloadCenter + * @Description: 下载中心实体类 + * @version 2021/8/4 9:53 + */ + +@Entity +@Table(name="SYSDOWNLOADCENTER") +@Data +public class SysDownloadCenter implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + private String id; + + //材料名称 + private String material_name; + + //材料类型 + private String material_type; + + //材料大小 + private String material_size; + + //上传时间 + private Date upload_time; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadLog.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadLog.java new file mode 100644 index 0000000..54a2450 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysDownloadLog.java @@ -0,0 +1,31 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.util.Date; + +/** + * @author yinjh + * @version 2021/12/9 + */ +@Entity +@Table(name = "SYSDOWNLOADLOG") +@Data +public class SysDownloadLog { + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + @Column(name = "FILE_ID") + private String fileId; + + private String downloader; + + @Column(name = "DOWNLOAD_TIME") + private Date downloadTime; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysError.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysError.java new file mode 100644 index 0000000..c51c7d1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysError.java @@ -0,0 +1,26 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; +import java.util.Date; + +@Data +@Table(name = "SYSERROR") +@Entity +public class SysError implements Serializable { + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + private String serviceName; + private String functionName; + private String errorCode; + private String message; + private Date createTime; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedback.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedback.java new file mode 100644 index 0000000..b110094 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedback.java @@ -0,0 +1,35 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.util.Date; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Data +@Entity +@Table(name = "SYSFEEDBACK") +public class SysFeedback { + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + private String title; + + private String content; + + @Column(name = "USERID") + private String userId; + + @Column(name = "CREATE_TIME") + private Date createTime; + + private String answered; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedbackAnswer.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedbackAnswer.java new file mode 100644 index 0000000..b882b33 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFeedbackAnswer.java @@ -0,0 +1,37 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Data +@Entity +@Table(name = "SYSFEEDBACKANSWER") +public class SysFeedbackAnswer { + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + private String content; + + @Column(name = "USERID") + private String userId; + + @Column(name = "CREATE_TIME") + private Date createTime; + + @Column(name = "FEEDBACK_ID") + private String feedbackId; + + private String type; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFunctionDoc.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFunctionDoc.java new file mode 100644 index 0000000..236b20e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysFunctionDoc.java @@ -0,0 +1,23 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import oracle.sql.BLOB; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Arrays; +import java.util.Date; +import java.util.Objects; +@Data +@Entity +@Table(name = "SYSFUNCTIONDOC") +public class SysFunctionDoc { + @Id + private long functionid; + private String overview; + private String detailed_view; + private Date update_time; + private String update_name; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuide.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuide.java new file mode 100644 index 0000000..23ddeb6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuide.java @@ -0,0 +1,55 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + + +@Entity +@Table(name="SYSGUIDE") +@Data +public class SysGuide implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + /** + * 问题名称 + */ + private String question_name; + + /** + * 问题类型 + */ + private String question_type; + + /** + * 答案类型 + */ + private String answer_type; + + /** + * 答案内容 + */ + private String answer_content; + + /** + * 答案链接 + */ + private String link_url; + + /** + * 创建时间 + */ + private Date create_time; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideHot.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideHot.java new file mode 100644 index 0000000..af67716 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideHot.java @@ -0,0 +1,29 @@ +package com.insigma.sys.entity; + + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; + + +@Entity +@Table(name="SYSGUIDEHOT") +@Data +public class SysGuideHot implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 编号 + */ + @Id + @Column(name="ID") + private String id; + + /** + * 热度 + */ + @Column(name="HOT_COUNT") + private long hot_count; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideType.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideType.java new file mode 100644 index 0000000..ac50590 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysGuideType.java @@ -0,0 +1,43 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @author GH + * @ClassName: SysGuideType + * @Description: + * @version 2021/8/213:05 + */ + +@Entity +@Table(name="SYSGUIDETYPE") +@Data +public class SysGuideType implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + //分类编码 + private String type_code; + + //分类名称 + private String type_name; + + //分类图标 + private String type_icon; + + //排序号 + private Integer order_no; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysHoliday.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysHoliday.java new file mode 100644 index 0000000..3efcbba --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysHoliday.java @@ -0,0 +1,30 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * @author yinjh + * @version 2021/6/16 + */ +@Data +@Entity +@Table(name = "SYSHOLIDAY") +public class SysHoliday { + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + private int year; + + private int month; + + private int day; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysIdMapping.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysIdMapping.java new file mode 100644 index 0000000..e07de18 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysIdMapping.java @@ -0,0 +1,21 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name="SYSIDMAPPING") +@Data +public class SysIdMapping { + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String MID; + private String TID; + private Integer SELFID; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysMenu.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysMenu.java new file mode 100644 index 0000000..3221357 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysMenu.java @@ -0,0 +1,50 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import javax.persistence.*; +import java.io.Serializable; + +@Entity +@Table(name="SYSFUNCTION") +@Data +public class SysMenu implements Serializable { + @Id + /*@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sq_function") + @SequenceGenerator(name = "sq_function", sequenceName = "sq_function", allocationSize = 1)*/ + @GenericGenerator( name="sq_function", strategy="com.insigma.framework.db.generator.TableOrSequenceGenerator", + parameters = { + @Parameter( name = "table_name", value = "sys_sequence"), + @Parameter( name = "value_column_name", value = "sequence_next_value"), + @Parameter( name = "segment_column_name",value = "sequence_name"), + @Parameter( name = "segment_value", value = "sq_function"), + @Parameter( name = "increment_size", value = "10"), + @Parameter( name = "optimizer",value = "pooled-lo") + }) + @GeneratedValue(generator="sq_function") + private Long functionid; //功能ID + private String location;//链接 + private String title;//标题 + private Long parentid;//父功能ID + private int funorder;//排序号 + private String nodetype;//节点类型:1-菜单节点,2-菜单叶子 + private String islog;//是否记录日志 1-记,0-不记 + private String developer;//开发人员 + private String icon;//节点图标 + private String description;//功能的中文描述 + private String funtype;//功能分类,0通用1系统管理2业务功能(扩展:个人、单位、机构) + private String active;//是否有效 + private String funcode;//功能编号 + // private String filename;//文件名 +// private String filepath;//文件路径 + private String auflag;//审核标志,0-不自动审核,1-自动审核 + private String rbflag;//操作日志回退标志,0-不可以,1-可以 + private String idpath; + private String digest; // 摘要字段 + private String slevel;//密级字段 0-普通,1-秘密,2-机密 + @Column(name="APPID") + private String appId;//所属应用系统 + private String openmode;//打开模式:1-tab页打开,2-浏览器tab页打开 +} \ No newline at end of file diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysOrg.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysOrg.java new file mode 100644 index 0000000..d85f28c --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysOrg.java @@ -0,0 +1,54 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; + +/** + * @author jinw + * @version 2019/1/7 + *

epsoft - insiis7

+ */ +@Entity +@Data +@Table(name = "sysorg") +public class SysOrg implements Serializable { + @Id + /*@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "id_sq_orgid") + @SequenceGenerator(name = "id_sq_orgid",sequenceName = "sq_orgid",allocationSize = 1)*/ + @GenericGenerator( name="sq_orgid", strategy="com.insigma.framework.db.generator.TableOrSequenceGenerator", + parameters = { + @Parameter( name = "table_name", value = "sys_sequence"), + @Parameter( name = "value_column_name", value = "sequence_next_value"), + @Parameter( name = "segment_column_name",value = "sequence_name"), + @Parameter( name = "segment_value", value = "sq_orgid"), + @Parameter( name = "increment_size", value = "10"), + @Parameter( name = "optimizer",value = "pooled-lo") + }) + @GeneratedValue(generator="sq_orgid") + private Long orgid; + private String orgname; + private String orgentercode; + 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; + private String orgstate; + private String superdept; + private String orgautocode; + private String zip; + private String idpath; + private String rate; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRole.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRole.java new file mode 100644 index 0000000..9cf9c8f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRole.java @@ -0,0 +1,34 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +/** + * Created by zxy on 2019/1/4. + */ +@Entity +@Table(name="SYSROLE") +@Data +public class SysRole { + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String roleid; + @Column(name="rolename") + private String rolename; + @Column(name="roledesc") + private String roledesc; + @Column(name="rolecode") + private String rolecode; + @Column(name="roletype") + private String roletype; + @Column(name="orgid" ) + private Long orgid; + @Column(name="areaid" ) + private Long areaid; + @Column(name="creatorid") + private String creatorid; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRoleFunction.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRoleFunction.java new file mode 100644 index 0000000..8a395c4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysRoleFunction.java @@ -0,0 +1,23 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; + +/** + * Created by Administrator on 2019/1/15. + */ +@Entity +@Table(name="SYSROLEFUNCTION") +@Data +public class SysRoleFunction { + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String relationid; + @Column(name="roleid") + private String roleid; + @Column(name="functionid") + private Long functionid; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUser.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUser.java new file mode 100644 index 0000000..3879ac6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUser.java @@ -0,0 +1,73 @@ +package com.insigma.sys.entity; + +import com.insigma.framework.data.firewall.desensitization.annotation.IdCardDesensitization; +import com.insigma.sys.common.SysEntityListener; +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + * @Author: caic + * @version: 14:50 2019/1/7 + * @Description: + */ +@Data +@Table(name = "SYSUSER") +@Entity +@EntityListeners(SysEntityListener.class) +public class SysUser implements Serializable { + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String userId; + @Column(name="logonName") + private String logonName; + private String passWD; + private String displayName; + private Long areaId; + private Long orgId; + @Column(name="userState") + private String userState; + private String userType; + private String cardType; + @IdCardDesensitization + private String cardId; + private String tel; + private String mobile; + private String eMail; + private String userAddr; + private String remark; + private String creatorId; + private Date createTime; + private Date lockTime; + private Date unlockTime; + private String lockReason; + private Date userExpireDate; + private Long failNO; + private String pwExpireType; + private Date pwExpireDate; + private Date pwEditDate; + private String signState; + private String department; + private String slevel; + + @Transient + List sysUserRoleList; + + public SysUser() { + } + + public SysUser(String userId, String logonName, String displayName, long orgId, String userState, String userType,String slevel){ + this.userId=userId; + this.logonName=logonName; + this.displayName=displayName; + this.orgId=orgId; + this.userState=userState; + this.userType=userType; + this.slevel=slevel; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserArea.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserArea.java new file mode 100644 index 0000000..f3f4ec2 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserArea.java @@ -0,0 +1,23 @@ +package com.insigma.sys.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * @Author: caic + * @version: 10:39 2019/1/14 + * @Description: + */ +@Entity +@Table(name="SYSUSERAREA") +@Data +@IdClass(SysUserAreaPK.class) +public class SysUserArea implements Serializable { + @Id + @Column(name="userId") + private String userId; + @Id + private String aab301; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserAreaPK.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserAreaPK.java new file mode 100644 index 0000000..ee6ad15 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserAreaPK.java @@ -0,0 +1,22 @@ +package com.insigma.sys.entity; + +import lombok.Data; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.io.Serializable; + +/** + *SysUserArea联合主键 + * @Author: caic + * @version: 10:39 2019/1/14 + * @Description: + */ +@Embeddable +@Data +public class SysUserAreaPK implements Serializable { + private String userId; + private String aab301; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRole.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRole.java new file mode 100644 index 0000000..d20ca5f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRole.java @@ -0,0 +1,24 @@ +package com.insigma.sys.entity; + +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; + +/** + * @Author: caic + * @version: 15:44 2019/1/12 + * @Description: + */ +@Entity +@Table(name="SYSUSERROLE") +@Data +@IdClass(SysUserRolePK.class) +public class SysUserRole implements Serializable { + @Id + @Column(name="userId") + private String userId; + @Id + private String roleId; + private String dispatchAuth; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRolePK.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRolePK.java new file mode 100644 index 0000000..1bf496c --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysUserRolePK.java @@ -0,0 +1,20 @@ +package com.insigma.sys.entity; + +import lombok.Data; + +import javax.persistence.Embeddable; +import javax.persistence.Id; +import java.io.Serializable; + +/** + * @Author: caic + * @version: 15:42 2019/1/13 + * @Description: SysUserRole表的联合主键 + */ +@Embeddable +@Data +public class SysUserRolePK implements Serializable { + + private String userId; + private String roleId; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/entity/SysWarningLog.java b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysWarningLog.java new file mode 100644 index 0000000..d506c47 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/entity/SysWarningLog.java @@ -0,0 +1,32 @@ +package com.insigma.sys.entity; + +import lombok.Data; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.util.Date; + +/** + * @author yinjh + * @version 2021/10/9 + */ +@Data +@Table(name = "SYSWARNINGLOG") +@Entity +public class SysWarningLog { + + @Id + @GenericGenerator(name="idGenerator",strategy = "uuid") + @GeneratedValue(generator = "idGenerator") + private String id; + + private String userid; + + private String sessionid; + + private String content; + + @Column(name="create_time") + private Date createTime; + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/Aa26Repository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/Aa26Repository.java new file mode 100644 index 0000000..106dc86 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/Aa26Repository.java @@ -0,0 +1,26 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.Aa26; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Author: caic + * @version: 10:28 2019/1/14 + * @Description: + */ +@Repository +public interface Aa26Repository extends JpaRepository { + List findByidpathStartingWith(String aab301); + Aa26 findByAab301(String aab301); + + @Query(value = "select a from Aa26 a where a.aab301=?1 and ?2 like concat(a.idpath, '%')") + List findByAab301AndIdPath(String aab301, String idpath); + + List findAa26sByAaa148OrderByAab301(String aaa148); + + List findAa26sByAaa148IsNullOrderByAab301(); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/MenuRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/MenuRepository.java new file mode 100644 index 0000000..835a09a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/MenuRepository.java @@ -0,0 +1,59 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysMenu; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +public interface MenuRepository extends JpaRepository { + @Query(value = "select s from SysMenu s order by s.funorder") + List findTrees(); + @Query(value = "select s from SysMenu s where s.parentid=?1 order by s.funorder") + List findTreesByPId(long id); + @Query(value = "select s from SysMenu s where s.location=?1") + List findLocation(String location); + @Query(value = "select s from SysMenu s where s.functionid=?1") + SysMenu findById(long id); + @Query(value = "select s from SysMenu s where funtype=?1 or funtype='0' order by s.funorder") + List findTreesByFuntype(String funtype); + @Query(value = "select s from SysMenu s where s.nodetype<>'3' and s.active='1' order by s.funorder") + List getMenuList(); + @Query(value = "select s from SysMenu s where (s.funtype=?1 or s.funtype='0') and s.active='1' and (s.auflag<>'1' or s.auflag is null) order by s.funorder") + List findTreesByFuntypeAndActive(String funtype); + @Query(value = "select distinct s from SysMenu s, SysRoleFunction sr where s.functionid=sr.functionid and s.nodetype<>'3' and s.active='1' and sr.roleid in (?1) order by s.funorder") + List getMenuList(List roleIds); + @Modifying + @Query(value = "select u.* from sysfunction u start with u.functionid=?1 connect by prior functionid=parentid",nativeQuery =true) + List findNodeByFuncid(Long id); + @Query(value = " select * from sysfunction o start with o.functionid =?1 connect by prior o.parentid = o.functionid order by functionid",nativeQuery =true) + List getIdpath(Long id); + @Query(value = " select * from sysfunction o where o.nodetype<>'3' start with o.functionid =?1 connect by prior functionid=parentid order by functionid",nativeQuery =true) + List findNodesNoAnNiu(Long id); + @Query(value = "SELECT level FROM sysfunction START WITH functionid = ?1 CONNECT BY prior functionid = parentid ORDER BY level",nativeQuery =true) + List findNodeslevel(Long id); + List findByIdpathStartingWith(String id); + @Query(value = "SELECT * FROM sysfunction where location = ?1",nativeQuery =true) + SysMenu queryEntity(String url); + + @Query(value = "select distinct sf.* from sysfunction sf, sysrolefunction srf, sysuserrole sur where sf.functionid=srf.functionid and srf.roleid=sur.roleid and sur.userid=?1 order by sf.funorder", nativeQuery =true) + List findTreesByUserId(String userId); + + @Query(value = "select distinct s.funcode from SysMenu s, SysRoleFunction sr where s.functionid=sr.functionid and s.nodetype='3' and s.active='1' and sr.roleid in (?1) and s.parentid=?2 and s.funcode is not null") + List getButtonAuthList(List roleIds, Long parentId); + + @Query(value = "select distinct s.funcode from SysMenu s where s.nodetype='3' and s.active='1' and s.parentid=?1 and s.funcode is not null") + List getAllButtonAuthList(Long parentId); + + @Transactional + @Modifying + @Query(value = "update SysMenu set funorder = ?2 where functionid = ?1") + int updateNodeOrder(Long functionId,int funOrder); + + @Transactional + @Modifying + @Query(value = "update SysMenu set parentid = ?3,funorder = ?2 where functionid = ?1") + int update(Long functionId,int funOrder,Long parentId); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/RoleRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/RoleRepository.java new file mode 100644 index 0000000..ea6b7de --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/RoleRepository.java @@ -0,0 +1,76 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysRole; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Created by zxy on 2019/1/7. + */ +@Repository +public interface RoleRepository extends JpaRepository, JpaSpecificationExecutor { + List findAllByRoletype(String roletype); + + Page findAll(Specification queryParams, Pageable pageable); + + List findByRoletype(String roleType); + + List findByRoletypeAndOrgid(String roletype, Long orgid); + + List queryRoleByRoletypeAndAreaid(String roleType, Long areaId); + + /** + * 根据用户id,查询用户所属区域的管理角色 + * + * @param areaId + * @return + */ + @Query(value = "select t from SysRole t where (t.roletype='1' or roletype='3') and t.areaid=?1") + List queryRoleByArea(Long areaId); + + @Query(value = "select t from SysRole t where (t.roletype='1' or roletype='3') and t.orgid=?1") + List queryByOrgId(Long orgId); + + @Query(value = "select t from SysRole t where (t.roletype='1' or roletype='3')") + List queryByAdmin(); + + /** + * 根据角色名称查询角色 + * @param rolename + * @return + */ + List findByRolename(String rolename); + + /** + * 根据角色名称查询角色 + * @param rolename + * @return + */ + List findByRolenameAndRoleid(String rolename, String roleid); + + /** + * 根据用户id查询用户所拥有的角色信息 + * @param userid + * @return + */ + @Query(value = "select * from sysrole r where creatorid=?1 or exists (select 1 from sysuserrole sur where sur.roleid=r.roleid and sur.userid=?1)", nativeQuery = true) + List queryRoleByUserId(String userid); + + /** + * 根据角色id查询角色是否存在 + * @param roleid + * @return + */ + @Query(value = "select t from SysRole t where t.roleid=?1") + List checkRoleIfValidByRoleid(String roleid); + + @Query(value = "select r.* from sysrole r ,sysuserrole sur where r.roleid=sur.roleid and sur.userid=?1 and sur.roletype=?2", nativeQuery = true) + List queryRoleByUserIdAndRoleType(String userId, String roleType); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppAddressRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppAddressRepository.java new file mode 100644 index 0000000..dce9c7e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppAddressRepository.java @@ -0,0 +1,31 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysAppAddress; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; +/** + * @author yinjh + * @version 2022/3/28 + * @since 2.6.5 + */ +@Repository +public interface SysAppAddressRepository extends JpaRepository { + + /** + * 根据门户地址和应用Id查询 + * @param portalUrl + * @param appId + * @return + */ + SysAppAddress findSysAppAddressByPortalUrlAndAppId(String portalUrl, String appId); + + @Modifying + @Query(value = "delete SYSAPPADDRESS where APP_ID=?1",nativeQuery = true) + int deleteSysAppAddressByAppId(String appid); + @Query(value = "select * from SYSAPPADDRESS where APP_ID=?1",nativeQuery = true) + List querySysAddressDTO(String appid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppRepository.java new file mode 100644 index 0000000..54eaefb --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysAppRepository.java @@ -0,0 +1,20 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysApp; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +/** + * @author yinjh + * @version 2022/3/28 + * @since 2.6.5 + */ +@Repository +public interface SysAppRepository extends JpaRepository { + + @Query(value="select max(ORDER_NO) from SYSAPP",nativeQuery =true) + Long selectMaxOrder(); + @Query(value="select * from SYSAPP where APP_CODE = ?1",nativeQuery =true) + SysApp selectAppCode(String appCode); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysCodeRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysCodeRepository.java new file mode 100644 index 0000000..f7dbec9 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysCodeRepository.java @@ -0,0 +1,31 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.Aa10; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Created by yinjh on 2019/1/9. + */ +@Repository +public interface SysCodeRepository extends JpaRepository { + + Page findAll(Specification queryParams, Pageable pageable); + + /** + * 通用查询aa10的方法 + * @author caic + * @param aaa100 + * @return + */ + @Query(value = "select t from Aa10 t where t.aaa100=?1") + List findByAaa100(String aaa100); + + Aa10 findByAaa100AndAaa102(String aaa100,String aaa102); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadCenterRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadCenterRepository.java new file mode 100644 index 0000000..4cf536d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadCenterRepository.java @@ -0,0 +1,16 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysDownloadCenter; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +/** + * @author GH + * @ClassName: SysDownloadCenterRepository + * @Description: + * @version 2021/8/4 10:21 + */ +@Repository +public interface SysDownloadCenterRepository extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadLogRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadLogRepository.java new file mode 100644 index 0000000..ff873db --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysDownloadLogRepository.java @@ -0,0 +1,13 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysDownloadLog; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * @author yinjh + * @version 2021/12/9 + */ +@Repository +public interface SysDownloadLogRepository extends JpaRepository { +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysErrorRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysErrorRepository.java new file mode 100644 index 0000000..aa94c59 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysErrorRepository.java @@ -0,0 +1,16 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysError; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SysErrorRepository extends JpaRepository { + List findAll(Specification spec); + @Query(value = "select s from SysError s where s.errorCode=?1") + SysError findByErrCode(String code); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackAnswerRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackAnswerRepository.java new file mode 100644 index 0000000..b786f90 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackAnswerRepository.java @@ -0,0 +1,16 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysFeedbackAnswer; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Repository +public interface SysFeedbackAnswerRepository extends JpaRepository { + List findAllByFeedbackIdOrderByCreateTimeAsc(String feedbackId); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackRepository.java new file mode 100644 index 0000000..bfe7459 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFeedbackRepository.java @@ -0,0 +1,13 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysFeedback; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Repository +public interface SysFeedbackRepository extends JpaRepository { +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFunctionDocRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFunctionDocRepository.java new file mode 100644 index 0000000..8d88957 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysFunctionDocRepository.java @@ -0,0 +1,18 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysFunctionDoc; +import com.insigma.sys.entity.SysGuide; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SysFunctionDocRepository extends JpaRepository { + @Query(value = "select * from SYSFUNCTIONDOC t where t.functionid = ?1", nativeQuery = true) + List findByFunctionid(Long functionid); + + void deleteByFunctionid(Long functionid); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideHotRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideHotRepository.java new file mode 100644 index 0000000..b4d9dcb --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideHotRepository.java @@ -0,0 +1,10 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysGuideHot; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.stereotype.Repository; + +@Repository +public interface SysGuideHotRepository extends JpaSpecificationExecutor, JpaRepository { +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideRepository.java new file mode 100644 index 0000000..385bdab --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideRepository.java @@ -0,0 +1,21 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysGuide; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface SysGuideRepository extends JpaRepository, JpaSpecificationExecutor { + + @Query(value = "select sg.* from SYSGUIDE sg,SYSGUIDEHOT sgh where sg.ID=sgh.ID and sg.question_type=?1 ORDER BY sgh.HOT_COUNT DESC", nativeQuery = true) + List findByQuestion_type(String question_type); + + + @Query(value = "SELECT s.QUESTION_TYPE FROM SYSGUIDE s GROUP BY s.QUESTION_TYPE",nativeQuery = true) + List findQuestion_type(); +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideTypeRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideTypeRepository.java new file mode 100644 index 0000000..2ac0664 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysGuideTypeRepository.java @@ -0,0 +1,24 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysGuideType; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author GH + * @ClassName: SysGuideTypeRepository + * @Description: + * @version 2021/8/213:10 + */ + +@Repository +public interface SysGuideTypeRepository extends JpaRepository, JpaSpecificationExecutor { + + @Query(value = "SELECT s.* FROM SYSGUIDETYPE s ORDER BY s.ORDER_NO",nativeQuery = true) + List findType_name(); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysHolidayRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysHolidayRepository.java new file mode 100644 index 0000000..42b9985 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysHolidayRepository.java @@ -0,0 +1,20 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysHoliday; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/6/16 + */ +@Repository +public interface SysHolidayRepository extends JpaRepository { + + List findSysHolidaysByYear(int year); + + void deleteByYear(int year); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysIdMappingRespository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysIdMappingRespository.java new file mode 100644 index 0000000..c3552b8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysIdMappingRespository.java @@ -0,0 +1,12 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysIdMapping; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +@Repository +public interface SysIdMappingRespository extends JpaRepository { + @Query(value = "select s from SysIdMapping s where s.TID=?1") + SysIdMapping findByTID(String Tid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysOrgRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysOrgRepository.java new file mode 100644 index 0000000..b6bb1d4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysOrgRepository.java @@ -0,0 +1,40 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysOrg; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Author: caic + * @version: 12:05 2019/1/12 + * @Description: + */ +@Repository +public interface SysOrgRepository extends JpaRepository{ + + @Query(value = "select s from SysOrg s order by s.orgorder") + List findAllOrg(); + List findByparentid(Long parentid); + + List findByRegioncode(String regionCode); + + @Query(value = "select t.* from sysorg t where t.orgid like ?1%",nativeQuery = true) + List findByOrgidStartingWith(Long orgId); + + List findByIdpathStartingWith(String orgId); + @Query(value = "select s from SysOrg s where s.orgid=?1") + SysOrg findByOrgid(Long orgId); + @Query(value = "select s from SysOrg s where s.orgname=?1") + SysOrg findByName(String name); + @Query(value = "select s from SysOrg s where s.orgname=?1 or s.orgentercode=?2") + List findByNameOrCode(String name, String code); + @Modifying + @Query(value = "select u.* from SysOrg u start with u.orgid=?1 connect by prior orgid=parentid",nativeQuery =true) + List findNodeByOrgid(Long id); + @Query(value = "select s from SysOrg s where s.regioncode=?1 and ?2 like concat(s.idpath, '%')") + List findByRegioncodeAndIdPath(String regioncode, String idpath); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysRoleFunctionRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysRoleFunctionRepository.java new file mode 100644 index 0000000..e42a428 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysRoleFunctionRepository.java @@ -0,0 +1,29 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysRoleFunction; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * Created by Administrator on 2019/1/15. + */ +@Repository +public interface SysRoleFunctionRepository extends JpaRepository,JpaSpecificationExecutor { + @Modifying + @Query(value="delete from sysrolefunction where roleid=?1",nativeQuery = true) + int deleteRoleFunction(String roleid); + + @Query(value="select srf.functionid from sysrolefunction srf,sysfunction sf where srf.functionid=sf.functionid and sf.active='1' and sf.nodetype<>'1' and srf.roleid=?1",nativeQuery = true) + List queryFuncitonidByRoleid(String roleid); + + @Query(value="select functionid from sysrolefunction where roleid=?1",nativeQuery = true) + List queryFuncitonidAllByRoleid(String roleid); + + @Query(value = "select s from SysRoleFunction s where s.functionid=?1") + List queryRoleBy(Long functionid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserAreaRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserAreaRepository.java new file mode 100644 index 0000000..1d71073 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserAreaRepository.java @@ -0,0 +1,26 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysUserArea; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Author: caic + * @version: 10:41 2019/1/14 + * @Description: + */ +@Repository +public interface SysUserAreaRepository extends JpaRepository { + + List findByUserId(String userId); + + @Modifying + @Query(value="delete sysuserarea where userid=?1",nativeQuery = true) + int deleteSysUserArea(String userId); + @Query(value="select s from SysUserArea s where s.aab301=?1") + List findByAreaId(String orgentercode); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRepository.java new file mode 100644 index 0000000..44ccc90 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRepository.java @@ -0,0 +1,114 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.Aa10; +import com.insigma.sys.entity.SysUser; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.Date; +import java.util.List; + +/** + * @Author: caic + * @version: 14:50 2019/1/7 + * @Description: + */ +@Repository +public interface SysUserRepository extends JpaRepository { + /*** + * 查询用户信息 + * @return + */ + @Query(value="select new SysUser(t.userId,t.logonName,t.displayName, t.orgId, t.userState, t.userType,t.slevel) from SysUser t") + List queryAllUser(); + + /** + * 修改用户状态 + * @param userState + * @param userId + * @return + */ + @Modifying + @Query(value="update sysuser t set t.userstate=?1 where userid=?2",nativeQuery =true) + int updateUserState(String userState, String userId); + + /** + * 删除用户角色 + * @param userId + * @return + */ + @Modifying + @Query(value="delete sysuserrole where userid=?1",nativeQuery = true) + int deleteUserRole(String userId); + + /** + *解锁用户 + * @return + */ + @Modifying + @Query(value="update sysuser t set t.userstate='1',t.failno=0,t.unlocktime=?1 where userid=?2",nativeQuery =true) + int unlockUser(Date locaktTime, String userId); + + /** + *锁定用户 + * @return + */ + @Modifying + @Query(value="update sysuser t set t.userstate='2',t.failno='0',t.locktime=?1 where userid=?2",nativeQuery =true) + int lockUser(Date unlocaktTime, String userId); + + /** + * 修改用户密码 + * @param userId + * @param passWD + * @param pwEditDate + * @return + */ + @Modifying + @Query(value="update sysuser t set t.passwd=?1,t.pweditdate=?2 where userid=?3",nativeQuery =true) + int updatePassWD(String passWD, Date pwEditDate, String userId); + + @Query(value = "select t from Aa10 t where t.aaa100=?1") + List findByAaa100(String aaa100); + + /*** + * 分页查询用户列表 + * @param spec + * @param pageable + * @return + */ + Page findAll(Specification spec, Pageable pageable); + + /** + * 根据用户名查询用户 + * @param logonName + * @return + */ + List findByLogonName(String logonName); + + /** + * 根据用户名和用户Id查询用户 + * @param logonName + * @param userId + * @return + */ + List findByLogonNameAndUserIdNot(String logonName, String userId); + + /** + * 删除所有用户除去amdin + * @param + * @return + */ + @Modifying + @Query(value = "delete from SysUser t where t.logonName <> 'admin'") + int deleteAllUserExitsAdmin(); + + @Query(value = "select su from SysUser su where su.logonName=?1 and su.userState <> '3'") + SysUser findUsefulUserByLogonName(String logonName); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRoleRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRoleRepository.java new file mode 100644 index 0000000..6954c2a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysUserRoleRepository.java @@ -0,0 +1,32 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysUserRole; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Modifying; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.List; + +/** + * @Author: caic + * @version: 16:56 2019/1/12 + * @Description: + */ +@Repository +public interface SysUserRoleRepository extends JpaRepository { + List findByUserId(String userId); + + @Modifying + @Query(value="delete from sysuserrole where userid=?1",nativeQuery = true) + int deleteSysUserRole(String userId); + + + @Modifying + @Query(value="delete from sysuserrole where roleid=?1",nativeQuery = true) + int deleteUserRole(String roleid); + + @Modifying + @Query(value="delete from sysuserrole where roleid=?1 and userid=?2",nativeQuery = true) + void removeGrantUserRole(String roleid, String userid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/repository/SysWarningLogRepository.java b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysWarningLogRepository.java new file mode 100644 index 0000000..58dcf43 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/repository/SysWarningLogRepository.java @@ -0,0 +1,13 @@ +package com.insigma.sys.repository; + +import com.insigma.sys.entity.SysWarningLog; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +/** + * @author yinjh + * @version 2021/10/9 + */ +@Repository +public interface SysWarningLogRepository extends JpaRepository { +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/Aa26Service.java b/template/insiis-web/src/main/java/com/insigma/sys/service/Aa26Service.java new file mode 100644 index 0000000..6decba4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/Aa26Service.java @@ -0,0 +1,18 @@ +package com.insigma.sys.service; + +import com.insigma.sys.entity.Aa26; + +import java.util.List; + +/** + * @Author: caic + * @version: 14:37 2019/1/22 + * @Description: + */ +public interface Aa26Service { + Aa26 findByAab301(String aab301); + + List findByAa148(String aaa148); + + List findAll(); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/HolidayService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/HolidayService.java new file mode 100644 index 0000000..5ea16c0 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/HolidayService.java @@ -0,0 +1,17 @@ +package com.insigma.sys.service; + +import com.insigma.sys.entity.SysHoliday; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/6/16 + */ +public interface HolidayService { + List queryHolidayList(int year); + + void updateHolidays(int year, List holidays); + + List getWeekdays(int year); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/MenuService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/MenuService.java new file mode 100644 index 0000000..86577b1 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/MenuService.java @@ -0,0 +1,63 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.entity.SysUser; + +import java.util.List; +import java.util.Map; + + +public interface MenuService { + + //查询tree + List queryAllMenu(); + + //根据id查找menu对象 + SysMenu findMenuById(long id); + + void save(SysMenu sysMenu); + + void update(SysMenu sysMenu); + + void delete(List list, boolean isWithRole); + + List findTreesByPId(long id); + + SysMenu queryByFuncID(long parentid); + + JSONObject getCodeTypes(JSONObject jsonObject); + + boolean findFunctionRoles(SysMenu sysMenu); + + List getVirtualMenuList(SysUser user); + + List queryMenuByFuntype(String funtype); + + List getMenuList(SysUser user); + + //将pagedata转化为SysMenubean + SysMenu getSysMenuBean(Map map); + + //判断location是否存在 + boolean isManyLocations(SysMenu sysMenu); + + //找到子节点 + List findNodes(String idpath); + + //查询子节点不包括按钮 + List findNodesNoAnNiu(Long id); + + List queryMenuByFuntypeAndActive(String funtype); + + //查找等级 + List findNodeslevel(Long id); + + List queryMenusByUserId(String userId); + + List getButtonAuthList(SysUser sysUser, String location); + + //更新排序 + String updateNodeOrder(MenuDTO nodeBy,MenuDTO nodeTo); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/MonitorCentersService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/MonitorCentersService.java new file mode 100644 index 0000000..c62f259 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/MonitorCentersService.java @@ -0,0 +1,97 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.sys.dto.MonitorCentersDTO; +import com.insigma.sys.entity.SysMenu; + +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); + + SysMenu queryEntity(String url); + + /** + * 清理全部监控数据 + * + * @return + */ + JSONObject clearAllMonitorData(); + + /** + * 清理对应的监控数据 + * + * @return + */ + JSONObject clearOneServiceData(MonitorCentersDTO monitorCentersDTO); + + /** + * 获取报告数据 + * + * @return + */ + JSONObject getReportData(MonitorCentersDTO monitorCentersDTO); + + /** + * 获取报告详细数据 + * + * @return + */ + Map getReportDetailedData(MonitorCentersDTO monitorCentersDTO); + + /** + * 下载历史数据 + * + * @return + */ + List getDataExport(String appName); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/OpLogService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/OpLogService.java new file mode 100644 index 0000000..1d3904a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/OpLogService.java @@ -0,0 +1,23 @@ +package com.insigma.sys.service; + +import com.insigma.framework.ResponseMessage; +//import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +/** + * Created by yinjh on 2019/1/30. + */ +//@FeignClient(value = "insiis-service") +public interface OpLogService { + @PostMapping(value = "/oplog/list") + ResponseMessage queryOpLogList(@RequestParam("params") String params); + + @GetMapping("/oplog/orisource") + ResponseMessage queryOrisource(@RequestParam("opseno") Long opseno); + + @GetMapping("/oplog/rollback") + ResponseMessage rollback(@RequestParam("opseno") Long opseno, @RequestParam("who") String who); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/ParamConfigService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/ParamConfigService.java new file mode 100644 index 0000000..505cf33 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/ParamConfigService.java @@ -0,0 +1,17 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.web.support.entity.Aa01; + +/** + * @author yinjh + * @version 2022/10/17 + * @since 2.7.0 + */ +public interface ParamConfigService { + PageInfo query(String aaa001, String aaa002, Integer page, Integer size); + + void save(Aa01 aa01, boolean isUpdate); + + void delete(String aaa001); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/RoleService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/RoleService.java new file mode 100644 index 0000000..759d57a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/RoleService.java @@ -0,0 +1,54 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysRoleDTO; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.SysRole; +import com.insigma.sys.entity.SysUser; + +import java.sql.SQLException; +import java.util.List; +import java.util.Map; + +/** + * Created by zxy on 2019/1/7. + */ +public interface RoleService { + void save(SysRole sysRole); + + SysRoleDTO query(String rolename, String roledesc, String roletype, Integer page, Integer size, Long areaid, Long orgid, String usertype); + + void deleteSysRole(SysRole sysRole); + + JSONObject getCodeTypes(JSONObject jsonObject); + + boolean checkRoleByRolename(String rolename); + + boolean checkRoleByRolenameAndRoleid(String rolename, String roleid); + + List queryRoleByUserId(String userid); + + void deleteRoleRef(SysRole sysRole); + + List queryFuncitonidByRoleid(String roleid); + + boolean checkRoleIfValidByRoleid(String roleid); + + SysRole getRoleById(String roleid); + + boolean roleCanOperate(SysUser sysUser, SysRole sysRole); + + void saveGrant(SysUser sysUser, SysRole role, JSONObject jsonObject); + + List> findRoleTypesCode(); + + PageInfo queryToGrantUser(String roleId, String roletype, String logonname, String displayname, + Integer page, Integer size) throws SQLException; + + List queryGrantedUser(String roleId); + + void removeGrantUserRole(String roleId, String userId); + + void saveGrantUser(JSONObject jsonObject); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/ScmMyFavoritesService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/ScmMyFavoritesService.java new file mode 100644 index 0000000..cfcd9f9 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/ScmMyFavoritesService.java @@ -0,0 +1,46 @@ +package com.insigma.sys.service; + +import com.insigma.framework.ResponseMessage; +import com.insigma.sys.dto.ScmMyFavoritesDTO; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author tanyj + * @Version 2022/8/23 09:53 + * @since 2.7.0 + **/ +@Service +public interface ScmMyFavoritesService { + + /** + * 新增我的收藏 + * + * @param currentUserId currentUserId + * @param scmMyFavoritesDTO scmMyFavoritesDTO + */ + ResponseMessage addScmMyFavorites(String currentUserId, ScmMyFavoritesDTO scmMyFavoritesDTO); + + /** + * 根据用户id查询我的收藏 + * + * @param userid userid + * @return + */ + List getScmMyFavorites(String userid); + + /** + * 根据用户id删除我的收藏 + * + * @param currentUserId currentUserId + * @param scmMyFavoritesDTO scmMyFavoritesDTO + */ + void deleteScmMyFavorites(String currentUserId, ScmMyFavoritesDTO scmMyFavoritesDTO); + + + /** + * 根据用户id更新我的收藏 + */ + void orderScmMyFavorites(String userId, ScmMyFavoritesDTO scmMyFavoritesDTO); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysAppService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysAppService.java new file mode 100644 index 0000000..9ff070b --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysAppService.java @@ -0,0 +1,39 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysAppAddressDTO; +import com.insigma.sys.dto.SysAppDTO; + +import java.sql.SQLException; +import java.util.List; + +/** + * @author GH + * @version 2022/3/28 + * @since 2.6.5 + */ +public interface SysAppService { + PageInfo pageQuery(SysAppDTO queryDTO, Integer page, Integer size) throws SQLException; + + String saveSysAppDTO(SysAppDTO queryDTO,String secretKey); + + void saveSysAppAddressDTO(List listsysAppAddressDTO, String appid); + + SysAppDTO querySysApp(String appid); + + List querySysAddressDTO(String appid); + + void deleteSysApp(String appid); + + void deleteSysAppAddressByAppId(String appid); + + void deleteSysAppAddress(String addressId); + + void toActiveSysApp(String appid); + + void toNotActiveSysApp(String appid); + + List querySysAppDTO(); + + boolean selectAppCode(String appCode); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysCodeService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysCodeService.java new file mode 100644 index 0000000..ec311bc --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysCodeService.java @@ -0,0 +1,20 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.dto.CodeDTO; +import com.insigma.sys.entity.Aa10; + +/** + * Created by yinjh on 2019/1/9. + */ +public interface SysCodeService { + + CodeDTO query(String aaa100, String aaa103, Integer page, Integer size); + + JSONObject getCodeTypes(JSONObject jsonObject); + + void saveCode(Aa10 aa10); + + void deleteCode(Long aaz093) throws AppException; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysDownloadCenterService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysDownloadCenterService.java new file mode 100644 index 0000000..e11032f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysDownloadCenterService.java @@ -0,0 +1,23 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysDownloadCenterDTO; + +import java.sql.SQLException; + +/** + * @author GH + * @ClassName: SysDownloadCenterService + * @Description: + * @version 2021/8/4 10:15 + */ +public interface SysDownloadCenterService { + + PageInfo queryDownloadCenterList(SysDownloadCenterDTO queryDTO, Integer page, Integer size)throws SQLException; + + void saveDownloadCenter(SysDownloadCenterDTO sysDownloadCenterDTO); + + void delete(String id); + + void saveDownloadLog(String id, String logonName); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysErrorService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysErrorService.java new file mode 100644 index 0000000..e857013 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysErrorService.java @@ -0,0 +1,17 @@ +package com.insigma.sys.service; +import com.insigma.sys.entity.SysError; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public interface SysErrorService { + List queryAllErrors(); + List findAllBySome(String serviceName, String functionName, String errorCode); + void save(SysError sysError); + void deleteError(SysError sysError); + SysError getSysErrorBean(Map> map); + SysError getSysErrorBean2(Map map); + SysError getSysErrorBean1(Map> map); + boolean queryByErrCode(String code); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysFeedbackService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysFeedbackService.java new file mode 100644 index 0000000..53b3d1c --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysFeedbackService.java @@ -0,0 +1,21 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.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 { + PageInfo page(FeedbackDTO queryDTO, Integer page, Integer size) throws SQLException; + + void save(FeedbackDTO feedbackDTO); + + FeedbackDTO get(String id); + + void saveAnswer(FeedbackAnswerDTO feedbackAnswerDTO); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysFunctionDocService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysFunctionDocService.java new file mode 100644 index 0000000..800642d --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysFunctionDocService.java @@ -0,0 +1,10 @@ +package com.insigma.sys.service; + +import com.insigma.sys.dto.SysFunctionDocDTO; + +public interface SysFunctionDocService { + + void saveDoc(SysFunctionDocDTO sysFunctionDocDTO); + SysFunctionDocDTO queryByFunctionID(Long functionid); + void deleteByFunctionid(Long functionid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysGuideService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysGuideService.java new file mode 100644 index 0000000..0fa682e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysGuideService.java @@ -0,0 +1,29 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.SysGuideDTO; + +import java.sql.SQLException; +import java.util.HashMap; +import java.util.List; + +public interface SysGuideService { + + PageInfo queryGuideList(SysGuideDTO queryDTO, Integer page, Integer size)throws SQLException; + + SysGuideDTO queryGuide(String id); + + void delete(String id); + + void deleteGuides( List list); + + void saveGuide(SysGuideDTO sysGuideDTO); + + void hot(String id); + + PageInfo findByQuestion_type(String question_type, String sort, String str, Integer page, Integer size); + + List> findFrontPage(); + + SysGuideDTO findDetailsPage(String id); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysHashService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysHashService.java new file mode 100644 index 0000000..95b6fae --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysHashService.java @@ -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); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysIdMappingService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysIdMappingService.java new file mode 100644 index 0000000..8b602a7 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysIdMappingService.java @@ -0,0 +1,12 @@ +package com.insigma.sys.service; + +import com.insigma.sys.entity.SysIdMapping; + +public interface SysIdMappingService { + /** + * 保存用户组织两者id + */ + void saveGroupidToOrgid(SysIdMapping sysIdMapping); + SysIdMapping queryByTid(String tid); + void deleteAll(); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysMessageService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysMessageService.java new file mode 100644 index 0000000..ebd1f36 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysMessageService.java @@ -0,0 +1,33 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.dto.LazyTreeNode; +import com.insigma.sys.dto.MessageDTO; +import com.insigma.sys.entity.SysUser; + +import java.sql.SQLException; +import java.util.List; + +/** + * Created by yinjh on 2020/6/15. + */ +public interface SysMessageService { + + void save(String currentUserId, MessageDTO messageDTO); + + void update(String currentUserId, MessageDTO messageDTO); + + PageInfo getSysMessageList(SysUser sysUser, MessageDTO queryDTO, Integer page, Integer size, boolean isManage) throws SQLException; + + MessageDTO getSysMessage(String messageId); + + MessageDTO getSysMessage(String userId, String messageId); + + MessageDTO getSysUserMessage(String userId, String messageId); + + void updateFlag(String userId, String messageId); + + void deleteSysMessage(String messageId); + + List> getUserOrgTree(String parentId); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysOperateLogService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysOperateLogService.java new file mode 100644 index 0000000..602221f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysOperateLogService.java @@ -0,0 +1,22 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.web.securities.entity.SysOperateLog; +import com.insigma.sys.dto.SysOperateLogDTO; + +import java.sql.SQLException; + +/** + *fukq 2020/6/1 + */ +public interface SysOperateLogService { + /** + * 分页查询操作日志 + * @param queryDTO + * @param page + * @param size + * @return + * @throws SQLException + */ + PageInfo querySysOperateLogList(SysOperateLogDTO queryDTO, Integer page, Integer size) throws SQLException; +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysOrgService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysOrgService.java new file mode 100644 index 0000000..11a1fe9 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysOrgService.java @@ -0,0 +1,52 @@ +package com.insigma.sys.service; + +import com.insigma.sys.entity.Aa26; +import com.insigma.sys.entity.SysOrg; + +import java.util.List; +import java.util.Map; + +/** + * @Author: caic + * @version: 14:10 2019/1/22 + * @Description: + */ +public interface SysOrgService { + /** + * 保存机构(同步用) + */ + void save(SysOrg sysOrg); + /** + * 删除所有机构(同步用) + */ + void deleteAllOrgs(); + + /** + * 删除机构根据id(同步用) + * @param id + */ + void deleteByOrgId(Long id); + SysOrg findByOrgid(Long orgId); + List findByRegioncode(String areaId); + //查询tree + List queryAllOrg(); + //initcodetype + List getAA26(); + //保存 + Aa26 queryAa26By301(String aab301); + + void saveOrg(SysOrg sysOrg); + + void delOrg(List list, boolean o); + //判断是否重复 + Boolean isMany(SysOrg sysOrg); + //将pagedata转化为SysOrgBean + SysOrg getSysOrgBean(Map map); +// //查找险种 +// List queryInsTypeById(long id); + //根据行政区划查找用户机构链接 + boolean findByArea(List list); + //找到子节点 + List findNodes(long node); +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserAreaService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserAreaService.java new file mode 100644 index 0000000..eb0c87a --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserAreaService.java @@ -0,0 +1,13 @@ +package com.insigma.sys.service; + +import com.insigma.sys.entity.SysUserArea; + +import java.util.List; + +/** + * 用户区域表 + */ +public interface SysUserAreaService { + List findUserAreaByUserid(String userid); + void deleteAllByUserid(String userid); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserService.java new file mode 100644 index 0000000..4c93602 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysUserService.java @@ -0,0 +1,206 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import org.springframework.data.domain.Page; + +import java.util.List; +import java.util.Map; + +/** + * @Author: caic + * + * @version: 14:49 2019/1/7 + * @Description: + */ +public interface SysUserService { + /** + * 删除全部用户表数据(同步) + * @return + */ + void deleteAll(); + /** + * 删除用户表数据根据id(同步) + * @return + */ + void deleteByUserId(String id); + /** + * 添加用户表数据(同步) + * @return + */ + void saveAll(SysUser sysUser); + + /** + * 保存和修改用户 + * @param sysUser + * @param map + * @throws AppException + */ + void saveUser(SysUser sysUser, Map> map) throws AppException; + + /** + * 查询全部用户列表 + * @return + */ + List queryAllUser(); + + /** + * 注销用户 + * @param userId + * @throws AppException + */ + SysUser logoutUser(String userId) throws AppException; + + /** + * 解锁用户 + * @param userId + * @throws AppException + */ + SysUser unlockUser(String userId) throws AppException; + + /** + * 锁定用户 + * @param userId + * @throws AppException + */ + SysUser lockUser(String userId) throws AppException; + + /** + * 重置用户密码,重置密码为000000 + * @param userId + * @throws AppException + */ + SysUser resetPassWD(String userId) throws AppException; + + /** + * 修改密码 + * @param oldPass + * @param newPass + * @throws AppException + */ + SysUser updataPassWD(String oldPass, String newPass) throws AppException; + + /** + * 根据区域查询区域下的机构 + * @param areaId + * @return + */ + List queryOrgNodes(String areaId); + + /** + * 获取全部区域 + * @return + */ + List queryAa26Nodes(); + + /** + * 获取用户类型编码集合 + * @return + */ + List> findUsetTypeCode(); + + /** + * 分页查询用户 + * @param logonName + * @param dsiplayName + * @param orgId + * @param userType + * @param page + * @param size + * @return + */ + Page findAll(String logonName, String dsiplayName, String orgId, String userState, String userType, String aa26, String cardId, Integer page, Integer size,String type); + + /** + * 获取用户状态编码集合 + * @return + */ + List> getUserStateCode(); + + /** + * 根据角色类型获取角色 + * @param roleType + * @return + */ + List findByRoleType(String roleType); + + /** + * 校验用户登录名是否重复 + * @param logonName + * @param userId + * @return + */ + boolean checkLogonName(String logonName, String userId); + + /** + * 根据用户id查询单个用户 + * @param userId + * @return + */ + SysUser queryOneUser(String userId); + + /** + * 单个用户修改信息 + * @param sysUser + */ + void updateUser(SysUser sysUser); + /** + * 查询用户绑定的角色 + * @param userId + * @return + */ + List queryUserRole(String userId) throws AppException; + + /** + * 查询用户管理的区域 + * @param userId + * @return + */ + List queryUserArea(String userId) throws AppException; + + /** + * 查询全部机构 + * @return + */ + List findAllOrg(); + + /** + * 通用aa10编码集合 + * @return + */ + List> getAa10Code(String codeType); + /** + * 删除所有用户数据除去admin + * @return + */ + void deleteAllUserExitsAdmin(); + + /** + * 获取密级 + * @return + */ + List> findSlevel(); + + /** + * 保存和修改用户 + * @param sysUser + * @throws AppException + */ + void saveUserRole(SysUser sysUser) throws AppException; + + /** + * 获取用户的密级等级 + * @return + */ + public String getUserSlevel(); + + void batchSaveUsers(List users); + + SysUser findUserByLogonName(String logonName); + + void copyUser(JSONObject data) throws AppException; + + void clearSessions(String userId); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SysWarningLogService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SysWarningLogService.java new file mode 100644 index 0000000..d3b4c0f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SysWarningLogService.java @@ -0,0 +1,11 @@ +package com.insigma.sys.service; + +/** + * @author yinjh + * @version 2021/10/9 + */ +public interface SysWarningLogService { + + void saveLog(String content); + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/SyslogonLogService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/SyslogonLogService.java new file mode 100644 index 0000000..4660bd6 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/SyslogonLogService.java @@ -0,0 +1,29 @@ +package com.insigma.sys.service; + +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.web.securities.entity.SysLogonLog; +import com.insigma.sys.dto.SysLogonLogDTO; + +import java.sql.SQLException; +import java.util.List; + +/** + * fukq 2020/6/2 + */ +public interface SyslogonLogService { + /** + * 分页查询登录日志 + * @param queryDTO + * @param page + * @param size + * @return + * @throws SQLException + */ + PageInfo querySysLogonList(SysLogonLogDTO queryDTO, Integer page, Integer size) throws SQLException; + /** + * 查询上次登录时间 + * @param userId 用户id + * @return 登录日志集合 + */ + List getLastLoginTime(String userId); +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/UService.java b/template/insiis-web/src/main/java/com/insigma/sys/service/UService.java new file mode 100644 index 0000000..fd65399 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/UService.java @@ -0,0 +1,887 @@ +package com.insigma.sys.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.parser.Feature; +import com.insigma.framework.db.util.DBUtil; +import com.insigma.framework.util.SysUtils; +import com.insigma.sys.entity.SysIdMapping; +import com.insigma.sys.entity.SysOrg; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.entity.SysUserArea; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.namedparam.SqlParameterSourceUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; +import org.springframework.util.StringUtils; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class UService { + + @Autowired + private SysUserService sysUserService; + @Autowired + private SysUserAreaService sysUserAreaService; + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private SysIdMappingService sysIdMappingService; + @Autowired + private SysOrgService sysOrgService; + @Autowired + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + @PersistenceContext + private EntityManager em; + @Transactional(rollbackFor = Exception.class) + public void syncuser(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data, Feature.IgnoreNotMatch); + List> paramList = new ArrayList<>();//存放新增 + List> paramList1=new ArrayList<>();//存放修改数据 + JSONObject jsonObject=null; + + if(sysUserService== null){ + sysUserService = SysUtils.getBean(SysUserService.class); + } + String insertSql="insert into sysuser (USERID, LOGONNAME, PASSWD, DISPLAYNAME, USERSTATE, USERTYPE, CARDID, TEL, MOBILE, EMAIL, USERADDR,CREATORID, CREATETIME, DEPARTMENT, CARDTYPE)" + + " values (:USERID,:LOGONNAME,:PASSWD,:DISPLAYNAME,:USERSTATE,:USERTYPE,:CARDID,:TEL,:MOBILE,:EMAIL,:USERADDR,:CREATORID,:CREATETIME,:DEPARTMENT,:CARDTYPE)"; + String updateSql="update sysuser set LOGONNAME=:LOGONNAME,PASSWD=:PASSWD,DISPLAYNAME=:DISPLAYNAME,USERSTATE=:USERSTATE,USERTYPE=:USERTYPE,CARDID=:CARDID,TEL=:TEL,MOBILE=:MOBILE,EMAIL=:EMAIL,USERADDR=:USERADDR,CREATORID=:CREATORID,CREATETIME=:CREATETIME,DEPARTMENT=:DEPARTMENT,CARDTYPE=:CARDTYPE where USERID=:USERID"; + for(int i=0;i param=new HashMap<>();//存放新增 + Map param1=new HashMap<>();//存放修改 + SysUser sysUser=new SysUser(); + jsonObject=JSONObject.parseObject(jsonArray.get(i).toString()); + if("admin".equals(jsonObject.getString("LOGINNAME"))) { + continue; + } + sysUser.setUserId(jsonObject.getString("USERID")); + SysIdMapping useridMapping = sysIdMappingService.queryByTid(sysUser.getUserId()); + if(null==jsonObject.getString("LOGINNAME")|| "".equals(jsonObject.getString("LOGINNAME")) || "null".equals(jsonObject.getString("LOGINNAME"))){ + sysUser.setLogonName(""); + }else { + sysUser.setLogonName(jsonObject.getString("LOGINNAME")); + } + if(null==jsonObject.getString("PASSWD")|| "".equals(jsonObject.getString("PASSWD")) || "null".equals(jsonObject.getString("PASSWD"))){ + sysUser.setPassWD(""); + }else { + sysUser.setPassWD(jsonObject.getString("PASSWD")); + } + if(null==jsonObject.getString("USERNAME")|| "".equals(jsonObject.getString("USERNAME")) || "null".equals(jsonObject.getString("USERNAME"))){ + sysUser.setDisplayName(""); + }else { + sysUser.setDisplayName(jsonObject.getString("USERNAME")); + } + if(null==jsonObject.getString("USEFUL")|| "".equals(jsonObject.getString("USEFUL")) || "null".equals(jsonObject.getString("USEFUL"))){ + sysUser.setUserState(""); + }else { + sysUser.setUserState(jsonObject.getString("USEFUL")); + } + if(null==jsonObject.getString("ISLEADER")|| "".equals(jsonObject.getString("ISLEADER")) || "null".equals(jsonObject.getString("ISLEADER"))){ + sysUser.setUserType(""); + }else { + String isLeader = jsonObject.getString("ISLEADER"); + if("1".equals(isLeader)) { + isLeader = "3"; + } else { + isLeader = "4"; + } + sysUser.setUserType(isLeader); + } + if(null==jsonObject.getString("IDCARD")|| "".equals(jsonObject.getString("IDCARD")) || "null".equals(jsonObject.getString("IDCARD"))){ + sysUser.setCardId(""); + }else { + sysUser.setCardId(jsonObject.getString("IDCARD")); + } + if(null==jsonObject.getString("OFFICEPHONE")|| "".equals(jsonObject.getString("OFFICEPHONE")) || "null".equals(jsonObject.getString("OFFICEPHONE"))){ + sysUser.setTel(""); + }else { + sysUser.setTel(jsonObject.getString("OFFICEPHONE")); + } + if(null==jsonObject.getString("PHONE")|| "".equals(jsonObject.getString("PHONE")) || "null".equals(jsonObject.getString("PHONE"))){ + sysUser.setMobile(""); + }else { + sysUser.setTel(jsonObject.getString("PHONE")); + sysUser.setMobile(jsonObject.getString("PHONE")); + } + if(null==jsonObject.getString("EMAIL")|| "".equals(jsonObject.getString("EMAIL")) || "null".equals(jsonObject.getString("EMAIL"))){ + sysUser.setEMail(""); + }else { + sysUser.setEMail(jsonObject.getString("EMAIL")); + } + if(null==jsonObject.getString("MACADDR")|| "".equals(jsonObject.getString("MACADDR")) || "null".equals(jsonObject.getString("MACADDR"))){ + sysUser.setUserAddr(""); + }else { + sysUser.setUserAddr(jsonObject.getString("MACADDR")); + } + if(null==jsonObject.getString("OWNER")|| "".equals(jsonObject.getString("OWNER")) || "null".equals(jsonObject.getString("OWNER"))){ + sysUser.setCreatorId(""); + }else { + sysUser.setCreatorId(jsonObject.getString("OWNER")); + } + if(null==jsonObject.getString("CREATEDATE")|| "".equals(jsonObject.getString("CREATEDATE")) || "null".equals(jsonObject.getString("CREATEDATE"))){ + sysUser.setCreateTime(null); + }else { + sysUser.setCreateTime(new java.sql.Date(Long.valueOf(jsonObject.getString("CREATEDATE")))); + } + if(null==jsonObject.getString("DEPT")|| "".equals(jsonObject.getString("DEPT")) || "null".equals(jsonObject.getString("DEPT"))){ + sysUser.setDepartment(""); + }else { + sysUser.setDepartment(jsonObject.getString("DEPT")); + } + SysUser user=sysUserService.queryOneUser(sysUser.getUserId()); + //jdbcTemplate.execute(); + String sql=""; + if (user!=null){ + //修改 + param1.put("USERID",sysUser.getUserId()); + param1.put("LOGONNAME",sysUser.getLogonName()); + param1.put("PASSWD",sysUser.getPassWD()); + param1.put("DISPLAYNAME",sysUser.getDisplayName()); + param1.put("USERSTATE",sysUser.getUserState()); + param1.put("USERTYPE",sysUser.getUserType()); + param1.put("CARDID",sysUser.getCardId()); + param1.put("TEL",sysUser.getTel()); + param1.put("MOBILE",sysUser.getMobile()); + param1.put("EMAIL",sysUser.getEMail()); + param1.put("USERADDR",sysUser.getUserAddr()); + param1.put("CREATORID",sysUser.getCreatorId()); + param1.put("CREATETIME",sysUser.getCreateTime()); + param1.put("DEPARTMENT",sysUser.getDepartment()); + param1.put("CARDTYPE","1"); + paramList1.add(param1); + if(i%1000==0){ + namedParameterJdbcTemplate.batchUpdate(updateSql,SqlParameterSourceUtils.createBatch(paramList1)); + paramList1=new ArrayList<>(); + } + }else { + //新增 + param.put("USERID", sysUser.getUserId()); + param.put("LOGONNAME", sysUser.getLogonName()); + param.put("PASSWD", sysUser.getPassWD()); + param.put("DISPLAYNAME", sysUser.getDisplayName()); + param.put("USERSTATE", sysUser.getUserState()); + param.put("USERTYPE", sysUser.getUserType()); + param.put("CARDID", sysUser.getCardId()); + param.put("TEL", sysUser.getTel()); + param.put("MOBILE", sysUser.getMobile()); + param.put("EMAIL", sysUser.getEMail()); + param.put("USERADDR", sysUser.getUserAddr()); + param.put("CREATORID", sysUser.getCreatorId()); + param.put("CREATETIME", sysUser.getCreateTime()); + param.put("DEPARTMENT", sysUser.getDepartment()); + param.put("CARDTYPE", "1"); + paramList.add(param); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + paramList = new ArrayList<>(); + } + } + } + namedParameterJdbcTemplate.batchUpdate(updateSql,SqlParameterSourceUtils.createBatch(paramList1)); + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + } + @Transactional(rollbackFor = Exception.class) + public void syncuserarea(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + List> paramList = new ArrayList<>();//存放新增 + String insertSql="insert into SYSUSERAREA (USERID, AAB301) values (:USERID,:AAB301)"; + //List list=new ArrayList<>(); + //HashMap tidMap = new HashMap<>(); + for(int i=0;i param = new HashMap<>();//存放新增 + SysUserArea sysUserArea = new SysUserArea(); + jsonObject = JSONObject.parseObject(jsonArray.get(i).toString()); + //sysOrg.setOrgid(Long.valueOf(jsonObject.getString("GROUPID"))); + if (null == jsonObject.getString("USERID") || "".equals(jsonObject.getString("USERID")) || "null".equals(jsonObject.getString("USERID"))) { + sysUserArea.setUserId(""); + } else { + sysUserArea.setUserId(jsonObject.getString("USERID")); + } + if (null == jsonObject.getString("DATAGROUPID") || "".equals(jsonObject.getString("DATAGROUPID")) || "null".equals(jsonObject.getString("DATAGROUPID"))) { + sysUserArea.setAab301(""); + } else { + sysUserArea.setAab301(jsonObject.getString("DATAGROUPID")); + } + List sysUserAreas = sysUserAreaService.findUserAreaByUserid(jsonObject.getString("USERID")); + if (sysUserAreas.size() > 0) { + //在表中能查到数据先删除再添加 + sysUserAreaService.deleteAllByUserid(jsonObject.getString("USERID")); + } + //如果两id关联表里面通过同步的groupid查SELFID + SysIdMapping sysIdMapping = sysIdMappingService.queryByTid(jsonObject.getString("DATAGROUPID")); + if (sysIdMapping != null) { + sysUserArea.setAab301(sysIdMapping.getSELFID().toString()); + param.put("USERID", sysUserArea.getUserId()); + param.put("AAB301", sysUserArea.getAab301()); + paramList.add(param); +// if (i%1000==0) { +// namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); +// paramList = new ArrayList<>(); +// } +// log.info("orgid={},userid={}", sysIdMapping.getSELFID().longValue(), sysUserArea.getUserId()); + } +// if (i%1000==0) { +// namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); +// paramList = new ArrayList<>(); +// } + } + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + } + @Transactional(rollbackFor = Exception.class) + public void syncgroup(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + List> paramList = new ArrayList<>();//存放新增 + String insertSql="insert into sysorg (ORGID, ORGNAME, ORGENTERCODE, REGIONCODE, PARENTID, SHORTNAME, LINKMAN, TEL, ORGADDR, ORGDESC,IDPATH)\n" + + "values (:ORGID,:ORGNAME,:ORGENTERCODE, :REGIONCODE, :PARENTID,:SHORTNAME,:LINKMAN,:TEL,:ORGADDR,:ORGDESC,:IDPATH)"; + //List list=new ArrayList<>(); + //HashMap tidMap = new HashMap<>(); + for(int i=0;i param=new HashMap<>();//存放新增 + SysOrg sysOrg=new SysOrg(); + jsonObject=JSONObject.parseObject(jsonArray.get(i).toString()); + //sysOrg.setOrgid(Long.valueOf(jsonObject.getString("GROUPID"))); + if(null==jsonObject.getString("NAME")|| "".equals(jsonObject.getString("NAME")) || "null".equals(jsonObject.getString("NAME"))){ + sysOrg.setOrgname(""); + }else { + sysOrg.setOrgname(jsonObject.getString("NAME")); + } + String orgentercode=""; + String str=jsonObject.getString("GROUPID"); + for(int j=0;j= 48 && str.charAt(j) <= 57) { + orgentercode += str.charAt(j); + if (orgentercode.length()==6){ + break; + } + } + } + if (orgentercode.length()<6) { + for (int k = 0; orgentercode.length() < 6; k++) { + orgentercode += 0; + } + } + String parentid = jsonObject.getString("PARENTID"); + if(null==jsonObject.getString("SHORTNAME")|| "".equals(jsonObject.getString("SHORTNAME")) || "null".equals(jsonObject.getString("SHORTNAME"))){ + sysOrg.setShortname(""); + }else { + sysOrg.setShortname(jsonObject.getString("SHORTNAME")); + } + if(null==jsonObject.getString("LINKMAN")|| "".equals(jsonObject.getString("LINKMAN")) || "null".equals(jsonObject.getString("LINKMAN"))){ + sysOrg.setLinkman(""); + }else { + sysOrg.setLinkman(jsonObject.getString("LINKMAN")); + } + if(null==jsonObject.getString("TEL")|| "".equals(jsonObject.getString("TEL")) || "null".equals(jsonObject.getString("TEL"))){ + sysOrg.setTel(""); + }else { + sysOrg.setTel(jsonObject.getString("TEL")); + } + if(null==jsonObject.getString("ADDRESS")|| "".equals(jsonObject.getString("ADDRESS")) || "null".equals(jsonObject.getString("ADDRESS"))){ + sysOrg.setOrgaddr(""); + }else { + sysOrg.setOrgaddr(jsonObject.getString("ADDRESS")); + } + if(null==jsonObject.getString("DESCRIPTION")|| "".equals(jsonObject.getString("DESCRIPTION")) || "null".equals(jsonObject.getString("DESCRIPTION"))){ + sysOrg.setOrgdesc(""); + }else { + sysOrg.setOrgdesc(jsonObject.getString("DESCRIPTION")); + } + if(null==jsonObject.getString("STATUS")|| "".equals(jsonObject.getString("STATUS")) || "null".equals(jsonObject.getString("STATUS"))){ + sysOrg.setOrgstate("1"); + }else { + sysOrg.setOrgstate(jsonObject.getString("STATUS")); + } + if(null==jsonObject.getString("OTHERINFO")|| "".equals(jsonObject.getString("OTHERINFO")) || "null".equals(jsonObject.getString("OTHERINFO"))){ + sysOrg.setIdpath(""); + }else { + sysOrg.setIdpath(jsonObject.getString("OTHERINFO")); + } + if(null==jsonObject.getString("ORG")|| "".equals(jsonObject.getString("ORG")) || "null".equals(jsonObject.getString("ORG"))){ + sysOrg.setOrgentercode(""); + }else { + sysOrg.setOrgentercode(jsonObject.getString("ORG")); + } + if(null==jsonObject.getString("DISTRICTCODE")|| "".equals(jsonObject.getString("DISTRICTCODE")) || "null".equals(jsonObject.getString("DISTRICTCODE"))){ + sysOrg.setRegioncode(""); + }else { + sysOrg.setRegioncode(jsonObject.getString("DISTRICTCODE")); + } + if(null==jsonObject.getString("PRINCIPAL")|| "".equals(jsonObject.getString("PRINCIPAL")) || "null".equals(jsonObject.getString("PRINCIPAL"))){ + sysOrg.setLeader(""); + }else { + sysOrg.setLeader(jsonObject.getString("PRINCIPAL")); + } + if(null==jsonObject.getString("CHARGEDEPT")|| "".equals(jsonObject.getString("CHARGEDEPT")) || "null".equals(jsonObject.getString("CHARGEDEPT"))){ + sysOrg.setSuperdept(""); + }else { + sysOrg.setSuperdept(jsonObject.getString("CHARGEDEPT")); + } + if(null==jsonObject.getString("RATE")|| "".equals(jsonObject.getString("RATE")) || "null".equals(jsonObject.getString("RATE"))){ + sysOrg.setRate(""); + }else { + sysOrg.setRate(jsonObject.getString("RATE")); + } + //如果两id关联表里面通过同步的groupid能查到=修改 + SysIdMapping sysIdMapping=sysIdMappingService.queryByTid(jsonObject.getString("GROUPID")); + Long realParentid = null; + if(null==parentid|| "".equals(parentid) || "null".equals(parentid)){ + // + }else{ + SysIdMapping orgparentidmapping=sysIdMappingService.queryByTid(parentid); +// SysIdMapping orgparentidmapping = tidMap.get(parentid); +// if(orgparentidmapping == null){ +// orgparentidmapping = sysIdMappingService.queryByTid(parentid); +// if(orgparentidmapping == null) { +// orgparentidmapping = new SysIdMapping(); +// orgparentidmapping.setTID(parentid); +// sysIdMappingService.saveGroupidToOrgid(orgparentidmapping); +// tidMap.put(parentid,orgparentidmapping); +// } +// } + if (orgparentidmapping!=null){ + realParentid = orgparentidmapping.getSELFID().longValue(); + }else { + realParentid= Long.valueOf(0); + } + } + sysOrg.setParentid(realParentid); +// if (sysIdMapping!=null){ + //修改 + sysOrg.setOrgid(sysIdMapping.getSELFID().longValue()); + //sysOrg.setOrgentercode(sysOrg.getOrgentercode()==null?"888888":sysOrg.getOrgentercode()); + transformOrgIdPath(sysOrg); + if(sysOrgService.findByOrgid(sysOrg.getOrgid()) != null) { + em.persist(em.merge(sysOrg)); + if (i % 1000 == 0) { + em.flush(); + em.clear(); + } + }else{ + //新增 + param.put("ORGID", sysOrg.getOrgid()); + param.put("ORGNAME",sysOrg.getOrgname()); + param.put("ORGENTERCODE",sysOrg.getOrgentercode()); + param.put("REGIONCODE", sysOrg.getRegioncode()); + param.put("PARENTID", sysOrg.getParentid()); + param.put("SHORTNAME",sysOrg.getShortname()); + param.put("LINKMAN",sysOrg.getLinkman()); + param.put("TEL", sysOrg.getTel()); + param.put("ORGADDR",sysOrg.getOrgaddr()); + param.put("ORGDESC",sysOrg.getOrgdesc()); + param.put("IDPATH", sysOrg.getIdpath()); + paramList.add(param); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + paramList = new ArrayList<>(); + } + } + log.info("orgid={},save={}",sysIdMapping.getSELFID().longValue(),sysOrg.getOrgid()); +// } +// else { +// //新增 +// sysIdMapping = tidMap.get(jsonObject.getString("GROUPID")); +// if(sysIdMapping == null) { +// SysIdMapping sysIdMapping1 = new SysIdMapping(); +// sysIdMapping1.setTID(jsonObject.getString("GROUPID")); +// sysIdMappingService.saveGroupidToOrgid(sysIdMapping1); +// tidMap.put(sysIdMapping1.getTID(),sysIdMapping1); +// sysIdMapping = sysIdMapping1; +// } +// sysOrg.setOrgid(sysIdMapping.getSELFID().longValue()); +// transformOrgIdPath(sysOrg); +// saveSysOrg(jdbcTemplate,sysOrg); +// } + } + em.flush(); + em.clear(); + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + } + +// private void saveSysOrg(NamedParameterJdbcTemplate namedParameterJdbcTemplate,SysOrg sysOrg){ +// +// +// +// +//// String sql="insert into sysorg (ORGID, ORGNAME, ORGENTERCODE, PARENTID, SHORTNAME, LINKMAN, TEL, ORGADDR, ORGDESC,IDPATH)\n" + +//// "values (?,?,?,?,?,?,?,?,?)"; //错的,ID path值不对 +//// jdbcTemplate.execute(sql); +//// jdbcTemplate.update(sql,sysOrg.getOrgid(),sysOrg.getOrgname(),sysOrg.getOrgentercode()==null?"888888":sysOrg.getOrgentercode(),sysOrg.getParentid(),sysOrg.getShortname(),sysOrg.getLinkman(),sysOrg.getTel(),sysOrg.getOrgaddr(),sysOrg.getOrgdesc(),sysOrg.getIdpath()); +// } + + private void transformOrgIdPath(SysOrg org){ + if(org != null){ + if(!ObjectUtils.isEmpty(org.getIdpath())) { + String[] ids = StringUtils.split(org.getIdpath(), "/"); + String newIdPath = Arrays.stream(ids).map((id) -> { + SysIdMapping idMapping = sysIdMappingService.queryByTid(id); + if (idMapping != null) { + return idMapping.getSELFID().toString(); + } else { + log.error("找不到机构({})字符ID对应的数字ID", id); + return "0"; + } + }).collect(Collectors.joining("/")); + org.setIdpath(newIdPath); + }else{ + org.setIdpath(org.getOrgid().toString()); + } + } + + } + + @Transactional(rollbackFor = Exception.class) + public void syncgroupref(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + HashMap ret=null; + //List list=new ArrayList<>(); + List> paramList = new ArrayList<>();//存放用户新增 + List> paramList1=new ArrayList<>();//存放组织新增 + String insertUserSql="insert into sysuser (USERID, ORGID, LOGONNAME,DISPLAYNAME,AREAID) values (:USERID,:ORGID,:LOGONNAME,:DISPLAYNAME,:AREAID)"; + String insertOrgSql = "insert into sysorg(ORGID,ORGNAME,ORGENTERCODE) values(:ORGID,:ORGNAME,:ORGENTERCODE)"; + for(int i=0;i param=new HashMap<>();//存放新增 + Map param1=new HashMap<>();//存放新增 + SysUser user=new SysUser(); + jsonObject=JSONObject.parseObject(jsonArray.get(i).toString()); + String userid=jsonObject.getString("USERID"); + SysUser sysUser=sysUserService.queryOneUser(userid); + if (sysUser!=null&&sysUser.getUserId()!=null){ + //修改 + SysIdMapping sysIdMapping=sysIdMappingService.queryByTid(jsonObject.getString("GROUPID")); + if (sysIdMapping==null){ + continue; + } + sysUser.setOrgId(sysIdMapping.getSELFID().longValue()); + if(null==jsonObject.getString("DISTRICTCODE")|| "".equals(jsonObject.getString("DISTRICTCODE")) || "null".equals(jsonObject.getString("DISTRICTCODE"))){ + //sysUser.setAreaId(); + }else { + sysUser.setAreaId(Long.parseLong(jsonObject.getString("DISTRICTCODE"))); + } + + em.persist(em.merge(sysUser)); + if (i % 1000 == 0) { + em.flush(); + em.clear(); + } + + + }else { + //新增 + user.setUserId(userid); + SysIdMapping sysIdMapping=sysIdMappingService.queryByTid(jsonObject.getString("GROUPID")); + //if (sysIdMapping!=null){ + //在sysidmapping里面找到 + if (sysIdMapping==null){ + continue; + } + user.setOrgId(sysIdMapping.getSELFID().longValue()); + // insertUserSql="insert into sysuser (USERID, ORGID, LOGONNAME,DISPLAYNAME) values (?,?,?,?)"; + //jdbcTemplate.update(sql,user.getUserId(),user.getOrgId(),"tuser","临时"); + if(null==jsonObject.getString("DISTRICTCODE")|| "".equals(jsonObject.getString("DISTRICTCODE")) || "null".equals(jsonObject.getString("DISTRICTCODE"))){ + //sysUser.setAreaId(); + }else { + sysUser.setAreaId(Long.parseLong(jsonObject.getString("DISTRICTCODE"))); + } + //新增 + param.put("USERID", user.getUserId()); + param.put("ORGID",user.getOrgId()); + param.put("LOGONNAME","tuser"); + param.put("DISPLAYNAME","临时"); + param.put("AREAID", user.getAreaId()); + paramList.add(param); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(insertUserSql, SqlParameterSourceUtils.createBatch(paramList)); + paramList = new ArrayList<>(); + } + if(sysOrgService.findByOrgid(sysIdMapping.getSELFID().longValue()) == null) { + param1.put("ORGID", sysIdMapping.getSELFID().longValue()); + param1.put("ORGNAME","临时"); + param1.put("ORGENTERCODE","888888"); + paramList1.add(param1); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(insertOrgSql, SqlParameterSourceUtils.createBatch(paramList1)); + paramList1 = new ArrayList<>(); + } + } +// }else { +// //在sysidmapping里面找不到 +// SysIdMapping sysIdMapping1=new SysIdMapping(); +// sysIdMapping1.setTID(jsonObject.getString("GROUPID")); + // sysIdMappingService.saveGroupidToOrgid(sysIdMapping1); +// user.setOrgId(sysIdMapping1.getSELFID().longValue()); +// String sql="insert into sysuser (USERID, ORGID, LOGONNAME,DISPLAYNAME) values (?,?,?,?)"; +// jdbcTemplate.update(sql,user.getUserId(),user.getOrgId(),"tuser","临时"); +// + } + } + em.flush(); + em.clear(); + namedParameterJdbcTemplate.batchUpdate(insertUserSql, SqlParameterSourceUtils.createBatch(paramList)); + namedParameterJdbcTemplate.batchUpdate(insertOrgSql, SqlParameterSourceUtils.createBatch(paramList1)); + } + @Transactional(rollbackFor = Exception.class) + public void syncidMapping(String data) throws SQLException { + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + HashMap ret=null; + //List list=new ArrayList<>(); + Date date2=null; + for(int i=0;i> paramList = new ArrayList<>();//存放新增 + JSONObject jsonObject=null; + String insertSql="insert into sysuser (USERID, LOGONNAME, PASSWD, DISPLAYNAME, USERSTATE, USERTYPE, CARDID, TEL, MOBILE, EMAIL, USERADDR,CREATORID, CREATETIME, DEPARTMENT, CARDTYPE)" + + " values (:USERID,:LOGONNAME,:PASSWD,:DISPLAYNAME,:USERSTATE,:USERTYPE,:CARDID,:TEL,:MOBILE,:EMAIL,:USERADDR,:CREATORID,:CREATETIME,:DEPARTMENT,:CARDTYPE)"; + for(int i=0;i param=new HashMap<>();//存放新增 + SysUser sysUser=new SysUser(); + jsonObject=JSONObject.parseObject(jsonArray.get(i).toString()); + if("admin".equals(jsonObject.getString("LOGINNAME"))) { + continue; + } + sysUser.setUserId(jsonObject.getString("USERID")); + if(null==jsonObject.getString("LOGINNAME")|| "".equals(jsonObject.getString("LOGINNAME")) || "null".equals(jsonObject.getString("LOGINNAME"))){ + sysUser.setLogonName(""); + }else { + sysUser.setLogonName(jsonObject.getString("LOGINNAME")); + } + if(null==jsonObject.getString("PASSWD")|| "".equals(jsonObject.getString("PASSWD")) || "null".equals(jsonObject.getString("PASSWD"))){ + sysUser.setPassWD(""); + }else { + sysUser.setPassWD(jsonObject.getString("PASSWD")); + } + if(null==jsonObject.getString("USERNAME")|| "".equals(jsonObject.getString("USERNAME")) || "null".equals(jsonObject.getString("USERNAME"))){ + sysUser.setDisplayName(""); + }else { + sysUser.setDisplayName(jsonObject.getString("USERNAME")); + } + if(null==jsonObject.getString("USEFUL")|| "".equals(jsonObject.getString("USEFUL")) || "null".equals(jsonObject.getString("USEFUL"))){ + sysUser.setUserState(""); + }else { + sysUser.setUserState(jsonObject.getString("USEFUL")); + } + if(null==jsonObject.getString("ISLEADER")|| "".equals(jsonObject.getString("ISLEADER")) || "null".equals(jsonObject.getString("ISLEADER"))){ + sysUser.setUserType(""); + }else { + String isLeader = jsonObject.getString("ISLEADER"); + if("1".equals(isLeader)) { + isLeader = "3"; + } else { + isLeader = "4"; + } + sysUser.setUserType(isLeader); + } + if(null==jsonObject.getString("IDCARD")|| "".equals(jsonObject.getString("IDCARD")) || "null".equals(jsonObject.getString("IDCARD"))){ + sysUser.setCardId(""); + }else { + sysUser.setCardId(jsonObject.getString("IDCARD")); + } + if(null==jsonObject.getString("OFFICEPHONE")|| "".equals(jsonObject.getString("OFFICEPHONE")) || "null".equals(jsonObject.getString("OFFICEPHONE"))){ + sysUser.setTel(""); + }else { + sysUser.setTel(jsonObject.getString("OFFICEPHONE")); + } + if(null==jsonObject.getString("PHONE")|| "".equals(jsonObject.getString("PHONE")) || "null".equals(jsonObject.getString("PHONE"))){ + sysUser.setMobile(""); + }else { + sysUser.setTel(jsonObject.getString("PHONE")); + sysUser.setMobile(jsonObject.getString("PHONE")); + } + if(null==jsonObject.getString("EMAIL")|| "".equals(jsonObject.getString("EMAIL")) || "null".equals(jsonObject.getString("EMAIL"))){ + sysUser.setEMail(""); + }else { + sysUser.setEMail(jsonObject.getString("EMAIL")); + } + if(null==jsonObject.getString("MACADDR")|| "".equals(jsonObject.getString("MACADDR")) || "null".equals(jsonObject.getString("MACADDR"))){ + sysUser.setUserAddr(""); + }else { + sysUser.setUserAddr(jsonObject.getString("MACADDR")); + } + if(null==jsonObject.getString("OWNER")|| "".equals(jsonObject.getString("OWNER")) || "null".equals(jsonObject.getString("OWNER"))){ + sysUser.setCreatorId(""); + }else { + sysUser.setCreatorId(jsonObject.getString("OWNER")); + } + if(null==jsonObject.getString("CREATEDATE")|| "".equals(jsonObject.getString("CREATEDATE")) || "null".equals(jsonObject.getString("CREATEDATE"))){ + sysUser.setCreateTime(null); + }else { + sysUser.setCreateTime(new java.sql.Date(Long.valueOf(jsonObject.getString("CREATEDATE")))); + } + if(null==jsonObject.getString("DEPT")|| "".equals(jsonObject.getString("DEPT")) || "null".equals(jsonObject.getString("DEPT"))){ + sysUser.setDepartment(""); + }else { + sysUser.setDepartment(jsonObject.getString("DEPT")); + } + //新增 + param.put("USERID", sysUser.getUserId()); + param.put("LOGONNAME", sysUser.getLogonName()); + param.put("PASSWD", sysUser.getPassWD()); + param.put("DISPLAYNAME", sysUser.getDisplayName()); + param.put("USERSTATE", sysUser.getUserState()); + param.put("USERTYPE", sysUser.getUserType()); + param.put("CARDID", sysUser.getCardId()); + param.put("TEL", sysUser.getTel()); + param.put("MOBILE", sysUser.getMobile()); + param.put("EMAIL", sysUser.getEMail()); + param.put("USERADDR", sysUser.getUserAddr()); + param.put("CREATORID", sysUser.getCreatorId()); + param.put("CREATETIME", sysUser.getCreateTime()); + param.put("DEPARTMENT", sysUser.getDepartment()); + param.put("CARDTYPE", "1"); + paramList.add(param); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + paramList = new ArrayList<>(); + } + + } + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + } + /** + * 全量同步用户 + */ + @Transactional(rollbackFor = Exception.class) + public void syncIdMappingWithAll(String data) throws SQLException { + sysIdMappingService.deleteAll(); + em.flush(); + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + HashMap ret=null; + Date date2=null; + for(int i = 0; i < jsonArray.size(); i++){ + jsonObject = jsonArray.getJSONObject(i); + SysIdMapping sysIdMapping1=new SysIdMapping(); + sysIdMapping1.setTID(jsonObject.getString("GROUPID")); + if(sysIdMapping1.getSELFID() == null || sysIdMapping1.getSELFID().intValue() == 0){ + Long selfid = DBUtil.getSequence("sys_idmapping"); +// Long selfid = jdbcTemplate.queryForObject("select SYS_IDMAPPING.nextval from dual",Long.class); + sysIdMapping1.setSELFID(selfid.intValue()); + } + em.persist(sysIdMapping1); + if (i % 1000 == 0) { + em.flush(); + em.clear(); + } + } + em.flush(); + em.clear(); + } + @Transactional(rollbackFor = Exception.class) + public void syncgroupWithAll(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + List> paramList = new ArrayList<>();//存放新增 + String insertSql="insert into sysorg (ORGID, ORGNAME, ORGENTERCODE, REGIONCODE, PARENTID, SHORTNAME, LINKMAN, TEL, ORGADDR, ORGDESC,IDPATH)\n" + + "values (:ORGID,:ORGNAME,:ORGENTERCODE, :REGIONCODE, :PARENTID,:SHORTNAME,:LINKMAN,:TEL,:ORGADDR,:ORGDESC,:IDPATH)"; + Map paramMap = new HashMap(); + List> maps=namedParameterJdbcTemplate.queryForList("select t.tid,t.selfid from sysidmapping t",paramMap); + for(int i=0;i param=new HashMap<>();//存放新增 + SysOrg sysOrg=new SysOrg(); + jsonObject=JSONObject.parseObject(jsonArray.get(i).toString()); + if(null==jsonObject.getString("NAME")|| "".equals(jsonObject.getString("NAME")) || "null".equals(jsonObject.getString("NAME"))){ + sysOrg.setOrgname(""); + }else { + sysOrg.setOrgname(jsonObject.getString("NAME")); + } + String orgentercode=""; + String str=jsonObject.getString("GROUPID"); + for(int j=0;j= 48 && str.charAt(j) <= 57) { + orgentercode += str.charAt(j); + if (orgentercode.length()==6){ + break; + } + } + } + if (orgentercode.length()<6) { + for (int k = 0; orgentercode.length() < 6; k++) { + orgentercode += 0; + } + } + String parentid = jsonObject.getString("PARENTID"); + if(null==jsonObject.getString("SHORTNAME")|| "".equals(jsonObject.getString("SHORTNAME")) || "null".equals(jsonObject.getString("SHORTNAME"))){ + sysOrg.setShortname(""); + }else { + sysOrg.setShortname(jsonObject.getString("SHORTNAME")); + } + if(null==jsonObject.getString("LINKMAN")|| "".equals(jsonObject.getString("LINKMAN")) || "null".equals(jsonObject.getString("LINKMAN"))){ + sysOrg.setLinkman(""); + }else { + sysOrg.setLinkman(jsonObject.getString("LINKMAN")); + } + if(null==jsonObject.getString("TEL")|| "".equals(jsonObject.getString("TEL")) || "null".equals(jsonObject.getString("TEL"))){ + sysOrg.setTel(""); + }else { + sysOrg.setTel(jsonObject.getString("TEL")); + } + if(null==jsonObject.getString("ADDRESS")|| "".equals(jsonObject.getString("ADDRESS")) || "null".equals(jsonObject.getString("ADDRESS"))){ + sysOrg.setOrgaddr(""); + }else { + sysOrg.setOrgaddr(jsonObject.getString("ADDRESS")); + } + if(null==jsonObject.getString("DESCRIPTION")|| "".equals(jsonObject.getString("DESCRIPTION")) || "null".equals(jsonObject.getString("DESCRIPTION"))){ + sysOrg.setOrgdesc(""); + }else { + sysOrg.setOrgdesc(jsonObject.getString("DESCRIPTION")); + } + if(null==jsonObject.getString("STATUS")|| "".equals(jsonObject.getString("STATUS")) || "null".equals(jsonObject.getString("STATUS"))){ + sysOrg.setOrgstate("1"); + }else { + sysOrg.setOrgstate(jsonObject.getString("STATUS")); + } + if(null==jsonObject.getString("OTHERINFO")|| "".equals(jsonObject.getString("OTHERINFO")) || "null".equals(jsonObject.getString("OTHERINFO"))){ + sysOrg.setIdpath(""); + }else { + sysOrg.setIdpath(jsonObject.getString("OTHERINFO")); + } + if(null==jsonObject.getString("ORG")|| "".equals(jsonObject.getString("ORG")) || "null".equals(jsonObject.getString("ORG"))){ + sysOrg.setOrgentercode(""); + }else { + sysOrg.setOrgentercode(jsonObject.getString("ORG")); + } + if(null==jsonObject.getString("DISTRICTCODE")|| "".equals(jsonObject.getString("DISTRICTCODE")) || "null".equals(jsonObject.getString("DISTRICTCODE"))){ + sysOrg.setRegioncode(""); + }else { + sysOrg.setRegioncode(jsonObject.getString("DISTRICTCODE")); + } + if(null==jsonObject.getString("PRINCIPAL")|| "".equals(jsonObject.getString("PRINCIPAL")) || "null".equals(jsonObject.getString("PRINCIPAL"))){ + sysOrg.setLeader(""); + }else { + sysOrg.setLeader(jsonObject.getString("PRINCIPAL")); + } + if(null==jsonObject.getString("CHARGEDEPT")|| "".equals(jsonObject.getString("CHARGEDEPT")) || "null".equals(jsonObject.getString("CHARGEDEPT"))){ + sysOrg.setSuperdept(""); + }else { + sysOrg.setSuperdept(jsonObject.getString("CHARGEDEPT")); + } + if(null==jsonObject.getString("RATE")|| "".equals(jsonObject.getString("RATE")) || "null".equals(jsonObject.getString("RATE"))){ + sysOrg.setRate(""); + }else { + sysOrg.setRate(jsonObject.getString("RATE")); + } + + Long realParentid = Long.valueOf(0); + Long Orgid=null; + for(int k=0;k(); + } + } + namedParameterJdbcTemplate.batchUpdate(insertSql, SqlParameterSourceUtils.createBatch(paramList)); + } + + /** + * 同步用户组织关系全量 + * @param data + */ + @Transactional(rollbackFor = Exception.class) + public void syncgrouprefWithAll(String data){ + JSONArray jsonArray = (JSONArray) JSONArray.parse(data,Feature.IgnoreNotMatch); + JSONObject jsonObject=null; + HashMap ret=null; + List> paramList = new ArrayList<>(); + String updateSql="update sysuser set ORGID=:ORGID where USERID=:USERID"; + Map paramMap = new HashMap(); + List> maps=namedParameterJdbcTemplate.queryForList("select t.tid,t.selfid from sysidmapping t",paramMap); + for(int i=0;i param=new HashMap<>();//存放修改 + param.put("USERID", jsonObject.getString("USERID")); + Long Orgid = null; + for (int k = 0; k < maps.size(); k++) { + if (maps.get(k).get("tid").toString().equals(jsonObject.getString("GROUPID"))) { + Orgid = Long.valueOf(String.valueOf(maps.get(k).get("selfid"))); + break; + } + } + param.put("ORGID", Orgid); + paramList.add(param); + if (i % 1000 == 0) { + namedParameterJdbcTemplate.batchUpdate(updateSql, SqlParameterSourceUtils.createBatch(paramList)); + paramList = new ArrayList<>(); + } + } + namedParameterJdbcTemplate.batchUpdate(updateSql, SqlParameterSourceUtils.createBatch(paramList)); + + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/Aa26ServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/Aa26ServiceImpl.java new file mode 100644 index 0000000..c010a6e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/Aa26ServiceImpl.java @@ -0,0 +1,39 @@ +package com.insigma.sys.service.impl; + +import com.insigma.sys.entity.Aa26; +import com.insigma.sys.repository.Aa26Repository; +import com.insigma.sys.service.Aa26Service; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.util.List; + +/** + * @Author: caic + * @version: 14:38 2019/1/22 + * @Description: + */ +@Service("Aa26Service") +public class Aa26ServiceImpl implements Aa26Service { + @Autowired + Aa26Repository aa26Repository; + + @Override + public Aa26 findByAab301(String aab301) { + return aa26Repository.findByAab301(aab301); + } + + @Override + public List findByAa148(String aaa148) { + if (ObjectUtils.isEmpty(aaa148)) { + return aa26Repository.findAa26sByAaa148IsNullOrderByAab301(); + } + return aa26Repository.findAa26sByAaa148OrderByAab301(aaa148); + } + + @Override + public List findAll() { + return aa26Repository.findAll(); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/HolidayServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/HolidayServiceImpl.java new file mode 100644 index 0000000..991dd0e --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/HolidayServiceImpl.java @@ -0,0 +1,70 @@ +package com.insigma.sys.service.impl; + +import com.insigma.sys.entity.SysHoliday; +import com.insigma.sys.repository.SysHolidayRepository; +import com.insigma.sys.service.HolidayService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; + +/** + * @author yinjh + * @version 2021/6/16 + */ +@Service +public class HolidayServiceImpl implements HolidayService { + + @Autowired + private SysHolidayRepository sysHolidayRepository; + + @Override + public List queryHolidayList(int year) { + return sysHolidayRepository.findSysHolidaysByYear(year); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateHolidays(int year, List holidays) { + sysHolidayRepository.deleteByYear(year); + sysHolidayRepository.flush(); + sysHolidayRepository.saveAll(holidays); + } + + @Override + public List getWeekdays(int year) { + List sysHolidays = new ArrayList<>(); + //如果当年没有设置节假日,则默认所有周六周日为节假日 + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + calendar.set(Calendar.YEAR, year); + //第一天 + Date startDate = calendar.getTime(); + calendar.roll(Calendar.DAY_OF_YEAR, -1); + //最后一天 + Date endDate = calendar.getTime(); + // 相隔天数  364 + long step = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000); + //周末集合 + calendar.set(Calendar.DAY_OF_YEAR, 1); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); + for (int i = 0; i < step + 1; i++) { + //判断是否为周末 + if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { + SysHoliday sysHoliday = new SysHoliday(); + sysHoliday.setYear(calendar.get(Calendar.YEAR)); + sysHoliday.setMonth(calendar.get(Calendar.MONTH) + 1); + sysHoliday.setDay(calendar.get(Calendar.DAY_OF_MONTH)); + sysHolidays.add(sysHoliday); + } + //加一天 + calendar.add(Calendar.DAY_OF_YEAR, 1); + } + return sysHolidays; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/MenuServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..0ded0e4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/MenuServiceImpl.java @@ -0,0 +1,555 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.commons.syslog.Syslog; +import com.insigma.framework.web.securities.service.SysCacheService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.MenuDTO; +import com.insigma.sys.entity.SysMenu; +import com.insigma.sys.entity.SysRoleFunction; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.entity.SysUserRole; +import com.insigma.sys.repository.MenuRepository; +import com.insigma.sys.repository.SysRoleFunctionRepository; +import com.insigma.sys.repository.SysUserRoleRepository; +import com.insigma.sys.service.MenuService; +import com.insigma.web.support.repository.CodeTypeRepository; +import com.insigma.web.support.entity.CodeType; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class MenuServiceImpl implements MenuService { + @Autowired + private MenuRepository menuRepository; + @Autowired + private CodeTypeRepository codeTypeRepository; + @Autowired + private SysRoleFunctionRepository sysRoleFunctionRepository; + @Autowired + private SysUserRoleRepository sysUserRoleRepository; + @Autowired + private SysCacheService sysCacheService; + @Override + public List queryAllMenu() { + List menuDTOS = new ArrayList<>(); + List sysMenuList = menuRepository.findTrees(); + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + menuDTOS.add(menuDTO); + }); + + return menuDTOS; + } + + @Override + public SysMenu findMenuById(long id) { + SysMenu sysMenu =menuRepository.findById(id); + return sysMenu; + } + + @Syslog("保存菜单:${sysMenu.title}") + @Override + @Transactional(rollbackFor=Exception.class) + public void save(SysMenu sysMenu) { + String s = ""; + List m = new ArrayList<>(); + + if(sysMenu.getIdpath() != null){ + s = sysMenu.getIdpath(); + m = findNodes(sysMenu.getIdpath()); + } + menuRepository.save(sysMenu); + SysMenu sysMenu1 = findMenuById(sysMenu.getParentid()); + if(sysMenu1 == null){ + sysMenu.setIdpath("0/" + sysMenu.getFunctionid()); + }else { + sysMenu.setIdpath(sysMenu1.getIdpath() + "/" + sysMenu.getFunctionid()); + } + menuRepository.save(sysMenu); + if(!"".equals(s) && m.size() > 0){ + for (SysMenu sm : m){ + sm.setIdpath(sm.getIdpath().replace(s, sysMenu.getIdpath())); + menuRepository.save(sm); + } + } + // 清除菜单缓存 + sysCacheService.clearFunctionCache(sysMenu.getLocation()); + } + + @Override + public void update(SysMenu sysMenu) { + menuRepository.update(sysMenu.getFunctionid(),sysMenu.getFunorder(),sysMenu.getParentid()); + + } + + @Syslog("删除菜单:${list[0].title}") + @Override + @Transactional(rollbackFor=Exception.class) + public void delete(List list, boolean isWithRole) { + for (int i=0;i sysFunctionRole=sysRoleFunctionRepository.queryRoleBy(list.get(i).getFunctionid()); + for (SysRoleFunction s:sysFunctionRole){ + sysRoleFunctionRepository.delete(s); + } + } + } + // 清空所有菜单缓存 + sysCacheService.clearFunctionCache(null); + } + + + @Override + public List findTreesByPId(long id) { + List menus1=menuRepository.findTreesByPId(id); + return menus1; + } + + @Override + public SysMenu queryByFuncID(long parentid) { + SysMenu sysMenu =menuRepository.findById(parentid); + return sysMenu; + } + public JSONObject getCodeTypes(JSONObject jsonObject) { + // + List list = new ArrayList<>(); + list.addAll(jsonObject.keySet()); + List codeTypeList = codeTypeRepository.findByCodetypeInOrderByCodetypeAscKeyAsc(list); + //System.out.println(codeTypeList); + JSONObject codeTypes = new JSONObject(); + codeTypeList.stream() + .filter(ct -> jsonObject.getJSONArray(ct.getCodetype()).size() == 0) + .forEach(ct -> { + JSONObject ctObj = new JSONObject(); + ctObj.put("key", ct.getKey()); + ctObj.put("value", ct.getValue()); + if(codeTypes.getJSONArray(ct.getCodetype()) == null) { + JSONArray jsonArray = new JSONArray(); + codeTypes.put(ct.getCodetype(), jsonArray); + } + codeTypes.getJSONArray(ct.getCodetype()).add(ctObj); + }); + return jsonObject.fluentPutAll(codeTypes); + } + + @Override + public boolean findFunctionRoles(SysMenu sysMenu) { + boolean flag=false; + List list=findNodes(sysMenu.getIdpath()); + for (SysMenu list1:list){ + List sysFunctionRoles=sysRoleFunctionRepository.queryRoleBy(list1.getFunctionid()); + if (sysFunctionRoles.size()>0){ + flag=true; + break; + } + } + return flag; + } + + @Override + public List queryMenuByFuntype(String funtype) { + + List menuDTOS = new ArrayList<>(); + + List sysMenuList = menuRepository.findTreesByFuntype(funtype); + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + menuDTOS.add(menuDTO); + }); + + return menuDTOS; + } + + @Override + public List getMenuList(SysUser user) { + List menuDTOS = new ArrayList<>(); + List sysMenuList; + // 如果是超级管理员则显示所有菜单 + if("1".equals(user.getUserType())) { + sysMenuList = menuRepository.getMenuList(); + // if(SysManageMode.isTripleMode()) {//三员制 + // 1、查询用户所拥有的角色 + // List sysUserRoles = sysUserRoleRepository.findByUserId(user.getUserId()); + // // 2、查询角色们所拥有的菜单 + // List roleIds = sysUserRoles.stream().map(role -> role.getRoleId()).collect(Collectors.toList()); + // if(roleIds.size() > 0) { + // sysMenuList = menuRepository.getMenuList(roleIds); + // } else { + // sysMenuList = new ArrayList<>(); + // } + // } + } else { + // 1、查询用户所拥有的角色 + List sysUserRoles = sysUserRoleRepository.findByUserId(user.getUserId()); + // 2、查询角色们所拥有的菜单 + List roleIds = sysUserRoles.stream().map(role -> role.getRoleId()).collect(Collectors.toList()); + if(roleIds.size() > 0) { + sysMenuList = menuRepository.getMenuList(roleIds); + } else { + sysMenuList = new ArrayList<>(); + } + } + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + menuDTO.setAppid(sysMenu.getAppId()); + menuDTOS.add(menuDTO); + }); + return menuDTOS; + } + + @Override + public List getVirtualMenuList(SysUser user) { + List menuDTOS = new ArrayList<>(); + List sysMenuList; + sysMenuList = menuRepository.getMenuList(); + + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + menuDTOS.add(menuDTO); + }); + return menuDTOS; + } + @Override + public SysMenu getSysMenuBean(Map map) { + SysMenu sysMenu =new SysMenu(); + sysMenu.setTitle(map.get("title").toString()); + sysMenu.setLocation(map.get("location").toString()); + sysMenu.setFuntype(map.get("funtype").toString()); + sysMenu.setNodetype(map.get("nodetype").toString()); + sysMenu.setActive(map.get("active").toString()); + sysMenu.setDescription(map.get("description").toString()); + sysMenu.setDeveloper(map.get("developer").toString()); + if (!ObjectUtils.isEmpty(map.get("openmode"))) { + sysMenu.setOpenmode(map.get("openmode").toString()); + }else{ + sysMenu.setOpenmode(null); + } + if (!ObjectUtils.isEmpty(map.get("funorder"))) { + sysMenu.setFunorder(Integer.parseInt(map.get("funorder").toString())); + }else { + sysMenu.setFunorder(0); + } + if (!ObjectUtils.isEmpty(map.get("funcode"))) { + sysMenu.setFuncode(map.get("funcode").toString()); + } + sysMenu.setIcon(map.get("icon").toString()); + sysMenu.setIslog(map.get("islog").toString()); + sysMenu.setAuflag(map.get("auflag").toString()); + sysMenu.setRbflag(map.get("rbflag").toString()); + sysMenu.setDigest(map.get("digest").toString()); + sysMenu.setSlevel(map.get("slevel").toString()); + if (!ObjectUtils.isEmpty(map.get("appId"))) { + sysMenu.setAppId(map.get("appId").toString()); + }else { + sysMenu.setAppId(null); + } + +// sysMenu.setParentid((long) Integer.parseInt(map.get("parentid").toString())); +// if (!map.get("functionid").toString().equals("")){ +// sysMenu.setFunctionid((long)Integer.parseInt(map.get("functionid").toString())); +// } + sysMenu.setParentid( map.get("parentid")==null?0:Long.valueOf(String.valueOf(map.get("parentid")))); + if (!ObjectUtils.isEmpty(map.get("functionid"))) { + sysMenu.setFunctionid(Long.valueOf((String.valueOf(map.get("functionid"))))); + } + if (!ObjectUtils.isEmpty(map.get("idpath"))) { + sysMenu.setIdpath(String.valueOf(map.get("idpath"))); + } + return sysMenu; + } + + @Override + public boolean isManyLocations(SysMenu sysMenu) { + boolean flag = false; + // 配置了菜单url且不是节点 + if (!ObjectUtils.isEmpty(sysMenu.getLocation()) && !"1".equals(sysMenu.getNodetype())) { + List sysMenus = menuRepository.findLocation(sysMenu.getLocation()); + // 新增 + if (ObjectUtils.isEmpty(sysMenu.getFunctionid())) { + if (sysMenus.size() > 0) { + flag = true; + } + } else { // 修改 + if (sysMenus.size() > 0 && !sysMenu.getFunctionid().equals(sysMenus.get(0).getFunctionid())) { + flag = true; + } + } + } + return flag; + + } + + @Override + public List findNodes(String idpath) { + List sysMenus=menuRepository.findByIdpathStartingWith(idpath); + return sysMenus; +// JSONArray treedatas=JSONArray.parseArray(trees); +// List list=new ArrayList(); +// if(treedatas.size()>0){ +// for(int i=0;i findNodesNoAnNiu(Long id) { + List sysMenus=menuRepository.findNodesNoAnNiu(id); + return sysMenus; + } + + public JSONObject findFunctionid(JSONObject jsonObject,String node){ + JSONArray jsonArray= (JSONArray)jsonObject.get("children"); + JSONObject jsonObject1=new JSONObject(); + for (int j=0;j0){ +// for(int j=0;j queryMenuByFuntypeAndActive(String funtype) { + + List menuDTOS = new ArrayList<>(); + String originFuntype=funtype; + if(SysManageMode.isTripleMode()){//三员制 + if("3".equals(funtype)){//安全管理员角色按照系统管理员去查管理类和通用类菜单 + funtype="1"; + }else if("4".equals(funtype)){//审计管理员角色按照系统管理员去查管理类和通用类菜单 + funtype="1"; + } + } + List sysMenuList = menuRepository.findTreesByFuntypeAndActive(funtype); + + if(SysManageMode.isTripleMode()) {//三员制 + List location=new ArrayList(); + if("3".equals(originFuntype)){ + location.add("/sys/user"); + location.add("/sys/usertms"); + }else if("4".equals(originFuntype)){ + location.add("/sys/role"); + location.add("/sys/grant"); + location.add("/sys/user"); + location.add("/sys/usertms"); + } + location.add("/sys/user"); + removeMenu(location,sysMenuList); + }else{ + List location=new ArrayList(); + location.add("/sys/grant"); + location.add("/sys/usertms"); + removeMenu(location,sysMenuList); + } + + Set ids = new HashSet<>(); + + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + + // 如果是按钮,并且父ID没有add进ids中,构造基本功能节点并放在第一位 + if ("3".equals(menuDTO.getNodetype()) && !ids.contains(menuDTO.getParentid())) { + MenuDTO base = new MenuDTO(); + // 虚拟一个 + base.setFunctionid(-menuDTO.getParentid()); + base.setParentid(menuDTO.getParentid()); + base.setTitle("基本功能"); + menuDTOS.add(base); + ids.add(menuDTO.getParentid()); + } + + menuDTOS.add(menuDTO); + + }); + + return menuDTOS; + } + + @Override + public List findNodeslevel(Long id) { + + return menuRepository.findNodeslevel(id); + } + + @Override + public List queryMenusByUserId(String userId) { + List menuDTOS = new ArrayList<>(); + List sysMenuList = menuRepository.findTreesByUserId(userId); + sysMenuList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + menuDTOS.add(menuDTO); + }); + return menuDTOS; + } + + @Override + public List getButtonAuthList(SysUser user, String location) { + List buttonAuthList = new ArrayList<>(); + List menuList = menuRepository.findLocation(location); + if (menuList.size() > 0) { + Long parentId = menuList.get(0).getFunctionid(); + if("1".equals(user.getUserType())) { + buttonAuthList = menuRepository.getAllButtonAuthList(parentId); + } else { + // 1、查询用户所拥有的角色 + List sysUserRoles = sysUserRoleRepository.findByUserId(user.getUserId()); + // 2、查询角色们所拥有的按钮 + List roleIds = sysUserRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList()); + if(roleIds.size() > 0) { + buttonAuthList = menuRepository.getButtonAuthList(roleIds, parentId); + } + } + } + return buttonAuthList; + } + + @Override + public String updateNodeOrder(MenuDTO nodeBy, MenuDTO nodeTo) { + String message = null; + List allMenuList = this.queryAllMenu(); + //获取当前拖拽节点的父节点 + Long pid = nodeBy.getParentid(); + //获取当前拖拽节点的父节点下所有的child + List childList = menuRepository.findTreesByPId(pid); + //转化 + List childListByMenuDTO = new ArrayList<>(); + childList.stream().forEach(sysMenu -> { + MenuDTO menuDTO = new MenuDTO(); + BeanUtils.copyProperties(sysMenu, menuDTO); + menuDTO.setPath(sysMenu.getLocation()); + childListByMenuDTO.add(menuDTO); + }); + //获取nodeBy的下标 + int nodeByIndex = childListByMenuDTO.indexOf(nodeBy); + if(nodeByIndex == -1){ + message = "未获取被拖拽node下标"; + return message; + } + //获取nodeTo的下标 + int nodeToIndex = childListByMenuDTO.indexOf(nodeTo); + if(nodeToIndex == -1){ + message = "未获取目标对象node下标"; + return message; + } + //截取从nodeBy到nodeTo的list + if(nodeBy.getFunorder() > nodeTo.getFunorder()){ + //上移 + nodeByIndex = nodeByIndex + 1; + List subList = childListByMenuDTO.subList(nodeToIndex,nodeByIndex); + for(int i = 0;i < subList.size();i++){ + //获取ID与order + Long nodeFunctionId = subList.get(i).getFunctionid(); + int funOrder = subList.get(i).getFunorder(); + if(i == subList.size()-1){ + //获取subList顶端的node赋值给拖动的目标node + menuRepository.updateNodeOrder(nodeFunctionId,subList.get(0).getFunorder()); + continue; + } + //前序+1,更新 + menuRepository.updateNodeOrder(nodeFunctionId,funOrder+1); + } + message = "向下tuo"; + }else if(nodeBy.getFunorder() < nodeTo.getFunorder()){ + //下移 + List subList = childListByMenuDTO.subList(nodeByIndex,nodeToIndex+1); + for(int i = 0;i < subList.size();i++){ + //获取ID与order + Long nodeFunctionId = subList.get(i).getFunctionid(); + int funOrder = subList.get(i).getFunorder(); + if(i == 0){ + //获取subList底端的node赋值给拖动的目标node + menuRepository.updateNodeOrder(nodeFunctionId,subList.get(subList.size() - 1).getFunorder()); + continue; + } + //前序-1,更新 + menuRepository.updateNodeOrder(nodeFunctionId,funOrder-1); + } + } + return message; + } + + public void removeMenu(List location,List sysMenuList){ + List listRemove=new ArrayList(); + for(int i=0;i0){ + for(int i=0;i getReportDetailedData(MonitorCentersDTO monitorCentersDTO) { + String mon = monitorCentersDTO.getTimeStart() == null ? "" : monitorCentersDTO.getTimeStart(); + String nowDate = monitorCentersDTO.getTimeEnd() == null ? "" : monitorCentersDTO.getTimeEnd(); + String getUrl = url + "/monitor/count/getReportDetailedData?appName=" + monitorCentersDTO.getAppName().toLowerCase() + "&startTime=" + mon + "&endTime=" + nowDate; + log.info("获取报告详细数据url是=====" + getUrl); + JSONObject result = restTemplate.getForObject(getUrl, JSONObject.class); + Map map = new HashMap<>(); + JSONObject data = result.getJSONObject("data"); + map.put("dates", data.getString("dates")); + map.put("score", data.getString("score")); + map.put("scoreSlowSql", data.getString("scoreSlowSql")); + map.put("scoreErrorSql", data.getString("scoreErrorSql")); + map.put("scoreSlowUrl",data.getString("scoreSlowUrl")); + map.put("scoreJdbcErrorUrl", data.getString("scoreJdbcErrorUrl")); + map.put("type", data.getString("type")); + map.put("sqlAvgTime", data.getString("sqlAvgTime")); + map.put("urlAvgTime", data.getString("urlAvgTime")); + map.put("slowSql", data.getString("slowSql")); + map.put("sqlExecuteError", data.getString("sqlExecuteError")); + map.put("sqlExecuteErrorCount", data.getString("sqlExecuteErrorCount")); + map.put("slowUri", data.getString("slowUri")); + map.put("jdbcError", data.getString("jdbcError")); + map.put("jdbcErrorCount", data.getString("jdbcErrorCount")); + map.put("newDate", new SimpleDateFormat("yyyy年 MM月 dd日 HH:mm:ss").format(new Date())); + map.put("sqlList", data.getJSONArray("sqlList").toJavaList(Map.class)); + map.put("sqlErrorList", data.getJSONArray("sqlErrorList").toJavaList(Map.class)); + map.put("uriList", data.getJSONArray("uriList").toJavaList(Map.class)); + map.put("jdbcErrorList", data.getJSONArray("jdbcErrorList").toJavaList(Map.class)); + return map; + } + + /** + * 下载历史数据 + * + * @return + */ + @Override + public List getDataExport(String appName) { + String getUrl = url + "/monitor/count/getDataExport?appName=" + appName; + JSONObject result = restTemplate.getForObject(getUrl, JSONObject.class); + JSONObject data = result.getJSONObject("data"); + List list = data.getJSONArray("list").toJavaList(Map.class); + return list; + } + + /** + * 获取菜单id + * + * @return + */ + @Override + public SysMenu queryEntity(String url) { + SysMenu sysMenu = menuRepository.queryEntity(url); + return sysMenu; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ParamConfigServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ParamConfigServiceImpl.java new file mode 100644 index 0000000..b20e9b3 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ParamConfigServiceImpl.java @@ -0,0 +1,74 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.service.ParamConfigService; +import com.insigma.web.support.repository.Aa01Repository; +import com.insigma.web.support.entity.Aa01; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.Predicate; +import java.util.ArrayList; +import java.util.List; + +/** + * @author yinjh + * @version 2022/10/17 + * @since 2.7.0 + */ +@Service +public class ParamConfigServiceImpl implements ParamConfigService { + + @Autowired + private Aa01Repository aa01Repository; + + @Override + public PageInfo query(String aaa001, String aaa002, Integer page, Integer size) { + PageInfo pageInfo = new PageInfo<>(); + + Specification queryParams = (Specification) (root, criteriaQuery, criteriaBuilder) -> { + List predicates = new ArrayList<>(); + if(null != aaa001 && !"".equals(aaa001)) { + predicates.add(criteriaBuilder.like(root.get("aaa001"), "%" + aaa001 + "%")); + } + if(null != aaa002 && !"".equals(aaa002)) { + predicates.add(criteriaBuilder.like(root.get("aaa002"), "%" + aaa002 + "%")); + } + Predicate[] p = new Predicate[predicates.size()]; + criteriaQuery.where(criteriaBuilder.and(predicates.toArray(p))); + criteriaQuery.orderBy(criteriaBuilder.asc(root.get("aaa001"))); + return criteriaQuery.getRestriction(); + }; + // 分页 + Pageable pageable = PageRequest.of(page, size); + Page aa01Page = aa01Repository.findAll(queryParams, pageable); + pageInfo.setData(aa01Page.getContent()); + pageInfo.setTotal(aa01Page.getTotalElements()); + + return pageInfo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(Aa01 aa01, boolean isUpdate) { + Aa01 aa01Temp = aa01Repository.findByAaa001(aa01.getAaa001()); + if (aa01Temp == null && isUpdate) { + throw new AppException("参数类别【" + aa01.getAaa001() + "】不存在!"); + } else if (aa01Temp != null && !isUpdate) { + throw new AppException("参数类别【" + aa01.getAaa001() + "】已存在!"); + } + aa01Repository.saveAndFlush(aa01); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String aaa001) { + aa01Repository.deleteById(aaa001); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/RoleServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..4f8f267 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/RoleServiceImpl.java @@ -0,0 +1,547 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.commons.syslog.Syslog; +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.web.securities.service.SysCacheService; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.SysRoleDTO; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import com.insigma.sys.repository.RoleRepository; +import com.insigma.sys.repository.SysCodeRepository; +import com.insigma.sys.repository.SysRoleFunctionRepository; +import com.insigma.sys.repository.SysUserRoleRepository; +import com.insigma.sys.service.RoleService; +import com.insigma.web.support.repository.CodeTypeRepository; +import com.insigma.web.support.entity.CodeType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.Predicate; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +/** + * Created by zxy on 2019/1/7. + */ +@Service +public class RoleServiceImpl implements RoleService { + + @Autowired + private RoleRepository roleRepository; + + @Autowired + private CodeTypeRepository codeTypeRepository; + + @Autowired + private SysRoleFunctionRepository sysRoleFunctionRepository; + + @Autowired + private SysUserRoleRepository sysUserRoleRepository; + + @Autowired + private SysCodeRepository sysCodeRepository; + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private SysCacheService sysCacheService; + + + @Syslog("保存角色:${sysRole.rolename}") + @Override + @Transactional(rollbackFor = Exception.class) + public void save(SysRole sysRole) { + //SysRole sysRole = JavaBeanUtils.pageElementToBean(pageData, "form1", SysRole.class); + roleRepository.save(sysRole); + } + + @Override + public SysRoleDTO query(String rolename, String roledesc, String roletype, Integer page, Integer size, + Long areaid, Long orgid, String usertype) { + SysRoleDTO sysRoleDTO = new SysRoleDTO(); + Specification queryParams = (Specification) (root, criteriaQuery, criteriaBuilder) -> { + List predicates = new ArrayList<>(); + if (null != rolename && !"".equals(rolename)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("rolename"), "%" + rolename + "%")); + } + if (null != roledesc && !"".equals(roledesc)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("roledesc"), "%" + roledesc + "%")); + } + if (null != roletype && !"".equals(roletype)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("roletype"), roletype)); + } + if (null != usertype && !"".equals(usertype)) { + if ("1".equals(usertype)) {//超级管理员 + + } else if ("2".equals(usertype)) {//行政区管理员 + predicates.add((Predicate) criteriaBuilder.equal(root.get("areaid"), areaid)); + } else if ("3".equals(usertype)) {//机构管理员 + predicates.add((Predicate) criteriaBuilder.equal(root.get("orgid"), orgid)); + } + } + + Predicate[] p = new Predicate[predicates.size()]; + criteriaQuery.where(criteriaBuilder.and(predicates.toArray(p))); + + criteriaQuery.orderBy(criteriaBuilder.asc(root.get("rolename")), + criteriaBuilder.asc(root.get("roletype")), criteriaBuilder.asc(root.get("roledesc"))); + return criteriaQuery.getRestriction(); + }; + Pageable pageable = PageRequest.of(page, size); + Page codePage = roleRepository.findAll(queryParams, pageable); + sysRoleDTO.setTotal(codePage.getTotalElements()); + sysRoleDTO.setData(codePage.getContent()); + + return sysRoleDTO; + + } + + @Syslog("删除角色:${sysRole.rolename}") + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSysRole(SysRole sysRole) { + roleRepository.delete(sysRole); + } + + @Override + public JSONObject getCodeTypes(JSONObject jsonObject) { + // 获取CodeTypes start + List list = new ArrayList<>(); + // 将Set中的数据拷贝到List中 + list.addAll(jsonObject.keySet()); + List codeTypeList = codeTypeRepository.findByCodetypeInOrderByCodetypeAscKeyAsc(list); + //System.out.println(codeTypeList); + JSONObject codeTypes = new JSONObject(); + codeTypeList.stream() + .filter(ct -> jsonObject.getJSONArray(ct.getCodetype()).size() == 0) + .forEach(ct -> { + JSONObject ctObj = new JSONObject(); + ctObj.put("key", ct.getKey()); + ctObj.put("value", ct.getValue()); + if (codeTypes.getJSONArray(ct.getCodetype()) == null) { + JSONArray jsonArray = new JSONArray(); + codeTypes.put(ct.getCodetype(), jsonArray); + } + codeTypes.getJSONArray(ct.getCodetype()).add(ctObj); + }); + return jsonObject.fluentPutAll(codeTypes); + } + + /*@Override + public void saveRoleFunction(SysRoleFunction sysRoleFunction) { + + sysRoleFunctionRepository.save(sysRoleFunction); + }*/ + + @Override + public boolean checkRoleByRolename(String rolename) { + List list = roleRepository.findByRolename(rolename); + if (list.size() == 0) {//查询结果为空,则表示没有登录名称重复 + return true; + } + return false; + } + + @Override + public boolean checkRoleByRolenameAndRoleid(String rolename, String roleid) { + List list = null; + list = roleRepository.checkRoleIfValidByRoleid(roleid); + String oldRolename = list.get(0).getRolename(); + if (rolename.equals(oldRolename)) { + //说明没有改变角色名称 + return true; + } else { + list = roleRepository.findByRolename(rolename); + if (list.size() > 0) { + return false; + } else { + return true; + } + } + } + + @Override + public List queryRoleByUserId(String userid) { + List list = roleRepository.queryRoleByUserId(userid); + return list; + } + + @Syslog("删除角色:${sysRole.rolename}") + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRoleRef(SysRole sysRole) { + roleRepository.delete(sysRole); + sysRoleFunctionRepository.deleteRoleFunction(sysRole.getRoleid()); + sysUserRoleRepository.deleteUserRole(sysRole.getRoleid()); + + // 清空所有用户菜单缓存 + sysCacheService.clearUserCache(null); + sysCacheService.clearFunctionCache(null); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public List queryFuncitonidByRoleid(String roleid) { + List list = sysRoleFunctionRepository.queryFuncitonidByRoleid(roleid); + List alls = sysRoleFunctionRepository.queryFuncitonidAllByRoleid(roleid); + List buttons = alls.stream().filter(item -> item < 0).collect(Collectors.toList()); + List originList = buttons.stream().map(item -> -item).collect(Collectors.toList()); + list.removeAll(originList); + list.addAll(buttons); + return list; + } + + @Override + public boolean checkRoleIfValidByRoleid(String roleid) { + List list = roleRepository.checkRoleIfValidByRoleid(roleid); + boolean flag = false; + if (list.size() > 0) { + return true; + } else { + return false; + } + } + + @Override + public SysRole getRoleById(String roleid) { + List list = roleRepository.checkRoleIfValidByRoleid(roleid); + if (list.size() > 0) { + return list.get(0); + } + return null; + } + + @Override + public boolean roleCanOperate(SysUser sysUser, SysRole sysRole) { + boolean flag = true; + if ("2".equals(sysUser.getUserType())) { + if (sysRole.getAreaid() == null || !sysRole.getAreaid().equals(sysUser.getAreaId())) { + flag = false; + } + } else if ("3".equals(sysUser.getUserType())) { + if (sysRole.getOrgid() == null || !sysRole.getOrgid().equals(sysUser.getOrgId())) { + flag = false; + } + } else if ("4".equals(sysUser.getUserType())) { + flag = false; + } + return flag; + } + + public void deleteRoleFunctionRefAndAddNewRef(String roleid, List list) { + /** + * 先删除老的角色资源关系,后增加新的角色资源关系 + */ + sysRoleFunctionRepository.deleteRoleFunction(roleid); + SysRoleFunction sysRoleFunction = null; + Long functionid = null; + for (int i = 0; i < list.size(); i++) { + functionid = list.get(i); + sysRoleFunction = new SysRoleFunction(); + sysRoleFunction.setRoleid(roleid); + sysRoleFunction.setFunctionid(functionid); + sysRoleFunctionRepository.save(sysRoleFunction); + } + } + + @Syslog("对角色:${role.rolename}授权菜单") + @Override + @Transactional(rollbackFor = Exception.class) + public void saveGrant(SysUser sysUser, SysRole role, JSONObject jsonObject) { + JSONArray treeInfo = jsonObject.getJSONArray("treeInfo"); + JSONObject jsonTemp = null; + List fids = new ArrayList<>(); + for (int i = 0; i < treeInfo.size(); i++) { + jsonTemp = treeInfo.getJSONObject(i); + Long functionid = jsonTemp.getLong("functionid"); + fids.add(functionid); + } + this.deleteRoleFunctionRefAndAddNewRef(role.getRoleid(), fids); + + // 清空所有菜单缓存 + sysCacheService.clearFunctionCache(null); + } + + @Override + public List> findRoleTypesCode() { + List list = sysCodeRepository.findByAaa100("ROLETYPE"); + if (SysManageMode.isTripleMode()) {//三员制 + if ("1".equals(currentUserService.getCurrentUser().getUserType()) || "5".equals(currentUserService.getCurrentUser().getUserType())) {//如果不是超级管理员或者安全管理员 + + } else { + List listRemove = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + if ("1".equals(list.get(i).getAaa105())) { + listRemove.add(list.get(i).getAaz093()); + } + } + if (listRemove.size() > 0) { + for (int i = 0; i < listRemove.size(); i++) { + for (int j = 0; j < list.size(); j++) { + if (listRemove.get(i).toString().equals(list.get(j).getAaz093().toString())) { + list.remove(j); + break; + } + } + + } + } + } + } else { + List listRemove = new ArrayList(); + for (int i = 0; i < list.size(); i++) { + if ("1".equals(list.get(i).getAaa105())) { + listRemove.add(list.get(i).getAaz093()); + } + } + if (listRemove.size() > 0) { + for (int i = 0; i < listRemove.size(); i++) { + for (int j = 0; j < list.size(); j++) { + if (listRemove.get(i).toString().equals(list.get(j).getAaz093().toString())) { + list.remove(j); + break; + } + } + + } + } + } + return aa10ToCodeList(list); + } + + /** + * 将aa10数据组装成List格式 + * + * @param list + * @return + */ + private List> aa10ToCodeList(List list) { + List> codeList = new ArrayList<>(); + for (Aa10 aa10 : list) { + Map tem = new ConcurrentHashMap(); + tem.put("key", aa10.getAaa102()); + tem.put("value", aa10.getAaa102()); + tem.put("label", aa10.getAaa103()); + codeList.add(tem); + } + return codeList; + } + + @Override + public PageInfo queryToGrantUser(String roleId, String roletype, String logonname, String displayname, + Integer page, Integer size) throws SQLException { + SysUser currentUser = currentUserService.getCurrentUser(); + String usertype = currentUser.getUserType(); + String sql = null; + if ("1".equals(roletype)) {//系统管理类角色 + if ("1".equals(usertype)) {//当前登录用户为超级管理员,则可以授权所有管理类用户(超管、行政管、机构管) + sql = "select * from sysuser where (usertype ='1' or USERTYPE = '2' or USERTYPE = '3')"; + } else if ("2".equals(usertype)) { + //当前登录用户为行政区划管理员,则可以授权这个行政区划下所有管理类用户 + Long areaid=currentUser.getAreaId(); + sql= + "select * from sysuser where (usertype ='1' or USERTYPE = '2' or USERTYPE = '3') and " + + "areaid='"+areaid+"'"; + } else if ("3".equals(usertype)) { + //当前登录用户为机构管理员,则可以授权这个机构下所有管理类用户 + Long orgid=currentUser.getOrgId(); + sql= + "select * from sysuser where (usertype ='1' or USERTYPE = '2' or USERTYPE = '3') and orgid='"+orgid+"'"; + + } else if ("5".equals(usertype)) {//当前登录用户为安全管理员,则权限与超级管理员一致 + sql = "select * from sysuser where (usertype ='1' or USERTYPE = '2' or USERTYPE = '3')"; + } else if ("4".equals(usertype) || "6".equals(usertype)) {//当前登录用户为业务操作员,审计管理员,不可以授权任何用户 + PageInfo pageInfo = new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(null); + return pageInfo; + } + } else if ("2".equals(roletype)) {//业务操作类角色 + if ("1".equals(usertype)) {//当前登录用户为超级管理员,则可以授权所有业务操作员类用户 + sql = "select * from sysuser where usertype ='4'"; + } else if ("2".equals(usertype)) { + //当前登录用户为行政区划管理员,则可以授权这个行政区划下所有业务操作员类用户 + Long areaid=currentUser.getAreaId(); + sql="select * from sysuser where usertype ='4' and areaid='"+areaid+"'"; + } else if ("3".equals(usertype)) { + //当前登录用户为机构管理员,则可以授权这个机构下所有业务操作员类用户 + Long orgid=currentUser.getOrgId(); + sql="select * from sysuser where usertype ='4' and orgid='"+orgid+"'"; + + } else if ("5".equals(usertype)) {//当前登录用户为安全管理员,则权限与超级管理员一致 + sql = "select * from sysuser where usertype ='4'"; + } else if ("4".equals(usertype) || "6".equals(usertype)) {//当前登录用户为业务操作员,不可以授权任何用户 + PageInfo pageInfo = new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(null); + return pageInfo; + } + } else if ("3".equals(roletype)) {//安全管理员角色 + if ("1".equals(usertype)) {//当前登录用户为超级管理员,则可以授权所有业务操作员类用户 + sql = "select * from sysuser where usertype ='5'"; + } else if ("2".equals(usertype)) { + //当前登录用户为行政区划管理员,则可以授权这个行政区划下所有业务操作员类用户 + Long areaid=currentUser.getAreaId(); + sql="select * from sysuser where usertype ='5' and areaid='"+areaid+"'"; + } else if ("3".equals(usertype)) { + //当前登录用户为机构管理员,则可以授权这个机构下所有业务操作员类用户 + Long orgid=currentUser.getOrgId(); + sql="select * from sysuser where usertype ='5' and orgid='"+orgid+"'"; + + } else if ("5".equals(usertype)) {//当前登录用户为安全管理员,则权限与超级管理员一致 + sql = "select * from sysuser where usertype ='5'"; + } else if ("4".equals(usertype) || "6".equals(usertype)) {//当前登录用户为业务操作员,不可以授权任何用户 + PageInfo pageInfo = new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(null); + return pageInfo; + } + }else if ("4".equals(roletype)) {//审计管理员角色 + if ("1".equals(usertype)) {//当前登录用户为超级管理员,则可以授权所有业务操作员类用户 + sql = "select * from sysuser where usertype ='6'"; + } else if ("2".equals(usertype)) { + //当前登录用户为行政区划管理员,则可以授权这个行政区划下所有业务操作员类用户 + Long areaid=currentUser.getAreaId(); + sql="select * from sysuser where usertype ='6' and areaid='"+areaid+"'"; + } else if ("3".equals(usertype)) { + //当前登录用户为机构管理员,则可以授权这个机构下所有业务操作员类用户 + Long orgid=currentUser.getOrgId(); + sql="select * from sysuser where usertype ='6' and orgid='"+orgid+"'"; + + } else if ("5".equals(usertype)) {//当前登录用户为安全管理员,则权限与超级管理员一致 + sql = "select * from sysuser where usertype ='6'"; + } else if ("4".equals(usertype) || "6".equals(usertype)) {//当前登录用户为业务操作员,不可以授权任何用户 + PageInfo pageInfo = new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(null); + return pageInfo; + } + } else { + throw new AppException("用户类型异常!"); + } + + Map param = new HashMap<>(); + if (logonname != null && !"".equals(logonname)) { + sql += " and logonname like :logonname"; + param.put("logonname", "%" + logonname + "%"); + } + if (displayname != null && !"".equals(displayname)) { + sql += " and displayname like :displayname"; + param.put("logonname", "%" + displayname + "%"); + } + + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql, param, rs -> { + UserDTO dto = new UserDTO(); + dto.setLogonName(rs.getString("logonname")); + dto.setUserId(rs.getString("userid")); + dto.setDisplayName(rs.getString("displayname")); + dto.setOrgId(Long.parseLong(rs.getString("orgid"))); + return dto; + }); + return pageInfo; + } + + @Override + public List queryGrantedUser(String roleId) { + List params = new ArrayList<>(); + String sql = null; + SysUser currentUser = currentUserService.getCurrentUser(); + String usertype = currentUser.getUserType(); + Long orgid=currentUser.getOrgId(); + Long areaid=currentUser.getAreaId(); + if ("1".equals(usertype)) {//当前登录用户为超级管理员,则可以查询改角色授权的所有用户 + sql = "select su.* from sysuserrole sur,sysuser su where sur.userid=su.userid and sur.roleid=?"; + } else if ("5".equals(usertype)) {//若是安全操作员,与超管权限一致 + sql = "select su.* from sysuserrole sur,sysuser su where sur.userid=su.userid and sur.roleid=?"; + } else if ("3".equals(usertype)) {//若是机构管理员 + sql = "select su.* from sysuserrole sur,sysuser su where sur.userid=su.userid and su.orgid='" + orgid + + "'" + "and sur.roleid=?"; + } else if ("2".equals(usertype)) {//若是行政区操作员 + sql = "select su.* from sysuserrole sur,sysuser su where sur.userid=su.userid and su.areaid='" + areaid + + "'" + "and sur.roleid=?"; + } else if ("4".equals(usertype)) {//若是业务操作员,则没有权限 + throw new AppException("业务操作人员没权限查看角色列表"); + } else if ("6".equals(usertype)) {//若是审计管理员,则没有权限 + throw new AppException("审计管理人员没权限查看角色列表"); + } else { + throw new AppException("用户类型异常!"); + } + params.add(roleId); + List list = jdbcTemplate.query(sql.toString(), params.toArray(), (rs, i) -> { + UserDTO dto = new UserDTO(); + dto.setUserId(rs.getString("userid")); + dto.setLogonName(rs.getString("logonname")); + dto.setDisplayName(rs.getString("displayname")); + dto.setOrgId(Long.parseLong(rs.getString("orgid"))); + return dto; + }); + return list; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void removeGrantUserRole(String roleid, String userid) { + sysUserRoleRepository.removeGrantUserRole(roleid, userid); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveGrantUser(JSONObject jsonObject) { + String roleid = (String) jsonObject.get("roleId"); + JSONArray jsonArray = jsonObject.getJSONArray("tableDataGranted"); + List params = new ArrayList<>(); + String sql = "select userid from sysuserrole where roleid=?"; + params.add(roleid); + List list = jdbcTemplate.query(sql, params.toArray(), (rs, i) -> { + String userid = rs.getString("userid"); + return userid; + }); + + JSONObject jsonObject1 = null; + String userid = null; + List listUser = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + jsonObject1 = jsonArray.getJSONObject(i); + userid = jsonObject1.getString("userId"); + listUser.add(userid); + if (list.contains(userid)) { + listUser.remove(userid); + } + } + SysUserRole sysUserRole = null; + for (int i = 0; i < listUser.size(); i++) { + sysUserRole = new SysUserRole(); + sysUserRole.setRoleId(roleid); + sysUserRole.setUserId(listUser.get(i)); + sysUserRoleRepository.save(sysUserRole); + } + + // 清空所有用户缓存 + sysCacheService.clearUserCache(null); + + } + + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ScmMyFavoritesServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ScmMyFavoritesServiceImpl.java new file mode 100644 index 0000000..e12fbaf --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/ScmMyFavoritesServiceImpl.java @@ -0,0 +1,131 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.ResponseMessage; +import com.insigma.framework.util.IDUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.ScmMyFavoritesDTO; +import com.insigma.sys.service.ScmMyFavoritesService; +import com.insigma.web.support.entity.MdParam; +import com.insigma.web.support.util.SysFunctionManager; +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 java.util.Date; +import java.util.List; + +/** + * @Author tanyj + * @Version 2022/8/23 10:00 + * @since 2.7.0 + **/ +@Service +public class ScmMyFavoritesServiceImpl implements ScmMyFavoritesService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private CurrentUserService currentUserService; + /** + * 新增我的收藏 + * + * @param scmMyFavoritesDTO scmMyFavoritesDTO + */ + @Override + @Transactional(rollbackFor = Exception.class) + public ResponseMessage addScmMyFavorites(String currentUserId, ScmMyFavoritesDTO scmMyFavoritesDTO) { + if(scmMyFavoritesDTO != null && scmMyFavoritesDTO.getFunctionRoutePath() != null){ + String sql = "select count(1) from SCM_MY_FAVORITES where USERID = ? and FUNCTION_ROUTE_PATH = ?"; + int count = jdbcTemplate.queryForObject(sql, Integer.class, currentUserId, scmMyFavoritesDTO.getFunctionRoutePath()); + if (count > 0) { + return ResponseMessage.error("该功能已收藏"); + }else { + ScmMyFavoritesDTO sfd = this.getMdParamByPath(scmMyFavoritesDTO.getFunctionRoutePath()); + String insertSql = "insert into SCM_MY_FAVORITES(ID,FUNCTIONID,FUNCTION_ROUTE_PATH,USERID,FAVOR_TIME,ORDER_NO,TITLE) values(?,?,?,?,?,?,?)"; + scmMyFavoritesDTO.setId(IDUtil.generateUUID()); + scmMyFavoritesDTO.setFavorTime(new Date()); + scmMyFavoritesDTO.setOrderNo(getMaxOrderNo() + 1); + jdbcTemplate.update(insertSql, scmMyFavoritesDTO.getId(), sfd.getFunctionId(), scmMyFavoritesDTO.getFunctionRoutePath(), currentUserId, scmMyFavoritesDTO.getFavorTime(), scmMyFavoritesDTO.getOrderNo(), scmMyFavoritesDTO.getTitle()); + return ResponseMessage.ok("收藏成功"); + } + } + return ResponseMessage.error("未获取tab详情"); + } + + /** + * 根据用户id查询我的收藏 + * + * @param userid userid + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public List getScmMyFavorites(String userid) { + String sql = "select * from SCM_MY_FAVORITES where USERID = ? order by ORDER_NO"; + List list = jdbcTemplate.query(sql, new Object[]{userid}, (resultSet, i) -> { + ScmMyFavoritesDTO scmMyFavoritesDTO = new ScmMyFavoritesDTO(); + scmMyFavoritesDTO.setId(resultSet.getString("ID")); + scmMyFavoritesDTO.setFunctionId(resultSet.getInt("FUNCTIONID")); + scmMyFavoritesDTO.setFunctionRoutePath(resultSet.getString("FUNCTION_ROUTE_PATH")); + scmMyFavoritesDTO.setUserid(resultSet.getString("USERID")); + scmMyFavoritesDTO.setFavorTime(resultSet.getDate("FAVOR_TIME")); + scmMyFavoritesDTO.setOrderNo(resultSet.getInt("ORDER_NO")); + scmMyFavoritesDTO.setTitle(resultSet.getString("TITLE")); + scmMyFavoritesDTO.setTableDelFlag(false); + ScmMyFavoritesDTO smf = this.getMdParamByPath(scmMyFavoritesDTO.getFunctionRoutePath()); + if(smf != null){ + scmMyFavoritesDTO.setIcon(smf.getIcon()); + } + return scmMyFavoritesDTO; + }); + return list; + } + + /** + * 根据用户id删除我的收藏 + * + * @param scmMyFavoritesDTO scmMyFavoritesDTO + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteScmMyFavorites(String currentUserId, ScmMyFavoritesDTO scmMyFavoritesDTO) { + String sql = "delete from SCM_MY_FAVORITES where USERID = ? and FUNCTION_ROUTE_PATH = ?"; + jdbcTemplate.update(sql, currentUserId, scmMyFavoritesDTO.getFunctionRoutePath()); + } + + + /** + * 根据用户id更新我的收藏 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void orderScmMyFavorites(String userId, ScmMyFavoritesDTO scmMyFavoritesDTO) { + String sql = "update SCM_MY_FAVORITES set ORDER_NO = ? where USERID = ? and FUNCTION_ROUTE_PATH = ?"; + jdbcTemplate.update(sql, scmMyFavoritesDTO.getOrderNo(), userId, scmMyFavoritesDTO.getFunctionRoutePath()); + } + + public int getMaxOrderNo(){ + String sqlCount = "select count(1) from SCM_MY_FAVORITES where USERID = ?"; + int count = jdbcTemplate.queryForObject(sqlCount, new Object[]{currentUserService.getCurrentUser().getUserId()}, Integer.class); + if(count == 0) { + return 0; + }else { + String sql = "select MAX(ORDER_NO) from SCM_MY_FAVORITES where USERID = ?"; + return jdbcTemplate.queryForObject(sql, new Object[]{currentUserService.getCurrentUser().getUserId()}, Integer.class); + } + } + + public ScmMyFavoritesDTO getMdParamByPath(String path){ + String sql = "select * from SYSFUNCTION where LOCATION = ?"; + return jdbcTemplate.queryForObject(sql, new Object[]{path}, (resultSet, i) -> { + ScmMyFavoritesDTO scmMyFavoritesDTO = new ScmMyFavoritesDTO(); + scmMyFavoritesDTO.setFunctionId(resultSet.getInt("FUNCTIONID")); + scmMyFavoritesDTO.setFunctionRoutePath(resultSet.getString("LOCATION")); + scmMyFavoritesDTO.setTitle(resultSet.getString("TITLE")); + scmMyFavoritesDTO.setIcon(resultSet.getString("ICON")); + return scmMyFavoritesDTO; + }); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysAppServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysAppServiceImpl.java new file mode 100644 index 0000000..27a1357 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysAppServiceImpl.java @@ -0,0 +1,243 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.framework.util.StringUtil; +import com.insigma.sys.dto.SysAppAddressDTO; +import com.insigma.sys.dto.SysAppDTO; +import com.insigma.sys.entity.SysApp; +import com.insigma.sys.entity.SysAppAddress; +import com.insigma.sys.repository.SysAppAddressRepository; +import com.insigma.sys.repository.SysAppRepository; +import com.insigma.sys.service.SysAppService; +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.sql.SQLException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author GH + * @version 2022/3/28 + * @since 2.6.5 + */ + +@Service +public class SysAppServiceImpl implements SysAppService { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private SysAppRepository sysAppRepository; + @Autowired + private SysAppAddressRepository sysAppAddressRepository; + + /** + * 根据条件进行分页查询 + * + * @param queryDTO 查询条件 + * @param page 页码 + * @param size 每页条数 + * @return 对象ID + * @throws SQLException SQLException + */ + @Override + public PageInfo pageQuery(SysAppDTO queryDTO, Integer page, Integer size) throws SQLException { + List params = new ArrayList<>(); + StringBuffer sql = new StringBuffer("select * from SYSAPP where 1=1"); + if (!ObjectUtils.isEmpty(queryDTO.getAppName())) { + sql.append(" and APP_NAME like ?"); + params.add("%" + queryDTO.getAppName() + "%"); + } + + if (!ObjectUtils.isEmpty(queryDTO.getAppCode())) { + sql.append(" and APP_CODE like ?"); + params.add("%" + queryDTO.getAppCode() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getActive())) { + sql.append(" and ACTIVE = ?"); + params.add(queryDTO.getActive()); + } + sql.append(" order by ORDER_NO asc"); + + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + List list = pageHelper.queryPagination(sql.toString(), params, SysAppDTO.class).getData(); + for (SysAppDTO sysAppDTO : list) { + String secretKey = sysAppDTO.getSecretKey(); + String substring = secretKey.substring(4, 12); + String replace = secretKey.replace(substring, "********"); + sysAppDTO.setSecretKey(replace); + } + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setData(list); + pageInfo.setTotal((long) list.size()); + return pageInfo; + } + + /*** + * 保存应用信息 + * @param queryDTO 保存的数据对象 + * @param secretKey 安全key + * @return 对象id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public String saveSysAppDTO(SysAppDTO queryDTO, String secretKey) { + String appId = null; + if (StringUtil.isEmpty(queryDTO.getAppId())) { // 新增 + queryDTO.setActive("1"); + queryDTO.setSecretKey(secretKey); + queryDTO.setCreateTime(new Date()); + Long apporder = sysAppRepository.selectMaxOrder(); + if (apporder != null && !"".equals(apporder)) { + queryDTO.setOrderNo(apporder + 1); + } else { + queryDTO.setOrderNo((long) 1); + } + } else { + SysApp sApp = sysAppRepository.getOne(queryDTO.getAppId()); + queryDTO.setAppId(sApp.getAppId()); + queryDTO.setSecretKey(sApp.getSecretKey()); + queryDTO.setCreateTime(sApp.getCreateTime()); + queryDTO.setActive(sApp.getActive()); + queryDTO.setOrderNo(sApp.getOrderNo()); + queryDTO.setUpdateTime(new Date()); + } + SysApp sysApp = DtoEntityUtil.trans(queryDTO, SysApp.class); + SysApp app = sysAppRepository.save(sysApp); + if (app != null) { + appId = app.getAppId(); + } + return appId; + } + + /*** + * 保存应用地址信息 + * @param list 应用地址信息的对象集合 + * @param appid 应用系统id + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void saveSysAppAddressDTO(List list, String appid) { + for (SysAppAddressDTO sysAppAddressDTO : list) { + if (StringUtil.isNotEmpty(sysAppAddressDTO.getAddressId())) {//修改 + sysAppAddressDTO.setAddressId(sysAppAddressDTO.getAddressId()); + } + sysAppAddressDTO.setAppId(appid); + SysAppAddress sysAppAddress = DtoEntityUtil.trans(sysAppAddressDTO, SysAppAddress.class); + sysAppAddressRepository.save(sysAppAddress); + } + } + + /*** + * 根据应用ID查询对应的信息 + * @param appid 应用系统id + * @return 应用系统对象 + */ + @Override + public SysAppDTO querySysApp(String appid) { + SysApp sysApp = sysAppRepository.getOne(appid); + SysAppDTO appDTO = DtoEntityUtil.trans(sysApp, SysAppDTO.class); + return appDTO; + } + + /*** + * 根据应用ID查询所有应用地址信息 + * @param appid 应用系统id + * @return 所有应用地址对象集合 + */ + @Override + public List querySysAddressDTO(String appid) { + List sysAppAddresses = sysAppAddressRepository.querySysAddressDTO(appid); + List dtos = DtoEntityUtil.trans(sysAppAddresses, SysAppAddressDTO.class); + return dtos; + } + + /*** + * 根据应用ID删除 + * @param appid 应用系统id + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSysApp(String appid) { + sysAppRepository.deleteById(appid); + } + + /*** + * 根据应用id删除所有对应的应用地址数据 + * @param appid 应用系统id + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSysAppAddressByAppId(String appid) { + sysAppAddressRepository.deleteSysAppAddressByAppId(appid); + } + + /*** + * 根据应用地址ID删除应用 + * @param addressId 应用地址id + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSysAppAddress(String addressId) { + sysAppAddressRepository.deleteById(addressId); + } + + /*** + * 将应用设置为有效 + * @param appid 应用系统id + * @return + */ + @Override + public void toActiveSysApp(String appid) { + jdbcTemplate.update("update SYSAPP set ACTIVE = '1' where APP_ID=?", ps -> { + ps.setString(1, appid); + }); + } + + /*** + * 将应用设置为无效 + * @param appid 应用系统id + * @return + */ + @Override + public void toNotActiveSysApp(String appid) { + jdbcTemplate.update("update SYSAPP set ACTIVE = '0' where APP_ID=?", ps -> { + ps.setString(1, appid); + }); + } + + /*** + * 查询所有的应用名称 + * @return 应用系统集合 + */ + @Override + public List querySysAppDTO() { + List sysApps = sysAppRepository.findAll(); + List dtos = DtoEntityUtil.trans(sysApps, SysAppDTO.class); + return dtos; + } + + /*** + * 验证编码是否重复 + * @return 布尔 + */ + @Override + public boolean selectAppCode(String appCode) { + boolean flag = false; + SysApp sysApp = sysAppRepository.selectAppCode(appCode); + if (sysApp != null) { + flag = true; + } + return flag; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysCodeServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysCodeServiceImpl.java new file mode 100644 index 0000000..fa4b990 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysCodeServiceImpl.java @@ -0,0 +1,112 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.exception.AppException; +import com.insigma.sys.dto.CodeDTO; +import com.insigma.sys.entity.Aa10; +import com.insigma.sys.repository.SysCodeRepository; +import com.insigma.sys.service.SysCodeService; +import com.insigma.web.support.repository.CodeTypeRepository; +import com.insigma.web.support.entity.CodeType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.Predicate; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by yinjh on 2019/1/9. + */ +@Service +public class SysCodeServiceImpl implements SysCodeService { + + @Autowired + private SysCodeRepository sysCodeRepository; + + @Autowired + private CodeTypeRepository codeTypeRepository; + + @Override + public CodeDTO query(String aaa100, String aaa103, Integer page, Integer size) { + + CodeDTO codeDTO = new CodeDTO(); + + Specification queryParams = (Specification) (root, criteriaQuery, criteriaBuilder) -> { + List predicates = new ArrayList<>(); + if(null != aaa100 && !"".equals(aaa100)) { + predicates.add(criteriaBuilder.like(root.get("aaa100"), "%" + aaa100 + "%")); + } + if(null != aaa103 && !"".equals(aaa103)) { + predicates.add(criteriaBuilder.like(root.get("aaa103"), "%" + aaa103 + "%")); + } + Predicate[] p = new Predicate[predicates.size()]; + criteriaQuery.where(criteriaBuilder.and(predicates.toArray(p))); + criteriaQuery.orderBy(criteriaBuilder.asc(root.get("aaa100")), criteriaBuilder.asc(root.get("aaa102"))); + return criteriaQuery.getRestriction(); + }; + // 分页 + Pageable pageable = PageRequest.of(page, size); + Page codePage = sysCodeRepository.findAll(queryParams, pageable); + System.out.println(codePage); + codeDTO.setData(codePage.getContent()); + codeDTO.setTotal(codePage.getTotalElements()); + + return codeDTO; + } + + @Override + public JSONObject getCodeTypes(JSONObject jsonObject) { + // 获取CodeTypes start + List list = new ArrayList<>(); + // 将Set中的数据拷贝到List中 + list.addAll(jsonObject.keySet()); + List codeTypeList = codeTypeRepository.findByCodetypeInOrderByCodetypeAscKeyAsc(list); + //System.out.println(codeTypeList); + JSONObject codeTypes = new JSONObject(); + codeTypeList.stream() + .filter(ct -> jsonObject.getJSONArray(ct.getCodetype()).size() == 0) + .forEach(ct -> { + JSONObject ctObj = new JSONObject(); + ctObj.put("key", ct.getKey()); + ctObj.put("value", ct.getValue()); + if(codeTypes.getJSONArray(ct.getCodetype()) == null) { + JSONArray jsonArray = new JSONArray(); + codeTypes.put(ct.getCodetype(), jsonArray); + } + codeTypes.getJSONArray(ct.getCodetype()).add(ctObj); + }); + return jsonObject.fluentPutAll(codeTypes); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void saveCode(Aa10 aa10) { + if (aa10.getAaz093() != null) { + Aa10 aa10Temp = sysCodeRepository.findByAaa100AndAaa102(aa10.getAaa100(), aa10.getAaa102()); + if (!aa10Temp.getAaz093().equals(aa10.getAaz093())) { + throw new AppException("代码值重复!"); + } + } + sysCodeRepository.save(aa10); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void deleteCode(Long aaz093) throws AppException { + if(aaz093 == null) { + throw new AppException("数据异常!"); + } + Aa10 aa10 = sysCodeRepository.getOne(aaz093); + if(aa10 == null) { + throw new AppException("当前数据已删除或不存在!"); + } + sysCodeRepository.delete(aa10); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysDownloadCenterServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysDownloadCenterServiceImpl.java new file mode 100644 index 0000000..b789f44 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysDownloadCenterServiceImpl.java @@ -0,0 +1,105 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.sys.dto.SysDownloadCenterDTO; +import com.insigma.sys.entity.SysDownloadCenter; +import com.insigma.sys.entity.SysDownloadLog; +import com.insigma.sys.repository.SysDownloadCenterRepository; +import com.insigma.sys.repository.SysDownloadLogRepository; +import com.insigma.sys.service.SysDownloadCenterService; +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.sql.SQLException; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * @author GH + * @ClassName: SysDownloadCenterServiceImpl + * @Description: + * @version 2021/8/4 10:16 + */ +@Service("SysDownloadCenterService") +public class SysDownloadCenterServiceImpl implements SysDownloadCenterService { + + @Autowired + private SysDownloadCenterRepository sysDownloadCenterRepository; + + @Autowired + private SysDownloadLogRepository sysDownloadLogRepository; + + @Autowired + private JdbcTemplate jdbcTemplate; + + //查询 + @Override + public PageInfo queryDownloadCenterList(SysDownloadCenterDTO queryDTO, Integer page, Integer size) throws SQLException { + //用于保存查询条件 + Map params = new HashMap<>(); + //创建SQL语句 + StringBuffer sql = new StringBuffer("SELECT sdc.ID, " + + " sdc.MATERIAL_TYPE, " + + " sdc.MATERIAL_SIZE," + + " sdc.MATERIAL_NAME, " + + " sdc.UPLOAD_TIME " + + "from SYSDOWNLOADCENTER sdc " + + "where 1=1 "); + + if (!ObjectUtils.isEmpty(queryDTO.getMaterial_type())) { + //拼接在上面的SQL上 + sql.append(" and sdc.MATERIAL_TYPE = :material_type"); + params.put("material_type", queryDTO.getMaterial_type()); + } + + if (!ObjectUtils.isEmpty(queryDTO.getMaterial_name())) { + sql.append(" and sdc.MATERIAL_NAME like :material_name"); + params.put("material_name", "%" + queryDTO.getMaterial_name() + "%"); + } + sql.append(" ORDER BY sdc.UPLOAD_TIME DESC"); + + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + SysDownloadCenterDTO dto = new SysDownloadCenterDTO(); + //赋值 + dto.setMaterial_type(rs.getString("material_type")); + dto.setMaterial_size(rs.getString("material_size")); + dto.setMaterial_name(rs.getString("material_name")); + dto.setUpload_time(rs.getTimestamp("upload_time")); + dto.setId(rs.getString("id")); + return dto; + }); + return pageInfo; + } + + //新增 + @Override + @Transactional(rollbackFor = Exception.class) + public void saveDownloadCenter(SysDownloadCenterDTO sysDownloadCenterDTO) { + SysDownloadCenter sysDownloadCenter = DtoEntityUtil.trans(sysDownloadCenterDTO, SysDownloadCenter.class); + sysDownloadCenterRepository.save(sysDownloadCenter); + } + + //删除 + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String id) { + sysDownloadCenterRepository.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveDownloadLog(String id, String logonName) { + SysDownloadLog log = new SysDownloadLog(); + log.setFileId(id); + log.setDownloader(logonName); + log.setDownloadTime(new Date()); + sysDownloadLogRepository.saveAndFlush(log); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysErrorServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysErrorServiceImpl.java new file mode 100644 index 0000000..a53a541 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysErrorServiceImpl.java @@ -0,0 +1,151 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.constants.SysConst; +import com.insigma.framework.util.SysUtils; +import com.insigma.sys.entity.SysError; +import com.insigma.sys.repository.SysErrorRepository; +import com.insigma.sys.service.SysErrorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.persistence.criteria.Predicate; +import java.util.*; + +@Service +public class SysErrorServiceImpl implements SysErrorService { + @Autowired(required = false) + private StringRedisTemplate stringRedisTemplate; + + @Autowired + private SysErrorRepository sysErrorRepository; + @Override + public List queryAllErrors() { + return sysErrorRepository.findAll(); + } + + @Override + public List findAllBySome(String serviceName, String functionName, String errorCode) { + Specification queryParams = (Specification) (root, criteriaQuery, criteriaBuilder) -> { + try { + List predicates = new ArrayList<>(); + if (null != serviceName && !"".equals(serviceName)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("serviceName"), "%" +serviceName+ "%")); + } + if (null != functionName && !"".equals(functionName)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("functionName"), "%" + functionName + "%")); + } + if (null != errorCode && !"".equals(errorCode)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("errorCode"),"%"+errorCode+ "%")); + } + Predicate[] p = new Predicate[predicates.size()]; + criteriaQuery.where(criteriaBuilder.and(predicates.toArray(p))); + } catch (Exception e) { + throw new RuntimeException(e); + } + return criteriaQuery.getRestriction(); + }; + //Pageable pageable = PageRequest.of(page, size); + List sysErrors = sysErrorRepository.findAll(queryParams); + return sysErrors; + } + + @Override + @Transactional(rollbackFor=Exception.class) + public void save(SysError sysError) { + if (stringRedisTemplate == null) { + stringRedisTemplate = SysUtils.getBean(StringRedisTemplate.class); + } + // xxxx add + sysErrorRepository.save(sysError); + stringRedisTemplate.opsForValue().set(SysConst.ERR_CACHE_KEY + sysError.getErrorCode(), sysError.getMessage()); + + } + + @Override + @Transactional(rollbackFor=Exception.class) + public void deleteError(SysError sysError) { + if (stringRedisTemplate == null) { + stringRedisTemplate = SysUtils.getBean(StringRedisTemplate.class); + } + sysErrorRepository.delete(sysError); + stringRedisTemplate.delete(SysConst.ERR_CACHE_KEY + sysError.getErrorCode()); + } + + @Override + public SysError getSysErrorBean(Map> map) { + SysError sysError=new SysError(); + if (!map.get("id").get("value").equals("")){ + sysError.setId(map.get("id").get("value")); + } + if (!map.get("serviceName").get("value").equals("")){ + sysError.setServiceName(map.get("serviceName").get("value")); + } + if (!map.get("functionName").get("value").equals("")){ + sysError.setFunctionName(map.get("functionName").get("value")); + } + if (!map.get("errorCode").get("value").equals("")){ + sysError.setErrorCode(map.get("errorCode").get("value")); + } + if (!map.get("message").get("value").equals("")){ + sysError.setMessage(map.get("message").get("value")); + } + Date date = new Date(); + sysError.setCreateTime(date); + return sysError; + } + + @Override + public SysError getSysErrorBean2(Map map) { + SysError sysError=new SysError(); + if (!map.get("id").equals("")){ + sysError.setId(map.get("id")); + } + if (!map.get("serviceName").equals("")){ + sysError.setServiceName(map.get("serviceName")); + } + if (!map.get("functionName").equals("")){ + sysError.setFunctionName(map.get("functionName")); + } + if (!map.get("errorCode").equals("")){ + sysError.setErrorCode(map.get("errorCode")); + } + if (!map.get("message").equals("")){ + sysError.setMessage(map.get("message")); + } + Date date = new Date(); + sysError.setCreateTime(date); + return sysError; + } + + @Override + public SysError getSysErrorBean1(Map> map) { + SysError sysError=new SysError(); + if (!map.get("serviceName1").get("value").equals("")){ + sysError.setServiceName(map.get("serviceName1").get("value")); + } + if (!map.get("functionName1").get("value").equals("")){ + sysError.setFunctionName(map.get("functionName1").get("value")); + } + if (!map.get("errorCode1").get("value").equals("")){ + sysError.setErrorCode(map.get("errorCode1").get("value")); + } + if (!map.get("message1").get("value").equals("")){ + sysError.setMessage(map.get("message1").get("value")); + } + Date date = new Date(); + sysError.setCreateTime(date); + return sysError; + } + + @Override + public boolean queryByErrCode(String code) { + SysError sysError=sysErrorRepository.findByErrCode(code); + if (sysError!=null){ + return true; + } + return false; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFeedbackServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFeedbackServiceImpl.java new file mode 100644 index 0000000..14125ee --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFeedbackServiceImpl.java @@ -0,0 +1,138 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.FeedbackAnswerDTO; +import com.insigma.sys.dto.FeedbackDTO; +import com.insigma.sys.entity.SysFeedback; +import com.insigma.sys.entity.SysFeedbackAnswer; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.repository.SysFeedbackAnswerRepository; +import com.insigma.sys.repository.SysFeedbackRepository; +import com.insigma.sys.repository.SysUserRepository; +import com.insigma.sys.service.SysFeedbackService; +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.sql.SQLException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author yinjh + * @version 2022/2/23 + */ +@Service +public class SysFeedbackServiceImpl implements SysFeedbackService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private SysFeedbackRepository sysFeedbackRepository; + + @Autowired + private SysFeedbackAnswerRepository sysFeedbackAnswerRepository; + + @Autowired + private SysUserRepository sysUserRepository; + + @Autowired + private CurrentUserService currentUserService; + + @Override + public PageInfo page(FeedbackDTO queryDTO, Integer page, Integer size) throws SQLException { + SysUser sysUser = currentUserService.getCurrentUser(); + Map params = new HashMap<>(); + StringBuffer sql = new StringBuffer(); + sql.append("select sf.*, su.displayname from sysfeedback sf, sysuser su where sf.userid=su.userid"); + if (!ObjectUtils.isEmpty(queryDTO.getTitle())) { + sql.append(" and sf.title like :title"); + params.put("title", "%" + queryDTO.getTitle() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getAnswered())) { + sql.append(" and sf.answered = :answered"); + params.put("answered", queryDTO.getAnswered()); + } + if (queryDTO.getDateRange() != null && queryDTO.getDateRange().size() == 2) { + sql.append(" and sf.create_time > :startDate and sf.create_time < :endDate"); + params.put("startDate", queryDTO.getDateRange().get(0)); + params.put("endDate", queryDTO.getDateRange().get(1)); + } + if (!"1".equals(sysUser.getUserType())) { + // 不是超级管理员,则只能看到自己提的建议 + sql.append(" and su.userid = :userId"); + params.put("userId", sysUser.getUserId()); + } + sql.append(" order by sf.create_time desc"); + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + FeedbackDTO feedbackDTO = new FeedbackDTO(); + feedbackDTO.setId(rs.getString("id")); + feedbackDTO.setTitle(rs.getString("title")); + feedbackDTO.setAnswered(rs.getString("answered")); + feedbackDTO.setCreateTime(rs.getTimestamp("create_time")); + feedbackDTO.setDisplayName(rs.getString("displayname")); + return feedbackDTO; + }); + return pageInfo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(FeedbackDTO feedbackDTO) { + SysUser sysUser = currentUserService.getCurrentUser(); + if ("1".equals(sysUser.getUserType())) { + throw new AppException("超级管理员不可新增意见反馈!"); + } + SysFeedback feedback = new SysFeedback(); + feedback.setTitle(feedbackDTO.getTitle()); + feedback.setContent(feedbackDTO.getContent()); + feedback.setUserId(sysUser.getUserId()); + feedback.setCreateTime(new Date()); + feedback.setAnswered("0"); + sysFeedbackRepository.saveAndFlush(feedback); + } + + @Override + public FeedbackDTO get(String id) { + FeedbackDTO feedbackDTO = new FeedbackDTO(); + SysFeedback sysFeedback = sysFeedbackRepository.findById(id).orElseThrow(() -> new AppException("意见不存在!")); + feedbackDTO.setId(sysFeedback.getId()); + feedbackDTO.setTitle(sysFeedback.getTitle()); + feedbackDTO.setContent(sysFeedback.getContent()); + feedbackDTO.setCreateTime(sysFeedback.getCreateTime()); + feedbackDTO.setUserId(sysFeedback.getUserId()); + SysUser sysUser = sysUserRepository.findById(sysFeedback.getUserId()).orElseThrow(() -> new AppException("用户不存在")); + feedbackDTO.setDisplayName(sysUser.getDisplayName()); + List answerList = sysFeedbackAnswerRepository.findAllByFeedbackIdOrderByCreateTimeAsc(id); + feedbackDTO.setAnswerList(DtoEntityUtil.trans(answerList, FeedbackAnswerDTO.class)); + return feedbackDTO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveAnswer(FeedbackAnswerDTO feedbackAnswerDTO) { + SysUser sysUser = currentUserService.getCurrentUser(); + String type = "1".equals(sysUser.getUserType()) ? "1" : "0"; + SysFeedback sysFeedback = sysFeedbackRepository.findById(feedbackAnswerDTO.getFeedbackId()).orElseThrow(() -> new AppException("意见不存在!")); + sysFeedback.setAnswered(type); + sysFeedbackRepository.saveAndFlush(sysFeedback); + + SysFeedbackAnswer sysFeedbackAnswer = new SysFeedbackAnswer(); + sysFeedbackAnswer.setContent(feedbackAnswerDTO.getContent()); + sysFeedbackAnswer.setCreateTime(new Date()); + sysFeedbackAnswer.setFeedbackId(feedbackAnswerDTO.getFeedbackId()); + sysFeedbackAnswer.setUserId(sysUser.getUserId()); + sysFeedbackAnswer.setType(type); + sysFeedbackAnswerRepository.saveAndFlush(sysFeedbackAnswer); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFunctionDocServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFunctionDocServiceImpl.java new file mode 100644 index 0000000..a010dbc --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysFunctionDocServiceImpl.java @@ -0,0 +1,69 @@ +package com.insigma.sys.service.impl; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.dto.SysFunctionDocDTO; +import com.insigma.sys.entity.SysFunctionDoc; +import com.insigma.sys.repository.SysFunctionDocRepository; +import com.insigma.sys.service.SysFunctionDocService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.util.Date; +import java.util.List; + +@Service +public class SysFunctionDocServiceImpl implements SysFunctionDocService { + + @Autowired + private SysFunctionDocRepository sysFunctionDocRepository; + @Autowired + private CurrentUserService currentUserService; + + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveDoc(SysFunctionDocDTO sysFunctionDocDTO) { + String overviewStr = sysFunctionDocDTO.getOverview(); + String detailed_viewStr = sysFunctionDocDTO.getDetailed_view(); + Long functionid = sysFunctionDocDTO.getFunctionid(); + //检测传入数据是否为空 + if(ObjectUtils.isEmpty(overviewStr)||ObjectUtils.isEmpty(detailed_viewStr)||functionid==null ) + throw new AppException("传入数据异常!"); + try { + SysFunctionDoc sysFunctionDoc = DtoEntityUtil.trans(sysFunctionDocDTO, SysFunctionDoc.class); + //设置添加/修改时间 + sysFunctionDoc.setUpdate_time(new Date()); + //设置修改人名称 + String logonName = currentUserService.getCurrentUser().getLogonName(); + sysFunctionDoc.setUpdate_name(logonName); + sysFunctionDocRepository.save(sysFunctionDoc); + }catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public SysFunctionDocDTO queryByFunctionID(Long functionid) { + List sysFunctionDocList=sysFunctionDocRepository.findByFunctionid(functionid); + if (sysFunctionDocList.size() > 0) { + SysFunctionDoc sysFunctionDoc = sysFunctionDocList.get(0); + return DtoEntityUtil.trans(sysFunctionDoc, SysFunctionDocDTO.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByFunctionid(Long functionid) { + try { + sysFunctionDocRepository.deleteByFunctionid(functionid); + }catch (Exception e) { + e.printStackTrace(); + } + } + +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysGuideServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysGuideServiceImpl.java new file mode 100644 index 0000000..c3caa3b --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysGuideServiceImpl.java @@ -0,0 +1,340 @@ +package com.insigma.sys.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.insigma.business.demo.entity.DemoPerson; +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.framework.web.securities.service.SysCacheService; +import com.insigma.sys.dto.SysGuideDTO; +import com.insigma.sys.entity.Aa10; +import com.insigma.sys.entity.SysGuide; +import com.insigma.sys.entity.SysGuideHot; +import com.insigma.sys.entity.SysGuideType; +import com.insigma.sys.repository.SysCodeRepository; +import com.insigma.sys.repository.SysGuideHotRepository; +import com.insigma.sys.repository.SysGuideRepository; +import com.insigma.sys.repository.SysGuideTypeRepository; +import com.insigma.sys.service.SysGuideService; +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.sql.SQLException; +import java.util.*; +import java.util.stream.Collectors; + +@Service("SysGuideService") +public class SysGuideServiceImpl implements SysGuideService { + + @Autowired + private SysGuideRepository sysGuideRepository; + + @Autowired + private SysGuideHotRepository sysGuideHotRepository; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Autowired + private SysCacheService sysCacheService; + + @Autowired + private SysCodeRepository sysCodeRepository; + + @Autowired + private SysGuideTypeRepository sysGuideTypeRepository; + + + /** + * 分页查询 + * + * @param queryDTO + * @param page + * @param size + * @return + */ + @Override + public PageInfo queryGuideList(SysGuideDTO queryDTO, Integer page, Integer size) throws SQLException { + //用于保存查询条件 + Map params = new HashMap<>(); + + //创建SQL语句 + StringBuffer sql = new StringBuffer("select sg.QUESTION_TYPE, " + + " sg.QUESTION_NAME, " + + " sg.ID," + + " sg.CREATE_TIME, " + + " sgh.HOT_COUNT " + + "from SYSGUIDE sg, " + + " SYSGUIDEHOT sgh " + + "where sg.ID=sgh.ID "); + + if (!ObjectUtils.isEmpty(queryDTO.getQuestion_type())) { + //拼接在上面的SQL上 + sql.append(" and sg.QUESTION_TYPE = :question_type"); + params.put("question_type", queryDTO.getQuestion_type()); + } + + if (!ObjectUtils.isEmpty(queryDTO.getQuestion_name())) { + sql.append(" and sg.QUESTION_NAME like :question_name"); + params.put("question_name", "%" + queryDTO.getQuestion_name() + "%"); + } + + sql.append(" ORDER BY sg.CREATE_TIME DESC"); + + //热度排序 可以设置当某个字段为不同的状态的时候就按不同的方法去排序 +// s.append(" ORDER BY sgh.HOT_COUNT DESC"); + + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + SysGuideDTO dto = new SysGuideDTO(); + //赋值 + dto.setHot_count(Long.parseLong(rs.getString("hot_count"))); + dto.setQuestion_type(rs.getString("question_type")); + dto.setQuestion_name(rs.getString("question_name")); + dto.setCreate_time(rs.getTimestamp("create_time")); + dto.setId(rs.getString("id")); + return dto; + }); + return pageInfo; + } + + + /** + * 查询 + * + * @param id + * @return + */ + @Override + public SysGuideDTO queryGuide(String id) { + //根据id查询数据 要不然为空 + SysGuide guide = sysGuideRepository.findById(id).orElse(null); + SysGuideDTO dto = DtoEntityUtil.trans(guide, SysGuideDTO.class); + return dto; + } + + /** + * 批量删除 + * + * @param list + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteGuides(List list) { + List guideList = DtoEntityUtil.trans(list, SysGuide.class); + List ids = new ArrayList<>(); + for (SysGuide sysGuide : guideList) { + SysGuideHot sysGuideHot = new SysGuideHot(); + sysGuideHot.setId(sysGuide.getId()); + ids.add(sysGuideHot); + } + //删除sysguide表数据 + sysGuideRepository.deleteInBatch(guideList); + + //删除与其对应的sysguidehot表数据 + sysGuideHotRepository.deleteAll(ids); + } + + + /** + * 保存 + * + * @param sysGuideDTO + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void saveGuide(SysGuideDTO sysGuideDTO) { + + String answer_content = sysGuideDTO.getAnswer_content(); + + if (!ObjectUtils.isEmpty(answer_content)) { + String all = answer_content.replaceAll("\n", "
"); + sysGuideDTO.setAnswer_content(all); + }; + + String answer_type = sysGuideDTO.getAnswer_type(); + + if (answer_type.equals("0")) {//文本 + sysGuideDTO.setLink_url(""); + } + if (answer_type.equals("1")) {//链接 + sysGuideDTO.setAnswer_content(""); + } + SysGuide sysGuide = DtoEntityUtil.trans(sysGuideDTO, SysGuide.class); + + //设置添加/修改时间 + sysGuide.setCreate_time(new Date()); + + //save方法回去判断是否含有id 有进行修改 反之进行添加 + SysGuide guide = sysGuideRepository.save(sysGuide); + SysGuideHot guideHot = sysGuideHotRepository.findById(guide.getId()).orElse(null); + SysGuideHot sysGuideHot = new SysGuideHot(); + if (guideHot == null) {//没数据表示 新增 + sysGuideHot.setHot_count(0); + } else {//有数据表示 编辑 + long hot_count = guideHot.getHot_count(); + sysGuideHot.setHot_count(hot_count); + } + sysGuideHot.setId(guide.getId()); + sysGuideHotRepository.save(sysGuideHot); + // 清除菜单缓存 +// sysCacheService.clearFunctionCache(sysGuideDTO.getAnswer_content()); +// sysCacheService.clearFunctionCache(sysGuideDTO.getLink_url()); + + } + + + /** + * 删除 + * + * @param id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String id) { + sysGuideRepository.deleteById(id); + sysGuideHotRepository.deleteById(id); + } + + /** + * 热度 + * + * @param id + */ + @Override + @Transactional(rollbackFor = Exception.class) + public void hot(String id) { + SysGuideHot sysGuideHot = sysGuideHotRepository.findById(id).orElse(null); + sysGuideHot.setHot_count(sysGuideHot.getHot_count() + 1L); + sysGuideHotRepository.save(sysGuideHot); + } + + /** + * @return + * @Description: 根据不同选择来查询数据 + * @author GH + * @version 2021/7/23 15:05 + */ + @SneakyThrows + @Override + public PageInfo findByQuestion_type(String question_type, String sort, String str, Integer page, Integer size) { + + //用于保存查询条件 + Map params = new HashMap<>(); + + //创建SQL语句 + StringBuffer sql = new StringBuffer("select sg.QUESTION_TYPE, " + + " sg.QUESTION_NAME, " + + " sg.ID," + + " sgh.HOT_COUNT " + + "from SYSGUIDE sg, " + + " SYSGUIDEHOT sgh " + + "where sg.ID=sgh.ID "); + + if (!ObjectUtils.isEmpty(question_type)) { + //拼接在上面的SQL上 + sql.append(" and sg.QUESTION_TYPE = :question_type"); + params.put("question_type", question_type); + } + + //其他选项(关键字) + if (!ObjectUtils.isEmpty(str)) { + //拼接在上面的SQL上 + sql.append(" and sg.QUESTION_NAME like :question_name"); + params.put("question_name", "%" + str + "%"); + } + + //排序 + if (!ObjectUtils.isEmpty(sort)) { + if (sort.equals("热度")) { + sql.append(" ORDER BY sgh.HOT_COUNT DESC"); + } else if (sort.equals("时间")) { + sql.append(" ORDER BY sg.CREATE_TIME DESC"); + } + } else { + sql.append(" ORDER BY sg.CREATE_TIME DESC"); + } + + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + SysGuideDTO dto = new SysGuideDTO(); + //赋值 + dto.setHot_count(Long.parseLong(rs.getString("hot_count"))); + + Aa10 aa10 = sysCodeRepository.findByAaa100AndAaa102("GUIDE_QUESTION_TYPE", rs.getString("question_type")); + dto.setQuestion_type(aa10.getAaa103()); + dto.setQuestion_name(rs.getString("question_name")); + dto.setId(rs.getString("id")); + return dto; + }); + return pageInfo; + } + + /** + * @return + * @Description: 查询首页引导信息 + * @author GH + * @version 2021/7/30 13:10 + */ + @Override + public List> findFrontPage() { + //查询所有问题类型 +// List question_type = sysGuideRepository.findQuestion_type(); + + List sysGuideTypes = sysGuideTypeRepository.findType_name(); + List question_type = sysGuideTypes.stream().map(o -> o.getType_code()).collect(Collectors.toList()); + + List> arrayList = new ArrayList<>(); + + for (String s : question_type) {//0 {} 1{} 2{} +// Aa10 type = sysCodeRepository.findByAaa100AndAaa102("GUIDE_QUESTION_TYPE", s); + SysGuideType sysGuideType = sysGuideTypeRepository.findById(s).orElse(null); + //键是类型 值是问题名称 + HashMap map = new HashMap<>(); + //所有的问题名称 + List list = new ArrayList<>(); + //每个类型的所有内容 + List sysGuides = sysGuideRepository.findByQuestion_type(s); + for (SysGuide sysGuide : sysGuides) { + SysGuideDTO sysGuideDTO = new SysGuideDTO(); + String name = sysGuide.getQuestion_name(); + String id = sysGuide.getId(); + sysGuideDTO.setId(id); + sysGuideDTO.setQuestion_name(name); + list.add(sysGuideDTO); + } +// map.put("img", sysGuideType.getType_icon()); + map.put("img", ""); + map.put("type", sysGuideType.getType_name()); + map.put("question_type", s); + map.put("question_name", list); + arrayList.add(map); + } + + return arrayList; + } + + /** + * @return + * @Description: 查询详细页面信息 + * @author GH + * @version 2021/7/30 13:10 + */ + @Override + public SysGuideDTO findDetailsPage(String id) { + //根据id查询数据 要不然为空 + SysGuide guide = sysGuideRepository.findById(id).orElse(null); + SysGuideHot sysGuideHot = sysGuideHotRepository.findById(id).orElse(null); + String question_type = guide.getQuestion_type(); + Aa10 type = sysCodeRepository.findByAaa100AndAaa102("GUIDE_QUESTION_TYPE", question_type); + SysGuideDTO dto = DtoEntityUtil.trans(guide, SysGuideDTO.class); + dto.setQuestion_type(type.getAaa103()); + dto.setHot_count(sysGuideHot.getHot_count()); + return dto; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysHashServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysHashServiceImpl.java new file mode 100644 index 0000000..7786245 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysHashServiceImpl.java @@ -0,0 +1,129 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.util.IDUtil; +import com.insigma.framework.util.SignUtil; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysHashService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ReflectionUtils; + +import javax.persistence.EntityManager; +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Hash校验服务类 + * + * @author yinjh + * @version 2021/8/19 + */ +@Service +public class SysHashServiceImpl implements SysHashService { + + @Value("${sys.hash.enabled:false}") + private boolean hashEnabled; + + @Autowired + private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + @Autowired + private EntityManager entityManager; + + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveHash(Object entity) { + if (!hashEnabled) { + return; + } +// Object serializableId = entityManager.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(entity); + Map params = initParams(entity); + String updateSql = "update syshash set record_hash=:recordHash where record_id=:recordId and record_type=:recordType"; + String insertSql = "insert into syshash(id, record_id, record_hash, record_type) values(:id, :recordId, :recordHash, :recordType)"; + int result = namedParameterJdbcTemplate.update(updateSql, params); + if (result == 0) { + params.put("id", IDUtil.generateUUID()); + namedParameterJdbcTemplate.update(insertSql, params); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveAllHash(List entities) { + for (Object entity : entities) { + saveHash(entity); + } + } + + @Override + public boolean checkHash(Object entity) { + if (!hashEnabled) { + return true; + } + Map params = initParams(entity); + String selectSql = "select record_hash from syshash where record_id=:recordId and record_type=:recordType"; + List list = namedParameterJdbcTemplate.query(selectSql, params, (rs, i) -> rs.getString("record_hash")); + if (list.size() > 0) { + if (list.get(0).equals(params.get("recordHash"))) { + return true; + } + } + return false; + } + + private Map initParams(Object entity) { + Object serializableId = entityManager.getEntityManagerFactory().getPersistenceUnitUtil().getIdentifier(entity); + entity = entityManager.find(entity.getClass(), serializableId); + Map map = JSONObject.parseObject(JSONObject.toJSONString(entity), Map.class); + excludeSpecialKey(entity, map); + formatSpecialKey(entity, map); + Map params = new HashMap<>(); + params.put("recordHash", SignUtil.getSignCode(map)); + params.put("recordId", String.valueOf(serializableId)); + params.put("recordType", entity.getClass().getSimpleName()); + return params; + } + + /** + * 排除特殊key + * @param entity + * @param map + */ + private void excludeSpecialKey(Object entity, Map map) { + if (SysUser.class == entity.getClass()) { + map.remove("failNO"); + } + } + + /** + * 格式化特殊类型的key + * @param entity + * @param map + */ + private void formatSpecialKey(Object entity, Map map) { + try { + Field[] fields = entity.getClass().getDeclaredFields(); + for (Field field : fields) { + ReflectionUtils.makeAccessible(field); + if (field.getType().isAssignableFrom(Date.class)) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + if (map.containsKey(field.getName())) { + map.put(field.getName(), sdf.format(field.get(entity))); + } + } + } + } catch (Exception e) { + throw new RuntimeException("格式化特殊key失败!", e); + } + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysIdMappingImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysIdMappingImpl.java new file mode 100644 index 0000000..ca7727f --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysIdMappingImpl.java @@ -0,0 +1,36 @@ +package com.insigma.sys.service.impl; + +import com.insigma.sys.entity.SysIdMapping; +import com.insigma.sys.repository.SysIdMappingRespository; +import com.insigma.sys.service.SysIdMappingService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +public class SysIdMappingImpl implements SysIdMappingService { + @Autowired + private SysIdMappingRespository sysIdMappingRespository; + @Autowired + private JdbcTemplate jdbcTemplate; + + @Override + @Transactional(rollbackFor=Exception.class) + public void saveGroupidToOrgid(SysIdMapping sysIdMapping) { + if(sysIdMapping.getSELFID() == null || sysIdMapping.getSELFID().intValue() == 0){ + Long selfid = jdbcTemplate.queryForObject("select SYS_IDMAPPING.nextval from dual",Long.class); + sysIdMapping.setSELFID(selfid.intValue()); + } + sysIdMappingRespository.save(sysIdMapping); + } + @Override + public SysIdMapping queryByTid(String tid) { + return sysIdMappingRespository.findByTID(tid); + } + + @Override + public void deleteAll() { + sysIdMappingRespository.deleteAll(); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysMessageServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysMessageServiceImpl.java new file mode 100644 index 0000000..1798ebe --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysMessageServiceImpl.java @@ -0,0 +1,325 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.util.IDUtil; +import com.insigma.sys.dto.LazyTreeNode; +import com.insigma.sys.dto.MessageDTO; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysMessageService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.BatchPreparedStatementSetter; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.*; + +/** + * Created by yinjh on 2020/6/15. + */ +@Service +public class SysMessageServiceImpl implements SysMessageService { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Override + @Transactional(rollbackFor = Exception.class) + public void save(String currentUserId, MessageDTO messageDTO) { + String sql = "insert into sysmessage(message_id, title, content, create_time, creator, type) values(?, ?, ?, ?, ?, ?)"; + jdbcTemplate.update(sql, ps -> { + ps.setString(1, messageDTO.getMessageId()); + ps.setString(2, messageDTO.getTitle()); + ps.setString(3, messageDTO.getContent()); + ps.setTimestamp(4, new Timestamp(System.currentTimeMillis())); + ps.setString(5, currentUserId); + ps.setString(6, messageDTO.getType()); + }); + if ("1".equals(messageDTO.getType())) { + insertSysUserMessageList(messageDTO.getMessageId(), messageDTO.getUserIds()); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(String currentUserId, MessageDTO messageDTO) { + String sql = "update sysmessage set title = ?, content = ?, create_time = ?, creator = ?, type = ? where message_id = ?"; + jdbcTemplate.update(sql, ps -> { + ps.setString(1, messageDTO.getTitle()); + ps.setString(2, messageDTO.getContent()); + ps.setTimestamp(3, new Timestamp(System.currentTimeMillis())); + ps.setString(4, currentUserId); + ps.setString(5, messageDTO.getType()); + ps.setString(6, messageDTO.getMessageId()); + }); + sql = "delete from sysusermessage where message_id = ?"; + jdbcTemplate.update(sql, ps -> ps.setString(1, messageDTO.getMessageId())); + if ("1".equals(messageDTO.getType())) { + insertSysUserMessageList(messageDTO.getMessageId(), messageDTO.getUserIds()); + } + } + + @Override + public PageInfo getSysMessageList(SysUser sysUser, MessageDTO queryDTO, Integer page, Integer size, boolean isManage) throws SQLException { + Map params = new HashMap<>(); + params.put("userId", sysUser.getUserId()); + StringBuffer sql = new StringBuffer(); + if (isManage) { + sql.append("select t.message_id, t.title, t.content, t.create_time, t.type, su.displayname" + + " from sysmessage t, sysuser su" + + " where t.creator=su.userid "); + if (!"1".equals(sysUser.getUserType())) { + sql.append(" and su.userid=:userId"); + } + } else { + sql.append("select t.* from (select sm.message_id, " + + " sm.title, " + + " sm.content, " + + " sm.create_time, " + + " sm.type, " + + " su.displayname, " + + " sum.flag " + + "from sysmessage sm, " + + " sysusermessage sum, " + + " sysuser su " + + "where sm.message_id = sum.message_id " + + " and sm.creator = su.userid " + + " and sum.user_id = :userId " + + " and sm.type = '1' " + + "union all " + + "select sm.message_id, " + + " sm.title, " + + " sm.content, " + + " sm.create_time, " + + " sm.type, " + + " su.displayname, " + + " case when sum.flag is null then '0' end " + + "from sysuser su, sysmessage sm left join sysusermessage sum " + + " on sm.message_id = sum.message_id and sum.user_id = :userId " + + "where sm.creator = su.userid and sm.type = '0') t where 1=1 "); + } + if (!ObjectUtils.isEmpty(queryDTO.getTitle())) { + sql.append(" and t.title like :title"); + params.put("title", "%" + queryDTO.getTitle() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getFlag())) { + sql.append(" and t.flag = :flag"); + params.put("flag", queryDTO.getFlag()); + } + if (queryDTO.getStartDate() != null) { + sql.append(" and t.create_time > :startDate"); + params.put("startDate", queryDTO.getStartDate()); + } + if (queryDTO.getEndDate() != null) { + sql.append(" and t.create_time < :endDate"); + Calendar c = Calendar.getInstance(); + c.setTime(queryDTO.getEndDate()); + c.add(Calendar.DAY_OF_MONTH, 1); + params.put("endDate", c.getTime()); + } + sql.append(" order by t.create_time desc, t.message_id"); + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + MessageDTO dto = new MessageDTO(); + dto.setMessageId(rs.getString("message_id")); + dto.setTitle(rs.getString("title")); + dto.setType(rs.getString("type")); + if (ObjectUtils.isEmpty(dto.getType())) { + dto.setType("0"); + } +// dto.setContent(rs.getString("content")); + dto.setCreator(rs.getString("displayname")); + dto.setCreateTime(rs.getTimestamp("create_time")); + if (!isManage) { + dto.setFlag(rs.getString("flag")); + } + return dto; + }); + return pageInfo; + } + + @Override + public MessageDTO getSysMessage(String messageId) { + String sql = "select sm.message_id, " + + " sm.title, " + + " sm.content, " + + " sm.create_time, " + + " sm.type, " + + " su.displayname " + + "from sysmessage sm, " + + " sysuser su " + + "where sm.creator=su.userid" + + " and sm.message_id=?"; + List list = jdbcTemplate.query(sql, new Object[] {messageId}, (rs, i) -> { + MessageDTO dto = new MessageDTO(); + dto.setMessageId(rs.getString("message_id")); + dto.setTitle(rs.getString("title")); + dto.setContent(rs.getString("content")); + dto.setType(rs.getString("type")); + if (ObjectUtils.isEmpty(dto.getType())) { + dto.setType("0"); + } + dto.setCreator(rs.getString("displayname")); + dto.setCreateTime(rs.getTimestamp("create_time")); + return dto; + }); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + @Override + public MessageDTO getSysMessage(String userId, String messageId) { + String sql = "select sm.message_id, " + + " sm.title, " + + " sm.content, " + + " sm.create_time, " + + " sm.type, " + + " su.displayname, " + + " case when sum.flag is null then '-1' else sum.flag end as flag " + + "from sysuser su, " + + " sysmessage sm left join sysusermessage sum " + + " on sm.message_id = sum.message_id and sum.user_id = ? " + + "where sm.creator=su.userid and sm.message_id=? "; + List list = jdbcTemplate.query(sql, new Object[] {userId, messageId}, (rs, i) -> { + MessageDTO dto = new MessageDTO(); + dto.setMessageId(rs.getString("message_id")); + dto.setTitle(rs.getString("title")); + dto.setContent(rs.getString("content")); + dto.setType(rs.getString("type")); + dto.setCreator(rs.getString("displayname")); + dto.setCreateTime(rs.getTimestamp("create_time")); + dto.setFlag(rs.getString("flag")); + return dto; + }); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + @Override + public MessageDTO getSysUserMessage(String userId, String messageId) { + String sql = "select sm.message_id, " + + " sm.title, " + + " sm.content, " + + " sm.create_time, " + + " sm.type, " + + " su.displayname " + + "from sysuser su, " + + " sysmessage sm, sysusermessage sum " + + "where sm.message_id = sum.message_id and (sum.user_id = ? or sm.creator = ?)" + + " and sm.creator=su.userid and sm.message_id=? "; + List list = jdbcTemplate.query(sql, new Object[] {userId, userId, messageId}, (rs, i) -> { + MessageDTO dto = new MessageDTO(); + dto.setMessageId(rs.getString("message_id")); + dto.setTitle(rs.getString("title")); + dto.setContent(rs.getString("content")); + dto.setType(rs.getString("type")); + dto.setCreator(rs.getString("displayname")); + dto.setCreateTime(rs.getTimestamp("create_time")); + return dto; + }); + if (list != null && list.size() > 0) { + return list.get(0); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateFlag(String userId, String messageId) { + String sql = "update sysusermessage set flag='1' where user_id=? and message_id=?"; + int cnt = jdbcTemplate.update(sql, ps -> { + ps.setString(1, userId); + ps.setString(2, messageId); + }); + if (cnt == 0) { + sql = "select type from sysmessage where message_id = ?"; + List list = jdbcTemplate.query(sql, new Object[]{messageId}, (rs, i) -> rs.getString("type")); + if (list != null && list.size() > 0) { + String type = list.get(0); + if ("0".equals(type)) { + sql = "insert into sysusermessage(id_, user_id, message_id, flag) values(?, ?, ?, ?)"; + jdbcTemplate.update(sql, ps -> { + ps.setString(1, IDUtil.generateUUID()); + ps.setString(2, userId); + ps.setString(3, messageId); + ps.setString(4, "1"); + }); + } + } + + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSysMessage(String messageId) { + String sql = "delete from sysmessage where message_id=?"; + jdbcTemplate.update(sql, ps -> ps.setString(1, messageId)); + sql = "delete from sysusermessage where message_id=?"; + jdbcTemplate.update(sql, ps -> ps.setString(1, messageId)); + } + + @Override + public List> getUserOrgTree(String parentId) { + List params = new ArrayList<>(); + StringBuffer orgSql = new StringBuffer("select * from sysorg where "); + if (ObjectUtils.isEmpty(parentId)) { + orgSql.append("parentid is null"); + } else { + orgSql.append("parentid = ?"); + params.add(parentId); + } + orgSql.append(" order by orgorder, orgid"); + List> orgList = jdbcTemplate.query(orgSql.toString(), params.toArray(), (rs, i) -> { + LazyTreeNode node = new LazyTreeNode<>(); + node.setId(rs.getString("orgid")); + node.setParent(rs.getString("parentid")); + node.setLabel(rs.getString("orgname")); + node.setExtra("1"); + node.setIsLeaf(false); + return node; + }); + List> userList = new ArrayList<>(); + if (!ObjectUtils.isEmpty(parentId)) { + String sql = "select * from sysuser where orgid=? order by logonname"; + userList = jdbcTemplate.query(sql, new Object[] {parentId}, (rs, i) -> { + LazyTreeNode node = new LazyTreeNode<>(); + node.setId(rs.getString("userid")); + node.setParent(rs.getString("orgid")); + node.setLabel(rs.getString("displayname")); + node.setExtra("2"); + node.setIsLeaf(true); + return node; + }); + } + orgList.addAll(userList); + return orgList; + } + + private void insertSysUserMessageList(String messageId, List userIds) { + String sql = "insert into sysusermessage(id_, user_id, message_id, flag) values(?, ?, ?, ?)"; + jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() { + @Override + public void setValues(PreparedStatement ps, int i) throws SQLException { + ps.setString(1, IDUtil.generateUUID()); + ps.setString(2, userIds.get(i)); + ps.setString(3, messageId); + ps.setString(4, "0"); + } + + @Override + public int getBatchSize() { + return userIds.size(); + } + }); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOperateLogServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOperateLogServiceImpl.java new file mode 100644 index 0000000..312ad19 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOperateLogServiceImpl.java @@ -0,0 +1,105 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.SysOperateLogDTO; +import com.insigma.sys.entity.SysRole; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.RoleService; +import com.insigma.sys.service.SysOperateLogService; +import com.insigma.web.support.util.SysFunctionManager; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.sql.SQLException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +@Service +public class SysOperateLogServiceImpl implements SysOperateLogService { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + RoleService roleService; + @Autowired + private CurrentUserService currentUserService; + @Autowired + private SysManageMode sysManageMode; + @Value("${insiis.log.show.all:true}") + private Boolean logShowAll; + @Override + public PageInfo querySysOperateLogList(SysOperateLogDTO queryDTO, Integer page, Integer size) throws SQLException { + Map params = new HashMap<>(); + SysUser sysUser = currentUserService.getCurrentUser(); + String userId = sysUser.getUserId(); + List roleList = roleService.queryRoleByUserId(userId); + StringBuffer sql = new StringBuffer("select dm.* from (select db.*, sy.title\n" + + " from (select dp.*, up.usertype, up.logonname, up.displayname, up.orgid\n" + + " from sysoperatelog dp left join sysuser up \n" + + " on dp.userid = up.userid) db\n" + + " left join sysfunction sy\n" + + " on db.functionid = sy.functionid) dm where 1=1 "); + if (sysManageMode.isTripleMode() == true && "1".equals(currentUserService.getCurrentUser().getUserType())){ + PageInfo pageInfo =new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(null); + return pageInfo;//系统管理员启用三员制 无法查看数据 + } + if (sysManageMode.isTripleMode() == true){//启用三员制 + // 当登录用户的角色为安全管理员 + if (roleList.stream().anyMatch(role -> role.getRoletype().equals("3"))) { + sql.append(" and (dm.usertype = '6' or dm.usertype = '4' )"); + } + // 当登录用户的角色为审计管理员 + if (roleList.stream().anyMatch(role -> role.getRoletype().equals("4"))) { + sql.append(" and (dm.usertype = '1' or dm.usertype = '5' )"); + } + + } else { + if (!logShowAll) { + if ("2".equals(sysUser.getUserType())) { + // 行政区管理员 + sql.append(" and exists (select 1 from sysorg so where so.orgid=dm.orgid and so.regioncode='" + sysUser.getAreaId() + "')"); + } else if ("3".equals(sysUser.getUserType())) { + // 机构管理员 + sql.append(" and dm.orgid='" + sysUser.getOrgId() + "' "); + } else if ("4".equals(sysUser.getUserType())) { + // 业务操作员,无可查看数据 + PageInfo pageInfo = new PageInfo<>(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(new ArrayList<>()); + return pageInfo; + } + } + } + if (!ObjectUtils.isEmpty(queryDTO.getLogonname())) { + sql.append(" and dm.logonname like :logonname"); + params.put("logonname", "%" + queryDTO.getLogonname() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getDisplayname())) { + sql.append(" and dm.displayname like :displayname"); + params.put("displayname", "%" + queryDTO.getDisplayname() + "%"); + } + if (queryDTO.getOpDate()!=null&&!"".equals(queryDTO.getOpDate())){ + String [] opDate = queryDTO.getOpDate().split(","); + sql.append(" and dm.begintime between :startTime and :endTime"); + params.put("startTime", Timestamp.valueOf(opDate[0])); + params.put("endTime", Timestamp.valueOf(opDate[1])); + + } + sql.append(" and dm.begintime is not null order by dm.begintime desc"); + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size,"grid", SysFunctionManager.getFunctionId()); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params,SysOperateLogDTO.class); + return pageInfo; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOrgServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOrgServiceImpl.java new file mode 100644 index 0000000..81f5918 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysOrgServiceImpl.java @@ -0,0 +1,223 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.commons.syslog.Syslog; +import com.insigma.sys.entity.Aa26; +import com.insigma.sys.entity.SysOrg; +import com.insigma.sys.entity.SysUserArea; +import com.insigma.sys.repository.Aa26Repository; +import com.insigma.sys.repository.SysOrgRepository; +import com.insigma.sys.repository.SysUserAreaRepository; +import com.insigma.sys.service.SysOrgService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.transaction.Transactional; +import java.util.List; +import java.util.Map; + +/** + * @Author: caic + * @version: 14:11 2019/1/22 + * @Description: + */ +@Service("SysOrgService") +public class SysOrgServiceImpl implements SysOrgService { + @Autowired + SysOrgRepository sysOrgRepository; + @Autowired + Aa26Repository aa26Repository; + @Autowired + SysUserAreaRepository sysUserAreaRepository; + + @Syslog("保存机构:${sysOrg.orgname}") + @Override + @Transactional + public void save(SysOrg sysOrg) { + sysOrgRepository.save(sysOrg); + } + + @Syslog("删除所有机构") + @Override + @Transactional + public void deleteAllOrgs() { + sysOrgRepository.deleteAll(); + } + + @Syslog("删除机构:${id}") + @Override + @Transactional + public void deleteByOrgId(Long id) { + sysOrgRepository.deleteById(id); + } + + @Override + public SysOrg findByOrgid(Long orgId) { + return sysOrgRepository.findByOrgid(orgId); + } + + @Override + public List findByRegioncode(String areaId) { + return sysOrgRepository.findByRegioncode(areaId); + } + + @Override + public List queryAllOrg() { + List sysOrgs=sysOrgRepository.findAllOrg(); + return sysOrgs; + } + + @Override + public List getAA26() { + List list; + list = aa26Repository.findAll(); + return list; + } + + @Override + public Aa26 queryAa26By301(String aab301) { + Aa26 aa26=aa26Repository.findByAab301(aab301); + return aa26; + } + + @Syslog("保存机构:${sysOrg.orgname}") + @Override + @Transactional + public void saveOrg(SysOrg sysOrg) { + sysOrgRepository.save(sysOrg); + if (sysOrg.getParentid()!=null){ + SysOrg sysOrg2=sysOrgRepository.findByOrgid(sysOrg.getParentid()); + sysOrg.setIdpath(sysOrg2.getIdpath()+"/"+sysOrg.getOrgid()); + }else { + sysOrg.setIdpath(sysOrg.getOrgid().toString()); + } + sysOrgRepository.save(sysOrg); + } + + @Syslog("删除机构:${list[0].orgname}") + @Override + @Transactional + public void delOrg(List list, boolean o) { + for (int i=0;i s= sysUserAreaRepository.findByAreaId(list.get(i).getOrgentercode()); + if (s.size()>0){ + for (SysUserArea s1:s){ + sysUserAreaRepository.delete(s1); + } + } + } + + } + } + @Override + public SysOrg getSysOrgBean(Map form) { + SysOrg sysOrg=new SysOrg(); + sysOrg.setOrgname(form.get("orgname").toString()); + sysOrg.setOrgentercode(form.get("orgentercode").toString()); + sysOrg.setShortname(form.get("shortname").toString()); + if (form.get("parentid")!=null){ + sysOrg.setParentid(Long.valueOf(form.get("parentid").toString())); + } + Map regioncode= (Map) form.get("regioncode"); + List list= (List) regioncode.get("value"); + if (list.size()==0){ + sysOrg.setRegioncode(""); + }else if (list.size()>0){ + sysOrg.setRegioncode(list.get(list.size()-1)); + } + sysOrg.setLinkman(form.get("linkman").toString()); + sysOrg.setLeader(form.get("leader").toString()); + sysOrg.setTel(form.get("tel").toString()); + sysOrg.setOrgaddr(form.get("orgaddr").toString()); + sysOrg.setOrgdesc(form.get("orgdesc").toString()); + if (!form.get("orgorder").toString().equals("")){ + sysOrg.setOrgorder(Integer.parseInt(form.get("orgorder").toString())); + } + sysOrg.setOrgstate(form.get("orgstate").toString()); + sysOrg.setSuperdept(form.get("superdept").toString()); + sysOrg.setOrgautocode(form.get("orgautocode").toString()); + sysOrg.setZip(form.get("zip").toString()); + sysOrg.setIdpath(form.get("idpath").toString()); + if (!form.get("orgid").toString().equals("")){ + sysOrg.setOrgid( Long.valueOf(form.get("orgid").toString())); + } + return sysOrg; + } + + @Override + public boolean findByArea(List list) { + for (int i=0;i s =sysUserAreaRepository.findByAreaId(list.get(i).getOrgentercode()); + if (s.size()>0){ + return true; + } + } + return false; + } + + @Override + public List findNodes(long node) { + SysOrg sysOrg = sysOrgRepository.findByOrgid(node); + List sysOrgs=sysOrgRepository.findByIdpathStartingWith(sysOrg.getIdpath()); + return sysOrgs; + } + public JSONObject findOrgid(JSONObject jsonObject,String node){ + JSONArray jsonArray= (JSONArray)jsonObject.get("children"); + JSONObject jsonObject1=new JSONObject(); + for (int j=0;j0){ +// for(int j=0;j sysOrgs=sysOrgRepository.findByNameOrCode(sysOrg.getOrgname(),sysOrg.getOrgentercode()); + if (sysOrgs.size() > 0) { + if (null==sysOrg.getOrgid()){ + return true; + } + for (SysOrg sysOrg1 : sysOrgs) { + if (sysOrg1.getOrgname()==sysOrg.getOrgname()&&sysOrg.getOrgid()==null){ + flag = true; + break; + }else if (sysOrg1.getOrgentercode()==sysOrg.getOrgentercode()&&sysOrg.getOrgid()==null){ + flag = true; + break; + }else if (sysOrg.getOrgid()!=null&&!sysOrg1.getOrgid().equals(sysOrg.getOrgid())){ + flag = true; + break; + } + } + } + return flag; + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserAreaImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserAreaImpl.java new file mode 100644 index 0000000..a9333b2 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserAreaImpl.java @@ -0,0 +1,25 @@ +package com.insigma.sys.service.impl; + +import com.insigma.sys.entity.SysUserArea; +import com.insigma.sys.repository.SysUserAreaRepository; +import com.insigma.sys.service.SysUserAreaService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Service +public class SysUserAreaImpl implements SysUserAreaService { + @Autowired + private SysUserAreaRepository sysUserAreaRepository; + @Override + public List findUserAreaByUserid(String userid) { + return sysUserAreaRepository.findByUserId(userid); + } + @Transactional(rollbackFor=Exception.class) + @Override + public void deleteAllByUserid(String userid) { + sysUserAreaRepository.deleteSysUserArea(userid); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserServiceImpl.java new file mode 100644 index 0000000..1640be3 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysUserServiceImpl.java @@ -0,0 +1,787 @@ +package com.insigma.sys.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.insigma.framework.commons.syslog.Syslog; +import com.insigma.framework.encryption.util.SM3Utils; +import com.insigma.framework.exception.AppException; +import com.insigma.framework.util.DtoEntityUtil; +import com.insigma.framework.web.securities.commons.SM3PasswordEncoder; +import com.insigma.framework.web.securities.entity.SysLogonLog; +import com.insigma.framework.web.securities.repository.SysLogonLogRepository; +import com.insigma.framework.web.securities.service.SysCacheService; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.UserDTO; +import com.insigma.sys.entity.*; +import com.insigma.sys.repository.*; +import com.insigma.sys.service.SysUserService; +import com.insigma.web.support.config.SysConfigProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; + +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.Predicate; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; + +/** + * @Author: caic + * @version: 15:39 2019/1/7 + * @Description: + */ +@Service("SysUserService") +public class SysUserServiceImpl implements SysUserService { + + @Autowired + private CurrentUserService currentUserService; + @Autowired + private SysUserRepository sysUserRepository; + @Autowired + private SysOrgRepository sysOrgRepository; + @Autowired + private Aa26Repository aa26Repository; + @Autowired + private RoleRepository roleRepository; + @Autowired + private SysUserRoleRepository sysUserRoleRepository; + @Autowired + private SysUserAreaRepository sysUserAreaRepository; + @Autowired + private SysConfigProperties sysConfigProperties; + @Autowired + private SysCodeRepository sysCodeRepository; + @Autowired + private SysCacheService sysCacheService; + @Autowired + private SysLogonLogRepository sysLogonLogRepository; + + /** + * 同步用户删除操作 + */ + @Syslog("删除所有用户") + @Override + @Transactional(rollbackFor=Exception.class) + public void deleteAll() { + sysUserRepository.deleteAll(); + } + + @Syslog("删除用户:${id}") + @Override + @Transactional(rollbackFor=Exception.class) + public void deleteByUserId(String id) { + + sysUserRepository.deleteById(id); + } + + @Syslog("保存用户:${sysUser.logonName}") + @Override + @Transactional(rollbackFor=Exception.class) + public void saveAll(SysUser sysUser) { + sysUserRepository.save(sysUser); + } + + /** + * 保存用户 + * + * @param sysUser + */ + @Syslog("保存用户:${sysUser.logonName}") + @Override + @Transactional(rollbackFor = Exception.class) + public void saveUser(SysUser sysUser, Map> map) throws AppException { + SysUser currentUser = currentUserService.getCurrentUser(); + if ("3".equals(currentUser.getUserType())) {//当前登录用户为机构管理员,添加的用户机构随当前登录用户机构 + sysUser.setOrgId(currentUser.getOrgId()); + sysUser.setAreaId(currentUser.getAreaId()); + } + + //如果是更新操作,将原密码查询到新的更新对象中 + if (sysUser.getUserId() != null && sysUser.getUserId().length() > 0) { + SysUser temUser=queryOneUser(sysUser.getUserId()); + if (temUser == null) { + throw new AppException("当前用户不存在"); + } + if((temUser.getPassWD()!=null) && (!temUser.getPassWD().equals(sysUser.getPassWD())) //原码是否和原来一样 + && (!SM3Utils.digest(temUser.getPassWD()).equals(sysUser.getPassWD()))){ + //密码有更新,需要重新加密 + sysUser.setPassWD(new SM3PasswordEncoder().encode(sysUser.getPassWD())); + } else { + sysUser.setPassWD(temUser.getPassWD()); + } + }else{ + if(checkLogonName(sysUser.getLogonName(), null)) { + throw new AppException("该用户已存在!"); + } + // 新增用户使用默认配置好的密码 + if (!SysManageMode.isTripleMode()) { + sysUser.setPassWD(new SM3PasswordEncoder().encode(SM3Utils.digest(sysConfigProperties.getDefaultPassword()))); + } else { + sysUser.setPassWD(new SM3PasswordEncoder().encode(SM3Utils.digest(sysUser.getPassWD()))); + } + } + String userId = sysUserRepository.save(sysUser).getUserId(); + + // 保存用户角色 + sysUserRoleRepository.deleteSysUserRole(userId); + if (sysUser.getSysUserRoleList() != null) { + List list = sysUser.getSysUserRoleList(); + for (SysUserRole sysUserRole : list) { + sysUserRole.setUserId(userId); + } + sysUserRoleRepository.saveAll(list); + } + + + //删除去掉打钩的区域 + List areaDelList = new ArrayList<>(); + if (map.get("removeAreaIds").size() > 0) { + for (String areaId : map.get("removeAreaIds")) { + SysUserArea sysUserArea = new SysUserArea(); + sysUserArea.setUserId(userId); + sysUserArea.setAab301(areaId); + areaDelList.add(sysUserArea); + } + } + sysUserAreaRepository.deleteAll(areaDelList); + //保存添加打钩的区域 + List areaAddList = new ArrayList<>(); + if (map.get("addAreaIds").size() > 0) { + for (String areaId : map.get("addAreaIds")) { + SysUserArea sysUserArea = new SysUserArea(); + sysUserArea.setUserId(userId); + sysUserArea.setAab301(areaId); + areaAddList.add(sysUserArea); + } + } + sysUserAreaRepository.saveAll(areaAddList); + + // 清除用户缓存 + sysCacheService.clearUserCache(sysUser.getLogonName()); + } + + /*** + * 查询全部用户 + * @return + */ + @Override + public List queryAllUser() { + return sysUserRepository.findAll(); + } + + /*** + * 注销用户 + * @param userId + */ + @Syslog("注销用户:${returnVal.logonName}") + @Override + @Transactional + public SysUser logoutUser(String userId) throws AppException { + SysUser sysUser = queryOneUser(userId); + if (sysUser == null) { + throw new AppException("所选用户不存在"); + } + sysUser.setUserState("3"); + sysUserRepository.saveAndFlush(sysUser); + // 清除用户缓存 + sysCacheService.clearUserCache(sysUser.getLogonName()); + //暂时不删除用户绑定的用户及管理的区域 + //sysUserRepository.deleteUserRole(userId); + return sysUser; + } + + /*** + * 解锁用户 + * @param userId + */ + @Syslog("解锁用户:${returnVal.logonName}") + @Override + @Transactional + public SysUser unlockUser(String userId) throws AppException { + SysUser sysUser = queryOneUser(userId); + if (sysUser == null) { + throw new AppException("所选用户不存在"); + } + if (!"2".equals(sysUser.getUserState())) { + throw new AppException("所选用户未被锁定"); + } + sysUser.setFailNO(0L); + sysUser.setUserState("1"); + sysUser.setUnlockTime(new Date()); + sysUserRepository.saveAndFlush(sysUser); + // 清除用户缓存 + sysCacheService.clearUserCache(sysUser.getLogonName()); + return sysUser; + } + + /*** + * 锁定用户 + * @param userId + */ + @Syslog("锁定用户:${returnVal.logonName}") + @Override + @Transactional + public SysUser lockUser(String userId) throws AppException { + SysUser sysUser = queryOneUser(userId); + if (sysUser == null) { + throw new AppException("所选用户不存在"); + } + if (!"1".equals(sysUser.getUserState())) { + throw new AppException("所选用户不是正常用户"); + } + sysUser.setFailNO(0L); + sysUser.setUserState("2"); + sysUser.setLockTime(new Date()); + sysUserRepository.saveAndFlush(sysUser); + // 清除用户缓存 + sysCacheService.clearUserCache(sysUser.getLogonName()); + return sysUser; + } + + /** + * 重置密码 + */ + @Syslog("重置密码:${returnVal.logonName}") + @Override + @Transactional(rollbackFor = Exception.class) + public SysUser resetPassWD(String userId) throws AppException { + SysUser sysUser = queryOneUser(userId); + if (sysUser == null) { + throw new AppException("所选用户不存在"); + } + if ("3".equals(sysUser.getUserState())) { + throw new AppException("所选用户已注销"); + } + sysUser.setPassWD(new SM3PasswordEncoder().encode(SM3Utils.digest(sysConfigProperties.getDefaultPassword()))); + sysUser.setPwEditDate(new Date()); + sysUserRepository.saveAndFlush(sysUser); + // 清除用户缓存 + sysCacheService.clearUserCache(sysUser.getLogonName()); + return sysUser; + } + + /** + * 修改密码 + * @param oldPass + * @param newPass + * @throws AppException + */ + @Syslog("修改密码:${returnVal.logonName}") + @Override + @Transactional(rollbackFor = Exception.class) + public SysUser updataPassWD(String oldPass, String newPass) throws AppException { + SysUser currentUser = currentUserService.getCurrentUser(); + boolean bool = new SM3PasswordEncoder().matches(oldPass,currentUser.getPassWD()); + if (bool) { + SysUser sysUser = sysUserRepository.getOne(currentUser.getUserId()); + sysUser.setPassWD(new SM3PasswordEncoder().encode(newPass)); + sysUser.setPwEditDate(new Date()); + sysUserRepository.saveAndFlush(sysUser); + // 清除用户缓存 + sysCacheService.clearUserCache(currentUser.getLogonName()); + return sysUser; + } else { + throw new AppException("旧密码输入错误,请重新输入"); + } + } + + /** + * 查询区域下的机构树节点 + * + * @param areaId + * @return + */ + @Override + public List queryOrgNodes(String areaId) { + List orgList = sysOrgRepository.findByRegioncode(areaId); + List orgTree = new ArrayList<>(); + for (SysOrg sysOrg : orgList) { + orgTree.add(sysOrg);//添加自身节点 + orgTree.addAll(sysOrgRepository.findByIdpathStartingWith(sysOrg.getIdpath() + "/"));//后面加"/"为了防止匹配例如1/2/3,匹配成1/2/323 + } + List list = orgTree.stream().distinct().collect(Collectors.toList()); + return list; + } + + /** + * 查找区域树结构数据 + * + * @return + */ + @Override + public List queryAa26Nodes() { + SysUser currentUser = currentUserService.getCurrentUser(); + List list = new ArrayList<>(); + if ("1".equals(currentUser.getUserType())) {//超级管理员 + list = aa26Repository.findAll(); + } else if ("2".equals(currentUser.getUserType())) {//区域管理员 + Aa26 aa26 = aa26Repository.findByAab301(currentUser.getAreaId() + ""); + list = aa26Repository.findByidpathStartingWith(aa26.getIdpath()); + } else if ("3".equals(currentUser.getUserType())) {//机构管理员不查询所属行政区,默认跟随自身机构 + // sysOrgRepository.getOne(currentUser.getOrgId()); + Aa26 aa26 = aa26Repository.getOne(currentUser.getAreaId() + ""); + list.add(aa26); + } + return list; + } + + /** + * 查询用户类型列表 + * + * @return + */ + @Override + public List> findUsetTypeCode() { + List list = sysCodeRepository.findByAaa100("USERTYPE"); + if(SysManageMode.isTripleMode()){//三员制 + if(!"1".equals(currentUserService.getCurrentUser().getUserType())){//如果当前登录用户不是超级管理员,则不能添加超级管理员。 + if(!"5".equals(currentUserService.getCurrentUser().getUserType())){//如果不是安全管理员则不能显示安全管理员 + for(int i=0;i0){ + for(int i=0;i0){ + for(int i=0;i> findSlevel() { + List list = sysCodeRepository.findByAaa100("SLEVEL"); + return aa10ToCodeList(list); + } + + /** + * 分页查询用户 + * + * @param logonName + * @param displayName + * @param orgId + * @param userState + * @param page + * @param size + * @return + */ + @Override + public Page findAll(String logonName, String displayName, String orgId, String userState, String userType, String aa26, String cardId, Integer page, Integer size,String type) { + SysUser currentUser = currentUserService.getCurrentUser(); + Specification queryParams = (Specification) (root, criteriaQuery, criteriaBuilder) -> { + try { + List predicates = new ArrayList<>(); + // if("1".equals(type) || "2".equals(type)){//常规用户管理模块或者三员制用户管理模块 + if (!"1".equals(currentUser.getUserType())) {//超级管理员 + String[] states = new String[]{"1", "2"};//过滤的用户状态,只查询状态为1:正常,2:锁定的用户 + CriteriaBuilder.In in = criteriaBuilder.in(root.get("userState")); + for (String state : states) { + in.value(state); + } + predicates.add(in); + if ("2".equals(currentUser.getUserType())) {//行政区管理员 + predicates.add((Predicate) criteriaBuilder.equal(root.get("areaId"), currentUser.getAreaId())); + predicates.add((Predicate) criteriaBuilder.notEqual(root.get("userType"), "1")); + // List orgList = sysOrgRepository.findByparentid(currentUser.getOrgId()); + // CriteriaBuilder.In areaIn = criteriaBuilder.in(root.get("orgId")); + // for (SysOrg sysOrg : orgList) { + // areaIn.value(sysOrg.getOrgid()); + // } + // areaIn.value(currentUser.getOrgId()); + // predicates.add(in); + } + if ("3".equals(currentUser.getUserType())) {//机构管理员 + predicates.add((Predicate) criteriaBuilder.equal(root.get("orgId"), currentUser.getOrgId())); + predicates.add((Predicate) criteriaBuilder.notEqual(root.get("userType"), "1")); + predicates.add((Predicate) criteriaBuilder.notEqual(root.get("userType"), "2")); + // List orgList = sysOrgRepository.findByparentid(currentUser.getOrgId()); + // CriteriaBuilder.In areaIn = criteriaBuilder.in(root.get("orgId")); + // for (SysOrg sysOrg : orgList) { + // areaIn.value(sysOrg.getOrgid()); + // } + // predicates.add(in); + } + if ("4".equals(currentUser.getUserType())) {//业务操作员 + throw new RuntimeException("业务操作人员没权限查看用户列表"); + } + /*if ("5".equals(currentUser.getUserType())) {//安全管理员 + throw new RuntimeException("安全管理员没权限查看用户列表"); + } + if ("6".equals(currentUser.getUserType())) {//审计管理员 + throw new RuntimeException("审计管理员没权限查看用户列表"); + }*/ + } + /*}else if("3".equals(type)) {//三员制下用户授权模块 + if (!"5".equals(currentUser.getUserType())) { + throw new RuntimeException("三员制下,除了安全管理员有用户授权权限,其他人员没权限查看用户列表"); + } + }*/ + if (null != logonName && !"".equals(logonName)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("logonName"), "%" + logonName + "%")); + } + if (null != displayName && !"".equals(displayName)) { + predicates.add((Predicate) criteriaBuilder.like(root.get("displayName"), "%" + displayName + "%")); + } + if (null != orgId && !"".equals(orgId)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("orgId"), orgId)); + } + if (null != userState && !"".equals(userState)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("userState"), userState)); + } + if (null != userType && !"".equals(userType)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("userType"), userType)); + } + if (null != aa26 && !"".equals(aa26)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("areaId"), aa26)); + } + if (null != cardId && !"".equals(cardId)) { + predicates.add((Predicate) criteriaBuilder.equal(root.get("cardId"), cardId)); + } + + Predicate[] p = new Predicate[predicates.size()]; + criteriaQuery.where(criteriaBuilder.and(predicates.toArray(p))); + } catch (Exception e) { + throw new RuntimeException(e); + } + return criteriaQuery.getRestriction(); + }; + page = page < 0 ? 0 : page; + Pageable pageable = PageRequest.of(page, size); + Page codePage = sysUserRepository.findAll(queryParams, pageable); + List dtoList = DtoEntityUtil.trans(codePage.getContent(), UserDTO.class); + dtoList.stream().forEach(userDTO -> { + userDTO.setVisible("1"); + if (!ObjectUtils.isEmpty(userDTO.getTel())){ + String tel = userDTO.getTel(); + String substring = tel.substring(3, 7); + String replace = tel.replace(substring, "****"); + userDTO.setTel(replace); + } + if (!ObjectUtils.isEmpty(userDTO.getCardId()) && userDTO.getCardId().length() > 3) { + StringBuilder sb = new StringBuilder(); + int len = userDTO.getCardId().length() - 3; + for (int i = 0; i < len; i++) { + sb.append("*"); + } + String replace = userDTO.getCardId().replaceAll("^(.{1})(?:\\d+).(.{2})$", "$1" + sb.toString() + "$2"); + userDTO.setCardId(replace); + } + }); + return new PageImpl(dtoList,pageable,codePage.getTotalElements()); + } + + /** + * 查询用户状态列表 + * + * @return + */ + @Override + public List> getUserStateCode() { + List list = sysCodeRepository.findByAaa100("USERSTATE"); + return aa10ToCodeList(list); + } + + /** + * 将aa10数据组装成List格式 + * + * @param list + * @return + */ + private List> aa10ToCodeList(List list) { + List> codeList = new ArrayList<>(); + for (Aa10 aa10 : list) { + Map tem = new ConcurrentHashMap(); + tem.put("key", aa10.getAaa102()); + tem.put("value", aa10.getAaa102()); + tem.put("label", aa10.getAaa103()); + codeList.add(tem); + } + return codeList; + } + + @Override + public List findByRoleType(String userType) { + String currentUserType = currentUserService.getCurrentUser().getUserType(); + if("1".equals(userType)){//新增的用户类型为超级管理员 + return roleRepository.queryByAdmin(); + } + if ("2".equals(userType)) {//新增的用户类型为行政区管理员 + return roleRepository.queryRoleByArea(currentUserService.getCurrentUser().getAreaId()); + } + if ("3".equals(userType)) {//新增的用户类型为机构管理员 + return roleRepository.queryByOrgId(currentUserService.getCurrentUser().getOrgId()); + } + if ("4".equals(userType)) {//新增的用户类型为业务操作员(普通用户) + if("1".equals(currentUserType)){//当前登录用户为超级管理员 + return roleRepository.findAllByRoletype("2"); + } + if ("2".equals(currentUserType)) {//当前登录用户为行政区管理员 + return roleRepository.queryRoleByRoletypeAndAreaid("2", currentUserService.getCurrentUser().getAreaId()); + } + if ("3".equals(currentUserType)) {//当前登录用户为机构管理员 + return roleRepository.findByRoletypeAndOrgid("2", currentUserService.getCurrentUser().getOrgId()); + } + if ("5".equals(currentUserType)) {//当前登录用户为安全管理员 + return roleRepository.findAllByRoletype("2"); + } + } + if(SysManageMode. isTripleMode()){//三员制 + if("5".equals(userType)){ + return roleRepository.findAllByRoletype("3"); + }else if("6".equals(userType)){ + return roleRepository.findAllByRoletype("4"); + } + } + return roleRepository.findAll(); + } + + /** + * 校验登录名是否重复 + * + * @param logonName + * @return + */ + @Override + public boolean checkLogonName(String logonName, String userId) { + List list; + if (userId == null || userId.length() == 0) { + list = sysUserRepository.findByLogonName(logonName); + } else { + list = sysUserRepository.findByLogonNameAndUserIdNot(logonName, userId); + } + if (list.size() == 0) {//查询结果为空,则表示没有登录名称重复 + return false; + } + return true; + } + + @Override + public SysUser queryOneUser(String userId) { + SysUser sysUser = sysUserRepository.findById(userId).orElse(null); + return sysUser; + } + + /** + * 更新单个用户信息 + * @param sysUser + */ + @Override + public void updateUser(SysUser sysUser) { + sysUserRepository.saveAndFlush(sysUser); + } + + @Override + public List queryUserRole(String userId) throws AppException { + if (!checkUser(userId)) { + throw new AppException("该用户无效"); + } + return sysUserRoleRepository.findByUserId(userId); + } + + @Override + public List queryUserArea(String userId) throws AppException { + if (!checkUser(userId)) { + throw new AppException("该用户无效"); + } + return sysUserAreaRepository.findByUserId(userId); + } + + /** + * 查询所有机构 + * + * @return + */ + @Override + public List findAllOrg() { + return sysOrgRepository.findAll(); + } + + /** + * 校验用户是否有效 + * + * @param userId + */ + private boolean checkUser(String userId) { + SysUser sysUser = queryOneUser(userId); + if (sysUser == null) { + return false; + } + if ("3".equals(sysUser.getUserState())) { + return false; + } + return true; + } + + /** + * 通用查询aa10编码 + * @param codeType + * @return + */ + @Override + public List> getAa10Code(String codeType) { + List list = sysCodeRepository.findByAaa100(codeType); + return aa10ToCodeList(list); + } + + @Override + public void deleteAllUserExitsAdmin() { + sysUserRepository.deleteAllUserExitsAdmin(); + } + + /** + * 保存用户 + * + * @param sysUser + */ + @Override + @Transactional + public void saveUserRole(SysUser sysUser) throws AppException { + String userId=sysUser.getUserId(); + if(SysManageMode.isTripleMode()){//三员制 + sysUserRoleRepository.deleteSysUserRole(userId); + List list = sysUser.getSysUserRoleList(); + for (int i = 0; i < list.size(); i++) { + list.get(i).setUserId(userId); + } + sysUserRoleRepository.saveAll(list); + } + } + + @Override + public String getUserSlevel(){ + String logonName=currentUserService.getCurrentUser().getLogonName(); + List sysUser=sysUserRepository.findByLogonName(logonName); + return sysUser.get(0).getSlevel(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchSaveUsers(List users) { + users.stream().forEach(sysUser -> { + sysUser.setPassWD(new SM3PasswordEncoder().encode(SM3Utils.digest(sysConfigProperties.getDefaultPassword()))); + sysUser.setUserState("1"); + }); + sysUserRepository.saveAll(users); + } + + @Override + public SysUser findUserByLogonName(String logonName) { + return sysUserRepository.findUsefulUserByLogonName(logonName); + } + + @Override + public void copyUser(JSONObject data) throws AppException { + String cuType = currentUserService.getCurrentUser().getUserType(); + String userId = data.getString("userId"); + String logonName = data.getString("logonName"); + String displayName = data.getString("displayName"); + String cardType = data.getString("cardType"); + String cardId = data.getString("cardId"); + SysUser sysUser = sysUserRepository.findById(userId).orElse(null); + SysUser oneUser = new SysUser(); + if(checkLogonName(logonName, null)) { + throw new AppException("该用户名已存在!"); + } + if(sysUser != null){ + if(Integer.parseInt(sysUser.getUserType()) < Integer.parseInt(cuType)){ + throw new AppException("无复制权限"); + } + oneUser.setLogonName(logonName); + oneUser.setDisplayName(displayName); + oneUser.setOrgId(sysUser.getOrgId()); + oneUser.setAreaId(sysUser.getAreaId()); + oneUser.setUserType(sysUser.getUserType()); + oneUser.setUserState(sysUser.getUserState()); + oneUser.setCardType(cardType); + oneUser.setCardId(cardId); + oneUser.setPassWD(new SM3PasswordEncoder().encode(SM3Utils.digest(sysConfigProperties.getDefaultPassword()))); + sysUserRepository.save(oneUser); + } + } + + @Override + public void clearSessions(String userId) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date todayStart = calendar.getTime(); + List list = sysLogonLogRepository.findNotLogoffListByUserIdToday(userId, todayStart); + List sessionIds = list.stream().map(SysLogonLog::getSessionid).collect(Collectors.toList()); + if (sessionIds.size() > 0) { + sysCacheService.clearSessions(sessionIds); + } + } + + +} + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysWarningLogServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysWarningLogServiceImpl.java new file mode 100644 index 0000000..d408e45 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SysWarningLogServiceImpl.java @@ -0,0 +1,46 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.web.securities.service.SysLogService; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.entity.SysWarningLog; +import com.insigma.sys.repository.SysWarningLogRepository; +import com.insigma.sys.service.SysWarningLogService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.util.Date; + +/** + * @author yinjh + * @version 2021/10/9 + */ +@Service +public class SysWarningLogServiceImpl implements SysWarningLogService { + + @Autowired + private CurrentUserService currentUserService; + + @Autowired + private SysWarningLogRepository sysWarningLogRepository; + + @Autowired + private SysLogService logService; + + @Autowired + private HttpServletRequest request; + + @Override + @Transactional(rollbackFor = Exception.class) + public void saveLog(String content) { + SysWarningLog log = new SysWarningLog(); + log.setUserid(currentUserService.getCurrentUser().getUserId()); + log.setSessionid(request.getSession().getId()); + log.setContent(content); + log.setCreateTime(new Date()); + sysWarningLogRepository.saveAndFlush(log); + + logService.saveLogoffLogBySid(request.getSession().getId(), "输入异常退出"); + } +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SyslogonLogServiceImpl.java b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SyslogonLogServiceImpl.java new file mode 100644 index 0000000..300d729 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/service/impl/SyslogonLogServiceImpl.java @@ -0,0 +1,151 @@ +package com.insigma.sys.service.impl; + +import com.insigma.framework.db.JdbcPageHelper; +import com.insigma.framework.db.PageInfo; +import com.insigma.framework.web.securities.entity.SysLogonLog; +import com.insigma.framework.web.securities.repository.SysLogonLogRepository; +import com.insigma.sys.common.CurrentUserService; +import com.insigma.sys.common.SysManageMode; +import com.insigma.sys.dto.SysLogonLogDTO; +import com.insigma.sys.entity.SysRole; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.RoleService; +import com.insigma.sys.service.SyslogonLogService; +import com.insigma.web.support.util.SysFunctionManager; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.PageRequest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; + +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * fukq 2020/6/2 + */ +@Slf4j +@Service +public class SyslogonLogServiceImpl implements SyslogonLogService { + + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private RoleService roleService; + @Autowired + private CurrentUserService currentUserService; + @Autowired + private SysManageMode sysManageMode; + @Autowired + private SysLogonLogRepository sysLogonLogRepository; + @Value("${insiis.log.show.all:true}") + private Boolean logShowAll; + + @Override + public PageInfo querySysLogonList(SysLogonLogDTO queryDTO, Integer page, Integer size) throws SQLException { + Map params = new HashMap<>(); + // 当前登录用户所拥有的角色 + SysUser sysUser = currentUserService.getCurrentUser(); + String userId = sysUser.getUserId(); + List roleList = roleService.queryRoleByUserId(userId); + // List roleList = currentUserService.getCurrentUser().getSysUserRoleList(); + StringBuffer sql = new StringBuffer("select dp.*,up.usertype,up.logonname,up.displayname from syslogonlog dp left join " + + "sysuser up on dp.userid = up.userid where 1=1 "); + if (sysManageMode.isTripleMode() == true && "1".equals(currentUserService.getCurrentUser().getUserType())){ + PageInfo pageInfo =new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(new ArrayList<>()); + + return pageInfo; + } + if (sysManageMode.isTripleMode() == true) {//启用三员制 + // 当登录用户的角色为安全管理员 + if (roleList.stream().anyMatch(role -> role.getRoletype().equals("3"))) { + sql.append("and (up.usertype = '6' or up.usertype = '4' )"); + } + // 当登录用户的角色为审计管理员 + if (roleList.stream().anyMatch(role -> role.getRoletype().equals("4"))) { + sql.append("and (up.usertype = '1' or up.usertype = '5' )"); + } + // sql.append("and up.usertype = :usertype"); + // params.put("usertype", currentUserService.getCurrentUser().getUserType()); + } else { + if (!logShowAll) { + if ("2".equals(sysUser.getUserType())) { + // 行政区管理员 + sql.append(" and exists (select 1 from sysorg so where so.orgid=up.orgid and so.regioncode='" + sysUser.getAreaId() + "')"); + } else if ("3".equals(sysUser.getUserType())) { + // 机构管理员 + sql.append(" and up.orgid='" + sysUser.getOrgId() + "' "); + } else if ("4".equals(sysUser.getUserType())) { + // 业务操作员,无可查看数据 + PageInfo pageInfo = new PageInfo(); + pageInfo.setTotal(Long.parseLong("0")); + pageInfo.setData(new ArrayList<>()); + return pageInfo; + } + } + } + if (!ObjectUtils.isEmpty(queryDTO.getLogonname())) { + sql.append(" and up.logonname like :logonname"); + params.put("logonname", "%" + queryDTO.getLogonname() + "%"); + } + if (!ObjectUtils.isEmpty(queryDTO.getDisplayname())) { + sql.append(" and up.displayname like :displayname"); + params.put("displayname", "%" + queryDTO.getDisplayname() + "%"); + } + if (queryDTO.getOpDate()!=null&&!"".equals(queryDTO.getOpDate())){ + String [] opDate = queryDTO.getOpDate().split(","); + SimpleDateFormat st =new SimpleDateFormat("yyyy-MM-dd"); + sql.append(" and to_date(to_char(dp.logontime,'YYYY-MM-DD'),'YYYY-MM-DD') between to_date(:startTime,'YYYY-MM-DD') and to_date(:endTime,'YYYY-MM-DD')"); + try { + params.put("startTime",st.format(st.parse(opDate[0]))); + params.put("endTime",st.format(st.parse(opDate[1]))); + } catch (ParseException e) { + log.error(e.getMessage(), e); + } + + } + sql.append(" order by dp.logontime desc"); + JdbcPageHelper pageHelper = new JdbcPageHelper(jdbcTemplate, page, size, "grid", SysFunctionManager.getFunctionId()); + PageInfo pageInfo = pageHelper.queryPagination(sql.toString(), params, rs -> { + SysLogonLogDTO dto = new SysLogonLogDTO(); + dto.setUserid(rs.getString("userid")); + String logonname = rs.getString("logonname"); + if (ObjectUtils.isEmpty(logonname) && dto.getUserid().startsWith("NE:")) { + dto.setLogonname(dto.getUserid().substring(3)); + } else { + dto.setLogonname(logonname); + } + dto.setDisplayname(rs.getString("displayname")); + dto.setLogonip(rs.getString("logonip")); + dto.setSessionid(rs.getString("sessionid")); + dto.setFailreason(rs.getString("failreason")); + dto.setLogontime(rs.getTimestamp("logontime")); + dto.setLogofftime(rs.getTimestamp("logofftime")); + dto.setLogoffreason(rs.getString("logoffreason")); + dto.setSuccessflag(rs.getString("successflag")); + dto.setBrowser(rs.getString("browser")); + dto.setOs(rs.getString("os")); + return dto; + }); + return pageInfo; + } + + @Override + public List getLastLoginTime(String userId) { + return sysLogonLogRepository.findListByPage(userId, PageRequest.of(0, 2)); +// StringBuffer sql = new StringBuffer("select * from ( SELECT s.* FROM SYSLOGONLOG s where s.USERID=? and s.SUCCESSFLAG = '1' ORDER BY s.LOGONTIME desc) where rownum<=2"); +// List> maps = jdbcTemplate.queryForList(sql.toString(), new Object[]{userId}); +// return maps; + } +} + + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/util/MybatisCodeGenerator.java b/template/insiis-web/src/main/java/com/insigma/sys/util/MybatisCodeGenerator.java new file mode 100644 index 0000000..4383b69 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/util/MybatisCodeGenerator.java @@ -0,0 +1,85 @@ +package com.insigma.sys.util; + +import com.baomidou.mybatisplus.generator.FastAutoGenerator; +import com.baomidou.mybatisplus.generator.config.*; + +import java.sql.SQLException; + +/** + * mybatis-plus代码生成工具 + * + * @author yinjh + * @date 2022/10/14 + */ +public class MybatisCodeGenerator { + + /** + * 数据源配置 + */ + private static final DataSourceConfig.Builder DATA_SOURCE_CONFIG = new DataSourceConfig + .Builder("jdbc:mysql://192.168.70.10:3306/insiis7?useSSL=false", + "root", + "mysql2019"); + + /** + * 执行 run + */ + public static void main(String[] args) throws SQLException { + // 初始化数据库脚本 + FastAutoGenerator.create(DATA_SOURCE_CONFIG) + // 全局配置 + .globalConfig((scanner, builder) -> builder.author(scanner.apply("请输入作者名称"))) + // 包配置 + .packageConfig((scanner, builder) -> builder.parent(scanner.apply("请输入包名"))) + // 策略配置 + .strategyConfig((scanner, builder) -> builder.addInclude(scanner.apply("请输入表名,多个表名用,隔开"))) + /* + 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker 或 Enjoy + .templateEngine(new BeetlTemplateEngine()) + .templateEngine(new FreemarkerTemplateEngine()) + .templateEngine(new EnjoyTemplateEngine()) + */ + .execute(); + } + + /** + * 策略配置 + */ + protected static StrategyConfig.Builder strategyConfig() { + return new StrategyConfig.Builder(); + } + + /** + * 全局配置 + */ + protected static GlobalConfig.Builder globalConfig() { + return new GlobalConfig.Builder(); + } + + /** + * 包配置 + */ + protected static PackageConfig.Builder packageConfig() { + return new PackageConfig.Builder(); + } + + /** + * 模板配置 + */ + protected static TemplateConfig.Builder templateConfig() { + return new TemplateConfig.Builder(); + } + + /** + * 注入配置 + */ + protected static InjectionConfig.Builder injectionConfig() { + // 测试自定义输出文件之前注入操作,该操作再执行生成代码前 debug 查看 + return new InjectionConfig.Builder().beforeOutputFile((tableInfo, objectMap) -> { + System.out.println("tableInfo: " + tableInfo.getEntityName() + " objectMap: " + objectMap.size()); + }); + } + +} + + diff --git a/template/insiis-web/src/main/java/com/insigma/sys/util/SysHashUtil.java b/template/insiis-web/src/main/java/com/insigma/sys/util/SysHashUtil.java new file mode 100644 index 0000000..d7aee10 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/util/SysHashUtil.java @@ -0,0 +1,37 @@ +package com.insigma.sys.util; + +import com.insigma.framework.util.SysUtils; +import com.insigma.sys.entity.SysUser; +import com.insigma.sys.service.SysHashService; +import com.insigma.sys.service.SysUserService; + +import java.util.List; + +/** + * @author yinjh + * @version 2021/8/19 + */ +public class SysHashUtil { + + /** + * 重新计算所有用户的hash + */ + public static void reComputeAllUserHash() { + SysUserService sysUserService = SysUtils.getBean(SysUserService.class); + List list = sysUserService.queryAllUser(); + SysHashService sysHashService = SysUtils.getBean(SysHashService.class); + sysHashService.saveAllHash(list); + } + + /** + * 重新计算指定用户的hash + * @param logonName + */ + public static void reComputeUserHash(String logonName) { + SysUserService sysUserService = SysUtils.getBean(SysUserService.class); + SysUser sysUser = sysUserService.findUserByLogonName(logonName); + SysHashService sysHashService = SysUtils.getBean(SysHashService.class); + sysHashService.saveHash(sysUser); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/util/SysSessionUtil.java b/template/insiis-web/src/main/java/com/insigma/sys/util/SysSessionUtil.java new file mode 100644 index 0000000..fa380f4 --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/util/SysSessionUtil.java @@ -0,0 +1,42 @@ +package com.insigma.sys.util; + +import com.insigma.framework.exception.UserNoLoginException; +import com.insigma.framework.util.SysUtils; +import com.insigma.sys.service.SysWarningLogService; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +/** + * 会话工具类 + * + * @author yinjh + * @version 2021/10/9 + */ +public class SysSessionUtil { + + /** + * 清除会话 + * @param warningLogMsg 告警内容 + */ + public static void clear(String warningLogMsg) { + clear(warningLogMsg, "输入异常,请重新登录!"); + } + + /** + * 清除会话 + * @param warningLogMsg 告警内容 + * @param throwMsg 异常信息 + */ + public static void clear(String warningLogMsg, String throwMsg) { + // 记录告警日志 + SysWarningLogService sysWarningLogService = SysUtils.getBean(SysWarningLogService.class); + sysWarningLogService.saveLog(warningLogMsg); + // 清除会话 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + request.getSession().invalidate(); + throw new UserNoLoginException(throwMsg); + } + +} diff --git a/template/insiis-web/src/main/java/com/insigma/sys/util/WordUtil.java b/template/insiis-web/src/main/java/com/insigma/sys/util/WordUtil.java new file mode 100644 index 0000000..1cce3ae --- /dev/null +++ b/template/insiis-web/src/main/java/com/insigma/sys/util/WordUtil.java @@ -0,0 +1,71 @@ +package com.insigma.sys.util; + + +import freemarker.template.Configuration; +import freemarker.template.Template; + +import java.io.*; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + + +/** + * @author GH + * @ClassName: WordUtil + * @Description: + * @date 2022/3/22 11:12 + */ +public class WordUtil { + + + //读取配置文件 + private static Configuration configuration = null; + private static Map allTemplate = null; + private static final String TEMPLATE_PATH = "/templates"; // 模板加载路径 + + + static { + configuration = new Configuration(Configuration.VERSION_2_3_22); + //设置编码 + configuration.setDefaultEncoding("UTF-8"); + //按照路径加载模板 + configuration.setClassForTemplateLoading(WordUtil.class, TEMPLATE_PATH); + //存储模板 + allTemplate = new HashMap(); + try { + //按照指定编码读取文档报告模板 + allTemplate.put("monReportTemplet", configuration.getTemplate("monReportTemplate.ftl", "UTF-8")); + } catch (IOException e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + } + + /** + * 创建doc文档 + * + * @param dataMap + * @param type + * @return + */ + public static File createDoc(Map dataMap, String type) { + //文件名 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + String name = "temp_" + sdf.format(new Date()) + ".doc"; + File file = new File(name); + //获取模板 + Template t = allTemplate.get(type); + //这个地方不能使用FileWriter因为需要指定编码类型否则声场的word文档会因为有无法识别的编码而无法打开 + try (FileOutputStream fileOutputStream = new FileOutputStream(file); + Writer w = new OutputStreamWriter(fileOutputStream, "UTF-8")) { + t.process(dataMap, w); + w.flush(); + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e); + } + return file; + } +} diff --git a/template/insiis-web/src/main/java/com/vs/FailData.java b/template/insiis-web/src/main/java/com/vs/FailData.java new file mode 100644 index 0000000..2bce45a --- /dev/null +++ b/template/insiis-web/src/main/java/com/vs/FailData.java @@ -0,0 +1,43 @@ +package com.vs; + +/** + * 对异常返回值的封装 + */ +public class FailData { + private int code = 500; + private String message; + private String debugInfo; + private Object data; + + public int getCode() { + return code; + } + + public void setCode(int code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public String getDebugInfo() { + return debugInfo; + } + + public void setDebugInfo(String debugInfo) { + this.debugInfo = debugInfo; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } +} diff --git a/template/insiis-web/src/main/java/com/vs/ResponseJsonExceptionResolver.java b/template/insiis-web/src/main/java/com/vs/ResponseJsonExceptionResolver.java new file mode 100644 index 0000000..6b890a5 --- /dev/null +++ b/template/insiis-web/src/main/java/com/vs/ResponseJsonExceptionResolver.java @@ -0,0 +1,108 @@ +package com.vs; + +import com.vs.ox.common.exception.ErrorCode; +import com.vs.ox.common.exception.IgnoredException; +import com.vs.ox.common.utils.ObjectMapperFactory; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.core.Ordered; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.server.ServletServerHttpResponse; +import org.springframework.web.servlet.ModelAndView; +import org.springframework.web.servlet.handler.AbstractHandlerExceptionResolver; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Path; +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +@Slf4j +public class ResponseJsonExceptionResolver extends AbstractHandlerExceptionResolver implements InitializingBean { + private HttpMessageConverter messageConverter; + + public ResponseJsonExceptionResolver() { + } + + @Override + public void afterPropertiesSet() throws Exception { + if (messageConverter == null) { + messageConverter = new MappingJackson2HttpMessageConverter(ObjectMapperFactory.getDefaultObjectMapper()); + } + } + + public static String getErrorInfoFromException(Exception e) { + try { + StringWriter sw = new StringWriter(); + PrintWriter pw = new PrintWriter(sw); + e.printStackTrace(pw); + return "\r\n" + sw.toString() + "\r\n"; + } catch (Exception e2) { + return "bad getErrorInfoFromException"; + } + } + + @Override + protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { + /** + * web请求分页单独处理,应对antd框架 + */ + FailData failData = new FailData(); + failData.setMessage(ex.getMessage()); + if (ex instanceof IgnoredException) { + IgnoredException realEx = (IgnoredException) ex; + failData.setCode(realEx.getErrorCode()); + failData.setData(realEx.getData()); + log.error("execute {} failed with exception", request.getRequestURL(), ex); + } else if (ex instanceof ConstraintViolationException) { + failData.setCode(ErrorCode.WRONG_PARAMETER); + failData.setMessage(getMessage((ConstraintViolationException) ex)); + } else if (ex instanceof ErrorCode) { + failData.setCode(((ErrorCode) ex).getErrorCode()); + } else { + log.error("execute {} failed with exception", request.getRequestURL(), ex); + } + try { + response.setCharacterEncoding("utf-8"); + messageConverter.write(failData, MediaType.APPLICATION_JSON, new ServletServerHttpResponse(response)); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + return new ModelAndView(); + } + + @Override + public int getOrder() { + return Ordered.LOWEST_PRECEDENCE; + } + + public static String getMessage(ConstraintViolationException e) { + List msgList = new ArrayList<>(); + for (ConstraintViolation constraintViolation : e.getConstraintViolations()) { + int i = 0; + StringBuilder param = new StringBuilder(); + for (Iterator iterator = constraintViolation.getPropertyPath().iterator(); iterator.hasNext(); i++) { + Path.Node node = iterator.next(); + if (i == 0) { + continue; + } + if (!param.toString().isBlank()) { + param.append("."); + } + param.append(node.getName()); + } + msgList.add("参数 [ " + param + " ] " + constraintViolation.getMessage()); + } + return StringUtils.join(msgList.toArray(), ";"); + } + +} diff --git a/template/insiis-web/src/main/java/com/vs/ResponseJsonMethodReturnValueHandler.java b/template/insiis-web/src/main/java/com/vs/ResponseJsonMethodReturnValueHandler.java new file mode 100644 index 0000000..aa835f8 --- /dev/null +++ b/template/insiis-web/src/main/java/com/vs/ResponseJsonMethodReturnValueHandler.java @@ -0,0 +1,48 @@ +package com.vs; + +import com.vs.ox.common.utils.ObjectMapperFactory; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.core.MethodParameter; +import org.springframework.http.MediaType; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; +import org.springframework.http.server.ServletServerHttpResponse; +import org.springframework.web.context.request.NativeWebRequest; +import org.springframework.web.method.support.HandlerMethodReturnValueHandler; +import org.springframework.web.method.support.ModelAndViewContainer; + +import javax.servlet.http.HttpServletResponse; +import java.util.Collections; + +/** + * 处理 Controller 里的返回值,从 Object转为Json + */ +public class ResponseJsonMethodReturnValueHandler implements HandlerMethodReturnValueHandler, InitializingBean { + private HttpMessageConverter messageConverter; + + @Override + public void afterPropertiesSet() { + if (messageConverter == null) { + messageConverter = new MappingJackson2HttpMessageConverter(ObjectMapperFactory.getDefaultObjectMapper()); + } + } + + @Override + public boolean supportsReturnType(MethodParameter returnType) { + return true; + } + + @Override + public void handleReturnValue(Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception { + mavContainer.setRequestHandled(true); + Object result = returnValue; + /** + * Web分页请求的返回按照antd框架要求的格式,不转为SuccessData + */ + result = result == null ? new SuccessData(Collections.emptyMap()) : new SuccessData(returnValue); + ServletServerHttpResponse response = new ServletServerHttpResponse(webRequest.getNativeResponse(HttpServletResponse.class)); + messageConverter.write(result, new MediaType(MediaType.APPLICATION_JSON, Collections.singletonMap("charset", "utf-8")), response); + } + + +} diff --git a/template/insiis-web/src/main/java/com/vs/SuccessData.java b/template/insiis-web/src/main/java/com/vs/SuccessData.java new file mode 100644 index 0000000..59e31c7 --- /dev/null +++ b/template/insiis-web/src/main/java/com/vs/SuccessData.java @@ -0,0 +1,30 @@ +package com.vs; + +public class SuccessData { + private final int code = 200; + private Object data; + private String message = ""; + public SuccessData(Object data){ + this.data = data; + } + + public int getCode() { + return code; + } + + public Object getData() { + return data; + } + + public void setData(Object data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/template/insiis-web/src/main/java/com/vs/VSResponseHandlerConfig.java b/template/insiis-web/src/main/java/com/vs/VSResponseHandlerConfig.java new file mode 100644 index 0000000..e83c0cd --- /dev/null +++ b/template/insiis-web/src/main/java/com/vs/VSResponseHandlerConfig.java @@ -0,0 +1,48 @@ +package com.vs; + +import com.vs.common.util.rpc.handler.CustomArgumentResolver; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.method.support.HandlerMethodArgumentResolver; +import org.springframework.web.method.support.HandlerMethodReturnValueHandler; +import org.springframework.web.servlet.HandlerExceptionResolver; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.util.List; + +@Configuration +public class VSResponseHandlerConfig implements WebMvcConfigurer { + + @Value("${com.toco.response.handler:true}") + private boolean useHandler; + + @Override + public void addArgumentResolvers(List resolvers) { + resolvers.add(new CustomArgumentResolver()); + } + + @Override + public void extendHandlerExceptionResolvers(List exceptionResolvers) { + if (!useHandler) { + return; + } + ResponseJsonExceptionResolver responseJsonExceptionResolver = new ResponseJsonExceptionResolver(); + try { + responseJsonExceptionResolver.afterPropertiesSet(); + } catch (Exception e) { + e.printStackTrace(); + } + exceptionResolvers.add(responseJsonExceptionResolver); + } + + @Override + public void addReturnValueHandlers(List returnValueHandlers) { + if (!useHandler) { + return; + } + ResponseJsonMethodReturnValueHandler responseJsonMethodReturnValueHandler = new ResponseJsonMethodReturnValueHandler(); + responseJsonMethodReturnValueHandler.afterPropertiesSet(); + returnValueHandlers.add(responseJsonMethodReturnValueHandler); + } + +} diff --git a/template/insiis-web/src/main/resources/META-INF/spring-autoconfigure-metadata.properties b/template/insiis-web/src/main/resources/META-INF/spring-autoconfigure-metadata.properties new file mode 100644 index 0000000..6c92314 --- /dev/null +++ b/template/insiis-web/src/main/resources/META-INF/spring-autoconfigure-metadata.properties @@ -0,0 +1,2 @@ +com.insigma.EnableDynamicDataSourceConfig= +com.insigma.EnableDynamicDataSourceConfig.AutoConfigureAfter=com.ulisesbocchio.jasyptspringboot.JasyptSpringBootAutoConfiguration diff --git a/template/insiis-web/src/main/resources/application-async.properties b/template/insiis-web/src/main/resources/application-async.properties new file mode 100644 index 0000000..921752c --- /dev/null +++ b/template/insiis-web/src/main/resources/application-async.properties @@ -0,0 +1,10 @@ +# 线程池核心线程数(设置为0时,使用CPU核心数作为核心线程池线程数) +odin.async.core-pool-size=2 +# 线程池缓冲队列最大长度 +odin.async.queue-capacity=200 +# 线程池维护线程所允许的空闲时间 +odin.async.keep-alive-seconds=60 +# 线程池最大线程数 +odin.async.max-pool-size=10 +# 线程名前缀 +odin.async.thread-name-prefix=asyncExecutor- diff --git a/template/insiis-web/src/main/resources/application-datasource.properties b/template/insiis-web/src/main/resources/application-datasource.properties new file mode 100644 index 0000000..0acea8e --- /dev/null +++ b/template/insiis-web/src/main/resources/application-datasource.properties @@ -0,0 +1,40 @@ +# 数据库配置 +#datasource +spring.datasource.url=jdbc:{{ .dbType }}://${DB_HOST:{{ .db_address }}}/${DB_DATABASE:{{ .db_database }}}?characterEncoding=utf-8&serverTimezone=Asia/Shanghai +spring.datasource.username=${DB_USER:{{ .db_username }}} +spring.datasource.password=${DB_PASSWORD:{{ .db_password }}} +spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource + +# Druid Data Source Config +#spring.datasource.driver-class-name=oracle.jdbc.OracleDriver +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver + +spring.datasource.druid.initial-size=5 +spring.datasource.druid.max-active=20 +spring.datasource.druid.min-idle=5 +spring.datasource.druid.max-wait=60000 +spring.datasource.druid.filter.stat.enabled=true +spring.datasource.druid.filter.stat.merge-sql=true +spring.datasource.druid.filter.stat.slow-sql-millis=5000 +spring.datasource.druid.web-stat-filter.enabled=true + +spring.datasource.druid.filter.wall.enabled=true +spring.datasource.druid.filter.wall.config.multi-statement-allow=true +spring.datasource.druid.filter.slf4j.enabled=true +spring.datasource.druid.filter.slf4j.statement-executable-sql-log-enable=true +spring.datasource.druid.filter.slf4j.data-source-log-enabled=false +spring.datasource.druid.filter.slf4j.connection-log-enabled=false +spring.datasource.druid.filter.slf4j.statement-log-enabled=false +spring.datasource.druid.filter.slf4j.result-set-log-enabled=false +#spring.datasource.druid.validation-query=select 1 from dual +#spring.datasource.druid.validation-query-timeout=30 +#spring.datasource.druid.test-on-borrow=true +#spring.datasource.druid.remove-abandoned=true +#spring.datasource.druid.remove-abandoned-timeout=90 +#spring.datasource.druid.log-abandoned=true + +spring.datasource.druid.stat-view-servlet.enabled=true +spring.datasource.druid.stat-view-servlet.login-username=admin +spring.datasource.druid.stat-view-servlet.login-password=admin + +#spring.datasource.druid.default-auto-commit=false diff --git a/template/insiis-web/src/main/resources/application-eps.properties b/template/insiis-web/src/main/resources/application-eps.properties new file mode 100644 index 0000000..bf27d6a --- /dev/null +++ b/template/insiis-web/src/main/resources/application-eps.properties @@ -0,0 +1,12 @@ +# 微服务网关配置 +#cloud_gateway_url=http://192.168.190.153:20080/ +#service.reg.url=http://192.168.70.23:28082/api/register + +# ⽹关地址 +eps.gateway.url=http://192.168.190.153:20080/ +# 渠道应⽤id +eps.gateway.appid=develop +# 渠道私钥 +eps.gateway.private-key=MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2pQX50cLsQPTuhLxb8NXjpcVE33Ipz1KbXaKSd9+zarMfd5WudEcivpkqzzHV/nFSUA7zPq5BJXNv/OJDmqpqUv7Zy4tDcDjeoF9nfDqlCkNjx+iL2avSiaXcMej2FhAa1ZmThtFanaReKKLg941iX/N6UKbIuM2y5pK5FwWlu0yLJy1cGuatBYcPJ5rpeFTm4k6YOD7ZeDisHxp+x9rgq33EtrydBJjxw4znKUaUOw/mcjGBfgIgspQSSsxr+9hIT/VH7tUECHl89LY63j4DPIR5LetF4Z9uVSBbj8MmYUCPynHUrP5g4FEDJX4f2LsZ2P2yh+BStt1DF238DwxdAgMBAAECggEANWtOtCKFwFO/T4PDE6D87fguGlbALTpWDtr0EaK96tvqR+nR/ZREugTFB6BSEyS4QDrqJHrQvH0XpklwZBV4gmCD6W9+69qGx5ZgUQQkouC9lRGDEmQ3vPxFZoGygUcyrqaKpHtp//bbfC6mdOXylDM8IyozncFvaEPH5hq1rCL9S/doCckTJyUSCZnmV8w5xSETDBY63GMENerxlHjKy7Z63UKUprh0fmpBrW76kC+4G/dRldI3wufeeFnXUN+hwN/vAhlbc5CK7X0qkExemuXjFKBfKlJa/ipXOHY+wC+bMgu+81K/Se786CevmkyF87sM4wX7tOj0AXREObsMAQKBgQDglVvzJw9QhK8nCskqF9OsEixk4Tim8fn6YToSPk1efDwzExFjj/Oywoorra0l5+nES32pO0lXBe7Cjj6V6cInluJz8FddHg24QLRvmdX5fRRg8pHBtKWXgYMm6U7MtKEFLB6x9g6quFziozvLIPs+HQD4uIApBFwVWIZsiVzO9QKBgQDQMccdIShDB4h4LoUehpqYW9TJ6buMHcxyGYsuuUnGRMqpvF1PGNuKa4BSzf2EQ3juR9ZvT46p97mK/s7jdD4kgYntcR9oVxMitDyJHs2EiKk79a6z5TGz8CsCz6t/VVombPsD1dWjMfBSSTNRhtLM53YkM3lqcjE0wkhGfxmWyQKBgG4jUXCxmyUVrQAsnfLytHASiYr/mNTmnn1X6S7BNxg7PRqfI0v8cLseBLze86c/ULlffETeOl1fH3RyZecHOJxJtsy89VtJPdk6gkKo4vLzkGbrDug8O2lNrpAKowZpHv52YKdN0GuQ9px/CPfZON2BQ9S2RsPWy4H8ZBAeXVFxAoGBALLPPeMf2jOPob8OvVhVZSucG2r7aw/RfAk3NRoBG4LFDIaxeDZ58/yzjbgQoT9ar99/JYXef3otgFcHt+sUqFa0RyD+emoj9xRkVmWyZfMBaNBNlyl8nK6dhGNat0Gard241fIaUu1h87TIl+HaeOxxkz9OUmaBAw/8GRUrDnA5AoGAEcGxoKtd5SlyMFH4JiWPlG29nAo4DyggwvUZu1GfXoI6ki0ztWTLJBQTdeVGBHT+8RoNSlfn+deOLkunukYC8vOqxkNkVTDEJlnYofD9DNes6vuvIF/gLMdjylsNVOtgmOoozCa6BkTipm2JEp4+ZQIgVOBL3nfsW9jCyrqRZI0= +# 渠道公钥 +eps.gateway.public-key=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAswvVxOlvzWmcex40W3S8y3a1VphIohUOQ9WI1DZL8/l6rSHF9Mi4NmtP9yRnrwH5bO2duOREY7ZmH1sNloouUWniKMt+5Rnkz98HxcP/VxfLI8ZZQxQTFEqWoR/ESjOplZP74DeT7mHaY8+CWeOnGKC8jMaHE8fgDV7dHEMQdM9+kGJ61k0AxDkCdXTNk8/MHSAOzstIIPOKpKHi+YsV9AS1+ZAcJQbdCMD4Uo6EdzqTjRtvxQds9xzyB3fwQIhM5LspRyXutuWEWFPLvX0KsBKzY1XJoPSlhedcEgImaUX2wgPlnBKG+JN8/r1r+G9RpK68PHhqObNnmYBOMXOnMQIDAQAB diff --git a/template/insiis-web/src/main/resources/application-eureka.properties b/template/insiis-web/src/main/resources/application-eureka.properties new file mode 100644 index 0000000..b818de7 --- /dev/null +++ b/template/insiis-web/src/main/resources/application-eureka.properties @@ -0,0 +1,11 @@ +# eureka注册中心 +eureka.client.serviceUrl.defaultZone=http://192.168.70.10:19001/eureka/ +eureka.instance.instance-id=${spring.application.name}:${server.port} +eureka.instance.prefer-ip-address=true +eureka.client.enabled=false + +# default context 连接超时时间 +feign.client.config.default.connectTimeout = 5000 +# default context 读超时时间 +feign.client.config.default.readTimeout = 30000 + diff --git a/template/insiis-web/src/main/resources/application-mybatis.properties b/template/insiis-web/src/main/resources/application-mybatis.properties new file mode 100644 index 0000000..c5a58d5 --- /dev/null +++ b/template/insiis-web/src/main/resources/application-mybatis.properties @@ -0,0 +1,11 @@ +# mybatis-plus config +mybatis-plus.mapper-locations=classpath*:mapper/com/insigma/**/*DAO.xml +#mybatis-plus.type-aliases-package=com.insigma.**.entity +mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl +# 关闭sql日志输出 +#mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.nologging.NoLoggingImpl +mybatis-plus.configuration.call-setters-on-nulls=true +mybatis-plus.configuration.cache-enabled=true +mybatis-plus.configuration.map-underscore-to-camel-case=true +mybatis-plus.configuration.jdbc-type-for-null=null +mybatis-plus.auto-refresh=false diff --git a/template/insiis-web/src/main/resources/application-quartz.properties b/template/insiis-web/src/main/resources/application-quartz.properties new file mode 100644 index 0000000..bb2e634 --- /dev/null +++ b/template/insiis-web/src/main/resources/application-quartz.properties @@ -0,0 +1,19 @@ +spring.quartz.properties.org.quartz.scheduler.instanceName=EPScheduler +spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO + +spring.quartz.properties.org.quartz.jobStore.class=org.springframework.scheduling.quartz.LocalDataSourceJobStore +#spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate +#spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate +spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate +spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ +spring.quartz.properties.org.quartz.jobStore.isClustered=true +spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=10000 +spring.quartz.properties.org.quartz.jobStore.useProperties=false + +spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool +spring.quartz.properties.org.quartz.threadPool.threadCount=10 +spring.quartz.properties.org.quartz.threadPool.threadPriority=5 +spring.quartz.properties.org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true + +spring.quartz.jdbc.initialize-schema=never +spring.quartz.job-store-type=jdbc diff --git a/template/insiis-web/src/main/resources/application-redis.properties b/template/insiis-web/src/main/resources/application-redis.properties new file mode 100644 index 0000000..669abdf --- /dev/null +++ b/template/insiis-web/src/main/resources/application-redis.properties @@ -0,0 +1,36 @@ +# Redis +# Redis服务器地址(集群需要注释) +spring.redis.host=redis.byteawake.com +# Redis服务器连接端口(集群需要注释) +spring.redis.port=6379 +# Redis服务器连接密码(默认为空) +spring.redis.password= +# redis cluster +# redis集群节点(单机版需要注释) +#spring.redis.cluster.nodes=127.0.0.1:6380,127.0.0.1:6381,127.0.0.1:6382 +# 在群集中执行命令时要遵循的最大重定向数目(单机版需要注释) +#spring.redis.cluster.max-redirects=3 + +# Redis Session配置 +# 命名空间(不同系统使用同一个redis服务器时,需要保持不同) +spring.redis.session.namespace=spring:session:${spring.application.name} +# 超时时间(单位:秒) +spring.redis.session.timeout=3600 + +# redis config +# Redis数据库索引(默认为0) +spring.redis.database=0 +# 连接超时时间(毫秒) +spring.redis.timeout=10000ms + +# Lettuce(springboot2以后推荐使用的redis连接池) +# 连接池最大连接数(使用负值表示没有限制) +spring.redis.lettuce.pool.max-active=8 +# 连接池最大阻塞等待时间(使用负值表示没有限制) +spring.redis.lettuce.pool.max-wait=10000ms +# 连接池中的最大空闲连接 +spring.redis.lettuce.pool.max-idle=8 +# 连接池中的最小空闲连接 +spring.redis.lettuce.pool.min-idle=0 +# 关闭超时时间 +spring.redis.lettuce.shutdown-timeout=100ms diff --git a/template/insiis-web/src/main/resources/application-security.properties b/template/insiis-web/src/main/resources/application-security.properties new file mode 100644 index 0000000..2a83a8d --- /dev/null +++ b/template/insiis-web/src/main/resources/application-security.properties @@ -0,0 +1,37 @@ +# security +# cors信任站点 +odin.security.cors.origins=http://localhost:8089,http://localhost:8090 +# 免登录请求 +odin.security.free.requests=/sso/login,/check/login,/favicon.ico,/twoFactorEnabled +odin.security.free.like-requests=/** +# 登录之后才能访问的请求 +odin.security.free.requests-after-login=/sys/guide/Guide/**,/sys/user/getUserSlevel,/sys/downloadcenter/DownloadCenter/** +# 请求防重复提交 +odin.security.repeat.enable=true +# 是否开启验证码校验 +odin.security.validatecode.enable=true +# 验证码类型 0: 简单验证码(默认),1:滑块验证码,2:点触验证码,3:旋转验证码,4:躲避障碍验证码 +odin.security.validatecode.type=0 +#odin.security.cache.enable=true +# 用户最大登录失败次数,超过将锁定账户 +#odin.security.maxFailTime=5 +# 同一用户最大同时登录数 +#odin.security.sessions.concurrent-max-sessions=1 +# 防SQL注入 +odin.safety.sql.enabled=true +odin.safety.sql.allowUrls=/sys/message/manage/save,/sys/sysFunctionDoc/doSave,/business/eptag/config/save +#odin.safety.sql.badstr=exec | and |execute |insert |select |delete |update |count(|drop |master |truncate |char |declare |sitename |net user |xp_cmdshell |like'|create | table|from |grant | use |group_concat(|column_name |information_schema.columns|table_schema |union |where | or |like |(+)|-- + +# 防XSS攻击 +odin.safety.script.enabled=true +odin.safety.script.allowUrls=/sys/message/manage/save,/sys/sysFunctionDoc/doSave,/business/eptag/config/save, +#odin.safety.script.badstr= + + + + + + + + + + + + + + + + + + + + + + + + + + + ${CONSOLE_LOG_PATTERN} + ${CONSOLE_LOG_CHARSET} + + + + + + + + ${FILE_LOG_PATTERN} + ${FILE_LOG_CHARSET} + + ${LOG_FILE} + + + ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz + + 30 + + 100MB + + + + + + ERROR + DENY + ACCEPT + + + ${FILE_LOG_PATTERN} + ${FILE_LOG_CHARSET} + + ${ERROR_LOG_FILE} + + + ${ERROR_LOG_FILE}.%d{yyyy-MM-dd}.%i.gz + + 30 + + 100MB + + + + + 0 + 2048 + false + + + + + 0 + 2048 + false + + + + + + + + diff --git a/template/insiis-web/src/main/resources/mapper/com/insigma/business/demo/DemoPersonDAO.xml b/template/insiis-web/src/main/resources/mapper/com/insigma/business/demo/DemoPersonDAO.xml new file mode 100644 index 0000000..a16ac9a --- /dev/null +++ b/template/insiis-web/src/main/resources/mapper/com/insigma/business/demo/DemoPersonDAO.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/template/insiis-web/src/main/resources/static/odin-base.jar b/template/insiis-web/src/main/resources/static/odin-base.jar new file mode 100644 index 0000000..0f7264c Binary files /dev/null and b/template/insiis-web/src/main/resources/static/odin-base.jar differ diff --git a/template/insiis-web/src/main/resources/static/prd.desc b/template/insiis-web/src/main/resources/static/prd.desc new file mode 100644 index 0000000..110e7fb --- /dev/null +++ b/template/insiis-web/src/main/resources/static/prd.desc @@ -0,0 +1,5 @@ +{ + "frame": "Odin7C", + "version": "2.6.5", + "enc": "80EA7D6CC83C4679C03EAA7001C256C9" +} \ No newline at end of file diff --git a/template/insiis-web/src/main/resources/templates/blo.java.ftl b/template/insiis-web/src/main/resources/templates/blo.java.ftl new file mode 100644 index 0000000..6cb6b57 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/blo.java.ftl @@ -0,0 +1,15 @@ +package ${cfg.bloPath}; + +import org.mohrss.leaf.core.framework.domain.blo.IBLO; +/** +*

+* ${table.comment!} 服务类 +*

+* +* @author ${author} +* @since ${date} +*/ + +public interface ${entity}BLO extends IBLO { + +} diff --git a/template/insiis-web/src/main/resources/templates/bloImpl.java.ftl b/template/insiis-web/src/main/resources/templates/bloImpl.java.ftl new file mode 100644 index 0000000..f3d6663 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/bloImpl.java.ftl @@ -0,0 +1,23 @@ +package ${cfg.bloPath}.impl; + +import ${package.Mapper}.${table.mapperName}; +import ${cfg.bloPath}.${entity}BLO; +import org.mohrss.leaf.core.framework.domain.blo.impl.BLOImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** +*

+* ${table.comment!} 服务实现类 +*

+* +* @author ${author} +* @since ${date} +*/ +@Service +public class ${entity}BLOImpl extends BLOImpl implements ${entity}BLO { + + @Autowired + private ${table.mapperName} ${table.mapperName?uncap_first}; + +} \ No newline at end of file diff --git a/template/insiis-web/src/main/resources/templates/bpo.java.ftl b/template/insiis-web/src/main/resources/templates/bpo.java.ftl new file mode 100644 index 0000000..d3579f0 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/bpo.java.ftl @@ -0,0 +1,15 @@ +package ${cfg.bpoPath}; + +import org.mohrss.leaf.core.framework.domain.bpo.IBPO; +/** +*

+* ${table.comment!} 服务类 +*

+* +* @author ${author} +* @since ${date} +*/ + +public interface ${entity}BPO extends IBPO { + +} diff --git a/template/insiis-web/src/main/resources/templates/bpoImpl.java.ftl b/template/insiis-web/src/main/resources/templates/bpoImpl.java.ftl new file mode 100644 index 0000000..2402d83 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/bpoImpl.java.ftl @@ -0,0 +1,24 @@ +package ${cfg.bpoPath}.impl; + +import ${package.Mapper}.${table.mapperName}; +import ${cfg.bloPath}.${entity}BLO; +import ${cfg.bpoPath}.${entity}BPO; +import org.mohrss.leaf.core.framework.domain.bpo.impl.BPOImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** +*

+* ${table.comment!} 服务实现类 +*

+* +* @author ${author} +* @since ${date} +*/ +@Service +public class ${entity}BPOImpl extends BPOImpl implements ${entity}BPO { + + @Autowired + private ${entity}BLO ${entity?uncap_first}BLO; + +} \ No newline at end of file diff --git a/template/insiis-web/src/main/resources/templates/controller.java.ftl b/template/insiis-web/src/main/resources/templates/controller.java.ftl new file mode 100644 index 0000000..fc485c2 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/controller.java.ftl @@ -0,0 +1,79 @@ +package ${package.Controller}; + +import com.insigma.framework.ResponseMessage; +import com.insigma.web.support.annotation.OdinRequest; +import com.insigma.web.support.annotation.OdinRequestParam; +import com.insigma.web.support.controller.BaseController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PathVariable; +import ${package.Service}.${table.serviceName}; + +<#if restControllerStyle> +import org.springframework.web.bind.annotation.RestController; +<#else> +import org.springframework.stereotype.Controller; + + +/** +*

+* ${table.comment!} 前端控制器 +*

+* +* @author ${author} +* @since ${date} +*/ +<#if restControllerStyle> +@RestController +<#else> +@Controller + +@RequestMapping("${cfg.requestMapping}") +public class ${table.controllerName} extends BaseController { + + @Autowired + private ${table.serviceName} ${table.serviceName?uncap_first}; + + /** + * 页面初始化 + */ + @OdinRequest(init = true) + @PostMapping("/doInit") + public ResponseMessage doInit() { + return this.ok(); + } + + /** + * 查询 + */ + @OdinRequest + @PostMapping("/query") + public ResponseMessage query() { + this.set("page", 1); // 需要将前端ep-table中:currentPage定义的值设置成1 + return this.ok(); + } + + /** + * 分页查询 + */ + @OdinRequest + @PostMapping("/doGridQuery/{name}") + public ResponseMessage doGridQuery(@OdinRequestParam("t_tableData_page") Integer page, + @OdinRequestParam("t_tableData_size") Integer size, + @PathVariable String name) { + this.set("page", page); // 需要将t_tableData_page的值赋值到前端ep-table表格:currentPage的值中 + return this.ok(); + } + + /** + * 保存 + */ + @OdinRequest(refresh = true) + @PostMapping("/doSave/{name}") + public ResponseMessage doSave(@PathVariable String name) { + //this.refresh(); // 可以通过@OdinRequest(refresh = true)刷新,也可以手动调用this.refresh();来刷新 + return this.ok("保存成功!"); + } + +} diff --git a/template/insiis-web/src/main/resources/templates/mapper.java.ftl b/template/insiis-web/src/main/resources/templates/mapper.java.ftl new file mode 100644 index 0000000..138ca3a --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/mapper.java.ftl @@ -0,0 +1,18 @@ +package ${package.Mapper}; + +import com.insigma.framework.mybatis.BaseDAO; +import ${package.Entity}.${entity}; +import ${superMapperClassPackage}; + +/** +*

+* ${table.comment!} BaseDAO 接口 +*

+* +* @author ${author} +* @since ${date} +*/ +public interface ${table.mapperName} extends BaseDAO<${entity}> { + +} + diff --git a/template/insiis-web/src/main/resources/templates/monReportTemplate.ftl b/template/insiis-web/src/main/resources/templates/monReportTemplate.ftl new file mode 100644 index 0000000..0ae43eb --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/monReportTemplate.ftl @@ -0,0 +1,4381 @@ + + + + + + epsoft + epsoft + 2 + 1 + 2022-03-24T02:38:00Z + 2022-03-24T02:38:00Z + 4 + 225 + 1283 + Insigma + 10 + 3 + 1505 + 16 + + + 2052-0.0.0.0 + 3188E7923005410FAA37074467CEB224 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 磐石技术中台 + + + + + + + + + + - + + + + + + + + + + + 服务端性能监控报告 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 距近 + + + + + + + + ${dates} + + + + + + + + + 日服务端性能监测统计,平台最终得分为 + + + + + + + ${score} + + + + + + + + + + + + + + + + + SQL + + + + + + + ${scoreSlowSql} + + + + + + + + + 分, + + + + + + + + SQL + + + + + + + ${scoreErrorSql} + + + + + + + + + + 分, + + + + + + + + URI + + + + + + + ${scoreSlowUrl} + + + + + + + + + + 分, + + + + + + + + JDBC + + + + + + + ${scoreJdbcErrorUrl} + + + + + + + + + + 分),连接池峰值状态 + + + + + + + ${type} + + + + + + + + + + ,所有 + + + + + + + + SQL + + + + + + + + + 执行平均耗时 + + + + + + + ${sqlAvgTime} + + + + + + + + + + + + + + + + + 秒, + + + + + + + + URI + + + + + + + + + 平均请求耗时 + + + + + + + ${urlAvgTime} + + + + + + + + + + + + + + + + + 秒,总体状态良好。平台中仍存在部分问题, + + + + + + + + + + 现总结 + + + + + + + + + + 如下: + + + + + + + + + + + + + + + + + + + + 执行时间 + + + + + + + + 5s + + + + + + + + + 以上的慢 + + + + + + + + SQL + + + + + + + + + + + + + + + + ${slowSql} + + + + + + + + + + + + + + + + + + + + ,执行过程中出现错误的 + + + + + + + + SQL + + + + + + + + + + + + + + + + ${sqlExecuteError} + + + + + + + + + + + + + + + + + + + + ,发生错误共 + + + + + + + ${sqlExecuteErrorCount} + + + + + + + + + + 次; + + + + + + + + + + + + + + + + + + + + 请求时间 + + + + + + + + 8s + + + + + + + + + 以上的慢 + + + + + + + + URI + + + + + + + + + + + + + + + + ${slowUri} + + + + + + + + + + + + + + + + + + + + ,请求过程中出现 + + + + + + + + JDBC + + + + + + + + + 执行错误的 + + + + + + + + URI + + + + + + + + + + + + + + + + ${jdbcError} + + + + + + + + + + + + + + + + + + + + + ,错误共计 + + + + + + + ${jdbcErrorCount} + + + + + + + + + + 次; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 具体详情请看下方疑似问题分类表。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 生成时间: + + + + + + + ${newDate} + + + <#if sqlList?? && (sqlList?size>0)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + + + + + 监测记录详情 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + 名称 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 执行 + + + + + + + + + + + + + + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 平均耗时 + + + + + + + + + + + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 最慢耗时 + + + + + + + + + + + + + + + + + + + + + s + + + + + + + + + + + + + <#list sqlList as item> + + + + + + + + + + + + + + + + + + + ${item.index} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${item.executeCount} + + + + + + + + + + + + + + + + + + ${item.avgExecutionTime} + + + + + + + + + + + + + + + + + + ${item.maxTimespan} + + + + + + + + <#if uriList?? && (uriList?size>0)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + URI + + + + + + + + + + + 监测记录详情 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + URI + + + + + + + 名称 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 请求次数 + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 平均耗时 + + + + + + + + + + + + + + + + + + + + + s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 最慢耗时 + + + + + + + + + + + + + + + + + + + + + s + + + + + + + + + + + + <#list uriList as item> + + + + + + + + + + + + + + + + + + + ${item.index} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${item.requestCount} + + + + + + + + + + + + + + + + + + + ${item.avgRequestTime} + + + + + + + + + + + + + + + + + + ${item.requestTimeNanoMax} + + + + + + + + + + <#if sqlErrorList?? && (sqlErrorList?size>0)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + + + + + 执行出错监测记录详情 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + 名称 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 执行 + + + + + + + + + + + + + + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误数 + + + + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误率 + + + + + + + + + + + + + + + + + + + + + % + + + + + + + + + + + + <#list sqlErrorList as item> + + + + + + + + + + + + + + + + + + + ${item.index} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${item.executeCount} + + + + + + + + + + + + + + + + + + ${item.errorCount} + + + + + + + + + + + + + + + + + + ${item.sqlErrorRate} + + + + + + + + <#if jdbcErrorList?? && (jdbcErrorList?size>0)> + + + + + + + + + + + URI JDBC + + + + + + + + + + + 出错监测记录详情 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + + + + + + + + URI + + + + + + + 名称 + + + + + + + + + + + + + + + + + + + + + + + + + + + JDBC + + + + + + + 执行数 + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + JDBC + + + + + + + 出错数 + + + + + + + + + + + + + + + (次) + + + + + + + + + + + + + + + + + + + + + + + + + + + + 错误率 + + + + + + + + + + + + + + + + + + + + + % + + + + + + + + + + + + <#list jdbcErrorList as item> + + + + + + + + + + + + + + + + + + + ${item.index} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ${item.jdbcExecuteCount} + + + + + + + + + + + + + + + + + + ${item.jdbcExecuteErrorCount} + + + + + + + + + + + + + + + + + + + ${item.jdbcErrorRate} + + + + + + + + + + + + + + + + + + + + + + + + + + 附件: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 规则说明 + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + 规则名称 + + + + + + + + + + + + + + + 规则定义 + + + + + + + + + + + + + + + + + + + + 序号 + + + + + + + + + + + + + + + + + + + + 规则名称 + + + + + + + + + + + + + + + + + + + + 规则定义 + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + + + + + + + + + 响应时间≥ + + + + + + 5 + + + + + + + 秒。 + + + + + + + + + + + + + + 9 + + + + + + + + + + + + + + SQL + + + + + + + 平均耗时 + + + + + + + + + + + + + + + + + + + + + 1s + + + + + + + 黑; + + + + + + 1~3s + + + + + + + 黄;≥ + + + + + + 3s + + + + + + + + + + + + + + + + + + + + + + + + + + 2 + + + + + + + + + + + + + + + + + + + + + URI + + + + + + + + + + + + + + URI + + + + + + + 响应时间≥ + + + 8 + + + + + + + 秒。 + + + + + + + + + + + + + + 10 + + + + + + + + + + + + + + SQL + + + + + + + 最慢耗时 + + + + + + + + + + + + + + + + + + + + + + + + + + 3s + + + + + + + 黑; + + + + + + 3~5s + + + + + + + 黄;≥ + + + + + + 5s + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + 总分 + + + + + + + + + + + + + + + 满分 + + + + + + 100 + + + + + + + ,按 + + + + + + 4 + + + + + + + 项规则扣分。 + + + + + + + + + + + + + + 11 + + + + + + + + + + + + + + + + 活跃数当前 + + + + + + + + + + + + + + + + ≥最大 + + + + + + + + 活跃数 + + + + + + + 80% + + + + + + + (红) + + + + + + + + + + + + + + + + + + + 4 + + + + + + + + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + 扣分 + + + + + + + + + + + + + + + 满分 + + + + + + 30 + + + + + + + 分,出现一次扣 + + + + + + 1 + + + + + + + 分。 + + + + + + + + + + + + + + 12 + + + + + + + + + + + + + + + + 活跃数 + + + + + + + + 峰值 + + + + + + + + + + + + + + + + + + + + =最大 + + + + + + + + 活跃数 + + + + + + + 100% + + + + + + + (红) + + + + + + + + + + + + + + + + + + + 5 + + + + + + + + + + + + + + + + + + + + SQL + + + + + + + 错误扣分 + + + + + + + + + + + + + + + 满分 + + + + + + 20 + + + + + + + 分,出现一次扣 + + + + + + 0.01 + + + + + + + 分。 + + + + + + + + + + + + + + 13 + + + + + + + + + + + + + + URI + + + + + + + 平均耗时 + + + + + + + + + + + + + + + + + + + + + + + + + + 2s + + + + + + + 黑; + + + + + + 2~5s + + + + + + + 黄;≥ + + + + + + 5s + + + + + + + + + + + + + + + + + + + + + + + + + + 6 + + + + + + + + + + + + + + + + + + + + + + + + + + URI + + + + + + + 扣分 + + + + + + + + + + + + + + + 满分 + + + + + + 30 + + + + + + + 分,出现一次扣 + + + + + + 1 + + + + + + + 分。 + + + + + + + + + + + + + + 14 + + + + + + + + + + + + + + URI + + + + + + + 最慢耗时 + + + + + + + + + + + + + + + + + + + + + + + + + + 5s + + + + + + + 黑; + + + + + + 5~8s + + + + + + + 黄;≥ + + + + + + 8s + + + + + + + + + + + + + + + + + + + + + + + + + + 7 + + + + + + + + + + + + + + + + + + + JDBC + + + + + + + 错误扣分 + + + + + + + + + + + + + + + 满分 + + + + + + 20 + + + + + + + 分,出现一次扣 + + + + + + 0.01 + + + + + + + 分。 + + + + + + + + + + + + + + 15 + + + + + + + + + + + + + + SQL + + + + + + + 分段监测 + + + + + + + + + + + + + + ( + + + + + + + 平均 + + + + + + ) + + + + + + + + + + + + + 1s + + + + + + + + + + + + + 1~3s + + + + + + + ,≥ + + + + + + 3s + + + + + + + + + + + + + ( + + + + + + + 最慢 + + + + + + ) + + + + + + + + + + + + + 3s + + + + + + + + + + + + + 3~5s + + + + + + + ,≥ + + + + + + 5s + + + + + + + + + + + + + + + + + + + + + + + + + + 8 + + + + + + + + + + + + + + + 得分状态 + + + + + + + + + + + + + + + + + + + + + 90 + + + + + + + (健康); + + + + + + 75~90 + + + + + + + (良好);< + + + + + + 75 + + + + + + + (预警) + + + + + + + + + + + + + + 16 + + + + + + + + + + + + + + + 监测周期 + + + + + + + + + + + + + + + + + + + + 默认近 + + + + + + 7 + + + + + + + 天,可通过代码配置 + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/template/insiis-web/src/main/resources/templates/service.java.ftl b/template/insiis-web/src/main/resources/templates/service.java.ftl new file mode 100644 index 0000000..baabc68 --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/service.java.ftl @@ -0,0 +1,14 @@ +package ${package.Service}; + +/** +*

+* ${table.comment!} 服务类 +*

+* +* @author ${author} +* @since ${date} +*/ + +public interface ${table.serviceName} { + +} diff --git a/template/insiis-web/src/main/resources/templates/serviceImpl.java.ftl b/template/insiis-web/src/main/resources/templates/serviceImpl.java.ftl new file mode 100644 index 0000000..e908b6f --- /dev/null +++ b/template/insiis-web/src/main/resources/templates/serviceImpl.java.ftl @@ -0,0 +1,22 @@ +package ${package.ServiceImpl}; + +import ${package.Mapper}.${table.mapperName}; +import ${package.Service}.${table.serviceName}; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** +*

+* ${table.comment!} 服务实现类 +*

+* +* @author ${author} +* @since ${date} +*/ +@Service +public class ${table.serviceImplName} implements ${table.serviceName} { + + @Autowired + private ${table.mapperName} ${table.mapperName?uncap_first}; + +} \ No newline at end of file diff --git a/template/insiis-web/src/test/java/com/insigma/InsiisWebApplicationTests.java b/template/insiis-web/src/test/java/com/insigma/InsiisWebApplicationTests.java new file mode 100644 index 0000000..c91e67f --- /dev/null +++ b/template/insiis-web/src/test/java/com/insigma/InsiisWebApplicationTests.java @@ -0,0 +1,16 @@ +package com.insigma; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ExtendWith(SpringExtension.class) +@SpringBootTest +public class InsiisWebApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/template/modules/.gitkeep b/template/modules/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/template/modules/.gitkeep @@ -0,0 +1 @@ + diff --git a/template/mvnw b/template/mvnw new file mode 100755 index 0000000..8d937f4 --- /dev/null +++ b/template/mvnw @@ -0,0 +1,308 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Apache Maven Wrapper startup batch script, version 3.2.0 +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "$(uname)" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + JAVA_HOME="$(/usr/libexec/java_home)"; export JAVA_HOME + else + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=$(java-config --jre-home) + fi +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --unix "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --unix "$CLASSPATH") +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$JAVA_HOME" ] && [ -d "$JAVA_HOME" ] && + JAVA_HOME="$(cd "$JAVA_HOME" || (echo "cannot cd into $JAVA_HOME."; exit 1); pwd)" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="$(which javac)" + if [ -n "$javaExecutable" ] && ! [ "$(expr "\"$javaExecutable\"" : '\([^ ]*\)')" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=$(which readlink) + if [ ! "$(expr "$readLink" : '\([^ ]*\)')" = "no" ]; then + if $darwin ; then + javaHome="$(dirname "\"$javaExecutable\"")" + javaExecutable="$(cd "\"$javaHome\"" && pwd -P)/javac" + else + javaExecutable="$(readlink -f "\"$javaExecutable\"")" + fi + javaHome="$(dirname "\"$javaExecutable\"")" + javaHome=$(expr "$javaHome" : '\(.*\)/bin') + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="$(\unset -f command 2>/dev/null; \command -v java)" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=$(cd "$wdir/.." || exit 1; pwd) + fi + # end of workaround + done + printf '%s' "$(cd "$basedir" || exit 1; pwd)" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + # Remove \r in case we run on Windows within Git Bash + # and check out the repository with auto CRLF management + # enabled. Otherwise, we may read lines that are delimited with + # \r\n and produce $'-Xarg\r' rather than -Xarg due to word + # splitting rules. + tr -s '\r\n' ' ' < "$1" + fi +} + +log() { + if [ "$MVNW_VERBOSE" = true ]; then + printf '%s\n' "$1" + fi +} + +BASE_DIR=$(find_maven_basedir "$(dirname "$0")") +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +log "$MAVEN_PROJECTBASEDIR" + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +wrapperJarPath="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" +if [ -r "$wrapperJarPath" ]; then + log "Found $wrapperJarPath" +else + log "Couldn't find $wrapperJarPath, downloading it ..." + + if [ -n "$MVNW_REPOURL" ]; then + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + else + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + fi + while IFS="=" read -r key value; do + # Remove '\r' from value to allow usage on windows as IFS does not consider '\r' as a separator ( considers space, tab, new line ('\n'), and custom '=' ) + safeValue=$(echo "$value" | tr -d '\r') + case "$key" in (wrapperUrl) wrapperUrl="$safeValue"; break ;; + esac + done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" + log "Downloading from: $wrapperUrl" + + if $cygwin; then + wrapperJarPath=$(cygpath --path --windows "$wrapperJarPath") + fi + + if command -v wget > /dev/null; then + log "Found wget ... using wget" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--quiet" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + log "Found curl ... using curl" + [ "$MVNW_VERBOSE" = true ] && QUIET="" || QUIET="--silent" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + else + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L || rm -f "$wrapperJarPath" + fi + else + log "Falling back to using Java to download" + javaSource="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$MAVEN_PROJECTBASEDIR/.mvn/wrapper/MavenWrapperDownloader.class" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaSource=$(cygpath --path --windows "$javaSource") + javaClass=$(cygpath --path --windows "$javaClass") + fi + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then + log " - Compiling MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/javac" "$javaSource") + fi + if [ -e "$javaClass" ]; then + log " - Running MavenWrapperDownloader.java ..." + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$wrapperUrl" "$wrapperJarPath") || rm -f "$wrapperJarPath" + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +# If specified, validate the SHA-256 sum of the Maven wrapper jar file +wrapperSha256Sum="" +while IFS="=" read -r key value; do + case "$key" in (wrapperSha256Sum) wrapperSha256Sum=$value; break ;; + esac +done < "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.properties" +if [ -n "$wrapperSha256Sum" ]; then + wrapperSha256Result=false + if command -v sha256sum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | sha256sum -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + elif command -v shasum > /dev/null; then + if echo "$wrapperSha256Sum $wrapperJarPath" | shasum -a 256 -c > /dev/null 2>&1; then + wrapperSha256Result=true + fi + else + echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." + echo "Please install either command, or disable validation by removing 'wrapperSha256Sum' from your maven-wrapper.properties." + exit 1 + fi + if [ $wrapperSha256Result = false ]; then + echo "Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised." >&2 + echo "Investigate or delete $wrapperJarPath to attempt a clean download." >&2 + echo "If you updated your Maven version, you need to update the specified wrapperSha256Sum property." >&2 + exit 1 + fi +fi + +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$JAVA_HOME" ] && + JAVA_HOME=$(cygpath --path --windows "$JAVA_HOME") + [ -n "$CLASSPATH" ] && + CLASSPATH=$(cygpath --path --windows "$CLASSPATH") + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=$(cygpath --path --windows "$MAVEN_PROJECTBASEDIR") +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $*" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +# shellcheck disable=SC2086 # safe args +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/template/mvnw.cmd b/template/mvnw.cmd new file mode 100755 index 0000000..c4586b5 --- /dev/null +++ b/template/mvnw.cmd @@ -0,0 +1,205 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Apache Maven Wrapper startup batch script, version 3.2.0 +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %WRAPPER_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM If specified, validate the SHA-256 sum of the Maven wrapper jar file +SET WRAPPER_SHA_256_SUM="" +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperSha256Sum" SET WRAPPER_SHA_256_SUM=%%B +) +IF NOT %WRAPPER_SHA_256_SUM%=="" ( + powershell -Command "&{"^ + "$hash = (Get-FileHash \"%WRAPPER_JAR%\" -Algorithm SHA256).Hash.ToLower();"^ + "If('%WRAPPER_SHA_256_SUM%' -ne $hash){"^ + " Write-Output 'Error: Failed to validate Maven wrapper SHA-256, your Maven wrapper might be compromised.';"^ + " Write-Output 'Investigate or delete %WRAPPER_JAR% to attempt a clean download.';"^ + " Write-Output 'If you updated your Maven version, you need to update the specified wrapperSha256Sum property.';"^ + " exit 1;"^ + "}"^ + "}" + if ERRORLEVEL 1 goto error +) + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/template/pom.xml b/template/pom.xml new file mode 100644 index 0000000..8e959b6 --- /dev/null +++ b/template/pom.xml @@ -0,0 +1,213 @@ + + + + 4.0.0 + com.insigma + insiis7 + pom + ${revision} + insiis7 + epsoft insiis7 project for Spring Boot + + 3.1.0-SNAPSHOT + UTF-8 + UTF-8 + 1.8 + 2021.0.9 + 1.2.20 + 3.5.5 + 2.11.1 + 1.9.4 + 2.12.0 + 1.2.83 + 2021.1 + 2.2.224 + + 7.0.0-SNAPSHOT + 1.2 + 1.0.8 + 12.2.0.1 + 8.0.31 + 8.6.0 + 2.4.0 + 42.5.6 + UTF-8 + 11 + 11 + 4.12 + 1.2.2 + 1.2.0 + 1.0-SNAPSHOT + 1.18.20 + 1.3.2 + 1.2.3 + 1.0-SNAPSHOT + 5.2.4 + 1.3.0-SNAPSHOT + 1.0.0-SNAPSHOT + 1.0.0-SNAPSHOT + 1.0.0-SNAPSHOT + 5.5.7.Final + 1.0-SNAPSHOT + 5.7.4 + 1.0.0-SNAPSHOT + 2.2 + 7.3.1 + 1.2.2 + + + org.springframework.boot + spring-boot-starter-parent + 2.7.18 + + + + + insiis-web + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-actuator + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.projectlombok + lombok + + + + + + + + + com.github.jsqlparser + jsqlparser + 4.6 + + + com.alibaba + fastjson + ${fastjson.version} + + + org.springframework.cloud + spring-cloud-starter-bootstrap + 3.1.6 + + + com.vs + ox-basidc-common + 1.0-SNAPSHOT + + + org.mybatis + mybatis + + + + + + com.vs + ox-common + 1.0-SNAPSHOT + + + org.mybatis + mybatis + + + + + org.mybatis + mybatis + 3.5.11 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + ${nacos-config.version} + + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.1.0 + + true + resolveCiFriendliesOnly + + + + flatten + process-resources + + flatten + + + + flatten.clean + clean + + clean + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.2 + + protected + true + + insiis-commons,insiis-securities,insiis-web-support,insiis-dfs,insiis-export-queue,insiis-adminserver,insiis-monitor,insiis-monitor-datasourceclient,insiis-monitor-datasources,insiis-mq,insiis-registry,insiis-report,insiis-scheduler,insiis-service,insiis-service-support,insiis-sms,insiis-sysconfig,insiis-test,insiis-web,insiis-web-support + + + + + + + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + diff --git a/template/project b/template/project new file mode 100644 index 0000000..89f9a32 --- /dev/null +++ b/template/project @@ -0,0 +1,3 @@ +id={{ .projectId }} +name={{ .projectName | replace "-" "_" }} +version={{ .vsVersion }} diff --git a/values.yml b/values.yml new file mode 100644 index 0000000..7457bda --- /dev/null +++ b/values.yml @@ -0,0 +1,45 @@ +groupId: com.vs +artifactId: volunteer_bank +vsVersion: 1.0.0 +projectName: volunteer-bank +projectId: 3fdc654b-feb2-4d4a-be19-e9ca2998b5d6 +applicationName: "{{ .projectName }}-server" +branchName: master +clusterName: "{{ .applicationName }}-{{ .branchName }}" +version: 1.0-SNAPSHOT +operator: horsepower +codeRepoProtocol: https +codeRepoDomain: bit.byteawake.com +codeRepoSSHPort: 23123 +codeRepoGroup: vs-server-generate +codeRepoApplicationParentPath: "{{ .codeRepoGroup }}/{{ .projectName }}" +dbType: mysql +dbHost: mysql-rw.staging.svc.cluster.local +dbPort: 3306 +package: "{{ .groupId }}.{{ .artifactId }}" +packagePath: '{{ .package | replace "." "/" }}' +db_address: "{{ .dbHost }}:{{ .dbPort }}" +db_database: '{{ .projectName | replace "-" "_" }}' +db_username: '{{ .projectName | replace "-" "_" }}_user' +db_password: "{{ randAlphaNum 16 }}" +rocketmq_address: "10.0.2.221:9876;10.0.2.222:9876;10.0.2.223:9876" +rocketmq_topic: '{{ .projectName | replace "-" "_" }}' +rocketmq_consumerGroup: "CID_{{ .artifactId }}" +rocketmq_producerGroup: "PID_{{ .artifactId }}" +elasticsearch_host: "10.0.2.221,10.0.2.222,10.0.2.223" +elasticsearch_port: "9200" +elasticsearch_scheme: "https" +elasticsearch_username: "admin" +elasticsearch_password: "dnZkaNVK" +xxljob_address: "https://xxljob.teitui.com/xxl-job-admin" +xxljob_username: "admin" +xxljob_password: "123456" +xxljob_accessToken: "default_token" +redis_address: "redis.byteawake.com:6379" +redis_password: "" +redis_maxTotal: 100 +redis_maxIdle: 10 +redis_minIdle: 10 +git_url: "{{ .codeRepoProtocol }}://{{ .codeRepoDomain }}/{{ .codeRepoApplicationParentPath }}/{{ .applicationName }}" +git_ssh_url: "ssh://git@{{ .codeRepoDomain }}:{{ .codeRepoSSHPort }}/{{ .codeRepoApplicationParentPath }}/{{ .applicationName }}.git" +freeway_url: "https://fwy.teitui.com/clusters/pods/-/{{ .codeRepoGroup }}/{{ .projectName }}/{{ .applicationName }}/{{ .clusterName }}"