This commit is contained in:
ddmt 2024-10-11 17:49:29 +08:00
parent 4a3b8e6eaf
commit 746ed33250
1235 changed files with 79246 additions and 0 deletions

12
bin/clean.bat Normal file
View File

@ -0,0 +1,12 @@
@echo off
echo.
echo [信息] 清理生成路径。
echo.
%~d0
cd %~dp0
cd ..
call mvn clean
pause

12
bin/package.bat Normal file
View File

@ -0,0 +1,12 @@
@echo off
echo.
echo [信息] 打包Web工程生成war/jar包文件。
echo.
%~d0
cd %~dp0
cd ..
call mvn clean package -Dmaven.test.skip=true
pause

14
bin/run.bat Normal file
View File

@ -0,0 +1,14 @@
@echo off
echo.
echo [<5B><>Ϣ] <20><><EFBFBD><EFBFBD>Web<65><62><EFBFBD>̡<EFBFBD>
echo.
cd %~dp0
cd ../neu-admin/target
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m
java -jar %JAVA_OPTS% carbon.jar
cd bin
pause

86
bin/run.sh Normal file
View File

@ -0,0 +1,86 @@
#!/bin/bash
AppName=carbon.jar
#JVM参数
JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512M -Xmx1024M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
APP_HOME=`pwd`
LOG_PATH=$APP_HOME/logs/$AppName.log
if [ "$1" = "" ];
then
echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m"
exit 1
fi
if [ "$AppName" = "" ];
then
echo -e "\033[0;31m 未输入应用名 \033[0m"
exit 1
fi
function start()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
if [ x"$PID" != x"" ]; then
echo "$AppName is running..."
else
nohup java -jar $JVM_OPTS target/$AppName > /dev/null 2>&1 &
echo "Start $AppName success..."
fi
}
function stop()
{
echo "Stop $AppName"
PID=""
query(){
PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'`
}
query
if [ x"$PID" != x"" ]; then
kill -TERM $PID
echo "$AppName (pid:$PID) exiting..."
while [ x"$PID" != x"" ]
do
sleep 1
query
done
echo "$AppName exited."
else
echo "$AppName already stopped."
fi
}
function restart()
{
stop
sleep 2
start
}
function status()
{
PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l`
if [ $PID != 0 ];then
echo "$AppName is running..."
else
echo "$AppName is not running..."
fi
}
case $1 in
start)
start;;
stop)
stop;;
restart)
restart;;
status)
status;;
*)
esac

4413
carbon.sql Normal file

File diff suppressed because one or more lines are too long

57
neu-admin/.classpath Normal file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry excluding="**" kind="src" output="target/test-classes" path="src/test/resources">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="test" value="true"/>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" path="target/generated-sources/annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
<attribute name="ignore_optional_problems" value="true"/>
<attribute name="m2e-apt" value="true"/>
<attribute name="test" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

40
neu-admin/.project Normal file
View File

@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>neu-admin</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.springframework.ide.eclipse.core.springbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.springframework.ide.eclipse.core.springnature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
</natures>
<filteredResources>
<filter>
<id>1728640141560</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
encoding//src/main/java=UTF-8
encoding//src/main/resources=UTF-8
encoding/<project>=UTF-8

View File

@ -0,0 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.apt.aptEnabled=true
org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations
org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations

View File

@ -0,0 +1,9 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
org.eclipse.jdt.core.compiler.processAnnotations=enabled
org.eclipse.jdt.core.compiler.release=disabled
org.eclipse.jdt.core.compiler.source=1.8

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

15
neu-admin/.springBeans Normal file
View File

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
<version>1</version>
<pluginVersion><![CDATA[3.8.4.201703310634-RELEASE]]></pluginVersion>
<configSuffixes>
<configSuffix><![CDATA[xml]]></configSuffix>
</configSuffixes>
<enableImports><![CDATA[false]]></enableImports>
<configs>
</configs>
<autoconfigs>
</autoconfigs>
<configSets>
</configSets>
</beansProjectDescription>

138
neu-admin/pom.xml Normal file
View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>carbon</artifactId>
<groupId>com.neu</groupId>
<version>3.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<artifactId>neu-admin</artifactId>
<description>
web服务入口
</description>
<dependencies>
<!-- spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
</dependency>
<!--防止进入swagger页面报类型转换错误排除2.9.2中的引用手动增加1.5.21版本 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
<version>1.5.21</version>
</dependency>
<!-- swagger2-UI -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
</dependency>
<!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 核心模块 -->
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-framework</artifactId>
</dependency>
<!-- 定时任务 -->
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-quartz</artifactId>
</dependency>
<!-- 代码生成 -->
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-generator</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-common-biz</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-footprint</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-mes</artifactId>
</dependency>
<!--添加招投标 2023-04-21-->
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-bid</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-report</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-scm</artifactId>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-wms</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.1.RELEASE</version>
<configuration>
<fork>true</fork> <!-- 如果没有该配置devtools不会生效 -->
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<warName>${project.artifactId}</warName>
</configuration>
</plugin>
</plugins>
<finalName>carbon</finalName>
</build>
</project>

View File

@ -0,0 +1,21 @@
package com.neu;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* 启动程序
*
* @author neuedu
*/
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class NeuApplication
{
public static void main(String[] args)
{
// System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(NeuApplication.class, args);
System.out.println("(♥◠‿◠)ノ゙ 启动成功 ლ(´ڡ`ლ)゙ \n");
}
}

View File

@ -0,0 +1,18 @@
package com.neu;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* web容器中进行部署
*
* @author neuedu
*/
public class NeuServletInitializer extends SpringBootServletInitializer
{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(NeuApplication.class);
}
}

View File

@ -0,0 +1,86 @@
package com.neu.web.controller.common;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.google.code.kaptcha.Producer;
import com.neu.common.constant.Constants;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.redis.RedisCache;
import com.neu.common.utils.sign.Base64;
import com.neu.common.utils.uuid.IdUtils;
/**
* 验证码操作处理
*
* @author neusoft
*/
@RestController
public class CaptchaController
{
@Resource(name = "captchaProducer")
private Producer captchaProducer;
@Resource(name = "captchaProducerMath")
private Producer captchaProducerMath;
@Autowired
private RedisCache redisCache;
// 验证码类型
@Value("${carbon.captchaType}")
private String captchaType;
/**
* 生成验证码
*/
@GetMapping("/captchaImage")
public AjaxResult getCode(HttpServletResponse response) throws IOException
{
// 保存验证码信息
String uuid = IdUtils.simpleUUID();
String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;
String capStr = null, code = null;
BufferedImage image = null;
// 生成验证码
if ("math".equals(captchaType))
{
String capText = captchaProducerMath.createText();
capStr = capText.substring(0, capText.lastIndexOf("@"));
code = capText.substring(capText.lastIndexOf("@") + 1);
image = captchaProducerMath.createImage(capStr);
}
else if ("char".equals(captchaType))
{
capStr = code = captchaProducer.createText();
image = captchaProducer.createImage(capStr);
}
redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try
{
ImageIO.write(image, "jpg", os);
}
catch (IOException e)
{
return AjaxResult.error(e.getMessage());
}
AjaxResult ajax = AjaxResult.success();
ajax.put("uuid", uuid);
ajax.put("img", Base64.encode(os.toByteArray()));
return ajax;
}
}

View File

@ -0,0 +1,120 @@
package com.neu.web.controller.common;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.neu.common.config.NeuConfig;
import com.neu.common.constant.Constants;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.utils.StringUtils;
import com.neu.common.utils.file.FileUploadUtils;
import com.neu.common.utils.file.FileUtils;
import com.neu.framework.config.ServerConfig;
/**
* 通用请求处理
*
* @author neusoft
*/
@RestController
public class CommonController
{
private static final Logger log = LoggerFactory.getLogger(CommonController.class);
@Autowired
private ServerConfig serverConfig;
/**
* 通用下载请求
*
* @param fileName 文件名称
* @param delete 是否删除
*/
@GetMapping("common/download")
public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request)
{
try
{
if (!FileUtils.checkAllowDownload(fileName))
{
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
}
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
String filePath = NeuConfig.getDownloadPath() + fileName;
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, realFileName);
FileUtils.writeBytes(filePath, response.getOutputStream());
if (delete)
{
FileUtils.deleteFile(filePath);
}
}
catch (Exception e)
{
log.error("下载文件失败", e);
}
}
/**
* 通用上传请求
*/
@PostMapping("/common/upload")
public AjaxResult uploadFile(MultipartFile file) throws Exception
{
try
{
// 上传文件路径
String filePath = NeuConfig.getUploadPath();
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("fileName", fileName);
ajax.put("originalFileName", file.getOriginalFilename());
ajax.put("url", url);
return ajax;
}
catch (Exception e)
{
return AjaxResult.error(e.getMessage());
}
}
/**
* 本地资源通用下载
*/
@GetMapping("/common/download/resource")
public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response)
throws Exception
{
try
{
if (!FileUtils.checkAllowDownload(resource))
{
throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
}
// 本地资源路径
String localPath = NeuConfig.getProfile();
// 数据库资源地址
String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
// 下载名称
String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
FileUtils.setAttachmentResponseHeader(response, downloadName);
FileUtils.writeBytes(downloadPath, response.getOutputStream());
}
catch (Exception e)
{
log.error("下载文件失败", e);
}
}
}

View File

@ -0,0 +1,54 @@
package com.neu.web.controller.monitor;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.utils.StringUtils;
/**
* 缓存监控
*
* @author neusoft
*/
@RestController
@RequestMapping("/monitor/cache")
public class CacheController
{
@Autowired
private RedisTemplate<String, String> redisTemplate;
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
@GetMapping()
public AjaxResult getInfo() throws Exception
{
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
Map<String, Object> result = new HashMap<>(3);
result.put("info", info);
result.put("dbSize", dbSize);
List<Map<String, String>> pieList = new ArrayList<>();
commandStats.stringPropertyNames().forEach(key -> {
Map<String, String> data = new HashMap<>(2);
String property = commandStats.getProperty(key);
data.put("name", StringUtils.removeStart(key, "cmdstat_"));
data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
pieList.add(data);
});
result.put("commandStats", pieList);
return AjaxResult.success(result);
}
}

View File

@ -0,0 +1,28 @@
package com.neu.web.controller.monitor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.framework.web.domain.Server;
/**
* 服务器监控
*
* @author neusoft
*/
@RestController
@RequestMapping("/monitor/server")
public class ServerController
{
@PreAuthorize("@ss.hasPermi('monitor:server:list')")
@GetMapping()
public AjaxResult getInfo() throws Exception
{
Server server = new Server();
server.copyTo();
return AjaxResult.success(server);
}
}

View File

@ -0,0 +1,68 @@
package com.neu.web.controller.monitor;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.domain.SysLogininfor;
import com.neu.system.service.ISysLogininforService;
/**
* 系统访问记录
*
* @author neusoft
*/
@RestController
@RequestMapping("/monitor/logininfor")
public class SysLogininforController extends BaseController
{
@Autowired
private ISysLogininforService logininforService;
@PreAuthorize("@ss.hasPermi('monitor:logininfor:list')")
@GetMapping("/list")
public TableDataInfo list(SysLogininfor logininfor)
{
startPage();
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
return getDataTable(list);
}
@Log(title = "登录日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:logininfor:export')")
@GetMapping("/export")
public AjaxResult export(SysLogininfor logininfor)
{
List<SysLogininfor> list = logininforService.selectLogininforList(logininfor);
ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class);
return util.exportExcel(list, "登录日志");
}
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.DELETE)
@DeleteMapping("/{infoIds}")
public AjaxResult remove(@PathVariable Long[] infoIds)
{
return toAjax(logininforService.deleteLogininforByIds(infoIds));
}
@PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')")
@Log(title = "登录日志", businessType = BusinessType.CLEAN)
@DeleteMapping("/clean")
public AjaxResult clean()
{
logininforService.cleanLogininfor();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,67 @@
package com.neu.web.controller.monitor;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.domain.SysOperLog;
import com.neu.system.service.ISysOperLogService;
/**
* 操作日志记录
*
* @author neusoft
*/
@RestController
@RequestMapping("/monitor/operlog")
public class SysOperlogController extends BaseController
{
@Autowired
private ISysOperLogService operLogService;
@PreAuthorize("@ss.hasPermi('monitor:operlog:list')")
@GetMapping("/list")
public TableDataInfo list(SysOperLog operLog)
{
startPage();
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
return getDataTable(list);
}
@Log(title = "操作日志", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('monitor:operlog:export')")
@GetMapping("/export")
public AjaxResult export(SysOperLog operLog)
{
List<SysOperLog> list = operLogService.selectOperLogList(operLog);
ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class);
return util.exportExcel(list, "操作日志");
}
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/{operIds}")
public AjaxResult remove(@PathVariable Long[] operIds)
{
return toAjax(operLogService.deleteOperLogByIds(operIds));
}
@Log(title = "操作日志", businessType = BusinessType.CLEAN)
@PreAuthorize("@ss.hasPermi('monitor:operlog:remove')")
@DeleteMapping("/clean")
public AjaxResult clean()
{
operLogService.cleanOperLog();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,93 @@
package com.neu.web.controller.monitor;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.Constants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.core.redis.RedisCache;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.StringUtils;
import com.neu.system.domain.SysUserOnline;
import com.neu.system.service.ISysUserOnlineService;
/**
* 在线用户监控
*
* @author neusoft
*/
@RestController
@RequestMapping("/monitor/online")
public class SysUserOnlineController extends BaseController
{
@Autowired
private ISysUserOnlineService userOnlineService;
@Autowired
private RedisCache redisCache;
@PreAuthorize("@ss.hasPermi('monitor:online:list')")
@GetMapping("/list")
public TableDataInfo list(String ipaddr, String userName)
{
Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
for (String key : keys)
{
LoginUser user = redisCache.getCacheObject(key);
if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName))
{
if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername()))
{
userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user));
}
}
else if (StringUtils.isNotEmpty(ipaddr))
{
if (StringUtils.equals(ipaddr, user.getIpaddr()))
{
userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user));
}
}
else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser()))
{
if (StringUtils.equals(userName, user.getUsername()))
{
userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user));
}
}
else
{
userOnlineList.add(userOnlineService.loginUserToUserOnline(user));
}
}
Collections.reverse(userOnlineList);
userOnlineList.removeAll(Collections.singleton(null));
return getDataTable(userOnlineList);
}
/**
* 强退用户
*/
@PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')")
@Log(title = "在线用户", businessType = BusinessType.FORCE)
@DeleteMapping("/{tokenId}")
public AjaxResult forceLogout(@PathVariable String tokenId)
{
redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId);
return AjaxResult.success();
}
}

View File

@ -0,0 +1,136 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.annotation.RepeatSubmit;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.domain.SysConfig;
import com.neu.system.service.ISysConfigService;
/**
* 参数配置 信息操作处理
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/config")
public class SysConfigController extends BaseController
{
@Autowired
private ISysConfigService configService;
/**
* 获取参数配置列表
*/
@PreAuthorize("@ss.hasPermi('system:config:list')")
@GetMapping("/list")
public TableDataInfo list(SysConfig config)
{
startPage();
List<SysConfig> list = configService.selectConfigList(config);
return getDataTable(list);
}
@Log(title = "参数管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:config:export')")
@GetMapping("/export")
public AjaxResult export(SysConfig config)
{
List<SysConfig> list = configService.selectConfigList(config);
ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class);
return util.exportExcel(list, "参数数据");
}
/**
* 根据参数编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:config:query')")
@GetMapping(value = "/{configId}")
public AjaxResult getInfo(@PathVariable Long configId)
{
return AjaxResult.success(configService.selectConfigById(configId));
}
/**
* 根据参数键名查询参数值
*/
@GetMapping(value = "/configKey/{configKey}")
public AjaxResult getConfigKey(@PathVariable String configKey)
{
return AjaxResult.success(configService.selectConfigByKey(configKey));
}
/**
* 新增参数配置
*/
@PreAuthorize("@ss.hasPermi('system:config:add')")
@Log(title = "参数管理", businessType = BusinessType.INSERT)
@PostMapping
@RepeatSubmit
public AjaxResult add(@Validated @RequestBody SysConfig config)
{
if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config)))
{
return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setCreateBy(SecurityUtils.getUsername());
return toAjax(configService.insertConfig(config));
}
/**
* 修改参数配置
*/
@PreAuthorize("@ss.hasPermi('system:config:edit')")
@Log(title = "参数管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysConfig config)
{
if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config)))
{
return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在");
}
config.setUpdateBy(SecurityUtils.getUsername());
return toAjax(configService.updateConfig(config));
}
/**
* 删除参数配置
*/
@PreAuthorize("@ss.hasPermi('system:config:remove')")
@Log(title = "参数管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{configIds}")
public AjaxResult remove(@PathVariable Long[] configIds)
{
return toAjax(configService.deleteConfigByIds(configIds));
}
/**
* 清空缓存
*/
@PreAuthorize("@ss.hasPermi('system:config:remove')")
@Log(title = "参数管理", businessType = BusinessType.CLEAN)
@DeleteMapping("/clearCache")
public AjaxResult clearCache()
{
configService.clearCache();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,164 @@
package com.neu.web.controller.system;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysDept;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.StringUtils;
import com.neu.system.service.ISysDeptService;
/**
* 部门信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/dept")
public class SysDeptController extends BaseController
{
@Autowired
private ISysDeptService deptService;
/**
* 获取部门列表
*/
@PreAuthorize("@ss.hasPermi('system:dept:list')")
@GetMapping("/list")
public AjaxResult list(SysDept dept)
{
List<SysDept> depts = deptService.selectDeptList(dept);
return AjaxResult.success(depts);
}
/**
* 查询部门列表排除节点
*/
@PreAuthorize("@ss.hasPermi('system:dept:list')")
@GetMapping("/list/exclude/{deptId}")
public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId)
{
List<SysDept> depts = deptService.selectDeptList(new SysDept());
Iterator<SysDept> it = depts.iterator();
while (it.hasNext())
{
SysDept d = (SysDept) it.next();
if (d.getDeptId().intValue() == deptId
|| ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + ""))
{
it.remove();
}
}
return AjaxResult.success(depts);
}
/**
* 根据部门编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:dept:query')")
@GetMapping(value = "/{deptId}")
public AjaxResult getInfo(@PathVariable Long deptId)
{
return AjaxResult.success(deptService.selectDeptById(deptId));
}
/**
* 获取部门下拉树列表
*/
@GetMapping("/treeselect")
public AjaxResult treeselect(SysDept dept)
{
List<SysDept> depts = deptService.selectDeptList(dept);
return AjaxResult.success(deptService.buildDeptTreeSelect(depts));
}
/**
* 加载对应角色部门列表树
*/
@GetMapping(value = "/roleDeptTreeselect/{roleId}")
public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId)
{
List<SysDept> depts = deptService.selectDeptList(new SysDept());
AjaxResult ajax = AjaxResult.success();
ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId));
ajax.put("depts", deptService.buildDeptTreeSelect(depts));
return ajax;
}
/**
* 新增部门
*/
@PreAuthorize("@ss.hasPermi('system:dept:add')")
@Log(title = "部门管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysDept dept)
{
if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
{
return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
dept.setCreateBy(SecurityUtils.getUsername());
return toAjax(deptService.insertDept(dept));
}
/**
* 修改部门
*/
@PreAuthorize("@ss.hasPermi('system:dept:edit')")
@Log(title = "部门管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysDept dept)
{
if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept)))
{
return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在");
}
else if (dept.getParentId().equals(dept.getDeptId()))
{
return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己");
}
else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus())
&& deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0)
{
return AjaxResult.error("该部门包含未停用的子部门!");
}
dept.setUpdateBy(SecurityUtils.getUsername());
return toAjax(deptService.updateDept(dept));
}
/**
* 删除部门
*/
@PreAuthorize("@ss.hasPermi('system:dept:remove')")
@Log(title = "部门管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{deptId}")
public AjaxResult remove(@PathVariable Long deptId)
{
if (deptService.hasChildByDeptId(deptId))
{
return AjaxResult.error("存在下级部门,不允许删除");
}
if (deptService.checkDeptExistUser(deptId))
{
return AjaxResult.error("部门存在用户,不允许删除");
}
return toAjax(deptService.deleteDeptById(deptId));
}
}

View File

@ -0,0 +1,132 @@
package com.neu.web.controller.system;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysDictData;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.StringUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.service.ISysDictDataService;
import com.neu.system.service.ISysDictTypeService;
/**
* 数据字典信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/dict/data")
public class SysDictDataController extends BaseController
{
@Autowired
private ISysDictDataService dictDataService;
@Autowired
private ISysDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictData dictData)
{
startPage();
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
return getDataTable(list);
}
@Log(title = "字典数据", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@GetMapping("/export")
public AjaxResult export(SysDictData dictData)
{
List<SysDictData> list = dictDataService.selectDictDataList(dictData);
ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class);
return util.exportExcel(list, "字典数据");
}
/**
* 查询字典数据详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictCode}")
public AjaxResult getInfo(@PathVariable Long dictCode)
{
return AjaxResult.success(dictDataService.selectDictDataById(dictCode));
}
/**
* 根据字典类型查询字典数据信息
*/
@GetMapping(value = "/type/{dictType}")
public AjaxResult dictType(@PathVariable String dictType)
{
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data))
{
data = new ArrayList<SysDictData>();
}
return AjaxResult.success(data);
}
@GetMapping(value = "/type/front/{dictType}")
public AjaxResult dictTypeFront(@PathVariable String dictType)
{
List<SysDictData> data = dictTypeService.selectDictDataByType(dictType);
if (StringUtils.isNull(data))
{
data = new ArrayList<SysDictData>();
}
return AjaxResult.success(data);
}
/**
* 新增字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典数据", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysDictData dict)
{
dict.setCreateBy(SecurityUtils.getUsername());
return toAjax(dictDataService.insertDictData(dict));
}
/**
* 修改保存字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典数据", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysDictData dict)
{
dict.setUpdateBy(SecurityUtils.getUsername());
return toAjax(dictDataService.updateDictData(dict));
}
/**
* 删除字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictCodes}")
public AjaxResult remove(@PathVariable Long[] dictCodes)
{
return toAjax(dictDataService.deleteDictDataByIds(dictCodes));
}
}

View File

@ -0,0 +1,132 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysDictType;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.service.ISysDictTypeService;
/**
* 数据字典信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/dict/type")
public class SysDictTypeController extends BaseController
{
@Autowired
private ISysDictTypeService dictTypeService;
@PreAuthorize("@ss.hasPermi('system:dict:list')")
@GetMapping("/list")
public TableDataInfo list(SysDictType dictType)
{
startPage();
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
return getDataTable(list);
}
@Log(title = "字典类型", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:dict:export')")
@GetMapping("/export")
public AjaxResult export(SysDictType dictType)
{
List<SysDictType> list = dictTypeService.selectDictTypeList(dictType);
ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class);
return util.exportExcel(list, "字典类型");
}
/**
* 查询字典类型详细
*/
@PreAuthorize("@ss.hasPermi('system:dict:query')")
@GetMapping(value = "/{dictId}")
public AjaxResult getInfo(@PathVariable Long dictId)
{
return AjaxResult.success(dictTypeService.selectDictTypeById(dictId));
}
/**
* 新增字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:add')")
@Log(title = "字典类型", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysDictType dict)
{
if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict)))
{
return AjaxResult.error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setCreateBy(SecurityUtils.getUsername());
return toAjax(dictTypeService.insertDictType(dict));
}
/**
* 修改字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:edit')")
@Log(title = "字典类型", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysDictType dict)
{
if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict)))
{
return AjaxResult.error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在");
}
dict.setUpdateBy(SecurityUtils.getUsername());
return toAjax(dictTypeService.updateDictType(dict));
}
/**
* 删除字典类型
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.DELETE)
@DeleteMapping("/{dictIds}")
public AjaxResult remove(@PathVariable Long[] dictIds)
{
return toAjax(dictTypeService.deleteDictTypeByIds(dictIds));
}
/**
* 清空缓存
*/
@PreAuthorize("@ss.hasPermi('system:dict:remove')")
@Log(title = "字典类型", businessType = BusinessType.CLEAN)
@DeleteMapping("/clearCache")
public AjaxResult clearCache()
{
dictTypeService.clearCache();
return AjaxResult.success();
}
/**
* 获取字典选择框列表
*/
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll();
return AjaxResult.success(dictTypes);
}
}

View File

@ -0,0 +1,106 @@
package com.neu.web.controller.system;
import java.util.List;
import java.util.Set;
import cn.hutool.core.collection.CollectionUtil;
import com.neu.carbon.bid.domain.BidEnterprise;
import com.neu.carbon.bid.service.IBidEnterpriseService;
import org.springframework.beans.factory.annotation.Autowired;
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 com.neu.common.constant.Constants;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysMenu;
import com.neu.common.core.domain.entity.SysUser;
import com.neu.common.core.domain.model.LoginBody;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.utils.ServletUtils;
import com.neu.framework.web.service.SysLoginService;
import com.neu.framework.web.service.SysPermissionService;
import com.neu.framework.web.service.TokenService;
import com.neu.system.service.ISysMenuService;
/**
* 登录验证
*
* @author neusoft
*/
@RestController
public class SysLoginController
{
@Autowired
private SysLoginService loginService;
@Autowired
private ISysMenuService menuService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private TokenService tokenService;
@Autowired
private IBidEnterpriseService enterpriseService;
/**
* 登录方法
*
* @param loginBody 登录信息
* @return 结果
*/
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
AjaxResult ajax = AjaxResult.success();
// 生成令牌
String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
loginBody.getUuid());
ajax.put(Constants.TOKEN, token);
return ajax;
}
/**
* 获取用户信息
*
* @return 用户信息
*/
@GetMapping("getInfo")
public AjaxResult getInfo()
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
SysUser user = loginUser.getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success();
BidEnterprise bidEnterprise = new BidEnterprise();
bidEnterprise.setUserName(user.getUserName());
List<BidEnterprise> list = enterpriseService.selectBidEnterpriseList(bidEnterprise);
if (CollectionUtil.isNotEmpty(list)) {
ajax.put("userId", list.get(0).getId().toString());
}
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
return ajax;
}
/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("getRouters")
public AjaxResult getRouters()
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
// 用户信息
SysUser user = loginUser.getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId());
return AjaxResult.success(menuService.buildMenus(menus));
}
}

View File

@ -0,0 +1,158 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.Constants;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysMenu;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.ServletUtils;
import com.neu.common.utils.StringUtils;
import com.neu.framework.web.service.TokenService;
import com.neu.system.service.ISysMenuService;
/**
* 菜单信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/menu")
public class SysMenuController extends BaseController
{
@Autowired
private ISysMenuService menuService;
@Autowired
private TokenService tokenService;
/**
* 获取菜单列表
*/
@PreAuthorize("@ss.hasPermi('system:menu:list')")
@GetMapping("/list")
public AjaxResult list(SysMenu menu)
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
Long userId = loginUser.getUser().getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return AjaxResult.success(menus);
}
/**
* 根据菜单编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:menu:query')")
@GetMapping(value = "/{menuId}")
public AjaxResult getInfo(@PathVariable Long menuId)
{
return AjaxResult.success(menuService.selectMenuById(menuId));
}
/**
* 获取菜单下拉树列表
*/
@GetMapping("/treeselect")
public AjaxResult treeselect(SysMenu menu)
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
Long userId = loginUser.getUser().getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return AjaxResult.success(menuService.buildMenuTreeSelect(menus));
}
/**
* 加载对应角色菜单列表树
*/
@GetMapping(value = "/roleMenuTreeselect/{roleId}")
public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId)
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
List<SysMenu> menus = menuService.selectMenuList(loginUser.getUser().getUserId());
AjaxResult ajax = AjaxResult.success();
ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId));
ajax.put("menus", menuService.buildMenuTreeSelect(menus));
return ajax;
}
/**
* 新增菜单
*/
@PreAuthorize("@ss.hasPermi('system:menu:add')")
@Log(title = "菜单管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysMenu menu)
{
if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
{
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame())
&& !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
{
return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
menu.setCreateBy(SecurityUtils.getUsername());
return toAjax(menuService.insertMenu(menu));
}
/**
* 修改菜单
*/
@PreAuthorize("@ss.hasPermi('system:menu:edit')")
@Log(title = "菜单管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysMenu menu)
{
if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu)))
{
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在");
}
else if (UserConstants.YES_FRAME.equals(menu.getIsFrame())
&& !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS))
{
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败地址必须以http(s)://开头");
}
else if (menu.getMenuId().equals(menu.getParentId()))
{
return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己");
}
menu.setUpdateBy(SecurityUtils.getUsername());
return toAjax(menuService.updateMenu(menu));
}
/**
* 删除菜单
*/
@PreAuthorize("@ss.hasPermi('system:menu:remove')")
@Log(title = "菜单管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{menuId}")
public AjaxResult remove(@PathVariable("menuId") Long menuId)
{
if (menuService.hasChildByMenuId(menuId))
{
return AjaxResult.error("存在子菜单,不允许删除");
}
if (menuService.checkMenuExistRole(menuId))
{
return AjaxResult.error("菜单已分配,不允许删除");
}
return toAjax(menuService.deleteMenuById(menuId));
}
}

View File

@ -0,0 +1,93 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.system.domain.SysNotice;
import com.neu.system.service.ISysNoticeService;
/**
* 公告 信息操作处理
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/notice")
public class SysNoticeController extends BaseController
{
@Autowired
private ISysNoticeService noticeService;
/**
* 获取通知公告列表
*/
@PreAuthorize("@ss.hasPermi('system:notice:list')")
@GetMapping("/list")
public TableDataInfo list(SysNotice notice)
{
startPage();
List<SysNotice> list = noticeService.selectNoticeList(notice);
return getDataTable(list);
}
/**
* 根据通知公告编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:notice:query')")
@GetMapping(value = "/{noticeId}")
public AjaxResult getInfo(@PathVariable Long noticeId)
{
return AjaxResult.success(noticeService.selectNoticeById(noticeId));
}
/**
* 新增通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:add')")
@Log(title = "通知公告", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysNotice notice)
{
notice.setCreateBy(SecurityUtils.getUsername());
return toAjax(noticeService.insertNotice(notice));
}
/**
* 修改通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:edit')")
@Log(title = "通知公告", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysNotice notice)
{
notice.setUpdateBy(SecurityUtils.getUsername());
return toAjax(noticeService.updateNotice(notice));
}
/**
* 删除通知公告
*/
@PreAuthorize("@ss.hasPermi('system:notice:remove')")
@Log(title = "通知公告", businessType = BusinessType.DELETE)
@DeleteMapping("/{noticeIds}")
public AjaxResult remove(@PathVariable Long[] noticeIds)
{
return toAjax(noticeService.deleteNoticeByIds(noticeIds));
}
}

View File

@ -0,0 +1,131 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.system.domain.SysPost;
import com.neu.system.service.ISysPostService;
/**
* 岗位信息操作处理
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/post")
public class SysPostController extends BaseController
{
@Autowired
private ISysPostService postService;
/**
* 获取岗位列表
*/
@PreAuthorize("@ss.hasPermi('system:post:list')")
@GetMapping("/list")
public TableDataInfo list(SysPost post)
{
startPage();
List<SysPost> list = postService.selectPostList(post);
return getDataTable(list);
}
@Log(title = "岗位管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:post:export')")
@GetMapping("/export")
public AjaxResult export(SysPost post)
{
List<SysPost> list = postService.selectPostList(post);
ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class);
return util.exportExcel(list, "岗位数据");
}
/**
* 根据岗位编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:post:query')")
@GetMapping(value = "/{postId}")
public AjaxResult getInfo(@PathVariable Long postId)
{
return AjaxResult.success(postService.selectPostById(postId));
}
/**
* 新增岗位
*/
@PreAuthorize("@ss.hasPermi('system:post:add')")
@Log(title = "岗位管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysPost post)
{
if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
{
return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在");
}
else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
{
return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setCreateBy(SecurityUtils.getUsername());
return toAjax(postService.insertPost(post));
}
/**
* 修改岗位
*/
@PreAuthorize("@ss.hasPermi('system:post:edit')")
@Log(title = "岗位管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysPost post)
{
if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post)))
{
return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在");
}
else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post)))
{
return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在");
}
post.setUpdateBy(SecurityUtils.getUsername());
return toAjax(postService.updatePost(post));
}
/**
* 删除岗位
*/
@PreAuthorize("@ss.hasPermi('system:post:remove')")
@Log(title = "岗位管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{postIds}")
public AjaxResult remove(@PathVariable Long[] postIds)
{
return toAjax(postService.deletePostByIds(postIds));
}
/**
* 获取岗位选择框列表
*/
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
List<SysPost> posts = postService.selectPostAll();
return AjaxResult.success(posts);
}
}

View File

@ -0,0 +1,128 @@
package com.neu.web.controller.system;
import java.io.IOException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.neu.common.annotation.Log;
import com.neu.common.config.NeuConfig;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysUser;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.ServletUtils;
import com.neu.common.utils.file.FileUploadUtils;
import com.neu.framework.web.service.TokenService;
import com.neu.system.service.ISysUserService;
/**
* 个人信息 业务处理
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/user/profile")
public class SysProfileController extends BaseController
{
@Autowired
private ISysUserService userService;
@Autowired
private TokenService tokenService;
/**
* 个人信息
*/
@GetMapping
public AjaxResult profile()
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
SysUser user = loginUser.getUser();
AjaxResult ajax = AjaxResult.success(user);
ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername()));
ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername()));
return ajax;
}
/**
* 修改用户
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult updateProfile(@RequestBody SysUser user)
{
if (userService.updateUserProfile(user) > 0)
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
// 更新缓存用户信息
loginUser.getUser().setNickName(user.getNickName());
loginUser.getUser().setPhonenumber(user.getPhonenumber());
loginUser.getUser().setEmail(user.getEmail());
loginUser.getUser().setSex(user.getSex());
tokenService.setLoginUser(loginUser);
return AjaxResult.success();
}
return AjaxResult.error("修改个人信息异常,请联系管理员");
}
/**
* 重置密码
*/
@Log(title = "个人信息", businessType = BusinessType.UPDATE)
@PutMapping("/updatePwd")
public AjaxResult updatePwd(String oldPassword, String newPassword)
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
String userName = loginUser.getUsername();
String password = loginUser.getPassword();
if (!SecurityUtils.matchesPassword(oldPassword, password))
{
return AjaxResult.error("修改密码失败,旧密码错误");
}
if (SecurityUtils.matchesPassword(newPassword, password))
{
return AjaxResult.error("新密码不能与旧密码相同");
}
if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0)
{
// 更新缓存用户密码
loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword));
tokenService.setLoginUser(loginUser);
return AjaxResult.success();
}
return AjaxResult.error("修改密码异常,请联系管理员");
}
/**
* 头像上传
*/
@Log(title = "用户头像", businessType = BusinessType.UPDATE)
@PostMapping("/avatar")
public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException
{
if (!file.isEmpty())
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
String avatar = FileUploadUtils.upload(NeuConfig.getAvatarPath(), file);
if (userService.updateUserAvatar(loginUser.getUsername(), avatar))
{
AjaxResult ajax = AjaxResult.success();
ajax.put("imgUrl", avatar);
// 更新缓存用户头像
loginUser.getUser().setAvatar(avatar);
tokenService.setLoginUser(loginUser);
return ajax;
}
}
return AjaxResult.error("上传图片异常,请联系管理员");
}
}

View File

@ -0,0 +1,183 @@
package com.neu.web.controller.system;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.annotation.Log;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysRole;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.ServletUtils;
import com.neu.common.utils.StringUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.framework.web.service.SysPermissionService;
import com.neu.framework.web.service.TokenService;
import com.neu.system.service.ISysRoleService;
import com.neu.system.service.ISysUserService;
/**
* 角色信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/role")
public class SysRoleController extends BaseController
{
@Autowired
private ISysRoleService roleService;
@Autowired
private TokenService tokenService;
@Autowired
private SysPermissionService permissionService;
@Autowired
private ISysUserService userService;
@PreAuthorize("@ss.hasPermi('system:role:list')")
@GetMapping("/list")
public TableDataInfo list(SysRole role)
{
startPage();
List<SysRole> list = roleService.selectRoleList(role);
return getDataTable(list);
}
@Log(title = "角色管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:role:export')")
@GetMapping("/export")
public AjaxResult export(SysRole role)
{
List<SysRole> list = roleService.selectRoleList(role);
ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class);
return util.exportExcel(list, "角色数据");
}
/**
* 根据角色编号获取详细信息
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
@GetMapping(value = "/{roleId}")
public AjaxResult getInfo(@PathVariable Long roleId)
{
return AjaxResult.success(roleService.selectRoleById(roleId));
}
/**
* 新增角色
*/
@PreAuthorize("@ss.hasPermi('system:role:add')")
@Log(title = "角色管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysRole role)
{
if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
{
return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在");
}
else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
{
return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setCreateBy(SecurityUtils.getUsername());
return toAjax(roleService.insertRole(role));
}
/**
* 修改保存角色
*/
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysRole role)
{
roleService.checkRoleAllowed(role);
if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role)))
{
return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在");
}
else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role)))
{
return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
}
role.setUpdateBy(SecurityUtils.getUsername());
if (roleService.updateRole(role) > 0)
{
// 更新缓存用户权限
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin())
{
loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser()));
loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName()));
tokenService.setLoginUser(loginUser);
}
return AjaxResult.success();
}
return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,请联系管理员");
}
/**
* 修改保存数据权限
*/
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/dataScope")
public AjaxResult dataScope(@RequestBody SysRole role)
{
roleService.checkRoleAllowed(role);
return toAjax(roleService.authDataScope(role));
}
/**
* 状态修改
*/
@PreAuthorize("@ss.hasPermi('system:role:edit')")
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody SysRole role)
{
roleService.checkRoleAllowed(role);
role.setUpdateBy(SecurityUtils.getUsername());
return toAjax(roleService.updateRoleStatus(role));
}
/**
* 删除角色
*/
@PreAuthorize("@ss.hasPermi('system:role:remove')")
@Log(title = "角色管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{roleIds}")
public AjaxResult remove(@PathVariable Long[] roleIds)
{
return toAjax(roleService.deleteRoleByIds(roleIds));
}
/**
* 获取角色选择框列表
*/
@PreAuthorize("@ss.hasPermi('system:role:query')")
@GetMapping("/optionselect")
public AjaxResult optionselect()
{
return AjaxResult.success(roleService.selectRoleAll());
}
}

View File

@ -0,0 +1,192 @@
package com.neu.web.controller.system;
import java.util.List;
import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import com.neu.carbon.bid.domain.BidEnterprise;
import com.neu.carbon.bid.service.IBidEnterpriseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.neu.common.annotation.Log;
import com.neu.common.constant.UserConstants;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.core.domain.entity.SysRole;
import com.neu.common.core.domain.entity.SysUser;
import com.neu.common.core.domain.model.LoginUser;
import com.neu.common.core.page.TableDataInfo;
import com.neu.common.enums.BusinessType;
import com.neu.common.utils.SecurityUtils;
import com.neu.common.utils.ServletUtils;
import com.neu.common.utils.StringUtils;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.framework.web.service.TokenService;
import com.neu.system.service.ISysPostService;
import com.neu.system.service.ISysRoleService;
import com.neu.system.service.ISysUserService;
/**
* 用户信息
*
* @author neusoft
*/
@RestController
@RequestMapping("/system/user")
public class SysUserController extends BaseController {
@Autowired
private ISysUserService userService;
@Autowired
private ISysRoleService roleService;
@Autowired
private ISysPostService postService;
@Autowired
private TokenService tokenService;
/**
* 获取用户列表
*/
@PreAuthorize("@ss.hasPermi('system:user:list')")
@GetMapping("/list")
public TableDataInfo list(SysUser user) {
startPage();
List<SysUser> list = userService.selectUserList(user);
return getDataTable(list);
}
@Log(title = "用户管理", businessType = BusinessType.EXPORT)
@PreAuthorize("@ss.hasPermi('system:user:export')")
@GetMapping("/export")
public AjaxResult export(SysUser user) {
List<SysUser> list = userService.selectUserList(user);
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
return util.exportExcel(list, "用户数据");
}
@Log(title = "用户管理", businessType = BusinessType.IMPORT)
@PreAuthorize("@ss.hasPermi('system:user:import')")
@PostMapping("/importData")
public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
List<SysUser> userList = util.importExcel(file.getInputStream());
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
String operName = loginUser.getUsername();
String message = userService.importUser(userList, updateSupport, operName);
return AjaxResult.success(message);
}
@GetMapping("/importTemplate")
public AjaxResult importTemplate() {
ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class);
return util.importTemplateExcel("用户数据");
}
/**
* 根据用户编号获取详细信息
*/
//@PreAuthorize("@ss.hasPermi('system:user:query')")
@GetMapping(value = {"/", "/{userId}"})
public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) {
AjaxResult ajax = AjaxResult.success();
List<SysRole> roles = roleService.selectRoleAll();
ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList()));
ajax.put("posts", postService.selectPostAll());
if (StringUtils.isNotNull(userId)) {
ajax.put("realName", getUser().getRealName());
ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId));
ajax.put("postIds", postService.selectPostListByUserId(userId));
ajax.put("roleIds", roleService.selectRoleListByUserId(userId));
}
return ajax;
}
/**
* 新增用户
*/
@PreAuthorize("@ss.hasPermi('system:user:add')")
@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@Validated @RequestBody SysUser user) {
if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) {
return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在");
} else if (StringUtils.isNotEmpty(user.getPhonenumber())
&& UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail())
&& UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setCreateBy(SecurityUtils.getUsername());
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
return toAjax(userService.insertUser(user));
}
/**
* 修改用户
*/
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@Validated @RequestBody SysUser user) {
userService.checkUserAllowed(user);
if (StringUtils.isNotEmpty(user.getPhonenumber())
&& UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) {
return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在");
} else if (StringUtils.isNotEmpty(user.getEmail())
&& UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) {
return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在");
}
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.updateUser(user));
}
/**
* 删除用户
*/
@PreAuthorize("@ss.hasPermi('system:user:remove')")
@Log(title = "用户管理", businessType = BusinessType.DELETE)
@DeleteMapping("/{userIds}")
public AjaxResult remove(@PathVariable Long[] userIds) {
return toAjax(userService.deleteUserByIds(userIds));
}
/**
* 重置密码
*/
@PreAuthorize("@ss.hasPermi('system:user:resetPwd')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/resetPwd")
public AjaxResult resetPwd(@RequestBody SysUser user) {
userService.checkUserAllowed(user);
user.setPassword(SecurityUtils.encryptPassword(user.getPassword()));
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.resetPwd(user));
}
/**
* 状态修改
*/
@PreAuthorize("@ss.hasPermi('system:user:edit')")
@Log(title = "用户管理", businessType = BusinessType.UPDATE)
@PutMapping("/changeStatus")
public AjaxResult changeStatus(@RequestBody SysUser user) {
userService.checkUserAllowed(user);
user.setUpdateBy(SecurityUtils.getUsername());
return toAjax(userService.updateUserStatus(user));
}
}

View File

@ -0,0 +1,25 @@
package com.neu.web.controller.tool;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.neu.common.core.controller.BaseController;
/**
* swagger 接口
*
* @author neusoft
*/
@Controller
@RequestMapping("/tool/swagger")
public class SwaggerController extends BaseController
{
@PreAuthorize("@ss.hasPermi('tool:swagger:view')")
@GetMapping()
public String index()
{
return redirect("/swagger-ui.html");
}
}

View File

@ -0,0 +1,177 @@
package com.neu.web.controller.tool;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.utils.StringUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
/**
* swagger 用户测试方法
*
* @author neusoft
*/
@Api("用户信息管理")
@RestController
@RequestMapping("/test/user")
public class TestController extends BaseController
{
private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>();
{
users.put(1, new UserEntity(1, "admin", "admin123", "15888888888"));
users.put(2, new UserEntity(2, "ry", "admin123", "15666666666"));
}
@ApiOperation("获取用户列表")
@GetMapping("/list")
public AjaxResult userList()
{
List<UserEntity> userList = new ArrayList<UserEntity>(users.values());
return AjaxResult.success(userList);
}
@ApiOperation("获取用户详细")
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path")
@GetMapping("/{userId}")
public AjaxResult getUser(@PathVariable Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
return AjaxResult.success(users.get(userId));
}
else
{
return AjaxResult.error("用户不存在");
}
}
@ApiOperation("新增用户")
@ApiImplicitParam(name = "userEntity", value = "新增用户信息", dataType = "UserEntity")
@PostMapping("/save")
public AjaxResult save(UserEntity user)
{
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
{
return AjaxResult.error("用户ID不能为空");
}
return AjaxResult.success(users.put(user.getUserId(), user));
}
@ApiOperation("更新用户")
@ApiImplicitParam(name = "userEntity", value = "新增用户信息", dataType = "UserEntity")
@PutMapping("/update")
public AjaxResult update(UserEntity user)
{
if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId()))
{
return AjaxResult.error("用户ID不能为空");
}
if (users.isEmpty() || !users.containsKey(user.getUserId()))
{
return AjaxResult.error("用户不存在");
}
users.remove(user.getUserId());
return AjaxResult.success(users.put(user.getUserId(), user));
}
@ApiOperation("删除用户信息")
@ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path")
@DeleteMapping("/{userId}")
public AjaxResult delete(@PathVariable Integer userId)
{
if (!users.isEmpty() && users.containsKey(userId))
{
users.remove(userId);
return AjaxResult.success();
}
else
{
return AjaxResult.error("用户不存在");
}
}
}
@ApiModel("用户实体")
class UserEntity
{
@ApiModelProperty("用户ID")
private Integer userId;
@ApiModelProperty("用户名称")
private String username;
@ApiModelProperty("用户密码")
private String password;
@ApiModelProperty("用户手机")
private String mobile;
public UserEntity()
{
}
public UserEntity(Integer userId, String username, String password, String mobile)
{
this.userId = userId;
this.username = username;
this.password = password;
this.mobile = mobile;
}
public Integer getUserId()
{
return userId;
}
public void setUserId(Integer userId)
{
this.userId = userId;
}
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = password;
}
public String getMobile()
{
return mobile;
}
public void setMobile(String mobile)
{
this.mobile = mobile;
}
}

View File

@ -0,0 +1,138 @@
package com.neu.web.core.config;
import java.util.ArrayList;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.github.xiaoymin.knife4j.spring.extension.OpenApiExtensionResolver;
import com.neu.common.config.NeuConfig;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.AuthorizationScope;
import springfox.documentation.service.Contact;
import springfox.documentation.service.SecurityReference;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
/**
* Swagger2的接口配置
*
* @author neusoft
*/
@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig
{
/** 系统基础配置 */
@Autowired
private NeuConfig ruoyiConfig;
/** 是否开启swagger */
@Value("${swagger.enabled}")
private boolean enabled;
/** 设置请求的统一前缀 */
@Value("${swagger.pathMapping}")
private String pathMapping;
private final OpenApiExtensionResolver openApiExtensionResolver;
@Autowired
public SwaggerConfig(OpenApiExtensionResolver openApiExtensionResolver) {
this.openApiExtensionResolver = openApiExtensionResolver;
}
/**
* 创建API
*/
@Bean
public Docket createRestApi()
{
return new Docket(DocumentationType.SWAGGER_2)
// 是否启用Swagger
.enable(enabled)
// 用来创建该API的基本信息展示在文档的页面中自定义展示的信息
.apiInfo(apiInfo())
// 设置哪些接口暴露给Swagger展示
.select()
// 扫描所有有注解的api用这种方式更灵活
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
// 扫描指定包中的swagger注解
// .apis(RequestHandlerSelectors.basePackage("com.neu.project.tool.swagger"))
// 扫描所有 .apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.groupName("双碳")
/* 设置安全模式swagger可以设置访问token */
.securitySchemes(securitySchemes())
.securityContexts(securityContexts())
.pathMapping(pathMapping)
.extensions(openApiExtensionResolver.buildSettingExtensions());
}
/**
* 安全模式这里指定token通过Authorization头请求头传递
*/
private List<ApiKey> securitySchemes()
{
List<ApiKey> apiKeyList = new ArrayList<ApiKey>();
apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
return apiKeyList;
}
/**
* 安全上下文
*/
private List<SecurityContext> securityContexts()
{
List<SecurityContext> securityContexts = new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("^(?!auth).*$"))
.build());
return securityContexts;
}
/**
* 默认的安全上引用
*/
private List<SecurityReference> defaultAuth()
{
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences = new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences;
}
/**
* 添加摘要信息
*/
private ApiInfo apiInfo()
{
// 用ApiInfoBuilder进行定制
return new ApiInfoBuilder()
// 设置标题
.title("标题:双碳管理系统接口文档")
// 描述
.description("描述双碳管理系统REST服务接口说明")
// 作者信息
.contact(new Contact(ruoyiConfig.getName(), null, null))
// 版本
.version("版本号:" + ruoyiConfig.getVersion())
.build();
}
}

View File

@ -0,0 +1 @@
restart.include.json=/com.alibaba.fastjson.*.jar

View File

@ -0,0 +1,27 @@
@startuml
'https://plantuml.com/class-diagram
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList
class ArrayList {
Object[] elementData
size()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
@enduml

View File

@ -0,0 +1,57 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://127.0.0.1:3306/carbon?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username:
login-password:
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

View File

@ -0,0 +1,134 @@
# 项目相关配置
carbon:
# 名称
name: carbon
# 版本
version: 3.3.0
# 版权年份
copyrightYear: 2022
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/neu/uploadPathLinux配置 /home/neu/uploadPath
profile: D:/neu/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 9090
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数默认为200
max-threads: 800
# Tomcat启动初始化的线程数默认值25
min-spare-threads: 30
basedir: /home/carbon/temp
connection-timeout: 60000
# 日志配置
logging:
level:
com.neu: debug
org.springframework: warn
# Spring配置
spring:
mvc:
async:
request-timeout:
60000
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 127.0.0.1
# 端口默认为6379
port: 6379
# 数据库索引
database: 12
# 密码
# password: ljxl@#$%
# 连接超时时间
timeout: 60s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 10
# 连接池的最大数据库连接数
max-active: 50
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期默认30分钟
expireTime: 1440
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.neu.**.domain
# 配置mapper的扫描找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /
knife4j:
enable: true
setting:
enableFooter: false
enableFooterCustom: true
footerCustomContent:
enableHomeCustom: true
homeCustomLocation: classpath:readme.md
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice/*
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*

View File

@ -0,0 +1,2 @@
Application Version: ${carbon.version}
Spring Boot Version: ${spring-boot.version}

View File

@ -0,0 +1,36 @@
#错误消息
not.null=* 必须填写
user.jcaptcha.error=验证码错误
user.jcaptcha.expire=验证码已失效
user.not.exists=用户不存在/密码错误
user.password.not.match=用户不存在/密码错误
user.password.retry.limit.count=密码输入错误{0}次
user.password.retry.limit.exceed=密码输入错误{0}次帐户锁定10分钟
user.password.delete=对不起,您的账号已被删除
user.blocked=用户已封禁,请联系管理员
role.blocked=角色已封禁,请联系管理员
user.logout.success=退出成功
length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功
user.notfound=请重新登录
user.forcelogout=管理员强制退出,请重新登录
user.unknown.error=未知错误,请重新登录
##文件上传消息
upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB
upload.filename.exceed.length=上传的文件名最长{0}个字符
##权限
no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/carbon/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.neu" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="info" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" /> <!-- 全局映射器启用缓存 -->
<setting name="useGeneratedKeys" value="true" /> <!-- 允许 JDBC 支持自动生成主键 -->
<setting name="defaultExecutorType" value="REUSE" /> <!-- 配置默认的执行器 -->
<setting name="logImpl" value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
</settings>
<plugins>
<plugin interceptor="com.neu.framework.interceptor.SetSysParamsInterceptor">
</plugin>
</plugins>
</configuration>

View File

@ -0,0 +1,50 @@
**REST接口说明文档**
* **登录说明**
处于安全考虑部分接口需要先登录获取授权TOKEN信息才能调用接口功能需要认证信息的接口请参见每个接口的详细说明。
* **注销说明**
用户退出登录统一接口:/logout无需参数POST请求
* **安全认证**
需要安全认证的接口需要在请求头设置认证信息,格式如下:
参数Authorization
参数值: Bearer+空格+登录获取TOKEN
* **表格分页参数**
对于返回列表数据接口由于涉及到分页信息,需要传递分页参数,格式如下:
参数pageNum  参数值:当前页码
参数pageSize 参数值:每页数据条数
* **表格排序说明**
对于需要排序的列表,需要传递排序参数,格式如下:
参数orderByColumn
参数值:数据库表字段+空格+排序方式asc或者desc
如果需要多个字段排序请用英文逗号隔开
* **系统字典**
对于某些接口查询参数或者返回字段涉及到类型或者状态的可能需要使用到系统字典,调用系统字典接口通过类型可以获取到字典码和字典值。
目前系统提供字典如下:
| 字典名称 | 字典类型 | 字典值 | 字典码 |
|--------|------------------------|---------|---------|
| 广告类型 | adv_type | 主页轮播 | 2 |
| 广告类型 | adv_type | 引导页轮播 | 1 |
| 用户性别 | sys_user_sex | 男 | 0 |
| 用户性别 | sys_user_sex | 女 | 1 |
| 系统是否 | sys_yes_no | 否 | N |
| 系统是否 | sys_yes_no | 是 | Y |

View File

@ -0,0 +1 @@
restart.include.json=/com.alibaba.fastjson.*.jar

View File

@ -0,0 +1,27 @@
@startuml
'https://plantuml.com/class-diagram
abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection
List <|-- AbstractList
Collection <|-- AbstractCollection
Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList
class ArrayList {
Object[] elementData
size()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
@enduml

View File

@ -0,0 +1,57 @@
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://127.0.0.1:3306/carbon?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username:
login-password:
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true

View File

@ -0,0 +1,134 @@
# 项目相关配置
carbon:
# 名称
name: carbon
# 版本
version: 3.3.0
# 版权年份
copyrightYear: 2022
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/neu/uploadPathLinux配置 /home/neu/uploadPath
profile: D:/neu/uploadPath
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
captchaType: math
# 开发环境配置
server:
# 服务器的HTTP端口默认为8080
port: 9090
servlet:
# 应用的访问路径
context-path: /
tomcat:
# tomcat的URI编码
uri-encoding: UTF-8
# tomcat最大线程数默认为200
max-threads: 800
# Tomcat启动初始化的线程数默认值25
min-spare-threads: 30
basedir: /home/carbon/temp
connection-timeout: 60000
# 日志配置
logging:
level:
com.neu: debug
org.springframework: warn
# Spring配置
spring:
mvc:
async:
request-timeout:
60000
# 资源信息
messages:
# 国际化资源文件路径
basename: i18n/messages
profiles:
active: druid
# 文件上传
servlet:
multipart:
# 单个文件大小
max-file-size: 10MB
# 设置总上传的文件大小
max-request-size: 20MB
# 服务模块
devtools:
restart:
# 热部署开关
enabled: true
# redis 配置
redis:
# 地址
host: 127.0.0.1
# 端口默认为6379
port: 6379
# 数据库索引
database: 12
# 密码
# password: ljxl@#$%
# 连接超时时间
timeout: 60s
lettuce:
pool:
# 连接池中的最小空闲连接
min-idle: 0
# 连接池中的最大空闲连接
max-idle: 10
# 连接池的最大数据库连接数
max-active: 50
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
# token配置
token:
# 令牌自定义标识
header: Authorization
# 令牌密钥
secret: abcdefghijklmnopqrstuvwxyz
# 令牌有效期默认30分钟
expireTime: 1440
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.neu.**.domain
# 配置mapper的扫描找到所有的mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
# 加载全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
# PageHelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
# Swagger配置
swagger:
# 是否开启swagger
enabled: true
# 请求前缀
pathMapping: /
knife4j:
enable: true
setting:
enableFooter: false
enableFooterCustom: true
footerCustomContent:
enableHomeCustom: true
homeCustomLocation: classpath:readme.md
# 防止XSS攻击
xss:
# 过滤开关
enabled: true
# 排除链接(多个用逗号分隔)
excludes: /system/notice/*
# 匹配链接
urlPatterns: /system/*,/monitor/*,/tool/*

View File

@ -0,0 +1,2 @@
Application Version: ${carbon.version}
Spring Boot Version: ${spring-boot.version}

Binary file not shown.

View File

@ -0,0 +1,36 @@
#错误消息
not.null=* 必须填写
user.jcaptcha.error=验证码错误
user.jcaptcha.expire=验证码已失效
user.not.exists=用户不存在/密码错误
user.password.not.match=用户不存在/密码错误
user.password.retry.limit.count=密码输入错误{0}次
user.password.retry.limit.exceed=密码输入错误{0}次帐户锁定10分钟
user.password.delete=对不起,您的账号已被删除
user.blocked=用户已封禁,请联系管理员
role.blocked=角色已封禁,请联系管理员
user.logout.success=退出成功
length.not.valid=长度必须在{min}到{max}个字符之间
user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成且必须以非数字开头
user.password.not.valid=* 5-50个字符
user.email.not.valid=邮箱格式错误
user.mobile.phone.number.not.valid=手机号格式错误
user.login.success=登录成功
user.notfound=请重新登录
user.forcelogout=管理员强制退出,请重新登录
user.unknown.error=未知错误,请重新登录
##文件上传消息
upload.exceed.maxSize=上传的文件大小超出限制的文件大小!<br/>允许的文件最大大小是:{0}MB
upload.filename.exceed.length=上传的文件名最长{0}个字符
##权限
no.permission=您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}]
no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}]
no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}]
no.export.permission=您没有导出数据的权限,请联系管理员添加权限 [{0}]
no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}]

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志存放路径 -->
<property name="log.path" value="/home/carbon/logs" />
<!-- 日志输出格式 -->
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
<!-- 控制台输出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统日志输出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-info.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>INFO</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-error.log</file>
<!-- 循环政策:基于时间创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/sys-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 过滤的级别 -->
<level>ERROR</level>
<!-- 匹配时的操作:接收(记录) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配时的操作:拒绝(不记录) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 用户访问日志输出 -->
<appender name="sys-user" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/sys-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 按天回滚 daily -->
<fileNamePattern>${log.path}/sys-user.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的历史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>
<!-- 系统模块日志级别控制 -->
<logger name="com.neu" level="info" />
<!-- Spring日志级别控制 -->
<logger name="org.springframework" level="info" />
<root level="info">
<appender-ref ref="console" />
</root>
<!--系统操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>
<!--系统用户操作日志-->
<logger name="sys-user" level="info">
<appender-ref ref="sys-user"/>
</logger>
</configuration>

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="cacheEnabled" value="true" /> <!-- 全局映射器启用缓存 -->
<setting name="useGeneratedKeys" value="true" /> <!-- 允许 JDBC 支持自动生成主键 -->
<setting name="defaultExecutorType" value="REUSE" /> <!-- 配置默认的执行器 -->
<setting name="logImpl" value="SLF4J" /> <!-- 指定 MyBatis 所用日志的具体实现 -->
<!-- <setting name="mapUnderscoreToCamelCase" value="true"/> 驼峰式命名 -->
</settings>
<plugins>
<plugin interceptor="com.neu.framework.interceptor.SetSysParamsInterceptor">
</plugin>
</plugins>
</configuration>

View File

@ -0,0 +1,50 @@
**REST接口说明文档**
* **登录说明**
处于安全考虑部分接口需要先登录获取授权TOKEN信息才能调用接口功能需要认证信息的接口请参见每个接口的详细说明。
* **注销说明**
用户退出登录统一接口:/logout无需参数POST请求
* **安全认证**
需要安全认证的接口需要在请求头设置认证信息,格式如下:
参数Authorization
参数值: Bearer+空格+登录获取TOKEN
* **表格分页参数**
对于返回列表数据接口由于涉及到分页信息,需要传递分页参数,格式如下:
参数pageNum  参数值:当前页码
参数pageSize 参数值:每页数据条数
* **表格排序说明**
对于需要排序的列表,需要传递排序参数,格式如下:
参数orderByColumn
参数值:数据库表字段+空格+排序方式asc或者desc
如果需要多个字段排序请用英文逗号隔开
* **系统字典**
对于某些接口查询参数或者返回字段涉及到类型或者状态的可能需要使用到系统字典,调用系统字典接口通过类型可以获取到字典码和字典值。
目前系统提供字典如下:
| 字典名称 | 字典类型 | 字典值 | 字典码 |
|--------|------------------------|---------|---------|
| 广告类型 | adv_type | 主页轮播 | 2 |
| 广告类型 | adv_type | 引导页轮播 | 1 |
| 用户性别 | sys_user_sex | 男 | 0 |
| 用户性别 | sys_user_sex | 女 | 1 |
| 系统是否 | sys_yes_no | 否 | N |
| 系统是否 | sys_yes_no | 是 | Y |

36
neu-carbon-bid/pom.xml Normal file
View File

@ -0,0 +1,36 @@
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.neu</groupId>
<artifactId>carbon</artifactId>
<version>3.3.0</version>
</parent>
<artifactId>neu-carbon-bid</artifactId>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-framework</artifactId>
</dependency>
<!-- 通用工具 -->
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-common</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.neu</groupId>
<artifactId>neu-carbon-service</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -0,0 +1,166 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidBidding;
import com.neu.carbon.bid.service.IBidBiddingService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 招投标Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"招投标"})
@RestController
@RequestMapping("/bid/bidding")
public class BidBiddingController extends BaseController
{
@Autowired
private IBidBiddingService bidBiddingService;
/**
* 查询招投标列表
*/
@GetMapping("/list")
@ApiOperation("查询招投标列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidBidding bidBidding)
{
startPage();
List<BidBidding> list = bidBiddingService.selectBidBiddingList(bidBidding);
return getDataTable(list);
}
@GetMapping("/front/list")
@ApiOperation("前端查询招投标列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo frontList(BidBidding bidBidding)
{
startPage();
List<BidBidding> list = bidBiddingService.selectBidBiddingList(bidBidding);
return getDataTable(list);
}
/**
* 导出招投标列表
*/
@ApiOperation("导出招投标列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:bidding:export')")
@Log(title = "招投标", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidBidding bidBidding)
{
List<BidBidding> list = bidBiddingService.selectBidBiddingList(bidBidding);
ExcelUtil<BidBidding> util = new ExcelUtil<BidBidding>(BidBidding.class);
return util.exportExcel(list, "bidding");
}
/**
* 获取招投标详细信息
*/
@ApiOperation("获取招投标详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidBiddingService.selectBidBiddingById(id));
}
@ApiOperation("获取招投标详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidBiddingService.selectBidBiddingById(id));
}
/**
* 新增招投标
*/
@ApiOperation("新增招投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidding:add')")
@Log(title = "招投标", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidBidding bidBidding)
{
return toAjax(bidBiddingService.insertBidBidding(bidBidding));
}
/**
* 修改招投标
*/
@ApiOperation("修改招投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidding:edit')")
@Log(title = "招投标", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidBidding bidBidding)
{
return toAjax(bidBiddingService.updateBidBidding(bidBidding));
}
/**
* 删除招投标
*/
@ApiOperation("删除招投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidding:remove')")
@Log(title = "招投标", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidBiddingService.deleteBidBiddingByIds(ids));
}
}

View File

@ -0,0 +1,139 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidBiddingFiles;
import com.neu.carbon.bid.service.IBidBiddingFilesService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 招标信息附件Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"招标信息附件"})
@RestController
@RequestMapping("/bid/files")
public class BidBiddingFilesController extends BaseController
{
@Autowired
private IBidBiddingFilesService bidBiddingFilesService;
/**
* 查询招标信息附件列表
*/
@GetMapping("/list")
@ApiOperation("查询招标信息附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidBiddingFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidBiddingFiles bidBiddingFiles)
{
startPage();
List<BidBiddingFiles> list = bidBiddingFilesService.selectBidBiddingFilesList(bidBiddingFiles);
return getDataTable(list);
}
/**
* 导出招标信息附件列表
*/
@ApiOperation("导出招标信息附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:files:export')")
@Log(title = "招标信息附件", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidBiddingFiles bidBiddingFiles)
{
List<BidBiddingFiles> list = bidBiddingFilesService.selectBidBiddingFilesList(bidBiddingFiles);
ExcelUtil<BidBiddingFiles> util = new ExcelUtil<BidBiddingFiles>(BidBiddingFiles.class);
return util.exportExcel(list, "files");
}
/**
* 获取招标信息附件详细信息
*/
@ApiOperation("获取招标信息附件详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidBiddingFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidBiddingFilesService.selectBidBiddingFilesById(id));
}
/**
* 新增招标信息附件
*/
@ApiOperation("新增招标信息附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:add')")
@Log(title = "招标信息附件", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidBiddingFiles bidBiddingFiles)
{
return toAjax(bidBiddingFilesService.insertBidBiddingFiles(bidBiddingFiles));
}
/**
* 修改招标信息附件
*/
@ApiOperation("修改招标信息附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:edit')")
@Log(title = "招标信息附件", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidBiddingFiles bidBiddingFiles)
{
return toAjax(bidBiddingFilesService.updateBidBiddingFiles(bidBiddingFiles));
}
/**
* 删除招标信息附件
*/
@ApiOperation("删除招标信息附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:remove')")
@Log(title = "招标信息附件", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidBiddingFilesService.deleteBidBiddingFilesByIds(ids));
}
}

View File

@ -0,0 +1,172 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidComplaint;
import com.neu.carbon.bid.service.IBidComplaintService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 违规投诉Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"违规投诉"})
@RestController
@RequestMapping("/bid/complaint")
public class BidComplaintController extends BaseController
{
@Autowired
private IBidComplaintService bidComplaintService;
/**
* 查询违规投诉列表
*/
@GetMapping("/list")
@ApiOperation("查询违规投诉列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidComplaint.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidComplaint bidComplaint)
{
startPage();
List<BidComplaint> list = bidComplaintService.selectBidComplaintList(bidComplaint);
return getDataTable(list);
}
@GetMapping("/front/list")
@ApiOperation("查询违规投诉列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidComplaint.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo frontList(BidComplaint bidComplaint)
{
startPage();
List<BidComplaint> list = bidComplaintService.selectBidComplaintList(bidComplaint);
return getDataTable(list);
}
/**
* 导出违规投诉列表
*/
@ApiOperation("导出违规投诉列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:complaint:export')")
@Log(title = "违规投诉", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidComplaint bidComplaint)
{
List<BidComplaint> list = bidComplaintService.selectBidComplaintList(bidComplaint);
ExcelUtil<BidComplaint> util = new ExcelUtil<BidComplaint>(BidComplaint.class);
return util.exportExcel(list, "complaint");
}
/**
* 获取违规投诉详细信息
*/
@ApiOperation("获取违规投诉详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidComplaint.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidComplaintService.selectBidComplaintById(id));
}
@ApiOperation("获取违规投诉详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidComplaint.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidComplaintService.selectBidComplaintById(id));
}
/**
* 新增违规投诉
*/
@ApiOperation("新增违规投诉")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:complaint:add')")
@Log(title = "违规投诉", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidComplaint bidComplaint)
{
return toAjax(bidComplaintService.insertBidComplaint(bidComplaint));
}
@PostMapping("/front/add")
public AjaxResult frontAdd(@RequestBody BidComplaint bidComplaint)
{
return toAjax(bidComplaintService.insertBidComplaint(bidComplaint));
}
/**
* 修改违规投诉
*/
@ApiOperation("修改违规投诉")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:complaint:edit')")
@Log(title = "违规投诉", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidComplaint bidComplaint)
{
return toAjax(bidComplaintService.updateBidComplaint(bidComplaint));
}
/**
* 删除违规投诉
*/
@ApiOperation("删除违规投诉")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:complaint:remove')")
@Log(title = "违规投诉", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidComplaintService.deleteBidComplaintByIds(ids));
}
}

View File

@ -0,0 +1,139 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidComplaintFiles;
import com.neu.carbon.bid.service.IBidComplaintFilesService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 投诉附件Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"投诉附件"})
@RestController
@RequestMapping("/bid/complaint/files")
public class BidComplaintFilesController extends BaseController
{
@Autowired
private IBidComplaintFilesService bidComplaintFilesService;
/**
* 查询投诉附件列表
*/
@GetMapping("/list")
@ApiOperation("查询投诉附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidComplaintFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidComplaintFiles bidComplaintFiles)
{
startPage();
List<BidComplaintFiles> list = bidComplaintFilesService.selectBidComplaintFilesList(bidComplaintFiles);
return getDataTable(list);
}
/**
* 导出投诉附件列表
*/
@ApiOperation("导出投诉附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:files:export')")
@Log(title = "投诉附件", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidComplaintFiles bidComplaintFiles)
{
List<BidComplaintFiles> list = bidComplaintFilesService.selectBidComplaintFilesList(bidComplaintFiles);
ExcelUtil<BidComplaintFiles> util = new ExcelUtil<BidComplaintFiles>(BidComplaintFiles.class);
return util.exportExcel(list, "files");
}
/**
* 获取投诉附件详细信息
*/
@ApiOperation("获取投诉附件详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidComplaintFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidComplaintFilesService.selectBidComplaintFilesById(id));
}
/**
* 新增投诉附件
*/
@ApiOperation("新增投诉附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:add')")
@Log(title = "投诉附件", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidComplaintFiles bidComplaintFiles)
{
return toAjax(bidComplaintFilesService.insertBidComplaintFiles(bidComplaintFiles));
}
/**
* 修改投诉附件
*/
@ApiOperation("修改投诉附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:edit')")
@Log(title = "投诉附件", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidComplaintFiles bidComplaintFiles)
{
return toAjax(bidComplaintFilesService.updateBidComplaintFiles(bidComplaintFiles));
}
/**
* 删除投诉附件
*/
@ApiOperation("删除投诉附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:remove')")
@Log(title = "投诉附件", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidComplaintFilesService.deleteBidComplaintFilesByIds(ids));
}
}

View File

@ -0,0 +1,172 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidEnterpriseBidding;
import com.neu.carbon.bid.service.IBidEnterpriseBiddingService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 企业投标Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"企业投标"})
@RestController
@RequestMapping("/bid/enterprise/bidding")
public class BidEnterpriseBiddingController extends BaseController
{
@Autowired
private IBidEnterpriseBiddingService bidEnterpriseBiddingService;
/**
* 查询企业投标列表
*/
@GetMapping("/list")
@ApiOperation("查询企业投标列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidEnterpriseBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidEnterpriseBidding bidEnterpriseBidding)
{
startPage();
List<BidEnterpriseBidding> list = bidEnterpriseBiddingService.selectBidEnterpriseBiddingList(bidEnterpriseBidding);
return getDataTable(list);
}
@GetMapping("/front/list")
public TableDataInfo frontList(BidEnterpriseBidding bidEnterpriseBidding)
{
startPage();
List<BidEnterpriseBidding> list = bidEnterpriseBiddingService.selectBidEnterpriseBiddingList(bidEnterpriseBidding);
return getDataTable(list);
}
/**
* 导出企业投标列表
*/
@ApiOperation("导出企业投标列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:enterprisebidding:export')")
@Log(title = "企业投标", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidEnterpriseBidding bidEnterpriseBidding)
{
List<BidEnterpriseBidding> list = bidEnterpriseBiddingService.selectBidEnterpriseBiddingList(bidEnterpriseBidding);
ExcelUtil<BidEnterpriseBidding> util = new ExcelUtil<BidEnterpriseBidding>(BidEnterpriseBidding.class);
return util.exportExcel(list, "bidding");
}
/**
* 获取企业投标详细信息
*/
@ApiOperation("获取企业投标详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidEnterpriseBidding.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidEnterpriseBiddingService.selectBidEnterpriseBiddingById(id));
}
@GetMapping(value = "/front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidEnterpriseBiddingService.selectBidEnterpriseBiddingById(id));
}
/**
* 新增企业投标
*/
@ApiOperation("新增企业投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprisebidding:add')")
@Log(title = "企业投标", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidEnterpriseBidding bidEnterpriseBidding)
{
return toAjax(bidEnterpriseBiddingService.insertBidEnterpriseBidding(bidEnterpriseBidding));
}
@ApiOperation("新增企业投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PostMapping("/front/add")
public AjaxResult frontAdd(@RequestBody BidEnterpriseBidding bidEnterpriseBidding)
{
return toAjax(bidEnterpriseBiddingService.insertBidEnterpriseBidding(bidEnterpriseBidding));
}
/**
* 修改企业投标
*/
@ApiOperation("修改企业投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprisebidding:edit')")
@Log(title = "企业投标", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidEnterpriseBidding bidEnterpriseBidding)
{
return toAjax(bidEnterpriseBiddingService.updateBidEnterpriseBidding(bidEnterpriseBidding));
}
@PostMapping("/front/edit")
public AjaxResult frontEdit(@RequestBody BidEnterpriseBidding bidEnterpriseBidding)
{
return toAjax(bidEnterpriseBiddingService.updateBidEnterpriseBidding(bidEnterpriseBidding));
}
/**
* 删除企业投标
*/
@ApiOperation("删除企业投标")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprisebidding:remove')")
@Log(title = "企业投标", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidEnterpriseBiddingService.deleteBidEnterpriseBiddingByIds(ids));
}
}

View File

@ -0,0 +1,139 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidEnterpriseBidfile;
import com.neu.carbon.bid.service.IBidEnterpriseBidfileService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 企业投标材料Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"企业投标材料"})
@RestController
@RequestMapping("/bid/bidfile")
public class BidEnterpriseBidfileController extends BaseController
{
@Autowired
private IBidEnterpriseBidfileService bidEnterpriseBidfileService;
/**
* 查询企业投标材料列表
*/
@GetMapping("/list")
@ApiOperation("查询企业投标材料列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidEnterpriseBidfile.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidEnterpriseBidfile bidEnterpriseBidfile)
{
startPage();
List<BidEnterpriseBidfile> list = bidEnterpriseBidfileService.selectBidEnterpriseBidfileList(bidEnterpriseBidfile);
return getDataTable(list);
}
/**
* 导出企业投标材料列表
*/
@ApiOperation("导出企业投标材料列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:bidfile:export')")
@Log(title = "企业投标材料", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidEnterpriseBidfile bidEnterpriseBidfile)
{
List<BidEnterpriseBidfile> list = bidEnterpriseBidfileService.selectBidEnterpriseBidfileList(bidEnterpriseBidfile);
ExcelUtil<BidEnterpriseBidfile> util = new ExcelUtil<BidEnterpriseBidfile>(BidEnterpriseBidfile.class);
return util.exportExcel(list, "bidfile");
}
/**
* 获取企业投标材料详细信息
*/
@ApiOperation("获取企业投标材料详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidEnterpriseBidfile.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidEnterpriseBidfileService.selectBidEnterpriseBidfileById(id));
}
/**
* 新增企业投标材料
*/
@ApiOperation("新增企业投标材料")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidfile:add')")
@Log(title = "企业投标材料", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidEnterpriseBidfile bidEnterpriseBidfile)
{
return toAjax(bidEnterpriseBidfileService.insertBidEnterpriseBidfile(bidEnterpriseBidfile));
}
/**
* 修改企业投标材料
*/
@ApiOperation("修改企业投标材料")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidfile:edit')")
@Log(title = "企业投标材料", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidEnterpriseBidfile bidEnterpriseBidfile)
{
return toAjax(bidEnterpriseBidfileService.updateBidEnterpriseBidfile(bidEnterpriseBidfile));
}
/**
* 删除企业投标材料
*/
@ApiOperation("删除企业投标材料")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:bidfile:remove')")
@Log(title = "企业投标材料", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidEnterpriseBidfileService.deleteBidEnterpriseBidfileByIds(ids));
}
}

View File

@ -0,0 +1,190 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import com.neu.common.utils.ip.AddressUtils;
import com.neu.common.utils.ip.IpUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidEnterprise;
import com.neu.carbon.bid.service.IBidEnterpriseService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
import javax.servlet.http.HttpServletRequest;
/**
* 投标企业信息Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"投标企业信息"})
@RestController
@RequestMapping("/bid/enterprise")
public class BidEnterpriseController extends BaseController {
@Autowired
private IBidEnterpriseService bidEnterpriseService;
/**
* 查询投标企业信息列表
*/
@GetMapping("/list")
@ApiOperation("查询投标企业信息列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidEnterprise.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidEnterprise bidEnterprise) {
startPage();
List<BidEnterprise> list = bidEnterpriseService.selectBidEnterpriseList(bidEnterprise);
return getDataTable(list);
}
@GetMapping("/front/list")
@ApiOperation("查询投标企业信息列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidEnterprise.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo frontList(BidEnterprise bidEnterprise) {
startPage();
List<BidEnterprise> list = bidEnterpriseService.selectBidEnterpriseList(bidEnterprise);
return getDataTable(list);
}
/**
* 导出投标企业信息列表
*/
@ApiOperation("导出投标企业信息列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:enterprise:export')")
@Log(title = "投标企业信息", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidEnterprise bidEnterprise) {
List<BidEnterprise> list = bidEnterpriseService.selectBidEnterpriseList(bidEnterprise);
ExcelUtil<BidEnterprise> util = new ExcelUtil<BidEnterprise>(BidEnterprise.class);
return util.exportExcel(list, "enterprise");
}
/**
* 获取投标企业信息详细信息
*/
@ApiOperation("获取投标企业信息详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidEnterprise.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id, HttpServletRequest request) {
String ip = IpUtils.getIpAddr(request);
String address = AddressUtils.getRealAddressByIP(ip);
BidEnterprise bidEnterprise = bidEnterpriseService.selectBidEnterpriseById(id);
bidEnterprise.setIpAddress(address);
return AjaxResult.success(bidEnterprise);
}
@ApiOperation("获取投标企业信息详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidEnterprise.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id, HttpServletRequest request) {
String ip = IpUtils.getIpAddr(request);
String address = AddressUtils.getRealAddressByIP(ip);
BidEnterprise bidEnterprise = bidEnterpriseService.selectBidEnterpriseById(id);
bidEnterprise.setIpAddress(address);
return AjaxResult.success(bidEnterprise);
}
/**
* 新增投标企业信息
*/
@ApiOperation("新增投标企业信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprise:add')")
@Log(title = "投标企业信息", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidEnterprise bidEnterprise) {
return toAjax(bidEnterpriseService.insertBidEnterprise(bidEnterprise));
}
@ApiOperation("新增投标企业信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PostMapping(value = "/front/add")
public AjaxResult frontAdd(@RequestBody BidEnterprise bidEnterprise) {
return toAjax(bidEnterpriseService.insertBidEnterprise(bidEnterprise));
}
/**
* 修改投标企业信息
*/
@ApiOperation("修改投标企业信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprise:edit')")
@Log(title = "投标企业信息", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidEnterprise bidEnterprise) {
return toAjax(bidEnterpriseService.updateBidEnterprise(bidEnterprise));
}
@ApiOperation("修改投标企业信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PostMapping(value = "/front/edit")
public AjaxResult frontEdit(@RequestBody BidEnterprise bidEnterprise) {
return toAjax(bidEnterpriseService.updateBidEnterprise(bidEnterprise));
}
/**
* 删除投标企业信息
*/
@ApiOperation("删除投标企业信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:enterprise:remove')")
@Log(title = "投标企业信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(bidEnterpriseService.deleteBidEnterpriseByIds(ids));
}
}

View File

@ -0,0 +1,169 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidPlatformInformation;
import com.neu.carbon.bid.service.IBidPlatformInformationService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 平台动态Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"平台动态"})
@RestController
@RequestMapping("/bid/information")
public class BidPlatformInformationController extends BaseController
{
@Autowired
private IBidPlatformInformationService bidPlatformInformationService;
/**
* 查询平台动态列表
*/
@GetMapping("/list")
@ApiOperation("查询平台动态列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidPlatformInformation.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidPlatformInformation bidPlatformInformation)
{
startPage();
List<BidPlatformInformation> list = bidPlatformInformationService.selectBidPlatformInformationList(bidPlatformInformation);
return getDataTable(list);
}
@GetMapping("/front/list")
@ApiOperation("查询平台动态列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidPlatformInformation.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo frontList(BidPlatformInformation bidPlatformInformation)
{
startPage();
List<BidPlatformInformation> list = bidPlatformInformationService.selectBidPlatformInformationList(bidPlatformInformation);
return getDataTable(list);
}
/**
* 导出平台动态列表
*/
@ApiOperation("导出平台动态列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:information:export')")
@Log(title = "平台动态", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidPlatformInformation bidPlatformInformation)
{
List<BidPlatformInformation> list = bidPlatformInformationService.selectBidPlatformInformationList(bidPlatformInformation);
ExcelUtil<BidPlatformInformation> util = new ExcelUtil<BidPlatformInformation>(BidPlatformInformation.class);
return util.exportExcel(list, "information");
}
/**
* 获取平台动态详细信息
*/
@ApiOperation("获取平台动态详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidPlatformInformation.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidPlatformInformationService.selectBidPlatformInformationById(id));
}
/**
* 获取平台动态详细信息
*/
@ApiOperation("获取平台动态详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidPlatformInformation.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidPlatformInformationService.selectBidPlatformInformationById(id));
}
/**
* 新增平台动态
*/
@ApiOperation("新增平台动态")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:information:add')")
@Log(title = "平台动态", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidPlatformInformation bidPlatformInformation)
{
return toAjax(bidPlatformInformationService.insertBidPlatformInformation(bidPlatformInformation));
}
/**
* 修改平台动态
*/
@ApiOperation("修改平台动态")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:information:edit')")
@Log(title = "平台动态", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidPlatformInformation bidPlatformInformation)
{
return toAjax(bidPlatformInformationService.updateBidPlatformInformation(bidPlatformInformation));
}
/**
* 删除平台动态
*/
@ApiOperation("删除平台动态")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:information:remove')")
@Log(title = "平台动态", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidPlatformInformationService.deleteBidPlatformInformationByIds(ids));
}
}

View File

@ -0,0 +1,165 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidPolicylaw;
import com.neu.carbon.bid.service.IBidPolicylawService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 政策法规Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"政策法规"})
@RestController
@RequestMapping("/bid/policylaw")
public class BidPolicylawController extends BaseController
{
@Autowired
private IBidPolicylawService bidPolicylawService;
/**
* 查询政策法规列表
*/
@GetMapping("/list")
@ApiOperation("查询政策法规列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidPolicylaw.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidPolicylaw bidPolicylaw)
{
startPage();
List<BidPolicylaw> list = bidPolicylawService.selectBidPolicylawList(bidPolicylaw);
return getDataTable(list);
}
@GetMapping("/front/list")
@ApiOperation("查询政策法规列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidPolicylaw.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo frontList(BidPolicylaw bidPolicylaw)
{
startPage();
List<BidPolicylaw> list = bidPolicylawService.selectBidPolicylawList(bidPolicylaw);
return getDataTable(list);
}
/**
* 导出政策法规列表
*/
@ApiOperation("导出政策法规列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:policylaw:export')")
@Log(title = "政策法规", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidPolicylaw bidPolicylaw)
{
List<BidPolicylaw> list = bidPolicylawService.selectBidPolicylawList(bidPolicylaw);
ExcelUtil<BidPolicylaw> util = new ExcelUtil<BidPolicylaw>(BidPolicylaw.class);
return util.exportExcel(list, "policylaw");
}
/**
* 获取政策法规详细信息
*/
@ApiOperation("获取政策法规详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidPolicylaw.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidPolicylawService.selectBidPolicylawById(id));
}
@ApiOperation("获取政策法规详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidPolicylaw.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/front/{id}")
public AjaxResult frontGetInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidPolicylawService.selectBidPolicylawById(id));
}
/**
* 新增政策法规
*/
@ApiOperation("新增政策法规")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:policylaw:add')")
@Log(title = "政策法规", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidPolicylaw bidPolicylaw)
{
return toAjax(bidPolicylawService.insertBidPolicylaw(bidPolicylaw));
}
/**
* 修改政策法规
*/
@ApiOperation("修改政策法规")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:policylaw:edit')")
@Log(title = "政策法规", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidPolicylaw bidPolicylaw)
{
return toAjax(bidPolicylawService.updateBidPolicylaw(bidPolicylaw));
}
/**
* 删除政策法规
*/
@ApiOperation("删除政策法规")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:policylaw:remove')")
@Log(title = "政策法规", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidPolicylawService.deleteBidPolicylawByIds(ids));
}
}

View File

@ -0,0 +1,139 @@
package com.neu.carbon.bid.controller;
import java.util.List;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.xiaoymin.knife4j.annotations.DynamicParameter;
import com.github.xiaoymin.knife4j.annotations.DynamicResponseParameters;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import com.neu.common.annotation.Log;
import com.neu.common.core.controller.BaseController;
import com.neu.common.core.domain.AjaxResult;
import com.neu.common.enums.BusinessType;
import com.neu.carbon.bid.domain.BidPolicylawFiles;
import com.neu.carbon.bid.service.IBidPolicylawFilesService;
import com.neu.common.utils.poi.ExcelUtil;
import com.neu.common.core.page.TableDataInfo;
/**
* 政策法规附件Controller
*
* @author neuedu
* @date 2023-04-21
*/
@Api(tags = {"政策法规附件"})
@RestController
@RequestMapping("/bid/policylaw/files")
public class BidPolicylawFilesController extends BaseController
{
@Autowired
private IBidPolicylawFilesService bidPolicylawFilesService;
/**
* 查询政策法规附件列表
*/
@GetMapping("/list")
@ApiOperation("查询政策法规附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "total", value = "总记录数"),
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "rows", value = "返回业务数据(数组类型)", dataTypeClass = BidPolicylawFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
public TableDataInfo list(BidPolicylawFiles bidPolicylawFiles)
{
startPage();
List<BidPolicylawFiles> list = bidPolicylawFilesService.selectBidPolicylawFilesList(bidPolicylawFiles);
return getDataTable(list);
}
/**
* 导出政策法规附件列表
*/
@ApiOperation("导出政策法规附件列表")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "文件名")
})
@PreAuthorize("@ss.hasPermi('bid:files:export')")
@Log(title = "政策法规附件", businessType = BusinessType.EXPORT)
@GetMapping("/export")
public AjaxResult export(BidPolicylawFiles bidPolicylawFiles)
{
List<BidPolicylawFiles> list = bidPolicylawFilesService.selectBidPolicylawFilesList(bidPolicylawFiles);
ExcelUtil<BidPolicylawFiles> util = new ExcelUtil<BidPolicylawFiles>(BidPolicylawFiles.class);
return util.exportExcel(list, "files");
}
/**
* 获取政策法规附件详细信息
*/
@ApiOperation("获取政策法规附件详细信息")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "data", value = "返回业务数据", dataTypeClass = BidPolicylawFiles.class),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return AjaxResult.success(bidPolicylawFilesService.selectBidPolicylawFilesById(id));
}
/**
* 新增政策法规附件
*/
@ApiOperation("新增政策法规附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:add')")
@Log(title = "政策法规附件", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody BidPolicylawFiles bidPolicylawFiles)
{
return toAjax(bidPolicylawFilesService.insertBidPolicylawFiles(bidPolicylawFiles));
}
/**
* 修改政策法规附件
*/
@ApiOperation("修改政策法规附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:edit')")
@Log(title = "政策法规附件", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody BidPolicylawFiles bidPolicylawFiles)
{
return toAjax(bidPolicylawFilesService.updateBidPolicylawFiles(bidPolicylawFiles));
}
/**
* 删除政策法规附件
*/
@ApiOperation("删除政策法规附件")
@DynamicResponseParameters(properties = {
@DynamicParameter(name = "code", value = "状态码200正确其他错误"),
@DynamicParameter(name = "msg", value = "返回消息内容")
})
@PreAuthorize("@ss.hasPermi('bid:files:remove')")
@Log(title = "政策法规附件", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(bidPolicylawFilesService.deleteBidPolicylawFilesByIds(ids));
}
}

View File

@ -0,0 +1,38 @@
package com.neu.carbon.mes;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* Unit test for simple App.
*/
public class AppTest
extends TestCase
{
/**
* Create the test case
*
* @param testName name of the test case
*/
public AppTest( String testName )
{
super( testName );
}
/**
* @return the suite of tests being tested
*/
public static Test suite()
{
return new TestSuite( AppTest.class );
}
/**
* Rigourous Test :-)
*/
public void testApp()
{
assertTrue( true );
}
}

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