一、项目技术栈
Java开发工具:JDK1.8
后端框架:SpringBoot
前端:采用HTML和Vue相结合开发
数据库:MySQL5.7和Navicat管理工具结合
服务器:Tomcat8.5
开发软件:IDEA / Eclipse
是否Maven项目:是
二、功能介绍
三、项目视频
基于SpringBoot的美食分享平台-038
四、功能截图
五、代码实现
账户信息
package com.example.controller;import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.Account;
import com.example.entity.AuthorityInfo;
import com.example.exception.CustomException;
import com.example.entity.AdminInfo;
import com.example.entity.UserInfo;import com.example.service.AdminInfoService;
import com.example.service.UserInfoService;import org.springframework.web.bind.annotation.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import cn.hutool.json.JSONUtil;import java.util.*;
import java.util.stream.Collectors;@RestController
public class AccountController {@Value("${authority.info}")private String authorityStr;@Resourceprivate AdminInfoService adminInfoService;@Resourceprivate UserInfoService userInfoService;@PostMapping("/login")public Result<Account> login(@RequestBody Account account, HttpServletRequest request) {if (StrUtil.isBlank(account.getName()) || StrUtil.isBlank(account.getPassword()) || account.getLevel() == null) {throw new CustomException(ResultCode.PARAM_LOST_ERROR);}Integer level = account.getLevel();Account login = new Account();if (1 == level) {login = adminInfoService.login(account.getName(), account.getPassword());}if (2 == level) {login = userInfoService.login(account.getName(), account.getPassword());}request.getSession().setAttribute("user", login);return Result.success(login);}@PostMapping("/register")public Result<Account> register(@RequestBody Account account) {Integer level = account.getLevel();Account login = new Account();if (1 == level) {AdminInfo info = new AdminInfo();BeanUtils.copyProperties(account, info);login = adminInfoService.add(info);}if (2 == level) {UserInfo info = new UserInfo();BeanUtils.copyProperties(account, info);login = userInfoService.add(info);}return Result.success(login);}@GetMapping("/logout")public Result logout(HttpServletRequest request) {request.getSession().setAttribute("user", null);return Result.success();}@GetMapping("/auth")public Result getAuth(HttpServletRequest request) {Object user = request.getSession().getAttribute("user");if(user == null) {return Result.error("401", "未登录");}return Result.success(user);}@GetMapping("/getAccountInfo")public Result<Object> getAccountInfo(HttpServletRequest request) {Account account = (Account) request.getSession().getAttribute("user");if (account == null) {return Result.success(new Object());}Integer level = account.getLevel();if (1 == level) {return Result.success(adminInfoService.findById(account.getId()));}if (2 == level) {return Result.success(userInfoService.findById(account.getId()));}return Result.success(new Object());}@GetMapping("/getSession")public Result<Map<String, String>> getSession(HttpServletRequest request) {Account account = (Account) request.getSession().getAttribute("user");if (account == null) {return Result.success(new HashMap<>(1));}Map<String, String> map = new HashMap<>(1);map.put("username", account.getName());return Result.success(map);}@GetMapping("/getAuthority")public Result<List<AuthorityInfo>> getAuthorityInfo() {List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);return Result.success(authorityInfoList);}/*** 获取当前用户所能看到的模块信息* @param request* @return*/@GetMapping("/authority")public Result<List<Integer>> getAuthorityInfo(HttpServletRequest request) {Account user = (Account) request.getSession().getAttribute("user");if (user == null) {return Result.success(new ArrayList<>());}JSONArray objects = JSONUtil.parseArray(authorityStr);for (Object object : objects) {JSONObject jsonObject = (JSONObject) object;if (user.getLevel().equals(jsonObject.getInt("level"))) {JSONArray array = JSONUtil.parseArray(jsonObject.getStr("models"));List<Integer> modelIdList = array.stream().map((o -> {JSONObject obj = (JSONObject) o;return obj.getInt("modelId");})).collect(Collectors.toList());return Result.success(modelIdList);}}return Result.success(new ArrayList<>());}@GetMapping("/permission/{modelId}")public Result<List<Integer>> getPermission(@PathVariable Integer modelId, HttpServletRequest request) {List<AuthorityInfo> authorityInfoList = JSONUtil.toList(JSONUtil.parseArray(authorityStr), AuthorityInfo.class);Account user = (Account) request.getSession().getAttribute("user");if (user == null) {return Result.success(new ArrayList<>());}Optional<AuthorityInfo> optional = authorityInfoList.stream().filter(x -> x.getLevel().equals(user.getLevel())).findFirst();if (optional.isPresent()) {Optional<AuthorityInfo.Model> firstOption = optional.get().getModels().stream().filter(x -> x.getModelId().equals(modelId)).findFirst();if (firstOption.isPresent()) {List<Integer> info = firstOption.get().getOperation();return Result.success(info);}}return Result.success(new ArrayList<>());}@PutMapping("/updatePassword")public Result updatePassword(@RequestBody Account info, HttpServletRequest request) {Account account = (Account) request.getSession().getAttribute("user");if (account == null) {return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);}String oldPassword = SecureUtil.md5(info.getPassword());if (!oldPassword.equals(account.getPassword())) {return Result.error(ResultCode.PARAM_PASSWORD_ERROR.code, ResultCode.PARAM_PASSWORD_ERROR.msg);}info.setPassword(SecureUtil.md5(info.getNewPassword()));Integer level = account.getLevel();if (1 == level) {AdminInfo adminInfo = new AdminInfo();BeanUtils.copyProperties(info, adminInfo);adminInfoService.update(adminInfo);}if (2 == level) {UserInfo userInfo = new UserInfo();BeanUtils.copyProperties(info, userInfo);userInfoService.update(userInfo);}info.setLevel(level);info.setName(account.getName());// 清空session,让用户重新登录request.getSession().setAttribute("user", null);return Result.success();}@PostMapping("/resetPassword")public Result resetPassword(@RequestBody Account account) {Integer level = account.getLevel();if (1 == level) {AdminInfo info = adminInfoService.findByUserName(account.getName());if (info == null) {return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);}info.setPassword(SecureUtil.md5("123456"));adminInfoService.update(info);}if (2 == level) {UserInfo info = userInfoService.findByUserName(account.getName());if (info == null) {return Result.error(ResultCode.USER_NOT_EXIST_ERROR.code, ResultCode.USER_NOT_EXIST_ERROR.msg);}info.setPassword(SecureUtil.md5("123456"));userInfoService.update(info);}return Result.success();}
}
留言信息
package com.example.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.MessageInfo;
import com.example.service.*;
import com.example.vo.MessageInfoVo;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@RestController
@RequestMapping(value = "/messageInfo")
public class MessageInfoController {@Resourceprivate MessageInfoService messageInfoService;@PostMappingpublic Result<MessageInfo> add(@RequestBody MessageInfoVo messageInfo) {messageInfoService.add(messageInfo);return Result.success(messageInfo);}@DeleteMapping("/{id}")public Result delete(@PathVariable Long id) {messageInfoService.delete(id);return Result.success();}@PutMappingpublic Result update(@RequestBody MessageInfoVo messageInfo) {messageInfoService.update(messageInfo);return Result.success();}@GetMapping("/{id}")public Result<MessageInfo> detail(@PathVariable Long id) {MessageInfo messageInfo = messageInfoService.findById(id);return Result.success(messageInfo);}@GetMappingpublic Result<List<MessageInfoVo>> all() {return Result.success(messageInfoService.findAll());}@GetMapping("/page/{name}")public Result<PageInfo<MessageInfoVo>> page(@PathVariable String name,@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "5") Integer pageSize,HttpServletRequest request) {return Result.success(messageInfoService.findPage(name, pageNum, pageSize, request));}/*** 批量通过excel添加信息* @param file excel文件* @throws IOException*/@PostMapping("/upload")public Result upload(MultipartFile file) throws IOException {List<MessageInfo> infoList = ExcelUtil.getReader(file.getInputStream()).readAll(MessageInfo.class);if (!CollectionUtil.isEmpty(infoList)) {// 处理一下空数据List<MessageInfo> resultList = infoList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getName())).collect(Collectors.toList());for (MessageInfo info : resultList) {messageInfoService.add(info);}}return Result.success();}@GetMapping("/getExcelModel")public void getExcelModel(HttpServletResponse response) throws IOException {// 1. 生成excelMap<String, Object> row = new LinkedHashMap<>();row.put("name", "小李");row.put("content", "来了");row.put("time", "TIME");List<Map<String, Object>> list = CollUtil.newArrayList(row);// 2. 写excelExcelWriter writer = ExcelUtil.getWriter(true);writer.write(list, true);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");response.setHeader("Content-Disposition","attachment;filename=messageInfoModel.xlsx");ServletOutputStream out = response.getOutputStream();writer.flush(out, true);writer.close();IoUtil.close(System.out);}
}
公告信息
package com.example.controller;import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.example.common.Result;
import com.example.common.ResultCode;
import com.example.entity.NewsInfo;
import com.example.service.*;
import com.example.vo.NewsInfoVo;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;@RestController
@RequestMapping(value = "/newsInfo")
public class NewsInfoController {@Resourceprivate NewsInfoService newsInfoService;@PostMappingpublic Result<NewsInfo> add(@RequestBody NewsInfoVo newsInfo) {newsInfoService.add(newsInfo);return Result.success(newsInfo);}@DeleteMapping("/{id}")public Result delete(@PathVariable Long id) {newsInfoService.delete(id);return Result.success();}@PutMappingpublic Result update(@RequestBody NewsInfoVo newsInfo) {newsInfoService.update(newsInfo);return Result.success();}@GetMapping("/{id}")public Result<NewsInfo> detail(@PathVariable Long id) {NewsInfo newsInfo = newsInfoService.findById(id);return Result.success(newsInfo);}@GetMappingpublic Result<List<NewsInfoVo>> all() {return Result.success(newsInfoService.findAll());}@GetMapping("/page/{name}")public Result<PageInfo<NewsInfoVo>> page(@PathVariable String name,@RequestParam(defaultValue = "1") Integer pageNum,@RequestParam(defaultValue = "5") Integer pageSize,HttpServletRequest request) {return Result.success(newsInfoService.findPage(name, pageNum, pageSize, request));}/*** 批量通过excel添加信息* @param file excel文件* @throws IOException*/@PostMapping("/upload")public Result upload(MultipartFile file) throws IOException {List<NewsInfo> infoList = ExcelUtil.getReader(file.getInputStream()).readAll(NewsInfo.class);if (!CollectionUtil.isEmpty(infoList)) {// 处理一下空数据List<NewsInfo> resultList = infoList.stream().filter(x -> ObjectUtil.isNotEmpty(x.getName())).collect(Collectors.toList());for (NewsInfo info : resultList) {newsInfoService.add(info);}}return Result.success();}@GetMapping("/getExcelModel")public void getExcelModel(HttpServletResponse response) throws IOException {// 1. 生成excelMap<String, Object> row = new LinkedHashMap<>();row.put("name", "");row.put("content", "");List<Map<String, Object>> list = CollUtil.newArrayList(row);// 2. 写excelExcelWriter writer = ExcelUtil.getWriter(true);writer.write(list, true);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");response.setHeader("Content-Disposition","attachment;filename=newsInfoModel.xlsx");ServletOutputStream out = response.getOutputStream();writer.flush(out, true);writer.close();IoUtil.close(System.out);}
}
HadesTYT 上万套源码,每日分享源码,谢谢你的关注和喜欢,需要可以联系主页信息。