我自己常用的模板(不断更新)
标签: 我自己常用的模板(不断更新) jQuery博客 51CTO博客
2023-05-01 18:24:04 309浏览
我自己常用的模板(不断更新),application.ymlserver:port:80servlet:context-path:/#项目的上
application.yml
server:
port: 80
servlet:
context-path: / #项目的上下文路径
spring:
datasource:
url: jdbc:mysql://localhost:3306/travel
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
hikari:idle-timeout: 60000
maximum-pool-size: 30
minimum-idle: 10
thymeleaf:
cache: false
# mybatis plus配置
mybatis-plus:
mapper-locations: classpath:/mybatis/*.xml #加载映射文件
type-aliases-package: com.lxs.travel.domain #别名搜索的包
configuration:
lazy-loading-enabled: true #打开懒加载
aggressive-lazy-loading: false #关闭积极懒加载
mybatis分页
@Configuration
@MapperScan("com.zx.travel.dao")
public class MybatisPlusConfig {
@Bean
public PageInterceptor pageInterceptor(){
return new PageInterceptor();
}
}
@RequestMapping("/page")
public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) {
PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize);
model.addAttribute("page", page);
//查询所有分类生成下拉框
List<Category> categories = categoryService.find();
model.addAttribute("categories", categories);
List<Seller> sellers = sellerService.find(new Seller());
model.addAttribute("sellers", sellers);
//用于页面回显
model.addAttribute("route", route);
return "route/list";
}
批量删除
@RequestMapping("/deleteChecked")
public String deleteChecked(@RequestParam("ids") String[] ids) {
JsonResult jsonResult=new JsonResult();
//要删除的id
int deleteId=-1;
jsonResult.setCode(0);
for (String id : ids) {
if (id.contains("[")) {
deleteId = Integer.parseInt(id.replace("[", ""));
}
if (id.contains("]")) {
deleteId = Integer.parseInt(id.replace("]", ""));
}
boolean b = questionsService.deleteQuestion(deleteId);
if (b == false) {
jsonResult.setCode(-1);
}
}
return new Gson().toJson(jsonResult);
}
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" >
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" type="text/css" href="../../static/css/show.css" th:href="@{/css/show.css}"/>
<link rel="stylesheet" type="text/css" href="../../static/css/list.css" th:href="@{/css/list.css}"/>
<link rel="stylesheet" type="text/css" href="../../static/css/reset.css" th:href="@{/css/reset.css}"/>
<link href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/bootstrap-table.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/bootstrap-table.min.js"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.17.1/locale/bootstrap-table-zh-CN.min.js"></script>
</head>
<!--By CaesarChang张旭-->
<body>
<div id="parent" >
<span id="span">问答知识库</span>
<button class="btn-info" id="newAdd" >新增+</button>
<button class="btn-info">批量导入</button>
<button id="deleteChecked" class="btn-info">批量删除</button>
</div>
<br/>
<table id="questions_list"></table>
<a href="/downloadExcelTemplate/template1.xlsx" id="downloadBtn">下载模板文件</a>
<script>
$(function(){
function AddFuncionAlty(value,row,index) { //要创建的按钮
return [
'<button id="TableDelete" type="button" class="btn btn-danger">删除</button> ',
'<button id="TableEditor" type="button" class="btn btn-default">编辑</button>'
].join("")
}
window.operateEvents={ //点击事件
"click #TableDelete": (e,value,row,index) => {
const myMsg = confirm("确认删除嘛?");
if(myMsg === true) {
$.ajax({
url:'/question/deleteQuestion/'+row.id,
type: 'get',
success: function(data) {
if(data.code === -1){
alert("删除失败");
}else {
window.location.reload();
}
}
});
}
},
// 捕捉到单条编辑按钮点击事件
"click #TableEditor": (e,value,row,index) => {
// 跳转到单条编辑请求
window.location.href = "/toUpdate/"+row.id
}
}
$("#questions_list").bootstrapTable({
url:"/question/questionListPage",//数据地址
striped:true,//是否显示行的间隔
pageNumber:1,//初始化加载第几页
pagination:true,//是否分页
sidePagination:'server',
pageSize:5,
pageList:[5,10,15],
queryParamsType:'',
queryParams:function(params){
var temp = {
pageNum:params.pageNumber,
pageSize:params.pageSize
};
return temp;
},
columns:[
{
checkbox:true
},
{
title:"标准问题",
field:"questionName",
sortable:false
},
{
title:"领域",
field:"field",
sortable:false
},
{
title:"意图",
field:"intention",
sortable:false
},
{
title:"关键词",
field:"keywords",
sortable:false
},
{
title:"相似问题",
field:"similarQuestion",
sortable:false
},
{
title:"操作",
field:"Button",
events:operateEvents, //给按钮注册事件
formatter:AddFuncionAlty,//给表格中增加按钮
}
]
});
//批量删除界面
$("#deleteChecked").click(()=>{
var rows = $("#questions_list").bootstrapTable('getSelections');// 获得要删除的数据
if (rows.length == 0) {// rows 主要是为了判断是否选中,下面的else内容才是主要
alert("请先选择要删除的记录!");
return;
} else {
const myMsg = confirm("确认删除嘛?");
if(myMsg === true) {
var ids = new Array();// 声明一个数组
$(rows).each(function() {// 通过获得别选中的来进行遍历
ids.push(this.id);// cid为获得到的整条数据中的一列
});
$.ajax({
url :'/question/deleteChecked',
data : "ids="+JSON.stringify(ids),
type : "post",
dataType : "json",
success : function(data) {
if(data.code==-1){
alert("删除失败")
}
window.location.reload();
}
});
}
}
})
// 新增数据按钮点击事件
$("#newAdd").click(() => {
// TODO 跳转到新增页面
alert("点击成功")
})
});
</script>
</body>
</html>
@RequestMapping("/page")
public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) {
PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize);
model.addAttribute("page", page);
//查询所有分类生成下拉框
List<Category> categories = categoryService.find();
model.addAttribute("categories", categories);
List<Seller> sellers = sellerService.find(new Seller());
model.addAttribute("sellers", sellers);
//用于页面回显
model.addAttribute("route", route);
return "route/list";
}
批量上传
@ResponseBody
@CrossOrigin
@PostMapping("/upload")
public JsonResult<Integer> inputQuestions(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {
JsonResult<Integer> jsonResult = new JsonResult<>();
if (file == null) {
jsonResult.setCode(201);
jsonResult.setMsg("导入文件不能为空!!");
jsonResult.setSuccess(false);
jsonResult.setData(0);
return jsonResult;
} else {
InputStream is = file.getInputStream();
String fileName = file.getOriginalFilename();
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
jsonResult.setCode(202);
jsonResult.setMsg("导入文件格式不正确!!");
jsonResult.setSuccess(false);
jsonResult.setData(0);
return jsonResult;
} else {
Workbook wb = null;
if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
//xlsx格式
wb = new XSSFWorkbook(is);
} else {
//xls格式
wb = new HSSFWorkbook(is);
}
if (wb != null) {
//读取第一个Sheet
Sheet sheet = wb.getSheetAt(0);
if (sheet != null) {
//最先读取首行
boolean firstRow = true;
List<Questions> questionsList = new ArrayList<>();
boolean isThrow = false;
// 成功插入数据库的数量
int count = 0;
//根据问题名称判断是否重复
// List<String> questionsNameList = questionsService.getQuestionsName();
try {
if (sheet.getLastRowNum() > 0) {
//开始循环行
for (int i = sheet.getFirstRowNum(); i <= sheet.getLastRowNum(); i++) {
Questions questions = new Questions();
Answers answers = new Answers();
questions.setCreateTime(new Date());
Row row = sheet.getRow(i);
//首行提取注解
if (firstRow) {
if ("标准问题问题文本长度不超过200字".equals(row.getCell(0).getStringCellValue())
&& "领域".equals(row.getCell(1).getStringCellValue())
&& "意图".equals(row.getCell(2).getStringCellValue())
&& "关键词 多个关键词通过;号间隔".equals(row.getCell(3).getStringCellValue())
&& "相似问题多个相似问题通过;号间隔".equals(row.getCell(4).getStringCellValue())
&& "答案".equals(row.getCell(5).getStringCellValue())
) {
firstRow = false;
} else {
jsonResult.setCode(203);
jsonResult.setMsg("导入文件模板不正确!!");
jsonResult.setSuccess(false);
jsonResult.setData(0);
return jsonResult;
}
} else {
//忽略空白行
if (row == null || ExcelUtil.isRowEmpty(row)) {
continue;
}
int theRow = i + 1;
if (row.getCell(0) != null) {
row.getCell(0).setCellType(CellType.STRING);
String questionName = row.getCell(0).getStringCellValue();
if (StringUtils.isEmpty(questionName)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,标准问题不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,标准问题不能为空)");
} else {
questions.setStandardQuestion(questionName);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,标准问题不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,标准问题不能为空)");
}
if (row.getCell(1) != null) {
row.getCell(1).setCellType(CellType.STRING);
String field = row.getCell(1).getStringCellValue();
if (StringUtils.isEmpty(field)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,领域不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,领域不能为空)");
} else {
questions.setField(field);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,领域不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,领域不能为空)");
}
if (row.getCell(2) != null) {
row.getCell(2).setCellType(CellType.STRING);
String intention = row.getCell(2).getStringCellValue();
if (StringUtils.isEmpty(intention)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,意图不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,意图不能为空)");
} else {
questions.setIntention(intention);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,意图不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,意图不能为空)");
}
if (row.getCell(3) != null) {
row.getCell(3).setCellType(CellType.STRING);
String keywords = row.getCell(3).getStringCellValue();
if (StringUtils.isEmpty(keywords)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,关键词不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,关键词不能为空)");
} else {
questions.setKeywords(keywords);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,关键词不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,关键词不能为空)");
}
if (row.getCell(4) != null) {
row.getCell(4).setCellType(CellType.STRING);
String synonymicQuestions = row.getCell(4).getStringCellValue();
if (StringUtils.isEmpty(synonymicQuestions)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)");
} else {
questions.setSynonymicQuestions(synonymicQuestions);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)");
}
if (row.getCell(5) != null) {
row.getCell(5).setCellType(CellType.STRING);
String answer = row.getCell(5).getStringCellValue();
if (StringUtils.isEmpty(answer)) {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,答案不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,答案不能为空)");
} else {
answers.setContent(answer);
}
} else {
isThrow = true;
jsonResult.setMsg("导入失败(第" + theRow + "行,相似问题不能为空)");
throw new RuntimeException("导入失败(第" + theRow + "行,相似问题不能为空)");
}
if (questionsService.insert(questions)) {
answers.setQueId(questions.getId());
if (answersService.insert(answers)) {
count++;
}
}
}
}
if (count < questionsList.size()) {
jsonResult.setCode(204);
jsonResult.setMsg("部分数据存储出错!!");
jsonResult.setSuccess(false);
} else {
jsonResult.setCode(200);
jsonResult.setMsg("成功导入模板!!");
jsonResult.setSuccess(true);
}
jsonResult.setData(count);
return jsonResult;
}
} catch (Exception e) {
jsonResult.setCode(205);
jsonResult.setMsg("出错!!" + e);
jsonResult.setSuccess(false);
jsonResult.setData(0);
e.printStackTrace();
}
}
}
}
}
return jsonResult;
}
<div>
<nav aria-label="Page navigation">
<ul class="pagination">
<li id="first">
<a href="javascript:void(0);">
<span aria-hidden="true">首页</span>
</a>
</li>
<li id="prev">
<a href="javascript:void(0);" aria-label="Previous">
<span aria-hidden="true">上一页</span>
</a>
</li>
<li name="pageNum" th:each="i : ${page.navigatepageNums}"
th:class="${i} == ${page.pageNum} ? 'active'"><a href="javascript:void(0);"
th:text="${i}"></a></li>
<li id="next">
<a href="javascript:void(0);" aria-label="Next">
<span aria-hidden="true">下一页</span>
</a>
</li>
<li id="last">
<a href="javascript:void(0);">
<span aria-hidden="true">末页</span>
</a>
</li>
<span style="font-size: 20px;margin-left: 5px;"
th:text="|共条 ${page.total} 记录,共${page.pages}页, 每页行数|">
</span>
<select id="setRows">
<option value="5" th:selected="5 == ${page.pageSize}">5</option>
<option value="10" th:selected="10 == ${page.pageSize}">10</option>
<option value="20" th:selected="20 == ${page.pageSize}">20</option>
<option value="30" th:selected="30 == ${page.pageSize}">30</option>
</select>
</ul>
</nav>
</div>
<!-- TODO 分页js -->
<script th:inline="javascript">
//得到初始化变量
var pageNum = [[${page.pageNum}]];
var pages = [[${page.pages}]];
//总页数
var hasNextPage = [[${page.hasNextPage}]];//true:还有下一页
var hasPreviousPage = [[${page.hasPreviousPage}]];
//还有上一页
if (!hasPreviousPage) {
$("#prev").addClass("disabled");
$("#first").addClass("disabled");
}
if (!hasNextPage) {
$("#next").addClass("disabled");
$("#last").addClass("disabled");
}
//设置按钮的监听事件
$("#first").click(function () {
if (!$("#first").hasClass("disabled")) {
$("#pageNum").val(1);
$("#qf").submit();
}
});
$("#prev").click(function () {
if (!$("#prev").hasClass("disabled")) {
$("#pageNum").val(pageNum - 1);
$("#qf").submit();
}
});
$("#next").click(function () {
if (!$("#next").hasClass("disabled")) {
$("#pageNum").val(pageNum + 1);
$("#qf").submit();
}
});
$("#last").click(function () {
if (!$("#last").hasClass("disabled")) {
$("#pageNum").val(pages);
$("#qf").submit();
}
});
//页码分页
$("li[name='pageNum']").click(function () {
if (!$(this).hasClass("active")) {
$("#pageNum").val($(this).children("a").html());
$("#qf").submit();
}
});
//设置每页行数
$("#setRows").change(function () {
$("#pageSize").val($(this).val());
$("#pageNum").val(1);
$("#qf").submit();
});
function deleteIs(){
if (!confirm('是否确认删除')) {
document.getElementById("deleteHref").href="https://www.baidu.com/";
return false;
}}
</script>
文件下载:
/**
* 跳转下载(下载模板 restful的name不同 可以下载不同文件
* By CaesarChang 张旭
*
*/
@GetMapping(value = "/downloadExcelTemplate/{name}")
public void downFrozenTemplate(HttpServletRequest request, HttpServletResponse response,@PathVariable("name") String name) {
FileInputStream inputStream =null;
ServletOutputStream out=null;
try {
//设置下载文件名字
String fileName = "模板"+ new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".xlsx";
//设置响应字符
response.setCharacterEncoding("UTF-8");
response.setContentType("content-type:octet-stream");
//在文件服务器的路径
String filePath = getClass().getResource("/templates/model/" + name).getPath();
//获取游览器信息 进行类型判断
String userAgent = request.getHeader("User-Agent");
if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {
fileName = URLEncoder.encode(fileName, "UTF-8");
} else {
// 非IE浏览器的处理:
fileName = new String((fileName).getBytes("UTF-8"), "ISO-8859-1");
}
//解码(路径里面的中文也会转化)
filePath = URLDecoder.decode(filePath, "UTF-8");
//设置响应头信息
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
//获得输入流 输出流
inputStream = new FileInputStream(filePath);
out = response.getOutputStream();
int b = 0;
byte[] buffer = new byte[1024];
//写入到缓冲区
while ((b = inputStream.read(buffer)) != -1) {
//写到输出流(out)中
out.write(buffer, 0, b);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭
try {
inputStream.close();
if (out != null) {
out.flush();
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
UserService
public interface UserService {
public PageInfo<User> findPage(User condition,int pageNum,int pageSize);
public List<User> find(User condition);
public int add(User user);
public User findById(Integer id);
public int delete(Integer id);
public int update(User user);
}
UserServiceImpl
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
public PageInfo<User> findPage(User condition, int pageNum, int pageSize) {
return PageHelper.startPage(pageNum,pageSize).doSelectPageInfo(()->{
userDao.selectList(Wrappers.<User>query());
});
}
@Override
public List<User> find(User condition) {
return userDao.selectList(Wrappers.query());
}
@Override
public int add(User user) {
return userDao.insert(user);
}
@Override
public User findById(Integer id) {
return userDao.selectById(id);
}
@Override
public int delete(Integer id) {
return userDao.deleteById(id);
}
@Override
public int update(User user) {
return userDao.update(user,Wrappers.<User>update());
}
}
pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
MybatisPlusConfig
@Configuration
@MapperScan("com.zx.travel.dao")
public class MybatisPlusConfig {
@Bean
public PageInterceptor pageInterceptor(){
return new PageInterceptor();
}
}
SpringBOot日期转换
/**
* @Author CaesarChang张旭
* @Date 2020/11/11 8:10 下午
* @Version 1.0
*/
import org.springframework.core.convert.converter.Converter;
import org.springframework.stereotype.Component;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Component
public class DateConverterConfig implements Converter<String, Date> {
private static final List<String> formarts = new ArrayList<>(4);
static {
formarts.add("yyyy-MM");
formarts.add("yyyy-MM-dd");
formarts.add("yyyy-MM-dd hh:mm");
formarts.add("yyyy-MM-dd hh:mm:ss");
}
@Override
public Date convert(String source) {
String value = source.trim();
if ("".equals(value)) {
return null;
}
if (source.matches("^\\d{4}-\\d{1,2}$")) {
return parseDate(source, formarts.get(0));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
return parseDate(source, formarts.get(1));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, formarts.get(2));
} else if (source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
return parseDate(source, formarts.get(3));
} else {
throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
}
}
/*** 格式化日期 * @param dateStr String 字符型日期 * @param format String 格式 * @return Date 日期 */
public Date parseDate(String dateStr, String format) {
Date date = null;
try {
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(dateStr);
} catch (Exception e) {
}
return date;
}
}
上传图片
import com.baomidou.mybatisplus.extension.api.R;
import com.github.pagehelper.PageInfo;
import com.zx.travel.bean.Category;
import com.zx.travel.bean.Route;
import com.zx.travel.bean.RouteImg;
import com.zx.travel.bean.Seller;
import com.zx.travel.service.CategoryService;
import com.zx.travel.service.RouteImgService;
import com.zx.travel.service.RouteService;
import com.zx.travel.service.SellerService;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* @Author CaesarChang张旭
* @Date 2020/11/15 3:08 下午
* @Version 1.0
*/
@Controller
@RequestMapping("/admin/route")
public class RouteController {
@Autowired
private RouteService routeService;
@Autowired
private CategoryService categoryService;
@Autowired
private SellerService sellerService;
@Autowired
private RouteImgService imgService;
/*** 分页 * @param route
* @param pageNum * @param pageSize * @param model * @return */
@RequestMapping("/page")
public String page(Route route, @RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "10") Integer pageSize, Model model) {
PageInfo<Route> page = routeService.findPage(route, pageNum, pageSize);
model.addAttribute("page", page);
//查询所有分类生成下拉框
List<Category> categories = categoryService.find();
model.addAttribute("categories", categories);
List<Seller> sellers = sellerService.find(new Seller());
model.addAttribute("sellers", sellers);
//用于页面回显
model.addAttribute("route", route);
return "route/list";
}
/*** 删除 * @param id * @return */
@RequestMapping("/delete/{id}")
public String delete(@PathVariable("id") Integer id) {
routeService.delete(id);
return "redirect:/admin/route/page";
}
/*** 跳到添加页面 * @param model * @return */
@RequestMapping("/toadd")
public String toAdd(Model model) {
//查询所有分类生成下拉框
List<Category> categories = categoryService.find();
model.addAttribute("categories", categories);
List<Seller> sellers = sellerService.find(new Seller());
model.addAttribute("sellers", sellers);
return "route/add";
}
/*** 执行添加 * @param route * @param rimageFile
* * @param request
* * @return * @throws IOException */
@RequestMapping("/doadd")
public String doAdd(Route route,
@RequestParam("rimageFile")
MultipartFile rimageFile,
HttpServletRequest request) throws IOException {
performRImage(route, rimageFile, request);
routeService.add(route);
return "redirect:/admin/route/page";
}
private void performRImage(Route route, @RequestParam("rimageFile") MultipartFile rimageFile, HttpServletRequest request) throws IOException {
//项目的部署目录 + img/product/rimage/
String savePath = request.getServletContext().getRealPath("img/product/rimage/");
//处理随机文件名
String fileName = UUID.randomUUID().toString().replaceAll("-", "") + "." + FilenameUtils.getExtension(rimageFile.getOriginalFilename());
//上传目录如果不存在,先创建
File savePathDir = new File(savePath);
if (!savePathDir.exists()) {
savePathDir.mkdirs();
}
//保存文件
rimageFile.transferTo(new File(savePathDir, fileName));
//设置线路的rimage属性=文件的相对路径
route.setRimage("img/product/rimage/" + fileName);
}
@RequestMapping("/toupdate/{id}")
public String toUpdate(@PathVariable("id") Integer id, Model model) {
Route route = routeService.findById(id);
model.addAttribute("route", route);
//查询所有分类生成下拉框
List<Category> categories = categoryService.find();
model.addAttribute("categories", categories);
List<Seller> sellers = sellerService.find(new Seller());
model.addAttribute("sellers", sellers);
return "route/update";
}
@RequestMapping("/doupdate")
public String doUpdate(Route route,
@RequestParam("rimageFile")
MultipartFile rimageFile,
HttpServletRequest request) throws IOException {
performRImage(route, rimageFile, request);
routeService.update(route);
return "redirect:/admin/route/page";
}
@RequestMapping("/toimage/{id}")
public String toImage(@PathVariable("id") Integer id, Model model) {
Route byId = routeService.findById(id);
model.addAttribute("route", byId);
return "route/image";
}
@RequestMapping("/doimage")
public String doImage(Integer rid, @RequestParam("bigPicFile") MultipartFile[] bigPicFile, @RequestParam("smallPicFile") MultipartFile[] smallPicFile, HttpServletRequest request) throws Exception {
List<String> bigPic = new ArrayList<>();
List<String> smallPic = new ArrayList<>();
String path = request.getServletContext().getRealPath("/");
for (MultipartFile f : bigPicFile) {
File bigPath = new File(path + "img\\product\\size4\\");
if (!bigPath.exists()) { bigPath.mkdirs();
}
String fileName = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(f.getOriginalFilename()); f.transferTo(new File(bigPath, fileName));
bigPic.add("img/product/size4/" + fileName);
}
for (MultipartFile f : smallPicFile) { File smallPath = new File(path + "img\\product\\size2\\"); if (!smallPath.exists()) {
smallPath.mkdirs();
}
String fileName = UUID.randomUUID().toString().replace("-", "") + "." + FilenameUtils.getExtension(f.getOriginalFilename()); f.transferTo(new File(smallPath, fileName));
smallPic.add("img/product/size2/" + fileName); }
//要添加的图片列表
List<RouteImg> ris = new ArrayList<>();
for (int i=0; i<bigPic.size(); i++) {
RouteImg img = new RouteImg();
img.setRid(rid);
img.setBigpic(bigPic.get(i));
img.setSmallpic(smallPic.get(i));
ris.add(img);
}
imgService.saveImg(rid, ris);
return "redirect:/admin/route/page";
}
}
多选框,删除全部
@RequestMapping("/delete")
public String deleteChecked(@RequestParam("ids") Integer[] ids) {
for (Integer id : ids) {
userService.delete(id);
}
return "redirect:/admin/user/page";
}
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
暂无评论,快来写一下吧
展开评论


