计算机SSM选题 - SpringBoot的电子招标投标管理系统 朴灿烈づ我的快乐病毒、 2024-03-02 10:53 42阅读 0赞 > 开发语言:Java > Java开发工具:JDK1.8 > 后端框架:SpringBoot > 前端:HTML、Vue > 数据库:MySQL5.7 > > 数据库管理工具:Navicat 12 > 服务器:Tomcat8.5 > 开发软件:IDEA / Eclipse > 是否Maven项目:是 -------------------- **目录** 一、项目简介 二、系统功能 三、系统项目截图 3.1前台首页 3.2后台管理 四、核心代码 4.1登录相关 4.2文件上传 4.3封装 -------------------- ## 一、项目简介 ## 基于SpringBoot的电子招标投标管理系统利用网络沟通、计算机信息存储管理,有着与传统的方式所无法替代的优点。比如计算检索速度特别快、可靠性特别高、存储容量特别大、保密性特别好、可保存时间特别长、成本特别低等。在工作效率上,能够得到极大地提高,延伸至服务水平也会有好的收获,有了网络,基于SpringBoot的电子招标投标管理系统的各方面的管理更加科学和系统,更加规范和简便。 -------------------- ## 二、系统功能 ## 基于SpringBoot的电子招标投标管理系统主要包括三大功能模块,即管理员、责任单位和供应商。 (1)管理员模块:责任单位管理、供应商管理、招标分类管理、招标项目管理、在线投标管理、结果公示管理、中标公示管理、市场监督管理、帮助中心管理、新闻资讯管理、管理员管理、系统管理。 (2)责任单位:首页、个人中心、招标项目管理、在线投标管理、结果公示管理、中标公告管理。 (3)供应商:在线投标管理、中标公告管理等。 -------------------- ## ## 三、系统项目截图 #### 3.1前台首页 #### 前台有招标项目、结果公示、中标公告、市场监督、帮助中心、新闻资讯、业界资讯、个人中心、后台管理等相关功能模块。 ![87ef21300cdc4092ae565b535e243127.png][] 招标项目中用户可以查看目前正在招标的项目 ![69d34e593bf64e9e935302d039ea25b6.png][] 个人中心可以查看自己的个人信息,没有账号的可以在前台的注册页面进行注册 ![534531aab2534d059b091b43a01b4889.png][] 责任单位可以在后台发布招标项目。 ![85b67fd802d04609a56a38be400c3d78.png][] 发布招标项目完成以后可以对项目进行公示或者发布公告通知等操作。 ![753f4e91a47549f0899c619e85f61aef.png][] #### 3.2后台管理 #### 管理员后台有责任单位管理、供应商管理、招标分类管理、招标项目管理、在线投标管理、结果公示管理、中标公示管理、市场监督管理、帮助中心管理、新闻资讯管理、管理员管理、系统管理。 ![8f516cf7533d4d78860125605fb9d048.png][] 管理员可以查看并且管理所以的招标项目。![075f1ffb5be248e1b6f235af082fcac3.png][] -------------------- ## 四、核心代码 ## #### 4.1登录相关 #### package com.controller; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; 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.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.annotation.IgnoreAuth; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.entity.TokenEntity; import com.entity.UserEntity; import com.service.TokenService; import com.service.UserService; import com.utils.CommonUtil; import com.utils.MD5Util; import com.utils.MPUtil; import com.utils.PageUtils; import com.utils.R; import com.utils.ValidatorUtils; /** * 登录相关 */ @RequestMapping("users") @RestController public class UserController{ @Autowired private UserService userService; @Autowired private TokenService tokenService; /** * 登录 */ @IgnoreAuth @PostMapping(value = "/login") public R login(String username, String password, String captcha, HttpServletRequest request) { UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username)); if(user==null || !user.getPassword().equals(password)) { return R.error("账号或密码不正确"); } String token = tokenService.generateToken(user.getId(),username, "users", user.getRole()); return R.ok().put("token", token); } /** * 注册 */ @IgnoreAuth @PostMapping(value = "/register") public R register(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user); if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) { return R.error("用户已存在"); } userService.insert(user); return R.ok(); } /** * 退出 */ @GetMapping(value = "logout") public R logout(HttpServletRequest request) { request.getSession().invalidate(); return R.ok("退出成功"); } /** * 密码重置 */ @IgnoreAuth @RequestMapping(value = "/resetPass") public R resetPass(String username, HttpServletRequest request){ UserEntity user = userService.selectOne(new EntityWrapper().eq("username", username)); if(user==null) { return R.error("账号不存在"); } user.setPassword("123456"); userService.update(user,null); return R.ok("密码已重置为:123456"); } /** * 列表 */ @RequestMapping("/page") public R page(@RequestParam Map params,UserEntity user){ EntityWrapper ew = new EntityWrapper(); PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params)); return R.ok().put("data", page); } /** * 列表 */ @RequestMapping("/list") public R list( UserEntity user){ EntityWrapper ew = new EntityWrapper(); ew.allEq(MPUtil.allEQMapPre( user, "user")); return R.ok().put("data", userService.selectListView(ew)); } /** * 信息 */ @RequestMapping("/info/{id}") public R info(@PathVariable("id") String id){ UserEntity user = userService.selectById(id); return R.ok().put("data", user); } /** * 获取用户的session用户信息 */ @RequestMapping("/session") public R getCurrUser(HttpServletRequest request){ Long id = (Long)request.getSession().getAttribute("userId"); UserEntity user = userService.selectById(id); return R.ok().put("data", user); } /** * 保存 */ @PostMapping("/save") public R save(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user); if(userService.selectOne(new EntityWrapper().eq("username", user.getUsername())) !=null) { return R.error("用户已存在"); } userService.insert(user); return R.ok(); } /** * 修改 */ @RequestMapping("/update") public R update(@RequestBody UserEntity user){ // ValidatorUtils.validateEntity(user); userService.updateById(user);//全部更新 return R.ok(); } /** * 删除 */ @RequestMapping("/delete") public R delete(@RequestBody Long[] ids){ userService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); } } #### 4.2文件上传 #### 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") 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); FileUtils.copyFile(dest, new File("C:\\Users\\Desktop\\jiadian\\springbootl7own\\src\\main\\resources\\static\\upload"+"/"+fileName)); if(StringUtils.isNotBlank(type) && type.equals("1")) { ConfigEntity configEntity = configService.selectOne(new EntityWrapper().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 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(FileUtils.readFileToByteArray(file),headers, HttpStatus.CREATED); } } catch (IOException e) { e.printStackTrace(); } return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); } } #### 4.3封装 #### package com.utils; import java.util.HashMap; import java.util.Map; /** * 返回数据 */ public class R extends HashMap { private static final long serialVersionUID = 1L; public R() { put("code", 0); } public static R error() { return error(500, "未知异常,请联系管理员"); } public static R error(String msg) { return error(500, msg); } public static R error(int code, String msg) { R r = new R(); r.put("code", code); r.put("msg", msg); return r; } public static R ok(String msg) { R r = new R(); r.put("msg", msg); return r; } public static R ok(Map map) { R r = new R(); r.putAll(map); return r; } public static R ok() { return new R(); } public R put(String key, Object value) { super.put(key, value); return this; } } ## 项目获取: ## [https://gitee.com/sinonfin/L-javaWebSha/tree/master][https_gitee.com_sinonfin_L-javaWebSha_tree_master] [87ef21300cdc4092ae565b535e243127.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/41448bf4c3934ca3a50f8a13af44b4bc.png [69d34e593bf64e9e935302d039ea25b6.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/de802fdc335644deb21b03720f0c82f6.png [534531aab2534d059b091b43a01b4889.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/dd67cf9375ea44cbb23af5c23e59f6ad.png [85b67fd802d04609a56a38be400c3d78.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/f9c5bcb2b30d4159b97c3708651c0fdc.png [753f4e91a47549f0899c619e85f61aef.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/e7702af2e0e14751918cfea6d1403dcd.png [8f516cf7533d4d78860125605fb9d048.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/52700d33a8ab485f8e637e9712a38c98.png [075f1ffb5be248e1b6f235af082fcac3.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/02/3db014545c394017946c3901427978dd.png [https_gitee.com_sinonfin_L-javaWebSha_tree_master]: https://gitee.com/sinonfin/L-javaWebSha/tree/master
还没有评论,来说两句吧...