基于微信公众号的校园失物招领平台

1.本课题的研究目的和意义

随着学校面积的扩大,并且学生和老师人数的增多,因此携带的东西也会随着增加,同时学生和老师经常往来于不同的教学楼和场所,所以就会发生物品的丢失,而有些同学或老师无意中捡到该物品,但是,由于缺乏一个可以提供失主和拾主信息交流的平台,只能采用传统的失物招领方法,在校园贴出寻物启事和失物启事的方式,这种方法让信息扩散的速度比较慢,而且易给失主造成一定的经济损失。但是随着互联网技术的快速发展,智能手机已经成为学生和老师便捷的生活方式,所以为了能够高效的发布信息,并且缩短找回失物的时间,开发一个高效便捷的微信公众号校园失物招领平台显得尤为重要。

微信公众号校园失物招领平台支持游客通过微信登录,用户可以发布失物信息也可以发布拾物信息并且可以选择自己所在的学校进行发布。还能查看失物启事和拾物启事的详情信息,同时也可以搜索拾物信息。用户还可以浏览成功案例,系统公告,并且在个人中心编写系统留言。所有发布的信息都会保存下来,以便管理查看。

通过本系统的开发,将自己以前所学习到的知识结合实践,不仅是对这几年来对专业知识的总结,同时也是把所学到的知识进行收获和提升,这是对自身综合性的锻炼。

[1]李锦程.基于微信平台的医疗就诊系统设计与实现[D].哈尔滨:哈尔滨工业大学,2015.

[2]莫洪武.基于微信公众号的高校实训基地管理系统分析与设计[J].广西教育,2018(9):186-187.

[3]黄小青.校园失物招领平台的研究—以广东培正学院为例[J].智库时代,2018(34):160-161.

[4]林俊.图书馆微信失物招领系统的构建和实现[J].情报探索,2016(9):58-66.

[5]吴平江.高校失物招领管理系统的研究与分析[J].科技广场,2015(11):32-35.

[6]苟文博,于强.基于MySQL的数据管理系统设计与实现[J].电子设计工程,2017(6):62-65.

[7]查玉华,胡开华,张玉静.基于Web的校园寻物网站设计[J].电脑知识与技术,2016(32):49-56.

[8]王义,张福蒸,王海涛.基于微信企业号的校园移动服务[J].电子技术与软件工程,2016(20):198-200.

[9]方若男,赵竞天,蒋伟.基于Web的高校寻物启事及失物招领平台开发[J].信息技术,2013(26):245-246.

[10]冯生强,姚午,汤建明,等.校园生活助手安卓应用设计与实现[J].电脑编程技巧与维护,2015(8):53-55.

[11]张宇,王映辉,张翔南.基于Spring的MVC框架设计与实现[J].计算机工程,2010,36(4):59-62

 【591】基于微信公众号的校园失物招领平台

package com.example.weixin.controller;

import com.example.weixin.pojo.*;
import com.example.weixin.serviceImpl.*;
import com.example.weixin.util.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

@Controller
public class LoseController {
    public static final int success=1;
    public static final int error=0;
    public static final int notice=2;
    @Autowired
    private LoseServiceImpl loseService;
    @Autowired
    private PicServiceImpl picService;
    @Autowired
    private CommentServiceImpl commentService;
    @Autowired
    private TypeServiceImpl typeService;
    @Autowired
    private SchoolServiceImpl schoolService;
    private String lp_url;
    private int temp;
    //跳到失物招领页面
    @RequestMapping("/lose_publish")
    public String lose_publish(){
        return "lose_publish";
    }
    //得到所有失物招领
    @ResponseBody
    @RequestMapping("/getAllLose")
    public List<LoseAndType> getAllLose(HttpSession session){
        School school=(School)session.getAttribute("schools");
       int school_id=school.getSchool_id();
        List<LoseAndType> lose_list=loseService.getAllLose(school_id);//TODO 登录后带参数查看失物招领信息
        //过滤没有审核的失物招领,不显示到前台
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("1");
        List<LoseAndType> result=null;
        result=lose_list.stream().filter((LoseAndType l)->lose_check_list
        .contains(l.getLose_state())).collect(Collectors.toList());
        return result;
    }
    //跳到失物招领详情和评论页面
    @RequestMapping("/lose_details")
    public String lose_details(HttpServletRequest request,Model model){
        try{
            String lose_id_str=request.getParameter("id");
            System.out.println(lose_id_str);
            if(lose_id_str!=null&&!lose_id_str.equals("")) {
                int lose_id=Integer.parseInt(lose_id_str);
                loseService.userCount(lose_id);
                Lose lose=loseService.getLoseDetail(lose_id);
                List<LosePic> pic_list=picService.getLosePic(lose_id);
                List<LoseComment> comment_list=commentService.getLoseComments(lose_id);//TODO 添加失物招领评论
                System.out.println(comment_list);
                //过滤掉没有被屏蔽的评论 1代表没被过滤
                List<String> comment_state_list=new ArrayList<String>();
                comment_state_list.add("1");
                List<LoseComment> result=null;
                result=comment_list.stream()
                        .filter((LoseComment lc)->comment_state_list
                                .contains(lc.getLc_state())).collect(Collectors.toList());
                int comment_num=result.size();
                int pic_num=pic_list.size();
                model.addAttribute("lose_comment_list",comment_list);
                model.addAttribute("lose",lose);
                model.addAttribute("pic_list",pic_list);
                model.addAttribute("comment_num",comment_num);
                model.addAttribute("pic_num",pic_num);
            }
        }catch (Exception e){
            e.printStackTrace();
            return "404";
        }
        return "lose_details";
    }

    //跳到失物招领详情和无评论页面
    @RequestMapping("/getLoseDetailsNoComment")
    public String getLoseDetailsNoComment(String id,Model model){
        try{
            int lose_id=Integer.parseInt(id);
            Lose lose=loseService.getLoseDetail(lose_id);
            List<LosePic> pic_list=picService.getLosePic(lose_id);
            model.addAttribute("lose",lose);
            model.addAttribute("pic_list",pic_list);
        }catch (Exception e){
            e.printStackTrace();
            return "404";
        }
        return "lose_details_no_comment";
    }

    //通过类别id获取失物招领
    @RequestMapping("/getTypeLose")
    public String getTypeLose(String type_id,Model model,HttpSession session){
        School school=(School)session.getAttribute("schools");
        int school_id=school.getSchool_id();
        int id=Integer.parseInt(type_id);
        if (school_id!=0) {
            List<LoseAndType> loseList = loseService.getTypeLose(id, school_id);
            //过滤没有审核的失物招领,不显示到前台
            List<String> lose_check_list = new ArrayList<String>();
            lose_check_list.add("1");
            List<LoseAndType> result = null;
            result = loseList.stream().filter((LoseAndType l) -> lose_check_list
                    .contains(l.getLose_state())).collect(Collectors.toList());
            int lose_count = result.size();
            model.addAttribute("loseList", result);
            model.addAttribute("lose_count", lose_count);
            return "lose_type";
        }else {
            return "404";
        }
    }
    //发布寻物启事
    @ResponseBody
    @RequestMapping("/add_lose_publish")
    public int  add_lose_publish(@RequestParam("files") MultipartFile[] files, Lose lose, HttpServletRequest request, HttpSession session) throws IOException, ParseException {
         temp=1;
        try{
            String lose_date=request.getParameter("lose_date");
            SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
            SimpleDateFormat sdf_time=new SimpleDateFormat("yyyy年MM月dd日");
            Date date=sdf.parse(lose_date);
            String lose_time=sdf_time.format(date);
            lose.setLose_date(lose_time);
            WxUser wxUser=(WxUser)session.getAttribute("wxUser");
            int id=wxUser.getWxuser_id();
            String headimgurl=(String) session.getAttribute("headimgurl");
            String nickname=(String) session.getAttribute("nickname");
            String type=request.getParameter("type");
            String school=request.getParameter("school");
            int type_id=Integer.parseInt(type);
            int school_id=Integer.parseInt(school);
            lose.setWxuser_id(id);
            lose.setHeadimgurl(headimgurl);
            lose.setNickname(nickname);
            lose.setType_id(type_id);
            lose.setSchool_id(school_id);
            loseService.add_lose_msg(lose);
            int  lose_id=lose.getLose_id();
            for (MultipartFile multipartFile : files) {
                if(multipartFile.isEmpty()){
                    //文件上传失败
                }
                //String filePath = "C:\\Users\\Administrator\\Desktop\\images\\";
                byte[] fileBytes = multipartFile.getBytes();
                String lp_path = "E:\\fileUpload\\";
                //取得当前上传文件的文件名称
                String originalFilename = multipartFile.getOriginalFilename();
                //加个时间戳。避免文件名重复
                originalFilename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + originalFilename;
                //生成文件名
                String lp_name = UUID.randomUUID() +"&"+ originalFilename;
                FileUtils.uploadFile(fileBytes, lp_path, lp_name);
                //存入数据库
                lp_url = "http://dcheiq.natappfree.cc/images/" + lp_name;//服务器运行项目
                picService.addLosePic(lp_name, lp_path, lp_url,lose_id);
            }
        }catch (Exception e){
            e.printStackTrace();
            return temp=0;
        }
        return temp;
    }
    //获取未审核的失物招领信息-进行修改
   @RequestMapping("/ getLoseMsgById")
   public String  getLoseMsgById(String lose_id){
       int id=Integer.parseInt(lose_id);
       System.out.println(id);
       return "ok";
   }
    //获取未审核的寻物启事信息-进行修改
    @RequestMapping("/getLoseMsgById")
    public String toUpdateLose(String lose_id,Model model) throws ParseException {
        int id=Integer.parseInt(lose_id);
        LoseAndTypeAndSchool loseAndTypeAndSchool=loseService.getLoseMsgById(id);
        String lose_date=loseAndTypeAndSchool.getLose_date();
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy年MM月dd日", Locale.ENGLISH);
        Date date=sdf.parse(lose_date);
        SimpleDateFormat sdf_time=new SimpleDateFormat("yyyy-MM-dd");
        String lose_time=sdf_time.format(date);
        loseAndTypeAndSchool.setLose_date(lose_time);
        List<LosePic> pic_list=picService.getLosePic(id);
        model.addAttribute("lose",loseAndTypeAndSchool);
        model.addAttribute("pic_list",pic_list);
        return "lose_edit";
    }
    //删除寻物启事图片-通过图片id删除
    @ResponseBody
    @RequestMapping("/deleteLosePicById")
    public int deletePicById(String lp_id){
        int id=Integer.parseInt(lp_id);
        temp=picService.deleteLosePic(id);
        if (temp!=0){
            return success;
        }
        return success;
    }
    //未审核的寻物启事信息修改
    @ResponseBody
    @RequestMapping("/editLoseMsg")
    public int editLoseMsg(HttpServletRequest request,@RequestParam("files") MultipartFile[] files,Lose lose) throws IOException, ParseException {
        String lose_id_str=request.getParameter("lose_id");
        String lose_date =lose.getLose_date();
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        SimpleDateFormat sdf_time=new SimpleDateFormat("yyyy年MM月dd日");
        Date date=sdf.parse(lose_date);
        String lose_time=sdf_time.format(date);
        lose.setLose_date(lose_time);
        int lose_id=Integer.parseInt(lose_id_str);
        temp=picService.countLosePic(lose_id);
        int file_len=files.length;
        int count=temp+file_len;
        if (count>3){
            return notice;
        }else {
            if (file_len==0){
                temp=loseService.updateLoseNoCheck(lose);
                return success;
            }else {
                temp=loseService.updateLoseNoCheck(lose);
                if (temp!=0){
                    for (MultipartFile multipartFile : files){
                        byte[] fileBytes = multipartFile.getBytes();
                        String lp_path = "E:\\fileUpload\\";
                        //取得当前上传文件的文件名称
                        String originalFilename = multipartFile.getOriginalFilename();
                        //加个时间戳。避免文件名重复
                        originalFilename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + "_" + originalFilename;
                        //生成文件名
                        String lp_name = UUID.randomUUID() +"&"+ originalFilename;
                        FileUtils.uploadFile(fileBytes, lp_path, lp_name);
                        //存入数据库
                        lp_url = "http://dcheiq.natappfree.cc/images/" + lp_name;//服务器运行项目
                        picService.addLosePic(lp_name, lp_path, lp_url,lose_id);
                    }
                    return success;
                }
            }

        }

        return success;
    }
    //用户删除未审核失物招领信息
    @ResponseBody
    @RequestMapping("/deleteLoseMsg")
    public int deleteLoseMsg(String id){
        int lose_id=Integer.parseInt(id);
        temp=loseService.deleteLoseMsg(lose_id);
        if (temp!=0){
            return success;
        }
        return error;
    }
    //跳到失物招领后台管理列表
    @RequestMapping("/lose_list")
    public String getLoseList(Model model){
        List<LoseAndTypeAndSchool> loseList=loseService.getAllAdminLose();
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("1");
//        lose_check_list.add(3);
        List<LoseAndTypeAndSchool> result=null;
        result=loseList.stream()
                .filter((LoseAndTypeAndSchool l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());
        model.addAttribute("lose_Result_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_list";
    }
    //跳到待审核页面
    @RequestMapping("/lose_check_unfinish")
    public String lose_check_unfinish(Model model){
        List<LoseAndTypeAndSchool> loseList=loseService.getAllAdminLose();
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("0");
        List<LoseAndTypeAndSchool> result=null;
        result=loseList.stream()
                .filter((LoseAndTypeAndSchool l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());
        model.addAttribute("lose_unfinish_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_check_unfinish";
    }
    //跳到失物招领信息审核页面
    @RequestMapping("/getLoseUnfinish")
    public String getLoseUnfinish(Model model,String id){
        int lose_id=Integer.parseInt(id);
        Lose lose=loseService.getLoseUnfinish(lose_id);
        List<LosePic> pic_list=picService.getLosePic(lose_id);
        model.addAttribute("picList",pic_list);
        model.addAttribute("lose",lose);
        return "lose_check_edit";
    }
    //审核完毕修改失物招领状态,撤下和发布,共同方法
    @ResponseBody
    @RequestMapping("/toUpdateLoseCheck")
    public int addLoseCheck(HttpServletRequest request){
        String id_str=request.getParameter("id");
        int id=Integer.parseInt(id_str);
        String lose_state=request.getParameter("lose_state");
        temp=loseService.updateLoseState(id,lose_state);

        if (temp!=0){
            return success;
        }
        return error;
    }
    //跳到已审核的失物招领页面
    @RequestMapping("/lose_check_finish")
    public String lose_check_finish(Model model){
        List<LoseAndTypeAndSchool> loseList=loseService.getAllAdminLose();
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("1");
        lose_check_list.add("2");
        lose_check_list.add("3");
        List<LoseAndTypeAndSchool> result=null;
        result=loseList.stream()
                .filter((LoseAndTypeAndSchool l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());
        model.addAttribute("lose_finish_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_check_finish";
    }
    //后台根据条件查询寻物启事信息
    @RequestMapping("/toSearchLose")
    public String toSearchLose(HttpServletRequest request,Model model){
        String type_id_str=request.getParameter("type_id");
        int type_id=Integer.parseInt(type_id_str);
        String school_id_str=request.getParameter("school_id");
        int school_id=Integer.parseInt(school_id_str);
        String input=request.getParameter("input");
        List<Lose> loseList=loseService.getSearchLose(type_id,school_id,input);
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("1");
        lose_check_list.add("3");
        List<Lose> result=null;
        result=loseList.stream()
                .filter((Lose l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());
        model.addAttribute("Lose_Result_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_list";
    }
    //后台根据条件查询寻物启事审核完成信息
    @RequestMapping("/toSearchLoseFinish")
    public String toSearchLoseFinish(HttpServletRequest request,Model model){
        String type_id_str=request.getParameter("type_id");
        int type_id=Integer.parseInt(type_id_str);
        String school_id_str=request.getParameter("school_id");
        int school_id=Integer.parseInt(school_id_str);
        String input=request.getParameter("input");
        List<Lose> loseList=loseService.getSearchLose(type_id,school_id,input);
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("1");
        lose_check_list.add("3");
        List<Lose> result=null;
        result=loseList.stream()
                .filter((Lose l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());;
        model.addAttribute("lose_finish_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_check_finish";
    }
    //后台根据条件查询寻物启事待审核信息
    @RequestMapping("/toSearchLoseUnfinish")
    public String toSearchLoseUnfinish(HttpServletRequest request,Model model){
        String type_id_str=request.getParameter("type_id");
        int type_id=Integer.parseInt(type_id_str);
        String school_id_str=request.getParameter("school_id");
        int school_id=Integer.parseInt(school_id_str);
        String input=request.getParameter("input");
        List<Lose> loseList=loseService.getSearchLose(type_id,school_id,input);
        List<Type> Type_list=typeService.getAllType();
        List<School> School_list=schoolService.getAllSchool();
        List<String> lose_check_list=new ArrayList<String>();
        lose_check_list.add("0");
        List<Lose> result=null;
        result=loseList.stream()
                .filter((Lose l)->lose_check_list
                        .contains(l.getLose_state())).collect(Collectors.toList());
        model.addAttribute("lose_unfinish_List",result);
        model.addAttribute("Type_list",Type_list);
        model.addAttribute("School_list",School_list);
        return "lose_check_unfinish";
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_46437112/article/details/135275622