计算机毕业设计 it职业生涯规划系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

news2024/11/19 2:41:00

🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
Java毕业设计项目~热门选题推荐《1000套》

目录

1.技术选型

2.数据库表结构

3.开发工具

4.功能

4.1【角色】

4.2【前台功能模块】

4.3【后台功能模块】

5.项目演示截图

5.1 首页

5.2 课程信息

​5.3 在线答题

5.4 答题内容

5.5 个人中心

5.6 登录

5.7 课程学习管理

5.8 答卷管理

5.9 试题管理

5.10 论坛管理

6.数据库文件设计

7.核心代码 

7.1 职业介绍Controller

7.2 职业介绍Service

7.3 职业介绍ServiceImpl

8.参考文档

1.技术选型

springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8

2.数据库表结构

16张 

3.开发工具

idea、navicat、vscode

4.功能

4.1【角色】

管理员、用户

4.2【前台功能模块】

  • 登录注册
  • 首页
  • 在线答疑
  • 论坛
  • 公告信息
  • 课程学习
  • 职业介绍
  • 个人中心
  • 后台管理

4.3【后台功能模块】

  • 登录
  • 首页
  • 个人中心
  • 管理员管理
  • 用户管理
  • 课程学习管理
  • 职业介绍管理
  • 答卷管理
  • 试题管理
  • 答题管理
  • 基础数据管理
  • 论坛管理
  • 公告信息管理
  • 轮播图信息管理

5.项目演示截图

5.1 首页

5.2 课程信息

 5.3 在线答题

5.4 答题内容

5.5 个人中心

5.6 登录

5.7 课程学习管理

5.8 答卷管理

5.9 试题管理

5.10 论坛管理

6.数据库文件设计


CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) DEFAULT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';


CREATE TABLE `dictionary` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
  `dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
  `code_index` int(11) DEFAULT NULL COMMENT '编码',
  `index_name` varchar(200) DEFAULT NULL COMMENT '编码名字  Search111 ',
  `super_id` int(11) DEFAULT NULL COMMENT '父字段id',
  `beizhu` varchar(200) DEFAULT NULL COMMENT '备注',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=26 DEFAULT CHARSET=utf8 COMMENT='字典';


CREATE TABLE `exampaper` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `exampaper_name` varchar(200) NOT NULL COMMENT '试卷名称 Search111',
  `exampaper_date` int(11) DEFAULT NULL COMMENT '考试时长(分钟)',
  `exampaper_myscore` int(20) NOT NULL DEFAULT '0' COMMENT '试卷总分数',
  `kemu_types` int(11) DEFAULT NULL COMMENT '科目 Search111',
  `exampaper_types` int(11) NOT NULL DEFAULT '0' COMMENT '试卷状态 Search111',
  `zujuan_types` int(11) DEFAULT NULL COMMENT '组卷方式',
  `exampaper_delete` int(255) DEFAULT '0' COMMENT '逻辑删除(1代表未删除 2代表已删除)',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='试卷表';



CREATE TABLE `exampapertopic` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `exampaper_id` int(20) NOT NULL COMMENT '试卷',
  `examquestion_id` int(20) NOT NULL COMMENT '试题',
  `exampapertopic_number` int(20) NOT NULL COMMENT '试题分数',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COMMENT='试卷选题';



CREATE TABLE `examquestion` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `examquestion_name` varchar(200) NOT NULL COMMENT '试题名称 Search111',
  `kemu_types` int(11) DEFAULT NULL COMMENT '科目 Search111',
  `examquestion_options` longtext COMMENT '选项,json字符串',
  `examquestion_answer` varchar(200) DEFAULT NULL COMMENT '正确答案',
  `examquestion_analysis` longtext COMMENT '答案解析',
  `examquestion_types` int(20) DEFAULT '0' COMMENT '试题类型',
  `examquestion_sequence` int(20) DEFAULT '100' COMMENT '试题排序,值越大排越前面',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8 COMMENT='试题表';



CREATE TABLE `examrecord` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `examrecord_uuid_number` varchar(200) DEFAULT NULL COMMENT '考试编号',
  `yonghu_id` int(20) NOT NULL COMMENT '考试学生',
  `exampaper_id` int(20) NOT NULL COMMENT '所属试卷id(外键)',
  `total_score` int(200) DEFAULT NULL COMMENT '所得总分',
  `insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '考试时间',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='考试记录表';


CREATE TABLE `examredetails` (
  `id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `examredetails_uuid_number` varchar(200) DEFAULT NULL COMMENT '试卷编号',
  `yonghu_id` int(20) NOT NULL COMMENT '学生id',
  `examquestion_id` int(20) NOT NULL COMMENT '试题id(外键)',
  `examredetails_myanswer` varchar(200) DEFAULT NULL COMMENT '考生答案',
  `examredetails_myscore` int(20) NOT NULL DEFAULT '0' COMMENT '试题得分',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8 COMMENT='答题详情表';


CREATE TABLE `forum` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `forum_name` varchar(200) DEFAULT NULL COMMENT '帖子标题  Search111 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `users_id` int(11) DEFAULT NULL COMMENT '管理员',
  `forum_content` text COMMENT '发布内容',
  `super_ids` int(11) DEFAULT NULL COMMENT '父id',
  `forum_state_types` int(11) DEFAULT NULL COMMENT '帖子状态',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '发帖时间',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '修改时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show2',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 COMMENT='论坛';


CREATE TABLE `news` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `news_name` varchar(200) DEFAULT NULL COMMENT '公告标题  Search111 ',
  `news_types` int(11) DEFAULT NULL COMMENT '公告类型  Search111 ',
  `news_photo` varchar(200) DEFAULT NULL COMMENT '公告图片',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',
  `news_content` text COMMENT '公告详情',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 nameShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='公告信息';


CREATE TABLE `token` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint(20) NOT NULL COMMENT '用户id',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';



CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(100) NOT NULL COMMENT '用户名',
  `password` varchar(100) NOT NULL COMMENT '密码',
  `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='管理员';


CREATE TABLE `xuexishipin` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `xuexishipin_name` varchar(200) DEFAULT NULL COMMENT '课程名称  Search111 ',
  `xuexishipin_photo` varchar(200) DEFAULT NULL COMMENT '课程封面',
  `xuexishipin_video` varchar(255) DEFAULT NULL COMMENT '学习视频',
  `xuexishipin_types` int(11) DEFAULT NULL COMMENT '课程类型 Search111',
  `zhiyejieshao_types` int(11) DEFAULT NULL COMMENT '职业 Search111',
  `xuexishipin_content` text COMMENT '课程详情 ',
  `xuexishipin_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='课程学习';



CREATE TABLE `xuexishipin_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `xuexishipin_id` int(11) DEFAULT NULL COMMENT '课程',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `xuexishipin_collection_types` int(11) DEFAULT NULL COMMENT '类型',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='课程收藏';


CREATE TABLE `yonghu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名 Search111 ',
  `yonghu_photo` varchar(255) DEFAULT NULL COMMENT '头像',
  `yonghu_phone` varchar(200) DEFAULT NULL COMMENT '用户手机号',
  `yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号 ',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111 ',
  `yonghu_email` varchar(200) DEFAULT NULL COMMENT '邮箱',
  `yonghu_delete` int(11) DEFAULT '1' COMMENT '假删',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';


CREATE TABLE `zhiyejieshao` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `zhiyejieshao_name` varchar(200) DEFAULT NULL COMMENT '职业名称  Search111 ',
  `zhiyejieshao_photo` varchar(200) DEFAULT NULL COMMENT '职业封面',
  `zhiyejieshao_types` int(11) DEFAULT NULL COMMENT '职业 Search111',
  `zhiyejieshao_content` text COMMENT '职业详情 ',
  `zhiyejieshao_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='职业介绍';



CREATE TABLE `zhiyejieshao_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `zhiyejieshao_id` int(11) DEFAULT NULL COMMENT '职业介绍',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhiyejieshao_collection_types` int(11) DEFAULT NULL COMMENT '类型',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='职业介绍收藏';

7.核心代码 

7.1 职业介绍Controller


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("/zhiyejieshao")
public class ZhiyejieshaoController {
    private static final Logger logger = LoggerFactory.getLogger(ZhiyejieshaoController.class);

    private static final String TABLE_NAME = "zhiyejieshao";

    @Autowired
    private ZhiyejieshaoService zhiyejieshaoService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private ExampaperService exampaperService;//试卷表
    @Autowired
    private ExampapertopicService exampapertopicService;//试卷选题
    @Autowired
    private ExamquestionService examquestionService;//试题表
    @Autowired
    private ExamrecordService examrecordService;//答题记录表
    @Autowired
    private ExamredetailsService examredetailsService;//答题详情表
    @Autowired
    private ForumService forumService;//论坛
    @Autowired
    private NewsService newsService;//公告信息
    @Autowired
    private XuexishipinService xuexishipinService;//课程学习
    @Autowired
    private XuexishipinCollectionService xuexishipinCollectionService;//课程收藏
    @Autowired
    private YonghuService yonghuService;//用户
    @Autowired
    private ZhiyejieshaoCollectionService zhiyejieshaoCollectionService;//职业介绍收藏
    @Autowired
    private UsersService usersService;//管理员


    /**
    * 后端列表
    */
    @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"));
        params.put("zhiyejieshaoDeleteStart",1);params.put("zhiyejieshaoDeleteEnd",1);
        CommonUtil.checkMap(params);
        PageUtils page = zhiyejieshaoService.queryPage(params);

        //字典表数据转换
        List<ZhiyejieshaoView> list =(List<ZhiyejieshaoView>)page.getList();
        for(ZhiyejieshaoView 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);
        ZhiyejieshaoEntity zhiyejieshao = zhiyejieshaoService.selectById(id);
        if(zhiyejieshao !=null){
            //entity转view
            ZhiyejieshaoView view = new ZhiyejieshaoView();
            BeanUtils.copyProperties( zhiyejieshao , view );//把实体数据重构到view中
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

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

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

        Wrapper<ZhiyejieshaoEntity> queryWrapper = new EntityWrapper<ZhiyejieshaoEntity>()
            .eq("zhiyejieshao_name", zhiyejieshao.getZhiyejieshaoName())
            .eq("zhiyejieshao_types", zhiyejieshao.getZhiyejieshaoTypes())
            .eq("zhiyejieshao_delete", zhiyejieshao.getZhiyejieshaoDelete())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhiyejieshaoEntity zhiyejieshaoEntity = zhiyejieshaoService.selectOne(queryWrapper);
        if(zhiyejieshaoEntity==null){
            zhiyejieshao.setZhiyejieshaoDelete(1);
            zhiyejieshao.setInsertTime(new Date());
            zhiyejieshao.setCreateTime(new Date());
            zhiyejieshaoService.insert(zhiyejieshao);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody ZhiyejieshaoEntity zhiyejieshao, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,zhiyejieshao:{}",this.getClass().getName(),zhiyejieshao.toString());
        ZhiyejieshaoEntity oldZhiyejieshaoEntity = zhiyejieshaoService.selectById(zhiyejieshao.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if("".equals(zhiyejieshao.getZhiyejieshaoPhoto()) || "null".equals(zhiyejieshao.getZhiyejieshaoPhoto())){
                zhiyejieshao.setZhiyejieshaoPhoto(null);
        }

            zhiyejieshaoService.updateById(zhiyejieshao);//根据id更新
            return R.ok();
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<ZhiyejieshaoEntity> oldZhiyejieshaoList =zhiyejieshaoService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        ArrayList<ZhiyejieshaoEntity> list = new ArrayList<>();
        for(Integer id:ids){
            ZhiyejieshaoEntity zhiyejieshaoEntity = new ZhiyejieshaoEntity();
            zhiyejieshaoEntity.setId(id);
            zhiyejieshaoEntity.setZhiyejieshaoDelete(2);
            list.add(zhiyejieshaoEntity);
        }
        if(list != null && list.size() >0){
            zhiyejieshaoService.updateBatchById(list);
        }

        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<ZhiyejieshaoEntity> zhiyejieshaoList = 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){
                            //循环
                            ZhiyejieshaoEntity zhiyejieshaoEntity = new ZhiyejieshaoEntity();

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

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



    /**
    * 个性推荐
    */
    @IgnoreAuth
    @RequestMapping("/gexingtuijian")
    public R gexingtuijian(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("gexingtuijian方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        CommonUtil.checkMap(params);
        List<ZhiyejieshaoView> returnZhiyejieshaoViewList = new ArrayList<>();

        //查看收藏
        Map<String, Object> params1 = new HashMap<>(params);params1.put("sort","id");params1.put("yonghuId",request.getSession().getAttribute("userId"));
        PageUtils pageUtils = zhiyejieshaoCollectionService.queryPage(params1);
        List<ZhiyejieshaoCollectionView> collectionViewsList =(List<ZhiyejieshaoCollectionView>)pageUtils.getList();
        Map<Integer,Integer> typeMap=new HashMap<>();//购买的类型list
        for(ZhiyejieshaoCollectionView collectionView:collectionViewsList){
            Integer zhiyejieshaoTypes = collectionView.getZhiyejieshaoTypes();
            if(typeMap.containsKey(zhiyejieshaoTypes)){
                typeMap.put(zhiyejieshaoTypes,typeMap.get(zhiyejieshaoTypes)+1);
            }else{
                typeMap.put(zhiyejieshaoTypes,1);
            }
        }
        List<Integer> typeList = new ArrayList<>();//排序后的有序的类型 按最多到最少
        typeMap.entrySet().stream().sorted((o1, o2) -> o2.getValue() - o1.getValue()).forEach(e -> typeList.add(e.getKey()));//排序
        Integer limit = Integer.valueOf(String.valueOf(params.get("limit")));
        for(Integer type:typeList){
            Map<String, Object> params2 = new HashMap<>(params);params2.put("zhiyejieshaoTypes",type);
            PageUtils pageUtils1 = zhiyejieshaoService.queryPage(params2);
            List<ZhiyejieshaoView> zhiyejieshaoViewList =(List<ZhiyejieshaoView>)pageUtils1.getList();
            returnZhiyejieshaoViewList.addAll(zhiyejieshaoViewList);
            if(returnZhiyejieshaoViewList.size()>= limit) break;//返回的推荐数量大于要的数量 跳出循环
        }
        //正常查询出来商品,用于补全推荐缺少的数据
        PageUtils page = zhiyejieshaoService.queryPage(params);
        if(returnZhiyejieshaoViewList.size()<limit){//返回数量还是小于要求数量
            int toAddNum = limit - returnZhiyejieshaoViewList.size();//要添加的数量
            List<ZhiyejieshaoView> zhiyejieshaoViewList =(List<ZhiyejieshaoView>)page.getList();
            for(ZhiyejieshaoView zhiyejieshaoView:zhiyejieshaoViewList){
                Boolean addFlag = true;
                for(ZhiyejieshaoView returnZhiyejieshaoView:returnZhiyejieshaoViewList){
                    if(returnZhiyejieshaoView.getId().intValue() ==zhiyejieshaoView.getId().intValue()) addFlag=false;//返回的数据中已存在此商品
                }
                if(addFlag){
                    toAddNum=toAddNum-1;
                    returnZhiyejieshaoViewList.add(zhiyejieshaoView);
                    if(toAddNum==0) break;//够数量了
                }
            }
        }else {
            returnZhiyejieshaoViewList = returnZhiyejieshaoViewList.subList(0, limit);
        }

        for(ZhiyejieshaoView c:returnZhiyejieshaoViewList)
            dictionaryService.dictionaryConvert(c, request);
        page.setList(returnZhiyejieshaoViewList);
        return R.ok().put("data", page);
    }

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

        CommonUtil.checkMap(params);
        PageUtils page = zhiyejieshaoService.queryPage(params);

        //字典表数据转换
        List<ZhiyejieshaoView> list =(List<ZhiyejieshaoView>)page.getList();
        for(ZhiyejieshaoView 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);
        ZhiyejieshaoEntity zhiyejieshao = zhiyejieshaoService.selectById(id);
            if(zhiyejieshao !=null){


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

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


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody ZhiyejieshaoEntity zhiyejieshao, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,zhiyejieshao:{}",this.getClass().getName(),zhiyejieshao.toString());
        Wrapper<ZhiyejieshaoEntity> queryWrapper = new EntityWrapper<ZhiyejieshaoEntity>()
            .eq("zhiyejieshao_name", zhiyejieshao.getZhiyejieshaoName())
            .eq("zhiyejieshao_types", zhiyejieshao.getZhiyejieshaoTypes())
            .eq("zhiyejieshao_delete", zhiyejieshao.getZhiyejieshaoDelete())
//            .notIn("zhiyejieshao_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        ZhiyejieshaoEntity zhiyejieshaoEntity = zhiyejieshaoService.selectOne(queryWrapper);
        if(zhiyejieshaoEntity==null){
            zhiyejieshao.setZhiyejieshaoDelete(1);
            zhiyejieshao.setInsertTime(new Date());
            zhiyejieshao.setCreateTime(new Date());
        zhiyejieshaoService.insert(zhiyejieshao);

            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

}

7.2 职业介绍Service

package com.service;

import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.ZhiyejieshaoEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;

/**
 * 职业介绍 服务类
 */
public interface ZhiyejieshaoService extends IService<ZhiyejieshaoEntity> {

    /**
    * @param params 查询参数
    * @return 带分页的查询出来的数据
    */
     PageUtils queryPage(Map<String, Object> params);

}

 7.3 职业介绍ServiceImpl

package com.service.impl;

import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.ZhiyejieshaoDao;
import com.entity.ZhiyejieshaoEntity;
import com.service.ZhiyejieshaoService;
import com.entity.view.ZhiyejieshaoView;

/**
 * 职业介绍 服务实现类
 */
@Service("zhiyejieshaoService")
@Transactional
public class ZhiyejieshaoServiceImpl extends ServiceImpl<ZhiyejieshaoDao, ZhiyejieshaoEntity> implements ZhiyejieshaoService {

    @Override
    public PageUtils queryPage(Map<String,Object> params) {
        Page<ZhiyejieshaoView> page =new Query<ZhiyejieshaoView>(params).getPage();
        page.setRecords(baseMapper.selectListView(page,params));
        return new PageUtils(page);
    }


}

8.参考文档

你可能还有感兴趣的项目👇🏻👇🏻👇🏻

更多项目推荐:计算机毕业设计项目

如果大家有任何疑虑,请在下方咨询或评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL三大日志undolog、redolog、binlog

在MySQL中&#xff0c;很多的功能也都需要基于日志实现&#xff0c;比如事务回滚、数据持久化、数据恢复、数据迁移、MVCC机制。其中undolog、redolog都是InnoDB引擎中的日志&#xff0c;而且都是在Buffer Pool中&#xff0c;而binlog在Server层中&#xff0c;位于每条线程中。…

如何在小程序首页设置标题栏文字

小程序的首页标题栏是用户进入小程序时首先看到的部分&#xff0c;因此设置一个适合文字对于树立品牌非常有作用。以下是一些简单的步骤&#xff0c;教你如何在小程序的首页设置标题栏文字&#xff08;如下图&#xff0c;白色的“商城”文字&#xff09;。 1. 在小程序管理员后…

电大搜题——学习的好机会

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 近年来&#xff0c;随着广播电视大学教育的普及&#xff0c;重庆开放大学以其卓越的教学品质和领先的教育理念&#xff0c;在继续教育领域崭露头角。作为这一教育品牌下的杰出成果&#xff0c;电大搜题微信…

旧苹果手机数据如何导入新手机里面?

旧iphone数据怎么导入新iphone&#xff1f;一般需要先备份旧iphone&#xff0c;然后再将备份恢复到新iphone。如果满足一定条件&#xff0c;也可以通过设备传输的方式。旧iphone数据导入新iphone要多久&#xff1f;这取决于导入的数据量以及使用的工具。本文会给大家详细讲解一…

【JavaEE初阶】 synchronized关键字详解

文章目录 &#x1f334;synchronized 的特性&#x1f6a9;互斥&#x1f6a9;可重入 &#x1f340;synchronized 的使用&#x1f6a9;直接修饰普通方法&#x1f6a9;修饰静态方法&#x1f6a9; 修饰代码块&#x1f9ed;synchronized 的使用总结&#xff1a; &#x1f38d;Java 标…

TCP/IP(十一)TCP的连接管理(八)socket网络编程

一 socket网络编程 socket 基本操作函数 bind、listen、connect、accept、recv、send、select、close 说明: 本文需要C语言、syscall系统调用、OS 操作系统支持,如果不了解可以暂时跳过备注&#xff1a; 知道对应库函数的更底层机制思考&#xff1a; socket函数与FIN、ACK等…

Malformed \uxxxx encoding.问题解决方案

问题背景 Maven项目构建时报错如下&#xff0c; [ERROR] Malformed \uxxxx encoding. [ERROR] java.lang.IllegalArgumentException: Malformed \uxxxx encoding. [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re…

测试岗最好用的——十大软件测试工具

前言 目前由于软件测试工作在软件的生产过程中越来越重要&#xff0c;很多软件测试工具应运而生&#xff0c;这里介绍一下目前最流行的一些软件测试工具&#xff0c;一个十个&#xff0c;介绍如下&#xff1a; 一、企业级自动化测试工具WinRunner 这款软件是Mercury Interact…

[NPUCTF2020]ezinclude 文件包含两大 getshell方式

PHP LFI 利用临时文件 Getshell 姿势 | 码农家园 说一下我的思路吧 robots没有 扫描发现存在 dir.php 然后404.html 报错 apache 2.18 ubuntu 这个又正好存在漏洞 所以前面全去看这个了 结果根本不是这样做。。。 正确的思路是这样 发现变量 认为是 name和 pass传递参数…

Python 机器学习入门之牛顿法

系列文章目录 第一章 Python 机器学习入门之线性回归 第一章 Python 机器学习入门之梯度下降法 第一章 Python 机器学习入门之牛顿法 梯度下降法 系列文章目录前言一、牛顿法1.牛顿法简介2.基本原理 总结 前言 上一篇文章里面说到了梯度下降法&#xff0c;它是使用泰勒近似定…

第18篇ESP32platformio-arduino框架-ili9488-3.5lcd显示时间天气

第18篇ESP32platformio-arduino框架-ili9488-lcd显示时间天气 第18篇esp32ili9488lcd显示时间天气 连接方法&#xff1a; 修改WIFI&#xff1a; 关键代码 void setup() {Serial.begin(115200);WiFi.mode(WIFI_STA);WiFi.begin(ssid,password);Serial.print("\r\nConnect…

codesys【软PLC】

软plc一般安装在工控机里。或者笔记本等小型电脑内。 电视盒子需要&#xff1a;刷个armbain 软件下载地址&#xff1a; CODESYS商城-商品列表 A&#xff1a;是实时系统 B&#xff1a;非实时 C&#xff1a;这个不能单独运行&#xff0c;需要在B的基础上。开启了多核线程…

国际教材概念基础

各种区别 缩写 A-LEVEL&#xff08;大学预科&#xff09;&#xff1a;General Certificate of Education Advanced Level AP&#xff1a;Advanced Placement&#xff08;美国地区&#xff1a;美高AP&#xff09; GCSE&#xff1a;General Certificate of Secondary Educati…

下载调试器 JTAG和SWD

下载调试器 JTAG和SWD 作为嵌入式工程师&#xff0c;下载调试器 JTAG和SWD是经常使用的&#xff0c;但你真正了解其SWD 和 JTAG接口的含义和区别吗&#xff1f; 一、什么是下载调试器&#xff1f; 下载调试器是将PC&#xff08;例如通过USB协议&#xff09;发送的命令转换为…

数组的reduce和reduceRight方法

1.reduce方法可用接收两个参数&#xff1a; 第一个参数&#xff1a;为一个回调函数&#xff0c;此回调函数又可以有四个参数 第1个参数&#xff1a;为上一次回调函数return的结果&#xff0c;首次默认为第二个参数值&#xff0c;如果没有第二个参数值&#xff0c;则默认当前数…

[Mono Depth/3DOD]单目3D检测基础

1.数据增强 图像放缩和裁剪后&#xff0c;相机内参要做相应变化 import random def random_scale(image, calib, scale_range(0.8, 1.2)):scale random.uniform(*scale_range)width, height image.sizeimage image.resize((int(width * scale), int(height * scale)))cali…

4.03 用户中心-订单管理功能开发

用户中心-订单管理功能开发: (1&#xff09;包含用户订单的查询根据订单并进行分页 (2&#xff09;订单的确定和交易关闭订单删除 详细内容&#xff0c;查询地址&#xff1a;http://www.gxcode.top/code 页面下载地址&#xff1a;

【C++】神奇字符串(力扣481)

神奇字符串的规律&#xff1a; 神奇字符串 s 仅由 ‘1’ 和 ‘2’ 组成&#xff0c;并需要遵守下面的规则&#xff1a; 神奇字符串 s 的神奇之处在于&#xff0c;串联字符串中 1 和 2 的连续出现次数可以生成该字符串。 s 的前几个元素是 s “1221121221221121122……” 。如果…

项目管理过程组

项目管理有2条主线&#xff0c;一条是技术&#xff0c;一条是管理。项目过程由项目团队实施。一般术语以下两大类之一&#xff1a;一类是项目管理过程。另一类是面向产品的过程。在大多数情况下&#xff0c;大多数项目都有共同的项目管理过程。它们通过有目的的实施而互相联系起…

界面组件DevExtreme v23.2新功能预览 - 增强Material主题功能

界面组件DevExtreme v23.2即将在几个月之后交付&#xff0c;本文将带大家预览一波新功能。 DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuer…