• 基于springboot的校园跑腿系统


    博主主页猫头鹰源码

    博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万+、专注Java技术领域和毕业设计项目实战

    主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询

    文末联系获取

    项目介绍: 

    该系统创作于2022年5月,包含详细数据库设计。基于springboot技术,数据层为MyBatis,mysql数据库,页面使用html,具有完整的业务逻辑,适合选题:校园跑腿、跑腿、校园帮等。

    项目功能:

    数据库表结构文档: 

    系统包含技术:

    后端:springboot、mybatis
    前端:layui,js,css等,html页面
    开发工具:idea
    数据库:mysql 5.7
    JDK版本:jdk1.8

    部分截图说明:

    下面是用户首页,可以看到部分任务和商品

     登录页面如下:

    分页展示商品,可以筛选

    点击某一个,可以看到商品详情,可以加入购物车

    所有任务

    任务详情查看 

      

    商品订单

    管理员-首页

     管理员-商家认证

     管理员-骑手认证

     管理员-用户管理

    商家-添加商品

     商家-商品管理

    部分代码:

     拦截器

    1. @Override
    2. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    3. HttpSession session = request.getSession();
    4. if(session.getAttribute("userInfo") != null){
    5. return true;
    6. }
    7. // 不符合条件的给出提示信息,并转发到主页面
    8. request.setAttribute("msg", "您还没有登录,请先登录!");
    9. request.getRequestDispatcher("/logout").forward(request, response);
    10. //返回true通过,返回false拦截
    11. return false;
    12. }

    文件上传

    1. /**
    2. * 文件上传
    3. * @param dropFile
    4. * @param request
    5. * @return
    6. */
    7. @ResponseBody
    8. @RequestMapping(value = "/avatar", method = RequestMethod.POST)
    9. public Map<String, Object> acticleAvatar(MultipartFile dropFile, HttpServletRequest request) throws IOException {
    10. Map<String, Object> result = new HashMap<>();
    11. //获取文件后缀
    12. String fileName = dropFile.getOriginalFilename();
    13. String fileSuffix = fileName.substring(fileName.lastIndexOf('.'));
    14. //文件存放路径
    15. String fileDirPath = new String(uploadDir);
    16. File fileDir = new File(fileDirPath);
    17. //判断文件是否存在
    18. if (!fileDir.exists()){
    19. fileDir.mkdirs();
    20. }
    21. File file = new File(fileDir.getAbsolutePath()+ File.separator+ UUID.randomUUID() + fileSuffix);
    22. try {
    23. dropFile.transferTo(file);
    24. } catch (IOException e) {
    25. e.printStackTrace();
    26. }
    27. //传到前端
    28. result.put("fileName", "http://localhost:"+port+"/upload/"+file.getName());
    29. return result;
    30. }

    首页相关操作

    1. //首页
    2. @GetMapping("/")
    3. public String userIframe(Model model){
    4. Map mp = new HashMap<>();
    5. mp.put("limit","1");
    6. mp.put("status","01");
    7. List<CustomOrder> customOrderList = customOrderService.queryFilter(mp);
    8. model.addAttribute("customOrderList",customOrderList);
    9. List<Goods> goods = goodsService.queryFilter(mp);
    10. model.addAttribute("goods",goods);
    11. return "show";
    12. }
    13. //自定义订单
    14. @GetMapping("/corder")
    15. public String corder(Model model, String searchName, Integer pageNum, Integer pageSize){
    16. Map mp = new HashMap<>();
    17. mp.put("name",searchName);
    18. mp.put("status","01");
    19. if(pageNum==null){
    20. pageNum =1;
    21. }
    22. if(pageSize==null){
    23. pageSize =10;
    24. }
    25. PageHelper.startPage(pageNum,pageSize);
    26. List<CustomOrder> customOrders = customOrderService.queryFilter(mp);
    27. PageInfo<CustomOrder> customOrderList = new PageInfo<>(customOrders);
    28. model.addAttribute("customOrderList",customOrderList);
    29. return "CustomOrder";
    30. }
    31. //商品订单
    32. @GetMapping("/sorder")
    33. public String sorder(Model model, String searchName, Integer pageNum, Integer pageSize){
    34. Map mp = new HashMap<>();
    35. mp.put("no",searchName);
    36. mp.put("status","01");
    37. if(pageNum==null){
    38. pageNum =1;
    39. }
    40. if(pageSize==null){
    41. pageSize =10;
    42. }
    43. PageHelper.startPage(pageNum,pageSize);
    44. List<Orders> orderss = ordersService.queryFilter(mp);
    45. PageInfo<Orders> ordersList = new PageInfo<>(orderss);
    46. model.addAttribute("ordersList",ordersList);
    47. return "goodsOrder";
    48. }
    49. //商品
    50. @GetMapping("/good")
    51. public String good(Model model, String storeName, String name, Integer pageNum, Integer pageSize){
    52. Map mp = new HashMap<>();
    53. mp.put("storeName",storeName);
    54. mp.put("name",name);
    55. mp.put("status","01");
    56. if(pageNum==null){
    57. pageNum =1;
    58. }
    59. if(pageSize==null){
    60. pageSize =8;
    61. }
    62. PageHelper.startPage(pageNum,pageSize);
    63. List<Goods> goodsList = goodsService.queryFilter(mp);
    64. PageInfo<Goods> goods = new PageInfo<>(goodsList);
    65. model.addAttribute("goods",goods);
    66. return "good";
    67. }
    68. //商品详情
    69. @GetMapping("/goodDetail")
    70. public String goodDetail(String id, Model model){
    71. Goods good = goodsService.selectById(id);
    72. model.addAttribute("id",id);
    73. model.addAttribute("good",good);
    74. return "goodDetail";
    75. }

    商品操作

    1. /**列表数据*/
    2. @GetMapping("/list")
    3. @ResponseBody
    4. public PageResultVo findGoods(Goods goods, Integer limit, Integer page, HttpSession session){
    5. String type = (String)session.getAttribute("type");
    6. if(type.equals("03")){
    7. User user = (User)session.getAttribute("userInfo");
    8. goods.setUid(String.valueOf(user.getId()));
    9. }
    10. PageHelper.startPage(page,limit);
    11. List<Goods> goodsList = goodsService.selectByCondition(goods);
    12. PageInfo<Goods> pages = new PageInfo<>(goodsList);
    13. return JsonData.table(goodsList,pages.getTotal());
    14. }
    15. /**编辑详情*/
    16. @GetMapping("/edit")
    17. @ResponseBody
    18. public Goods edit(Model model, String id){
    19. return goodsService.selectById(id);
    20. }
    21. /**编辑*/
    22. @PostMapping("/edit")
    23. @ResponseBody
    24. public JsonData edit(Goods goods){
    25. int a = goodsService.updateById(goods);
    26. if (a > 0) {
    27. return JsonData.success(null,"编辑成功!");
    28. } else {
    29. return JsonData.fail("编辑失败");
    30. }
    31. }
    32. /**删除*/
    33. @PostMapping("/del")
    34. @ResponseBody
    35. public JsonData del(String id){
    36. try{
    37. goodsService.deleteById(Integer.parseInt(id));
    38. }catch(Exception ex){
    39. JsonData.fail("出现错误");
    40. }
    41. return JsonData.success(null,"删除成功");
    42. }

    以上就是部分功能展示,从整体上来看,本系统功能是十分完整的,界面设计简洁大方,交互友好,数据库设计也很合理,规模适中,代码工整,清晰,适合学习使用。

    好了,今天就到这儿吧,小伙伴们点赞、收藏、评论,一键三连走起呀,下期见~~

  • 相关阅读:
    Netty入门知识点
    go语言的函数、方法、接口
    Vue中使用keep-alive导致mounted和beforeDestroy钩子函数失效
    【测试开发】用例篇 · 熟悉黑盒测试用例设计方法(1)等价类划分法、边界值法、判定表法
    云桌面 node_modules 切换艰辛历程记录 rebuild失败记录
    ChatGPT可以取代搜索引擎吗?
    react中路由版本问题
    【JavaWeb】之Http协议
    搭建个人网站大体流程
    vue 获取上一周和获取下一周的日期时间
  • 原文地址:https://blog.csdn.net/mtyedu/article/details/126652028