作者主頁:編程指南針
作者簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家 、掘金特邀作者、多年架構(gòu)師設(shè)計(jì)經(jīng)驗(yàn)、騰訊課堂常駐講師
主要內(nèi)容:Java項(xiàng)目、畢業(yè)設(shè)計(jì)、簡歷模板、學(xué)習(xí)資料、面試題庫、技術(shù)互助
收藏點(diǎn)贊不迷路? 關(guān)注作者有好處
文末獲取源碼?
項(xiàng)目編號:BS-PT-102
前言:
網(wǎng)絡(luò)的快速發(fā)展,信息的管理方式也得到了改變,我國從二十世紀(jì)九十年代開始,一些企業(yè)單位和政府對信息的管理都通過互聯(lián)網(wǎng)絡(luò)進(jìn)行,傳統(tǒng)的網(wǎng)絡(luò)管理方式存在很多問題,例如網(wǎng)絡(luò)不被人們接收、關(guān)于互聯(lián)網(wǎng)絡(luò)的法律法規(guī)不夠完善等問題導(dǎo)致互聯(lián)網(wǎng)絡(luò)的普及率低,并且對各大機(jī)構(gòu)使用互聯(lián)網(wǎng)絡(luò)有所阻礙,我國的經(jīng)濟(jì)進(jìn)入二十一世紀(jì)以后得到了快速的發(fā)展,傳統(tǒng)的網(wǎng)絡(luò)不健全問題得到了解決,各大機(jī)構(gòu)開始引進(jìn)互聯(lián)網(wǎng)絡(luò)對信息進(jìn)行科學(xué)化的管理。
傳統(tǒng)的資源分享信息的管理都是通過手工進(jìn)行記錄統(tǒng)計(jì)。這種管理的方式不但管理效率低、工作人員查找信息或者對學(xué)習(xí)資源分享信息進(jìn)行變更時非常不方便。所以隨著網(wǎng)絡(luò)的發(fā)展,學(xué)習(xí)資源分享也開始對資源分享的相關(guān)信息通過網(wǎng)絡(luò)進(jìn)行智能化管理,通過使用網(wǎng)絡(luò)進(jìn)行信息的管理,用戶和管理者認(rèn)識到了網(wǎng)絡(luò)的強(qiáng)大,計(jì)算機(jī)功能的強(qiáng)大,對數(shù)據(jù)的存儲有著與傳統(tǒng)管理方式無法比擬的優(yōu)點(diǎn)。通過網(wǎng)絡(luò)對信息查找的檢索速度快、存儲量大以及保密性強(qiáng),可以保存的時間也很長,付出的成本也很低。同時通過網(wǎng)絡(luò)的發(fā)展可以提高工作效率、更好的幫助學(xué)習(xí)資源分享管理者進(jìn)行信息的管理。同時可以更好的服務(wù)于用戶。通過網(wǎng)絡(luò),學(xué)習(xí)資源分享信息的各個方面都得到了科學(xué)化的、規(guī)范性的管理。
學(xué)習(xí)資源分享系統(tǒng)開發(fā)的任務(wù)是首先對開發(fā)的研究背景、意義以及開發(fā)現(xiàn)狀進(jìn)行介紹。對系統(tǒng)進(jìn)行不同角色的角度進(jìn)行需求分析,然后對系統(tǒng)進(jìn)行設(shè)計(jì),減少系統(tǒng)開發(fā)成本,同時也為了設(shè)計(jì)出更符合用戶的程序,通過對系統(tǒng)角色進(jìn)行分析后,對系統(tǒng)功能進(jìn)一步詳細(xì)分析,最后完成系統(tǒng)設(shè)計(jì)。學(xué)習(xí)資源分享系統(tǒng)開發(fā)選擇Java語言,后臺數(shù)據(jù)庫采用 MySQL進(jìn)行對數(shù)據(jù)存儲。最后系統(tǒng)完成后對系統(tǒng)功能進(jìn)行測試以及發(fā)布。
一,項(xiàng)目簡介
1.1用例分析
1.1.1管理員用例圖
系統(tǒng)中的核心用戶是系統(tǒng)管理員,管理員登錄后,通過管理員菜單來管理后臺系統(tǒng)。主要功能有:個人中心、用戶管理、資源類型管理、資源分享管理、舉報(bào)信息管理、在線交流、系統(tǒng)管理等功能。管理員用例如圖3-7所示。
圖1-1 管理員用例圖
1.1.2用戶用例圖
用戶進(jìn)入系統(tǒng)可以查看資源分享、在線交流、公告信息、個人中心、資源分享管理、舉報(bào)信息管理、我的收藏管理等功能。用戶用例如圖3-8所示。
?
圖1-2用戶用例圖
1.2 功能結(jié)構(gòu)圖
系統(tǒng)的整體功能結(jié)構(gòu)如下圖所示:
?
進(jìn)過系統(tǒng)的分析后,就開始記性系統(tǒng)的設(shè)計(jì),系統(tǒng)設(shè)計(jì)包含總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)??傮w設(shè)計(jì)只是一個大體的設(shè)計(jì),經(jīng)過了總體設(shè)計(jì),我們能夠劃分出系統(tǒng)的一些東西,例如文件、文檔、數(shù)據(jù)等。而且我們通過總體設(shè)計(jì),大致可以劃分出了程序的模塊,以及功能。但是只是一個初步的分類,并沒有真正的實(shí)現(xiàn)。
1.3 整架構(gòu)
整體設(shè)計(jì),只是一個初步設(shè)計(jì),而且,對于一個項(xiàng)目,我們可以進(jìn)行多個整體設(shè)計(jì),通過對比,包括性能的對比、成本的對比、效益的對比,來最終確定一個最優(yōu)的設(shè)計(jì)方案,選擇優(yōu)秀的整體設(shè)計(jì)可以降低開發(fā)成本,增加公司效益,從這一點(diǎn)來講,整體設(shè)計(jì)還是非常重要的。
學(xué)習(xí)資源分享系統(tǒng)工作原理圖如圖4-1所示:
?
圖1-3 系統(tǒng)工作原理圖
1.4 數(shù)據(jù)庫設(shè)計(jì)
數(shù)據(jù)模型中的實(shí)體(Entity),也稱為實(shí)例,對應(yīng)現(xiàn)實(shí)世界中可區(qū)別于其他對象的“事件”或“事物”。例如,公司中的每個員工,家里中的每個家具。
本系統(tǒng)的E-R圖如下圖所示:
1、用戶信息實(shí)體圖如圖4-3所示:
?
圖1-4用戶信息實(shí)體圖
2、管理員信息實(shí)體圖如圖4-4所示:
?
圖1-5管理員信息實(shí)體圖
3、資源類型實(shí)體圖如圖4-5所示:
?
圖1-6資源類型實(shí)體圖
4、公告信息實(shí)體圖如圖4-6所示:
?
圖1-7公告信息實(shí)體圖
5、整體ER圖如圖4-7所示:
?
圖1-8整體ER圖
1.5?數(shù)據(jù)庫表設(shè)計(jì)
數(shù)據(jù)庫的表信息屬于設(shè)計(jì)的一部分,下面介紹數(shù)據(jù)庫中的一部分表的詳細(xì)信息。
表1-1 news公告信息表
字段名稱 |
類型 |
長度 |
字段說明 |
主鍵 |
默認(rèn)值 |
id |
bigint |
主鍵 |
主鍵 |
||
addtime |
timestamp |
創(chuàng)建時間 |
|||
title |
varchar |
200 |
標(biāo)題 |
||
introduction |
longtext |
4294967295 |
簡介 |
||
picture |
varchar |
200 |
圖片 |
||
content |
longtext |
4294967295 |
內(nèi)容 |
表1-2 users管理員信息表
字段名稱 |
類型 |
長度 |
字段說明 |
主鍵 |
默認(rèn)值 |
id |
bigint |
主鍵 |
主鍵 |
||
username |
varchar |
100 |
用戶名 |
||
password |
varchar |
100 |
密碼 |
||
role |
varchar |
100 |
角色 |
管理員 |
|
addtime |
timestamp |
新增時間 |
表1-3 yonghu用戶信息表
字段名稱 |
類型 |
長度 |
字段說明 |
主鍵 |
默認(rèn)值 |
id |
bigint |
主鍵 |
主鍵 |
||
addtime |
timestamp |
創(chuàng)建時間 |
|||
yonghuming |
varchar |
200 |
用戶名 |
||
mima |
varchar |
200 |
密碼 |
||
xingming |
varchar |
200 |
姓名 |
||
xingbie |
varchar |
200 |
性別 |
||
touxiang |
varchar |
200 |
頭像 |
||
youxiang |
varchar |
200 |
郵箱 |
||
shouji |
varchar |
200 |
手機(jī) |
表1-4 ziyuanleixing資源類型信息表
字段名稱 |
類型 |
長度 |
字段說明 |
主鍵 |
默認(rèn)值 |
id |
bigint |
主鍵 |
主鍵 |
||
addtime |
timestamp |
創(chuàng)建時間 |
|||
ziyuanleixing |
varchar |
200 |
資源類型 |
二,環(huán)境介紹
語言環(huán)境:Java:? jdk1.8
數(shù)據(jù)庫:Mysql: mysql5.7
應(yīng)用服務(wù)器:Tomcat:? tomcat8.5.31
開發(fā)工具:IDEA或eclipse
后臺開發(fā)技術(shù):Springboot+Mybatis-plus
前臺開發(fā)技術(shù):Vue+Nodejs+ElementUI
三,系統(tǒng)展示
3.1 登錄
管理員輸入管理的賬號、密碼登錄系統(tǒng),這時候系統(tǒng)的數(shù)據(jù)庫就會在進(jìn)行查找相關(guān)的信息,如果我們輸入的賬號、密碼不正確,數(shù)據(jù)庫就會提示出錯誤的信息提示,同時會提示用戶重新輸入輸入自己的賬號、密碼,直到賬號密碼輸入成功后,會提登錄成功的信息。網(wǎng)站用戶登錄效果圖如圖5-1所示:
????
圖3-1登錄界面
?
3.2 管理員功能模塊的實(shí)現(xiàn)
3.2.1 管理員功能界面
管理員登錄系統(tǒng)可以查看和管理個人中心、用戶管理、資源類型管理、資源分享管理、舉報(bào)信息管理、在線交流、系統(tǒng)管理等功能。管理員功能界面展示如圖3-2所示。
?
?
圖3-2管理員功能界面圖
3.2.2 個人中心界面
管理員登錄后點(diǎn)擊系統(tǒng)個人中心功能界面進(jìn)入相關(guān)界面可以對個人信息進(jìn)行查看和修改等操作,其界面展示如圖5-3所示。
?
圖3-3 個人中心界面圖
3.2.3 用戶管理界面
管理員登錄后可在后臺管理對用戶信息進(jìn)行添加、刪除、修改以及查看等操作,其界面展示如圖5-4所示。
?
圖3-4 用戶管理界面
3.2.4資源類型管理界面
管理員登錄網(wǎng)站進(jìn)入功能資源類型管理可以對該界面進(jìn)行查看、添加、刪除以及修改等操作,其界面展示如圖3-5所示。
?
圖3-5 資源類型管理界面
3.2.5 資源分享管理界面
管理員進(jìn)入系統(tǒng)可以對資源分享信息進(jìn)行查看、添加和管理等操作,其界面展示如圖3-6所示。
?
圖3-6 資源分享管理界面
3.2.6舉報(bào)信息管理界面
管理員進(jìn)入網(wǎng)站點(diǎn)擊舉報(bào)信息管理界面進(jìn)入后臺可以對相關(guān)信息進(jìn)行查看、添加、修改和刪除等操作,其界面展示如圖3-7所示。
?
圖3-7舉報(bào)信息管理界面
3.2.7在線交流界面
管理員進(jìn)入網(wǎng)站點(diǎn)擊在線交流管理界面進(jìn)入后臺可以對相關(guān)信息進(jìn)行查看、添加、修改和刪除等操作,其界面展示如圖3-8所示。
?
圖3-8在線交流界面
3.2.8 系統(tǒng)管理界面
管理員進(jìn)入網(wǎng)站點(diǎn)擊系統(tǒng)管理界面進(jìn)入后臺可以對相關(guān)信息進(jìn)行查看、修改和刪除等操作,其界面展示如圖5-9所示。
?
圖3-9系統(tǒng)管理界面
3.3 用戶功能模塊的實(shí)現(xiàn)
3.3.1 首頁界面
用戶進(jìn)入網(wǎng)站后可以查看:資源分享、在線交流、公告信息等操作,如圖3-10所示。
?
圖3-10 首頁界面
3.3.2 用戶注冊界面
用戶通過添加個人詳細(xì)信息進(jìn)行注冊登錄網(wǎng)站等操作。如圖3-11所示。
?
圖3-11用戶注冊界面
3.3.3 個人中心界面
用戶進(jìn)入系統(tǒng)可以查看個人中心、資源分享管理、舉報(bào)信息管理、我的收藏管理等功能。如圖3-12所示。
?
圖3-12 個人中心界面
3.3.4 資源列表界面
用戶進(jìn)入系統(tǒng)可以查看用戶分享的資源信息。如圖3-13所示。
?圖3-13 資源列表界面
3.3.5 資源詳情界面
用戶進(jìn)入系統(tǒng)可以查看用戶分享的資源詳情信息,在此頁面可以下載、點(diǎn)贊、收藏、評論、舉報(bào)等。如圖3-14所示。
??圖3-14 個人資源管理界面
3.3.6 個人后臺管理
用戶進(jìn)入系統(tǒng)的個人后臺管理可以管理個人信息、管理自己分享的資源信息、查看舉報(bào)回復(fù)tffu。如圖3-15所示。
??圖3-15 個人資源管理界面
四,核心代碼展示
package com.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import com.annotation.IgnoreAuth;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.entity.ConfigEntity;
import com.entity.EIException;
import com.service.ConfigService;
import com.utils.R;
/**
* 上傳文件映射表
*/
@RestController
@RequestMapping("file")
@SuppressWarnings({"unchecked","rawtypes"})
public class FileController{
@Autowired
private ConfigService configService;
/**
* 上傳文件
*/
@RequestMapping("/upload")
@IgnoreAuth
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上傳文件不能為空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
/**
* 如果使用idea或者eclipse重啟項(xiàng)目,發(fā)現(xiàn)之前上傳的圖片或者文件丟失,將下面一行代碼注釋打開
* 請將以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替換成你本地項(xiàng)目的upload路徑,
* 并且項(xiàng)目路徑不能存在中文、空格等特殊字符
*/
// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路徑以后請將該行最前面的//注釋去掉**/
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);
}
/**
* 下載文件
*/
@IgnoreAuth
@RequestMapping("/download")
public ResponseEntity<byte[]> download(@RequestParam String fileName) {
try {
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
File file = new File(upload.getAbsolutePath()+"/"+fileName);
if(file.exists()){
/*if(!fileService.canRead(file, SessionManager.getSessionUser())){
getResponse().sendError(403);
}*/
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", fileName);
return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED);
}
} catch (IOException e) {
e.printStackTrace();
}
return new ResponseEntity<byte[]>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
package com.controller;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;
import com.entity.YonghuEntity;
import com.entity.view.YonghuView;
import com.service.YonghuService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;
import java.io.IOException;
/**
* 用戶
* 后端接口
* @author
* @email
* @date 2022-10-28 09:54:01
*/
@RestController
@RequestMapping("/yonghu")
public class YonghuController {
@Autowired
private YonghuService yonghuService;
@Autowired
private TokenService tokenService;
/**
* 登錄
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
if(u==null || !u.getMima().equals(password)) {
return R.error("賬號或密碼不正確");
}
String token = tokenService.generateToken(u.getId(), username,"yonghu", "用戶" );
return R.ok().put("token", token);
}
/**
* 注冊
*/
@IgnoreAuth
@RequestMapping("/register")
public R register(@RequestBody YonghuEntity yonghu){
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
if(u!=null) {
return R.error("注冊用戶已存在");
}
Long uId = new Date().getTime();
yonghu.setId(uId);
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 退出
*/
@RequestMapping("/logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 獲取用戶的session用戶信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
YonghuEntity u = yonghuService.selectById(id);
return R.ok().put("data", u);
}
/**
* 密碼重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", username));
if(u==null) {
return R.error("賬號不存在");
}
u.setMima("123456");
yonghuService.updateById(u);
return R.ok("密碼已重置為:123456");
}
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
HttpServletRequest request){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@IgnoreAuth
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,YonghuEntity yonghu,
HttpServletRequest request){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
PageUtils page = yonghuService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, yonghu), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( YonghuEntity yonghu){
EntityWrapper<YonghuEntity> ew = new EntityWrapper<YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));
return R.ok().put("data", yonghuService.selectListView(ew));
}
/**
* 查詢
*/
@RequestMapping("/query")
public R query(YonghuEntity yonghu){
EntityWrapper< YonghuEntity> ew = new EntityWrapper< YonghuEntity>();
ew.allEq(MPUtil.allEQMapPre( yonghu, "yonghu"));
YonghuView yonghuView = yonghuService.selectView(ew);
return R.ok("查詢用戶成功").put("data", yonghuView);
}
/**
* 后端詳情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 前端詳情
*/
@IgnoreAuth
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
YonghuEntity yonghu = yonghuService.selectById(id);
return R.ok().put("data", yonghu);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
if(u!=null) {
return R.error("用戶已存在");
}
yonghu.setId(new Date().getTime());
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
yonghu.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(yonghu);
YonghuEntity u = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
if(u!=null) {
return R.error("用戶已存在");
}
yonghu.setId(new Date().getTime());
yonghuService.insert(yonghu);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
@Transactional
public R update(@RequestBody YonghuEntity yonghu, HttpServletRequest request){
//ValidatorUtils.validateEntity(yonghu);
yonghuService.updateById(yonghu);//全部更新
return R.ok();
}
/**
* 刪除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
yonghuService.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<YonghuEntity> wrapper = new EntityWrapper<YonghuEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
int count = yonghuService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
五,項(xiàng)目總結(jié)
本系統(tǒng)通過對Java和MySQL數(shù)據(jù)庫的簡介,從硬件和軟件兩反面說明了學(xué)習(xí)資源分享系統(tǒng)的可行性,本文結(jié)論及研究成果如下:實(shí)現(xiàn)了Java與MySQL相結(jié)合構(gòu)建的學(xué)習(xí)資源分享系統(tǒng),網(wǎng)站可以響應(yīng)式展示。通過本次學(xué)習(xí)資源分享系統(tǒng)的研究與實(shí)現(xiàn),我感到學(xué)海無涯,學(xué)習(xí)是沒有終點(diǎn)的,而且實(shí)踐出真知,只有多動手才能盡快掌握它,經(jīng)驗(yàn)對系統(tǒng)的開發(fā)非常重要,經(jīng)驗(yàn)不足,就難免會有許多考慮不周之處。比如要有美觀的界面,更完善的功能,才能吸引更多的用戶。
由于在此之前對于Java知識沒有深入了解,所以從一開始就碰到許多困難,例如一開始的頁面顯示不規(guī)范、數(shù)據(jù)庫連接有問題已經(jīng)無法實(shí)現(xiàn)參數(shù)的傳遞等等,不過通過在網(wǎng)上尋找有關(guān)資料以及同學(xué)的幫助下最后都得到了解決,在此過程中,我不僅學(xué)到了很多知識,也提高了自己解決問題的能力,尤其是學(xué)會如何從大量的信息中篩選出所需有用的信息,同時我更加深刻的體會到了,雖然書本上的大部分知識都是有價值,正確的,但實(shí)際上每個人編程的思路和對數(shù)據(jù)處理的方法、思想都是不同的,這就要求我們一定要通過實(shí)踐才能找到解決問題的方案。在此次畢業(yè)設(shè)計(jì)活動中,我不斷的提高了自己,也得到了寶貴的經(jīng)驗(yàn),我相信這些對我以后的發(fā)展都會有很大幫助。
通過這次學(xué)習(xí)資源分享系統(tǒng)的開發(fā),我參考了很多相關(guān)系統(tǒng)的例子,取長補(bǔ)短,吸取了其他系統(tǒng)的長處,逐步對該系統(tǒng)進(jìn)行了完善,但是該系統(tǒng)還是有很多的不足之處,有待以后進(jìn)一步學(xué)習(xí)。文章來源:http://www.zghlxwxcb.cn/news/detail-429494.html
實(shí)踐證明,學(xué)習(xí)資源分享系統(tǒng)有著非常好的發(fā)展前景,經(jīng)過測試運(yùn)行,系統(tǒng)各項(xiàng)功能都十分完善,界面漂亮,使用方便,操作容易,在技術(shù)理論上已經(jīng)成熟。文章來源地址http://www.zghlxwxcb.cn/news/detail-429494.html
到了這里,關(guān)于資源分享系統(tǒng)|基于Springboot+vue實(shí)現(xiàn)資源分享系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!