Skip to content

Commit caeec58

Browse files
committed
测试response 输出下载
1 parent a936df7 commit caeec58

31 files changed

+833
-176
lines changed

src/main/java/net/liuxuan/SprKi/controller/CommonController.java

+76-3
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,24 @@
66
import net.liuxuan.spring.Helper.SpringContextHelper;
77
import org.json.JSONArray;
88
import org.springframework.beans.factory.annotation.Autowired;
9+
import org.springframework.beans.factory.annotation.Value;
910
import org.springframework.security.access.prepost.PreAuthorize;
1011
import org.springframework.stereotype.Controller;
12+
import org.springframework.util.FileCopyUtils;
1113
import org.springframework.web.bind.annotation.*;
1214
import org.springframework.web.method.HandlerMethod;
1315
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
1416
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
1517

1618
import javax.annotation.PostConstruct;
19+
import javax.servlet.ServletOutputStream;
1720
import javax.servlet.http.HttpServletRequest;
1821
import javax.servlet.http.HttpServletResponse;
19-
import java.io.File;
20-
import java.io.FileNotFoundException;
22+
import java.io.*;
23+
import java.net.URLConnection;
24+
import java.nio.charset.Charset;
25+
import java.nio.file.Path;
26+
import java.nio.file.Paths;
2127
import java.util.*;
2228
import java.util.stream.Collectors;
2329

@@ -36,7 +42,8 @@
3642
@PreAuthorize("hasRole('ROLE_ADMIN')")
3743
public class CommonController {
3844

39-
45+
@Value("${SprKi.upload.restrictedpath}")
46+
private String restrictedFilePath;
4047
/**
4148
* The Request mapping handler mapping.
4249
*/
@@ -87,6 +94,72 @@ public String getMsg(
8794
return path;
8895
}
8996

97+
@RequestMapping(value = "/moses", method = RequestMethod.GET)
98+
public String mosesParse(){
99+
return "tools/parse";
100+
}
101+
102+
103+
@RequestMapping(value = "/func/get", method = RequestMethod.GET)
104+
@ResponseBody
105+
public String getFile(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model){
106+
String path = request.getParameter("file");
107+
path = restrictedFilePath +'/'+path;
108+
File f = new File(path);
109+
String rtn;
110+
if(f.exists()&&(!f.isDirectory())){
111+
rtn = path;
112+
}else{
113+
rtn = path+ " : Not Existed!!!";
114+
}
115+
116+
return rtn;
117+
}
118+
@RequestMapping(value = "/func/get2", method = RequestMethod.GET)
119+
// @ResponseBody
120+
public void getFile2(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) throws IOException {
121+
String path = request.getParameter("file");
122+
path = restrictedFilePath +'/'+path;
123+
File f = new File(path);
124+
String rtn;
125+
if(f.exists()&&(!f.isDirectory())){
126+
rtn = path;
127+
}else{
128+
String errorMessage = "Sorry. The file you are looking for does not exist";
129+
System.out.println(errorMessage);
130+
ServletOutputStream outputStream = response.getOutputStream();
131+
outputStream.write(errorMessage.getBytes(Charset.forName("UTF-8")));
132+
outputStream.close();
133+
return;
134+
}
135+
136+
String mimeType= URLConnection.guessContentTypeFromName(f.getName());
137+
if(mimeType==null){
138+
System.out.println("mimetype is not detectable, will take default");
139+
mimeType = "application/octet-stream";
140+
}
141+
142+
System.out.println("mimetype : "+mimeType);
143+
// mimeType = "application/force-download";
144+
response.setContentType(mimeType);
145+
/* "Content-Disposition : inline" will show viewable types [like images/text/pdf/anything viewable by browser] right on browser
146+
while others(zip e.g) will be directly downloaded [may provide save as popup, based on your browser setting.]*/
147+
// response.setHeader("Content-Disposition", String.format("inline; filename=\"" + f.getName() +"\""));
148+
response.setHeader("Content-Disposition", String.format("attachment; filename=\"" + f.getName() +"\""));
149+
150+
151+
/* "Content-Disposition : attachment" will be directly download, may provide save as popup, based on your browser setting*/
152+
//response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getName()));
153+
154+
response.setContentLength((int)f.length());
155+
156+
InputStream inputStream = new BufferedInputStream(new FileInputStream(f));
157+
158+
//Copy bytes from source to destination(outputstream in this example), closes both streams.
159+
FileCopyUtils.copy(inputStream, response.getOutputStream());
160+
161+
}
162+
90163
/**
91164
* 为所有的用户加上头像
92165
*

src/main/java/net/liuxuan/SprKi/controller/admin/AdminController.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.liuxuan.SprKi.controller.admin;
22

33
import net.liuxuan.SprKi.entity.security.LogActionType;
4+
import net.liuxuan.spring.Helper.ResponseHelper;
45
import net.liuxuan.spring.Helper.SecurityLogHelper;
56
import org.slf4j.Logger;
67
import org.slf4j.LoggerFactory;
@@ -11,6 +12,9 @@
1112
import org.springframework.web.bind.annotation.RequestMapping;
1213

1314
import javax.servlet.http.HttpServletRequest;
15+
import javax.servlet.http.HttpServletResponse;
16+
import java.io.IOException;
17+
import java.util.HashMap;
1418
import java.util.Map;
1519

1620
/**
@@ -62,5 +66,13 @@ public String getPages(@PathVariable("pageName") String pageName, Map<String, Ob
6266
// return "admin/profile :: middle";
6367
}
6468

65-
69+
@RequestMapping("userisadmin")
70+
@PreAuthorize("hasRole('ROLE_ADMIN')")
71+
public void getPages(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) throws IOException {
72+
Map<String,Object> map = new HashMap<>();
73+
map.put("admin",true);
74+
map.put("authtype",request.getAuthType());
75+
ResponseHelper.writeMapToResponseAsJson(response,map);
76+
////
77+
}
6678
}

src/main/java/net/liuxuan/SprKi/controller/admin/labthink/NewsPageManagementController.java

+26
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@
99
import org.slf4j.Logger;
1010
import org.slf4j.LoggerFactory;
1111
import org.springframework.beans.factory.annotation.Autowired;
12+
import org.springframework.beans.propertyeditors.CustomDateEditor;
1213
import org.springframework.security.access.prepost.PreAuthorize;
1314
import org.springframework.stereotype.Controller;
15+
import org.springframework.web.bind.WebDataBinder;
16+
import org.springframework.web.bind.annotation.InitBinder;
1417
import org.springframework.web.bind.annotation.ModelAttribute;
1518
import org.springframework.web.bind.annotation.RequestMapping;
19+
import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
1620

21+
import javax.servlet.ServletException;
1722
import javax.servlet.http.HttpServletRequest;
1823
import javax.servlet.http.HttpServletResponse;
1924
import java.io.IOException;
25+
import java.text.SimpleDateFormat;
26+
import java.util.Date;
2027
import java.util.HashMap;
2128
import java.util.List;
2229
import java.util.Map;
@@ -136,4 +143,23 @@ public void newsPageManageAjax(@ModelAttribute("dto") BaseDTO _dto, NewsPage _ne
136143
public List<NewsPage> NewsPagelist() {
137144
return newsPageService.getAllNewsPage();
138145
}
146+
147+
/**
148+
* Init binder.
149+
*
150+
* @param binder the binder
151+
* @throws ServletException the servlet exception
152+
*/
153+
@InitBinder
154+
protected void initBinder(
155+
WebDataBinder binder) throws ServletException {
156+
binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
157+
158+
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
159+
// dateFormat.setLenient(false);
160+
dateFormat.setLenient(true);
161+
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
162+
// binder.registerCustomEditor(CMSCategory.class,cmsCategoryEditor());
163+
// binder.registerCustomEditor(Department.class,new DepartmentEditor());
164+
}
139165
}

src/main/java/net/liuxuan/SprKi/controller/message/MessageController.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public static String limitContent2WordCount(String content, int count) {
6464
return content.substring(0, Math.min(900, content.length()));
6565
}
6666

67+
//获取发送短消息界面
6768
@RequestMapping(value = "/msg/new", method = RequestMethod.GET)
6869
public String getMsg(HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) {
6970

@@ -179,7 +180,7 @@ public String getMsgListPageable(
179180
// model.put("messageList", messageList);
180181
model.put("datas", messageList);
181182

182-
List<TicketContent> assignedTo = ticketContentService.findAllTicketContentsAssignedTo(SystemHelper.getCurrentUserDetailInfo());
183+
List<TicketContent> assignedTo = ticketContentService.findAllTicketContentsAssignedTo(SystemHelper.getCurrentUserDetailInfo(),false);
183184
model.put("assignedTicket",assignedTo);
184185

185186
return "message/msg_list";

src/main/java/net/liuxuan/SprKi/controller/supporttools/UnitConverterController.java

+11
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,15 @@ public String getConverter(HttpServletRequest request,
3636
// model.put("status", "405");
3737
return "tools/unitconv";
3838
}
39+
40+
@RequestMapping("/unitconv2")
41+
public String getConverter2(HttpServletRequest request,
42+
HttpServletResponse response, Map<String, Object> model){
43+
44+
// model.put("title", "MethodNotSupported");
45+
// model.put("message", "MethodNotSupported");
46+
// model.put("date", new Date());
47+
// model.put("status", "405");
48+
return "tools/unitconvert";
49+
}
3950
}

src/main/java/net/liuxuan/SprKi/controller/ticket/TicketController.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,6 @@ public String AnswerTicket(@PathVariable Long id, HttpServletRequest request, Ht
267267
BeanUtils.copyProperties(content, faq);
268268
// faq.setId(null); //删除复制的id 防止出错
269269
faq.setQuestionDate(content.getSubmitDate());
270-
;
271270
model.put("faq", faq);
272271
model.put("DevicesType_list", deviceTypeService.getAllDeviceType());
273272
model.put("ticketId", id);
@@ -291,7 +290,6 @@ public String AnswerTicket(@PathVariable Long id, HttpServletRequest request, Ht
291290
@RequestMapping(value = "ticket/answer", method = RequestMethod.POST)
292291
@PreAuthorize("hasRole('ROLE_USER')")
293292
public String AnswerTicket(FAQContent faq, HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) {
294-
//TODO 添加回答问题的人
295293
long ticketid = faq.getId();
296294
System.out.println("ticketid:" + ticketid);
297295
faq.setId(null);
@@ -303,6 +301,8 @@ public String AnswerTicket(FAQContent faq, HttpServletRequest request, HttpServl
303301

304302
TicketContent content = ticketContentService.findById(ticketid);
305303
content.setFaq(faq);
304+
content.setResolved(true);
305+
content.setResolvedDate(new Date());
306306
UserDetailInfo currentUserDetailInfo = SystemHelper.getCurrentUserDetailInfo();
307307
content.setAnswerUser(currentUserDetailInfo);
308308
ticketContentService.saveTicketContent(content);

src/main/java/net/liuxuan/SprKi/entity/NewsPage.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,15 @@
44
import javax.persistence.*;
55
import lombok.Data;
66
import lombok.EqualsAndHashCode;
7+
import lombok.Getter;
78
import lombok.NoArgsConstructor;
89
import net.sf.ehcache.pool.sizeof.annotations.IgnoreSizeOf;
910
import org.apdplat.word.lucene.ChineseWordAnalyzer;
1011
import org.hibernate.search.annotations.Analyzer;
1112
import org.hibernate.search.annotations.Indexed;
1213

14+
import java.util.Date;
15+
1316
/**
1417
* Copyright (c) 2010-2016. by Liuxuan All rights reserved. <br/>
1518
* ***************************************************************************
@@ -36,4 +39,15 @@ public class NewsPage extends CMSContent{
3639
String picStr;
3740
@Column(nullable = true,length=250)
3841
String picType;
39-
}
42+
43+
@Column(columnDefinition = "TIMESTAMP",nullable = true)
44+
@Temporal(TemporalType.TIMESTAMP)
45+
Date showDate;
46+
47+
public Date getShowDate(){
48+
if(showDate==null){
49+
return publishDate;
50+
}
51+
return showDate;
52+
}
53+
}

src/main/java/net/liuxuan/SprKi/repository/NewsPageRepository.java

+4
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,14 @@ public interface NewsPageRepository extends JpaRepository<NewsPage, Long>, JpaSp
2323
// List<NewsPage> findByNewsPageName(String name);
2424
// List<NewsPage> findByNewsPageNameNot(String NotName);
2525
List<NewsPage> findByDisabledFalse();
26+
List<NewsPage> findByDisabledFalseOrderByShowDateDesc();
2627

2728
List<NewsPage> findTop20ByDisabledFalseOrderByLastUpdateDateDesc();
29+
List<NewsPage> findTop20ByDisabledFalseOrderByShowDateDesc();
30+
List<NewsPage> findTop20ByDisabledFalseOrderByShowDateDescLastUpdateDateDesc();
2831

2932
Page<NewsPage> findAllByDisabledFalseOrderByLastUpdateDateDesc(Pageable pageable);
33+
Page<NewsPage> findAllByDisabledFalseOrderByShowDateDesc(Pageable pageable);
3034
// List<NewsPage> findByNewsPageNameNotOrderByNewsPageName(String roleNotName);
3135

3236
}

src/main/java/net/liuxuan/SprKi/service/NewsPageServiceImpl.java

+5-3
Original file line numberDiff line numberDiff line change
@@ -111,19 +111,21 @@ public boolean deleteNewsPageById(Long id) {
111111
@Override
112112
@Cacheable(cacheNames = "NewsPage", key = "'list'")
113113
public List<NewsPage> getAllNewsPage() {
114-
return newsPageRepository.findByDisabledFalse();
114+
// return newsPageRepository.findByDisabledFalse();
115+
return newsPageRepository.findByDisabledFalseOrderByShowDateDesc();
115116
}
116117

117118
@Override
118119
@Cacheable(cacheNames = "NewsPage", key = "'listtop20'")
119120
public List<NewsPage> getTop20NewsPage() {
120-
return newsPageRepository.findTop20ByDisabledFalseOrderByLastUpdateDateDesc();
121+
// return newsPageRepository.findTop20ByDisabledFalseOrderByLastUpdateDateDesc();
122+
return newsPageRepository.findTop20ByDisabledFalseOrderByShowDateDescLastUpdateDateDesc();
121123
}
122124

123125
@Override
124126
@Cacheable(cacheNames = "NewsPage", key = "'pageable'+#page+':' + #size")
125127
public Page<NewsPage> getAllNewsPageable(Integer page, Integer size) {
126128
Pageable pageable = new PageRequest(page, size, Sort.Direction.DESC, "LastUpdateDate");
127-
return newsPageRepository.findAllByDisabledFalseOrderByLastUpdateDateDesc(pageable);
129+
return newsPageRepository.findAllByDisabledFalseOrderByShowDateDesc(pageable);
128130
}
129131
}

src/main/java/net/liuxuan/SprKi/service/security/UrlAuthServiceImpl.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public class UrlAuthServiceImpl implements UrlAuthService {
3838
UrlAuthRepository urlAuthRepository;
3939

4040
@Override
41-
@CacheEvict(cacheNames = "urlAuth", key = "'list_disablefalse'")
41+
@CacheEvict(cacheNames = "urlAuth", key = "'list_disablefalse'",allEntries = true)
4242
public void saveUrlAuth(UrlAuth urlAuth) {
4343
urlAuthRepository.save(urlAuth);
4444
}

0 commit comments

Comments
 (0)