计算机毕业设计 基于SpringBoot产业园区智慧公寓管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

news2024/11/25 19:21:53

🍊作者:计算机编程-吉哥
🍊简介:专业从事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

 7.4 房屋租赁订单DAO

8.参考文档


1.技术选型

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

2.数据库表结构

16张 

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 维修报备管理

 

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=38 DEFAULT CHARSET=utf8 COMMENT='字典';


CREATE TABLE `fangwu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `qiyeyonghu_id` int(11) DEFAULT NULL COMMENT '企业用户',
  `fangwu_name` varchar(200) DEFAULT NULL COMMENT '房屋名称  Search111 ',
  `fangwu_photo` varchar(200) DEFAULT NULL COMMENT '房屋照片',
  `zan_number` int(11) DEFAULT NULL COMMENT '赞',
  `cai_number` int(11) DEFAULT NULL COMMENT '踩',
  `fangwu_types` int(11) DEFAULT NULL COMMENT '房屋类型 Search111',
  `fangwu_clicknum` int(11) DEFAULT NULL COMMENT '房屋热度',
  `fangwu_new_money` decimal(10,2) DEFAULT NULL COMMENT '租金/月',
  `fangwu_content` longtext COMMENT '房屋介绍 ',
  `data_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 `fangwu_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `fangwu_id` int(11) DEFAULT NULL COMMENT '房屋',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `fangwu_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=19 DEFAULT CHARSET=utf8 COMMENT='房屋收藏';


CREATE TABLE `fangwu_liuyan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `fangwu_id` int(11) DEFAULT NULL COMMENT '房屋',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `fangwu_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 '创建时间 show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8 COMMENT='房屋留言';


CREATE TABLE `fangwu_order` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `fangwu_order_uuid_number` varchar(200) DEFAULT NULL COMMENT '订单编号 Search111 ',
  `fangwu_id` int(11) DEFAULT NULL COMMENT '房屋',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `fangwu_order_time` timestamp NULL DEFAULT NULL COMMENT '预约日期',
  `fangwu_order_numb` int(11) DEFAULT NULL COMMENT '租期/月',
  `fangwu_order_true_price` decimal(10,2) DEFAULT NULL COMMENT '实付价格',
  `fangwu_order_types` int(11) DEFAULT NULL COMMENT '订单类型 Search111 ',
  `fangwu_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=3 DEFAULT CHARSET=utf8 COMMENT='房屋租赁订单';


CREATE TABLE `forum` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `forum_name` varchar(200) DEFAULT NULL COMMENT '帖子标题  Search111 ',
  `qiyeyonghu_id` int(11) DEFAULT NULL COMMENT '企业用户',
  `yonghu_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=22 DEFAULT CHARSET=utf8 COMMENT='交流论坛';

CREATE TABLE `jiaofei` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `jiaofei_uuid_number` varchar(200) DEFAULT NULL COMMENT '缴费编号',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `jiaofei_name` varchar(200) DEFAULT NULL COMMENT '缴费标题  Search111 ',
  `jiaofei_types` int(11) DEFAULT NULL COMMENT '缴费类型 Search111',
  `jiaofei_new_money` decimal(10,2) DEFAULT NULL COMMENT '缴费金额',
  `zhuangtai_types` int(11) DEFAULT NULL COMMENT '缴费状态 Search111',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 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` 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 `qiye` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `qiyeyonghu_id` int(11) DEFAULT NULL COMMENT '企业用户',
  `qiye_name` varchar(200) DEFAULT NULL COMMENT '企业名称 Search111 ',
  `qiye_types` int(11) DEFAULT NULL COMMENT '企业类型',
  `qiye_phone` varchar(200) DEFAULT NULL COMMENT '联系方式',
  `qiye_email` varchar(200) DEFAULT NULL COMMENT '邮箱',
  `qiye_photo` varchar(200) DEFAULT NULL COMMENT '企业封面',
  `qiye_content` longtext COMMENT '企业简介 ',
  `data_delete` int(11) 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 `qiyeyonghu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `qiyeyonghu_name` varchar(200) DEFAULT NULL COMMENT '企业用户名称 Search111 ',
  `qiyeyonghu_phone` varchar(200) DEFAULT NULL COMMENT '企业用户手机号',
  `qiyeyonghu_photo` varchar(200) DEFAULT NULL COMMENT '企业用户头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别 Search111',
  `qiyeyonghu_email` varchar(200) DEFAULT NULL COMMENT '企业用户邮箱',
  `data_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '添加时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='企业用户';


CREATE TABLE `sheshiyuyue` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `sheshiyuyue_uuid_number` varchar(200) DEFAULT NULL COMMENT '预约编号 Search111 ',
  `sheshiyuyue_name` varchar(200) DEFAULT NULL COMMENT '预约标题  Search111 ',
  `sheshiyuyue_sheshi` varchar(200) DEFAULT NULL COMMENT '设施名称  Search111 ',
  `sheshiyuyue_types` int(11) DEFAULT NULL COMMENT '设施类型  Search111 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `sheshiyuyue_text` longtext COMMENT '预约理由',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '房屋预约时间',
  `sheshiyuyue_yesno_types` int(11) DEFAULT NULL COMMENT '预约状态 Search111 ',
  `sheshiyuyue_yesno_text` longtext COMMENT '审核回复',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 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 `weixiubaobei` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `weixiubaobei_name` varchar(200) DEFAULT NULL COMMENT '报备标题 Search111 ',
  `weixiubaobei_text` longtext COMMENT '报备缘由',
  `weixiubaobei_types` int(11) DEFAULT NULL COMMENT '报备类型 Search111',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '申请时间',
  `weixiubaobei_time` timestamp NULL DEFAULT NULL COMMENT '报备时间',
  `weixiubaobei_yesno_types` int(11) DEFAULT NULL COMMENT '报备状态 Search111 ',
  `weixiubaobei_yesno_text` longtext COMMENT '处理结果',
  `weixiubaobei_shenhe_time` timestamp NULL DEFAULT NULL COMMENT '审核时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 listShow',
  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_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 '性别 Search111',
  `yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',
  `new_money` decimal(10,2) DEFAULT NULL COMMENT '现有余额',
  `data_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL 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("/fangwuOrder")
public class FangwuOrderController {
    private static final Logger logger = LoggerFactory.getLogger(FangwuOrderController.class);

    private static final String TABLE_NAME = "fangwuOrder";

    @Autowired
    private FangwuOrderService fangwuOrderService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private FangwuService fangwuService;//房屋信息
    @Autowired
    private FangwuCollectionService fangwuCollectionService;//房屋收藏
    @Autowired
    private FangwuLiuyanService fangwuLiuyanService;//房屋留言
    @Autowired
    private ForumService forumService;//交流论坛
    @Autowired
    private JiaofeiService jiaofeiService;//缴费
    @Autowired
    private NewsService newsService;//公告通知
    @Autowired
    private QiyeService qiyeService;//企业
    @Autowired
    private QiyeyonghuService qiyeyonghuService;//企业用户
    @Autowired
    private SheshiyuyueService sheshiyuyueService;//设施预约
    @Autowired
    private WeixiubaobeiService weixiubaobeiService;//维修报备
    @Autowired
    private YonghuService yonghuService;//用户
    @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"));
        else if("企业用户".equals(role))
            params.put("qiyeyonghuId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = fangwuOrderService.queryPage(params);

        //字典表数据转换
        List<FangwuOrderView> list =(List<FangwuOrderView>)page.getList();
        for(FangwuOrderView 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);
        FangwuOrderEntity fangwuOrder = fangwuOrderService.selectById(id);
        if(fangwuOrder !=null){
            //entity转view
            FangwuOrderView view = new FangwuOrderView();
            BeanUtils.copyProperties( fangwuOrder , view );//把实体数据重构到view中
            //级联表 房屋信息
            //级联表
            FangwuEntity fangwu = fangwuService.selectById(fangwuOrder.getFangwuId());
            if(fangwu != null){
            BeanUtils.copyProperties( fangwu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setFangwuId(fangwu.getId());
            }
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(fangwuOrder.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 FangwuOrderEntity fangwuOrder, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,fangwuOrder:{}",this.getClass().getName(),fangwuOrder.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            fangwuOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        fangwuOrder.setCreateTime(new Date());
        fangwuOrder.setInsertTime(new Date());
        fangwuOrderService.insert(fangwuOrder);

        return R.ok();
    }

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

        String role = String.valueOf(request.getSession().getAttribute("role"));
       fangwuOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

            fangwuOrderService.updateById(fangwuOrder);//根据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<FangwuOrderEntity> oldFangwuOrderList =fangwuOrderService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        fangwuOrderService.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<FangwuOrderEntity> fangwuOrderList = 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){
                            //循环
                            FangwuOrderEntity fangwuOrderEntity = new FangwuOrderEntity();
                            fangwuOrderList.add(fangwuOrderEntity);

                            //把要查询是否重复的字段放入map中
                                //订单编号
                                if(seachFields.containsKey("fangwuOrderUuidNumber")){
                                    List<String> fangwuOrderUuidNumber = seachFields.get("fangwuOrderUuidNumber");
                                    fangwuOrderUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> fangwuOrderUuidNumber = new ArrayList<>();
                                    fangwuOrderUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("fangwuOrderUuidNumber",fangwuOrderUuidNumber);
                                }
                        }

                        //查询是否重复
                         //订单编号
                        List<FangwuOrderEntity> fangwuOrderEntities_fangwuOrderUuidNumber = fangwuOrderService.selectList(new EntityWrapper<FangwuOrderEntity>().in("fangwu_order_uuid_number", seachFields.get("fangwuOrderUuidNumber")));
                        if(fangwuOrderEntities_fangwuOrderUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(FangwuOrderEntity s:fangwuOrderEntities_fangwuOrderUuidNumber){
                                repeatFields.add(s.getFangwuOrderUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [订单编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        fangwuOrderService.insertBatch(fangwuOrderList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }




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

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

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


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

                //级联表
                    FangwuEntity fangwu = fangwuService.selectById(fangwuOrder.getFangwuId());
                if(fangwu != null){
                    BeanUtils.copyProperties( fangwu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "username", "password", "newMoney", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setFangwuId(fangwu.getId());
                }
                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(fangwuOrder.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 FangwuOrderEntity fangwuOrder, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,fangwuOrder:{}",this.getClass().getName(),fangwuOrder.toString());
            FangwuEntity fangwuEntity = fangwuService.selectById(fangwuOrder.getFangwuId());
            if(fangwuEntity == null){
                return R.error(511,"查不到该房屋信息");
            }
            // Double fangwuNewMoney = fangwuEntity.getFangwuNewMoney();

            if(false){
            }
            else if(fangwuEntity.getFangwuNewMoney() == null){
                return R.error(511,"租金/月不能为空");
            }

            //计算所获得积分
            Double buyJifen =0.0;
            Integer userId = (Integer) request.getSession().getAttribute("userId");
            YonghuEntity yonghuEntity = yonghuService.selectById(userId);
            if(yonghuEntity == null)
                return R.error(511,"用户不能为空");
            if(yonghuEntity.getNewMoney() == null)
                return R.error(511,"用户金额不能为空");
            double balance = yonghuEntity.getNewMoney() - fangwuEntity.getFangwuNewMoney()*fangwuOrder.getFangwuOrderNumb();//余额
            if(balance<0)
                return R.error(511,"余额不够支付");
            fangwuOrder.setFangwuOrderTypes(101); //设置订单状态为已支付
            fangwuOrder.setFangwuOrderTruePrice(fangwuEntity.getFangwuNewMoney()*fangwuOrder.getFangwuOrderNumb()); //设置实付价格
            fangwuOrder.setYonghuId(userId); //设置订单支付人id
            fangwuOrder.setFangwuOrderUuidNumber(String.valueOf(new Date().getTime()));
            fangwuOrder.setFangwuOrderPaymentTypes(1);
            fangwuOrder.setInsertTime(new Date());
            fangwuOrder.setCreateTime(new Date());
                fangwuOrderService.insert(fangwuOrder);//新增订单
            //更新第一注册表
            yonghuEntity.setNewMoney(balance);//设置金额
            yonghuService.updateById(yonghuEntity);

            return R.ok();
    }


    /**
    * 退房
    */
    @RequestMapping("/refund")
    public R refund(Integer id, HttpServletRequest request){
        logger.debug("refund方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        String role = String.valueOf(request.getSession().getAttribute("role"));

            FangwuOrderEntity fangwuOrder = fangwuOrderService.selectById(id);//当前表service
            Integer fangwuOrderPaymentTypes = fangwuOrder.getFangwuOrderPaymentTypes();
            Integer fangwuId = fangwuOrder.getFangwuId();
            if(fangwuId == null)
                return R.error(511,"查不到该房屋信息");
            FangwuEntity fangwuEntity = fangwuService.selectById(fangwuId);
            if(fangwuEntity == null)
                return R.error(511,"查不到该房屋信息");
            Double fangwuNewMoney = fangwuEntity.getFangwuNewMoney();
            if(fangwuNewMoney == null)
                return R.error(511,"房屋信息价格不能为空");

            Integer userId = (Integer) request.getSession().getAttribute("userId");
            YonghuEntity yonghuEntity = yonghuService.selectById(userId);
            if(yonghuEntity == null)
                return R.error(511,"用户不能为空");
            if(yonghuEntity.getNewMoney() == null)
            return R.error(511,"用户金额不能为空");
            Double zhekou = 1.0;

            //判断是什么支付方式 1代表余额 2代表积分
            if(fangwuOrderPaymentTypes == 1){//余额支付
                //计算金额
                Double money = fangwuEntity.getFangwuNewMoney() * fangwuOrder.getFangwuOrderNumb()  * zhekou;
                //计算所获得积分
                Double buyJifen = 0.0;
                yonghuEntity.setNewMoney(yonghuEntity.getNewMoney() + money); //设置金额


            }


            fangwuOrder.setFangwuOrderTypes(102);//设置订单状态为已退房
            fangwuOrderService.updateAllColumnById(fangwuOrder);//根据id更新
            yonghuService.updateById(yonghuEntity);//更新用户信息
            fangwuService.updateById(fangwuEntity);//更新订单中房屋信息的信息

            return R.ok();
    }

    /**
     * 完成
     */
    @RequestMapping("/deliver")
    public R deliver(Integer id  , HttpServletRequest request){
        logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());
        FangwuOrderEntity  fangwuOrderEntity = fangwuOrderService.selectById(id);
        fangwuOrderEntity.setFangwuOrderTypes(103);//设置订单状态为已完成
        fangwuOrderService.updateById( fangwuOrderEntity);

        return R.ok();
    }


}

7.2 房屋租赁订单Service

package com.service;

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

/**
 * 房屋租赁订单 服务类
 */
public interface FangwuOrderService extends IService<FangwuOrderEntity> {

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

}

 7.3 房屋租赁订单ServiceImpl

package com.service.impl;
/**
 * 房屋租赁订单 服务实现类
 */
@Service("fangwuOrderService")
@Transactional
public class FangwuOrderServiceImpl extends ServiceImpl<FangwuOrderDao, FangwuOrderEntity> implements FangwuOrderService {

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


}

 7.4 房屋租赁订单DAO

package com.dao;

import com.entity.FangwuOrderEntity;
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.FangwuOrderView;

/**
 * 房屋租赁订单 Dao 接口
 *
 * @author 
 */
public interface FangwuOrderDao extends BaseMapper<FangwuOrderEntity> {

   List<FangwuOrderView> selectListView(Pagination page,@Param("params")Map<String,Object> params);

}

8.参考文档

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

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

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

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

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

相关文章

【Vue】vue2与WebApi跨域CORS问题

系列文章 C#底层库–记录日志帮助类 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/124187709 文章目录 系列文章前言一、技术介绍1.1 为什么会产生跨越1.2 什么是跨越 二、问题描述三、问题解决3.1 方法一&#xff1a;前端Vue修改3.2 方法二&#…

喜报!震坤行荣登“2023上海百强企业”两项百强榜单!

喜报&#xff01;震坤行荣登“2023上海百强企业”两项百强榜单&#xff01; 9月12日&#xff0c;上海市企业联合会、上海市企业家协会、上海市经济团体联合会和解放日报社在中国金融信息中心会议厅联合召开2023上海百强企业新闻发布会&#xff0c;上海市企业联合会会长刘家平主…

信号完整性分析基础知识之有损传输线、上升时间衰减和材料特性(六):衰减和dB

线路中的损耗对信号的主要影响是当信号沿线路长度传播时幅度减小。如果将幅度为 V 的正弦波电压信号引入传输线&#xff0c;则其幅度将随着传输线向下移动而下降。图 9-16 显示了如果我们可以冻结时间并观察直线上存在的正弦波&#xff0c;则正弦波在不同位置可能会是什么样子。…

如何让你的桌面干净得像一张白纸(详细教程)

文章目录 固定到任务栏固定到快速访问固定到“开始”屏幕添加桌面右键菜单最终效果展示程序员专属工具箱 ✍创作者&#xff1a;全栈弄潮儿 &#x1f3e1; 个人主页&#xff1a; 全栈弄潮儿的个人主页 &#x1f3d9;️ 个人社区&#xff0c;欢迎你的加入&#xff1a;全栈弄潮儿的…

AQS原理及源码解析

概要 AQS是AbstractQueuedSynchronizer类的简称&#xff0c;为了方便&#xff0c;后面都以AQS来指代。AQS通过对互斥锁、共享锁和条件等待的基础实现和封装&#xff0c;同时为juc包下其他类提供扩展&#xff0c;完善了java体系的锁、线程池和并发集合类的实现&#xff0c;主要包…

确保第三方 API 安全的 5 个最佳实践

应用程序编程接口 &#xff08;API&#xff09; 已成为设置功能和灵活性不可或缺的一部分。但它们也是潜在的攻击媒介&#xff0c;需要在安全团队的雷达上占据很高的位置。 当组织考虑应用程序编程接口 &#xff08;API&#xff09; 安全性时&#xff0c;他们通常专注于保护内部…

AssetBundle的正确加载

需求描述 在加载一个AssetBundle资源包&#xff08;后续简称AB包&#xff09;的时候我们还需要考虑其对应的依赖&#xff0c;所以加载AssetBundle资源包并非总是简单地调用相关的加载API即可&#xff0c;缺乏依赖那么AssetBundle资源包中的资源就无法正常加载或使用。 通过Asse…

Ubuntu防火墙设置

查看当前防火墙状态 设定信息端口号为12345的访问 sudo ufw allow 12345

自动化测试有必要学吗?一篇从功能测试进阶到自动化测试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 问题&#xff1a;…

vue视频直接播放rtsp流;vue视频延迟问题解决;webRTC占cpu太大卡死问题解决

播放多个视频 <div class"video-box"><div class"video"><iframe style"width:100%;height:100%;" name"ddddd" id"iframes" scrolling"auto" :src"videoLeftUrl"></iframe>&l…

【分享】国产AI工具大整理,都是好东西(赶紧看 待会儿删)

哈喽&#xff0c;大家好&#xff0c;我是木易巷~ 我认同一个观点&#xff0c;那就是未来的世界将会只存在两种人&#xff1a;会使用AI的人和不会使用AI的人。相信许多人已经开始感受到了“AI焦虑”&#xff0c;担心自己的技能将被AI超越。然而&#xff0c;我认为AI并不是人类的…

Linux进阶-ipc消息队列

目录 system-V IPC 消息队列 消息队列和信号管道的对比 消息队列和信号的对比 消息队列和管道的对比 消息队列函数API msgget()&#xff1a;打开或创建消息队列 msgsnd()&#xff1a;发送消息 msgrcv()&#xff1a;接收消息 msgctl()&#xff1a;控制消息队列 msgsn…

移动互联网客户端可能没什么路可走了.......

2010~2020可以算移动客户端的黄金十年了&#xff0c;微信、淘宝、抖音等国民级应用都诞生于这十年间&#xff0c;也顺带产生了不少技术上的黑科技&#xff08;比如动态化、跨平台、热修复&#xff09;。 然而现在头部公司的稳定&#xff0c;App独立生存的空间被不断挤压&#…

el-menu页面离开弹窗,当前激活菜单的高亮问题

问题描述 在A页面监控路由离开&#xff0c;&#xff0c;弹出弹窗后提示未保存点击取消&#xff0c;此时左侧的菜单激活是B高亮&#xff0c;正常应该是激活A菜单。 1&#xff0c;A页面页面离开的弹窗&#xff0c;在A页面弹窗点击取消 ##解决方法 1.在菜单组件增事件&#xf…

75.C++ STL queue容器

目录 1.什么是queue容器 2.queue的构造函数 3.存取、插入、删除操作 4.赋值操作 5.大小操作 以下是一个简单示例&#xff0c;演示如何使用 queue&#xff1a; 1.什么是queue容器 queue 是 C 标准库提供的队列容器&#xff0c;它是一个容器适配器&#xff0c;用于管理遵循…

如何管理前端状态?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

如何清理内存空间?几步操作轻松搞定!

电脑内存的清理是维护系统性能的重要步骤之一。如果电脑内存不足&#xff0c;可能会导致电脑运行卡顿、无法存入文件等各种问题。及时清理电脑内存非常重要。怎样清理电脑内存呢&#xff1f;怎么才能更高效的释放更多电脑内存呢&#xff1f;下面是三个常用的方法。 一、关闭不必…

实施03(文件夹共享和网络配置)

远程连接&#xff08;防火墙设置&#xff09;把远程端口打开新建规则 选择端口后&#xff0c;选择TCP&#xff0c;选择特定本地端口&#xff0c;输入我们需要开放的端口号下一步选择允许连接回车给开放的端口号取个名称回车就可以了 实现文件夹共享首先在任意盘符新建一个文件夹…

工控网络协议模糊测试:用peach对modbus协议进行模糊测试

0x00 背景 本人第一次在FB发帖&#xff0c;进入工控安全行业时间不算很长&#xff0c;可能对模糊测试见解出现偏差&#xff0c;请见谅。 在接触工控安全这一段时间内&#xff0c;对于挖掘工控设备的漏洞&#xff0c;必须对工控各种协议有一定的了解&#xff0c;然后对工控协议…

攀岩绳上亚马逊合规认证EN892测试标准

攀岩绳 攀岩绳是与攀岩安全带和锚点相连的一种装备&#xff0c;用于保护攀岩者&#xff0c;使其不会从高处跌落。攀岩绳由承重内芯和围绕内芯编织的护套组成。 亚马逊关于攀岩绳的政策 根据亚马逊的要求&#xff0c;所有攀岩绳均应经过检测&#xff0c;并且符合下列特定法规或…