New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | |
| | | <module>service_dlz</module> |
| | | <module>service_bracelet</module> |
| | | <module>service_jinhui_community</module> |
| | | <!--三个身边--> |
| | | <module>service_sangeshenbian</module> |
| | | </modules> |
| | | <packaging>pom</packaging> |
| | | |
New file |
| | |
| | | <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> |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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 "_"; |
| | | } |
| | | |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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()); |
| | | } |
| | | } |
New file |
| | |
| | | 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)); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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("执行事务"); |
| | | } |
| | | } |
New file |
| | |
| | | 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) |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | // } |
| | | } |
| | | |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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())); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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>(); |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
New file |
| | |
| | | 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> { |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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 { |
| | | |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
| | | |
New file |
| | |
| | | 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 { |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | 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); |
| | | } |
| | | } |
New file |
| | |
| | | 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 { |
| | | } |
New file |
| | |
| | | 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()); |
| | | } |
| | | } |
New file |
| | |
| | | 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(); |
| | | } |
| | | } |
New file |
| | |
| | | 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 { |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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; |
| | | } |
New file |
| | |
| | | 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 |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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 <= #{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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | 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 ); |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | } |
| | | 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) { |