计算机毕业设计 基于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…...
大麦网Python自动抢票脚本终极指南:90%成功率的一键抢票方案
大麦网Python自动抢票脚本终极指南:90%成功率的一键抢票方案 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 在热门演唱会门票一票难求的时代,手动刷新…...
如何用4个技术突破重新定义数字艺术创作流程?
如何用4个技术突破重新定义数字艺术创作流程? 【免费下载链接】krita-ai-diffusion Streamlined interface for generating images with AI in Krita. Inpaint and outpaint with optional text prompt, no tweaking required. 项目地址: https://gitcode.com/gh_…...
5步掌握JD-GUI插件开发:为Java反编译工具注入专属功能
5步掌握JD-GUI插件开发:为Java反编译工具注入专属功能 【免费下载链接】jd-gui A standalone Java Decompiler GUI 项目地址: https://gitcode.com/gh_mirrors/jd/jd-gui 想要让Java反编译工具JD-GUI变得更强大吗?JD-GUI插件开发正是解锁个性化功…...
开箱即用的CAM++镜像:一条命令启动,告别复杂环境配置
开箱即用的CAM镜像:一条命令启动,告别复杂环境配置 1. 为什么选择CAM说话人识别系统 在语音识别领域,说话人验证一直是个技术难点。传统方案往往需要复杂的开发环境配置、繁琐的依赖安装和漫长的调试过程。而CAM镜像彻底改变了这一局面&…...
MLflow:从MLOps到AIOps的一体化AI工程平台实践指南
1. MLflow:从MLOps到AIOps的工程化平台演进如果你正在构建基于大语言模型(LLM)的智能体应用,或者还在为传统机器学习模型的实验跟踪、部署管理而头疼,那么MLflow这个名字你应该不陌生。作为一个在GitHub上拥有超过2万颗…...
Z-Image-Turbo应用实战:如何用AI快速生成商品主图和营销素材
Z-Image-Turbo应用实战:如何用AI快速生成商品主图和营销素材 1. 电商视觉内容生产的痛点与解决方案 在电商运营中,商品主图和营销素材的质量直接影响转化率。传统设计流程面临三大挑战: 时间成本高:专业设计师完成一张主图平均…...
GenoMAS:基于大语言模型的多智能体系统实现基因表达分析自动化
1. 项目概述:当大语言模型遇上计算基因组学如果你是一名生物信息学或计算生物学领域的研究者,每天的工作可能都离不开处理海量的基因表达数据。从GEO、TCGA等公共数据库下载原始数据,到进行质量控制、批次校正、差异表达分析,再到…...
Gemma-4-26B-A4B-it-GGUF 部署效果对比:Windows与Linux环境性能评测
Gemma-4-26B-A4B-it-GGUF 部署效果对比:Windows与Linux环境性能评测 1. 评测背景与目标 Gemma-4-26B-A4B-it-GGUF作为当前热门的开源大模型,其部署性能直接影响开发者的使用体验。本次评测聚焦一个核心问题:同一模型在不同操作系统下的表现…...
real-anime-z镜像免配置:模型路径预置+WebUI自动加载checkpoint机制
real-anime-z镜像免配置:模型路径预置WebUI自动加载checkpoint机制 1. 镜像概述与核心优势 real-anime-z是一款专为二次元插画创作优化的文生图镜像,它通过预置模型路径和自动加载机制,让用户无需任何配置即可开始创作。这个镜像特别适合生…...
Phi-3-mini-4k-instruct-gguf效果对比图:与Qwen2.5-1.5B在代码生成任务中的输出质量对比
Phi-3-mini-4k-instruct-gguf与Qwen2.5-1.5B代码生成效果对比 1. 模型介绍 1.1 Phi-3-mini-4k-instruct-gguf Phi-3-Mini-4K-Instruct是一个38亿参数的轻量级开源模型,采用GGUF格式提供。该模型使用Phi-3数据集训练,包含合成数据和精选的公开网站数据…...
