Skip to content

Commit 0771c3b

Browse files
committed
Merge branch 'dev'
2 parents aaa5b3b + 0999881 commit 0771c3b

19 files changed

+709
-177
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.njust.csa.reg.config;
2+
3+
import com.njust.csa.reg.interceptor.MyInterceptor;
4+
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
6+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
7+
8+
@Configuration
9+
public class MyConfig implements WebMvcConfigurer {
10+
11+
//注册管理端访问拦截器
12+
@Override
13+
public void addInterceptors(InterceptorRegistry registry) {
14+
registry.addInterceptor(new MyInterceptor()).addPathPatterns("/page/index.html");
15+
}
16+
}

src/main/java/com/njust/csa/reg/controller/AdminController.java

Lines changed: 91 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.springframework.stereotype.Controller;
1010
import org.springframework.web.bind.annotation.*;
1111

12+
import javax.servlet.http.HttpServletRequest;
1213
import javax.servlet.http.HttpSession;
1314
import java.sql.Timestamp;
1415
import java.util.HashMap;
@@ -25,6 +26,25 @@ public AdminController(AdminService adminService){
2526
this.adminService = adminService;
2627
}
2728

29+
//重定向后的请求处理
30+
@RequestMapping(value = "/page/login", method = RequestMethod.GET)
31+
public String getIndex(HttpServletRequest request){
32+
request.getSession().setAttribute("isRedirect", true); //添加session信息,避免拦截器重复拦截
33+
return "/page/index.html";
34+
}
35+
36+
//处理管理端的所有静态请求
37+
@RequestMapping(value = "/page/activity/*", method = RequestMethod.GET)
38+
public String checkIndex(HttpSession session){
39+
//如果登录,则跳回主页面
40+
if(checkUser(session)){
41+
return "/page/index.html";
42+
}
43+
//如果访问静态请求时没有登录,则重定向
44+
return "redirect:/page/login";
45+
}
46+
47+
//管理端登录
2848
@ResponseBody
2949
@RequestMapping(value = "/login", method = RequestMethod.POST,
3050
produces = "application/json;charset=UTF-8")
@@ -42,12 +62,14 @@ public ResponseEntity adminLogin(@RequestBody String jsonString, HttpSession ses
4262
}
4363
}
4464

65+
//管理端登出
4566
@ResponseBody
4667
@RequestMapping(value = "/logout", method = RequestMethod.GET,
4768
produces = "application/json;charset=UTF-8")
4869
public ResponseEntity adminLogout(HttpSession session){
4970
if(session.getAttribute("username") != null){
5071
sessionList.remove(session.getAttribute("username").toString());
72+
session.removeAttribute("username");
5173
}
5274
return new ResponseEntity(HttpStatus.OK);
5375
}
@@ -90,32 +112,32 @@ public ResponseEntity<String> postActivity(@RequestBody String jsonString, HttpS
90112
}
91113
}
92114

115+
//获取用户列表,用于登录
93116
@ResponseBody
94-
@RequestMapping(value = "/user", method = RequestMethod.POST,
117+
@RequestMapping(value = "/user", method = RequestMethod.GET,
95118
produces = "application/json;charset=UTF-8")
96-
public ResponseEntity<String> getUsers(HttpSession session){
97-
if(checkUser(session)){
98-
return new ResponseEntity<>(adminService.getUser(), HttpStatus.OK);
99-
}
100-
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
119+
public ResponseEntity<String> getUsers(){
120+
return new ResponseEntity<>(adminService.getUser(), HttpStatus.OK);
101121
}
102122

123+
//获取所有活动
103124
@ResponseBody
104125
@RequestMapping(value = "/admin/activity", method = RequestMethod.GET,
105126
produces = "application/json;charset=UTF-8")
106127
public ResponseEntity<String> adminGetActivity(HttpSession session){
107128
if(checkUser(session)){
108-
return new ResponseEntity<>(adminService.getActivity(), HttpStatus.OK);
129+
return new ResponseEntity<>(adminService.getActivities(), HttpStatus.OK);
109130
}
110131
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
111132
}
112133

134+
//设置活动状态
113135
@ResponseBody
114136
@RequestMapping(value = "/admin/activity/{id}/status", method = RequestMethod.PUT,
115137
produces = "application/json;charset=UTF-8")
116138
public ResponseEntity setActivityStatus(@PathVariable long id, @RequestBody String jsonString, HttpSession session){
117139
if(checkUser(session)){
118-
byte status = (byte)Integer.parseInt(new JSONObject(jsonString).getString("status"));
140+
byte status = (byte)new JSONObject(jsonString).getInt("status");
119141
if(adminService.setActivityStatus(id, status)){
120142
return new ResponseEntity(HttpStatus.ACCEPTED);
121143
}
@@ -124,10 +146,71 @@ public ResponseEntity setActivityStatus(@PathVariable long id, @RequestBody Stri
124146
else return new ResponseEntity(HttpStatus.UNAUTHORIZED);
125147
}
126148

149+
//作为管理员获取一个活动的结构
150+
@ResponseBody
151+
@RequestMapping(value = "/admin/activity/{id}", method = RequestMethod.GET,
152+
produces = "application/json;charset=UTF-8")
153+
public ResponseEntity<String> getActivityStructure(@PathVariable long id, HttpSession session){
154+
if(checkUser(session)){
155+
return new ResponseEntity<>(adminService.getActivityStructure(id), HttpStatus.OK);
156+
}
157+
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
158+
}
159+
160+
//删除一个报名
161+
@ResponseBody
162+
@RequestMapping(value = "/admin/activity/{id}", method = RequestMethod.DELETE,
163+
produces = "application/json;charset=UTF-8")
164+
public ResponseEntity<String> deleteActivity(@PathVariable long id, HttpSession session){
165+
if(checkUser(session)){
166+
return new ResponseEntity<>(adminService.deleteActivity(id), HttpStatus.OK);
167+
}
168+
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
169+
}
170+
171+
//获取一个报名内的报名信息
172+
@ResponseBody
173+
@RequestMapping(value = "/admin/activity/{id}/applicant", method = RequestMethod.GET,
174+
produces = "application/json;charset=UTF-8")
175+
public ResponseEntity<String> getActivityApplicants(@PathVariable long id, HttpSession session){
176+
if(checkUser(session)){
177+
return new ResponseEntity<>(adminService.getActivityApplicants(id), HttpStatus.OK);
178+
}
179+
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
180+
}
181+
182+
//删除指定的报名信息
183+
@ResponseBody
184+
@RequestMapping(value = "/admin/activity/{aid}/applicant/{iid}", method = RequestMethod.DELETE,
185+
produces = "application/json;charset=UTF-8")
186+
public ResponseEntity<String> deleteApplicantInfo(@PathVariable long aid, @PathVariable int iid, HttpSession session){
187+
if(checkUser(session)){
188+
return new ResponseEntity<>(adminService.deleteApplicantInfo(aid, iid), HttpStatus.OK);
189+
}
190+
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
191+
}
192+
193+
//更新报名信息
194+
@ResponseBody
195+
@RequestMapping(value = "/admin/activity/{id}", method = RequestMethod.PUT,
196+
produces = "application/json;charset=UTF-8")
197+
public ResponseEntity<String> alterActivityStructure(@PathVariable long id, HttpSession session,
198+
@RequestBody String jsonString){
199+
if(checkUser(session) ){
200+
if(adminService.alterActivityStructure(id, new JSONObject(jsonString)))
201+
return new ResponseEntity<>("", HttpStatus.OK);
202+
else
203+
return new ResponseEntity<>("", HttpStatus.NOT_ACCEPTABLE);
204+
}
205+
else return new ResponseEntity<>("", HttpStatus.UNAUTHORIZED);
206+
}
207+
127208
// 检查当前用户连接是否已经登陆
128209
private boolean checkUser(HttpSession session){
210+
if(session == null) return false;
129211
String userName = session.getAttribute("username") == null ?
130212
null : session.getAttribute("username").toString();
131213
return userName != null && sessionList.get(userName).equals(session.getId());
132214
}
215+
133216
}

src/main/java/com/njust/csa/reg/controller/AppController.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ public AppController(AppService appService){
1616
this.appService = appService;
1717
}
1818

19+
//获取所有已开启的报名信息
1920
@RequestMapping(value = "/activity", method = RequestMethod.GET,
2021
produces = "application/json;charset=UTF-8")
2122
public String getActivities(){
2223
return appService.getActivities();
2324
}
2425

26+
//获取指定报名信息的结构
2527
@RequestMapping(value = "/activity/{id}", method = RequestMethod.GET,
2628
produces = "application/json;charset=UTF-8")
2729
public String getActivityStructure(@PathVariable long id){
2830
return appService.getActivityStructure(id);
2931
}
3032

33+
//提交指定报名信息
3134
@RequestMapping(value = "/activity/{id}", method = RequestMethod.POST,
3235
produces = "application/json;charset=UTF-8")
3336
public String putApplicantInfo(@PathVariable long id, @RequestBody String jsonString){
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.njust.csa.reg.interceptor;
2+
3+
import org.springframework.web.servlet.HandlerInterceptor;
4+
5+
import javax.servlet.http.HttpServletRequest;
6+
import javax.servlet.http.HttpServletResponse;
7+
8+
9+
public class MyInterceptor implements HandlerInterceptor {
10+
@Override
11+
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
12+
if(request.getSession().getAttribute("username") == null && request.getSession().getAttribute("isRedirect") == null){
13+
response.sendRedirect("login");
14+
return false;
15+
}
16+
request.getSession().removeAttribute("isRedirect");
17+
return true;
18+
}
19+
}

src/main/java/com/njust/csa/reg/repository/docker/ApplicantInfoRepo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,12 @@
33
import com.njust.csa.reg.repository.entities.ApplicantInfoEntity;
44
import org.springframework.data.repository.CrudRepository;
55

6+
import java.util.List;
7+
68
public interface ApplicantInfoRepo extends CrudRepository<ApplicantInfoEntity, Long> {
79
int countByBelongsToStructureId(long structureId);
810

911
boolean existsByBelongsToStructureIdAndValue(long structureId, String value);
12+
13+
Integer deleteAllByIdIn(List<Long> in);
1014
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.njust.csa.reg.repository.docker;
2+
3+
import com.njust.csa.reg.repository.entities.ApplicantInfoViewEntity;
4+
import org.springframework.data.repository.CrudRepository;
5+
6+
import java.util.List;
7+
8+
public interface ApplicantInfoViewRepo extends CrudRepository<ApplicantInfoViewEntity, Long> {
9+
List<ApplicantInfoViewEntity> findAllByTableId(long id);
10+
11+
List<ApplicantInfoViewEntity> findAllByTableIdAndApplicantNumber(long tableId, int applicantNumber);
12+
}

src/main/java/com/njust/csa/reg/repository/docker/TableInfoRepo.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import com.njust.csa.reg.repository.entities.TableInfoEntity;
44
import org.springframework.data.repository.CrudRepository;
55

6-
import java.util.List;
7-
86
public interface TableInfoRepo extends CrudRepository<TableInfoEntity, Long> {
9-
List<TableInfoEntity> findAllByStatus(byte status);
7+
Iterable<TableInfoEntity> findAllByStatus(byte status);
108
}

src/main/java/com/njust/csa/reg/repository/docker/TableStructureRepo.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,8 @@ public interface TableStructureRepo extends CrudRepository<TableStructureEntity,
1010
List<TableStructureEntity> findAllByBelongsToOrderByIndexNumber(long belongsTo);
1111

1212
List<TableStructureEntity> findAllByTableIdAndBelongsToOrderByIndexNumber(long tableId, Long BelongsTo);
13+
14+
TableStructureEntity findTopByTableIdAndIsUnique(long id, byte isUnique);
15+
16+
List<TableStructureEntity> findAllByTableId(long id);
1317
}
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package com.njust.csa.reg.repository.entities;
2+
3+
import javax.persistence.*;
4+
import java.util.Objects;
5+
6+
@Entity
7+
@Table(name = "applicant_info_view", schema = "test_reg_sys", catalog = "")
8+
public class ApplicantInfoViewEntity {
9+
private int applicantNumber;
10+
private String value;
11+
private long id;
12+
private long structureId;
13+
private long tableId;
14+
private String type;
15+
16+
@Basic
17+
@Column(name = "applicant_number", nullable = false)
18+
public int getApplicantNumber() {
19+
return applicantNumber;
20+
}
21+
22+
public void setApplicantNumber(int applicantNumber) {
23+
this.applicantNumber = applicantNumber;
24+
}
25+
26+
@Basic
27+
@Column(name = "value", nullable = false, length = 1000)
28+
public String getValue() {
29+
return value;
30+
}
31+
32+
public void setValue(String value) {
33+
this.value = value;
34+
}
35+
36+
@Id
37+
@Column(name = "id", nullable = false)
38+
public long getId() {
39+
return id;
40+
}
41+
42+
public void setId(long id) {
43+
this.id = id;
44+
}
45+
46+
@Basic
47+
@Column(name = "structure_id", nullable = false)
48+
public long getStructureId() {
49+
return structureId;
50+
}
51+
52+
public void setStructureId(long structureId) {
53+
this.structureId = structureId;
54+
}
55+
56+
@Basic
57+
@Column(name = "table_id", nullable = false)
58+
public long getTableId() {
59+
return tableId;
60+
}
61+
62+
public void setTableId(long tableId) {
63+
this.tableId = tableId;
64+
}
65+
66+
@Basic
67+
@Column(name = "type", nullable = false, length = 30)
68+
public String getType() {
69+
return type;
70+
}
71+
72+
public void setType(String type) {
73+
this.type = type;
74+
}
75+
76+
@Override
77+
public boolean equals(Object o) {
78+
if (this == o) return true;
79+
if (o == null || getClass() != o.getClass()) return false;
80+
ApplicantInfoViewEntity that = (ApplicantInfoViewEntity) o;
81+
return applicantNumber == that.applicantNumber &&
82+
id == that.id &&
83+
structureId == that.structureId &&
84+
tableId == that.tableId &&
85+
Objects.equals(value, that.value) &&
86+
Objects.equals(type, that.type);
87+
}
88+
89+
@Override
90+
public int hashCode() {
91+
return Objects.hash(applicantNumber, value, id, structureId, tableId, type);
92+
}
93+
}

0 commit comments

Comments
 (0)