基于Java+SpringMVC+vue+element实现前后端分离校园失物招领系统详细设计_失物招领系统的系统类图

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
useridbigint用户id
refidbigint收藏id
tablenamevarchar200表名
namevarchar200收藏名称
picturevarchar200收藏图片
typevarchar200类型(1:收藏,21:赞,22:踩)
inteltypevarchar200推荐类型

表4-2:失物信息

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
wupinmingchengvarchar200物品名称
tupianvarchar200图片
wupinleibievarchar200物品类别
diushididianvarchar200丢失地点
diushishijiandatetime丢失时间
xiangximiaoshulongtext4294967295详细描述
yonghumingvarchar200用户名
xingmingvarchar200姓名
shoujivarchar200手机

表4-3:留言板

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
useridbigint留言人id
usernamevarchar200用户名
contentlongtext4294967295留言内容
cpicturevarchar200留言图片
replylongtext4294967295回复内容
rpicturevarchar200回复图片

表4-4:公告信息

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
gonggaobiaotivarchar200公告标题
leixingvarchar200类型
tupianvarchar200图片
neironglongtext4294967295内容
faburiqidate发布日期

表4-5:招领信息

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
wupinmingchengvarchar200物品名称
tupianvarchar200图片
wupinleibievarchar200物品类别
jianshididianvarchar200捡拾地点
jianshishijiandatetime捡拾时间
xiangximiaoshulongtext4294967295详细描述
yonghumingvarchar200用户名
xingmingvarchar200姓名
shoujivarchar200手机

表4-6:用户

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
yonghumingvarchar200用户名
mimavarchar200密码
xingmingvarchar200姓名
xingbievarchar200性别
touxiangvarchar200头像
shoujivarchar200手机

表4-7:物品类别

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
wupinleibievarchar200物品类别

表4-8:用户表

字段名称类型长度字段说明
idbigint主键
usernamevarchar100用户名
passwordvarchar100密码
rolevarchar100角色
addtimetimestamp新增时间

表4-9:token表

字段名称类型长度字段说明
idbigint主键
useridbigint用户id
usernamevarchar100用户名
tablenamevarchar100表名
rolevarchar100角色
tokenvarchar200密码
addtimetimestamp新增时间
expiratedtimetimestamp过期时间

表4-10:交流论坛

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
titlevarchar200帖子标题
contentlongtext4294967295帖子内容
parentidbigint父节点id
useridbigint用户id
usernamevarchar200用户名
isdonevarchar200状态

表4-11:招领信息评论表

字段名称类型长度字段说明
idbigint主键
addtimetimestamp创建时间
refidbigint关联表id
useridbigint用户id
nicknamevarchar200用户名
contentlongtext4294967295评论内容
replylongtext4294967295回复内容

代码实现:


/**
 * 上传文件映射表
 */
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
	@Autowired
    private ConfigService configService;

/**
	 * 下载文件
	 */
	@IgnoreAuth
	@RequestMapping("/download")
	public void download(@RequestParam String fileName, HttpServletRequest request, HttpServletResponse response) {
		try {
			File file = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
			if (file.exists()) {
				response.reset();
				response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName+"\"");
				response.setHeader("Cache-Control", "no-cache");
				response.setHeader("Access-Control-Allow-Credentials", "true");
				response.setContentType("application/octet-stream; charset=UTF-8");
				IOUtils.write(FileUtils.readFileToByteArray(file), response.getOutputStream());
			}

		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 上传文件
	 */
	@RequestMapping("/upload")
	public R upload(@RequestParam("file") MultipartFile file, String type,HttpServletRequest request) throws Exception {
		if (file.isEmpty()) {
			throw new EIException("上传文件不能为空");
		}
		String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
		String fileName = new Date().getTime()+"."+fileExt;
		File dest = new File(request.getSession().getServletContext().getRealPath("/upload")+"/"+fileName);
		file.transferTo(dest);
		if(StringUtils.isNotBlank(type) && type.equals("1")) {
			ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
			if(configEntity==null) {
				configEntity = new ConfigEntity();
				configEntity.setName("faceFile");
				configEntity.setValue(fileName);
			} else {
				configEntity.setValue(fileName);
			}
			configService.insertOrUpdate(configEntity);
		}
		return R.ok().put("file", fileName);
	}
	
	
	
}


/**
 * 失物信息
 * 后端接口
 * @author 
 * @email 
 * @date 2022-03-06 13:11:28
 */
@RestController
@RequestMapping("/shiwuxinxi")
public class ShiwuxinxiController {
    @Autowired
    private ShiwuxinxiService shiwuxinxiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,ShiwuxinxiEntity shiwuxinxi, HttpServletRequest request){

		String tableName = request.getSession().getAttribute("tableName").toString();
		if(tableName.equals("yonghu")) {
			shiwuxinxi.setYonghuming((String)request.getSession().getAttribute("username"));
		}
        EntityWrapper<ShiwuxinxiEntity> ew = new EntityWrapper<ShiwuxinxiEntity>();
		PageUtils page = shiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shiwuxinxi), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
	@IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params,ShiwuxinxiEntity shiwuxinxi, HttpServletRequest request){
        EntityWrapper<ShiwuxinxiEntity> ew = new EntityWrapper<ShiwuxinxiEntity>();
		PageUtils page = shiwuxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, shiwuxinxi), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("/lists")
    public R list( ShiwuxinxiEntity shiwuxinxi){
       	EntityWrapper<ShiwuxinxiEntity> ew = new EntityWrapper<ShiwuxinxiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( shiwuxinxi, "shiwuxinxi")); 
        return R.ok().put("data", shiwuxinxiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(ShiwuxinxiEntity shiwuxinxi){
        EntityWrapper< ShiwuxinxiEntity> ew = new EntityWrapper< ShiwuxinxiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( shiwuxinxi, "shiwuxinxi")); 
		ShiwuxinxiView shiwuxinxiView =  shiwuxinxiService.selectView(ew);
		return R.ok("查询失物信息成功").put("data", shiwuxinxiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        ShiwuxinxiEntity shiwuxinxi = shiwuxinxiService.selectById(id);
        return R.ok().put("data", shiwuxinxi);
    }

    /**
     * 前端详情
     */
	@IgnoreAuth
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        ShiwuxinxiEntity shiwuxinxi = shiwuxinxiService.selectById(id);
        return R.ok().put("data", shiwuxinxi);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("/save")
    public R save(@RequestBody ShiwuxinxiEntity shiwuxinxi, HttpServletRequest request){
    	shiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(shiwuxinxi);

        shiwuxinxiService.insert(shiwuxinxi);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody ShiwuxinxiEntity shiwuxinxi, HttpServletRequest request){
    	shiwuxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(shiwuxinxi);

        shiwuxinxiService.insert(shiwuxinxi);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody ShiwuxinxiEntity shiwuxinxi, HttpServletRequest request){
        //ValidatorUtils.validateEntity(shiwuxinxi);
        shiwuxinxiService.updateById(shiwuxinxi);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        shiwuxinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ShiwuxinxiEntity> wrapper = new EntityWrapper<ShiwuxinxiEntity>();


### 笔者福利

##### 以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

**有了这个,面试踩雷?不存在的!**

##### 回馈粉丝,诚意满满!!!

![](https://img-blog.csdnimg.cn/img_convert/2de6b6b9ef41760567847c0fc5fa910b.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/1dedfa87b5377ea945948ee1a35a96cb.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/f1dca17aa261a4676437ce525ec84cfa.webp?x-oss-process=image/format,png)
![](https://img-blog.csdnimg.cn/img_convert/2d8912eb10511db6ae8d3a080cce0f54.webp?x-oss-process=image/format,png)

				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<ShiwuxinxiEntity> wrapper = new EntityWrapper<ShiwuxinxiEntity>();


### 笔者福利

##### 以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。

**有了这个,面试踩雷?不存在的!**

##### 回馈粉丝,诚意满满!!!

[外链图片转存中...(img-tC2lWmNi-1714656172784)]
[外链图片转存中...(img-A9ELtiJh-1714656172784)]
[外链图片转存中...(img-iF65HLH9-1714656172785)]
[外链图片转存中...(img-NhfEVjNe-1714656172785)]

> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值