计算机毕业设计 SpringBoot的乐乐农产品销售系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

本文主要是介绍计算机毕业设计 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 用户管理

6.数据库文件设计

7.核心代码 

7.1 农产品Controller

7.2 农产品ServiceImpl

7.3 农产品Service

7.4 农产品DAO

8.参考文档


1.技术选型

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

2.数据库表结构

15张 

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 用户管理

 

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=15 DEFAULT CHARSET=utf8 COMMENT='收货地址';CREATE TABLE `cart` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`yonghu_id` int(11) DEFAULT NULL COMMENT '所属用户',`nongchanpin_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=3 DEFAULT CHARSET=utf8 COMMENT='购物车';CREATE TABLE `config` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',`name` varchar(100) NOT 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=24 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 '用户',`shangjia_id` int(11) DEFAULT NULL COMMENT '商家',`users_id` int(11) DEFAULT NULL COMMENT '管理员',`forum_content` longtext 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=19 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 `nongchanpin_collection` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`nongchanpin_id` int(11) DEFAULT NULL COMMENT '农产品',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`nongchanpin_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='农产品收藏';CREATE TABLE `nongchanpin_commentback` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`nongchanpin_id` int(11) DEFAULT NULL COMMENT '农产品',`yonghu_id` int(11) DEFAULT NULL COMMENT '用户',`nongchanpin_commentback_text` text COMMENT '评价内容',`insert_time` timestamp NULL DEFAULT NULL COMMENT '评价时间',`reply_text` text 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 `shangjia` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',`username` varchar(200) DEFAULT NULL COMMENT '账户 ',`password` varchar(200) DEFAULT NULL COMMENT '密码 ',`shangjia_name` varchar(200) DEFAULT NULL COMMENT '商家名称 Search111 ',`shangjia_phone` varchar(200) DEFAULT NULL COMMENT '联系方式',`shangjia_email` varchar(200) DEFAULT NULL COMMENT '邮箱',`shangjia_photo` varchar(200) DEFAULT NULL COMMENT '营业执照展示 ',`shangjia_xingji_types` int(11) DEFAULT NULL COMMENT '商家信用类型',`new_money` decimal(10,2) DEFAULT NULL COMMENT '现有余额',`shangjia_content` longtext COMMENT '商家介绍 ',`shangjia_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show1 show2 photoShow ',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 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_uuid_number` varchar(200) DEFAULT NULL COMMENT '用户编号 Search111 ',`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 '余额 ',`create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='用户';

7.核心代码 

7.1 农产品Controller


package com.controller;/*** 农产品* 后端接口* @author 计算机编程-吉哥* @email
*/
@RestController
@Controller
@RequestMapping("/nongchanpin")
public class NongchanpinController {private static final Logger logger = LoggerFactory.getLogger(NongchanpinController.class);private static final String TABLE_NAME = "nongchanpin";@Autowiredprivate NongchanpinService nongchanpinService;@Autowiredprivate TokenService tokenService;@Autowiredprivate AddressService addressService;//收货地址@Autowiredprivate CartService cartService;//购物车@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate ForumService forumService;//交流论坛@Autowiredprivate GonggaoService gonggaoService;//公告信息@Autowiredprivate NongchanpinCollectionService nongchanpinCollectionService;//农产品收藏@Autowiredprivate NongchanpinCommentbackService nongchanpinCommentbackService;//农产品评价@Autowiredprivate NongchanpinOrderService nongchanpinOrderService;//农产品订单@Autowiredprivate ShangjiaService shangjiaService;//商家@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"));else if("商家".equals(role))params.put("shangjiaId",request.getSession().getAttribute("userId"));params.put("nongchanpinDeleteStart",1);params.put("nongchanpinDeleteEnd",1);CommonUtil.checkMap(params);PageUtils page = nongchanpinService.queryPage(params);//字典表数据转换List<NongchanpinView> list =(List<NongchanpinView>)page.getList();for(NongchanpinView 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);NongchanpinEntity nongchanpin = nongchanpinService.selectById(id);if(nongchanpin !=null){//entity转viewNongchanpinView view = new NongchanpinView();BeanUtils.copyProperties( nongchanpin , view );//把实体数据重构到view中//级联表 商家//级联表ShangjiaEntity shangjia = shangjiaService.selectById(nongchanpin.getShangjiaId());if(shangjia != null){BeanUtils.copyProperties( shangjia , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "shangjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setShangjiaId(shangjia.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NongchanpinEntity nongchanpin, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,nongchanpin:{}",this.getClass().getName(),nongchanpin.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("商家".equals(role))nongchanpin.setShangjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));Wrapper<NongchanpinEntity> queryWrapper = new EntityWrapper<NongchanpinEntity>().eq("shangjia_id", nongchanpin.getShangjiaId()).eq("nongchanpin_name", nongchanpin.getNongchanpinName()).eq("nongchanpin_types", nongchanpin.getNongchanpinTypes()).eq("nongchanpin_kucun_number", nongchanpin.getNongchanpinKucunNumber()).eq("shangxia_types", nongchanpin.getShangxiaTypes()).eq("nongchanpin_delete", 1);logger.info("sql语句:"+queryWrapper.getSqlSegment());NongchanpinEntity nongchanpinEntity = nongchanpinService.selectOne(queryWrapper);if(nongchanpinEntity==null){nongchanpin.setNongchanpinClicknum(1);nongchanpin.setShangxiaTypes(1);nongchanpin.setNongchanpinDelete(1);nongchanpin.setCreateTime(new Date());nongchanpinService.insert(nongchanpin);return R.ok();}else {return R.error(511,"表中有相同数据");}}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody NongchanpinEntity nongchanpin, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,nongchanpin:{}",this.getClass().getName(),nongchanpin.toString());NongchanpinEntity oldNongchanpinEntity = nongchanpinService.selectById(nongchanpin.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("商家".equals(role))
//            nongchanpin.setShangjiaId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));if("".equals(nongchanpin.getNongchanpinPhoto()) || "null".equals(nongchanpin.getNongchanpinPhoto())){nongchanpin.setNongchanpinPhoto(null);}if("".equals(nongchanpin.getNongchanpinContent()) || "null".equals(nongchanpin.getNongchanpinContent())){nongchanpin.setNongchanpinContent(null);}nongchanpinService.updateById(nongchanpin);//根据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<NongchanpinEntity> oldNongchanpinList =nongchanpinService.selectBatchIds(Arrays.asList(ids));//要删除的数据ArrayList<NongchanpinEntity> list = new ArrayList<>();for(Integer id:ids){NongchanpinEntity nongchanpinEntity = new NongchanpinEntity();nongchanpinEntity.setId(id);nongchanpinEntity.setNongchanpinDelete(2);list.add(nongchanpinEntity);}if(list != null && list.size() >0){nongchanpinService.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");//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))try {List<NongchanpinEntity> nongchanpinList = 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){//循环NongchanpinEntity nongchanpinEntity = new NongchanpinEntity();//把要查询是否重复的字段放入map中}//查询是否重复nongchanpinService.insertBatch(nongchanpinList);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<NongchanpinView> returnNongchanpinViewList = 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("nongchanpinYesnoTypes",2);PageUtils pageUtils = nongchanpinOrderService.queryPage(params1);List<NongchanpinOrderView> orderViewsList =(List<NongchanpinOrderView>)pageUtils.getList();Map<Integer,Integer> typeMap=new HashMap<>();//购买的类型listfor(NongchanpinOrderView orderView:orderViewsList){Integer nongchanpinTypes = orderView.getNongchanpinTypes();if(typeMap.containsKey(nongchanpinTypes)){typeMap.put(nongchanpinTypes,typeMap.get(nongchanpinTypes)+1);}else{typeMap.put(nongchanpinTypes,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("nongchanpinTypes",type);params2.put("shangxiaTypes",1);params2.put("nongchanpinYesnoTypes",2);PageUtils pageUtils1 = nongchanpinService.queryPage(params2);List<NongchanpinView> nongchanpinViewList =(List<NongchanpinView>)pageUtils1.getList();returnNongchanpinViewList.addAll(nongchanpinViewList);if(returnNongchanpinViewList.size()>= limit) break;//返回的推荐数量大于要的数量 跳出循环}params.put("shangxiaTypes",1);params.put("nongchanpinYesnoTypes",2);//正常查询出来商品,用于补全推荐缺少的数据PageUtils page = nongchanpinService.queryPage(params);if(returnNongchanpinViewList.size()<limit){//返回数量还是小于要求数量int toAddNum = limit - returnNongchanpinViewList.size();//要添加的数量List<NongchanpinView> nongchanpinViewList =(List<NongchanpinView>)page.getList();for(NongchanpinView nongchanpinView:nongchanpinViewList){Boolean addFlag = true;for(NongchanpinView returnNongchanpinView:returnNongchanpinViewList){if(returnNongchanpinView.getId().intValue() ==nongchanpinView.getId().intValue()) addFlag=false;//返回的数据中已存在此商品}if(addFlag){toAddNum=toAddNum-1;returnNongchanpinViewList.add(nongchanpinView);if(toAddNum==0) break;//够数量了}}}else {returnNongchanpinViewList = returnNongchanpinViewList.subList(0, limit);}for(NongchanpinView c:returnNongchanpinViewList)dictionaryService.dictionaryConvert(c, request);page.setList(returnNongchanpinViewList);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 = nongchanpinService.queryPage(params);//字典表数据转换List<NongchanpinView> list =(List<NongchanpinView>)page.getList();for(NongchanpinView 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);NongchanpinEntity nongchanpin = nongchanpinService.selectById(id);if(nongchanpin !=null){//点击数量加1nongchanpin.setNongchanpinClicknum(nongchanpin.getNongchanpinClicknum()+1);nongchanpinService.updateById(nongchanpin);//entity转viewNongchanpinView view = new NongchanpinView();BeanUtils.copyProperties( nongchanpin , view );//把实体数据重构到view中//级联表ShangjiaEntity shangjia = shangjiaService.selectById(nongchanpin.getShangjiaId());if(shangjia != null){BeanUtils.copyProperties( shangjia , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "shangjiaId"});//把级联的数据添加到view中,并排除id和创建时间字段view.setShangjiaId(shangjia.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NongchanpinEntity nongchanpin, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,nongchanpin:{}",this.getClass().getName(),nongchanpin.toString());Wrapper<NongchanpinEntity> queryWrapper = new EntityWrapper<NongchanpinEntity>().eq("shangjia_id", nongchanpin.getShangjiaId()).eq("nongchanpin_name", nongchanpin.getNongchanpinName()).eq("nongchanpin_types", nongchanpin.getNongchanpinTypes()).eq("nongchanpin_kucun_number", nongchanpin.getNongchanpinKucunNumber()).eq("nongchanpin_clicknum", nongchanpin.getNongchanpinClicknum()).eq("shangxia_types", nongchanpin.getShangxiaTypes()).eq("nongchanpin_delete", nongchanpin.getNongchanpinDelete())
//            .notIn("nongchanpin_types", new Integer[]{102});logger.info("sql语句:"+queryWrapper.getSqlSegment());NongchanpinEntity nongchanpinEntity = nongchanpinService.selectOne(queryWrapper);if(nongchanpinEntity==null){nongchanpin.setNongchanpinClicknum(1);nongchanpin.setNongchanpinDelete(1);nongchanpin.setCreateTime(new Date());nongchanpinService.insert(nongchanpin);return R.ok();}else {return R.error(511,"表中有相同数据");}}}

7.2 农产品ServiceImpl

package com.service.impl;/*** 农产品 服务实现类*/
@Service("nongchanpinService")
@Transactional
public class NongchanpinServiceImpl extends ServiceImpl<NongchanpinDao, NongchanpinEntity> implements NongchanpinService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<NongchanpinView> page =new Query<NongchanpinView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}

7.3 农产品Service

package com.service;import com.baomidou.mybatisplus.service.IService;
import com.utils.PageUtils;
import com.entity.NongchanpinEntity;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import java.util.List;/*** 农产品 服务类*/
public interface NongchanpinService extends IService<NongchanpinEntity> {/*** @param params 查询参数* @return 带分页的查询出来的数据*/PageUtils queryPage(Map<String, Object> params);}

7.4 农产品DAO

package com.dao;import com.entity.NongchanpinEntity;
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.NongchanpinView;/*** 农产品 Dao 接口** @author */
public interface NongchanpinDao extends BaseMapper<NongchanpinEntity> {List<NongchanpinView> selectListView(Pagination page,@Param("params")Map<String,Object> params);}

8.参考文档

 

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

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

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

这篇关于计算机毕业设计 SpringBoot的乐乐农产品销售系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478873

相关文章

Spring Cloud Hystrix原理与注意事项小结

《SpringCloudHystrix原理与注意事项小结》本文介绍了Hystrix的基本概念、工作原理以及其在实际开发中的应用方式,通过对Hystrix的深入学习,开发者可以在分布式系统中实现精细... 目录一、Spring Cloud Hystrix概述和设计目标(一)Spring Cloud Hystr

Ubuntu 22.04 服务器安装部署(nginx+postgresql)

《Ubuntu22.04服务器安装部署(nginx+postgresql)》Ubuntu22.04LTS是迄今为止最好的Ubuntu版本之一,很多linux的应用服务器都是选择的这个版本... 目录是什么让 Ubuntu 22.04 LTS 变得安全?更新了安全包linux 内核改进一、部署环境二、安装系统

Spring Boot整合消息队列RabbitMQ的实现示例

《SpringBoot整合消息队列RabbitMQ的实现示例》本文主要介绍了SpringBoot整合消息队列RabbitMQ的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目录RabbitMQ 简介与安装1. RabbitMQ 简介2. RabbitMQ 安装Spring

springMVC返回Http响应的实现

《springMVC返回Http响应的实现》本文主要介绍了在SpringBoot中使用@Controller、@ResponseBody和@RestController注解进行HTTP响应返回的方法,... 目录一、返回页面二、@Controller和@ResponseBody与RestController

JAVA集成本地部署的DeepSeek的图文教程

《JAVA集成本地部署的DeepSeek的图文教程》本文主要介绍了JAVA集成本地部署的DeepSeek的图文教程,包含配置环境变量及下载DeepSeek-R1模型并启动,具有一定的参考价值,感兴趣的... 目录一、下载部署DeepSeek1.下载ollama2.下载DeepSeek-R1模型并启动 二、J

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在

Spring Retry 实现乐观锁重试实践记录

《SpringRetry实现乐观锁重试实践记录》本文介绍了在秒杀商品SKU表中使用乐观锁和MybatisPlus配置乐观锁的方法,并分析了测试环境和生产环境的隔离级别对乐观锁的影响,通过简单验证,... 目录一、场景分析 二、简单验证 2.1、可重复读 2.2、读已提交 三、最佳实践 3.1、配置重试模板

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav