微信小程序源码-基于Java后端的垃圾分类系统毕业设计(附源码+论文)

大家好!我是程序员一帆,感谢您阅读本文,欢迎一键三连哦。

💞当前专栏:微信小程序毕业设计

精彩专栏推荐👇🏻👇🏻👇🏻

🎀 Python毕业设计
🌎Java毕业设计

开发运行环境

①前端:微信小程序开发工具

② 后端:Java

  • 框架:springboot
  • JDK版本:JDK1.8
  • 服务器:tomcat7
  • 数据库:mysql 5.7
  • 数据库工具:Navicat12
  • 开发软件:eclipse/myeclipse/idea
  • Maven包:Maven3.3.9
  • 浏览器:谷歌浏览器

源码下载地址:

https://download.csdn.net/download/2301_76953549/89227591

论文目录

【如需全文请按文末获取联系】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、项目简介

垃圾分类小程序管理员功能有个人中心,管理员管理,意见反馈管理,视频类型管理,垃圾类型管理,新闻类型管理,论坛信息管理,环保视频管理,环保知识管理,垃圾信息管理,环保新闻管理,用户管理,知识问答试卷管理,试题管理,测试管理,轮播图管理。用户可以在微信小程序上面注册登录,查看各种环保信息和垃圾信息,还可以参加知识问答等操作。

二、系统设计

2.1软件功能模块设计

在分析并得出使用者对程序的功能要求时,就可以进行程序设计了。如图4.2展示的就是管理员功能结构图
在这里插入图片描述

2.2数据库设计

(1)管理员实体中的属性有姓名,密码等信息。以此绘制的实体属性图见图4.4。
在这里插入图片描述
(2)用户实体中的属性有账户,密码,姓名等信息。以此绘制的实体属性图见图4.5。
在这里插入图片描述
(3)环保新闻实体中的属性有编号,状态等。以此绘制的实体属性图见图4.6。

三、系统项目部分截图

3.1管理员功能介绍

管理员管理
如图5.1显示的就是管理员管理页面,管理员可以对管理员信息进行添加,修改,删除,查询操作
在这里插入图片描述
环保视频管理
如图5.5显示的就是环保视频页面,管理员可以对环保视频信息进行添加,修改,删除,查询操作。
在这里插入图片描述
环保知识管理
如图5.6显示的就是环保知识管理页面,管理员可以对环保知识信息进行添加,修改,删除,查询操作。
在这里插入图片描述

3.2用户功能介绍

首页
如图5.9显示的就是首页页面,用户注册登录后可以看到首页,下面是导航,中间是内容。
在这里插入图片描述
环保视频
如图5.9显示的就是环保视频页面,用户可以在环保视频界面查看环保视频信息。
在这里插入图片描述
垃圾信息
如图5.9显示的就是垃圾信息页面,用户点击垃圾信息可以查看垃圾信息。
在这里插入图片描述

四、部分核心代码


package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 垃圾信息
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/lajixinxi")
public class LajixinxiController {
    private static final Logger logger = LoggerFactory.getLogger(LajixinxiController.class);

    @Autowired
    private LajixinxiService lajixinxiService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service

    @Autowired
    private YonghuService yonghuService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = lajixinxiService.queryPage(params);

        //字典表数据转换
        List<LajixinxiView> list =(List<LajixinxiView>)page.getList();
        for(LajixinxiView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        LajixinxiEntity lajixinxi = lajixinxiService.selectById(id);
        if(lajixinxi !=null){
            //entity转view
            LajixinxiView view = new LajixinxiView();
            BeanUtils.copyProperties( lajixinxi , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");

        Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>()
            .eq("lajixinxi_name", lajixinxi.getLajixinxiName())
            .eq("lajixinxi_types", lajixinxi.getLajixinxiTypes())
            .eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);
        if(lajixinxiEntity==null){
            lajixinxi.setCreateTime(new Date());
            lajixinxiService.insert(lajixinxi);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
        //根据字段查询是否有相同数据
        Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>()
            .notIn("id",lajixinxi.getId())
            .andNew()
            .eq("lajixinxi_name", lajixinxi.getLajixinxiName())
            .eq("lajixinxi_types", lajixinxi.getLajixinxiTypes())
            .eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);
        if("".equals(lajixinxi.getLajixinxiPhoto()) || "null".equals(lajixinxi.getLajixinxiPhoto())){
                lajixinxi.setLajixinxiPhoto(null);
        }
        if(lajixinxiEntity==null){
            lajixinxiService.updateById(lajixinxi);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        lajixinxiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        try {
            List<LajixinxiEntity> lajixinxiList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            LajixinxiEntity lajixinxiEntity = new LajixinxiEntity();
//                            lajixinxiEntity.setLajixinxiName(data.get(0));                    //垃圾名称 要改的
//                            lajixinxiEntity.setLajixinxiTypes(Integer.valueOf(data.get(0)));   //垃圾类型 要改的
//                            lajixinxiEntity.setLajixinxiPhoto("");//照片
//                            lajixinxiEntity.setLajixinxiClickNumber(Integer.valueOf(data.get(0)));   //浏览次数 要改的
//                            lajixinxiEntity.setLajixinxiContent("");//照片
//                            lajixinxiEntity.setCreateTime(date);//时间
                            lajixinxiList.add(lajixinxiEntity);


                            //把要查询是否重复的字段放入map中
                        }

                        //查询是否重复
                        lajixinxiService.insertBatch(lajixinxiList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }





    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        // 没有指定排序字段就默认id倒序
        if(StringUtil.isEmpty(String.valueOf(params.get("orderBy")))){
            params.put("orderBy","id");
        }
        PageUtils page = lajixinxiService.queryPage(params);

        //字典表数据转换
        List<LajixinxiView> list =(List<LajixinxiView>)page.getList();
        for(LajixinxiView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段
        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        LajixinxiEntity lajixinxi = lajixinxiService.selectById(id);
            if(lajixinxi !=null){


                //entity转view
                LajixinxiView view = new LajixinxiView();
                BeanUtils.copyProperties( lajixinxi , view );//把实体数据重构到view中

                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody LajixinxiEntity lajixinxi, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,lajixinxi:{}",this.getClass().getName(),lajixinxi.toString());
        Wrapper<LajixinxiEntity> queryWrapper = new EntityWrapper<LajixinxiEntity>()
            .eq("lajixinxi_name", lajixinxi.getLajixinxiName())
            .eq("lajixinxi_types", lajixinxi.getLajixinxiTypes())
            .eq("lajixinxi_click_number", lajixinxi.getLajixinxiClickNumber())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        LajixinxiEntity lajixinxiEntity = lajixinxiService.selectOne(queryWrapper);
        if(lajixinxiEntity==null){
            lajixinxi.setCreateTime(new Date());
        lajixinxiService.insert(lajixinxi);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


}

五、获取源码或论文

如需对应的论文或源码,以及其他定制需求,也可以下方微❤联系。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值