基于SSM的爱心(慈善)捐献平台

简介: 本系统采用SSM框架,数据层采用mybatis,数据库使用mysql,适合选题:爱心、慈善、捐献、捐赠等。

项目介绍:



本系统采用SSM框架,数据层采用mybatis,数据库使用mysql,适合选题:爱心、慈善、捐献、捐赠等。


项目功能:



1. 用户信息管理:管理员可对该系统的用户信息进行管理与维护。


2. 公益新闻管理:管理员进入系统对公益新闻信息进行管理与维护。


3. 求助信息管理:管理员通过系统在线管理系统的求助信息。并对求助信息进行在线审核。


4. 捐款记录管理:管理员通过系统在线管理系统用户的捐款信息。管理员及时对捐款信息做出反馈。


5. 活动管理:管理员通过系统在线管理活动信息。管理员可在线发布活动。


6. 个人信息管理:用户可对个人信息进行修改与维护,对个人基本资料进行更新,对账号密码信息进行更改。


7报名管理:管理员通过系统在线管理系统的报名信息。并对报名信息进行在线审核。


de0af0ce43bb4006ab2b02b532877ce9.png


系统包含技术:



后端:SSM整合

前端:bootstrap、js、css等

开发工具:eclipse

数据库:mysql 5.7

JDK版本:jdk1.8

服务器:tomcat8


部分截图说明:



下面是用户首页


1c8e27c8f75541f6be8eff7eb3105eb2.png


可以查看已发布的公益新闻


4a7560c41fb7412b85fafb3e083a2c64.png


活动列表,查看已发布的活动


7132f2488a6c47f2834fa6b331114f03.png


活动详情


30370e5e7a04419c89c4641238292169.png


用户可以进行登陆


2823b6e5f3e142f1a659b9ef8734c294.png


后台登录


f821ffe093ca4ab5b92a442d683fbf9a.png


登录后是管理员,可以对用户维护


e177ccead8e245cd949ffc9d876aecd8.png


对活动的报名进行维护


0acdd2ff8ed641e7afc9e8654b19dc8d.png


对捐款记录进行维护


7bca8002c3334153bf1ecb2b1ba78f31.png


对评价进行管理


2451bdc7622445d39a6ee27393f2bb93.png


求助管理


ab8c78a746eb4c26a2e26dfb6c2f4b2f.png


评价信息,管理员进行管理


965cb2aa62594f529ffb512c2b9d9649.png


部分代码:



@RequestMapping("list")
  public String list(Integer page, Integer limit,String content,Model model,
      HttpSession session) {
    PageBean pageBean=new PageBean();
    if(page==null){
      page=1;
    }
    QueryWrapper<Question> wrapper = new QueryWrapper<Question>();
    if (!StringUtils.isEmpty(content)) {
      wrapper.like("content", content);
      model.addAttribute("content", content);
    }
    Integer role=(Integer)session.getAttribute("role");
    if(role!=null && role==1){
      Users users=(Users)session.getAttribute("users");
      wrapper.eq("uid", users.getId());
    }
    wrapper.eq("isdel", 0);
    wrapper.orderByDesc("id");
    IPage<Question> pageList = new Page<Question>(pageBean.getPageNo(), pageBean.getPageSize());
    pageList = questionService.page(pageList, wrapper);
    List<Question> list = pageList.getRecords();
    // 关联对象
    for (Question m : list) {
      Users u = usersService.getById(m.getUid());
      m.setUsers(u);
    }
    // 会自动查出总条数
    int count = (int) pageList.getTotal();
    pageBean.setTotalCount(count);
    model.addAttribute("pageBean", pageBean);
    model.addAttribute("list", list);
    return "admin/question";
  }
  @RequestMapping("index")
  public String index(Integer page,String name,Integer id,Model model,HttpServletRequest request) {
    PageBean pageBean=new PageBean();
    if(page!=null){
      pageBean.setPageNo(page);
    }
    pageBean.setPageSize(4);
    QueryWrapper<Question> wrapper = new QueryWrapper<Question>();
    wrapper.eq("isdel", 0);
    wrapper.orderByDesc("id");
    IPage<Question> pageList = new Page<Question>(pageBean.getPageNo(),pageBean.getPageSize());
    pageList = questionService.page(pageList, wrapper);
    List<Question> list = pageList.getRecords();
    // 关联对象
    for (Question m : list) {
      Users u = usersService.getById(m.getUid());
      m.setUsers(u);
      //回复
      QueryWrapper<Reply> qwrapper=new QueryWrapper<Reply>();
      qwrapper.eq("pid", m.getId());
      qwrapper.eq("type", 2);
      List<Reply> replys=replyService.list(qwrapper);
      for (Reply r : replys) {
        Users ru = usersService.getById(r.getUid());
        r.setUsers(ru);
      }
      m.setReplys(replys);
    }
    // 会自动查出总条数
    int count = (int) pageList.getTotal();
    pageBean.setTotalCount(count);
    model.addAttribute("pageBean", pageBean);
    model.addAttribute("list", list);
    if(id==null){
      id=0;
    }
    model.addAttribute("id", id);
    return "questionList";
  }
  @RequestMapping("detail")
  public String detail(Integer id, Model model, HttpServletRequest request) {
    Question m = questionService.getById(id);
    Users u = usersService.getById(m.getUid());
    m.setUsers(u);
    QueryWrapper<Reply> rwrapper = new QueryWrapper<Reply>();
    rwrapper.eq("pid", m.getId());
    List<Reply> replys = replyService.list(rwrapper);
    for (Reply r : replys) {
      Users ru = usersService.getById(r.getUid());
      r.setUsers(ru);
    }
    m.setReplys(replys);
    model.addAttribute("question", m);
    return "questionDetail";
  }
  @RequestMapping("admindetail")
  public String admindetail(Integer id, Model model, HttpServletRequest request) {
    Question m = questionService.getById(id);
    Users u = usersService.getById(m.getUid());
    m.setUsers(u);
    QueryWrapper<Reply> rwrapper = new QueryWrapper<Reply>();
    rwrapper.eq("pid", m.getId());
    List<Reply> replys = replyService.list(rwrapper);
    for (Reply r : replys) {
      Users ru = usersService.getById(r.getUid());
      r.setUsers(ru);
    }
    m.setReplys(replys);
    model.addAttribute("question", m);
    return "admin/questionDetail";
  }
  @RequestMapping("add")
  @ResponseBody
  public ServerResponse<Question> add(Question question) {
      question.setIsdel(0);
      question.setOptime(Const.getFullTime());
      boolean flag=questionService.save(question);
      if(flag){
        return new ServerResponse<Question>("0", "操作成功!");
      }else{
        return new ServerResponse<Question>("1", "操作失败!");
      }
  }
  @RequestMapping("update")
  @ResponseBody
  public ServerResponse<Question> update(Question question) {
    boolean flag = questionService.updateById(question);
    if (flag) {
      return new ServerResponse<Question>("0", "操作成功!");
    } else {
      return new ServerResponse<Question>("1", "操作失败!");
    }
  }
  @RequestMapping("delete")
  @ResponseBody
  public ServerResponse<Question> delete(Question question) {
    question.setIsdel(1);
    boolean flag = questionService.updateById(question);
    if (flag) {
      return new ServerResponse<Question>("0", "删除成功!");
    } else {
      return new ServerResponse<Question>("1", "删除失败!");
    }
  }


下面是上传图片的核心代码:

@RequestMapping(value="/upload",  produces = "text/html; charset=utf-8")
    @ResponseBody
    public String upload(MultipartFile file, HttpServletRequest request,HttpServletResponse response) throws IOException { 
    //传到服务器
        //得到真实路径
        String path=request.getSession().getServletContext().getRealPath("/images");
        //目标文件
        //目标文件
    String fileName=path+"\\"+file.getOriginalFilename();
        fileName=URLDecoder.decode(fileName, "UTF-8");
        file.transferTo(new File(fileName));
        System.out.print("名字:"+file.getOriginalFilename());
        return file.getOriginalFilename();
    }
   @RequestMapping("/upfile")
      @ResponseBody
      public JSONObject upfile(MultipartFile file, HttpServletRequest request,HttpServletResponse response) throws IOException { 
          //传到服务器
          //得到真实路径
     String path=request.getSession().getServletContext().getRealPath("/images");
          //目标文件
          String fileName=path+"\\"+file.getOriginalFilename();
          fileName=URLDecoder.decode(fileName, "UTF-8");
          file.transferTo(new File(fileName));
          JSONObject result=new JSONObject();
      result.put("errno", 0);
      JSONArray data=new JSONArray();
      data.add(Const.ROOT+"images/"+file.getOriginalFilename());
      result.put("data", data);
      result.put("filename",file.getOriginalFilename());
          return result;
      }
      @RequestMapping(value="/download")
      public ResponseEntity<byte[]> download(HttpServletRequest request,
                                             @RequestParam("filename") String filename,
                                             Model model)throws Exception {
          //下载文件路径
          //String path = request.getSession().getServletContext().getRealPath("/images/");
        String path=request.getSession().getServletContext().getRealPath("/images");
          //找到服务器里面的中文文件,Tomcat8就不需要
        //filename = new String(filename.getBytes("iso-8859-1"),"UTF-8");
        String truepath=URLDecoder.decode(path + File.separator + filename, "UTF-8");
          File file = new File(truepath);
          HttpHeaders headers = new HttpHeaders();
          //通知浏览器以attachment(下载方式)打开图片,所有浏览器都会使用本地编码,即中文操作系统使用GBK
          //下载框中显示的文件名,解决中文名称乱码问题 
          headers.setContentDispositionFormData("attachment", new String(filename.getBytes("GBK"),"iso-8859-1"));
          //application/octet-stream : 二进制流数据(最常见的文件下载)。
          headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
          return new ResponseEntity<byte[]>(FileUtils.readFileToByteArray(file),
                  headers, HttpStatus.CREATED);
      }


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


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

相关文章
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的高校网上订餐平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的高校网上订餐平台附带文章和源代码部署视频讲解等
52 16
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的跑腿平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的跑腿平台附带文章和源代码部署视频讲解等
66 10
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的洛川县苹果销售管理平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的洛川县苹果销售管理平台附带文章和源代码部署视频讲解等
33 5
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的求职招聘平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的求职招聘平台附带文章和源代码部署视频讲解等
46 3
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的编程语言在线学习平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的编程语言在线学习平台附带文章和源代码部署视频讲解等
37 4
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的电影播放平台附带文章和源代码部署视频讲解等
29 0
|
5月前
|
Java 测试技术 数据库连接
基于SSM框架实现的快递配送平台
基于SSM框架实现的快递配送平台
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的二手手机交易平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的二手手机交易平台附带文章和源代码部署视频讲解等
49 7
|
5月前
|
JavaScript Java 测试技术
基于ssm+vue.js+uniapp小程序的小区家政服务预约平台附带文章和源代码部署视频讲解等
基于ssm+vue.js+uniapp小程序的小区家政服务预约平台附带文章和源代码部署视频讲解等
50 7
|
5月前
|
前端开发 Java 关系型数据库
杨校老师项目之基于SSM社区疫情防控人员访客登记报备平台
杨校老师项目之基于SSM社区疫情防控人员访客登记报备平台
33 0