From 1ec8ac2ef2ad1b7d8ff92a36a140987e11c1c6ab Mon Sep 17 00:00:00 2001 From: wuqilewuqile <11627406+wuqilewuqile@user.noreply.gitee.com> Date: Sun, 18 Jun 2023 13:43:45 +0800 Subject: [PATCH 1/3] update --- 3/PyPath/code(1).py | 15 -------- 3/PyPath/code.py | 37 ------------------- .../FileHandler/FileUpdateController.java | 13 ++++++- .../java/com/sof_eng/Mapper/FileMapper.java | 1 + .../java/com/sof_eng/model/DTO/otreeFile.java | 4 +- src/main/resources/mapper/FileMapper.xml | 3 ++ 6 files changed, 18 insertions(+), 55 deletions(-) delete mode 100644 3/PyPath/code(1).py delete mode 100644 3/PyPath/code.py diff --git a/3/PyPath/code(1).py b/3/PyPath/code(1).py deleted file mode 100644 index 1be07a8..0000000 --- a/3/PyPath/code(1).py +++ /dev/null @@ -1,15 +0,0 @@ -import requests -from bs4 import BeautifulSoup -import urllib.parse - -def get_all_links(url): - response = requests.get(url) - soup = BeautifulSoup(response.text, 'html.parser') - links = [a['href'] for a in soup.find_all('a', href=True)] - return [urllib.parse.urljoin(url, link) for link in links] - -url = "https://www.jd.com/" -links = get_all_links(url) - -for link in links: - print(link) diff --git a/3/PyPath/code.py b/3/PyPath/code.py deleted file mode 100644 index f2885e2..0000000 --- a/3/PyPath/code.py +++ /dev/null @@ -1,37 +0,0 @@ -# 这是一段示例代码,用于展示二叉树的中序遍历 -import random - -class Node: - def __init__(self, key): - self.left = None - self.right = None - self.val = key - -def insert(root, node): - if root is None: - root = node - else: - if root.val < node.val: - if root.right is None: - root.right = node - else: - insert(root.right, node) - else: - if root.left is None: - root.left = node - else: - insert(root.left, node) - -def inorder(root): - if root: - inorder(root.left) - print(root.val) - inorder(root.right) - -root = Node(random.randint(1, 100)) - -for _ in range(10): - insert(root, Node(random.randint(1, 100))) - -print("Inorder traversal of the tree:") -inorder(root) \ No newline at end of file diff --git a/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java b/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java index 07b7e37..a97ad72 100644 --- a/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java +++ b/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java @@ -29,12 +29,23 @@ public class FileUpdateController { List otreeFiles=fileMapper.getFileRec(username,endWith); return CommonResult.success(otreeFiles); } - @PostMapping("/updateFileRec") + @ResponseBody + @PostMapping("/update") public CommonResult updateFileRec(@RequestBody otreeFile id){ + System.out.println("touched update"); fileMapper.updateFileRec(id.getId()); otreeFile otreeFile=fileMapper.getFileRecById(id.getId()); return CommonResult.success(otreeFile); + } + + @ResponseBody + @PostMapping("/remove") + public CommonResult removeFileRec(@RequestBody otreeFile id){ + System.out.println("touched remove"); + fileMapper.updateFileRec(id.getId()); + fileMapper.removeFileRecById(id.getId()); + return CommonResult.success("成功移除:"+fileMapper.getFileRecById(id.getId())); } } diff --git a/src/main/java/com/sof_eng/Mapper/FileMapper.java b/src/main/java/com/sof_eng/Mapper/FileMapper.java index 5960199..fcaa41b 100644 --- a/src/main/java/com/sof_eng/Mapper/FileMapper.java +++ b/src/main/java/com/sof_eng/Mapper/FileMapper.java @@ -11,4 +11,5 @@ public interface FileMapper { public List getFileRec(String username, String endWith); public void updateFileRec (Long id); public otreeFile getFileRecById(Long id); + public void removeFileRecById(Long id); } diff --git a/src/main/java/com/sof_eng/model/DTO/otreeFile.java b/src/main/java/com/sof_eng/model/DTO/otreeFile.java index cc0f1c9..73c7c69 100644 --- a/src/main/java/com/sof_eng/model/DTO/otreeFile.java +++ b/src/main/java/com/sof_eng/model/DTO/otreeFile.java @@ -12,8 +12,8 @@ public class otreeFile { private String title; private String founder; private Long founder_id; - private String create_time; - private String active_time; + private Timestamp create_time; + private Timestamp active_time; private String directory; private String filetype; } diff --git a/src/main/resources/mapper/FileMapper.xml b/src/main/resources/mapper/FileMapper.xml index 0caeda6..de2bbfa 100644 --- a/src/main/resources/mapper/FileMapper.xml +++ b/src/main/resources/mapper/FileMapper.xml @@ -14,4 +14,7 @@ + + DELETE FROM file WHERE file.id = #{id} + \ No newline at end of file -- Gitee From 705c24b1dccf0975c696393c04f5c624506906ef Mon Sep 17 00:00:00 2001 From: wuqilewuqile <11627406+wuqilewuqile@user.noreply.gitee.com> Date: Sun, 18 Jun 2023 16:46:59 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=9C=A8=E7=BA=BF?= =?UTF-8?q?=E7=BC=96=E8=AF=91=E5=92=8C=E4=B8=8A=E4=BC=A0=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FileHandler/FileDeleteController.java | 23 +++++++++++ .../FileHandler/FileGetController.java | 34 ++++++++++++++++ .../FileHandler/FileUpdateController.java | 39 +++++-------------- .../FileHandler/FileUploadController.java | 5 ++- .../java/com/sof_eng/Mapper/FileMapper.java | 2 + .../com/sof_eng/Service/ShellService.java | 2 +- src/main/java/com/sof_eng/Util/MyFilter.java | 1 + .../java/com/sof_eng/Util/MyInterceptor.java | 10 +++-- .../com/sof_eng/config/SwaggerConfig.java | 2 +- 9 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 src/main/java/com/sof_eng/Controller/FileHandler/FileDeleteController.java create mode 100644 src/main/java/com/sof_eng/Controller/FileHandler/FileGetController.java diff --git a/src/main/java/com/sof_eng/Controller/FileHandler/FileDeleteController.java b/src/main/java/com/sof_eng/Controller/FileHandler/FileDeleteController.java new file mode 100644 index 0000000..c230d73 --- /dev/null +++ b/src/main/java/com/sof_eng/Controller/FileHandler/FileDeleteController.java @@ -0,0 +1,23 @@ +package com.sof_eng.Controller.FileHandler; + +import com.sof_eng.Mapper.FileMapper; +import com.sof_eng.model.CommonResult; +import com.sof_eng.model.DTO.otreeFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +@Controller +@RestController +@RequestMapping("/api") +public class FileDeleteController { + @Autowired + FileMapper fileMapper; + @ResponseBody + @DeleteMapping("/removeFileRec") + public CommonResult removeFileRec(@RequestBody otreeFile otreeFile){ + //System.out.println(otreeFile); + fileMapper.removeFileRecById(otreeFile.getId()); + return CommonResult.success(otreeFile); + } +} diff --git a/src/main/java/com/sof_eng/Controller/FileHandler/FileGetController.java b/src/main/java/com/sof_eng/Controller/FileHandler/FileGetController.java new file mode 100644 index 0000000..0e670e8 --- /dev/null +++ b/src/main/java/com/sof_eng/Controller/FileHandler/FileGetController.java @@ -0,0 +1,34 @@ +package com.sof_eng.Controller.FileHandler; + +import com.sof_eng.Mapper.FileMapper; +import com.sof_eng.Util.JwtTokenUtil; +import com.sof_eng.model.CommonResult; +import com.sof_eng.model.DTO.otreeFile; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + + +import java.util.List; +@Controller +@RestController +@RequestMapping("/api") +public class FileGetController { + @Autowired + JwtTokenUtil jwtTokenUtil; + + @Autowired + FileMapper fileMapper; + @PostMapping("/getFileRec") + @ResponseBody + public CommonResult getFileRec(@RequestBody String endWith, @RequestHeader("Authorization") String token ){ + int l=endWith.length(); + endWith=endWith.substring(0,l-1); + token=token.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(50003,"invalid token"); + String username=jwtTokenUtil.getUsernameFromToken(token); + List otreeFiles=fileMapper.getFileRec(username,endWith); + return CommonResult.success(otreeFiles); + } +} diff --git a/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java b/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java index a97ad72..1a130a7 100644 --- a/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java +++ b/src/main/java/com/sof_eng/Controller/FileHandler/FileUpdateController.java @@ -4,6 +4,8 @@ import com.sof_eng.Mapper.FileMapper; import com.sof_eng.Util.JwtTokenUtil; import com.sof_eng.model.CommonResult; import com.sof_eng.model.DTO.otreeFile; +import io.swagger.annotations.Api; +import org.apache.ibatis.annotations.Update; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -11,41 +13,18 @@ import org.springframework.web.bind.annotation.*; import java.util.List; @Controller +@RestController +@Api("python文件接口") @RequestMapping("/api") public class FileUpdateController { - @Autowired - JwtTokenUtil jwtTokenUtil; @Autowired FileMapper fileMapper; - @PostMapping("/getFileRec") - @ResponseBody - public CommonResult getFileRec(@RequestBody String endWith, @RequestHeader("Authorization") String token ){ - int l=endWith.length(); - endWith=endWith.substring(0,l-1); - token=token.substring(7); - if(!jwtTokenUtil.validateToken(token)) - return CommonResult.error(50003,"invalid token"); - String username=jwtTokenUtil.getUsernameFromToken(token); - List otreeFiles=fileMapper.getFileRec(username,endWith); - return CommonResult.success(otreeFiles); - } - @ResponseBody - @PostMapping("/update") - public CommonResult updateFileRec(@RequestBody otreeFile id){ - System.out.println("touched update"); - fileMapper.updateFileRec(id.getId()); - otreeFile otreeFile=fileMapper.getFileRecById(id.getId()); + @PostMapping("/updateFileRec") + @CrossOrigin(methods = { RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT, RequestMethod.DELETE, RequestMethod.OPTIONS }) + public CommonResult updateFileRec(@RequestBody otreeFile otreeFile){ + System.out.println(otreeFile); + fileMapper.updateFileRec(otreeFile.getId()); return CommonResult.success(otreeFile); } - - @ResponseBody - @PostMapping("/remove") - public CommonResult removeFileRec(@RequestBody otreeFile id){ - System.out.println("touched remove"); - fileMapper.updateFileRec(id.getId()); - fileMapper.removeFileRecById(id.getId()); - return CommonResult.success("成功移除:"+fileMapper.getFileRecById(id.getId())); - - } } diff --git a/src/main/java/com/sof_eng/Controller/FileHandler/FileUploadController.java b/src/main/java/com/sof_eng/Controller/FileHandler/FileUploadController.java index f7576be..3f7e136 100644 --- a/src/main/java/com/sof_eng/Controller/FileHandler/FileUploadController.java +++ b/src/main/java/com/sof_eng/Controller/FileHandler/FileUploadController.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.UUID; @Controller +@RestController @RequestMapping("/api") public class FileUploadController { @Autowired @@ -44,7 +45,7 @@ public class FileUploadController { if(!jwtTokenUtil.validateToken(token)) return "invalid token"; String username= jwtTokenUtil.getUsernameFromToken(token); - System.out.println(username); + //System.out.println(username); if (file == null || file.isEmpty()) { return "upload file can not be empty"; } @@ -83,7 +84,7 @@ public class FileUploadController { otreeFile.setTitle(fileName); otreeFile.setFounder_id(user.getId()); fileMapper.insertFileRec(otreeFile); - System.out.println(uploadPath); + //System.out.println(uploadPath); String filePath = uploadPath + File.separator + fileName; System.out.println(filePath); File dir=new File(uploadPath); diff --git a/src/main/java/com/sof_eng/Mapper/FileMapper.java b/src/main/java/com/sof_eng/Mapper/FileMapper.java index fcaa41b..b8df46c 100644 --- a/src/main/java/com/sof_eng/Mapper/FileMapper.java +++ b/src/main/java/com/sof_eng/Mapper/FileMapper.java @@ -2,10 +2,12 @@ package com.sof_eng.Mapper; import com.sof_eng.model.DTO.otreeFile; import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; import java.util.List; @Mapper +@Repository public interface FileMapper { public void insertFileRec(otreeFile otreeFile); public List getFileRec(String username, String endWith); diff --git a/src/main/java/com/sof_eng/Service/ShellService.java b/src/main/java/com/sof_eng/Service/ShellService.java index dfa4883..dc31ae3 100644 --- a/src/main/java/com/sof_eng/Service/ShellService.java +++ b/src/main/java/com/sof_eng/Service/ShellService.java @@ -42,7 +42,7 @@ public class ShellService { } else { command = script; } - System.out.println(command); + //System.out.println(command); processBuilder.command("bash", "-c", command); // Use "bash" to execute the command Process process = processBuilder.start(); process.waitFor(); // Wait for the process to complete diff --git a/src/main/java/com/sof_eng/Util/MyFilter.java b/src/main/java/com/sof_eng/Util/MyFilter.java index 4bf4ddf..ccd7150 100644 --- a/src/main/java/com/sof_eng/Util/MyFilter.java +++ b/src/main/java/com/sof_eng/Util/MyFilter.java @@ -9,6 +9,7 @@ public class MyFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + // 过滤器的逻辑 // ... chain.doFilter(request, response); diff --git a/src/main/java/com/sof_eng/Util/MyInterceptor.java b/src/main/java/com/sof_eng/Util/MyInterceptor.java index 0298911..435ed33 100644 --- a/src/main/java/com/sof_eng/Util/MyInterceptor.java +++ b/src/main/java/com/sof_eng/Util/MyInterceptor.java @@ -12,8 +12,10 @@ public class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { - // 在请求处理之前执行的操作 - System.out.println("=====preHandle====="); + + + // 在请求处理之前执行的操作 + //System.out.println("=====preHandle====="); return true; // 返回true表示继续处理请求,返回false表示终止请求处理 } @@ -21,14 +23,14 @@ public class MyInterceptor implements HandlerInterceptor { public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // 在请求处理之后,视图渲染之前执行的操作 - System.out.println("=====postHandle====="); + //System.out.println("=====postHandle====="); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 在请求完成之后执行的操作,即视图渲染完成后 - System.out.println("=====afterCompletion====="); + // System.out.println("=====afterCompletion====="); } } diff --git a/src/main/java/com/sof_eng/config/SwaggerConfig.java b/src/main/java/com/sof_eng/config/SwaggerConfig.java index 6d3e481..c94e1da 100644 --- a/src/main/java/com/sof_eng/config/SwaggerConfig.java +++ b/src/main/java/com/sof_eng/config/SwaggerConfig.java @@ -23,7 +23,7 @@ public class SwaggerConfig { public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .select() - .apis(RequestHandlerSelectors.basePackage("com.agile.demo.Controller")) + .apis(RequestHandlerSelectors.basePackage("com.sof_eng.Controller")) .paths(PathSelectors.any()) .build() .apiInfo(apiInfo()); -- Gitee From 8d5422a5b91fdecc7936a5743ebfcec53c6d1be7 Mon Sep 17 00:00:00 2001 From: yudingyi Date: Mon, 19 Jun 2023 12:10:42 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9E=E9=AA=8C?= =?UTF-8?q?=E4=B8=8E=E8=A2=AB=E8=AF=95=E8=80=85=E7=AE=A1=E7=90=86=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 14 +- .../Controller/ExperimentController.java | 276 ++++++++++++++++-- .../sof_eng/Mapper/DistributionMapper.java | 4 + .../com/sof_eng/Mapper/ExperimentMapper.java | 2 + .../sof_eng/Service/DistributionService.java | 10 + .../sof_eng/Service/ExperimentService.java | 6 + .../com/sof_eng/model/DTO/Distribution.java | 19 +- .../com/sof_eng/model/DTO/Experiment.java | 11 +- src/main/java/com/sof_eng/model/DTO/User.java | 15 - .../java/com/sof_eng/model/LoginRequest.java | 8 + src/main/java/com/sof_eng/model/User.java | 13 + src/main/resources/application.yaml | 9 +- .../resources/mapper/DistributionMapper.xml | 27 +- .../resources/mapper/ExperimentMapper.xml | 36 ++- 14 files changed, 390 insertions(+), 60 deletions(-) delete mode 100644 src/main/java/com/sof_eng/model/DTO/User.java diff --git a/pom.xml b/pom.xml index 37701fd..4a08826 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,18 @@ 1.8 + + + org.apache.poi + poi + 5.0.0 + + + org.apache.poi + poi-ooxml + 5.0.0 + + org.springframework.boot spring-boot-starter @@ -83,8 +95,6 @@ 2.2.0 - - diff --git a/src/main/java/com/sof_eng/Controller/ExperimentController.java b/src/main/java/com/sof_eng/Controller/ExperimentController.java index c344b64..5118f43 100644 --- a/src/main/java/com/sof_eng/Controller/ExperimentController.java +++ b/src/main/java/com/sof_eng/Controller/ExperimentController.java @@ -1,21 +1,30 @@ package com.sof_eng.Controller; +import com.sof_eng.Service.DistributionService; import com.sof_eng.Service.ExperimentService; import com.sof_eng.Service.UserService; +import com.sof_eng.Util.JwtTokenUtil; import com.sof_eng.model.CommonResult; +import com.sof_eng.model.DTO.Distribution; import com.sof_eng.model.DTO.Experiment; import com.sof_eng.model.User; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; +import org.apache.poi.ss.usermodel.*; + + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; import java.util.List; @Slf4j -@CrossOrigin @RestController @RequestMapping("/experiment/") public class ExperimentController { @@ -23,14 +32,17 @@ public class ExperimentController { @Autowired ExperimentService experimentService; + @Autowired UserService userService; - + @Autowired + JwtTokenUtil jwtTokenUtil; + @Autowired + DistributionService distributionService; /** * experimentVO { * * private String title; - * private String url; * private Date createTime; * private Integer volume; * private Date activeTime; @@ -39,19 +51,26 @@ public class ExperimentController { * * } * 插入新的实验 - * @param token - * @param experimentVO - * @return + * @param authHeader 检验头 + * @param experimentVO 前端传过来的数据体 + * @return 一个Experiment类,即创建成功的数据库记录 CommonResult.success(experiment) */ @CrossOrigin @PostMapping("/upload") - public CommonResult uploadExp(@RequestHeader("Authorization") String token, @RequestBody Experiment experimentVO){ - try{ - //JWT反解析 - String username = ""; + public CommonResult uploadExp(@RequestHeader("Authorization") String authHeader, @RequestBody Experiment experimentVO){ + System.out.println("获得前端新增请求:" + experimentVO); + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println(username); + try{ User founder = userService.getUserByName(username); - Experiment experiment = new Experiment(0L, experimentVO.getTitle(), experimentVO.getUrl(), username, founder.getId(), experimentVO.getCreateTime(), experimentVO.getVolume(), experimentVO.getActiveTime(), experimentVO.getZipName(), experimentVO.getDictionary()); + Experiment experiment = new Experiment(0L, experimentVO.getTitle(), "none", username, founder.getId(), experimentVO.getCreateTime(), experimentVO.getVolume(), experimentVO.getActiveTime(), experimentVO.getZipName(), experimentVO.getDictionary()); experimentService.addExperiment(experiment); return CommonResult.success(experiment); @@ -63,15 +82,23 @@ public class ExperimentController { /** * 查询所有实验 - * @param token - * @return + * @param authHeader 检验头 + * @return List所有实验的列表 CommonResult.success(expList) */ @CrossOrigin @GetMapping("/getlist") - public CommonResult getExpList(@RequestHeader("Authorization") String token){ + public CommonResult getExpList(@RequestHeader("Authorization") String authHeader){ + System.out.println("authHeader: " + authHeader); + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + System.out.println("token: " + token); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println(username); try{ - String username = ""; List expList = experimentService.getListByUsername(username); System.out.print("成功查询到实验列表:"); System.out.println(expList); @@ -85,20 +112,227 @@ public class ExperimentController { } /** - * 删除实验 - * @param id - * @return + * + * @param id 实验id + * @param authHeader 检验头 + * @return 所删除的实验 CommonResult.success(experiment); */ @CrossOrigin @PostMapping("/delete") - public CommonResult deleteExp(@RequestBody long id){ + public CommonResult deleteExp( + @RequestParam("expId") Long id, @RequestHeader("Authorization") String authHeader){ + //验证expId + Experiment experiment = experimentService.getExperimentById(id); + if(experiment == null){ + return CommonResult.error(400, "invalid expId"); + } + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println("登录人:" + username); + try{ - Experiment experiment = experimentService.getExperimentById(id); experimentService.deleteExperimentById(id); - return CommonResult.success(experiment.getTitle()); + return CommonResult.success(experiment); }catch (Exception e){ log.info(e.getMessage()); return CommonResult.error(411, "出错:" + e.getMessage()); } } + + /** + * @param expId 实验id + * @param userId 要增加的被试者的id(前端填写) + * @param authHeader 检验头 + * @return 返回插入的distribution + */ + @CrossOrigin + @PostMapping("/addParticipant") + public CommonResult addParticipant(@RequestParam("expId") Long expId, @RequestParam("userId") Long userId,@RequestHeader("Authorization") String authHeader){ + //验证expId + Experiment experiment = experimentService.getExperimentById(expId); + if(experiment == null){ + return CommonResult.error(400, "invalid expId"); + } + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println("登录人:" + username); + + try{ + User user = userService.getUserById(userId); + if(user == null){ + return CommonResult.error(400, "invalid userId"); + } + + //检查是否已经插入 + Distribution distribution = distributionService.getDistributionByParExp(expId, user.getUsername()); + if(distribution != null) { + return CommonResult.error(300, "已经导入该参与者。"); + } + + distribution = new Distribution(); + // 构造 Distribution 对象并插入到数据库 + distribution.setExpId(expId); + distribution.setExpName(experiment.getTitle()); + distribution.setUrl("none"); + distribution.setParticipant(user.getUsername()); + distribution.setParticipantId(user.getId()); + distribution.setCreateTime(experiment.getCreateTime()); + distribution.setActiveTime(experiment.getActiveTime()); + + distributionService.addDistribution(distribution); + + return CommonResult.success(distribution); + } catch (Exception e) { + e.printStackTrace(); + log.info(e.getMessage()); + return CommonResult.error(411, "出错:" + e.getMessage()); + } + + } + + /** + * + * @param expId 实验的id + * @param file 参与者名单列表,里面只有一列数据 + * @param authHeader 检验头 + * @return distributionList + */ + @CrossOrigin + @PostMapping("/uploadParticipant") + public CommonResult uploadParticipant(@RequestParam("expId") Long expId, @RequestBody MultipartFile file,@RequestHeader("Authorization") String authHeader){ + //验证expId + Experiment experiment = experimentService.getExperimentById(expId); + if(experiment == null){ + return CommonResult.error(400, "invalid expId"); + } + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println("登录人:" + username); + + Distribution distribution = new Distribution(); + List distributionList = new ArrayList<>(); + + try{ + // 创建工作簿对象 + Workbook workbook = WorkbookFactory.create(file.getInputStream()); + + // 获取第一个工作表 + Sheet sheet = workbook.getSheetAt(0); + + // 遍历行 + for (Row row : sheet) { + // 获取参与者信息,假设参与者信息在第一列(索引为0) + Cell participantCell = row.getCell(0); + String participant = participantCell.getStringCellValue(); + + User user = userService.getUserByName(participant); + if(user == null){ + continue; + } + Distribution isJoined = distributionService.getDistributionByParExp(expId, user.getUsername()); + if(isJoined != null) { + continue; + } + + // 构造 Distribution 对象并插入到数据库 + distribution.setExpId(expId); + distribution.setExpName(experiment.getTitle()); + distribution.setUrl("none"); + distribution.setParticipant(participant); + distribution.setParticipantId(user.getId()); + distribution.setCreateTime(experiment.getCreateTime()); + distribution.setActiveTime(experiment.getActiveTime()); + + distributionService.addDistribution(distribution); + distributionList.add(distribution); + } + + workbook.close(); + return CommonResult.success(distributionList); + } catch (IOException e) { + e.printStackTrace(); + log.info(e.getMessage()); + return CommonResult.error(411, "出错:" + e.getMessage()); + } + } + + /** + * + * @param expId 实验id + * @param authHeader 检验头 + * @return 返回了一个List,这是所有该实验参与者username组成的列表 + */ + @CrossOrigin + @GetMapping("/getParticipant") + public CommonResult getParticipant(@RequestParam("expId") Long expId, @RequestHeader("Authorization") String authHeader){ + //验证expId + Experiment experiment = experimentService.getExperimentById(expId); + if(experiment == null){ + return CommonResult.error(400, "invalid expId"); + } + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println("登录人:" + username); + + try{ + List participants = distributionService.getUsernameByExpId(expId); + + return CommonResult.success(participants); + }catch (Exception e) { + e.printStackTrace(); + log.info(e.getMessage()); + return CommonResult.error(411, "出错:" + e.getMessage()); + } + } + + /** + * + * @param expId 实验id + * @param participant 参与者的username + * @param authHeader 检验头 + * @return 删除了的Distribution CommonResult.success(distribution); + */ + @CrossOrigin + @PostMapping("/deleteParticipant") + public CommonResult deleteParticipant(@RequestParam("expId") Long expId, @RequestParam("username") String participant, @RequestHeader("Authorization") String authHeader){ + //验证expId + Experiment experiment = experimentService.getExperimentById(expId); + if(experiment == null){ + return CommonResult.error(400, "invalid expId"); + } + // 解析Authorization请求头中的JWT令牌 Bearer access_token + String token = authHeader.substring(7); + if(!jwtTokenUtil.validateToken(token)) + return CommonResult.error(400, "invalid token"); + //JWT反解析 + String username= jwtTokenUtil.getUsernameFromToken(token); + System.out.println("登录人:" + username); + Distribution distribution = new Distribution(); + + try{ + distribution = distributionService.getDistributionByParExp(expId, participant); + distributionService.deleteDistributionById(distribution.getId()); + return CommonResult.success(distribution); + } catch (Exception e) { + e.printStackTrace(); + log.info(e.getMessage()); + return CommonResult.error(411, "出错:" + e.getMessage()); + } + } } diff --git a/src/main/java/com/sof_eng/Mapper/DistributionMapper.java b/src/main/java/com/sof_eng/Mapper/DistributionMapper.java index 9ba6ef8..3ed3d1d 100644 --- a/src/main/java/com/sof_eng/Mapper/DistributionMapper.java +++ b/src/main/java/com/sof_eng/Mapper/DistributionMapper.java @@ -5,6 +5,8 @@ import com.sof_eng.model.DTO.Distribution; import org.apache.ibatis.annotations.Mapper; import org.springframework.stereotype.Repository; +import java.util.List; + @Repository @Mapper public interface DistributionMapper { @@ -12,4 +14,6 @@ public interface DistributionMapper { void deleteDistributionById(Long id); void updateDistribution(Distribution distribution); Distribution getDistributionById(Long id); + List getUsernameByExpId(Long expId); + Distribution getDistributionByParExp(Long expId, String participant); } diff --git a/src/main/java/com/sof_eng/Mapper/ExperimentMapper.java b/src/main/java/com/sof_eng/Mapper/ExperimentMapper.java index 3e60994..ec451e8 100644 --- a/src/main/java/com/sof_eng/Mapper/ExperimentMapper.java +++ b/src/main/java/com/sof_eng/Mapper/ExperimentMapper.java @@ -19,4 +19,6 @@ public interface ExperimentMapper { Experiment getExperimentById(Long id); List getListByUsername(String username); + + int startExp(Experiment experiment); } \ No newline at end of file diff --git a/src/main/java/com/sof_eng/Service/DistributionService.java b/src/main/java/com/sof_eng/Service/DistributionService.java index 3c48e37..b2d72ce 100644 --- a/src/main/java/com/sof_eng/Service/DistributionService.java +++ b/src/main/java/com/sof_eng/Service/DistributionService.java @@ -6,6 +6,8 @@ import com.sof_eng.model.DTO.Distribution; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class DistributionService { @Autowired @@ -26,5 +28,13 @@ public class DistributionService { public Distribution getDistributionById(Long id) { return distributionMapper.getDistributionById(id); } + + public List getUsernameByExpId(Long expId) { + return distributionMapper.getUsernameByExpId(expId); + } + + public Distribution getDistributionByParExp(Long expId, String participant){ + return distributionMapper.getDistributionByParExp(expId, participant); + } } diff --git a/src/main/java/com/sof_eng/Service/ExperimentService.java b/src/main/java/com/sof_eng/Service/ExperimentService.java index 650aeee..40542dd 100644 --- a/src/main/java/com/sof_eng/Service/ExperimentService.java +++ b/src/main/java/com/sof_eng/Service/ExperimentService.java @@ -32,4 +32,10 @@ public class ExperimentService { public List getListByUsername(String username){ return experimentMapper.getListByUsername(username); } + + public int startExp(Long expId, String url){ + Experiment experiment = experimentMapper.getExperimentById(expId); + experiment.setUrl(url); + return experimentMapper.startExp(experiment); + } } diff --git a/src/main/java/com/sof_eng/model/DTO/Distribution.java b/src/main/java/com/sof_eng/model/DTO/Distribution.java index 828f47e..0dc7b25 100644 --- a/src/main/java/com/sof_eng/model/DTO/Distribution.java +++ b/src/main/java/com/sof_eng/model/DTO/Distribution.java @@ -2,6 +2,7 @@ package com.sof_eng.model.DTO; import lombok.Data; +import java.sql.Timestamp; import java.time.LocalDateTime; @Data @@ -12,9 +13,23 @@ public class Distribution { private String url; private String participant; private Long participantId; - private LocalDateTime createTime; - private LocalDateTime activeTime; + private Timestamp createTime; + private Timestamp activeTime; // Getter and Setter methods // ... + + public Distribution() { + } + + public Distribution(Long id, Long expId, String expName, String url, String participant, Long participantId, Timestamp createTime, Timestamp activeTime) { + this.id = id; + this.expId = expId; + this.expName = expName; + this.url = url; + this.participant = participant; + this.participantId = participantId; + this.createTime = createTime; + this.activeTime = activeTime; + } } diff --git a/src/main/java/com/sof_eng/model/DTO/Experiment.java b/src/main/java/com/sof_eng/model/DTO/Experiment.java index 3f39a7c..53de469 100644 --- a/src/main/java/com/sof_eng/model/DTO/Experiment.java +++ b/src/main/java/com/sof_eng/model/DTO/Experiment.java @@ -3,6 +3,7 @@ package com.sof_eng.model.DTO; import lombok.Data; +import java.sql.Timestamp; import java.util.Date; @Data @@ -12,15 +13,15 @@ public class Experiment { private String url; private String founder; private Long founderId; - private Date createTime; + private Timestamp createTime; private Integer volume; - private Date activeTime; + private Timestamp activeTime; private String zipName; private String dictionary; // Getter and Setter methods // ... - public Experiment(Long id, String title, String url, String founder, Long founderId, Date createTime, Integer volume, Date activeTime, String zipName, String dictionary) { + public Experiment(Long id, String title, String url, String founder, Long founderId, Timestamp createTime, Integer volume, Timestamp activeTime, String zipName, String dictionary) { this.id = id; this.title = title; this.url = url; @@ -33,10 +34,10 @@ public class Experiment { this.dictionary = dictionary; } - public Experiment(String title, String url, Date createTime, Integer volume, Date activeTime, String zipName, String dictionary) { + public Experiment(String title, Timestamp createTime, Integer volume, Timestamp activeTime, String zipName, String dictionary) { this.id = 0L; this.title = title; - this.url = url; + this.url = "none"; this.founder = "founder"; this.founderId = 0L; this.createTime = createTime; diff --git a/src/main/java/com/sof_eng/model/DTO/User.java b/src/main/java/com/sof_eng/model/DTO/User.java deleted file mode 100644 index 75ebf3e..0000000 --- a/src/main/java/com/sof_eng/model/DTO/User.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.sof_eng.model.DTO; - -import lombok.Data; - -@Data -public class User { - private Long id; - private String username; - private String chara; - private String password; - private String gender; - private String phone; - private String email; - private String org; -} diff --git a/src/main/java/com/sof_eng/model/LoginRequest.java b/src/main/java/com/sof_eng/model/LoginRequest.java index 0b8558b..4b1acf7 100644 --- a/src/main/java/com/sof_eng/model/LoginRequest.java +++ b/src/main/java/com/sof_eng/model/LoginRequest.java @@ -5,4 +5,12 @@ import lombok.Data; public class LoginRequest { private String username; private String password; + + public LoginRequest() { + } + + public LoginRequest(String username, String password) { + this.username = username; + this.password = password; + } } diff --git a/src/main/java/com/sof_eng/model/User.java b/src/main/java/com/sof_eng/model/User.java index 843b835..fcf885e 100644 --- a/src/main/java/com/sof_eng/model/User.java +++ b/src/main/java/com/sof_eng/model/User.java @@ -13,4 +13,17 @@ import lombok.Data; private String phone; private String org; + public User() { + } + + public User(Long id, String username, String chara, String password, String email, String gender, String phone, String org) { + this.id = id; + this.username = username; + this.chara = chara; + this.password = password; + this.email = email; + this.gender = gender; + this.phone = phone; + this.org = org; + } } diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 17182c2..b6726a5 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -19,9 +19,12 @@ jwt: spring: datasource: - url: jdbc:mysql://43.142.90.238:3306/db1 - username: db1 - password: 6PSYTYScYEAmT8fd + url: jdbc:mysql://localhost:3306/sstree + username: root + password: 123456 +# url: jdbc:mysql://43.142.90.238:3306/db1 +# username: db1 +# password: 6PSYTYScYEAmT8fd driver-class-name: com.mysql.cj.jdbc.Driver hikari: minimum-idle: 5 diff --git a/src/main/resources/mapper/DistributionMapper.xml b/src/main/resources/mapper/DistributionMapper.xml index 129aa24..a0d312e 100644 --- a/src/main/resources/mapper/DistributionMapper.xml +++ b/src/main/resources/mapper/DistributionMapper.xml @@ -2,6 +2,19 @@ + + + + + + + + + + + + + INSERT INTO distribution (exp_id, exp_name, url, participant, participant_id, create_time, active_time) VALUES (#{expId}, #{expName}, #{url}, #{participant}, #{participantId}, #{createTime}, #{activeTime}) @@ -23,7 +36,19 @@ WHERE id = #{id} - SELECT * FROM distribution WHERE id = #{id} + + + + + diff --git a/src/main/resources/mapper/ExperimentMapper.xml b/src/main/resources/mapper/ExperimentMapper.xml index 90234ce..070d0a5 100644 --- a/src/main/resources/mapper/ExperimentMapper.xml +++ b/src/main/resources/mapper/ExperimentMapper.xml @@ -3,16 +3,21 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - - - - - - - - - + + + + + + + + + + + + + + + INSERT INTO experiment (title, url, founder, founder_id, create_time, volume, active_time, zip_name, dictionary) @@ -35,9 +40,18 @@ WHERE id = #{id} - SELECT * FROM experiment WHERE id = #{id} + + + + UPDATE experiment + SET url = #{url} + WHERE id = #{id} + \ No newline at end of file -- Gitee