インターンシップ中に、いくつかの練習の手のプロジェクトを行い、分離の終わりの前と後のテストで問題になった後、それだけでツールを触れ、多くの場合、ちょうど最近使用前の分離とバックエンドの開発とテストの後端後の完璧なソリューションは、ので、いくつかの一般的な注意事項をコンパイル。
:いくつかの一般的な注釈闊歩学び
@Api:
クラスの役割を、このクラスは、コンテンツの特定の実装をマークするために使用しました。このクラスは、リソースの闊歩を示すフラグです。
パラメータ:
1.description:このクラスの役割を説明します。
2.tags:このクラスのラベルを設定します。
@ApiOperation:
リクエストを送信するため、値を示すことができる
@ApiImplicitParam:
動作させるためのパラメータ:パラメータに作用する
、以下のものが挙げられる含まれるプロパティ:
- 名前:パラメータ名。(この名前はパラメータ法の実際の名前と一致しているべきであることに注意してください、それ以外の場合は闊歩画面につながるには、複数のパラメータを表示されます)
- 値:役割のパラメータの特定の意味。
- 必須:必須パラメータ。
- データ型:パラメータのデータ型。
- paramType:クエリパラメータの種類、いくつかの形式があります。
- アクションの種類
パスは、アドレスの形式でデータを送信し
、自動的にパラメータ割り付けと直接マッピング完了するクエリ
のみ提出のストリームとしてPOSTをサポートするために、本体
の内部に要求ヘッダーを送信したヘッダパラメータ
POSTのみ形成支持体の形状として送信されたフォーム
あなたがオブジェクト型のパラメータを渡したい場合は@ApiImplicitParamを使用していないし、次に注釈メソッドのパラメータなど@RequestBodyはJSONパラメータを送信するためにフォームを使用することに注意してください
オブジェクトパラメータの方法がある場合は、一般的なパラメータがあり、注釈は、通常@ApiImplicitParamパラメータタイプ、およびオブジェクトタイプ及び処理の方法は、上記のようにすることができ
パラメータの数:@ApiImplicitParams
複数@ApiImplicitParam注釈を含まコメントでは、各注釈は、カンマで区切って
@ApiParam
メタ情報パラメータの増加に記載の
ケースという単純なプロジェクトコードショーを介して次のいくつかの共通のコードを:(一部のみ)を行ったが、基準のフォーマットを書き込むことができません
package com.gwdl.csxt.control.modules.hire.resume.controller;
/**
* @Auther: yxc
* @Date: 2019/12/16
* @Description:招聘模块控制类
*/
import com.gwdl.csxt.control.common.base.constant.DataResult;
import com.gwdl.csxt.control.common.utils.DateUtils;
import com.gwdl.csxt.control.modules.hire.resume.controller.vo.ResumeVO;
import com.gwdl.csxt.control.modules.hire.resume.entity.EvaluationClass;
import com.gwdl.csxt.control.modules.hire.resume.entity.Resume;
import com.gwdl.csxt.control.modules.hire.resume.service.ResumeService;
import com.gwdl.csxt.control.modules.hire.resume.utils.StringToDate;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@Api(tags = "招聘管理",description = "用于招聘模块的测试")
@Controller(value = "/resume")
public class ResumeController {
@Autowired
private ResumeService resumeService;
/**
* 功能描述: 根据id查询简历信息
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ApiOperation(value = "简历的查询")
@ApiImplicitParam(value = "根据简历id查询唯一的一份简历", name = "resumeID", paramType = "query", dataType = "String")
@RequestMapping(value="findResumeByID",method = RequestMethod.GET)
@ResponseBody
public DataResult findResume(String resumeID){
//调用业务层代码查询
Resume resume = resumeService.findResumeByID(resumeID);
DataResult result=new DataResult();
if(resume!=null){
result.setStatus(0);
result.setMsg("查询成功");
result.setData(resume);
return result;
}else{
result.setMsg("无查询用户");
result.setStatus(1);
return result;
}
}
/**
* 功能描述: 查询所有简历
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ApiOperation(value = "查询所有简历")
@ApiImplicitParam(value = "查询参数",required = false)
@RequestMapping(value="findAllResume",method = RequestMethod.GET)
@ResponseBody
public DataResult findAllResume(){
DataResult result=new DataResult();
List<Resume> allResume = resumeService.findAllResume();
if(allResume!=null){
result.setStatus(0);
result.setMsg("查询成功");
result.setData(allResume);
return result;
}else{
result.setStatus(1);
result.setMsg("查询数据失败");
return result;
}
}
/**
* 功能描述: 根据id删除简历
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@RequestMapping(value="deleteResume",method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "删除简历")
@ApiImplicitParam(value = "删除简历", name = "resumeID", paramType = "query", dataType = "String")
public DataResult deleteResume(String resumeID){
DataResult result=new DataResult();
int delete = resumeService.deleteResume(resumeID);
if(delete==1){
result.setMsg("删除成功");
result.setStatus(0);
return result;
}else{
result.setMsg("删除失败");
result.setStatus(1);
return result;
}
}
/**
* 功能描述: 批量删除
* @auther: yxc
* @return: DataResult
* @date: 2019/12/20
*/
@ApiOperation(value = "批量删除简历")
@ApiImplicitParam(value = "批量删除",name="resumeID",dataType = "String",paramType = "query",allowMultiple =true )
@ResponseBody
@RequestMapping(value = "deleteMany",method = RequestMethod.GET)
public DataResult deleteMany(String[] resumeID){
DataResult result=new DataResult();
resumeService.deleteMany(resumeID);
result.setStatus(0);
result.setMsg("删除成功");
return result;
}
/**
* 功能描述: 多条件查询简历
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ResponseBody
@RequestMapping(value="findResumeByCand",method = RequestMethod.POST)
@ApiOperation(value = "多条件查询")
@ApiImplicitParams({
@ApiImplicitParam(value="姓名",name="name",dataType="Stirng",paramType = "query"),
@ApiImplicitParam(value="简历状态",name="status",dataType="Stirng",paramType = "query"),
@ApiImplicitParam(value="简历来源",name="source",dataType="Stirng",paramType = "query"),
@ApiImplicitParam(value="开始时间",name="startTime",dataType="Stirng",paramType = "query"),
@ApiImplicitParam(value="结束时间",name="endTime",dataType="Stirng",paramType = "query")
})
public DataResult findResumeByCand(String name,String status,String source,String startTime,String endTime){
DataResult result=new DataResult();
List<Resume> resumeByCand = resumeService.findResumeByCand(name,status,source, startTime, endTime);
if(resumeByCand!=null){
result.setMsg("成功");
result.setStatus(0);
result.setData(resumeByCand);
return result;
}else{
result.setMsg("失败");
result.setStatus(1);
return result;
}
}
/**
* 功能描述:新增简历
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ApiOperation(value = "新增简历")
@ResponseBody
@RequestMapping(value="insertResume",method = RequestMethod.POST)
public DataResult insertResume(ResumeVO resumevo, HttpServletRequest request){
//设置主键
String s = UUID.randomUUID().toString();
String replace = s.replace("-", "");
resumevo.setResumeID(replace);
//将时间格式转为可以插入数据库的格式
String birthday = request.getParameter("birthday");
Date date = StringToDate.StringFormatDate(birthday);
resumevo.setBirthday(date);
DataResult result=new DataResult();
int i = resumeService.insertResume(resumevo);
if(i==1){
result.setMsg("新增成功");
result.setStatus(0);
return result;
}else{
result.setStatus(1);
result.setMsg("新增失败");
return result;
}
}
/**
* 功能描述: 更新简历
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ApiOperation(value = "更新简历")
@ApiImplicitParam(value = "更新参数", name = "resumeID", paramType = "query",dataType = "String")
@RequestMapping(value="updateResume",method = RequestMethod.POST)
@ResponseBody
public DataResult updateResume(@RequestBody ResumeVO resumevo, String resumeID){
//前端获取到的时间数据需要进行类型转换
DataResult dataResult=new DataResult();
Date birthday = resumevo.getBirthday();
String format = DateUtils.format(birthday, DateUtils.DATE_PATTERN);
Date date = DateUtils.stringToDate(format, DateUtils.DATE_PATTERN);
resumevo.setBirthday(date);
int i = resumeService.updateResume(resumevo,resumeID);
if(i==1){
dataResult.setMsg("更新成功");
dataResult.setStatus(1);
dataResult.setData(resumevo);
return dataResult;
}else{
dataResult.setMsg("更新失败");
dataResult.setStatus(0);
return dataResult;
}
}
/**
* 功能描述:更新简历回显数据
* @auther: yxc
* @return: DataResult
* @date: 2019/12/16
*/
@ApiOperation(value = "更新简历回显数据")
@ApiImplicitParam(value = "更新简历id", name = "resumeID", paramType = "query",dataType = "String")
@RequestMapping(value="updateResumeUI",method = RequestMethod.GET)
@ResponseBody
public DataResult updateResumeUI(String resumeID){
DataResult result = findResume(resumeID);
return result;
}
/**
* 功能描述:查看审核结果 评价
* @auther: yxc
* @return: DataResult
* @date: 2019/12/20
*/
@RequestMapping(value="findRemark",method=RequestMethod.GET)
@ResponseBody
@ApiOperation("查看简历评价")
@ApiImplicitParam(value = "简历评价",name="resumeID",paramType = "query",dataType = "String")
public DataResult findRemark(String resumeID){
Resume resume = resumeService.findResumeByID(resumeID);
//简历
EvaluationClass eva=new EvaluationClass();
eva.setResumeID(resumeID);
eva.setResumeNum(resume.getResumeNum());
eva.setDescription(resume.getDescription());
eva.setName(resume.getName());
eva.setEvaluation(resume.getEvaluation());
eva.setAuditorId(resume.getAuditorId());
DataResult result=new DataResult();
result.setData(eva);
result.setMsg("成功");
result.setStatus(1);
return result;
}
/**
* 功能描述: 文件上传功能 上传功能实现以后将文件的文件名保存到数据库中
* @auther: yxc
* @return: DataResult
* @date: 2019/12/19
*/
@ApiOperation(value="文件上传")
@ApiImplicitParam(value = "简历唯一ID",name="resumeID",dataType = "String",paramType = "query")
@RequestMapping(value="uploadFile",consumes = "multipart/*",headers = "content-type=multipart/form-data",method = RequestMethod.POST)
@ResponseBody
public DataResult uploadFile(@ApiParam(value = "上传文件",required = true) MultipartFile file, String resumeID,HttpServletRequest request)throws IOException{
DataResult result=new DataResult();
if(file.isEmpty()){
result.setMsg("文件不能为空");
result.setStatus(1);
return result;
}
//获取文件名
String fileName=file.getOriginalFilename();
//获取文件的后缀名 从后面往前截取
String suffixName=fileName.substring(fileName.lastIndexOf("."));
//输入流位置
String uploadFilePath= ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
System.out.println(uploadFilePath);
//下载文件路径
File dest=new File(uploadFilePath+fileName);
//如果目录不存在就新建一个
if(!dest.getParentFile().exists()){
dest.getParentFile().mkdirs();
}
file.transferTo(dest);
//如果上传成功的话就将文件名保存到数据库中去
int i = resumeService.updateResumeAttachmentAddress(fileName, resumeID);
if(i==1){
result.setMsg("上传成功");
result.setStatus(1);
return result;
}else{
result.setMsg("文件上传成功,但文件路径没有进入数据库");
result.setStatus(1);
return result;
}
}
/**
* 功能描述: 文件的下载功能,首先获取到数据库中的附件名称,然后实现下载功能
* @auther: yxc
* @return: null
* @date: 2019/12/19
*/
@ApiOperation(value="文件下载")
@ApiImplicitParam(value="简历ID",name="resumeID",paramType = "query",dataType = "String")
@RequestMapping(value="/downFile",method = RequestMethod.GET)
@ResponseBody
public DataResult downFile(String resumeID,HttpServletRequest request, HttpServletResponse response)throws Exception{
DataResult result=new DataResult();
Resume resume = resumeService.findResumeByID(resumeID);
String fileName=resume.getResumeAttachmentAddress();
System.out.println(fileName);
if(fileName!=null){
String realPath=ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
File file=new File(realPath,fileName);
if(file.exists()){
response.setContentType("application/force-download");//设置下载不打开
//设置文件的中文名称乱码问题
fileName=new String(fileName.getBytes("UTF-8"),"ISO-8859-1");
response.addHeader("Content-Disposition",
"addachment;fileName="+fileName);//设置文件名
byte[] buffer=new byte[1024];
FileInputStream input=null;
BufferedInputStream bufferInput=null;
input=new FileInputStream(file);
bufferInput=new BufferedInputStream(input);
OutputStream out=response.getOutputStream();
int i=input.read(buffer);
while(i!=-1){
out.write(buffer,0,i);
i=input.read(buffer);
}
System.out.println("success");
//关闭资源
if(bufferInput!=null){
bufferInput.close();
}
if(input!=null){
input.close();
}
if(out!=null){
out.close();
}
}
}
result.setMsg("下载成功");
return result;
}
/**
* 功能描述: 文件在线浏览功能
* @auther: yxc
* @return: DataResult
* @date: 2019/12/20
*/
@RequestMapping(value="/openFile",method = RequestMethod.POST)
@ApiOperation(value="在线浏览")
@ApiImplicitParam(value="文件浏览",name="resumeID",dataType = "String",paramType = "query")
public void openFile(String resumeID,HttpServletRequest request) throws Exception {
//首先查询到简历
Resume resume = resumeService.findResumeByID(resumeID);
//获取附件的名称
String fileName=resume.getResumeAttachmentAddress();
String uploadFilePath= ResourceUtils.getURL("classpath:").getPath()+"uploadFile/";
System.out.println(uploadFilePath+fileName);
//调用程序打开文件
String cmd="rundll32 url.dll FileProtocolHandler file://"+uploadFilePath+fileName;
Runtime runtime=Runtime.getRuntime();
runtime.exec(cmd);
}
}
上記試験一部闊歩このような対処方法に渡された複数のパラメータなどの一般的なアプローチを達成するために、オブジェクトに対処する方法であり、アレイに対処する方法のコレクションであり、ファイルに対処する方法です。ライティングは、最大使用されていない他の多くの機能がありますが、完璧ではありません。しかし、最も一般的な用途は、より多くの情報を表示するように拡張されるように、基本的な含まれています。