mitao
2025-02-26 b37f92c1f5bea036b13af38d82a0fa9ca690eb3b
三个身边
2个文件已修改
143个文件已添加
6460 ■■■■■ 已修改文件
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/sangeshenbian/SystemUserVo.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/sangeshenbian/SystemUserService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/pom.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/pom.xml 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/ServiceSangeshenbianApplication.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/annotation/DistributedLock.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/BannerController.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/DepartmentController.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/MessageNotificationController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ProblemTypeController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemMenuController.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemPostController.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemRoleController.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/WorkOrderItemConfigController.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/aspectj/DistributedLockAspect.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/MyMetaObjectHandler.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/MybatisPlusConfig.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/RedissonConfig.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/SwaggerConfig.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/BcRegionController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComActController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComStreetController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintAuditRecordController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintFlowController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintProgressController.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/HomeController.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/BannerMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/BcRegionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComActMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComStreetMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintAuditRecordMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintFlowMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintMapper.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintProgressMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/DepartmentMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/MessageNotificationMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ProblemTypeMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemMenuMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemPostMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemRoleMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemRoleMenuMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemUserMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/WorkOrderItemConfigMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/AuditStatusEnum.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/ProcessStatusEnum.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/ReportTypeEnum.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintCompletionDTO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDelayAuditDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDelayDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDispatch.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintProcessDTO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintReporAuditDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintReportDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Banner.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/BcRegion.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComAct.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComStreet.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintFlow.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintProgress.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Department.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/MessageNotification.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ProblemType.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemMenu.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemPost.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemRole.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemRoleMenu.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemUser.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/WorkOrderItemConfig.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/BasePage.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintQuery.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintTodoVO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintVO.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/DispatchVO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/MessageNotificationVO.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/PartyCardInfoVO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/ComplaintTasks.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IBannerService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IBcRegionService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComActService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComStreetService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintAuditRecordService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintFlowService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintProgressService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IDepartmentService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IMessageNotificationService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IProblemTypeService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemMenuService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemPostService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemRoleMenuService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemRoleService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemUserService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IWorkOrderItemConfigService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/BannerServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/BcRegionServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComActServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComStreetServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintAuditRecordServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintFlowServiceImpl.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintProgressServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java 529 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/DepartmentServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/MessageNotificationServiceImpl.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ProblemTypeServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemMenuServiceImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemPostServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemRoleMenuServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemRoleServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemUserServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/WorkOrderItemConfigServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/AddSystemRole.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/EditSystemRole.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/LoginVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/MessageNotificationList.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleInfo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleList.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleListVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemUserList.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemUserListVo.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/TokenVo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/bootstrap.yml 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/logback-spring.xml 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/BannerMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/BcRegionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComActMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComStreetMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintAuditRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintFlowMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintMapper.xml 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintProgressMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/DepartmentMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/MessageNotificationMapper.xml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ProblemTypeMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemMenuMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemPostMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemRoleMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemRoleMenuMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemUserMapper.xml 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/WorkOrderItemConfigMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/test/java/com/panzhihua/ServiceSangeshenbianApplicationTest.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/model/vos/sangeshenbian/SystemUserVo.java
New file
@@ -0,0 +1,118 @@
package com.panzhihua.common.model.vos.sangeshenbian;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.Set;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 0:28
 */
@Data
public class SystemUserVo {
    /**
     * 主键
     */
    @ApiModelProperty(value = "数据ID")
    private Integer id;
    /**
     * 姓名
     */
    @ApiModelProperty(value = "姓名", required = true)
    private String name;
    /**
     * 手机号
     */
    @ApiModelProperty(value = "手机号", required = true)
    private String phone;
    /**
     * 密码
     */
    @ApiModelProperty(value = "密码", required = true)
    private String password;
    /**
     * 一级单位id
     */
    @ApiModelProperty(value = "一级单位id", required = true)
    private Integer oneDepartmentId;
    /**
     * 二级单位id
     */
    @ApiModelProperty(value = "二级单位id")
    private Integer twoDepartmentId;
    /**
     * 三级单位id
     */
    @ApiModelProperty(value = "三级单位id")
    private Integer threeDepartmentId;
    /**
     * 四级单位id
     */
    @ApiModelProperty(value = "四级单位id")
    private Integer fourDepartmentId;
    /**
     * 是否是管理员(0=否,1=是)
     */
    @ApiModelProperty(value = "是否是管理员(0=否,1=是)", required = true)
    private Integer isAdmin;
    /**
     * 职位id
     */
    @ApiModelProperty(value = "职位id", required = true)
    private Integer systemPostId;
    /**
     * 角色id
     */
    @ApiModelProperty(value = "角色id", required = true)
    private Integer systemRoleId;
    /**
     * 账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)
     */
    @ApiModelProperty(value = "账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)", required = true)
    private Integer accountLevel;
    /**
     * 所属区县
     */
    @ApiModelProperty(value = "所属区县")
    private String districts;
    /**
     * 区县编号
     */
    @ApiModelProperty(value = "区县编号")
    private String districtsCode;
    /**
     * 街道
     */
    @ApiModelProperty(value = "街道")
    private String street;
    /**
     * 街道编号
     */
    @ApiModelProperty(value = "街道编号")
    private String streetCode;
    /**
     * 社区
     */
    @ApiModelProperty(value = "社区")
    private String community;
    /**
     * 社区编号
     */
    @ApiModelProperty(value = "社区编号")
    private String communityCode;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    private Integer status;
    /**
     * 添加时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime createTime;
    @ApiModelProperty("权限集合")
    private Set<String> permissions;
}
springcloud_k8s_panzhihuazhihuishequ/common/src/main/java/com/panzhihua/common/service/sangeshenbian/SystemUserService.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.common.service.sangeshenbian;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 0:14
 */
@FeignClient(name = "huacheng-sangeshenbian")
public interface SystemUserService {
    /**
     *
     * @param id
     *            用户的ID
     * @return 用户所有角色
     */
    @PostMapping("/systemUser/getUserById")
    R<SystemUserVo> getUserById(@RequestParam("id") String id);
}
springcloud_k8s_panzhihuazhihuishequ/pom.xml
@@ -233,6 +233,8 @@
        <module>service_dlz</module>
        <module>service_bracelet</module>
        <module>service_jinhui_community</module>
        <!--三个身边-->
        <module>service_sangeshenbian</module>
    </modules>
    <packaging>pom</packaging>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/pom.xml
New file
@@ -0,0 +1,176 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.panzhihua</groupId>
        <artifactId>zhihuishequ</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <groupId>com.panzhihua</groupId>
    <artifactId>service_sangeshenbian</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>server_sangeshenbian</name>
    <description>三个身边</description>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.netflix.hystrix</groupId>
            <artifactId>hystrix-javanica</artifactId>
        </dependency>
        <!--jsoup爬虫爬取网页 -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.13.1</version>
        </dependency>
        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson</artifactId>
            <version>3.10.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.panzhihua</groupId>
            <artifactId>common</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>org.springframework.boot</groupId>-->
<!--            <artifactId>spring-boot-starter-amqp</artifactId>-->
<!--        </dependency>-->
        <!--添加监控依赖包-->
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-prometheus</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!-- zxing生成二维码 -->
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>core</artifactId>
            <version>3.3.3</version>
        </dependency>
        <!-- lbs附近定位 -->
        <dependency>
            <groupId>com.spatial4j</groupId>
            <artifactId>spatial4j</artifactId>
            <version>0.5</version>
        </dependency>
        <!--        微信小程序-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-miniapp</artifactId>
            <version>3.9.9.B</version>
        </dependency>
        <dependency>
            <groupId>com.google.zxing</groupId>
            <artifactId>javase</artifactId>
            <version>3.3.3</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.0</version>
                <configuration>
                    <mainClass>com.panzhihua.service_community.ServiceCommunityApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <configuration>
                    <imageName>registry.cn-chengdu.aliyuncs.com/panzhihua/service_community:v1</imageName>
                    <serverId></serverId>
                    <baseImage>java</baseImage>
                    <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
    </repositories>
</project>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/ServiceSangeshenbianApplication.java
New file
@@ -0,0 +1,28 @@
package com.panzhihua.sangeshenbian;
import org.springframework.boot.SpringApplication;
import org.springframework.cloud.client.SpringCloudApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableScheduling;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
 * Hello world!
 *
 */
@SpringCloudApplication
@EnableSwagger2
@EnableFeignClients(basePackages = {"com.panzhihua.common.service"})
@EnableEurekaClient
@EnableCircuitBreaker
@ComponentScan({"com.panzhihua.sangeshenbian", "com.panzhihua.common"})
@EnableScheduling
public class ServiceSangeshenbianApplication
{
    public static void main(String[] args) {
        SpringApplication.run(ServiceSangeshenbianApplication.class, args);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/annotation/DistributedLock.java
New file
@@ -0,0 +1,34 @@
package com.panzhihua.sangeshenbian.annotation;
import java.lang.annotation.*;
/**
 * @Descreption: 分布式锁注解
 * @Author: lfl
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DistributedLock {
    /**
     * 锁名字(没有EL解析)
     */
    String lockName() default "";
    /**
     * 锁前缀(有EL解析)
     */
    String lockNamePre() default "";
    /**
     * 锁后缀(有EL解析)
     */
    String lockNamePost() default "";
    /**
     * 锁前后缀拼接分隔符
     */
    String separator() default "_";
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/BannerController.java
New file
@@ -0,0 +1,106 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.Banner;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IBannerService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:46
 */
@Api
@RestController
@RequestMapping("/banner")
public class BannerController extends BaseController {
    @Resource
    private IBannerService bannerService;
    @Resource
    private ISystemUserService systemUserService;
    @GetMapping("/list")
    @ApiOperation(value = "获取banner列表", tags = {"三个身边后台-banner管理"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取banner列表")
    public R<IPage<Banner>> list(String name, Integer pageNum, Integer pageSize){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.ok();
        }
        IPage<Banner> list = bannerService.list(name, pageNum, pageSize);
        return R.ok(list);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加banner", tags = {"三个身边后台-banner管理"})
    @OperLog(operModul = "三个身边后台",operType = 1, businessType = "添加banner")
    public R<Banner> add(@RequestBody Banner banner){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("添加失败");
        }
        banner.setDel(0);
        banner.setCreateTime(LocalDateTime.now());
        bannerService.save(banner);
        return R.ok(banner);
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑banner", tags = {"三个身边后台-banner管理"})
    @OperLog(operModul = "三个身边后台",operType = 2, businessType = "编辑banner")
    public R<Banner> edit(@RequestBody Banner banner){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("编辑失败");
        }
        bannerService.updateById(banner);
        return R.ok(banner);
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除banner", tags = {"三个身边后台-banner管理"})
    @OperLog(operModul = "三个身边后台",operType = 3, businessType = "删除banner")
    public R delete(@PathVariable("id") Integer id){
        Integer id1 = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id1);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("删除失败");
        }
        Banner banner = new Banner();
        banner.setId(id);
        banner.setDel(1);
        bannerService.updateById(banner);
        return R.ok();
    }
    @GetMapping("/getBannerInfo/{id}")
    @ApiOperation(value = "获取banner信息", tags = {"三个身边后台-banner管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "bannerID", required = true, dataType = "Integer")
    })
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取banner信息")
    public R<Banner> getBannerInfo(@PathVariable("id") Integer id){
        Banner banner = bannerService.getById(id);
        return R.ok(banner);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/DepartmentController.java
New file
@@ -0,0 +1,128 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.Department;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IDepartmentService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:44
 */
@Api
@RestController
@RequestMapping("/department")
public class DepartmentController {
    @Resource
    private IDepartmentService departmentService;
    @Resource
    private ISystemUserService systemUserService;
    @GetMapping("/list")
    @ApiOperation(value = "获取单位列表", tags = {"三个身边后台-用户管理"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取单位列表")
    public R<List<Department>> list(){
        List<Department> list = departmentService.list();
        List<Department> departmentList1 = list.stream().filter(s -> s.getPid() == 0).collect(Collectors.toList());
        for (Department department : departmentList1) {
            List<Department> departmentList2 = list.stream().filter(s -> s.getPid().equals(department.getId())).collect(Collectors.toList());
            for (Department department1 : departmentList2) {
                List<Department> departmentList3 = list.stream().filter(s -> s.getPid().equals(department1.getId())).collect(Collectors.toList());
                for (Department department2 : departmentList3) {
                    List<Department> departmentList4 = list.stream().filter(s -> s.getPid().equals(department2.getId())).collect(Collectors.toList());
                    department2.setChild(departmentList4);
                }
                department1.setChild(departmentList3);
            }
            department.setChild(departmentList2);
        }
        return R.ok(departmentList1);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加单位信息", tags = {"三个身边后台-用户管理"})
    @OperLog(operModul = "三个身边后台",operType = 1, businessType = "添加单位信息")
    public R add(@RequestBody Department department){
        if(null == department.getPid()){
            department.setPid(0);
        }
        long count = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getPid, department.getPid()).eq(Department::getName, department.getName()));
        if(0 < count){
            return R.fail("单位名称重复。");
        }
        Department department1 = departmentService.getById(department.getPid());
        if(null != department1 && 4 == department1.getTier()){
            return R.fail("层级超过4级,保存失败。");
        }
        department.setTier(null == department1 ? 1 : department1.getTier() + 1);
        departmentService.save(department);
        return R.ok();
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑单位信息", tags = {"三个身边后台-用户管理"})
    @OperLog(operModul = "三个身边后台",operType = 2, businessType = "编辑单位信息")
    public R edit(@RequestBody Department department){
        if(null == department.getPid()){
            department.setPid(0);
        }
        long count = departmentService.count(new LambdaQueryWrapper<Department>().eq(Department::getPid, department.getPid())
                .eq(Department::getName, department.getName()).ne(Department::getId, department.getId()));
        if(0 < count){
            return R.fail("单位名称重复。");
        }
        Department department1 = departmentService.getById(department.getPid());
        if(null != department1 && 4 == department1.getTier()){
            return R.fail("层级超过4级,保存失败。");
        }
        department.setTier(null == department1 ? 1 : department1.getTier() + 1);
        departmentService.updateById(department);
        return R.ok();
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除单位信息", tags = {"三个身边后台-用户管理"})
    @OperLog(operModul = "三个身边后台",operType = 3, businessType = "删除单位信息")
    public R delete(@PathVariable("id") Integer id){
        long count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getOneDepartmentId, id).or().eq(SystemUser::getTwoDepartmentId, id)
                .or().eq(SystemUser::getThreeDepartmentId, id).or().eq(SystemUser::getFourDepartmentId, id).ne(SystemUser::getStatus, 3));
        if(0 < count){
            return R.fail("该单位已被使用,删除失败。");
        }
        departmentService.removeById(id);
        return R.ok();
    }
    @GetMapping("/getDepartmentList/{tier}")
    @ApiOperation(value = "根据单位层级查询单位数据", tags = {"三个身边后台-用户管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "tier", value = "单位层级", required = true, dataType = "Integer")
    })
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "根据单位层级查询单位数据")
    public R<List<Department>> getDepartmentList(@PathVariable("tier") Integer tier){
        List<Department> list = departmentService.list(new LambdaQueryWrapper<Department>().eq(Department::getTier, tier));
        return R.ok(list);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/MessageNotificationController.java
New file
@@ -0,0 +1,110 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.MessageNotification;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IMessageNotificationService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.MessageNotificationList;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 3:05
 */
@Api
@RestController
@RequestMapping("/messageNotification")
public class MessageNotificationController extends BaseController {
    @Resource
    private IMessageNotificationService messageNotificationService;
    @Resource
    private ISystemUserService systemUserService;
    @GetMapping("/list")
    @ApiOperation(value = "获取消息通知列表", tags = {"三个身边后台-消息通知"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取消息通知列表")
    public R<IPage<MessageNotification>> list(MessageNotificationList query) {
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        switch (systemUser.getAccountLevel()){
            case 1:
                query.setUserId("510400");
                break;
            case 2:
                query.setUserId(systemUser.getDistrictsCode());
                break;
            case 3:
                query.setUserId(systemUser.getStreetId().toString());
                break;
            case 4:
                query.setUserId(systemUser.getCommunityId().toString());
                break;
            case 5:
                query.setUserId(id.toString());
                break;
        }
        query.setUndertakerType(systemUser.getAccountLevel());
        IPage<MessageNotification> page = messageNotificationService.list(query);
        return R.ok(page);
    }
    @PutMapping("/read/{id}")
    @ApiOperation(value = "标记为已读", tags = {"三个身边后台-消息通知"})
    @OperLog(operModul = "三个身边后台",operType = 2, businessType = "标记为已读")
    public R read(@PathVariable("id") Integer id) {
        MessageNotification messageNotification = messageNotificationService.getById(id);
        if(messageNotification.getReadStatus()==1){
            return R.fail("不能重复操作");
        }
        messageNotification.setReadStatus(1);
        messageNotificationService.updateById(messageNotification);
        return R.ok();
    }
    @GetMapping("/unreadCount")
    @ApiOperation(value = "获取未读数量", tags = {"三个身边后台-消息通知"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取未读数量")
    public R unreadCount() {
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        String userId = null;
        switch (systemUser.getAccountLevel()){
            case 1:
                userId = "510400";
                break;
            case 2:
                userId = systemUser.getDistrictsCode();
                break;
            case 3:
                userId = systemUser.getStreetId().toString();
                break;
            case 4:
                userId = systemUser.getCommunityId().toString();
                break;
            case 5:
                userId = id.toString();
                break;
        }
        long count = messageNotificationService.lambdaQuery()
                .eq(MessageNotification::getReadStatus, 0)
                .eq(MessageNotification::getUndertakerType, systemUser.getAccountLevel())
                .eq(MessageNotification::getUndertakerUserId, userId)
                .count();
        return R.ok(count);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/ProblemTypeController.java
New file
@@ -0,0 +1,117 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.ProblemType;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IProblemTypeService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:27
 */
@Api
@RestController
@RequestMapping("/problemType")
public class ProblemTypeController extends BaseController {
    @Resource
    private IProblemTypeService problemTypeService;
    @Resource
    private ISystemUserService systemUserService;
    @GetMapping("/list")
    @ApiOperation(value = "获取问题类型列表", tags = {"三个身边后台-问题类型管理"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取问题类型列表")
    public R<IPage<ProblemType>> list(String name, Integer pageNum, Integer pageSize){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.ok();
        }
        IPage<ProblemType> list = problemTypeService.list(name, pageNum, pageSize);
        return R.ok(list);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加问题类型", tags = {"三个身边后台-问题类型管理"})
    @OperLog(operModul = "三个身边后台",operType = 1, businessType = "添加问题类型")
    public R add(@RequestBody ProblemType problemType){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("添加失败");
        }
        long count = problemTypeService.count(new LambdaQueryWrapper<ProblemType>().eq(ProblemType::getName, problemType.getName()).eq(ProblemType::getDel, 0));
        if(0 < count){
            return R.fail("该问题类型已存在");
        }
        problemType.setDel(0);
        problemType.setCreateTime(LocalDateTime.now());
        problemTypeService.save(problemType);
        return R.ok();
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑问题类型", tags = {"三个身边后台-问题类型管理"})
    @OperLog(operModul = "三个身边后台",operType = 2, businessType = "编辑问题类型")
    public R edit(@RequestBody ProblemType problemType){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(id);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("编辑失败");
        }
        long count = problemTypeService.count(new LambdaQueryWrapper<ProblemType>().eq(ProblemType::getName, problemType.getName()).eq(ProblemType::getDel, 0).ne(ProblemType::getId, problemType.getId()));
        if(0 < count){
            return R.fail("该问题类型已存在");
        }
        problemTypeService.updateById(problemType);
        return R.ok();
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除问题类型", tags = {"三个身边后台-问题类型管理"})
    @OperLog(operModul = "三个身边后台",operType = 3, businessType = "删除问题类型")
    public R delete(@PathVariable("id") Integer id){
        Integer userid = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser systemUser = systemUserService.getById(userid);
        if(systemUser.getAccountLevel() != 1){
            return R.fail("删除失败");
        }
        ProblemType problemType = new ProblemType();
        problemType.setId(id);
        problemType.setDel(1);
        problemTypeService.updateById(problemType);
        return R.ok();
    }
    @GetMapping("/getProblemTypeInfo/{id}")
    @ApiOperation(value = "获取问题类型信息", tags = {"三个身边后台-问题类型管理"})
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "问题类型ID", required = true, dataType = "Integer")
    })
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取问题类型信息")
    public R<ProblemType> getProblemTypeInfo(@PathVariable("id") Integer id){
        ProblemType problemType = problemTypeService.getById(id);
        return R.ok(problemType);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemMenuController.java
New file
@@ -0,0 +1,34 @@
package com.panzhihua.sangeshenbian.api;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
import com.panzhihua.sangeshenbian.service.ISystemMenuService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 1:22
 */
@Api
@RestController
@RequestMapping("/systemMenu")
public class SystemMenuController {
    @Resource
    private ISystemMenuService systemMenuService;
    @GetMapping("/getSystemMenuList")
    @ApiOperation(value = "获取菜单列表", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 0, businessType = "获取菜单列表")
    public R<List<SystemMenu>> getSystemMenuList(){
        return R.ok(systemMenuService.getSystemMenuList());
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemPostController.java
New file
@@ -0,0 +1,59 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.SystemPost;
import com.panzhihua.sangeshenbian.service.ISystemPostService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @author zhibing.pu
 * @Date 2025/2/25 19:44
 */
@Api
@RestController
@RequestMapping("/systemPost")
public class SystemPostController {
    @Resource
    private ISystemPostService systemPostService;
    @PostMapping("/add")
    @ApiOperation(value = "添加职位", tags = {"三个身边后台-职位管理"})
    @OperLog(operModul = "三个身边后台",operType = 1,businessType = "添加职位")
    public R add(@RequestBody SystemPost systemPost) {
        systemPostService.save(systemPost);
        return R.ok();
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑职位", tags = {"三个身边后台-职位管理"})
    @OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑职位")
    public R edit(@RequestBody SystemPost systemPost) {
        systemPostService.updateById(systemPost);
        return R.ok();
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除职位", tags = {"三个身边后台-职位管理"})
    @OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除职位")
    public R delete(@PathVariable("id") Integer id) {
        systemPostService.removeById(id);
        return R.ok();
    }
    @GetMapping("/list")
    @ApiOperation(value = "获取列表数据", tags = {"三个身边后台-职位管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取职位列表数据")
    public R<IPage<SystemPost>> list(String name, Integer pageNum, Integer pageSize) {
        return R.ok(systemPostService.list(name, pageNum, pageSize));
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemRoleController.java
New file
@@ -0,0 +1,132 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.SystemRole;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
import com.panzhihua.sangeshenbian.service.ISystemRoleMenuService;
import com.panzhihua.sangeshenbian.service.ISystemRoleService;
import com.panzhihua.sangeshenbian.warpper.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:41
 */
@Api
@RestController
@RequestMapping("/systemRole")
public class SystemRoleController extends BaseController {
    @Resource
    private ISystemRoleService systemRoleService;
    @Resource
    private ISystemRoleMenuService systemRoleMenuService;
    @GetMapping("/list")
    @ApiOperation(value = "获取列表数据", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取角色列表数据")
    public R<IPage<SystemRoleListVo>> list(SystemRoleList systemRoleList){
        IPage<SystemRoleListVo> list = systemRoleService.list(systemRoleList);
        return R.ok(list);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加角色", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 1,businessType = "添加角色")
    public R add(@RequestBody AddSystemRole addSystemRole){
        long count = systemRoleService.count(new LambdaQueryWrapper<SystemRole>().eq(SystemRole::getDel, 0).eq(SystemRole::getName, addSystemRole.getName()));
        if(0 < count){
            return R.fail("该角色名称已存在");
        }
        SystemRole systemRole = new SystemRole();
        systemRole.setName(addSystemRole.getName());
        systemRole.setDel(0);
        systemRole.setCreateTime(LocalDateTime.now());
        systemRoleService.save(systemRole);
        //添加角色菜单权限
        List<Integer> systemMenuIds = addSystemRole.getSystemMenuIds();
        for (Integer systemMenuId : systemMenuIds) {
            SystemRoleMenu systemRoleMenu = new SystemRoleMenu();
            systemRoleMenu.setSystemRoleId(systemRole.getId());
            systemRoleMenu.setSystemMenuId(systemMenuId);
            systemRoleMenuService.save(systemRoleMenu);
        }
        return R.ok();
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑角色", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑角色")
    public R edit(@RequestBody EditSystemRole editSystemRole){
        long count = systemRoleService.count(new LambdaQueryWrapper<SystemRole>().eq(SystemRole::getDel, 0)
                .eq(SystemRole::getName, editSystemRole.getName()).ne(SystemRole::getId, editSystemRole.getId()));
        if(0 < count){
            return R.fail("该角色名称已存在");
        }
        SystemRole systemRole = systemRoleService.getById(editSystemRole.getId());
        if(null == systemRole){
            return R.fail("无效的角色数据");
        }
        systemRole.setName(editSystemRole.getName());
        systemRoleService.updateById(systemRole);
        //添加角色菜单权限
        systemRoleMenuService.remove(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, editSystemRole.getId()));
        List<Integer> systemMenuIds = editSystemRole.getSystemMenuIds();
        for (Integer systemMenuId : systemMenuIds) {
            SystemRoleMenu systemRoleMenu = new SystemRoleMenu();
            systemRoleMenu.setSystemRoleId(systemRole.getId());
            systemRoleMenu.setSystemMenuId(systemMenuId);
            systemRoleMenuService.save(systemRoleMenu);
        }
        return R.ok();
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除角色", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除角色")
    public R delete(@PathVariable("id") Integer id){
        SystemRole systemRole = systemRoleService.getById(id);
        systemRole.setDel(1);
        systemRoleService.updateById(systemRole);
        //删除角色菜单权限
        systemRoleMenuService.remove(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, id));
        return R.ok();
    }
    @GetMapping("/getSystemRoleInfo/{id}")
    @ApiOperation(value = "获取角色详情", tags = {"三个身边后台-角色管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取角色详情")
    public R<SystemRoleInfo> getSystemRoleInfo(@PathVariable("id") Integer id){
        SystemRole systemRole = systemRoleService.getById(id);
        if(null == systemRole){
            return R.fail("无效的角色数据");
        }
        List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, id));
        SystemRoleInfo systemRoleInfo = new SystemRoleInfo();
        systemRoleInfo.setId(systemRole.getId());
        systemRoleInfo.setName(systemRoleInfo.getName());
        systemRoleInfo.setSystemMenuIds(list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList()));
        return R.ok(systemRoleInfo);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/SystemUserController.java
New file
@@ -0,0 +1,246 @@
package com.panzhihua.sangeshenbian.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.LoginReturnVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.service.auth.TokenService;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.ISystemMenuService;
import com.panzhihua.sangeshenbian.service.ISystemRoleMenuService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.LoginVo;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import com.panzhihua.sangeshenbian.warpper.TokenVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:30
 */
@Api
@RestController
@RequestMapping("/systemUser")
public class SystemUserController extends BaseController {
    @Resource
    private ISystemUserService systemUserService;
    @Resource
    private RedisTemplate redisTemplate;
    @Resource
    private TokenService tokenService;
    private final Integer max_err = 5;
    @Resource
    private ISystemRoleMenuService systemRoleMenuService;
    @Resource
    private ISystemMenuService systemMenuService;
    @PostMapping("/login")
    @ApiOperation(value = "登录", tags = {"三个身边后台-登录"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "登录")
    public R<TokenVo> login(@RequestBody LoginVo vo){
        String key = "login:" + vo.getPhone();
        Integer size = (Integer) redisTemplate.opsForValue().get(key);
        if(null != size && max_err.equals(size)){
            return R.fail("连续登录失败,请稍后重试。");
        }
        if(null == size){
            size = 0;
        }
        SystemUser systemUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>()
                .eq(SystemUser::getPhone, vo.getPhone()).ne(SystemUser::getStatus, 3));
        if(null == systemUser){
            size++;
            redisTemplate.opsForValue().set(key, size, 5, TimeUnit.MINUTES);
            return R.fail("登录失败,手机号/密码错误。");
        }
        if(!vo.getPassword().equals(systemUser.getPassword())){
            size++;
            redisTemplate.opsForValue().set(key, size, 5, TimeUnit.MINUTES);
            return R.fail("登录失败,手机号/密码错误。");
        }
        if(2 == systemUser.getStatus()){
            return R.fail("当前账号已冻结。");
        }
        //创建token
        R<LoginReturnVO> reult = tokenService.loginThreeAround(systemUser.getId());
        redisTemplate.delete(key);
        LoginReturnVO loginReturnVO = reult.getData();
        TokenVo tokenVo = new TokenVo();
        BeanUtils.copyProperties(loginReturnVO, tokenVo);
        List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, systemUser.getSystemRoleId()));
        List<Integer> collect = list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList());
        Set<String> collect1 = new HashSet<>();
        if(collect.size() > 0){
            List<SystemMenu> systemMenus = systemMenuService.listByIds(collect);
            collect1 = systemMenus.stream().map(SystemMenu::getUrl).collect(Collectors.toSet());
        }
        tokenVo.setMenu(collect1);
        tokenVo.setName(systemUser.getName());
        return R.ok(tokenVo);
    }
    @PostMapping("logout")
    @ApiOperation(value = "退出登录", tags = {"三个身边后台-登录"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "退出登录")
    public R login() {
        String token = this.getToken();
        if (ObjectUtils.isEmpty(token)) {
            return R.ok();
        }
        return tokenService.logout(token);
    }
    @GetMapping("/list")
    @ApiOperation(value = "获取列表数据", tags = {"三个身边管理后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取人员管理列表数据")
    public R<IPage<SystemUserListVo>> list(SystemUserList query){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser user = systemUserService.getById(id);
        IPage<SystemUserListVo> list = systemUserService.list(user.getAccountLevel(), query);
        return R.ok(list);
    }
    @PostMapping("/add")
    @ApiOperation(value = "添加人员", tags = {"三个身边管理后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 1,businessType = "添加人员")
    public R add(@RequestBody SystemUser systemUser){
        Integer id = this.getLoginUserInfoSanGeShenBian().getId();
        SystemUser user = systemUserService.getById(id);
        if(2 == user.getAccountLevel() && 1 == systemUser.getAccountLevel()){
            return R.fail("不能添加市级账号");
        }
        if(3 == user.getAccountLevel() && 3 < systemUser.getAccountLevel()){
            return R.fail("不能添加区县和市级账号");
        }
        if(4 == user.getAccountLevel() && 4 < systemUser.getAccountLevel()){
            return R.fail("不能添加街道、区县和市级账号");
        }
        long count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getPhone, systemUser.getPhone()).ne(SystemUser::getStatus, 3));
        if(0 < count){
            return R.fail("手机号重复。");
        }
        systemUser.setStatus(1);
        systemUser.setCreateTime(LocalDateTime.now());
        systemUserService.save(systemUser);
        return R.ok();
    }
    @PostMapping("/edit")
    @ApiOperation(value = "编辑人员", tags = {"三个身边后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 2,businessType = "编辑人员")
    public R edit(@RequestBody SystemUser systemUser){
        long count = systemUserService.count(new LambdaQueryWrapper<SystemUser>().eq(SystemUser::getPhone, systemUser.getPhone())
                .ne(SystemUser::getStatus, 3).ne(SystemUser::getId, systemUser.getId()));
        if(0 < count){
            return R.fail("手机号重复。");
        }
        systemUser.setStatus(1);
        systemUser.setCreateTime(LocalDateTime.now());
        systemUserService.updateById(systemUser);
        return R.ok();
    }
    @DeleteMapping("/delete/{id}")
    @ApiOperation(value = "删除人员", tags = {"三个身边后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 3,businessType = "删除人员")
    public R delete(@PathVariable("id") Integer id){
        SystemUser systemUser = systemUserService.getById(id);
        systemUser.setStatus(3);
        systemUserService.updateById(systemUser);
        return R.ok();
    }
    @GetMapping("/getSystemUserInfo/{id}")
    @ApiOperation(value = "查询人员详情", tags = {"三个身边后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "查询人员详情")
    public R<SystemUser> getSystemUserInfo(@PathVariable("id") Integer id){
        SystemUser systemUser = systemUserService.getById(id);
        return R.ok(systemUser);
    }
    @PutMapping("/freeze/{id}")
    @ApiOperation(value = "冻结账号", tags = {"三个身边后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "冻结账号")
    public R freeze(@PathVariable("id") Integer id){
        SystemUser systemUser = systemUserService.getById(id);
        if(2 == systemUser.getStatus()){
            return R.fail("不能重复操作");
        }
        systemUser.setStatus(2);
        systemUserService.updateById(systemUser);
        return R.ok();
    }
    @PutMapping("/unfreeze/{id}")
    @ApiOperation(value = "解冻账号", tags = {"三个身边后台-人员管理"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "解冻账号")
    public R unfreeze(@PathVariable("id") Integer id){
        SystemUser systemUser = systemUserService.getById(id);
        if(1 == systemUser.getStatus()){
            return R.fail("不能重复操作");
        }
        systemUser.setStatus(1);
        systemUserService.updateById(systemUser);
        return R.ok();
    }
    /**
     * 根据用户id获取信息
     * @param id
     * @return
     */
    @PostMapping("/getUserById")
    public R<SystemUserVo> getUserById(@RequestParam("id") String id){
        SystemUser systemUser = systemUserService.getById(id);
        SystemUserVo systemUserVo = new SystemUserVo();
        List<SystemRoleMenu> list = systemRoleMenuService.list(new LambdaQueryWrapper<SystemRoleMenu>().eq(SystemRoleMenu::getSystemRoleId, systemUser.getSystemRoleId()));
        List<Integer> collect = list.stream().map(SystemRoleMenu::getSystemMenuId).collect(Collectors.toList());
        Set<String> collect1 = new HashSet<>();
        if(collect.size() > 0){
            List<SystemMenu> systemMenus = systemMenuService.listByIds(collect);
            collect1 = systemMenus.stream().map(SystemMenu::getUrl).collect(Collectors.toSet());
        }
        systemUserVo.setPermissions(collect1);
        BeanUtils.copyProperties(systemUser, systemUserVo);
        return R.ok(systemUserVo);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/api/WorkOrderItemConfigController.java
New file
@@ -0,0 +1,42 @@
package com.panzhihua.sangeshenbian.api;
import com.panzhihua.common.interfaces.OperLog;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.model.entity.WorkOrderItemConfig;
import com.panzhihua.sangeshenbian.service.IWorkOrderItemConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:09
 */
@Api
@RestController
@RequestMapping("/workOrderItemConfig")
public class WorkOrderItemConfigController {
    @Resource
    private IWorkOrderItemConfigService workOrderItemConfigService;
    @GetMapping("/getWorkOrderItemConfigInfo")
    @ApiOperation(value = "获取工单事项配置", tags = {"三个身边后台-工单事项配置"})
    @OperLog(operModul = "三个身边后台",operType = 0,businessType = "获取工单事项配置")
    public R<WorkOrderItemConfig> getWorkOrderItemConfigInfo(){
        WorkOrderItemConfig one = workOrderItemConfigService.getOne(null);
        return R.ok(one);
    }
    @PostMapping("/addWorkOrderItemConfig")
    @ApiOperation(value = "保存工单事项配置", tags = {"三个身边后台-工单事项配置"})
    @OperLog(operModul = "三个身边后台",operType = 1,businessType = "保存工单事项配置")
    public R<WorkOrderItemConfig> add(@RequestBody WorkOrderItemConfig workOrderItemConfig){
        workOrderItemConfigService.saveOrUpdate(workOrderItemConfig);
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/aspectj/DistributedLockAspect.java
New file
@@ -0,0 +1,138 @@
package com.panzhihua.sangeshenbian.aspectj;
import com.panzhihua.sangeshenbian.annotation.DistributedLock;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.lang.reflect.Method;
import java.util.Objects;
/**
 * @Desecription: 分布式锁切面
 * 注意!!!分布式锁不能加在事务方法当中:因为当锁释放,事务还没有提交
 */
@Aspect
@Component
@Slf4j
public class DistributedLockAspect {
    @Resource
    private RedissonClient redissonClient;
    /**
     * @Descreption: 定义切面:以注解为切面
     */
    @Pointcut("@annotation(com.panzhihua.sangeshenbian.annotation.DistributedLock)")
    public void distributedLockAspect() {
    }
    @Around(value = "distributedLockAspect()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        //切点所在的类
        MethodSignature methodSignature = (MethodSignature) pjp.getSignature();
        Method method = methodSignature.getMethod();
        //
        DistributedLock annotation = method.getAnnotation(DistributedLock.class);
        String lockName = getLockName(annotation, pjp.getArgs(), method);
        //log.info("lockName:"+lockName);
        RLock lock = redissonClient.getLock(lockName);
        lock.lock();
        try {
            return pjp.proceed();
        } finally {
            if (lock.isLocked() && lock.isHeldByCurrentThread()) {
                //释放锁
                lock.unlock();
            }
        }
    }
    /**
     * @Descreption: 获取锁名字,优先获取注解中锁名
     */
    private String getLockName(DistributedLock distributedLock, Object[] args, Method method) {
        //优先获取注解名称
        if (StringUtils.isNotBlank(distributedLock.lockName())) {
            return distributedLock.lockName();
        }
        //根据参数匹配有参数就使用动态参数,没有就使用定义参数
        String lockNamePre = distributedLock.lockNamePre();
        String lockNamePost = distributedLock.lockNamePost();
        String separator = distributedLock.separator();
        String preExpression = parseExpression(lockNamePre, method, args);
        String postExpression = parseExpression(lockNamePost, method, args);
        StringBuilder sb = new StringBuilder();
        if (StringUtils.isNotBlank(preExpression)) {
            sb.append(preExpression);
        } else {
            sb.append(lockNamePre);
        }
        sb.append(separator);
        if (StringUtils.isNotBlank(postExpression)) {
            sb.append(postExpression);
        } else {
            sb.append(lockNamePost);
        }
        return sb.toString();
    }
    /**
     * el表达式解析
     *
     * @param expressionString 解析值
     * @param method           方法
     * @param args             参数
     * @return
     */
    private String parseExpression(String expressionString, Method method, Object[] args) {
        //获取被拦截方法参数名列表
        LocalVariableTableParameterNameDiscoverer discoverer = new LocalVariableTableParameterNameDiscoverer();
        String[] paramNameArr = discoverer.getParameterNames(method);
        //SPEL解析
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        for (int i = 0; i < Objects.requireNonNull(paramNameArr).length; i++) {
            context.setVariable(paramNameArr[i], args[i]);
        }
        return parser.parseExpression(expressionString).getValue(context, String.class);
    }
//    ==========================示例=============================
    //    //固定静态参数锁:product_lock
//    @DistributedLock(lockName = "product_lock")
//    @GetMapping(value = "/test1")
//    public void test1() {
//        System.out.println("执行事务");
//    }
//
//    //未匹配到参数,因此仍然是静态参数锁:#param1_#param2
//    @DistributedLock(lockNamePre = "#param1", lockNamePost = "#param2")
//    @GetMapping(value = "/test2")
//    public void test2() {
//        System.out.println("执行事务");
//    }
//
    //匹配到参数,动态参数锁:hello_world
//    @DistributedLock(lockNamePre = "#order", lockNamePost = "#param2")
//    @GetMapping(value = "/test3")
    public void test3(String param1, String param2) {
        System.out.println("执行事务");
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/MyMetaObjectHandler.java
New file
@@ -0,0 +1,42 @@
package com.panzhihua.sangeshenbian.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 自动填充
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-12-11 14:23
 **/
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        // this.strictInsertFill(metaObject, "createTime", Date.class, new Date()); // 起始版本 3.3.0(推荐使用)
        // 或者
        this.strictInsertFill(metaObject, "createTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
        this.strictInsertFill(metaObject, "updateTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
        // 或者
        // this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
        this.strictInsertFill(metaObject, "createTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
        this.strictInsertFill(metaObject, "updateTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        // this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
        // 或者
        this.strictUpdateFill(metaObject, "createTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
        this.strictUpdateFill(metaObject, "updateTime", () -> new Date(), Date.class); // 起始版本 3.3.3(推荐)
        // 或者
        // this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/MybatisPlusConfig.java
New file
@@ -0,0 +1,34 @@
package com.panzhihua.sangeshenbian.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: 分页
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-30 16:26
 **/
@Configuration
public class MybatisPlusConfig {
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/RedissonConfig.java
New file
@@ -0,0 +1,57 @@
package com.panzhihua.sangeshenbian.config;
import org.apache.commons.lang3.StringUtils;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.redisson.config.SingleServerConfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @Desecription:
 */
@Configuration
public class RedissonConfig {
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private String port;
    @Value("${spring.redis.database}")
    private int database;
    @Value("${spring.redis.timeout}")
    private String timeout;
    @Value("${spring.redis.password}")
    private String password;
    /**
     * @Descreption: RedissonClient, 单机模式
     */
    @Bean(destroyMethod = "shutdown")
    public RedissonClient redisson() {
        Config config = new Config();
        SingleServerConfig singleServerConfig = config.useSingleServer();
        singleServerConfig.setAddress("redis://" + host + ":" + port);
        singleServerConfig.setTimeout(10000);
        singleServerConfig.setDatabase(database);
        singleServerConfig.setRetryInterval(1000);
        singleServerConfig.setPingConnectionInterval(1000);
        if (StringUtils.isNotBlank(password)) {
            singleServerConfig.setPassword(password);
        }
        return Redisson.create(config);
    }
//    @Bean
//    public RedissonLocker redissonLocker(RedissonClient redissonClient) {
//        RedissonLocker locker = new RedissonLocker(redissonClient);
//        redissonClient.getlo
//        //设置LockUtil的锁处理对象
//        LockUtils.setLocker(locker);
//        return locker;
//    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/config/SwaggerConfig.java
New file
@@ -0,0 +1,31 @@
package com.panzhihua.sangeshenbian.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
/**
 * @program: springcloud_k8s_panzhihuazhihuishequ
 * @description: swagger3
 * @author: huang.hongfa weixin hhf9596 qq 959656820
 * @create: 2020-11-19 16:08
 **/
@Configuration
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(true).select()
//            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            .apis(RequestHandlerSelectors.basePackage("com.panzhihua.sangeshenbian")).build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("三个身边开发文档").description("。").contact(new Contact("lfl", "", ""))
            .version("1.0").build();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/BcRegionController.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 行政区划表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@RestController
@RequestMapping("/bc-region")
public class BcRegionController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComActController.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 社区表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@RestController
@RequestMapping("/com-act")
public class ComActController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComStreetController.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 街道表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@RestController
@RequestMapping("/com-street")
public class ComStreetController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintAuditRecordController.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.sangeshenbian.controller;
import com.panzhihua.common.model.vos.R;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 诉求上报、延期申请审核表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@RestController
@RequestMapping("/applet/complaint-audit-record")
public class ComplaintAuditRecordController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintController.java
New file
@@ -0,0 +1,169 @@
package com.panzhihua.sangeshenbian.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.sangeshenbian.annotation.DistributedLock;
import com.panzhihua.sangeshenbian.model.dto.*;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.panzhihua.sangeshenbian.model.entity.ProblemType;
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.model.vo.DispatchVO;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.panzhihua.sangeshenbian.service.IProblemTypeService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
 * <p>
 * 诉求报告表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Validated
@RestController
@RequestMapping("/applet/complaint")
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
@Api(tags = "诉求管理")
public class ComplaintController extends BaseController {
    private final IComplaintService complaintService;
    private final IProblemTypeService problemTypeService;
    @GetMapping("/problem-type/list")
    @ApiOperation("获取诉求问题类型列表")
    public R<List<ProblemType>> problemTypeList() {
        return R.ok(problemTypeService.list());
    }
    /**
     * 录入诉求
     */
    @PostMapping("/save")
    @ApiOperation(value = "录入诉求")
    @DistributedLock(lockName = "complaint_serial_number_lock")
    public R<?> save(@RequestBody Complaint complaint) {
        complaintService.saveComplaint(complaint, getUserId());
        return R.ok();
    }
    @PostMapping("/list")
    @ApiOperation("工单列表")
    public R<Page<ComplaintVO>> complaintList(@RequestBody ComplaintQuery query) {
        return R.ok(complaintService.complaintList(query,getLoginUserInfo()));
    }
    @GetMapping("/detail")
    @ApiOperation("工单详情")
    public R<ComplaintVO> detail(@ApiParam(name = "id", value = "工单id", required = true) Long id) {
        return R.ok(complaintService.detail(id));
    }
    @GetMapping("/progress/{complaintId}")
    @ApiOperation("办理进度")
    public R<List<ComplaintProgress>> progress(@ApiParam(name = "complaintId", value = "诉求id", required = true) @PathVariable("complaintId") Long complaintId) {
        return R.ok(complaintService.progress(complaintId));
    }
    @PostMapping("/save-process")
    @ApiOperation("办理进度录入")
    public R<?> saveProcess(@Valid @RequestBody ComplaintProcessDTO dto){
        complaintService.saveProcess(dto,getLoginUserInfo());
        return R.ok();
    }
    @PostMapping("/save-result")
    @ApiOperation("办理结果录入")
    public R<?> saveResult(@RequestBody ComplaintCompletionDTO dto){
        complaintService.saveResult(dto,getLoginUserInfo());
        return R.ok();
    }
    @GetMapping("/delay-detail/{complaintId}")
    @ApiOperation("延期情况说明")
    public R<ComplaintAuditRecord> delayDetail(@ApiParam(name = "complaintId", value = "诉求id", required = true) @PathVariable("complaintId") Long complaintId) {
        return R.ok(complaintService.delayDetail(complaintId));
    }
    /**
     * 问题上报
     */
    @PostMapping("/report")
    @ApiOperation(value = "问题上报")
    public R<?> report(@RequestBody ComplaintReportDTO complaintReportDTO) {
        complaintService.saveReport(complaintReportDTO, getLoginUserInfo());
        return R.ok();
    }
    /**
     * 诉求下派
     */
    @PostMapping("/saveDispatch")
    @ApiOperation("诉求下派")
    public R<?> saveDispatch(@RequestBody ComplaintDispatch dto){
        complaintService.saveDispatch(dto, getLoginUserInfo());
        return R.ok();
    }
    /**
     * 延期申请
     */
    @PostMapping("/saveDelay")
    @ApiOperation(value = "延期申请")
    public R<?> saveDelay(@RequestBody ComplaintDelayDTO dto){
        complaintService.saveDelay(dto, getLoginUserInfo());
        return R.ok();
    }
    /**
     * 延期审核
     */
    @PostMapping("/delayAudit")
    @ApiOperation(value = "延期审核")
    public R<?> delayAudit(@RequestBody ComplaintDelayAuditDTO dto) {
        complaintService.delayAudit(dto, getLoginUserInfo());
        return R.ok();
    }
    /**
     * 上报审核
     */
    @PostMapping("/reportAudit")
    @ApiOperation(value = "问题上报审核")
    public R<?> reportAudit(@RequestBody ComplaintReporAuditDTO dto) {
        complaintService.reportAudit(dto, getLoginUserInfo());
        return R.ok();
    }
    /**
     * 获取下派单位列表
     */
    @GetMapping("/getDispatchList")
    @ApiOperation(value = "获取下派单位列表")
    public R<List<DispatchVO>> getDispatchList() {
        return R.ok(complaintService.getDispatchList(getLoginUserInfo()));
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintFlowController.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 诉求流转记录表 前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@RestController
@RequestMapping("/complaint-flow")
public class ComplaintFlowController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/ComplaintProgressController.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@RestController
@RequestMapping("/complaint-progress")
public class ComplaintProgressController {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/controller/HomeController.java
New file
@@ -0,0 +1,85 @@
package com.panzhihua.sangeshenbian.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.controller.BaseController;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.service.sangeshenbian.SystemUserService;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.sangeshenbian.model.entity.Banner;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.model.vo.MessageNotificationVO;
import com.panzhihua.sangeshenbian.model.vo.PartyCardInfoVO;
import com.panzhihua.sangeshenbian.service.IBannerService;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.panzhihua.sangeshenbian.service.IMessageNotificationService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
 * @author mitao
 * @date 2025/2/23
 */
@RestController
@RequestMapping("/applet/home")
@RequiredArgsConstructor(onConstructor_=@Lazy)
@Api(tags = "首页相关接口")
public class HomeController extends BaseController {
    private final IBannerService bannerService;
    private final IMessageNotificationService messageNotificationService;
    private final IComplaintService complaintService;
    private final ISystemUserService systemUserService;
    private final UserService userService;
    @ApiOperation("获取banner列表")
    @GetMapping("/banner-list")
    public R<List<Banner>> getBannerList() {
        return R.ok(bannerService.list());
    }
    @GetMapping("/party-card-info")
    @ApiOperation("获取党员证信息")
    public R<PartyCardInfoVO> getPartyCardInfo() {
        LoginUserInfoVO loginUserInfo = getLoginUserInfo();
        PartyCardInfoVO partyCardInfoVO = new PartyCardInfoVO();
        partyCardInfoVO.setName(loginUserInfo.getName());
        partyCardInfoVO.setIdCard(loginUserInfo.getIdCard());
        partyCardInfoVO.setPartyOrganization(loginUserInfo.getCommunityName());
        return R.ok(partyCardInfoVO);
    }
    @PostMapping("/message")
    @ApiOperation("获取消息列表")
    public R<Page<MessageNotificationVO>> getMessageList(@RequestBody BasePage page) {
        return R.ok(messageNotificationService.getMessageList(page,getUserId()));
    }
    @PostMapping("/todo-list")
    @ApiOperation("获取待办诉求")
    public R<Page<ComplaintTodoVO>> getTodoList(@RequestBody BasePage page) {
        return R.ok(complaintService.getTodoList(page,getLoginUserInfo()));
    }
    @GetMapping("/current-user-info")
    @ApiOperation("获取三个身边当前用户信息 用于判断用户是否是上级")
    public R<SystemUser> getCurrentUserInfo() {
        return R.ok(systemUserService.getSystemUserByPhone(getLoginUserInfo().getPhone()).orElse(null));
    }
    /**
     * 标记已读
     */
    @PostMapping("/read")
    @ApiOperation("标记已读")
    public R<?> read(){
        messageNotificationService.read(getLoginUserInfo());
        return R.ok();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/BannerMapper.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.Banner;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:44
 */
@Mapper
public interface BannerMapper extends BaseMapper<Banner> {
    IPage<Banner> list(Page page, @Param("name") String name);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/BcRegionMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.BcRegion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 行政区划表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface BcRegionMapper extends BaseMapper<BcRegion> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComActMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.ComAct;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 社区表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface ComActMapper extends BaseMapper<ComAct> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComStreetMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.ComStreet;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 街道表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface ComStreetMapper extends BaseMapper<ComStreet> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintAuditRecordMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 诉求上报、延期申请审核表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface ComplaintAuditRecordMapper extends BaseMapper<ComplaintAuditRecord> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintFlowMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.ComplaintFlow;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * 诉求流转记录表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface ComplaintFlowMapper extends BaseMapper<ComplaintFlow> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintMapper.java
New file
@@ -0,0 +1,46 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import org.apache.ibatis.annotations.Param;
/**
 * <p>
 * 问题报告表 Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface ComplaintMapper extends BaseMapper<Complaint> {
    /**
     * 工单列表
     * @param page
     * @param query
     * @param targetId
     * @param isSuperior
     * @return
     */
    Page<ComplaintVO> selectComplaintPage(Page<ComplaintVO> page, @Param("query") ComplaintQuery query, @Param("targetId") String targetId, @Param("isSuperior") Integer isSuperior);
    /**
     *  工单详情
     * @param id
     * @return
     */
    ComplaintVO getDetail(Long id);
    /**
     * 获取待办诉求
     * @param page
     * @param targetId
     * @param isSuperior
     * @return
     */
    Page<ComplaintTodoVO> getTodoList(Page<ComplaintTodoVO> page, @Param("targetId") String targetId, @Param("isSuperior") int isSuperior);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ComplaintProgressMapper.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.dao;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface ComplaintProgressMapper extends BaseMapper<ComplaintProgress> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/DepartmentMapper.java
New file
@@ -0,0 +1,13 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.panzhihua.sangeshenbian.model.entity.Department;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:42
 */
@Mapper
public interface DepartmentMapper extends BaseMapper<Department> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/MessageNotificationMapper.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.MessageNotification;
import com.panzhihua.sangeshenbian.warpper.MessageNotificationList;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 3:03
 */
@Mapper
public interface MessageNotificationMapper extends BaseMapper<MessageNotification> {
    IPage<MessageNotification> list(Page page, @Param("query") MessageNotificationList query);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/ProblemTypeMapper.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.ProblemType;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:25
 */
@Mapper
public interface ProblemTypeMapper extends BaseMapper<ProblemType> {
    IPage<ProblemType> list(Page page, @Param("name") String name);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemMenuMapper.java
New file
@@ -0,0 +1,13 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 1:02
 */
@Mapper
public interface SystemMenuMapper extends BaseMapper<SystemMenu> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemPostMapper.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.SystemPost;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/25 19:41
 */
@Mapper
public interface SystemPostMapper extends BaseMapper<SystemPost> {
    IPage<SystemPost> list(Page page, @Param("name") String name);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemRoleMapper.java
New file
@@ -0,0 +1,25 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.SystemRole;
import com.panzhihua.sangeshenbian.warpper.SystemRoleListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:40
 */
@Mapper
public interface SystemRoleMapper extends BaseMapper<SystemRole> {
    /**
     * 获取列表数据
     * @param name
     * @return
     */
    IPage<SystemRoleListVo> list(Page page, @Param("name") String name);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemRoleMenuMapper.java
New file
@@ -0,0 +1,13 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:24
 */
@Mapper
public interface SystemRoleMenuMapper extends BaseMapper<SystemRoleMenu> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/SystemUserMapper.java
New file
@@ -0,0 +1,25 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:29
 */
@Mapper
public interface SystemUserMapper extends BaseMapper<SystemUser> {
    /**
     * 获取列表数据
     * @param query
     * @return
     */
    IPage<SystemUserListVo> list(Page page, @Param("accountLevel") Integer accountLevel, @Param("query") SystemUserList query);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/dao/WorkOrderItemConfigMapper.java
New file
@@ -0,0 +1,13 @@
package com.panzhihua.sangeshenbian.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import com.panzhihua.sangeshenbian.model.entity.WorkOrderItemConfig;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:06
 */
@Mapper
public interface WorkOrderItemConfigMapper extends BaseMapper<WorkOrderItemConfig> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/AuditStatusEnum.java
New file
@@ -0,0 +1,36 @@
package com.panzhihua.sangeshenbian.enums;
import lombok.Data;
// 审核状态枚举类
public enum AuditStatusEnum {
    PENDING(0, "待审核"),
    APPROVED(1, "审核通过"),
    REJECTED(2, "审核驳回");
    private final int code;
    private final String description;
    AuditStatusEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }
    public int getCode() {
        return code;
    }
    public String getDescription() {
        return description;
    }
    public static String getDescriptionByCode(int code) {
        for (AuditStatusEnum status : AuditStatusEnum.values()) {
            if (status.getCode() == code) {
                return status.getDescription();
            }
        }
        return null;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/ProcessStatusEnum.java
New file
@@ -0,0 +1,34 @@
package com.panzhihua.sangeshenbian.enums;
// 流转状态枚举类(更名为 ProcessStatusEnum)
public enum ProcessStatusEnum {
    PROCESSING(0, "正在办理"),
    EXTENDED(1, "延期办理"),
    OVERDUE(2, "超时办理"),
    COMPLETED(3, "已办结");
    private final int code;
    private final String description;
    ProcessStatusEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }
    public int getCode() {
        return code;
    }
    public String getDescription() {
        return description;
    }
    public static String getDescriptionByCode(int code) {
        for (ProcessStatusEnum status : ProcessStatusEnum.values()) {
            if (status.getCode() == code) {
                return status.getDescription();
            }
        }
        return null;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/enums/ReportTypeEnum.java
New file
@@ -0,0 +1,33 @@
package com.panzhihua.sangeshenbian.enums;
public enum ReportTypeEnum {
    COMMUNITY(4, "社区"),
    STREET(3, "街道"),
    DISTRICT(2, "区县"),
    CITY(1, "市");
    private final int code;
    private final String description;
    ReportTypeEnum(int code, String description) {
        this.code = code;
        this.description = description;
    }
    public int getCode() {
        return code;
    }
    public String getDescription() {
        return description;
    }
    public static ReportTypeEnum fromCode(int code) {
        for (ReportTypeEnum type : ReportTypeEnum.values()) {
            if (type.getCode() == code) {
                return type;
            }
        }
        throw new IllegalArgumentException("Invalid code: " + code);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintCompletionDTO.java
New file
@@ -0,0 +1,38 @@
package com.panzhihua.sangeshenbian.model.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("办理结果录入数据传输对象")
public class ComplaintCompletionDTO {
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty(value = "办结状态: 3-已办结 4-群众撤销")
    private Integer status;
    @ApiModelProperty(value = "诉求id")
    private Long id;
    @ApiModelProperty(value = "办理结果描述")
    private String completionDescription;
    @ApiModelProperty(value = "办理结果图片")
    private String completionImages;
    @ApiModelProperty(value = "办理结果视频")
    private String completionVideos;
    @ApiModelProperty(value = "办理结果其他说明")
    private String completionOtherDescription;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDelayAuditDTO.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.sangeshenbian.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "延期审核")
public class ComplaintDelayAuditDTO {
    @ApiModelProperty(value = "审核记录id")
    private Long id;
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty(value = "审核结果: 1-通过 2-驳回")
    private Integer auditResult;
    @ApiModelProperty(value = "驳回原因")
    private String rejectReason;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDelayDTO.java
New file
@@ -0,0 +1,22 @@
package com.panzhihua.sangeshenbian.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "诉求延期")
public class ComplaintDelayDTO {
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty("说明")
    private String comment;
    @ApiModelProperty("图片")
    private String images;
    @ApiModelProperty("视频")
    private String videos;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintDispatch.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.sangeshenbian.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "诉求下派")
public class ComplaintDispatch {
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty(value = "单位id")
    private Long dispatchId; // TODO 待实现
    @ApiModelProperty(value = "内容")
    private String comment;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintProcessDTO.java
New file
@@ -0,0 +1,35 @@
package com.panzhihua.sangeshenbian.model.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Date;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel
public class ComplaintProcessDTO {
    @ApiModelProperty(value = "诉求id")
    @NotNull(message = "诉求id不能为空")
    private Long complaintId;
    @ApiModelProperty(value = "办理进度描述")
    @NotBlank(message = "办理进度描述不能为空")
    private String describe;
    @ApiModelProperty(value = "图片url")
    private String imgUrl;
    @ApiModelProperty(value = "视频url")
    private String video;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintReporAuditDTO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.model.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ComplaintReporAuditDTO {
    @ApiModelProperty(value = "诉求id")
    private Long id;
    @ApiModelProperty(value = "审核结果: 1-通过 2-驳回")
    private Integer auditResult;
    @ApiModelProperty(value = "驳回原因")
    private String rejectReason;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/dto/ComplaintReportDTO.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.model.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "诉求上报")
public class ComplaintReportDTO {
    @ApiModelProperty(value = "诉求id")
    private Long complaintId;
    @ApiModelProperty(value = "诉求内容")
    private String comment;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Banner.java
New file
@@ -0,0 +1,51 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:42
 */
@Data
@ApiModel
@TableName("sgsb_banner")
public class Banner {
    /**
     * 数据ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("数据ID")
    private Integer id;
    /**
     * 名称
     */
    @TableField("name")
    @ApiModelProperty("名称")
    private String name;
    /**
     * 地址
     */
    @TableField("url")
    @ApiModelProperty("地址")
    private String url;
    /**
     * 删除标识(0=否,1=是)
     */
    @TableField("del")
    @TableLogic
    private Integer del;
    /**
     * 添加时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/BcRegion.java
New file
@@ -0,0 +1,70 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 行政区划表
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="BcRegion对象", description="行政区划表")
public class BcRegion implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId(value = "region_id", type = IdType.NONE)
    private String regionId;
    @ApiModelProperty(value = "行政区划编码")
    private String regionCode;
    @ApiModelProperty(value = "行政区划名称")
    private String regionName;
    @ApiModelProperty(value = "父id")
    private String parentId;
    @ApiModelProperty(value = "所在层级")
    private Integer hierarchyOrder;
    @ApiModelProperty(value = "同层顺序")
    private Integer levelOrder;
    @ApiModelProperty(value = "层级格式编码(格式 : `**`**` )")
    private String formatCode;
    @ApiModelProperty(value = "创建者")
    private Long createUserId;
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createDatetime;
    @ApiModelProperty(value = "修改者")
    private Long modifyUserId;
    @ApiModelProperty(value = "修改时间")
    private LocalDateTime modifyDatetime;
    @ApiModelProperty(value = "删除标识(0:未删除,1:已删除)")
    private Boolean deleteFlag;
    @ApiModelProperty(value = "子集数量")
    private Integer childrenNum;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComAct.java
New file
@@ -0,0 +1,106 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 社区表
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("com_act")
@ApiModel(value="ComAct对象", description="社区表")
public class ComAct implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = ",主键")
    @TableId(value = "community_id", type = IdType.NONE)
    private Long communityId;
    @ApiModelProperty(value = "街道Id")
    private Long streetId;
    @ApiModelProperty(value = "社区名字")
    private String name;
    @ApiModelProperty(value = "社区地址")
    private String address;
    @ApiModelProperty(value = "经度")
    private String lng;
    @ApiModelProperty(value = "维度")
    private String lat;
    @ApiModelProperty(value = "省份地址编码")
    private String provinceCode;
    @ApiModelProperty(value = "市级地址编码")
    private String cityCode;
    @ApiModelProperty(value = "区级地址编码")
    private String areaCode;
    @ApiModelProperty(value = "社区面积")
    private String square;
    @ApiModelProperty(value = "联系人")
    private String contacts;
    @ApiModelProperty(value = "联系人电话")
    private String contactsPhone;
    @ApiModelProperty(value = "社区总人口")
    private Integer totalUser;
    @ApiModelProperty(value = "社区书记-用户ID")
    private Long managerId;
    @ApiModelProperty(value = "社区书记_名称")
    private String managerName;
    @ApiModelProperty(value = "社区介绍")
    private String introduce;
    @ApiModelProperty(value = "层次递归字段(省>市>区县>街道>社区)")
    private String path;
    @ApiModelProperty(value = "超管账号")
    private String account;
    @ApiModelProperty(value = "账号密码")
    private String password;
    @ApiModelProperty(value = "状态 0 启用 1 禁用")
    private Integer state;
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createAt;
    @ApiModelProperty(value = "是否大屏统计(1.是 2.否)")
    private Integer isScreenStatistics;
    @ApiModelProperty(value = "明文密码")
    private String plaintextPassword;
    private String appId;
    private String solvePhone;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComStreet.java
New file
@@ -0,0 +1,69 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 街道表
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="ComStreet对象", description="街道表")
public class ComStreet implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = ",主键")
    @TableId(value = "street_id", type = IdType.NONE)
    private String streetId;
    @ApiModelProperty(value = "街道名称")
    private String name;
    @ApiModelProperty(value = "省份地址编码")
    private Integer provinceCode;
    @ApiModelProperty(value = "市级地址编码")
    private Integer cityCode;
    @ApiModelProperty(value = "区级地址编码")
    private Integer areaCode;
    @ApiModelProperty(value = "街道地址")
    private String address;
    @ApiModelProperty(value = "经度")
    private String lng;
    @ApiModelProperty(value = "纬度")
    private String lat;
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createAt;
    @ApiModelProperty(value = "超管账号")
    private String account;
    @ApiModelProperty(value = "账号密码")
    private String password;
    @ApiModelProperty(value = "联系电话")
    private String phone;
    private String appId;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Complaint.java
New file
@@ -0,0 +1,161 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.checkerframework.checker.units.qual.A;
/**
 * <p>
 * 问题报告表
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sgsb_complaint")
@ApiModel(value="Complaint对象", description="问题报告表")
public class Complaint implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = " ")
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long id;
    @ApiModelProperty(value = "诉求号")
    @TableField("serial_number")
    private String serialNumber;
    @ApiModelProperty(value = "问题发生时间")
    @TableField("time")
    private Date time;
    @ApiModelProperty(value = "问题类型")
    @TableField("problem_type")
    private String problemType;
    @ApiModelProperty(value = "群众姓名")
    @TableField("name")
    private String name;
    @ApiModelProperty(value = "联系电话")
    @TableField("contact_number")
    private String contactNumber;
    @ApiModelProperty(value = "问题发生地点")
    @TableField("location")
    private String location;
    @ApiModelProperty(value = "详细地址描述")
    @TableField("detailed_address")
    private String detailedAddress;
    @ApiModelProperty(value = "问题标题")
    @TableField("description_title")
    private String descriptionTitle;
    @ApiModelProperty(value = "问题描述内容")
    @TableField("description_content")
    private String descriptionContent;
    @ApiModelProperty(value = "上传图片")
    @TableField("images")
    private String images;
    @ApiModelProperty(value = "上传视频")
    @TableField("videos")
    private String videos;
    @ApiModelProperty(value = "流转状态:0-正在办理 1-延期办理 2-超时办理 3-已办结 4-群众撤销 5-上报待审核 6-上级驳回 7-延期待审核")
    @TableField("status")
    private Integer status;
    @ApiModelProperty(value = "上报类型 1=市级账号,2=区县账号,3=街道账号,4=社区账号")
    @TableField("report_type")
    private Integer reportType;
    @ApiModelProperty(value = "上级id")
    @TableField("superior_id")
    private Long superiorId;
    @ApiModelProperty(value = "创建人")
    @TableField("create_by")
    private Long createBy;
    @ApiModelProperty(value = "创建时间")
    @TableField("create_time")
    private Date createTime;
    @ApiModelProperty(value = "修改人")
    @TableField("update_by")
    private Long updateBy;
    @ApiModelProperty(value = "修改时间")
    @TableField("update_time")
    private Date updateTime;
    @ApiModelProperty(value = "办理结果描述")
    @TableField("completion_description")
    private String completionDescription;
    @ApiModelProperty(value = "办理结果图片")
    @TableField("completion_images")
    private String completionImages;
    @ApiModelProperty(value = "办理结果视频")
    @TableField("completion_videos")
    private String completionVideos;
    @ApiModelProperty(value = "办理结果其他说明")
    @TableField("completion_other_description")
    private String completionOtherDescription;
    @ApiModelProperty(value = "办结时间")
    @TableField("completion_time")
    private Date completionTime;
    @ApiModelProperty(value = "办结人员id")
    @TableField("completion_user_id")
    private Long completionUserId;
    @ApiModelProperty(value = "办结人员")
    @TableField("completion_username")
    private String completionUsername;
    @ApiModelProperty(value = "办结人员")
    @TableField("completion_user_phone")
    private String completionUserPhone;
    @ApiModelProperty(value = "截止日期")
    @TableField("closing_time")
    private Date closingTime;
    @ApiModelProperty(value = "超时天数")
    @TableField("over_time_days")
    private Integer overTimeDays;
    @ApiModelProperty(value = "经度")
    private BigDecimal longitude;
    @ApiModelProperty(value = "纬度")
    private BigDecimal latitude;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintAuditRecord.java
New file
@@ -0,0 +1,101 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 诉求上报、延期申请审核表
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sgsb_complaint_audit_record")
@ApiModel(value="ComplaintAuditRecord对象", description="诉求上报、延期申请审核表")
public class ComplaintAuditRecord implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long id;
    @ApiModelProperty(value = "是否最新")
    @TableField("latest_flag")
    private Boolean latestFlag;
    @ApiModelProperty(value = "诉求id")
    @TableField("complaint_id")
    private Long complaintId;
    @ApiModelProperty(value = "审核人id")
    @TableField("auditor_id")
    private Long auditorId;
    @ApiModelProperty(value = "审核类型(1:延期申请, 2:上报申请)")
    @TableField("audit_type")
    private Integer auditType;
    @ApiModelProperty(value = "审核状态 (0:待审核 1:审核通过 2:审核驳回)")
    @TableField("audit_status")
    private Integer auditStatus;
    @ApiModelProperty(value = "驳回原因")
    @TableField("reject_reason")
    private String rejectReason;
    @ApiModelProperty(value = "上报说明/延期申请说明")
    @TableField("comment")
    private String comment;
    @ApiModelProperty(value = "图片")
    @TableField("images")
    private String images;
    @ApiModelProperty(value = "视频")
    @TableField("videos")
    private String videos;
    @ApiModelProperty(value = "创建人")
    @TableField("create_by")
    private Long createBy;
    @ApiModelProperty(value = "创建时间")
    @TableField("create_time")
    private Date createTime;
    @ApiModelProperty(value = "修改人")
    @TableField("update_by")
    private Long updateBy;
    @ApiModelProperty(value = "修改时间")
    @TableField("update_time")
    private Date updateTime;
    @ApiModelProperty("上报人")
    private String reporter;
    @ApiModelProperty("所属部门")
    private String departmentName;
    @ApiModelProperty("部门id")
    private Integer departmentId;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintFlow.java
New file
@@ -0,0 +1,62 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * 诉求流转记录表
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sgsb_complaint_flow")
@ApiModel(value="ComplaintFlow对象", description="诉求流转记录表")
public class ComplaintFlow implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键ID")
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long id;
    @ApiModelProperty(value = "诉求ID")
    @TableField(value = "complaint_id")
    private Long complaintId;
    @ApiModelProperty(value = "处理层级: 1-市级,2-区县,3-街道,4-社区")
    @TableField("level")
    private Integer level;
    @ApiModelProperty(value = "处理单位名称")
    @TableField("name")
    private String name;
    @ApiModelProperty(value = "下派时间")
    @TableField("create_time")
    private Date createTime;
    @ApiModelProperty(value = "流转类型 0-上报 1-下派")
    @TableField("type")
    private Integer type;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ComplaintProgress.java
New file
@@ -0,0 +1,69 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.util.Date;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 *
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("sgsb_complaint_progress")
@ApiModel(value="ComplaintProgress对象", description="")
public class ComplaintProgress implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "主键")
    @TableId(value = "id",type = IdType.ASSIGN_ID)
    @JsonSerialize(using = com.fasterxml.jackson.databind.ser.std.ToStringSerializer.class)
    private Long id;
    @ApiModelProperty(value = "诉求id")
    @TableField("complaint_id")
    private Long complaintId;
    @ApiModelProperty(value = "办理进度描述")
    @TableField("`describe`")
    private String describe;
    @ApiModelProperty(value = "图片url")
    @TableField("img_url")
    private String imgUrl;
    @ApiModelProperty(value = "视频url")
    @TableField("video")
    private String video;
    @ApiModelProperty(value = "创建时间")
    @TableField("create_time")
    private Date createTime;
    @ApiModelProperty(value = "创建人")
    @TableField("create_by")
    private Long createBy;
    @ApiModelProperty(value = "创建人")
    @TableField("create_by_name")
    private String createByName;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/Department.java
New file
@@ -0,0 +1,50 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:40
 */
@Data
@ApiModel
@TableName("sgsb_department")
public class Department {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("数据ID")
    private Integer id;
    /**
     * 上级id
     */
    @TableField("pid")
    @ApiModelProperty("上级id")
    private Integer pid;
    /**
     * 单位名称
     */
    @TableField("name")
    @ApiModelProperty("单位名称")
    private String name;
    /**
     * 层级,最多4层
     */
    @TableField("tier")
    @ApiModelProperty("层级,最多4层")
    private Integer tier;
    @TableField(exist = false)
    @ApiModelProperty("下级单位")
    private List<Department> child;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/MessageNotification.java
New file
@@ -0,0 +1,93 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:57
 */
@Data
@ApiModel
@TableName("sgsb_message_notification")
public class MessageNotification {
    /**
     * 数据ID
     */
    @ApiModelProperty("数据ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 标题
     */
    @TableField("title")
    @ApiModelProperty("标题")
    private String title;
    /**
     * 承办者用户id
     */
    @TableField("undertaker_user_id")
    @ApiModelProperty("承办者用户id")
    private String undertakerUserId;
    /**
     * 承办人类型(1=市级,2=区县,3=街道,4=社区,5=党员)
     */
    @TableField("undertaker_type")
    @ApiModelProperty("承办人类型(1=市级,2=区县,3=街道,4=社区,5=党员)")
    private Integer undertakerType;
    /**
     * 承办者
     */
    @TableField(exist = false)
    @ApiModelProperty("承办者")
    private String undertakerUser;
    /**
     * 联系电话
     */
    @TableField("phone")
    @ApiModelProperty("联系电话")
    private String phone;
    /**
     * 所在单位
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "所在单位")
    private String department;
    /**
     * 所属职位
     */
    @TableField(exist = false)
    @ApiModelProperty("所属职位")
    private String position;
    /**
     * 需求应处理时间
     */
    @TableField("response_time")
    @ApiModelProperty("需求应处理时间")
    private LocalDateTime responseTime;
    /**
     * 提示类型(1=临期提醒,2=超时提醒)
     */
    @TableField("prompt_type")
    @ApiModelProperty("提示类型(1=临期提醒,2=超时提醒)")
    private Integer promptType;
    /**
     * 阅读状态(0=否,1=是)
     */
    @TableField("read_status")
    @ApiModelProperty("阅读状态(0=否,1=是)")
    private Integer readStatus;
    /**
     * 创建时间
     */
    @TableField("create_time")
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/ProblemType.java
New file
@@ -0,0 +1,45 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:24
 */
@Data
@ApiModel
@TableName("sgsb_problem_type")
public class ProblemType {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("主键")
    private Integer id;
    /**
     * 名称
     */
    @TableField("name")
    @ApiModelProperty("名称")
    private String name;
    /**
     * 删除标识(0=否,1=是)
     */
    @TableField("del")
    @TableLogic
    private Integer del;
    /**
     * 添加时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemMenu.java
New file
@@ -0,0 +1,50 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 0:54
 */
@Data
@ApiModel
@TableName("sgsb_system_menu")
public class SystemMenu {
    /** 菜单ID */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("菜单ID")
    private Integer id;
    /** 菜单名称 */
    @TableField("name")
    @ApiModelProperty("菜单名称")
    private String name;
    /** 父菜单ID */
    @TableField("parent_id")
    private Long parentId;
    /** 显示顺序 */
    @TableField("order_num")
    private String orderNum;
    /** 菜单URL */
    @TableField("url")
    @ApiModelProperty("菜单URL")
    private String url;
    /** 子菜单 */
    @TableField(exist = false)
    @ApiModelProperty("子菜单")
    private List<SystemMenu> children = new ArrayList<SystemMenu>();
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemPost.java
New file
@@ -0,0 +1,38 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/25 19:39
 */
@Data
@TableName("sgsb_system_post")
public class SystemPost {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 名称
     */
    @TableField("name")
    private String name;
    /**
     * 删除标识(0=否,1=是)
     */
    @TableField("del")
    private Integer del;
    /**
     * 添加时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemRole.java
New file
@@ -0,0 +1,38 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:35
 */
@Data
@TableName("sgsb_system_role")
public class SystemRole {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 角色名称
     */
    @TableField("name")
    private String name;
    /**
     * 删除标识(0=否,1=是)
     */
    @TableField("del")
    private Integer del;
    /**
     * 添加时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemRoleMenu.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:21
 */
@Data
@TableName("sgsb_system_role_menu")
public class SystemRoleMenu {
    /**
     * 角色id
     */
    @TableField("system_role_id")
    private Integer systemRoleId;
    /**
     * 菜单id
     */
    @TableField("system_menu_id")
    private Integer systemMenuId;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/SystemUser.java
New file
@@ -0,0 +1,141 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.xalan.templates.VarNameCollector;
import java.time.LocalDateTime;
/**
 * 系统用户
 * @author zhibing.pu
 * @Date 2025/2/18 22:18
 */
@Data
@ApiModel
@TableName("sgsb_system_user")
public class SystemUser {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty(value = "数据ID")
    private Integer id;
    /**
     * 姓名
     */
    @TableField("name")
    @ApiModelProperty(value = "姓名", required = true)
    private String name;
    /**
     * 手机号
     */
    @TableField("phone")
    @ApiModelProperty(value = "手机号", required = true)
    private String phone;
    /**
     * 密码
     */
    @TableField("password")
    @ApiModelProperty(value = "密码", required = true)
    private String password;
    /**
     * 一级单位id
     */
    @TableField("one_department_id")
    @ApiModelProperty(value = "一级单位id", required = true)
    private Integer oneDepartmentId;
    /**
     * 二级单位id
     */
    @TableField("two_department_id")
    @ApiModelProperty(value = "二级单位id")
    private Integer twoDepartmentId;
    /**
     * 三级单位id
     */
    @TableField("three_department_id")
    @ApiModelProperty(value = "三级单位id")
    private Integer threeDepartmentId;
    /**
     * 四级单位id
     */
    @TableField("four_department_id")
    @ApiModelProperty(value = "四级单位id")
    private Integer fourDepartmentId;
    /**
     * 是否是管理员(0=否,1=是)
     */
    @TableField("is_admin")
    @ApiModelProperty(value = "是否是管理员(0=否,1=是)", required = true)
    private Integer isAdmin;
    /**
     * 职位id
     */
    @TableField("system_post_id")
    @ApiModelProperty(value = "职位id", required = true)
    private Integer systemPostId;
    /**
     * 角色id
     */
    @TableField("system_role_id")
    @ApiModelProperty(value = "角色id", required = true)
    private Integer systemRoleId;
    /**
     * 账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)
     */
    @TableField("account_level")
    @ApiModelProperty(value = "账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号,5=党员账号)", required = true)
    private Integer accountLevel;
    /**
     * 所属区县
     */
    @TableField("districts")
    @ApiModelProperty(value = "所属区县")
    private String districts;
    /**
     * 区县编号
     */
    @TableField("districts_code")
    @ApiModelProperty(value = "区县编号")
    private String districtsCode;
    /**
     * 街道
     */
    @TableField("street")
    @ApiModelProperty(value = "街道")
    private String street;
    /**
     * 街道ID
     */
    @TableField("street_id")
    @ApiModelProperty(value = "街道ID")
    private String streetId;
    /**
     * 社区
     */
    @TableField("community")
    @ApiModelProperty(value = "社区")
    private String community;
    /**
     * 社区ID
     */
    @TableField("community_id")
    @ApiModelProperty(value = "社区ID")
    private Long communityId;
    /**
     * 状态(1=正常,2=冻结,3=删除)
     */
    @TableField("status")
    private Integer status;
    /**
     * 添加时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/entity/WorkOrderItemConfig.java
New file
@@ -0,0 +1,88 @@
package com.panzhihua.sangeshenbian.model.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:04
 */
@Data
@TableName("sgsb_work_order_item_config")
public class WorkOrderItemConfig {
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 市级账号诉求处理时间
     */
    @TableField("city_handling_time")
    @ApiModelProperty(value = "市级账号诉求处理时间", required = true)
    private Integer cityHandlingTime;
    /**
     * 区县级账号诉求处理时间
     */
    @TableField("district_handling_time")
    @ApiModelProperty(value = "区县级账号诉求处理时间", required = true)
    private Integer districtHandlingTime;
    /**
     * 街道级账号诉求处理时间
     */
    @TableField("street_handling_time")
    @ApiModelProperty(value = "街道级账号诉求处理时间", required = true)
    private Integer streetHandlingTime;
    /**
     * 社区级账号诉求处理时间
     */
    @TableField("community_handling_time")
    @ApiModelProperty(value = "社区级账号诉求处理时间", required = true)
    private Integer communityHandlingTime;
    /**
     * 党员级账号诉求处理时间
     */
    @TableField("party_member_handling_time")
    @ApiModelProperty(value = "党员级账号诉求处理时间", required = true)
    private Integer partyMemberHandlingTime;
    /**
     * 市级账号临期提醒
     */
    @TableField("city_deadline_reminder")
    @ApiModelProperty(value = "市级账号临期提醒", required = true)
    private Integer cityDeadlineReminder;
    /**
     * 区县级账号临期提醒
     */
    @TableField("district_deadline_reminder")
    @ApiModelProperty(value = "区县级账号临期提醒", required = true)
    private Integer districtDeadlineReminder;
    /**
     * 街道级账号临期提醒
     */
    @TableField("street_deadline_reminder")
    @ApiModelProperty(value = "街道级账号临期提醒", required = true)
    private Integer streetDeadlineReminder;
    /**
     * 社区级账号临期提醒
     */
    @TableField("community_deadline_reminder")
    @ApiModelProperty(value = "社区级账号临期提醒", required = true)
    private Integer communityDeadlineReminder;
    /**
     * 党员级账号临期提醒
     */
    @TableField("party_member_deadline_reminder")
    @ApiModelProperty(value = "党员级账号临期提醒", required = true)
    private Integer partyMemberDeadlineReminder;
    /**
     * 诉求处理时间
     */
    @TableField("demand_processing_time")
    @ApiModelProperty(value = "诉求处理时间", required = true)
    private Integer demandProcessingTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/BasePage.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.sangeshenbian.model.query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
public class BasePage {
    @ApiModelProperty(value = "当前页数", example = "1")
    private Long pageNum = 1L;
    @ApiModelProperty(value = "每页记录数", example = "10")
    private Long pageSize = 10L;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/query/ComplaintQuery.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.sangeshenbian.model.query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("工单查询数据传输对象")
public class ComplaintQuery extends BasePage{
    @ApiModelProperty("全部:不传,上报待审核:0,正在办理:1, 办结:2")
    private Integer type;
    /**
     * 当前登录用户id
     */
    private Long userId;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintTodoVO.java
New file
@@ -0,0 +1,30 @@
package com.panzhihua.sangeshenbian.model.vo;
import com.panzhihua.common.model.vos.common.SysUserVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.checkerframework.checker.units.qual.A;
import java.util.Date;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("待办述求视图对象")
public class ComplaintTodoVO extends SysUserVo {
    @ApiModelProperty("诉求id")
    private Long id;
    @ApiModelProperty("用户头像")
    private String imageUrl;
    @ApiModelProperty("诉求标题")
    private String descriptionTitle;
    @ApiModelProperty("最终处理期限")
    private Date closingTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/ComplaintVO.java
New file
@@ -0,0 +1,57 @@
package com.panzhihua.sangeshenbian.model.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.panzhihua.sangeshenbian.model.entity.ComplaintFlow;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("工单视图对象")
public class ComplaintVO extends Complaint {
    @ApiModelProperty(value = "上报人")
    private String reporter;
    @ApiModelProperty(value = "所属部门")
    private String departmentName;
    @ApiModelProperty(value = "上报提交时间")
    private Date reportTime;
    @ApiModelProperty(value = "上报说明")
    private String comment;
    @ApiModelProperty(value = "录入人")
    private String nickname;
    @ApiModelProperty(value = "联系方式")
    private String phone;
    @ApiModelProperty(value = "审核人")
    private String auditorName;
    @ApiModelProperty(value = "审核人联系方式")
    private String auditorPhone;
    @ApiModelProperty(value = "驳回原因")
    private String rejectReason;
    @ApiModelProperty(value = "审核时间")
    private Date auditTime;
    @ApiModelProperty(value = "诉求流转记录")
    List<ComplaintFlow> complaintFlows;
    @ApiModelProperty(value = "办理进度")
    List<ComplaintProgress> complaintProgresses;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/DispatchVO.java
New file
@@ -0,0 +1,14 @@
package com.panzhihua.sangeshenbian.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel("下派单位")
public class DispatchVO {
    @ApiModelProperty(value = "下派单位id")
    private Long id;
    @ApiModelProperty(value = "下派单位名称")
    private String name;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/MessageNotificationVO.java
New file
@@ -0,0 +1,75 @@
package com.panzhihua.sangeshenbian.model.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("消息通知视图对象")
public class MessageNotificationVO {
    /**
     * 数据ID
     */
    @ApiModelProperty("数据ID")
    private Integer id;
    /**
     * 标题
     */
    @ApiModelProperty("标题")
    private String title;
    /**
     * 承办者用户id
     */
    @ApiModelProperty("承办者用户id")
    private Integer undertakerUserId;
    /**
     * 承办者
     */
    @ApiModelProperty("承办者")
    private String undertakerUser;
    /**
     * 联系电话
     */
    @TableField("phone")
    @ApiModelProperty("联系电话")
    private String phone;
    /**
     * 所在单位
     */
    @ApiModelProperty(value = "所在单位")
    private String department;
    /**
     * 所属职位
     */
    @ApiModelProperty("所属职位")
    private String position;
    /**
     * 需求应处理时间
     */
    @ApiModelProperty("需求应处理时间")
    private LocalDateTime responseTime;
    /**
     * 提示类型(1=临期提醒,2=超时提醒)
     */
    @ApiModelProperty("提示类型(1=临期提醒,2=超时提醒)")
    private Integer promptType;
    /**
     * 阅读状态(0=否,1=是)
     */
    @ApiModelProperty("阅读状态(0=否,1=是)")
    private Integer readStatus;
    /**
     * 创建时间
     */
    @ApiModelProperty("创建时间")
    private LocalDateTime createTime;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/model/vo/PartyCardInfoVO.java
New file
@@ -0,0 +1,24 @@
package com.panzhihua.sangeshenbian.model.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import net.bytebuddy.implementation.bind.annotation.Pipe;
/**
 * @author mitao
 * @date 2025/2/23
 */
@Data
@ApiModel("党员证信息")
public class PartyCardInfoVO {
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "身份证号码")
    private String idCard;
    @ApiModelProperty(value = "所在党组织")
    private String partyOrganization;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/scheduled/ComplaintTasks.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.scheduled;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import lombok.RequiredArgsConstructor;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
@RequiredArgsConstructor
public class ComplaintTasks {
    private final IComplaintService complaintService;
    /**
     * 诉求超时处理
     */
    @Scheduled(fixedRate = 60000)
    public void complaintTimeout() {
        complaintService.list();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IBannerService.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.Banner;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:45
 */
public interface IBannerService extends IService<Banner> {
    IPage<Banner> list(String name, Integer pageNum, Integer pageSize);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IBcRegionService.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.sangeshenbian.model.entity.BcRegion;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 行政区划表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface IBcRegionService extends IService<BcRegion> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComActService.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.sangeshenbian.model.entity.ComAct;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 社区表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface IComActService extends IService<ComAct> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComStreetService.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.sangeshenbian.model.entity.ComStreet;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * 街道表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface IComStreetService extends IService<ComStreet> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintAuditRecordService.java
New file
@@ -0,0 +1,23 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
/**
 * <p>
 * 诉求上报、延期申请审核表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
public interface IComplaintAuditRecordService extends IService<ComplaintAuditRecord> {
    // 创建审核记录
    void createComplaintAuditRecord(Long complaintId, Integer auditType, String comment, LoginUserInfoVO loginUserInfoVO, SystemUser adminUser);
    // 审核
    void audit(ComplaintAuditRecord complaintAuditRecord, Long userId, Integer auditResult, String rejectReason);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintFlowService.java
New file
@@ -0,0 +1,27 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.panzhihua.sangeshenbian.model.entity.ComplaintFlow;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
/**
 * <p>
 * 诉求流转记录表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface IComplaintFlowService extends IService<ComplaintFlow> {
    /**
     * 创建流程
     * @param complaintId
     * @param reportType
     * @param type 流转类型 0-上报 1-下派
     * @param userId
     */
    void createFlow(Long complaintId , Long superiorId, Integer reportType, Integer type, Long userId);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintProgressService.java
New file
@@ -0,0 +1,16 @@
package com.panzhihua.sangeshenbian.service;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 *  服务类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface IComplaintProgressService extends IService<ComplaintProgress> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IComplaintService.java
New file
@@ -0,0 +1,111 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO;
import com.panzhihua.sangeshenbian.model.dto.*;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.model.vo.DispatchVO;
import java.util.List;
/**
 * <p>
 * 问题报告表 服务类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
public interface IComplaintService extends IService<Complaint> {
    void saveComplaint(Complaint complaint,Long userId);
    /**
     * 诉求列表
     *
     * @param query
     * @param loginUserInfoVO
     * @return
     */
    Page<ComplaintVO> complaintList(ComplaintQuery query, LoginUserInfoVO  loginUserInfoVO);
    /**
     * 工单详情
     * @param id
     * @return
     */
    ComplaintVO detail(Long id);
    /**
     * 保存办理进度
     *
     * @param dto
     * @param loginUserInfoVO
     */
    void saveProcess(ComplaintProcessDTO dto, LoginUserInfoVO loginUserInfoVO);
    /**
     * 办理结果录入
     *
     * @param dto
     * @param loginUserInfoVO
     */
    void saveResult(ComplaintCompletionDTO dto, LoginUserInfoVO loginUserInfoVO);
    /**
     * 办理进度列表
     * @param complaintId
     * @return
     */
    List<ComplaintProgress> progress(Long complaintId);
    /**
     * 诉求上报
     */
    void saveReport(ComplaintReportDTO dto, LoginUserInfoVO loginUserInfoVO);
    /**
     * 诉求下派
     */
    void saveDispatch(ComplaintDispatch dto, LoginUserInfoVO loginUserInfoVO);
    /**
     * 上报审核
     * @param complaintReporAuditDTO
     * @param loginUserInfoVO
     */
    void reportAudit(ComplaintReporAuditDTO complaintReporAuditDTO, LoginUserInfoVO loginUserInfoVO);
    /**
     * 延期申请
     */
    void saveDelay(ComplaintDelayDTO dto, LoginUserInfoVO loginUserInfoVO);
    /**
     * 延期审核
     */
    void delayAudit(ComplaintDelayAuditDTO complaintDelayAuditDTO, LoginUserInfoVO loginUserInfoVO);
    List<DispatchVO> getDispatchList(LoginUserInfoVO loginUserInfoVO);
    /**
     * 获取待办诉求
     * @param page
     * @param loginUserInfo
     * @return
     */
    Page<ComplaintTodoVO> getTodoList(BasePage page, LoginUserInfoVO loginUserInfo);
    /**
     * 延期情况说明
     * @param complaintId
     * @return
     */
    ComplaintAuditRecord delayDetail(Long complaintId);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IDepartmentService.java
New file
@@ -0,0 +1,11 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.Department;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:43
 */
public interface IDepartmentService extends IService<Department> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IMessageNotificationService.java
New file
@@ -0,0 +1,28 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.sangeshenbian.model.entity.MessageNotification;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.vo.MessageNotificationVO;
import com.panzhihua.sangeshenbian.warpper.MessageNotificationList;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 3:04
 */
public interface IMessageNotificationService extends IService<MessageNotification> {
    IPage<MessageNotification> list(MessageNotificationList query);
    Page<MessageNotificationVO> getMessageList(BasePage page, Long userId);
    /**
     * 标记已读
     * @param loginUserInfoVO
     */
    void read(LoginUserInfoVO loginUserInfoVO);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IProblemTypeService.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.ProblemType;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:26
 */
public interface IProblemTypeService extends IService<ProblemType> {
    IPage<ProblemType> list(String name, Integer pageNum, Integer pageSize);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemMenuService.java
New file
@@ -0,0 +1,19 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 1:03
 */
public interface ISystemMenuService extends IService<SystemMenu> {
    /**
     * 获取获取系统菜单列表
     * @return
     */
    List<SystemMenu> getSystemMenuList();
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemPostService.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.SystemPost;
/**
 * @author zhibing.pu
 * @Date 2025/2/25 19:42
 */
public interface ISystemPostService extends IService<SystemPost> {
    IPage<SystemPost> list(String name, Integer pageNum, Integer pageSize);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemRoleMenuService.java
New file
@@ -0,0 +1,11 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:25
 */
public interface ISystemRoleMenuService extends IService<SystemRoleMenu> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemRoleService.java
New file
@@ -0,0 +1,21 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.SystemRole;
import com.panzhihua.sangeshenbian.warpper.SystemRoleList;
import com.panzhihua.sangeshenbian.warpper.SystemRoleListVo;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:40
 */
public interface ISystemRoleService extends IService<SystemRole> {
    /**
     * 获取列表数据
     * @param systemRoleList
     * @return
     */
    IPage<SystemRoleListVo> list(SystemRoleList systemRoleList);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/ISystemUserService.java
New file
@@ -0,0 +1,29 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import java.util.Optional;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:30
 */
public interface ISystemUserService extends IService<SystemUser> {
    /**
     * 获取列表数据
     * @param query
     * @return
     */
    IPage<SystemUserListVo> list(Integer accountLevel, SystemUserList query);
    /**
     * 根据手机号码查询小程序用户在三个身边的上级角色用户
     */
    Optional<SystemUser> getSystemUserByPhone(String phone);
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/IWorkOrderItemConfigService.java
New file
@@ -0,0 +1,11 @@
package com.panzhihua.sangeshenbian.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.panzhihua.sangeshenbian.model.entity.WorkOrderItemConfig;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:07
 */
public interface IWorkOrderItemConfigService extends IService<WorkOrderItemConfig> {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/BannerServiceImpl.java
New file
@@ -0,0 +1,26 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.BannerMapper;
import com.panzhihua.sangeshenbian.model.entity.Banner;
import com.panzhihua.sangeshenbian.service.IBannerService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:45
 */
@Service
public class BannerServiceImpl extends ServiceImpl<BannerMapper, Banner> implements IBannerService {
    @Override
    public IPage<Banner> list(String name, Integer pageNum, Integer pageSize) {
        Page page = new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        IPage<Banner> list = this.baseMapper.list(page, name);
        return list;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/BcRegionServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.panzhihua.sangeshenbian.model.entity.BcRegion;
import com.panzhihua.sangeshenbian.dao.BcRegionMapper;
import com.panzhihua.sangeshenbian.service.IBcRegionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 行政区划表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Service
public class BcRegionServiceImpl extends ServiceImpl<BcRegionMapper, BcRegion> implements IBcRegionService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComActServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.panzhihua.sangeshenbian.model.entity.ComAct;
import com.panzhihua.sangeshenbian.dao.ComActMapper;
import com.panzhihua.sangeshenbian.service.IComActService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 社区表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Service
public class ComActServiceImpl extends ServiceImpl<ComActMapper, ComAct> implements IComActService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComStreetServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.panzhihua.sangeshenbian.model.entity.ComStreet;
import com.panzhihua.sangeshenbian.dao.ComStreetMapper;
import com.panzhihua.sangeshenbian.service.IComStreetService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * 街道表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Service
public class ComStreetServiceImpl extends ServiceImpl<ComStreetMapper, ComStreet> implements IComStreetService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintAuditRecordServiceImpl.java
New file
@@ -0,0 +1,72 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.sangeshenbian.model.entity.ComplaintAuditRecord;
import com.panzhihua.sangeshenbian.dao.ComplaintAuditRecordMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.IComplaintAuditRecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.Objects;
/**
 * <p>
 * 诉求上报、延期申请审核表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-23
 */
@Service
public class ComplaintAuditRecordServiceImpl extends ServiceImpl<ComplaintAuditRecordMapper, ComplaintAuditRecord> implements IComplaintAuditRecordService {
    @Override
    public void createComplaintAuditRecord(Long complaintId, Integer auditType, String comment, LoginUserInfoVO loginUserInfoVO, SystemUser adminUser) {
        ComplaintAuditRecord auditRecord = new ComplaintAuditRecord();
        auditRecord.setComplaintId(complaintId);
        auditRecord.setLatestFlag(true);
        auditRecord.setAuditType(auditType);
        auditRecord.setAuditStatus(0);
        auditRecord.setComment(comment);
        auditRecord.setCreateBy(loginUserInfoVO.getUserId());
        auditRecord.setCreateTime(new Date());
        auditRecord.setUpdateBy(loginUserInfoVO.getUserId());
        auditRecord.setUpdateTime(new Date());
        String departmentName = "";
        String reporter = loginUserInfoVO.getNickName();
        if (Objects.nonNull(adminUser) && adminUser.getIsAdmin().equals(1)){
            switch (adminUser.getAccountLevel()) {
                case 1:
                    departmentName = "攀枝花市";//默认市级
                    break;
                case 2:
                    departmentName = adminUser.getDistricts();
                    break;
                case 3:
                    departmentName = adminUser.getStreet();
                    break;
                case 4:
                    departmentName = adminUser.getCommunity();
                    break;
            }
            auditRecord.setDepartmentName(departmentName);
            reporter = adminUser.getName();
        }
        auditRecord.setReporter(reporter);
        save(auditRecord);
    }
    @Override
    public void audit(ComplaintAuditRecord complaintAuditRecord, Long userId, Integer auditResult, String rejectReason) {
        complaintAuditRecord.setAuditStatus(auditResult);
        complaintAuditRecord.setRejectReason(rejectReason);
        complaintAuditRecord.setAuditorId(userId);
        complaintAuditRecord.setUpdateBy(userId);
        complaintAuditRecord.setUpdateTime(new Date());
        updateById(complaintAuditRecord);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintFlowServiceImpl.java
New file
@@ -0,0 +1,75 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.netflix.servo.monitor.LongGauge;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.common.service.user.UserService;
import com.panzhihua.sangeshenbian.enums.ReportTypeEnum;
import com.panzhihua.sangeshenbian.model.entity.*;
import com.panzhihua.sangeshenbian.dao.ComplaintFlowMapper;
import com.panzhihua.sangeshenbian.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
/**
 * <p>
 * 诉求流转记录表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class ComplaintFlowServiceImpl extends ServiceImpl<ComplaintFlowMapper, ComplaintFlow> implements IComplaintFlowService {
    private final IComplaintService complaintService;
    private final IBcRegionService bcRegionService;
    private final IComStreetService comStreetService;
    private final IComActService comActService;
    private final UserService userService;
    @Override
    public void createFlow(Long complaintId , Long superiorId, Integer reportType, Integer type, Long userId) {
        String name = getFlowName(reportType, superiorId);
        ComplaintFlow complaintFlow = new ComplaintFlow();
        complaintFlow.setComplaintId(complaintId);
        complaintFlow.setLevel(reportType);
        complaintFlow.setName(name);
        complaintFlow.setCreateTime(new Date(System.currentTimeMillis()));
        complaintFlow.setType(type);
        save(complaintFlow);
    }
    private String getFlowName(Integer reportType, Long superiorId) {
        String name;
        if (reportType == ReportTypeEnum.COMMUNITY.getCode()) {
            ComAct byId = comActService.getById(superiorId);
            name = byId.getName();
        }else if (reportType == ReportTypeEnum.STREET.getCode()) {
            ComStreet comStreet = comStreetService.getById(superiorId);
            name = comStreet.getName();
        }  else if (reportType == ReportTypeEnum.CITY.getCode() || reportType == ReportTypeEnum.DISTRICT.getCode()){
            BcRegion bcRegion = bcRegionService.getOne(new LambdaQueryWrapper<BcRegion>()
                    .eq(BcRegion::getRegionCode, superiorId));
            name = bcRegion.getRegionName();
        } else {
            R<LoginUserInfoVO> userR = userService.getUserInfoByUserId(String.valueOf(superiorId));
            if (R.isOk(userR)) {
                throw new ServiceException("获取用户信息失败");
            }
            name =  userR.getData().getNickName();
        }
        return name;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintProgressServiceImpl.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.panzhihua.sangeshenbian.dao.ComplaintProgressMapper;
import com.panzhihua.sangeshenbian.service.IComplaintProgressService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Service
public class ComplaintProgressServiceImpl extends ServiceImpl<ComplaintProgressMapper, ComplaintProgress> implements IComplaintProgressService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ComplaintServiceImpl.java
New file
@@ -0,0 +1,529 @@
package com.panzhihua.sangeshenbian.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintCompletionDTO;
import com.panzhihua.sangeshenbian.model.dto.ComplaintProcessDTO;
import com.panzhihua.sangeshenbian.model.entity.Complaint;
import com.panzhihua.common.exceptions.ServiceException;
import com.panzhihua.sangeshenbian.enums.ReportTypeEnum;
import com.panzhihua.sangeshenbian.model.dto.*;
import com.panzhihua.sangeshenbian.model.entity.*;
import com.panzhihua.sangeshenbian.enums.ProcessStatusEnum;
import com.panzhihua.sangeshenbian.dao.ComplaintMapper;
import com.panzhihua.sangeshenbian.model.entity.ComplaintFlow;
import com.panzhihua.sangeshenbian.model.entity.ComplaintProgress;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.query.ComplaintQuery;
import com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO;
import com.panzhihua.sangeshenbian.service.IComplaintFlowService;
import com.panzhihua.sangeshenbian.service.IComplaintProgressService;
import com.panzhihua.sangeshenbian.service.IComplaintService;
import com.panzhihua.sangeshenbian.model.vo.DispatchVO;
import com.panzhihua.sangeshenbian.service.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.model.vo.ComplaintVO;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import static cn.hutool.core.util.ObjectUtil.isNull;
/**
 * <p>
 * 问题报告表 服务实现类
 * </p>
 *
 * @author
 * @since 2025-02-22
 */
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class ComplaintServiceImpl extends ServiceImpl<ComplaintMapper, Complaint> implements IComplaintService {
    private final ISystemUserService systemUserService;
    private final IComplaintFlowService complaintFlowService;
    private final IComplaintProgressService complaintProgressService;
    private final IComplaintAuditRecordService complaintAuditRecordService;
    private final IBcRegionService bcRegionService;
    private final IComStreetService comStreetService;
    private final IComActService comActService;
    private final IWorkOrderItemConfigService workOrderItemConfigService;
    @Override
    public void saveComplaint(Complaint complaint, Long userId) {
        // 获取当前日期(年月日)
        String datePrefix = new SimpleDateFormat("yyyyMMdd").format(new Date());
        // 查询当前日期的最大流水号
        Complaint lastComplaint = getOne(new LambdaQueryWrapper<Complaint>()
                .likeRight(Complaint::getSerialNumber, datePrefix) // 查询以当前日期开头的流水号
                .orderByDesc(Complaint::getSerialNumber)
                .last("limit 1"));
        String serialNumber;
        if (isNull(lastComplaint)) {
            // 如果当天没有记录,从 0001 开始
            serialNumber = datePrefix + "0001";
        } else {
            // 获取当前日期的最大流水号,并递增
            String lastSerialNumber = lastComplaint.getSerialNumber();
            int num = Integer.parseInt(lastSerialNumber.substring(lastSerialNumber.length() - 4)); // 提取后4位数字
            serialNumber = datePrefix + String.format("%04d", num + 1); // 递增并格式化为4位
        }
        // 设置流水号
        complaint.setSerialNumber(serialNumber);
        // 设置其他字段
        complaint.setStatus(ProcessStatusEnum.PROCESSING.getCode());
        complaint.setCreateTime(new Date(System.currentTimeMillis()));
        complaint.setCreateBy(userId);
        complaint.setUpdateBy(userId);
        complaint.setUpdateTime(new Date(System.currentTimeMillis()));
        //查询系统配置诉求处理期限,设置截止日期
        WorkOrderItemConfig config = workOrderItemConfigService.lambdaQuery().orderByDesc(WorkOrderItemConfig::getId).last("LIMIT 1").one();
        if (Objects.isNull(config)){
            throw new ServiceException("工单事项未配置,请联系管理员");
        }
        complaint.setClosingTime(new Date(System.currentTimeMillis() + config.getDemandProcessingTime() * 24 * 60 * 60 * 1000));
        // 保存诉求记录
        save(complaint);
    }
    /**
     * @param query
     * @param loginUserInfoVO
     * @return
     */
    @Override
    public Page<ComplaintVO> complaintList(ComplaintQuery query, LoginUserInfoVO loginUserInfoVO) {
        Page<ComplaintVO> page = new Page<>(query.getPageNum(), query.getPageSize());
        //判断当前登录用户级别,查询对应工单
        Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone());
        String targetId = "";
        int isSuperior = 0;
        //上级
        if (systemUserByPhone.isPresent()) {
            SystemUser systemUser = systemUserByPhone.get();
            Integer accountLevel = systemUser.getAccountLevel();
            switch (accountLevel) {
                case 1:
                    //市级
                    targetId = "510400";
                    break;
                case 2:
                    //区县级
                    targetId = systemUser.getDistrictsCode();
                    break;
                case 3:
                    //街道
                    targetId = systemUser.getStreetId().toString();
                    break;
                case 4:
                    //社区
                    targetId = systemUser.getCommunityId().toString();
                    break;
            }
            isSuperior = 1;
        } else {
        //党员
            targetId = loginUserInfoVO.getUserId().toString();
        }
        //查询对应诉求
        query.setUserId(loginUserInfoVO.getUserId());//当前登录用户id
        page = baseMapper.selectComplaintPage(page, query, targetId,isSuperior);
        return page;
    }
    /**
     * 工单详情
     * @param id
     * @return
     */
    @Override
    public ComplaintVO detail(Long id) {
        ComplaintVO detail = baseMapper.getDetail(id);
        if (detail.getStatus().equals(0)) {
            List<ComplaintFlow> list = complaintFlowService.lambdaQuery().eq(ComplaintFlow::getComplaintId, id).orderByAsc(ComplaintFlow::getCreateTime).list();
            detail.setComplaintFlows(list);
        }
        //查询办理进度
        List<ComplaintProgress> list = complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, id)
                .orderByAsc(ComplaintProgress::getCreateTime).list();
        detail.setComplaintProgresses(list);
        return detail;
    }
    /**
     * 办理进度录入
     *
     * @param dto
     * @param loginUserInfoVO
     */
    @Override
    public void saveProcess(ComplaintProcessDTO dto, LoginUserInfoVO loginUserInfoVO) {
        ComplaintProgress complaintProgress = BeanUtil.copyProperties(dto, ComplaintProgress.class);
        complaintProgress.setCreateTime(new Date());
        complaintProgress.setCreateBy(loginUserInfoVO.getUserId());
        complaintProgress.setCreateByName(loginUserInfoVO.getNickName());
        complaintProgressService.save(complaintProgress);
    }
    /**
     * 办理结果录入
     *
     * @param dto
     * @param loginUserInfoVO
     */
    @Override
    public void saveResult(ComplaintCompletionDTO dto, LoginUserInfoVO loginUserInfoVO) {
        Complaint complaint = BeanUtil.copyProperties(dto, Complaint.class);
        complaint.setUpdateTime(new Date());
        complaint.setCompletionUserId(loginUserInfoVO.getUserId());
        complaint.setCompletionUsername(loginUserInfoVO.getNickName());
        complaint.setCompletionUserPhone(loginUserInfoVO.getPhone());
        complaint.setCompletionTime(new Date());
        this.updateById(complaint);
    }
    /**
     * 办理进度列表
     * @param complaintId
     * @return
     */
    @Override
    public List<ComplaintProgress> progress(Long complaintId) {
        //查询办理进度
        return complaintProgressService.lambdaQuery().eq(ComplaintProgress::getComplaintId, complaintId)
                .orderByAsc(ComplaintProgress::getCreateTime).list();
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveReport(ComplaintReportDTO dto, LoginUserInfoVO loginUserInfoVO) {
        String phone = loginUserInfoVO.getPhone();
        SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>()
                .eq(SystemUser::getPhone, phone)
                .eq(SystemUser::getIsAdmin, 1)
                .ne(SystemUser::getStatus, 3)
                .last("LIMIT 1"));
        Long superiorId;
        int reportType;
        if (adminUser == null) {
            superiorId = loginUserInfoVO.getCommunityId();
            if (Objects.isNull(superiorId)){
                throw new ServiceException("上报失败,请绑定社区");
            }
            reportType = ReportTypeEnum.COMMUNITY.getCode();
        } else {
            int accountLevel = adminUser.getAccountLevel(); // 改为基本类型
            if (accountLevel == 1) {
                throw new ServiceException("市级账号,无法上报!");
            }
            reportType = accountLevel - 1;
            // 使用基本类型比较并补充默认分支
            if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) {
                superiorId = Long.parseLong(adminUser.getStreetId());
            } else if (accountLevel == ReportTypeEnum.STREET.getCode()) {
                superiorId = Long.parseLong(adminUser.getDistrictsCode());
            } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
                superiorId = 510400L; // 攀枝花市
            } else {
                // 处理未预期的账号等级
                throw new ServiceException("未知的账号等级");
            }
        }
        Complaint complaint = getById(dto.getComplaintId());
        complaint.setReportType(reportType);
        complaint.setSuperiorId(superiorId);
        updateById(complaint);
        // 标记最新
        complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>()
                .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId())
                .set(ComplaintAuditRecord::getLatestFlag,false));
        // 添加审核记录
        complaintAuditRecordService.createComplaintAuditRecord(dto.getComplaintId(), 2, dto.getComment(), loginUserInfoVO,adminUser);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveDispatch(ComplaintDispatch dto, LoginUserInfoVO loginUserInfoVO) {
        String phone = loginUserInfoVO.getPhone();
        SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>()
                .eq(SystemUser::getPhone, phone)
                .eq(SystemUser::getIsAdmin, 1)
                .ne(SystemUser::getStatus, 3)
                .last("LIMIT 1"));
        if (adminUser == null) {
            throw new ServiceException("无权下派");
        }
        long superiorId;
        int accountLevel = adminUser.getAccountLevel(); // 改为基本类型
        if (accountLevel == 4) {
            throw new ServiceException("社区账号,无法下派!");
        }
        // 使用基本类型比较并补充默认分支
        if (accountLevel == ReportTypeEnum.STREET.getCode()) {
            superiorId = adminUser.getCommunityId().longValue();
        } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
            superiorId = Long.parseLong(adminUser.getStreetId());
        } else if (accountLevel == ReportTypeEnum.CITY.getCode()) {
            superiorId = Long.parseLong(adminUser.getDistrictsCode());
        } else {
            // 处理未预期的账号等级
            throw new ServiceException("未知的账号等级");
        }
        Long superiorOrgId;
        Complaint complaint = getById(dto.getComplaintId());
        superiorOrgId = complaint.getSuperiorId();
        complaint.setReportType(accountLevel + 1);
        complaint.setSuperiorId(superiorId);
        updateById(complaint);
        // 添加流转记录
        complaintFlowService.createFlow(dto.getComplaintId(), superiorOrgId, accountLevel, 1, loginUserInfoVO.getUserId());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void reportAudit(ComplaintReporAuditDTO complaintReporAuditDTO, LoginUserInfoVO loginUserInfoVO) {
        Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone());
        if (!systemUserByPhone.isPresent()) {
            throw new ServiceException("无权审核");
        }
        //查询上报审核记录
        ComplaintAuditRecord complaintAuditRecord = complaintAuditRecordService.lambdaQuery().eq(ComplaintAuditRecord::getComplaintId, complaintReporAuditDTO.getId())
                .eq(ComplaintAuditRecord::getAuditType, 2)
                .eq(ComplaintAuditRecord::getLatestFlag, true)
                .last("LIMIT 1").one();
        if (Objects.isNull(complaintAuditRecord)) {
            throw new ServiceException("上报申请记录不存在");
        }
        //查询待审核诉求
        complaintAuditRecordService.audit(complaintAuditRecord,  loginUserInfoVO.getUserId(),
                complaintReporAuditDTO.getAuditResult(), complaintReporAuditDTO.getRejectReason());
        // 添加流转记录
        Complaint complaint = getById(complaintAuditRecord.getComplaintId());
        Long superiorId = null;
        if (Objects.nonNull(complaint)) {
            superiorId = complaint.getCreateBy();
            if (Objects.nonNull(complaint.getSuperiorId())) {
                superiorId = complaint.getSuperiorId();
            }
            complaintFlowService.createFlow(complaintAuditRecord.getComplaintId(), superiorId,complaint.getReportType(),0, loginUserInfoVO.getUserId());
        }
        //审核通过后,将诉求转移给上级
        if (complaintAuditRecord.getAuditType().equals(2) && complaintAuditRecord.getAuditStatus().equals(1)){
            SystemUser systemUser = systemUserByPhone.get();
                switch (systemUser.getAccountLevel()) {
                    case 1:
                        superiorId = 510400L;//默认市级
                        break;
                    case 2:
                        superiorId = Long.parseLong(systemUser.getDistrictsCode());
                        break;
                    case 3:
                        superiorId = Long.parseLong(systemUser.getStreetId());
                        break;
                    case 4:
                        superiorId = systemUser.getCommunityId();
                        break;
                }
            }
            complaint.setSuperiorId(superiorId);
            updateById(complaint );
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveDelay(ComplaintDelayDTO dto, LoginUserInfoVO loginUserInfoVO) {
        // 标记最新
        complaintAuditRecordService.update(new LambdaUpdateWrapper<ComplaintAuditRecord>()
                .eq(ComplaintAuditRecord::getComplaintId, dto.getComplaintId())
                .set(ComplaintAuditRecord::getLatestFlag,false));
        SystemUser systemUser = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone()).orElse(null);
        Long superiorId;
        int reportType;
        if (systemUser == null) {
            superiorId = loginUserInfoVO.getCommunityId();
            if (Objects.isNull(superiorId)){
                throw new ServiceException("上报失败,请绑定社区");
            }
            reportType = ReportTypeEnum.COMMUNITY.getCode();
        } else {
            int accountLevel = systemUser.getAccountLevel(); // 改为基本类型
            if (accountLevel == 1) {
                throw new ServiceException("市级账号,无法上报!");
            }
            reportType = accountLevel + 1;
            // 使用基本类型比较并补充默认分支
            if (accountLevel == ReportTypeEnum.COMMUNITY.getCode()) {
                superiorId = Long.parseLong(systemUser.getStreetId());
            } else if (accountLevel == ReportTypeEnum.STREET.getCode()) {
                superiorId = Long.parseLong(systemUser.getDistrictsCode());
            } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
                superiorId = 510400L; // 攀枝花市
            } else {
                // 处理未预期的账号等级
                throw new ServiceException("未知的账号等级");
            }
        }
        Complaint complaint = getById(dto.getComplaintId());
        complaint.setReportType(reportType);
        complaint.setSuperiorId(superiorId);
        updateById(complaint);
        // 添加审核记录
        complaintAuditRecordService.createComplaintAuditRecord(dto.getComplaintId(), 1, dto.getComment(), loginUserInfoVO, systemUser);
    }
    @Override
    public void delayAudit(ComplaintDelayAuditDTO complaintDelayAuditDTO, LoginUserInfoVO loginUserInfoVO) {
        //查询待审核诉求
        ComplaintAuditRecord complaintAuditRecord = complaintAuditRecordService.lambdaQuery().eq(ComplaintAuditRecord::getComplaintId, complaintDelayAuditDTO.getComplaintId())
                .eq(ComplaintAuditRecord::getAuditType, 1)
                .eq(ComplaintAuditRecord::getAuditStatus, 0)
                .eq(ComplaintAuditRecord::getLatestFlag, true)
                .last("LIMIT 1").one();
        if (Objects.isNull(complaintAuditRecord)) {
            throw new ServiceException("诉求延期申请不存在");
        }
        complaintAuditRecordService.audit(complaintAuditRecord, loginUserInfoVO.getUserId(),
                complaintDelayAuditDTO.getAuditResult(), complaintDelayAuditDTO.getRejectReason());
    }
    @Override
    public List<DispatchVO> getDispatchList(LoginUserInfoVO loginUserInfoVO) {
        String phone = loginUserInfoVO.getPhone();
        SystemUser adminUser = systemUserService.getOne(new LambdaQueryWrapper<SystemUser>()
                .eq(SystemUser::getPhone, phone)
                .eq(SystemUser::getIsAdmin, 1)
                .ne(SystemUser::getStatus, 3)
                .last("LIMIT 1"));
        if (adminUser == null) {
            throw new ServiceException("无权下派");
        }
        int accountLevel = adminUser.getAccountLevel(); // 改为基本类型
      /*  if (accountLevel == 1) {
            throw new ServiceException("市级账号,无法上报!");
        }*/
        // 使用基本类型比较并补充默认分支
        List<DispatchVO> dispatchVOList = new ArrayList<>();
        if (accountLevel == ReportTypeEnum.STREET.getCode()) {
            List<ComAct> list = comActService.list();
            for (ComAct comAct : list) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(comAct.getCommunityId());
                dispatchVO.setName(comAct.getName());
                dispatchVOList.add(dispatchVO);
            }
        } else if (accountLevel == ReportTypeEnum.DISTRICT.getCode()) {
            List<ComStreet> list = comStreetService.list();
            for (ComStreet street : list) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(Long.valueOf(street.getStreetId()));
                dispatchVO.setName(street.getName());
                dispatchVOList.add(dispatchVO);
            }
        } else if (accountLevel == ReportTypeEnum.CITY.getCode()) {
            List<BcRegion> list = bcRegionService.list(new LambdaQueryWrapper<BcRegion>()
                    .eq(BcRegion::getHierarchyOrder, 3).eq(BcRegion::getParentId, 510400));//获取攀枝花市下的区县
            for (BcRegion region : list) {
                DispatchVO dispatchVO = new DispatchVO();
                dispatchVO.setId(Long.valueOf(region.getRegionCode()));
                dispatchVO.setName(region.getRegionName());
                dispatchVOList.add(dispatchVO);
            }
        } else {
            // 处理未预期的账号等级
            throw new ServiceException("未知的账号等级");
        }
        return dispatchVOList;
    }
    /**
     * 获取待办诉求
     * @param basePage
     * @param loginUserInfo
     * @return
     */
    @Override
    public Page<ComplaintTodoVO> getTodoList(BasePage basePage, LoginUserInfoVO loginUserInfo) {
        Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfo.getPhone());
        String targetId = "";
        int isSuperior = 0;
        //上级
        if (systemUserByPhone.isPresent()) {
            SystemUser systemUser = systemUserByPhone.get();
            Integer accountLevel = systemUser.getAccountLevel();
            switch (accountLevel) {
                case 1:
                    //市级
                    targetId = "510400";
                    break;
                case 2:
                    //区县级
                    targetId = systemUser.getDistrictsCode();
                    break;
                case 3:
                    //街道
                    targetId = systemUser.getStreetId().toString();
                    break;
                case 4:
                    //社区
                    targetId = systemUser.getCommunityId().toString();
                    break;
            }
            isSuperior = 1;
        } else {
            //党员
            targetId = loginUserInfo.getUserId().toString();
        }
        Page<ComplaintTodoVO> page = baseMapper.getTodoList(new Page<>(basePage.getPageNum(), basePage.getPageSize()), targetId,isSuperior);
        return page;
    }
    /**
     * 延期情况说明
     * @param complaintId
     * @return
     */
    @Override
    public ComplaintAuditRecord delayDetail(Long complaintId) {
        return complaintAuditRecordService.lambdaQuery().eq(ComplaintAuditRecord::getComplaintId, complaintId)
                .eq(ComplaintAuditRecord::getAuditType, 1)
                .eq(ComplaintAuditRecord::getLatestFlag, true)
                .last("LIMIT 1").one();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/DepartmentServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.DepartmentMapper;
import com.panzhihua.sangeshenbian.model.entity.Department;
import com.panzhihua.sangeshenbian.service.IDepartmentService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:43
 */
@Service
public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Department> implements IDepartmentService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/MessageNotificationServiceImpl.java
New file
@@ -0,0 +1,80 @@
package com.panzhihua.sangeshenbian.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.vos.LoginUserInfoVO;
import com.panzhihua.common.service.sangeshenbian.SystemUserService;
import com.panzhihua.sangeshenbian.dao.MessageNotificationMapper;
import com.panzhihua.sangeshenbian.model.entity.MessageNotification;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.model.query.BasePage;
import com.panzhihua.sangeshenbian.model.vo.MessageNotificationVO;
import com.panzhihua.sangeshenbian.service.IMessageNotificationService;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.MessageNotificationList;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import java.util.Objects;
import java.util.Optional;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 3:04
 */
@Service
@RequiredArgsConstructor(onConstructor_ = {@Lazy})
public class MessageNotificationServiceImpl extends ServiceImpl<MessageNotificationMapper, MessageNotification> implements IMessageNotificationService {
    private final ISystemUserService systemUserService;
    @Override
    public IPage<MessageNotification> list(MessageNotificationList query) {
        Page page = new Page<>();
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());
        IPage<MessageNotification> list = this.baseMapper.list(page, query);
        return list;
    }
    @Override
    public Page<MessageNotificationVO> getMessageList(BasePage basePage, Long userId) {
        //TODO 待完善
        Page<MessageNotification> page = lambdaQuery().page(new Page<>(basePage.getPageNum(),basePage.getPageSize()));
        return (Page<MessageNotificationVO>) page.convert(item-> BeanUtil.copyProperties(item, MessageNotificationVO.class));
    }
    /**
     * 标记已读
     * @param loginUserInfoVO
     */
    @Override
    public void read(LoginUserInfoVO loginUserInfoVO) {
        String undertakerUserId = "";
        Optional<SystemUser> systemUserByPhone = systemUserService.getSystemUserByPhone(loginUserInfoVO.getPhone());
        if (systemUserByPhone.isPresent()) {
            SystemUser systemUser = systemUserByPhone.get();
            if (systemUser.getIsAdmin().equals(1)){
                switch (systemUser.getAccountLevel()) {
                    case 1:
                        undertakerUserId = "510400";//默认市级
                        break;
                    case 2:
                        undertakerUserId = systemUser.getDistrictsCode();
                        break;
                    case 3:
                        undertakerUserId = systemUser.getStreetId();
                        break;
                    case 4:
                        undertakerUserId = systemUser.getCommunityId().toString();
                        break;
                }
            }
        }else {
            undertakerUserId = loginUserInfoVO.getUserId().toString();
        }
        this.lambdaUpdate().eq(MessageNotification::getUndertakerUserId, undertakerUserId).set(MessageNotification::getReadStatus, 1).update();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/ProblemTypeServiceImpl.java
New file
@@ -0,0 +1,26 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.ProblemTypeMapper;
import com.panzhihua.sangeshenbian.model.entity.ProblemType;
import com.panzhihua.sangeshenbian.service.IProblemTypeService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:27
 */
@Service
public class ProblemTypeServiceImpl extends ServiceImpl<ProblemTypeMapper, ProblemType> implements IProblemTypeService {
    @Override
    public IPage<ProblemType> list(String name, Integer pageNum, Integer pageSize) {
        Page page = new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        IPage<ProblemType> list = this.baseMapper.list(page, name);
        return list;
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemMenuServiceImpl.java
New file
@@ -0,0 +1,40 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.SystemMenuMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemMenu;
import com.panzhihua.sangeshenbian.service.ISystemMenuService;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 1:03
 */
@Service
public class SystemMenuServiceImpl extends ServiceImpl<SystemMenuMapper, SystemMenu> implements ISystemMenuService {
    @Override
    public List<SystemMenu> getSystemMenuList() {
        List<SystemMenu> list = this.list();
        List<SystemMenu> collect = list.stream().filter(s->s.getParentId() == 0).collect(Collectors.toList());
        for (SystemMenu systemMenu : collect) {
            build(systemMenu, list);
        }
        return list;
    }
    public void build(SystemMenu systemMenu, List<SystemMenu> list) {
        List<SystemMenu> collect = list.stream().filter(s->s.getParentId().equals(systemMenu.getParentId())).collect(Collectors.toList());
        if(collect.size() == 0){
            return;
        }
        systemMenu.setChildren(collect);
        for (SystemMenu menu : collect) {
            build(menu, list);
        }
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemPostServiceImpl.java
New file
@@ -0,0 +1,25 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.SystemPostMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemPost;
import com.panzhihua.sangeshenbian.service.ISystemPostService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/25 19:43
 */
@Service
public class SystemPostServiceImpl extends ServiceImpl<SystemPostMapper, SystemPost> implements ISystemPostService {
    @Override
    public IPage<SystemPost> list(String name, Integer pageNum, Integer pageSize) {
        Page page = new Page<>();
        page.setCurrent(pageNum);
        page.setSize(pageSize);
        return this.baseMapper.list(page, name);
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemRoleMenuServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.SystemRoleMenuMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemRoleMenu;
import com.panzhihua.sangeshenbian.service.ISystemRoleMenuService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:26
 */
@Service
public class SystemRoleMenuServiceImpl extends ServiceImpl<SystemRoleMenuMapper, SystemRoleMenu> implements ISystemRoleMenuService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemRoleServiceImpl.java
New file
@@ -0,0 +1,33 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.SystemRoleMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemRole;
import com.panzhihua.sangeshenbian.service.ISystemRoleService;
import com.panzhihua.sangeshenbian.warpper.SystemRoleList;
import com.panzhihua.sangeshenbian.warpper.SystemRoleListVo;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:41
 */
@Service
public class SystemRoleServiceImpl extends ServiceImpl<SystemRoleMapper, SystemRole> implements ISystemRoleService {
    /**
     * 获取列表数据
     * @param query
     * @return
     */
    @Override
    public IPage<SystemRoleListVo> list(SystemRoleList query) {
        Page page = new Page<>();
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());
        return this.baseMapper.list(page, query.getName());
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/SystemUserServiceImpl.java
New file
@@ -0,0 +1,51 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.utlis.StringUtils;
import com.panzhihua.sangeshenbian.dao.SystemUserMapper;
import com.panzhihua.sangeshenbian.model.entity.SystemUser;
import com.panzhihua.sangeshenbian.service.ISystemUserService;
import com.panzhihua.sangeshenbian.warpper.SystemUserList;
import com.panzhihua.sangeshenbian.warpper.SystemUserListVo;
import org.springframework.stereotype.Service;
import java.util.Optional;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:30
 */
@Service
public class SystemUserServiceImpl extends ServiceImpl<SystemUserMapper, SystemUser> implements ISystemUserService {
    /**
     * 获取列表数据
     * @param query
     * @return
     */
    @Override
    public IPage<SystemUserListVo> list(Integer accountLevel, SystemUserList query) {
        Page page = new Page<>();
        page.setCurrent(query.getPageNum());
        page.setSize(query.getPageSize());
        IPage<SystemUserListVo> list = this.baseMapper.list(page, accountLevel, query);
        return list;
    }
    /**
     * 根据手机号码查询小程序用户在三个身边的上级角色用户
     * @param phone
     * @return
     */
    @Override
    public Optional<SystemUser> getSystemUserByPhone(String phone) {
        if (StringUtils.isBlank(phone)) {
            return Optional.empty();
        }
        return this.lambdaQuery()
                .eq(SystemUser::getPhone, phone).ne(SystemUser::getStatus, 3)
                .eq(SystemUser::getIsAdmin, 1).last("LIMIT 1").oneOpt();
    }
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/service/impl/WorkOrderItemConfigServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.panzhihua.sangeshenbian.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.sangeshenbian.dao.WorkOrderItemConfigMapper;
import com.panzhihua.sangeshenbian.model.entity.WorkOrderItemConfig;
import com.panzhihua.sangeshenbian.service.IWorkOrderItemConfigService;
import org.springframework.stereotype.Service;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 2:08
 */
@Service
public class WorkOrderItemConfigServiceImpl extends ServiceImpl<WorkOrderItemConfigMapper, WorkOrderItemConfig> implements IWorkOrderItemConfigService {
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/AddSystemRole.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:11
 */
@Data
@ApiModel
public class AddSystemRole {
    @ApiModelProperty(value = "角色名称", required = true)
    private String name;
    @ApiModelProperty(value = "权限id集合", required = true)
    private List<Integer> systemMenuIds;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/EditSystemRole.java
New file
@@ -0,0 +1,22 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:11
 */
@Data
@ApiModel
public class EditSystemRole {
    @ApiModelProperty(value = "角色ID", required = true)
    private Integer id;
    @ApiModelProperty(value = "角色名称", required = true)
    private String name;
    @ApiModelProperty(value = "权限id集合", required = true)
    private List<Integer> systemMenuIds;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/LoginVo.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 22:33
 */
@Data
@ApiModel
public class LoginVo {
    @ApiModelProperty(value = "登录账号", required = true)
    private String phone;
    @ApiModelProperty(value = "登录密码", required = true)
    private String password;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/MessageNotificationList.java
New file
@@ -0,0 +1,32 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/23 3:10
 */
@ApiModel
@Data
public class MessageNotificationList {
    @ApiModelProperty("标题")
    private String title;
    @ApiModelProperty("承办人")
    private String undertaker;
    @ApiModelProperty("电话")
    private String phone;
    @ApiModelProperty("所属单位id")
    private Integer departmentId;
    @ApiModelProperty("职位id")
    private Integer positionId;
    @ApiModelProperty("页码")
    private Integer pageNum;
    @ApiModelProperty("每页数")
    private Integer pageSize;
    private Integer undertakerType;
    private String userId;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleInfo.java
New file
@@ -0,0 +1,22 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 17:36
 */
@Data
@ApiModel
public class SystemRoleInfo {
    @ApiModelProperty("角色ID")
    private Integer id;
    @ApiModelProperty("角色名称")
    private String name;
    @ApiModelProperty("菜单id集合")
    private List<Integer> systemMenuIds;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleList.java
New file
@@ -0,0 +1,20 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:58
 */
@Data
@ApiModel
public class SystemRoleList {
    @ApiModelProperty(value = "角色名称")
    private String name;
    @ApiModelProperty(value = "页码", required = true)
    private Integer pageNum;
    @ApiModelProperty(value = "每页数量", required = true)
    private Integer pageSize;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemRoleListVo.java
New file
@@ -0,0 +1,18 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/19 16:50
 */
@Data
@ApiModel
public class SystemRoleListVo {
    @ApiModelProperty("数据ID")
    private Integer id;
    @ApiModelProperty("角色名称")
    private String name;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemUserList.java
New file
@@ -0,0 +1,28 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/20 11:01
 */
@Data
@ApiModel
public class SystemUserList {
    @ApiModelProperty(value = "姓名")
    private String name;
    @ApiModelProperty(value = "联系方式")
    private String phone;
    @ApiModelProperty(value = "所在单位")
    private Integer departmentId;
    @ApiModelProperty(value = "所属角色")
    private Integer systemRoleId;
    @ApiModelProperty(value = "账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)")
    private Integer accountLevel;
    @ApiModelProperty(value = "页码", required = true)
    private Integer pageNum;
    @ApiModelProperty(value = "每页数量", required = true)
    private Integer pageSize;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/SystemUserListVo.java
New file
@@ -0,0 +1,30 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author zhibing.pu
 * @Date 2025/2/20 11:05
 */
@Data
@ApiModel
public class SystemUserListVo {
    @ApiModelProperty("数据ID")
    private Integer id;
    @ApiModelProperty("姓名")
    private String name;
    @ApiModelProperty("联系方式")
    private String phone;
    @ApiModelProperty("所属单位")
    private String departmentName;
    @ApiModelProperty("所属职位")
    private String systemPostName;
    @ApiModelProperty("所属角色")
    private String systemRoleName;
    @ApiModelProperty(value = "账号层级(1=市级账号,2=区县账号,3=街道账号,4=社区账号)")
    private Integer accountLevel;
    @ApiModelProperty("账号状态(1=使用中,2=已冻结)")
    private Integer status;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/java/com/panzhihua/sangeshenbian/warpper/TokenVo.java
New file
@@ -0,0 +1,33 @@
package com.panzhihua.sangeshenbian.warpper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
import java.util.Set;
/**
 * @author zhibing.pu
 * @Date 2025/2/18 23:32
 */
@ApiModel
@Data
public class TokenVo {
    @ApiModelProperty("接口请求令牌")
    private String token;
    @ApiModelProperty("刷新token有效期长")
    private String refreshToken;
    @ApiModelProperty("communityId")
    private Long communityId;
    @ApiModelProperty("openId")
    private String openId;
    @ApiModelProperty("社区经度")
    private String lng;
    @ApiModelProperty("社区维度")
    private String lat;
    @ApiModelProperty("权限集合")
    private Set<String> menu;
    @ApiModelProperty("用户名")
    private String name;
}
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/bootstrap.yml
New file
@@ -0,0 +1,43 @@
spring:
  application:
    name: huacheng-sangeshenbian
  cloud:
    config:
      discovery:
        enabled: true
        service-id: huacheng-config  # 注册中心的服务名
      profile: ${ENV:dev}  # 指定配置文件的环境
      uri: http://${CONFIG_URL:localhost}:6193/
  profiles:
    active: ${ENV:dev}
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
eureka:
  client:
    service-url:
      defaultZone: http://${EUREKA_URL:localhost}:8192/eureka
#实体加密、解密、字段脱敏拦截设置
domain:
  decrypt: true
  encrypt: true
  aesKey: Ryo7M3n8loC5
  sensitive: true
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: always
  metrics:
    tags:
      application: huacheng-sangeshenbian
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/logback-spring.xml
New file
@@ -0,0 +1,78 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
    <springProfile name="dev">
        <property name="LOG_HOME" value="F:\log"/>
    </springProfile>
       <springProfile name="test">
        <property name="LOG_HOME" value="/mnt/data/gocd/log" />
    </springProfile>
<property name="LOG_HOME" value="/mnt/data/gocd/log" />
    <!-- 控制台输出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 按照每天生成日志文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件输出的文件名-->
            <FileNamePattern>${LOG_HOME}/huachengservice_sangeshenbian.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日志文件保留天数-->
            <MaxHistory>30</MaxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日志文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
    <!--myibatis log configure-->
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG"/>
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>
    <logger name="com.panzhihua.sangeshenbian" level="DEBUG"/>
    <!-- 日志输出级别 -->
    <root level="DEBUG">
        <appender-ref ref="STDOUT" />
    </root>
    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>
    <!--慢接口和方法日志记录到不同的文件-->
    <appender name="slowClassAndMethodAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${LOG_HOME}/slow_service_community.log</File>
        <append>true</append>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/slow_service_community.%d.%i.log</fileNamePattern>
            <maxHistory>10</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%thread] [%c{0}:%L] : %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--这是我们定义的慢接口和方法日志传入的名称-->
    <logger name="slowClassAndMethodLog" additivity="false" level="INFO">
        <appender-ref ref="slowClassAndMethodAppender"/>
    </logger>
</configuration>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/BannerMapper.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.BannerMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.model.entity.Banner">
        select * from banner where del = 0
        <if test="name != null and name != ''">
            and name like concat('%',#{name},'%')
        </if>
        order by create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/BcRegionMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.BcRegionMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComActMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComActMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComStreetMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComStreetMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintAuditRecordMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComplaintAuditRecordMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintFlowMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComplaintFlowMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintMapper.xml
New file
@@ -0,0 +1,156 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComplaintMapper">
    <select id="selectComplaintPage" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintVO">
        SELECT sc.id,
               sc.serial_number,
               sc.time,
               sc.problem_type,
               sc.name,
               sc.contact_number,
               sc.location,
               sc.detailed_address,
               sc.description_title,
               sc.description_content,
               sc.images,
               sc.videos,
               CASE
                   WHEN scar.audit_type = 1 AND scar.audit_status = 0 THEN 7
                   WHEN scar.audit_type = 2 AND scar.audit_status = 0 THEN 5
                   WHEN scar.audit_status = 2 THEN 6
                   ELSE sc.status
                   END          AS status,
               sc.report_type,
               sc.superior_id,
               sc.create_by,
               sc.create_time,
               sc.update_by,
               sc.update_time,
               sc.completion_description,
               sc.completion_images,
               sc.completion_videos,
               sc.completion_other_description,
               sc.completion_time,
               sc.completion_user_id,
               sc.completion_username,
               sc.completion_user_phone,
               sc.closing_time,
               sc.over_time_days,
               sc.latitude,
               sc.longitude,
               scar.audit_type,
               scar.audit_status,
               scar.comment,
               scar.images,
               scar.videos,
               scar.create_time AS reportTime,
               scar.system_user_id,
               scar.reporter,
               scar.department_name,
               scar.department_id
        FROM sgsb_complaint sc
                 LEFT JOIN sgsb_complaint_audit_record scar ON scar.complaint_id = sc.id AND scar.latest_flag = 1
        <where>
            <if test="query.type ==null and isSuperior == 1">
                 AND (scar.auditor_id IS NULL OR scar.auditor_id != #{query.userId})
            </if>
            <if test="isSuperior == 1 and targetId != null">
                AND sc.superior_id = #{targetId}
            </if>
            <if test="isSuperior == 0 and targetId != null">
                AND sc.create_by = #{targetId}
            </if>
            <if test="query.type!=null and query.type == 0">
                AND(scar.audit_type = 1 AND scar.audit_status = 0) OR (scar.audit_type = 2 AND scar.audit_status = 0)
            </if>
            <if test="query.type!=null and query.type == 1">
                AND sc.status IN(0,1,2)
            </if>
            <if test="query.type!=null and query.type == 2">
                AND sc.status = 3
            </if>
        </where>
        ORDER BY sc.create_time DESC
    </select>
    <select id="getDetail" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintVO">
        SELECT sc.id,
        sc.serial_number,
        sc.time,
        sc.problem_type,
        sc.name,
        sc.contact_number,
        sc.location,
        sc.detailed_address,
        sc.description_title,
        sc.description_content,
        sc.images,
        sc.videos,
        CASE
        WHEN scar.audit_type = 1 AND scar.audit_status = 0 THEN 7
        WHEN scar.audit_type = 2 AND scar.audit_status = 0 THEN 5
        WHEN scar.audit_status = 2 THEN 6
        ELSE sc.status
        END          AS status,
        sc.report_type,
        sc.superior_id,
        sc.create_by,
        sc.create_time,
        sc.update_by,
        sc.update_time,
        sc.completion_description,
        sc.completion_images,
        sc.completion_videos,
        sc.completion_other_description,
        sc.completion_time,
        sc.completion_user_id,
        sc.completion_username,
        sc.completion_user_phone,
        sc.closing_time,
        sc.over_time_days,
        sc.latitude,
        sc.longitude,
        scar.audit_type,
        scar.audit_status,
        scar.comment,
        scar.images,
        scar.videos,
        scar.create_time AS reportTime,
        scar.system_user_id,
        scar.reporter,
        scar.department_name,
        scar.department_id,
        scar.comment,
        scar.create_time AS auditTime,
        scar.reject_reason,
        su.nick_name,
        su.phone,
        su2.nick_name AS auditorName,
        su2.phone AS auditorPhone
        FROM sgsb_complaint sc
            LEFT JOIN sys_user su ON su.user_id = sc.create_by
                 LEFT JOIN sgsb_complaint_audit_record scar ON scar.complaint_id = sc.id AND scar.latest_flag = 1
        LEFT JOIN sys_user su2 ON su2.user_id = scar.auditor_id AND scar.audit_status != 0
        <where>
            sc.id = #{id}
        </where>
    </select>
    <select id="getTodoList" resultType="com.panzhihua.sangeshenbian.model.vo.ComplaintTodoVO">
        SELECT sc.id,
        sc.description_title,
        sc.closing_time,
        su.image_url
        FROM sgsb_complaint sc
        LEFT JOIN sys_user su  ON su.user_id = sc.create_by
        <where>
            sc.status = 0
            <if test="isSuperior == 1 and targetId != null">
                AND sc.superior_id = #{targetId}
            </if>
            <if test="isSuperior == 0 and targetId != null">
                AND sc.create_by = #{targetId}
            </if>
        </where>
        ORDER BY sc.create_time DESC
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ComplaintProgressMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ComplaintProgressMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/DepartmentMapper.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.DepartmentMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/MessageNotificationMapper.xml
New file
@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.MessageNotificationMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.model.entity.MessageNotification">
        select
            a.id,
            a.title,
            b.name as undertakerUser,
            a.phone,
            d.name as department,
            e.name as `position`,
            DATE_FORMAT(a.response_time, '%Y-%m-%d')as responseTime,
            if(a.prompt_type = 1, '临期提醒', '超时提醒') as promptType,
            if(a.read_status = 0, '未读', '已读') as readStatus
        from sgsb_message_notification a
        left join sys_user b on (a.undertaker_user_id = b.id)
        left join sgsb_system_user c on (a.phone = c.phone)
        left join sgsb_department d on (c.department_id = d.id)
        left join sgsb_position e on (c.position_id = e.id)
        where a.undertaker_type = #{query.undertakerType} and a.undertaker_user_id = #{query.userId}
        <if test="query.title != null and query.title != ''">
            and a.title like concat('%', #{query.title}, '%')
        </if>
        <if test="query.undertakerUser != null and query.undertakerUser != ''">
            and b.name like concat('%', #{query.undertakerUser}, '%')
        </if>
        <if test="query.phone != null and query.phone != ''">
            and a.phone like concat('%', #{query.phone}, '%')
        </if>
        <if test="query.departmentId != null">
            and c.department_id = #{query.department}
        </if>
        <if test="query.positionId != null">
            and c.position_id = #{query.position}
        </if>
        order by a.read_status asc, a.create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/ProblemTypeMapper.xml
New file
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.ProblemTypeMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.model.entity.ProblemType">
        select * from sgsb_problem_type where del = 0
        <if test="name != null and name != ''">
            and name like concat('%', #{name}, '%')
        </if>
        order by create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemMenuMapper.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.SystemMenuMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemPostMapper.xml
New file
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.SystemPostMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.model.entity.SystemPost">
        select
        id,
        name,
        del,
        create_time
        from sgsb_system_post
        where del = 0
        <if test="name != null and name != ''">
            and name like concat('%',#{name},'%')
        </if>
        order by create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemRoleMapper.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.SystemRoleMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.warpper.SystemRoleListVo">
        select id, name from sgsb_system_role where del = 0
        <if test="null != name and '' != name">
            and name like CONCAT('%', #{name}, '%')
        </if>
        order by create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemRoleMenuMapper.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.SystemRoleMenuMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/SystemUserMapper.xml
New file
@@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.SystemUserMapper">
    <select id="list" resultType="com.panzhihua.sangeshenbian.warpper.SystemUserListVo">
        select
            a.id,
            a.name,
            a.phone,
            IF(a.four_department_id is not null, e.`name`, IF(a.three_department_id is not null, d.`name`, IF(a.two_department_id is not null, c.`name`, b.`name`))) as departmentName,
            f.`name` as systemPostName,
            g.`name` as systemRoleName,
            a.account_level as accountLevel,
            a.`status`
        from sgsb_system_user a
        left join sgsb_department b on (a.one_department_id = b.id)
        left join sgsb_department c on (a.two_department_id = c.id)
        left join sgsb_department d on (a.three_department_id = d.id)
        left join sgsb_department e on (a.four_department_id = e.id)
        left join sgsb_system_post f on (a.system_post_id = f.id)
        left join sgsb_system_role g on (a.system_role_id = g.id)
        where a.`status` != 3
        <if test="1 != accountLevel or 5 != accountLevel">
            and a.account_level &lt;= #{accountLevel}
        </if>
        <if test="5 == accountLevel">
            and a.id = 0
        </if>
        <if test="null != query.name and '' != query.name">
            and a.name like CONCAT('%', #{query.name}, '%')
        </if>
        <if test="null != query.phone and '' != query.phone">
            and a.phone like CONCAT('%', #{query.phone}, '%')
        </if>
        <if test="null != query.departmentId">
            and (a.one_department_id = #{query.departmentId} or a.two_department_id = #{query.departmentId} or a.three_department_id = #{query.departmentId} or a.four_department_id = #{query.departmentId})
        </if>
        <if test="null != query.systemRoleId">
            and a.system_role_id = #{query.systemRoleId}
        </if>
        <if test="null != query.accountLevel">
            and a.account_level = #{query.accountLevel}
        </if>
        order by a.create_time desc
    </select>
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/main/resources/mapper/WorkOrderItemConfigMapper.xml
New file
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.panzhihua.sangeshenbian.dao.WorkOrderItemConfigMapper">
</mapper>
springcloud_k8s_panzhihuazhihuishequ/service_sangeshenbian/src/test/java/com/panzhihua/ServiceSangeshenbianApplicationTest.java
New file
@@ -0,0 +1,38 @@
package com.panzhihua;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
 * Unit test for simple App.
 */
public class ServiceSangeshenbianApplicationTest
    extends TestCase
{
    /**
     * Create the test case
     *
     * @param testName name of the test case
     */
    public ServiceSangeshenbianApplicationTest(String testName )
    {
        super( testName );
    }
    /**
     * @return the suite of tests being tested
     */
    public static Test suite()
    {
        return new TestSuite( ServiceSangeshenbianApplicationTest.class );
    }
    /**
     * Rigourous Test :-)
     */
    public void testApp()
    {
        assertTrue( true );
    }
}
springcloud_k8s_panzhihuazhihuishequ/zuul/src/main/java/com/panzhihua/zuul/filters/JWTAuthenticationTokenFilter.java
@@ -9,6 +9,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.panzhihua.common.model.vos.sangeshenbian.SystemUserVo;
import com.panzhihua.common.model.vos.user.SysAppConfigVO;
import com.panzhihua.common.utlis.*;
import org.springframework.context.ApplicationContext;
@@ -187,7 +188,69 @@
                        }
                        valueOperations.set(roleAppletKey, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                    }
                } else {
                    // 登录用户的所有信息
                    String userKey = UserConstants.LOGIN_USER_INFO + userId;
                    Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                    if (hasKeyLoginUserInfo) {
                        String userInfo = valueOperations.get(userKey);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    } else {
                        R<LoginUserInfoVO> r = userService.getUserInfoByUserId(userId);
                        if (!R.isOk(r)) {
                            ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                            return;
                        }
                        LoginUserInfoVO data = r.getData();
                        String userInfo = JSONObject.toJSONString(data);
                        valueOperations.set(userKey, userInfo, 24, TimeUnit.HOURS);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    }
                } else if(21 == type){
                    //三个身边
                    String key = SecurityConstants.ROLE_USER + "sangeshenbian:" + userId;
                    Boolean aBoolean = stringRedisTemplate.hasKey(key);
                    R<SystemUserVo> r = systemUserService.getUserById(userId);
                    if (aBoolean) {
                        String roles = valueOperations.get(key);
                        authorities = JSONArray.parseArray(roles, SimpleGrantedAuthority.class);
                    } else {
                        SystemUserVo data = r.getData();
                        if (!ObjectUtils.isEmpty(data)) {
                            authorities.add(new SimpleGrantedAuthority(data.getSystemRoleId().toString()));
                            valueOperations.set(key, JSONArray.toJSONString(authorities), 24, TimeUnit.HOURS);
                        }
                    }
                    UsernamePasswordAuthenticationToken authentication =
                            new UsernamePasswordAuthenticationToken(userId, userId, authorities);// 主要使用权限 账户 密码 不重要
                    SecurityContextHolder.getContext().setAuthentication(authentication);
                    safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_LOGOUT, tokenHeader);
                    // 登录用户的所有信息
                    String userKey = UserConstants.LOGIN_USER_INFO + "sangeshenbian:" + userId;
                    Boolean hasKeyLoginUserInfo = stringRedisTemplate.hasKey(userKey);
                    if (hasKeyLoginUserInfo) {
                        String userInfo = valueOperations.get(userKey);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    } else {
                        if (!R.isOk(r)) {
                            ResultUtil.responseJson(response, R.fail(HttpStatus.ERROR, "登录用户信息查询失败"));
                            return;
                        }
                        SystemUserVo data = r.getData();
                        String userInfo = JSONObject.toJSONString(data);
                        valueOperations.set(userKey, userInfo, 24, TimeUnit.HOURS);
                        byte[] encrypt = AES.encrypt(userInfo, Constants.AES_KEY);
                        String hexStr = AES.parseByte2HexStr(encrypt);
                        safeboxRequestWrapper.addHeader(TokenConstant.TOKEN_USERINFO, hexStr);
                    }
                }else {
                    String key = SecurityConstants.ROLE_USER + userId;
                    Boolean aBoolean = stringRedisTemplate.hasKey(key);
                    if (aBoolean) {