计算机毕业设计 基于SpringBoot笔记记录分享网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥
🍊简介:专业从事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 商品兑换管理
6.数据库文件设计
7.核心代码
7.1 笔记Controller
7.2 笔记Service
7.3 笔记ServicesImpl
7.4 笔记DAO
8.参考文档
1.技术选型
springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8
2.数据库表结构
18张
3.开发工具
idea、navicat
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 商品兑换管理

6.数据库文件设计
CREATE TABLE `address` (`id` int(20) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yonghu_id` int(20) NOT NULL COMMENT '创建用户',`address_name` varchar(200) NOT NULL COMMENT '收货人 ',`address_phone` varchar(200) NOT NULL COMMENT '电话 ',`address_dizhi` varchar(200) NOT NULL COMMENT '地址 ',`isdefault_types` int(11) NOT NULL COMMENT '是否默认地址 ',`insert_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间 show3',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='收货地址';CREATE TABLE `biji` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`biji_name` varchar(200) DEFAULT NULL COMMENT '笔记名称 Search111 ',`biji_uuid_number` varchar(200) DEFAULT NULL COMMENT '笔记编号',`biji_photo` varchar(200) DEFAULT NULL COMMENT '笔记照片',`zan_number` int(11) DEFAULT NULL COMMENT '赞',`cai_number` int(11) DEFAULT NULL COMMENT '踩',`biji_types` int(11) DEFAULT NULL COMMENT '笔记类型 Search111',`biji_content` longtext 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=17 DEFAULT CHARSET=utf8 COMMENT='笔记广场';CREATE TABLE `biji_collection` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`biji_id` int(11) DEFAULT NULL COMMENT '笔记',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`biji_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=21 DEFAULT CHARSET=utf8 COMMENT='笔记收藏';CREATE TABLE `biji_liuyan` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`biji_id` int(11) DEFAULT NULL COMMENT '笔记',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`biji_liuyan_text` longtext COMMENT '留言内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',`reply_text` longtext COMMENT '回复内容',`update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='笔记留言';CREATE TABLE `cart` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`yonghu_id` int(11) DEFAULT NULL COMMENT '所属用户',`shangpin_id` int(11) DEFAULT NULL COMMENT '商品',`buy_number` int(11) DEFAULT NULL COMMENT '购买数量',`create_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',`update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',`insert_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='购物车';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` int(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=58 DEFAULT CHARSET=utf8 COMMENT='字典表';CREATE TABLE `gonggao` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`gonggao_name` varchar(200) DEFAULT NULL COMMENT '公告名称 Search111 ',`gonggao_photo` varchar(200) DEFAULT NULL COMMENT '公告图片 ',`gonggao_types` int(11) NOT NULL COMMENT '公告类型 Search111 ',`insert_time` timestamp NULL DEFAULT NULL COMMENT '发布时间',`gonggao_content` longtext 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 `guanzhu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`guanzhu_uuid_number` varchar(200) DEFAULT NULL COMMENT '关注编号',`guanzhu_kucun_number` int(11) DEFAULT NULL COMMENT '关注人',`insert_time` timestamp NULL DEFAULT NULL COMMENT '关注时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8 COMMENT='我的关注';CREATE TABLE `richangrenwu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`richangrenwu_uuid_number` varchar(200) DEFAULT NULL COMMENT '日常任务编号',`richangrenwu_name` varchar(200) DEFAULT NULL COMMENT '日常任务标题 Search111 ',`richangrenwu_types` int(11) DEFAULT NULL COMMENT '日常任务类型 Search111',`richangrenwu_jifen` decimal(10,2) DEFAULT NULL COMMENT '任务积分',`richangrenwu_content` longtext COMMENT '任务内容',`richangrenwu_wancheng_content` longtext COMMENT '完成标准',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='日常任务';CREATE TABLE `richangrenwu_lingqu` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`richangrenwu_id` int(11) DEFAULT NULL COMMENT '日常任务',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`richangrenwu_lingqu_uuid_number` varchar(200) DEFAULT NULL COMMENT '领取任务编号',`richangrenwu_lingqu_time` date DEFAULT NULL COMMENT '所属日期',`insert_time` timestamp NULL DEFAULT NULL COMMENT '领取时间',`richangrenwu_lingqu_types` int(11) DEFAULT NULL COMMENT '任务状态 Search111',`richangrenwu_lingqu_yesno_types` int(11) DEFAULT NULL COMMENT '审核状态 Search111',`richangrenwu_lingqu_yesno_text` longtext COMMENT '审核回复',`richangrenwu_lingqu_shenhe_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COMMENT='领取任务';CREATE TABLE `shangpin` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`shangpin_name` varchar(200) DEFAULT NULL COMMENT '商品名称 Search111 ',`shangpin_uuid_number` varchar(200) DEFAULT NULL COMMENT '商品编号',`shangpin_photo` varchar(200) DEFAULT NULL COMMENT '商品照片',`zan_number` int(11) DEFAULT NULL COMMENT '赞',`cai_number` int(11) DEFAULT NULL COMMENT '踩',`shangpin_types` int(11) DEFAULT NULL COMMENT '商品类型 Search111',`shangpin_kucun_number` int(11) DEFAULT NULL COMMENT '商品库存',`shangpin_new_money` decimal(10,2) DEFAULT NULL COMMENT '所需积分',`shangpin_cangku` varchar(200) DEFAULT NULL COMMENT '所属仓库 Search111',`shangpin_clicknum` int(11) DEFAULT NULL COMMENT '商品热度',`shangpin_content` longtext COMMENT '商品介绍 ',`shangxia_types` int(11) DEFAULT NULL COMMENT '是否上架 ',`shangpin_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 `shangpin_collection` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`shangpin_id` int(11) DEFAULT NULL COMMENT '商品',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`shangpin_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 `shangpin_commentback` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`shangpin_id` int(11) DEFAULT NULL COMMENT '商品',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`shangpin_commentback_text` longtext COMMENT '评价内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '评价时间',`reply_text` longtext COMMENT '回复内容',`update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='商品评价';CREATE TABLE `shangpin_order` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`shangpin_order_uuid_number` varchar(200) DEFAULT NULL COMMENT '订单编号 Search111 ',`address_id` int(11) DEFAULT NULL COMMENT '收货地址 ',`shangpin_id` int(11) DEFAULT NULL COMMENT '商品',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`buy_number` int(11) DEFAULT NULL COMMENT '兑换数量',`shangpin_order_true_price` decimal(10,2) DEFAULT NULL COMMENT '花费积分',`shangpin_order_courier_name` varchar(200) DEFAULT NULL COMMENT '快递公司',`shangpin_order_courier_number` varchar(200) DEFAULT NULL COMMENT '快递单号',`shangpin_order_types` int(11) DEFAULT NULL COMMENT '订单类型 Search111 ',`shangpin_order_payment_types` int(11) DEFAULT NULL COMMENT '支付类型',`insert_time` timestamp NULL DEFAULT NULL COMMENT '订单创建时间',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 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=4 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 `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_phone` varchar(200) DEFAULT NULL COMMENT '用户手机号',`yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号',`yonghu_photo` varchar(200) DEFAULT NULL COMMENT '用户头像',`sex_types` int(11) DEFAULT NULL COMMENT '性别',`yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',`new_money` decimal(10,2) DEFAULT NULL COMMENT '积分',`yonghu_content` longtext COMMENT '用户介绍',`jinyong_types` int(11) DEFAULT NULL COMMENT '账户状态 Search111 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户';
7.核心代码
7.1 笔记Controller
package com.controller;/*** 笔记广场* 后端接口* @author 计算机编程-吉哥* @email
*/
@RestController
@Controller
@RequestMapping("/biji")
public class BijiController {private static final Logger logger = LoggerFactory.getLogger(BijiController.class);private static final String TABLE_NAME = "biji";@Autowiredprivate BijiService bijiService;@Autowiredprivate TokenService tokenService;@Autowiredprivate AddressService addressService;//收货地址@Autowiredprivate BijiCollectionService bijiCollectionService;//笔记收藏@Autowiredprivate BijiLiuyanService bijiLiuyanService;//笔记留言@Autowiredprivate CartService cartService;//购物车@Autowiredprivate DictionaryService dictionaryService;//字典表@Autowiredprivate GonggaoService gonggaoService;//公告信息@Autowiredprivate GuanzhuService guanzhuService;//我的关注@Autowiredprivate RichangrenwuService richangrenwuService;//日常任务@Autowiredprivate RichangrenwuLingquService richangrenwuLingquService;//领取任务@Autowiredprivate ShangpinService shangpinService;//商品@Autowiredprivate ShangpinCollectionService shangpinCollectionService;//商品收藏@Autowiredprivate ShangpinCommentbackService shangpinCommentbackService;//商品评价@Autowiredprivate ShangpinOrderService shangpinOrderService;//商品兑换@Autowiredprivate YonghuService yonghuService;//用户@Autowiredprivate 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"));CommonUtil.checkMap(params);PageUtils page = bijiService.queryPage(params);//字典表数据转换List<BijiView> list =(List<BijiView>)page.getList();for(BijiView 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);BijiEntity biji = bijiService.selectById(id);if(biji !=null){//entity转viewBijiView view = new BijiView();BeanUtils.copyProperties( biji , view );//把实体数据重构到view中//级联表 用户//级联表YonghuEntity yonghu = yonghuService.selectById(biji.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody BijiEntity biji, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,biji:{}",this.getClass().getName(),biji.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))biji.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<BijiEntity> queryWrapper = new EntityWrapper<BijiEntity>().eq("yonghu_id", biji.getYonghuId()).eq("biji_name", biji.getBijiName()).eq("zan_number", biji.getZanNumber()).eq("cai_number", biji.getCaiNumber()).eq("biji_types", biji.getBijiTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());BijiEntity bijiEntity = bijiService.selectOne(queryWrapper);if(bijiEntity==null){biji.setZanNumber(1);biji.setCaiNumber(1);biji.setInsertTime(new Date());biji.setCreateTime(new Date());bijiService.insert(biji);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody BijiEntity biji, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,biji:{}",this.getClass().getName(),biji.toString());BijiEntity oldBijiEntity = bijiService.selectById(biji.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
biji.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));if("".equals(biji.getBijiPhoto()) || "null".equals(biji.getBijiPhoto())){biji.setBijiPhoto(null);}if("".equals(biji.getBijiContent()) || "null".equals(biji.getBijiContent())){biji.setBijiContent(null);}bijiService.updateById(biji);//根据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<BijiEntity> oldBijiList =bijiService.selectBatchIds(Arrays.asList(ids));//要删除的数据bijiService.deleteBatchIds(Arrays.asList(ids));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");//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))try {List<BijiEntity> bijiList = 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){//循环BijiEntity bijiEntity = new BijiEntity();bijiList.add(bijiEntity);//把要查询是否重复的字段放入map中//笔记编号if(seachFields.containsKey("bijiUuidNumber")){List<String> bijiUuidNumber = seachFields.get("bijiUuidNumber");bijiUuidNumber.add(data.get(0));//要改的}else{List<String> bijiUuidNumber = new ArrayList<>();bijiUuidNumber.add(data.get(0));//要改的seachFields.put("bijiUuidNumber",bijiUuidNumber);}}//查询是否重复//笔记编号List<BijiEntity> bijiEntities_bijiUuidNumber = bijiService.selectList(new EntityWrapper<BijiEntity>().in("biji_uuid_number", seachFields.get("bijiUuidNumber")));if(bijiEntities_bijiUuidNumber.size() >0 ){ArrayList<String> repeatFields = new ArrayList<>();for(BijiEntity s:bijiEntities_bijiUuidNumber){repeatFields.add(s.getBijiUuidNumber());}return R.error(511,"数据库的该表中的 [笔记编号] 字段已经存在 存在数据为:"+repeatFields.toString());}bijiService.insertBatch(bijiList);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<BijiView> returnBijiViewList = new ArrayList<>();//查看收藏Map<String, Object> params1 = new HashMap<>(params);params1.put("sort","id");params1.put("yonghuId",request.getSession().getAttribute("userId"));params1.put("shangxiaTypes",1);params1.put("bijiYesnoTypes",2);PageUtils pageUtils = bijiCollectionService.queryPage(params1);List<BijiCollectionView> collectionViewsList =(List<BijiCollectionView>)pageUtils.getList();Map<Integer,Integer> typeMap=new HashMap<>();//购买的类型listfor(BijiCollectionView collectionView:collectionViewsList){Integer bijiTypes = collectionView.getBijiTypes();if(typeMap.containsKey(bijiTypes)){typeMap.put(bijiTypes,typeMap.get(bijiTypes)+1);}else{typeMap.put(bijiTypes,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("bijiTypes",type);params2.put("shangxiaTypes",1);params2.put("bijiYesnoTypes",2);PageUtils pageUtils1 = bijiService.queryPage(params2);List<BijiView> bijiViewList =(List<BijiView>)pageUtils1.getList();returnBijiViewList.addAll(bijiViewList);if(returnBijiViewList.size()>= limit) break;//返回的推荐数量大于要的数量 跳出循环}params.put("shangxiaTypes",1);params.put("bijiYesnoTypes",2);//正常查询出来商品,用于补全推荐缺少的数据PageUtils page = bijiService.queryPage(params);if(returnBijiViewList.size()<limit){//返回数量还是小于要求数量int toAddNum = limit - returnBijiViewList.size();//要添加的数量List<BijiView> bijiViewList =(List<BijiView>)page.getList();for(BijiView bijiView:bijiViewList){Boolean addFlag = true;for(BijiView returnBijiView:returnBijiViewList){if(returnBijiView.getId().intValue() ==bijiView.getId().intValue()) addFlag=false;//返回的数据中已存在此商品}if(addFlag){toAddNum=toAddNum-1;returnBijiViewList.add(bijiView);if(toAddNum==0) break;//够数量了}}}else {returnBijiViewList = returnBijiViewList.subList(0, limit);}for(BijiView c:returnBijiViewList)dictionaryService.dictionaryConvert(c, request);page.setList(returnBijiViewList);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 = bijiService.queryPage(params);//字典表数据转换List<BijiView> list =(List<BijiView>)page.getList();for(BijiView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put("data", page);}/*** 前端详情*/@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Integer id, HttpServletRequest request){logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);BijiEntity biji = bijiService.selectById(id);if(biji !=null){//entity转viewBijiView view = new BijiView();BeanUtils.copyProperties( biji , view );//把实体数据重构到view中//级联表YonghuEntity yonghu = yonghuService.selectById(biji.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody BijiEntity biji, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,biji:{}",this.getClass().getName(),biji.toString());Wrapper<BijiEntity> queryWrapper = new EntityWrapper<BijiEntity>().eq("yonghu_id", biji.getYonghuId()).eq("biji_name", biji.getBijiName()).eq("biji_uuid_number", biji.getBijiUuidNumber()).eq("zan_number", biji.getZanNumber()).eq("cai_number", biji.getCaiNumber()).eq("biji_types", biji.getBijiTypes());logger.info("sql语句:"+queryWrapper.getSqlSegment());BijiEntity bijiEntity = bijiService.selectOne(queryWrapper);if(bijiEntity==null){biji.setZanNumber(1);biji.setCaiNumber(1);biji.setInsertTime(new Date());biji.setCreateTime(new Date());bijiService.insert(biji);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.BijiEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 笔记广场 服务类*/
public interface BijiService extends IService<BijiEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}
7.3 笔记ServicesImpl
package com.service.impl;/*** 笔记广场 服务实现类*/
@Service("bijiService")
@Transactional
public class BijiServiceImpl extends ServiceImpl<BijiDao, BijiEntity> implements BijiService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<BijiView> page =new Query<BijiView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}
7.4 笔记DAO
package com.dao;import com.entity.BijiEntity;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;import org.apache.ibatis.annotations.Param;
import com.entity.view.BijiView;/*** 笔记广场 Dao 接口** @author */
public interface BijiDao extends BaseMapper<BijiEntity> {List<BijiView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}
8.参考文档

你可能还有感兴趣的项目👇🏻👇🏻👇🏻
更多项目推荐:计算机毕业设计项目
如果大家有任何疑虑,请在下方咨询或评论
相关文章:
计算机毕业设计 基于SpringBoot笔记记录分享网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
Windows Ubuntu子系统使用USB教程
Windows Ubuntu子系统使用USB教程 Windows Subsystem for Linux (WSL)允许您在Windows上运行Linux。以下指南涉及如何在WSL2中连接和使用USB设备。 WSL版本 在WSL内部运行 uname -a应该显示内核版本为5.10.60.1或更高版本。你需要运行WSL 2发行版本。 USB/IP 客户端工具 在W…...
如何理解TCP/IP协议?
一、是什么 TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇 TCP(传输控制协议) 一种面向连接的、可靠的、基于字节流的传输层通信协议 IP(网际协议) 用于封包交换数据网…...
如何开发出来一款解决抖音本地生活的软件营销工具?
一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统,目前是全国源头独立开发),开发功能大拆解分享,功能大拆解: 7大模型剪辑法(数学阶乘&#x…...
GO 语言如何用好变长参数?
函数重载 对于函数重载相信编码过的 xdm 肯定不会陌生,函数重载就是在同一个作用域内定义多个具有相同名称但参数列表不同的函数 此处的参数列表不同,可以是参数的类型不同,参数的个数不同 那么我们一起分别来看看 C 语言,C 语…...
怎么解决 Http 协议无状态?
一、Http 协议无状态的含义 1.1 有状态协议 常见的许多七层协议实际上是有状态的,例如 SMTP 协议,它的第一条消息必须是 HELO,用来握手,在 HELO 发送之前其他任何命令都是不能发送的;接下来一般要进行 AUTH 阶段&#…...
FlinkCDC for mysql to Clickhouse
完整依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.flink/flink-core --><dependency><groupId>org.apache.flink</groupId><artifactId>flink-core</artifactId><version>1.13.0</version>…...
沃通SSL证书服务多省区一体化政务服务平台
近年来,我国政务服务数字化水平不断提升,数字政府建设取得积极成效。依托全国一体化政务服务平台,政务服务效能不断提升,“一网通办”能力显著增强,为创新政府治理、优化营商环境提供了有力支撑。沃通SSL证书具备保护数…...
Linux程序地址
目录 一、定义 二、问题引出 三、虚拟地址和物理地址 (一)问题解释 (二)什么是进程地址空间 (三)为什么要有进程地址空间 一、定义 #include <stdio.h> #include <stdlib.h>//geten…...
华为OD k 对元素最小值(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
解决Unity打包时,Android SDK 报错问题
报错内容应该包括类似如下信息: CommandInvokationFailure: Failed to update Android SDK package list. java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtim…...
基于nodejs+vue 校园通勤车系统
但是管理好校园通勤车可视化又面临很多麻烦需要解决, 信息化已经成为主流,开发一个校园通勤车可视化系统小程序一方面的可能会更合乎时宜,困扰管理层的许多问题当中,校园通勤车 管理也是不敢忽视的一块。另一方面来说也可以提高在校园通勤车可视化管理方面的效率给相关管理人员…...
【JavaEE】Java多线程编程案例 -- 多线程篇(3)
Java多线程编程案例 1. 单例模式1.1 代码的简单实现1.2 懒汉模式的线程安全代码 2. 阻塞队列2.1 阻塞队列的概念2.2 使用库中的BlockingDeque2.3 模拟实现阻塞队列2.4 生产者消费者模型 3. 定时器3.1 概念3.2 使用库的定时器 - Timer类3.3 模拟实现定时器 4. 线程池4.1 概念4.2…...
axios发送常见请求方式以及拦截器的封装
一,常见请求 //1.get--传递paramsaxios.get("/test",{params:{}})//2.post--传递paramsaxios.post("/test",{},{params:{}}) //3.post--传递bodyaxios.post("/test",{name:""}) 二,封装请求拦截器 import ax…...
Apollo中的身份验证与授权:保护你的数据
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄,vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄ÿ…...
斜率优化dp
f i min ( a j − j i ) f_i\min(a_j - j \times i) fimin(aj−ji) 考虑变成点对 ( j , a j ) (j,a_j) (j,aj),则 f i Y j − X j i f_iY_j-X_ji fiYj−Xji 令 i k , f i b ik, f_ib ik,fib,得 b Y j − X j k bY_j-X_jk b…...
华为OD 打印任务排序(100分)【java】A卷+B卷
华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...
最新Ai写作创作系统源码+Ai绘画系统源码+搭建部署教程+支持GPT4.0+支持Prompt预设应用+思维导图生成
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…...
FPGA【紫光语法】
寄存器数据类型: reg 默认为 1 bit wide,如果超过 1 bit,则需要 range declaration 设置 reg 的位宽integer 默认位宽为 32 bit,不允许有 range declarationtime 默认位宽为 64 bit,不允许有 range declarat…...
运维监控Zabbix部署
目录 运维监控Zabbix部署 1. 简介 2. 安装 编辑 2.1 安装前准备 - Mysql 2.2 安装Zabbix Server 和 Zabbix Agent 2.2.1 安装Zabbix yum库 2.2.2 安装Zabbix Server、前端、Agent 2.2.3 初始化Mysql数据库 2.2.4 为Zabbix Server配置数据库 2.2.5 配置Zab…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...
2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
stm32进入Infinite_Loop原因(因为有系统中断函数未自定义实现)
这是系统中断服务程序的默认处理汇编函数,如果我们没有定义实现某个中断函数,那么当stm32产生了该中断时,就会默认跑这里来了,所以我们打开了什么中断,一定要记得实现对应的系统中断函数,否则会进来一直循环…...
