做有弹幕视频网站,dede网站建设步骤,初学者做电商怎么入手,建设部标准网站文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码2.查询小区信息代码3.保存缴费信息代码 一、项目演示
项目演示地址#xff1a; 视频地址
二、项目介绍
项目描述#xff1a;这是一个基于SpringBootVue框架开发的小区物业管理系统。首先#xf… 文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码2.查询小区信息代码3.保存缴费信息代码 一、项目演示
项目演示地址 视频地址
二、项目介绍
项目描述这是一个基于SpringBootVue框架开发的小区物业管理系统。首先这是一个前后端分离的项目代码简洁规范注释说明详细易于理解和学习。其次这项目功能丰富具有一个小区物业管理系统该有的所有功能。
项目功能此项目分为三个角色业主、物业员工和管理员。业主有登录、管理个人信息、查看物业员工和管理员信息、查看所属小区信息、查询个人房屋信息、查看所属小区的车位信息、查看个人缴费信息、支付缴费、查看所属小区公告信息、管理个人维修信息、管理个人投诉信息、查看个人数据统计等等功能。物业员工有登录、管理所属小区的业主信息、管理个人信息、查看管理员信息、查看所属小区信息、管理所属小区的楼栋信息和房屋信息、管理所属小区的车位信息、管理所属小区业主的缴费信息、管理个人发布的公告信息、受理所属小区业主的维修、投诉信息、查看所属小区数据统计等等功能。管理员有登录、管理个人信息、管理所有业主信息、管理所有物业员工信息、管理所有小区信息、管理所有楼栋、房屋信息、管理所有车位信息、管理所有缴费信息。管理所有公告信息、管理所有维修信息、管理所有投诉信息、查看数据统计等等功能。
应用技术SpringBoot Vue3 MySQL MyBatis Redis ElementUI-Plus XXL-JOB
运行环境IntelliJ IDEA2019.3.5 MySQL5.7项目压缩包中自带) Redis5.0.5项目压缩包中自带 JDK1.8 Maven3.6.3项目压缩包中自带 Node14.16.1项目压缩包中自带
三、运行截图 四、主要代码
1.用户登录代码 /*** 用户登录操作* param userDTO* return*/Overridepublic ResponseDTOUserDTO login(UserDTO userDTO) {// 进行是否为空判断if(CommonUtil.isEmpty(userDTO.getPhone())){return ResponseDTO.errorByMsg(CodeMsg.PHONE_EMPTY);}if(CommonUtil.isEmpty(userDTO.getPassword())){return ResponseDTO.errorByMsg(CodeMsg.PASSWORD_EMPTY);}// 对比昵称和密码是否正确UserExample userExample new UserExample();userExample.createCriteria().andPhoneEqualTo(userDTO.getPhone()).andPasswordEqualTo(userDTO.getPassword()).andRoleIdEqualTo(userDTO.getRoleId());ListUser userList userMapper.selectByExample(userExample);if(userList null || userList.size() ! 1){return ResponseDTO.errorByMsg(CodeMsg.PHONE_PASSWORD_ERROR);}// 生成登录token并存入Redis中UserDTO selectedUserDTO CopyUtil.copy(userList.get(0), UserDTO.class);String token UuidUtil.getShortUuid();selectedUserDTO.setToken(token);//把token存入redis中 有效期1小时stringRedisTemplate.opsForValue().set(USER_ token, JSON.toJSONString(selectedUserDTO), 3600, TimeUnit.SECONDS);return ResponseDTO.successByMsg(selectedUserDTO, 登录成功);}2.查询小区信息代码 /*** 分页获取小区数据* param pageDTO* return*/Overridepublic ResponseDTOPageDTODistrictDTO getDistrictList(PageDTODistrictDTO pageDTO) {DistrictExample districtExample new DistrictExample();// 不知道当前页多少默认为第一页if(pageDTO.getPage() null){pageDTO.setPage(1);}// 不知道每页多少条记录默认为每页5条记录if(pageDTO.getSize() null){pageDTO.setSize(5);}DistrictExample.Criteria c1 districtExample.createCriteria();if(pageDTO.getParam() ! null) {DistrictDTO districtDTO pageDTO.getParam();if(!CommonUtil.isEmpty(districtDTO.getName())) {c1.andNameLike(% districtDTO.getName() %);}if(!CommonUtil.isEmpty(districtDTO.getLocation())) {c1.andLocationLike(% districtDTO.getLocation() %);}if(!CommonUtil.isEmpty(districtDTO.getId())) {c1.andIdEqualTo(districtDTO.getId());}}PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出小区数据ListDistrict districtList districtMapper.selectByExample(districtExample);PageInfoDistrict pageInfo new PageInfo(districtList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 将domain类型数据 转成 DTO类型数据ListDistrictDTO districtDTOList CopyUtil.copyList(districtList, DistrictDTO.class);for(DistrictDTO districtDTO : districtDTOList) {// 查询此小区的楼栋数BuildingExample buildingExample new BuildingExample();buildingExample.createCriteria().andDistrictIdEqualTo(districtDTO.getId());ListBuilding buildingList buildingMapper.selectByExample(buildingExample);int buildingTotal (int) buildingList.stream().map(Building::getName).distinct().count();districtDTO.setBuildingTotal(buildingTotal);// 查询此小区的房屋数ListString buildingIdList buildingList.stream().map(Building::getId).collect(Collectors.toList());if(buildingIdList.size() 0) {HouseExample houseExample new HouseExample();houseExample.createCriteria().andBuildingIdIn(buildingIdList);int houseTotal houseMapper.selectByExample(houseExample).size();districtDTO.setHouseTotal(houseTotal);} else {districtDTO.setHouseTotal(0);}// 查询此小区的车位数ParkingExample parkingExample new ParkingExample();parkingExample.createCriteria().andDistrictIdEqualTo(districtDTO.getId());districtDTO.setParkingTotal(parkingMapper.selectByExample(parkingExample).size());}pageDTO.setList(districtDTOList);return ResponseDTO.success(pageDTO);}3.保存缴费信息代码 /*** 保存缴费信息* param feeDTO* return*/Overridepublic ResponseDTOBoolean saveFee(FeeDTO feeDTO) {// 进行统一表单验证CodeMsg validate ValidateEntityUtil.validate(feeDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}Fee fee CopyUtil.copy(feeDTO, Fee.class);User user userMapper.selectByPrimaryKey(fee.getUserId());if(user null) {return ResponseDTO.errorByMsg(CodeMsg.USER_NOT_EXIST);}// 准备创建xxl-job任务DefaultXxlJobAddParam defaultXxlJobAddParam new DefaultXxlJobAddParam();defaultXxlJobAddParam.setAuthor(杨杨吖);defaultXxlJobAddParam.setJobDesc(缴费逾期罚金处理任务);defaultXxlJobAddParam.setExecutorHandler(feeHandler);Calendar calendar Calendar.getInstance();if(fee.getDeadTime() ! null) {calendar.setTime(fee.getDeadTime());int day calendar.get(Calendar.DAY_OF_MONTH);
// defaultXxlJobAddParam.setScheduleConf(0/0 0/0 0/0 day /1 * ?);defaultXxlJobAddParam.setScheduleConf(0/0 0/0 0/0 * * ?);}if(CommonUtil.isEmpty(fee.getId())) {// 添加操作fee.setId(UuidUtil.getShortUuid());fee.setCreateTime(new Date());if(fee.getDeadTime() ! null) {defaultXxlJobAddParam.setExecutorParam(fee.getId());Integer taskId xxlJobService.add(defaultXxlJobAddParam);xxlJobService.start(taskId);fee.setTaskId(String.valueOf(taskId));}if(feeMapper.insertSelective(fee) 0) {return ResponseDTO.errorByMsg(CodeMsg.FEE_ADD_ERROR);}} else {// 修改操作Fee feeDB feeMapper.selectByPrimaryKey(fee.getId());if(!FeeStateEnum.PAYED.getCode().equals(feeDB.getState()) FeeStateEnum.PAYED.getCode().equals(fee.getState())) {fee.setPayTime(new Date());xxlJobService.remove(Integer.parseInt(feeDB.getTaskId()));}if(feeDB.getDeadTime().getTime() ! fee.getDeadTime().getTime()) {defaultXxlJobAddParam.setExecutorParam(feeDB.getId());Integer taskId xxlJobService.add(defaultXxlJobAddParam);xxlJobService.start(taskId);fee.setTaskId(String.valueOf(taskId));}if(feeMapper.updateByPrimaryKeySelective(fee) 0) {return ResponseDTO.errorByMsg(CodeMsg.FEE_EDIT_ERROR);}}return ResponseDTO.successByMsg(true, 保存成功);}