Selaa lähdekoodia

龙洞堡机场增加黑名单的逻辑

王鑫刚 5 kuukautta sitten
vanhempi
commit
de82bda92a
61 muutettua tiedostoa jossa 1184 lisäystä ja 14 poistoa
  1. 6 0
      .idea/inspectionProfiles/Project_Default.xml
  2. 26 1
      pom.xml
  3. 2 1
      src/main/java/com/yx/face/boot/component/tk/TKMapper.java
  4. 35 0
      src/main/java/com/yx/face/boot/mybatis/MyMetaObjectHandler.java
  5. 30 0
      src/main/java/com/yx/face/boot/mybatis/MybatisConfig.java
  6. 35 0
      src/main/java/com/yx/face/boot/uitls/AppTokenUtil.java
  7. 120 0
      src/main/java/com/yx/face/boot/uitls/ClassUtil.java
  8. 104 0
      src/main/java/com/yx/face/controller/admin/UserBlackTaskController.java
  9. 1 1
      src/main/java/com/yx/face/dao/FaceDeviceDao.java
  10. 17 0
      src/main/java/com/yx/face/dao/UserBlackTaskDao.java
  11. 15 0
      src/main/java/com/yx/face/model/black/AdminLessVo.java
  12. 19 0
      src/main/java/com/yx/face/model/black/BlackPersonDto.java
  13. 16 0
      src/main/java/com/yx/face/model/black/DeviceBlackDto.java
  14. 35 0
      src/main/java/com/yx/face/model/black/DeviceBlackVo.java
  15. 23 0
      src/main/java/com/yx/face/model/black/UserBlackSearch.java
  16. 29 0
      src/main/java/com/yx/face/model/black/UserBlackTaskDto.java
  17. 21 0
      src/main/java/com/yx/face/model/black/UserBlackTaskSearch.java
  18. 28 0
      src/main/java/com/yx/face/model/black/UserBlackTaskVo.java
  19. 31 0
      src/main/java/com/yx/face/model/black/UserBlackVo.java
  20. 3 1
      src/main/java/com/yx/face/model/entity/Admin.java
  21. 3 0
      src/main/java/com/yx/face/model/entity/AdminTag.java
  22. 4 3
      src/main/java/com/yx/face/model/entity/AlcoholTestRecord.java
  23. 3 0
      src/main/java/com/yx/face/model/entity/AreaCode.java
  24. 5 0
      src/main/java/com/yx/face/model/entity/FaceDevice.java
  25. 3 0
      src/main/java/com/yx/face/model/entity/FaceDeviceLogo.java
  26. 3 0
      src/main/java/com/yx/face/model/entity/FaceLog.java
  27. 3 0
      src/main/java/com/yx/face/model/entity/FaceLogFrom.java
  28. 3 0
      src/main/java/com/yx/face/model/entity/FacePass.java
  29. 3 0
      src/main/java/com/yx/face/model/entity/FaceRequestLog.java
  30. 3 0
      src/main/java/com/yx/face/model/entity/FaceTask.java
  31. 3 0
      src/main/java/com/yx/face/model/entity/HealthCode.java
  32. 3 0
      src/main/java/com/yx/face/model/entity/PoliceStation.java
  33. 3 0
      src/main/java/com/yx/face/model/entity/Role.java
  34. 3 0
      src/main/java/com/yx/face/model/entity/RoleAuth.java
  35. 3 0
      src/main/java/com/yx/face/model/entity/ScanCodeBoxCode.java
  36. 3 0
      src/main/java/com/yx/face/model/entity/ShortTermFaceLog.java
  37. 3 0
      src/main/java/com/yx/face/model/entity/SystemConfig.java
  38. 3 0
      src/main/java/com/yx/face/model/entity/SystemLongTermDocuments.java
  39. 3 0
      src/main/java/com/yx/face/model/entity/SystemPushConfig.java
  40. 17 0
      src/main/java/com/yx/face/model/entity/UserBlackList.java
  41. 3 0
      src/main/java/com/yx/face/model/entity/UserBlackListFrom.java
  42. 69 0
      src/main/java/com/yx/face/model/entity/UserBlackTask.java
  43. 3 0
      src/main/java/com/yx/face/model/entity/UserControlEarlyWarningList.java
  44. 3 0
      src/main/java/com/yx/face/model/entity/UserControlEarlyWarningListLog.java
  45. 3 0
      src/main/java/com/yx/face/model/entity/UserFaceRecords.java
  46. 3 0
      src/main/java/com/yx/face/model/entity/UserFaceRecordsFrom.java
  47. 3 0
      src/main/java/com/yx/face/model/entity/UserInfo.java
  48. 3 0
      src/main/java/com/yx/face/model/entity/UserInfoFrom.java
  49. 3 0
      src/main/java/com/yx/face/model/entity/UserVisitorList.java
  50. 3 0
      src/main/java/com/yx/face/model/entity/UserVisitorListFrom.java
  51. 3 0
      src/main/java/com/yx/face/model/entity/UserWhitelist.java
  52. 3 0
      src/main/java/com/yx/face/model/entity/UserWhitelistFrom.java
  53. 3 0
      src/main/java/com/yx/face/service/AdminService.java
  54. 29 0
      src/main/java/com/yx/face/service/UserBlackTaskService.java
  55. 14 1
      src/main/java/com/yx/face/service/impl/AdminServiceImpl.java
  56. 1 1
      src/main/java/com/yx/face/service/impl/UserBlackListServiceImpl.java
  57. 356 0
      src/main/java/com/yx/face/service/impl/UserBlackTaskServiceImpl.java
  58. 2 2
      src/main/java/com/yx/face/service/impl/UserVisitorListServiceImpl.java
  59. 3 2
      src/main/resources/application-test.yml
  60. 1 1
      src/main/resources/mapper/FaceDeviceDao.xml
  61. BIN
      src/main/webapp/excel/blacklistExcel.xlsx

+ 6 - 0
.idea/inspectionProfiles/Project_Default.xml

@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <profile version="1.0">
+    <option name="myName" value="Project Default" />
+    <inspection_tool class="SpringJavaInjectionPointsAutowiringInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" editorAttributes="INFO_ATTRIBUTES" />
+  </profile>
+</component>

+ 26 - 1
pom.xml

@@ -86,6 +86,10 @@
                     <artifactId>mybatis-spring-boot-starter</artifactId>
                     <groupId>org.mybatis.spring.boot</groupId>
                 </exclusion>
+                <exclusion>
+                    <artifactId>jsqlparser</artifactId>
+                    <groupId>com.github.jsqlparser</groupId>
+                </exclusion>
             </exclusions>
         </dependency>
 
@@ -140,7 +144,7 @@
         <dependency>
             <groupId>cn.hutool</groupId>
             <artifactId>hutool-all</artifactId>
-            <version>5.3.9</version>
+            <version>5.8.11</version>
         </dependency>
         <dependency>
             <groupId>com.squareup.okhttp3</groupId>
@@ -152,6 +156,16 @@
             <artifactId>fastjson</artifactId>
             <version>1.2.60</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
 
         <!--========================【微信对接工具包相关依赖】===============================-->
         <dependency>
@@ -200,7 +214,18 @@
             <artifactId>netty-all</artifactId>
             <version>4.1.36.Final</version>
         </dependency>
+        <!-- 数据库相关 https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <version>3.5.2</version>
+        </dependency>
 
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-extension</artifactId>
+            <version>3.5.2</version>
+        </dependency>
     </dependencies>
 
 

+ 2 - 1
src/main/java/com/yx/face/boot/component/tk/TKMapper.java

@@ -1,5 +1,6 @@
 package com.yx.face.boot.component.tk;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import tk.mybatis.mapper.common.IdsMapper;
 import tk.mybatis.mapper.common.Mapper;
 import tk.mybatis.mapper.common.MySqlMapper;
@@ -15,5 +16,5 @@ import tk.mybatis.mapper.common.MySqlMapper;
  * @author: PWB <br>
  * @version: 1.0 <br>
  */
-public interface TKMapper<T> extends Mapper<T>, MySqlMapper<T>, IdsMapper<T> {
+public interface TKMapper<T> extends Mapper<T>, MySqlMapper<T>, IdsMapper<T>, BaseMapper<T> {
 }

+ 35 - 0
src/main/java/com/yx/face/boot/mybatis/MyMetaObjectHandler.java

@@ -0,0 +1,35 @@
+package com.yx.face.boot.mybatis;
+
+import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
+import org.apache.ibatis.reflection.MetaObject;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @author shisl
+ * @package cn.hh.party.building.app.config
+ * @class MyMetaObjectHandler
+ * @date 2022/12/22 下午2:55
+ * @description mybatis-plus数据插入监听器,可自动插入默认值
+ * 将需要此功能的属性加上注解 @TableField(fill = FieldFill.INSERT/INSERT_UPDATE)
+ */
+@Component
+public class MyMetaObjectHandler implements MetaObjectHandler {
+
+    @Override
+    public void insertFill(MetaObject metaObject) {
+        // 执行插入操作时执行该逻辑
+        // 实体类属性名称和要自动填充的值
+        this.setFieldValByName("createTime", new Date(), metaObject);
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+        // 设置逻辑删除字段为0
+        this.setFieldValByName("isDeleted", Boolean.FALSE, metaObject);
+        this.setFieldValByName("version", 1, metaObject);    }
+
+    @Override
+    public void updateFill(MetaObject metaObject) {
+        // 执行更新操作时执行该逻辑
+        this.setFieldValByName("updateTime", new Date(), metaObject);
+    }
+}

+ 30 - 0
src/main/java/com/yx/face/boot/mybatis/MybatisConfig.java

@@ -0,0 +1,30 @@
+package com.yx.face.boot.mybatis;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author shisl
+ * @package cn.hh.party.building.app.config
+ * @class MybatisConfig
+ * @date 2022/12/22 下午2:59
+ * @description
+ */
+@Configuration
+public class MybatisConfig {
+
+    @Bean
+    public MybatisPlusInterceptor mybatisPlusInterceptor() {
+        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
+        // 配置乐观锁插件
+        mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
+        // 配置分页插件
+        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+        return mybatisPlusInterceptor;
+    }
+
+}

+ 35 - 0
src/main/java/com/yx/face/boot/uitls/AppTokenUtil.java

@@ -0,0 +1,35 @@
+package com.yx.face.boot.uitls;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * @author shisl
+ * @package cn.hanghui.outapi.platform.common.utils
+ * @class AppTokenUtil
+ * @date 2023/10/8 下午5:27
+ * @description
+ */
+public class AppTokenUtil {
+
+    public static List<String> getTokens() {
+        //人脸终端
+        return Arrays.asList("e69dade5b79ee888aae6b187",
+                //访客机
+                "728a6f4f91d23c601d85906129a1647ca110f20f",
+                //国网测试
+                "4db67a72642967e2766b7445543298745f8cd958",
+                //ampe容器
+                "edcf7741161b70c0813a05a5e4391fdb",
+                //访客机zjy
+                "01f8624317168a4a52fd89f673a3ccbc",
+                //深大临时
+                "ab051195190b4623ea62f636ae747f53",
+                //临时身份证明
+                "699e04c8460e964d531e9976a0ab51ca",
+                //HHCulture设备
+                "b740583887631e2d713ee16e2bf7acc2"
+        );
+    }
+
+}

+ 120 - 0
src/main/java/com/yx/face/boot/uitls/ClassUtil.java

@@ -0,0 +1,120 @@
+package com.yx.face.boot.uitls;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.yx.face.boot.restful.RestCode;
+import com.yx.face.boot.restful.RestDTO;
+import com.yx.face.boot.restful.ServiceException;
+
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @description:
+ * @ClassName ClassUtil
+ * @Author WXG
+ * @Date 2023/5/18 17:18
+ */
+public class ClassUtil {
+
+    public static <T> void searchInit(RestDTO<T> restDTO, Class<T> tClass){
+        if(!ObjectUtil.isNull(restDTO.getData())){
+            return;
+        }
+        try {
+            T t = tClass.newInstance();
+            restDTO.setData(t);
+        } catch (InstantiationException e) {
+            throw new RuntimeException(e);
+        } catch (IllegalAccessException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static void checkData(Object o){
+        if(ObjectUtil.isNull(o)){
+            throw new ServiceException(RestCode.NOT_FOUND);
+        }
+    }
+    public static void checkData(Object o,String throwString){
+        if(ObjectUtil.isNull(o)){
+            throw new ServiceException(throwString);
+        }
+    }
+    public static void throwBusinessException(Boolean o,String throwString){
+        if(o){
+            throw new ServiceException(throwString);
+        }
+    }
+    public static void throwBusinessException(Boolean o, RestCode restCode){
+        if(o){
+            throw new ServiceException(restCode);
+        }
+    }
+    public static void throwBusinessException(Boolean o,RestCode restCode,String msg){
+        if(o){
+            throw new ServiceException(restCode.getCode(),msg);
+        }
+    }
+    public static boolean hasValue(Object obj,String ... filterField) {
+        List<String> stringList = Arrays.stream(filterField).collect(Collectors.toList());
+        Field[] fields = obj.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            if(stringList.contains(field.getName())){
+                continue;
+            }
+            field.setAccessible(true);
+            try {
+                Object o = field.get(obj);
+                if (o != null) {
+                    if(o instanceof List){
+                        if(CollUtil.isNotEmpty((List)o)){
+                            return true;
+                        }
+                    }
+                    else if(o instanceof String){
+                        if(StrUtil.isNotBlank((String)o)){
+                            return true;
+                        }
+                    }
+                    return true;
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+        return false;
+    }
+    public static boolean hasValueCheck(Object obj,String ... filterField) {
+        List<String> stringList = Arrays.stream(filterField).collect(Collectors.toList());
+        Field[] fields = obj.getClass().getDeclaredFields();
+        for (Field field : fields) {
+            if(!stringList.contains(field.getName())){
+                continue;
+            }
+            field.setAccessible(true);
+            try {
+                Object o = field.get(obj);
+                if (o != null) {
+                    if(o instanceof List){
+                        if(CollUtil.isNotEmpty((List)o)){
+                            return true;
+                        }
+                    }
+                    else if(o instanceof String){
+                        if(StrUtil.isNotBlank((String)o)){
+                            return true;
+                        }
+                    }
+                    return true;
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+        return false;
+    }
+}

+ 104 - 0
src/main/java/com/yx/face/controller/admin/UserBlackTaskController.java

@@ -0,0 +1,104 @@
+package com.yx.face.controller.admin;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.github.xiaoymin.knife4j.annotations.ApiSupport;
+import com.yx.face.boot.component.security.Authority;
+import com.yx.face.boot.restful.RestDTO;
+import com.yx.face.boot.restful.RestResponse;
+import com.yx.face.boot.restful.RestResult;
+import com.yx.face.boot.uitls.AppTokenUtil;
+import com.yx.face.boot.uitls.ClassUtil;
+import com.yx.face.model.black.*;
+import com.yx.face.service.UserBlackTaskService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 黑名单任务列表 前端控制器
+ * </p>
+ *
+ * @author wxg
+ * @since 2024-08-31
+ */
+@Slf4j
+@RestController
+@Api(tags = {"1-黑名单任务"})
+@ApiSupport(order = 10)
+@Validated
+@RequestMapping("admin/userBlackTask")
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class UserBlackTaskController {
+
+    private final UserBlackTaskService userBlackTaskService;
+
+    @ApiOperation("任务-新增")
+    @PostMapping("/insert")
+    @ApiOperationSupport(order = 10)
+    public RestResult<Boolean> insert(@RequestBody @Valid UserBlackTaskDto dto) {
+        return RestResponse.ok(userBlackTaskService.insert(dto));
+    }
+    @ApiOperation("任务-绑定账号列表")
+    @GetMapping("/adminList")
+    @ApiOperationSupport(order = 20)
+    public RestResult<List<AdminLessVo>> adminList() {
+        return RestResponse.ok(userBlackTaskService.adminList());
+    }
+
+    @ApiOperation(value = "任务-分页列表")
+    @PostMapping("getPageList")
+    @ApiOperationSupport(order = 30)
+    public RestResult<IPage<UserBlackTaskVo>> getPageList(@RequestBody RestDTO<UserBlackTaskSearch> dto) {
+        ClassUtil.searchInit(dto,UserBlackTaskSearch.class);
+        return RestResponse.ok(userBlackTaskService.getPageList(dto));
+    }
+    @ApiOperation("任务-删除")
+    @GetMapping("/delete")
+    @ApiOperationSupport(order = 40)
+    public RestResult<Boolean> delete(@RequestParam("userBlackTaskId") Long userBlackTaskId) {
+        return RestResponse.ok(userBlackTaskService.delete(userBlackTaskId));
+    }
+    @ApiOperation("任务-录入账号列表")
+    @GetMapping("/enterAdminList")
+    @ApiOperationSupport(order = 50)
+    public RestResult<List<AdminLessVo>> enterAdminList() {
+        return RestResponse.ok(userBlackTaskService.enterAdminList());
+    }
+
+    @ApiOperation(value = "黑名单-分页列表")
+    @PostMapping("user/getPageList")
+    @ApiOperationSupport(order = 60)
+    public RestResult<IPage<UserBlackVo>> userGetPageList(@RequestBody RestDTO<UserBlackSearch> dto) {
+        ClassUtil.searchInit(dto,UserBlackSearch.class);
+        return RestResponse.ok(userBlackTaskService.userGetPageList(dto));
+    }
+    @ApiOperation("黑名单-删除")
+    @GetMapping("user/delete")
+    @ApiOperationSupport(order = 70)
+    public RestResult<Boolean> userDelete(@RequestParam("userBlackListId") Long userBlackListId) {
+        return RestResponse.ok(userBlackTaskService.userDelete(userBlackListId));
+    }
+    @ApiOperation("设备获取黑名单列表")
+    @PostMapping("device/getBlackList")
+    @ApiOperationSupport(order = 80)
+    @Authority(required = false)
+    public RestResult<List<DeviceBlackVo>> getBlackList(@RequestBody @Valid DeviceBlackDto dto) {
+        List<String> tokens = AppTokenUtil.getTokens();
+        if (!tokens.contains(dto.getToken())) {
+            return RestResponse.error("token无效");
+        }
+        return userBlackTaskService.getBlackList(dto);
+    }
+
+}

+ 1 - 1
src/main/java/com/yx/face/dao/FaceDeviceDao.java

@@ -30,7 +30,7 @@ public interface FaceDeviceDao extends TKMapper<FaceDevice> {
 
     List<FaceDeviceVO> getFaceDeviceList(Map<String, Object> map);
 
-    List<String> selectList(@Param("adminId") Integer adminId);
+    List<String> selectListByAdminId(@Param("adminId") Integer adminId);
 
     String getFaceDeviceOne(@Param("sn") String sn);
 

+ 17 - 0
src/main/java/com/yx/face/dao/UserBlackTaskDao.java

@@ -0,0 +1,17 @@
+package com.yx.face.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yx.face.boot.component.tk.TKMapper;
+import com.yx.face.model.entity.UserBlackTask;
+
+/**
+ * <p>
+ * 黑名单任务列表 Mapper 接口
+ * </p>
+ *
+ * @author wxg
+ * @since 2024-08-31
+ */
+public interface UserBlackTaskDao extends TKMapper<UserBlackTask> {
+
+}

+ 15 - 0
src/main/java/com/yx/face/model/black/AdminLessVo.java

@@ -0,0 +1,15 @@
+package com.yx.face.model.black;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@Data
+@AllArgsConstructor
+public class AdminLessVo {
+
+    @ApiModelProperty("管理员id")
+    private Integer adminId;
+    @ApiModelProperty("账号名")
+    private String username;
+}

+ 19 - 0
src/main/java/com/yx/face/model/black/BlackPersonDto.java

@@ -0,0 +1,19 @@
+package com.yx.face.model.black;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class BlackPersonDto {
+    @ApiModelProperty(value = "姓名")
+    @NotBlank(message = "姓名不能为空")
+    private String name;
+    @ApiModelProperty(value = "手机号")
+    @NotBlank(message = "手机号不能为空")
+    private String phone;
+    @ApiModelProperty(value = "身份证号")
+    @NotBlank(message = "身份证号不能为空")
+    private String idNumber;
+}

+ 16 - 0
src/main/java/com/yx/face/model/black/DeviceBlackDto.java

@@ -0,0 +1,16 @@
+package com.yx.face.model.black;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+
+@Data
+public class DeviceBlackDto {
+    @ApiModelProperty("设备号")
+    @NotBlank(message = "设备号不能为空")
+    private String sn;
+    @ApiModelProperty(value = "token",example = "e69dade5b79ee888aae6b187")
+    @NotBlank(message = "token不能为空")
+    private String token;
+}

+ 35 - 0
src/main/java/com/yx/face/model/black/DeviceBlackVo.java

@@ -0,0 +1,35 @@
+package com.yx.face.model.black;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.util.Objects;
+
+@Data
+@AllArgsConstructor
+public class DeviceBlackVo {
+
+    /*
+    * 为了和授权平台的接口同意,所以返回参数依照的时候授权平台上的返回参数
+    * */
+    private String certName;//姓名
+    private String certNo;//身份证号
+    private String phone;//手机号
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null || getClass() != obj.getClass()) {
+            return false;
+        }
+        DeviceBlackVo other = (DeviceBlackVo) obj;
+        return certNo.equals(other.certNo) && phone.equals(other.phone);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(certNo, phone);
+    }
+}

+ 23 - 0
src/main/java/com/yx/face/model/black/UserBlackSearch.java

@@ -0,0 +1,23 @@
+package com.yx.face.model.black;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class UserBlackSearch {
+
+    @ApiModelProperty(value = "姓名")
+    private String name;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "身份证号")
+    private String idNumber;
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+    @ApiModelProperty(value = "绑定账号")
+    private Integer adminId;
+    @ApiModelProperty(value = "录入账号")
+    private Integer enterAdminId;
+    @ApiModelProperty(value = "任务主键")
+    private Long userBlackTaskId;
+}

+ 29 - 0
src/main/java/com/yx/face/model/black/UserBlackTaskDto.java

@@ -0,0 +1,29 @@
+package com.yx.face.model.black;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import javax.validation.constraints.Size;
+import java.util.List;
+
+@Data
+public class UserBlackTaskDto {
+
+    @ApiModelProperty("绑定账号列表")
+    private List<Integer> adminIdList;
+
+    @ApiModelProperty("任务名称")
+    @NotBlank(message = "任务名称不能为空")
+    private String taskName;
+
+    @ApiModelProperty("黑名单列表")
+    @NotNull(message = "黑名单列表不能为空")
+    @Size(min = 1, message = "黑名单列表不能为空")
+    @Valid
+    private List<BlackPersonDto> blackPersonDtoList;
+
+}

+ 21 - 0
src/main/java/com/yx/face/model/black/UserBlackTaskSearch.java

@@ -0,0 +1,21 @@
+package com.yx.face.model.black;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class UserBlackTaskSearch {
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+    @ApiModelProperty(value = "绑定账号")
+    private Integer adminId;
+    @ApiModelProperty(value = "录入账号")
+    private Integer enterAdminId;
+    @ApiModelProperty(value = "开始时间 格式yyyy-MM-dd HH:mm:ss")
+    private String startTime;
+    @ApiModelProperty(value = "结束时间 格式yyyy-MM-dd HH:mm:ss")
+    private String endTime;
+}

+ 28 - 0
src/main/java/com/yx/face/model/black/UserBlackTaskVo.java

@@ -0,0 +1,28 @@
+package com.yx.face.model.black;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class UserBlackTaskVo {
+
+    @ApiModelProperty(value = "任务主键")
+    private Long userBlackTaskId;
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+    @ApiModelProperty(value = "录入人数")
+    private Integer personNum;
+    @ApiModelProperty(value = "绑定账号")
+    private String username;
+    @ApiModelProperty(value = "录入账号")
+    private String enterUsername;
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @ApiModelProperty("是否可以删除")
+    private Boolean canDelete = false;
+}

+ 31 - 0
src/main/java/com/yx/face/model/black/UserBlackVo.java

@@ -0,0 +1,31 @@
+package com.yx.face.model.black;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.util.Date;
+
+@Data
+public class UserBlackVo {
+    @ApiModelProperty(value = "任务主键")
+    private Long userBlackListId;
+    @ApiModelProperty(value = "任务名称")
+    private String taskName;
+    @ApiModelProperty(value = "姓名")
+    private String name;
+    @ApiModelProperty(value = "手机号")
+    private String phone;
+    @ApiModelProperty(value = "身份证号")
+    private String idNumber;
+    @ApiModelProperty(value = "绑定账号")
+    private String username;
+    @ApiModelProperty(value = "录入账号")
+    private String enterUsername;
+    @ApiModelProperty(value = "创建时间")
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    @ApiModelProperty("是否可以删除")
+    private Boolean canDelete = false;
+}

+ 3 - 1
src/main/java/com/yx/face/model/entity/Admin.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -21,7 +23,7 @@ public class Admin {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
-
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/AdminTag.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.GeneratedValue;
@@ -22,6 +24,7 @@ public class AdminTag {
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
     /**
      * 部门名称

+ 4 - 3
src/main/java/com/yx/face/model/entity/AlcoholTestRecord.java

@@ -1,17 +1,18 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
+import javax.persistence.*;
 import java.util.Date;
 
 @Data
 @Table(name = "alcohol_test_record")
 public class AlcoholTestRecord {
     @Id
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
     private Integer adminId;
     private String cardIdEx;

+ 3 - 0
src/main/java/com/yx/face/model/entity/AreaCode.java

@@ -1,6 +1,8 @@
 package com.yx.face.model.entity;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -19,6 +21,7 @@ public class AreaCode {
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
     /**
      * 区域名称

+ 5 - 0
src/main/java/com/yx/face/model/entity/FaceDevice.java

@@ -4,6 +4,9 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +25,7 @@ public class FaceDevice {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**
@@ -90,6 +94,7 @@ public class FaceDevice {
 
 
     @Column(name = "admin_id")
+    @TableField("admin_id")
     private Integer adminId;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/FaceDeviceLogo.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -21,6 +23,7 @@ public class FaceDeviceLogo {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/FaceLog.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class FaceLog {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/FaceLogFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -12,6 +14,7 @@ public class FaceLogFrom implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "face_log_id")

+ 3 - 0
src/main/java/com/yx/face/model/entity/FacePass.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -21,6 +23,7 @@ public class FacePass {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/FaceRequestLog.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class FaceRequestLog {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/FaceTask.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -21,6 +23,7 @@ public class FaceTask {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/HealthCode.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -19,6 +21,7 @@ public class HealthCode {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/PoliceStation.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class PoliceStation {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Integer id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/Role.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class Role {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Integer id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/RoleAuth.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class RoleAuth {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Integer id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/ScanCodeBoxCode.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.Column;
@@ -22,6 +24,7 @@ public class ScanCodeBoxCode {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/ShortTermFaceLog.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -21,6 +23,7 @@ public class ShortTermFaceLog {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/SystemConfig.java

@@ -1,6 +1,8 @@
 package com.yx.face.model.entity;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -19,6 +21,7 @@ public class SystemConfig {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Integer id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/SystemLongTermDocuments.java

@@ -1,6 +1,8 @@
 package com.yx.face.model.entity;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -13,6 +15,7 @@ public class SystemLongTermDocuments {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
     @Column(name = "jdy_id")
     private String jdyId;

+ 3 - 0
src/main/java/com/yx/face/model/entity/SystemPushConfig.java

@@ -1,6 +1,8 @@
 package com.yx.face.model.entity;
 
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -19,6 +21,7 @@ public class SystemPushConfig {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**

+ 17 - 0
src/main/java/com/yx/face/model/entity/UserBlackList.java

@@ -1,5 +1,9 @@
 package com.yx.face.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 javax.persistence.*;
@@ -11,6 +15,7 @@ import java.util.Date;
  */
 @Data
 @Table(name = "user_black_list")
+@TableName("user_black_list")
 public class UserBlackList {
 
     /**
@@ -18,6 +23,7 @@ public class UserBlackList {
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**
@@ -58,4 +64,15 @@ public class UserBlackList {
      * */
     @Column(name = "avatar")
     private String avatar;
+    /**
+     * 任务id
+     */
+    @TableField("user_black_task_id")
+    private Long userBlackTaskId;
+
+    /**
+     * 录入账号
+     */
+    @TableField("enter_admin_id")
+    private Integer enterAdminId;
 }

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserBlackListFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -17,6 +19,7 @@ public class UserBlackListFrom {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "user_black_list_id")

+ 69 - 0
src/main/java/com/yx/face/model/entity/UserBlackTask.java

@@ -0,0 +1,69 @@
+package com.yx.face.model.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <p>
+ * 黑名单任务列表
+ * </p>
+ *
+ * @author wxg
+ * @since 2024-08-31
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+@TableName("user_black_task")
+public class UserBlackTask implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @TableField("task_name")
+    private String taskName;
+
+    /**
+     * 录入人数
+     */
+    @TableField("person_num")
+    private Integer personNum;
+
+    /**
+     * 绑定账号
+     */
+    @TableField("admin_id")
+    private Integer adminId;
+
+    /**
+     * 录入账号
+     */
+    @TableField("enter_admin_id")
+    private Integer enterAdminId;
+
+    /**
+     * 创建时间
+     */
+    @TableField(value = "create_time",fill = FieldFill.INSERT)
+    private Date createTime;
+
+}

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserControlEarlyWarningList.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -25,6 +27,7 @@ public class UserControlEarlyWarningList{
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserControlEarlyWarningListLog.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
@@ -25,6 +27,7 @@ public class UserControlEarlyWarningListLog{
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserFaceRecords.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class UserFaceRecords {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserFaceRecordsFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -11,6 +13,7 @@ import java.io.Serializable;
 public class UserFaceRecordsFrom{
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "user_face_records_id")

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserInfo.java

@@ -4,6 +4,8 @@ import java.util.Date;
 
 import javax.persistence.*;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 /**
@@ -22,6 +24,7 @@ public class UserInfo {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
 
     private Long id;
 

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserInfoFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -11,6 +13,7 @@ public class UserInfoFrom implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "user_info_id")

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserVisitorList.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -18,6 +20,7 @@ public class UserVisitorList {
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserVisitorListFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -12,6 +14,7 @@ public class UserVisitorListFrom implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "user_visitor_list_id")

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserWhitelist.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -22,6 +24,7 @@ public class UserWhitelist{
      */
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Integer id;
 
     /**

+ 3 - 0
src/main/java/com/yx/face/model/entity/UserWhitelistFrom.java

@@ -1,5 +1,7 @@
 package com.yx.face.model.entity;
 
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -12,6 +14,7 @@ public class UserWhitelistFrom implements Serializable {
 
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @TableId(value = "id", type = IdType.AUTO)
     private Long id;
 
     @Column(name = "user_whitelist_id")

+ 3 - 0
src/main/java/com/yx/face/service/AdminService.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageInfo;
 import com.yx.face.boot.restful.RestDTO;
 import com.yx.face.boot.restful.RestResult;
 import com.yx.face.model.dto.AdminDTO;
+import com.yx.face.model.entity.Admin;
 import com.yx.face.model.search.AdminSearch;
 import com.yx.face.model.update.AdminUpdate;
 import com.yx.face.model.vo.AdminVO;
@@ -91,6 +92,8 @@ public interface AdminService {
 
     AdminVO getInfo();
 
+    Admin get();
+
     /*
     * 管理员批量导入
     * */

+ 29 - 0
src/main/java/com/yx/face/service/UserBlackTaskService.java

@@ -0,0 +1,29 @@
+package com.yx.face.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yx.face.boot.restful.RestDTO;
+import com.yx.face.boot.restful.RestResult;
+import com.yx.face.model.black.*;
+import com.yx.face.model.entity.UserBlackTask;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 黑名单任务列表 服务类
+ * </p>
+ *
+ * @author wxg
+ * @since 2024-08-31
+ */
+public interface UserBlackTaskService extends IService<UserBlackTask> {
+    Boolean insert(UserBlackTaskDto dto);
+    List<AdminLessVo> adminList();
+    IPage<UserBlackTaskVo> getPageList(RestDTO<UserBlackTaskSearch> dto);
+    Boolean delete(Long userBlackTaskId);
+    List<AdminLessVo> enterAdminList();
+    IPage<UserBlackVo> userGetPageList(RestDTO<UserBlackSearch> dto);
+    Boolean userDelete(Long userBlackListId);
+    RestResult<List<DeviceBlackVo>> getBlackList(DeviceBlackDto dto);
+}

+ 14 - 1
src/main/java/com/yx/face/service/impl/AdminServiceImpl.java

@@ -22,6 +22,7 @@ import com.yx.face.model.vo.AdminVO;
 import com.yx.face.service.AdminService;
 import com.yx.face.service.AreaCodeService;
 import com.yx.face.service.PoliceStationService;
+import org.jetbrains.annotations.NotNull;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -319,6 +320,12 @@ public class AdminServiceImpl implements AdminService {
 
     @Override
     public AdminVO getInfo() {
+        String token = getString();
+        return getInfo(Integer.parseInt(token));
+    }
+
+    @NotNull
+    private static String getString() {
         ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
         if (requestAttributes == null) {
             throw new CommonException(RestCode.UNAUTHORIZED);
@@ -332,7 +339,13 @@ public class AdminServiceImpl implements AdminService {
         if (org.apache.commons.lang3.StringUtils.isEmpty(token)) {
             throw new CommonException(RestCode.UNAUTHORIZED);
         }
-        return getInfo(Integer.parseInt(token));
+        return token;
+    }
+
+    @Override
+    public Admin get() {
+        String token = getString();
+        return adminDao.selectByPrimaryKey(token);
     }
 
     @Override

+ 1 - 1
src/main/java/com/yx/face/service/impl/UserBlackListServiceImpl.java

@@ -91,7 +91,7 @@ public class UserBlackListServiceImpl implements UserBlackListService {
             throw new ServiceException("该数据已不存在,请刷新页面再试哦~");
         }
         //获取 adminId所有设备
-        List<String> faceDeviceOne = faceDeviceDao.selectList(userBlackList.getAdminId());
+        List<String> faceDeviceOne = faceDeviceDao.selectListByAdminId(userBlackList.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             throw new ServiceException("该设备不存在或离线,请刷新页面再试哦~");
         }

+ 356 - 0
src/main/java/com/yx/face/service/impl/UserBlackTaskServiceImpl.java

@@ -0,0 +1,356 @@
+package com.yx.face.service.impl;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.lang.Validator;
+import cn.hutool.core.util.DesensitizedUtil;
+import cn.hutool.core.util.IdcardUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yx.face.boot.restful.RestDTO;
+import com.yx.face.boot.restful.RestResult;
+import com.yx.face.boot.uitls.ClassUtil;
+import com.yx.face.dao.AdminDao;
+import com.yx.face.dao.FaceDeviceDao;
+import com.yx.face.dao.UserBlackListDao;
+import com.yx.face.dao.UserBlackTaskDao;
+import com.yx.face.model.black.*;
+import com.yx.face.model.entity.Admin;
+import com.yx.face.model.entity.FaceDevice;
+import com.yx.face.model.entity.UserBlackList;
+import com.yx.face.model.entity.UserBlackTask;
+import com.yx.face.service.AdminService;
+import com.yx.face.service.UserBlackTaskService;
+import lombok.RequiredArgsConstructor;
+import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * <p>
+ * 黑名单任务列表 服务实现类
+ * </p>
+ *
+ * @author wxg
+ * @since 2024-08-31
+ */
+@Service
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
+public class UserBlackTaskServiceImpl extends ServiceImpl<UserBlackTaskDao, UserBlackTask> implements UserBlackTaskService {
+
+    private final UserBlackTaskDao userBlackTaskDao;
+    private final UserBlackListDao userBlackListDao;
+    private final AdminService adminService;
+    private final AdminDao adminDao;
+    private final FaceDeviceDao faceDeviceDao;
+
+    @Override
+    public Boolean insert(UserBlackTaskDto dto) {
+        Admin admin = adminService.get();
+        this.check(dto,admin);
+        for (Integer adminId : dto.getAdminIdList()) {
+            UserBlackTask userBlackTask = new UserBlackTask();
+            userBlackTask.setTaskName(dto.getTaskName());
+            userBlackTask.setPersonNum(dto.getBlackPersonDtoList().size());
+            userBlackTask.setAdminId(adminId);
+            userBlackTask.setEnterAdminId(admin.getId());
+            userBlackTaskDao.insert(userBlackTask);
+
+            List<UserBlackList> userBlackListList = BeanUtil.copyToList(dto.getBlackPersonDtoList(), UserBlackList.class);
+            for (UserBlackList userBlackList : userBlackListList) {
+                userBlackList.setAdminId(adminId);
+                userBlackList.setEnterAdminId(admin.getId());
+                userBlackList.setUserBlackTaskId(userBlackTask.getId());
+            }
+            userBlackListDao.insertList(userBlackListList);
+
+        }
+        return true;
+    }
+    private void check(UserBlackTaskDto dto,Admin admin) {
+
+        if(5 == admin.getType()){
+            dto.setAdminIdList(CollUtil.toList(admin.getId()));
+        }else {
+            ClassUtil.throwBusinessException(CollUtil.isEmpty(dto.getAdminIdList()),"请传入需要绑定的账号列表");
+        }
+
+        for (BlackPersonDto blackPersonDto : dto.getBlackPersonDtoList()) {
+            ClassUtil.throwBusinessException(!IdcardUtil.isValidCard(blackPersonDto.getIdNumber()),blackPersonDto.getIdNumber()+":请传入正确的身份证号码");
+            ClassUtil.throwBusinessException(!Validator.isMobile(blackPersonDto.getPhone()),blackPersonDto.getPhone()+":请传入正确的手机号");
+        }
+    }
+    @Override
+    public List<AdminLessVo> adminList() {
+        Admin admin = adminService.get();
+        return getLessVos(admin);
+    }
+
+    @NotNull
+    private List<AdminLessVo> getLessVos(Admin admin) {
+        LambdaQueryWrapper<Admin> wrapper = this.getAdminWrapper(admin);
+        List<Admin> adminList = adminDao.selectList(wrapper);
+        adminList.add(admin);
+
+        List<AdminLessVo> adminLessVoList = adminList.stream().map(p -> new AdminLessVo(p.getId(), p.getUsername())).sorted((p1,p2)->{
+            if(p1.getAdminId() < p2.getAdminId()){
+                return -1;
+            }else if(p1.getAdminId() > p2.getAdminId()){
+                return 1;
+            }else {
+                return 0;
+            }
+        }).collect(Collectors.toList());
+
+        return adminLessVoList;
+    }
+
+    private LambdaQueryWrapper<Admin> getAdminWrapper(Admin admin) {
+        LambdaQueryWrapper<Admin> wrapper = new LambdaQueryWrapper<>();
+        if(1 == admin.getType()){
+            wrapper.ne(Admin::getType,1);
+        }else if(2 == admin.getType()){
+            wrapper.in(Admin::getType,CollUtil.toList(3,4,5));
+            wrapper.eq(Admin::getProvinceId,admin.getProvinceId());
+        }else if(3 == admin.getType()){
+            wrapper.in(Admin::getType,CollUtil.toList(4,5));
+            wrapper.eq(Admin::getProvinceId,admin.getProvinceId());
+            wrapper.eq(Admin::getTagId,admin.getTagId());
+        }else if(4 == admin.getType()){
+            wrapper.in(Admin::getType,CollUtil.toList(5));
+            wrapper.eq(Admin::getCityId,admin.getCityId());
+            wrapper.eq(Admin::getTagId,admin.getTagId());
+        }else if(5 == admin.getType()){
+            wrapper.eq(Admin::getId,-1);
+        }
+        return wrapper;
+    }
+    @Override
+    public IPage<UserBlackTaskVo> getPageList(RestDTO<UserBlackTaskSearch> dto) {
+        List<AdminLessVo> adminLessVoList = this.adminList();
+        LambdaQueryWrapper<UserBlackTask> wrapper = this.getWrapper(dto.getData(),adminLessVoList);
+        Page<UserBlackTask> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+        IPage<UserBlackTask> pageList = userBlackTaskDao.selectPage(page, wrapper);
+        Map<Integer,String> adminMap = adminLessVoList.stream().collect(Collectors.toMap(AdminLessVo::getAdminId,AdminLessVo::getUsername));
+        Map<Integer,String> enterAdminMap = this.getEnterAdminMap(pageList,UserBlackTask::getEnterAdminId);
+        IPage<UserBlackTaskVo> convert = pageList.convert(object -> {
+            UserBlackTaskVo vo = BeanUtil.copyProperties(object, UserBlackTaskVo.class);
+            vo.setUserBlackTaskId(object.getId());
+            vo.setUsername(adminMap.get(object.getAdminId()));
+            vo.setEnterUsername(enterAdminMap.get(object.getEnterAdminId()));
+            vo.setCanDelete(adminMap.containsKey(object.getEnterAdminId()));
+            return vo;
+        });
+        return convert;
+    }
+
+
+
+    private <T> Map<Integer, String> getEnterAdminMap(IPage<T> pageList,Function<T, Integer> function) {
+        List<T> records = pageList.getRecords();
+        if(CollUtil.isEmpty(records)){
+            return new HashMap<>();
+        }
+        List<Integer> enterAdminIdList = records.stream().map(function).collect(Collectors.toList());
+        if(CollUtil.isEmpty(enterAdminIdList)){
+            return new HashMap<>();
+        }
+        List<Admin> adminList = adminDao.selectBatchIds(enterAdminIdList);
+        return adminList.stream().collect(Collectors.toMap(Admin::getId, Admin::getUsername));
+    }
+
+    private LambdaQueryWrapper<UserBlackTask> getWrapper(UserBlackTaskSearch data,List<AdminLessVo> adminLessVoList) {
+        LambdaQueryWrapper<UserBlackTask> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(UserBlackTask::getAdminId,adminLessVoList.stream().map(AdminLessVo::getAdminId).collect(Collectors.toList()));
+        wrapper.like(StrUtil.isNotBlank(data.getTaskName()),UserBlackTask::getTaskName,data.getTaskName());
+        wrapper.eq(data.getAdminId() != null,UserBlackTask::getAdminId,data.getAdminId());
+        wrapper.eq(data.getEnterAdminId() != null,UserBlackTask::getEnterAdminId,data.getEnterAdminId());
+        wrapper.ge(StrUtil.isNotBlank(data.getStartTime()),UserBlackTask::getCreateTime, data.getStartTime());
+        wrapper.le(StrUtil.isNotBlank(data.getEndTime()),UserBlackTask::getCreateTime, data.getEndTime());
+        wrapper.orderByDesc(UserBlackTask::getId);
+        return wrapper;
+    }
+    @Override
+    public Boolean delete(Long userBlackTaskId) {
+        UserBlackTask userBlackTask = userBlackTaskDao.selectById(userBlackTaskId);
+        ClassUtil.checkData(userBlackTask,"任务不存在");
+        List<AdminLessVo> adminLessVoList = this.adminList();
+        List<Integer> adminIdList = adminLessVoList.stream().map(AdminLessVo::getAdminId).collect(Collectors.toList());
+        ClassUtil.throwBusinessException(!adminIdList.contains(userBlackTask.getEnterAdminId()),"没有权限移除该任务");
+
+        userBlackTaskDao.deleteById(userBlackTaskId);
+
+
+        UserBlackList userBlackList = new UserBlackList();
+        userBlackList.setUserBlackTaskId(userBlackTaskId);
+        userBlackListDao.delete(userBlackList);
+
+        return true;
+    }
+
+
+
+    @Override
+    public List<AdminLessVo> enterAdminList() {
+        Admin admin = adminService.get();
+        return getAdminLessVos(admin);
+    }
+    @NotNull
+    private List<AdminLessVo> getAdminLessVos(Admin admin) {
+        List<AdminLessVo> adminLessVoList = getLessVos(admin);
+        List<AdminLessVo> result = this.get(admin);
+        adminLessVoList.addAll(result);
+
+        return adminLessVoList.stream().sorted(Comparator.comparing(AdminLessVo::getAdminId)).collect(Collectors.toList());
+    }
+
+
+    private List<AdminLessVo> get(Admin admin) {
+        if(1 == admin.getType()){
+            return new LinkedList<>();
+        }
+        LambdaQueryWrapper<Admin> wrapper = new LambdaQueryWrapper<>();
+        wrapper.select(Admin::getId,Admin::getUsername);
+        wrapper.and(wrapper1->{
+           if (admin.getType() >=2){
+              wrapper1.eq(Admin::getType,1);
+           }
+           if (admin.getType() >=3){
+               wrapper1.or(wrapper2->{
+                   wrapper2.eq(Admin::getType,2);
+                   wrapper2.eq(Admin::getProvinceId,admin.getProvinceId());
+               });
+
+           }
+           if (admin.getType() >=4){
+               wrapper1.or(wrapper2->{
+                   wrapper2.eq(Admin::getType,3);
+                   wrapper2.eq(Admin::getTagId,admin.getTagId());
+                   wrapper2.eq(Admin::getProvinceId,admin.getProvinceId());
+               });
+
+           }
+           if (admin.getType() >=5){
+               wrapper1.or(wrapper2->{
+                   wrapper2.eq(Admin::getType,4);
+                   wrapper2.eq(Admin::getTagId,admin.getTagId());
+                   wrapper2.eq(Admin::getCityId,admin.getCityId());
+               });
+           }
+        });
+
+        List<Admin> adminList = adminDao.selectList(wrapper);
+        return adminList.stream().map(p->new AdminLessVo(p.getId(),p.getUsername())).collect(Collectors.toList());
+    }
+
+    @Override
+    public IPage<UserBlackVo> userGetPageList(RestDTO<UserBlackSearch> dto) {
+        List<AdminLessVo> adminLessVoList = this.adminList();
+        UserBlackSearch data = dto.getData();
+        List<Long> taskIds = null;
+        if(StrUtil.isNotBlank(data.getTaskName())){
+            taskIds = userBlackTaskDao.selectList(new LambdaQueryWrapper<UserBlackTask>().like(UserBlackTask::getTaskName,data.getTaskName())).stream().map(UserBlackTask::getId).collect(Collectors.toList());
+            if(CollectionUtil.isEmpty(taskIds)){
+                return new Page<>();
+            }
+        }
+        LambdaQueryWrapper<UserBlackList> wrapper = this.getWrapper(data,adminLessVoList,taskIds);
+        Page<UserBlackList> page = new Page<>(dto.getPageNum(), dto.getPageSize());
+        IPage<UserBlackList> pageList = userBlackListDao.selectPage(page, wrapper);
+        Map<Integer,String> adminMap = adminLessVoList.stream().collect(Collectors.toMap(AdminLessVo::getAdminId,AdminLessVo::getUsername));
+        Map<Integer,String> enterAdminMap = this.getEnterAdminMap(pageList,UserBlackList::getEnterAdminId);
+        Map<Long,String> taskMap = this.getTaskMap(pageList,UserBlackList::getUserBlackTaskId);
+        IPage<UserBlackVo> convert = pageList.convert(object -> {
+            UserBlackVo vo = BeanUtil.copyProperties(object, UserBlackVo.class);
+            vo.setUserBlackListId(Long.valueOf(object.getId()));
+            vo.setUsername(adminMap.get(object.getAdminId()));
+            vo.setEnterUsername(enterAdminMap.get(object.getEnterAdminId()));
+            vo.setCanDelete(adminMap.containsKey(object.getEnterAdminId()));
+            vo.setTaskName(taskMap.get(object.getUserBlackTaskId()));
+            vo.setName(DesensitizedUtil.chineseName(vo.getName()));
+            vo.setPhone(DesensitizedUtil.mobilePhone(vo.getPhone()));
+            vo.setIdNumber(DesensitizedUtil.idCardNum(vo.getIdNumber(),4,4));
+            return vo;
+        });
+        return convert;
+    }
+
+
+
+    private <T> Map<Long, String> getTaskMap(IPage<T> pageList, Function<T, Long> function) {
+        List<T> records = pageList.getRecords();
+        if(CollUtil.isEmpty(records)){
+            return new HashMap<>();
+        }
+        List<Long> taskIdList = records.stream().map(function).collect(Collectors.toList());
+        if(CollUtil.isEmpty(taskIdList)){
+            return new HashMap<>();
+        }
+        return userBlackTaskDao.selectBatchIds(taskIdList).stream().collect(Collectors.toMap(UserBlackTask::getId,UserBlackTask::getTaskName));
+    }
+
+    private LambdaQueryWrapper<UserBlackList> getWrapper(UserBlackSearch data, List<AdminLessVo> adminLessVoList, List<Long> taskIds) {
+        LambdaQueryWrapper<UserBlackList> wrapper = new LambdaQueryWrapper<>();
+        wrapper.in(UserBlackList::getAdminId,adminLessVoList.stream().map(AdminLessVo::getAdminId).collect(Collectors.toList()));
+        wrapper.like(StrUtil.isNotBlank(data.getName()),UserBlackList::getName,data.getName());
+        wrapper.like(StrUtil.isNotBlank(data.getIdNumber()),UserBlackList::getIdNumber,data.getIdNumber());
+        wrapper.like(StrUtil.isNotBlank(data.getPhone()),UserBlackList::getPhone,data.getPhone());
+        wrapper.eq(data.getAdminId() != null,UserBlackList::getAdminId,data.getAdminId());
+        wrapper.eq(data.getEnterAdminId() != null,UserBlackList::getEnterAdminId,data.getEnterAdminId());
+        wrapper.eq(data.getUserBlackTaskId() != null,UserBlackList::getUserBlackTaskId,data.getUserBlackTaskId());
+        wrapper.in(CollUtil.isNotEmpty(taskIds),UserBlackList::getUserBlackTaskId,taskIds);
+        wrapper.orderByDesc(UserBlackList::getId);
+        return wrapper;
+    }
+    @Override
+    public Boolean userDelete(Long userBlackListId) {
+        UserBlackList userBlackList = userBlackListDao.selectById(userBlackListId);
+        ClassUtil.checkData(userBlackList,"黑名单用户不存在");
+        List<AdminLessVo> adminLessVoList = this.adminList();
+        List<Integer> adminIdList = adminLessVoList.stream().map(AdminLessVo::getAdminId).collect(Collectors.toList());
+        ClassUtil.throwBusinessException(!adminIdList.contains(userBlackList.getEnterAdminId()),"没有权限移除该任务");
+
+        userBlackListDao.deleteById(userBlackListId);
+
+        if(userBlackList.getUserBlackTaskId() != null){
+            synchronized (this){
+                UserBlackTask userBlackTask = userBlackTaskDao.selectById(userBlackList.getUserBlackTaskId());
+                userBlackTask.setPersonNum(userBlackTask.getPersonNum() - 1);
+                if(userBlackTask.getPersonNum() <= 0){
+                    userBlackTaskDao.deleteById(userBlackTask.getId());
+                }else {
+                    userBlackTaskDao.updateById(userBlackTask);
+                }
+            }
+        }
+
+        return true;
+    }
+
+    @Override
+    public RestResult<List<DeviceBlackVo>> getBlackList(DeviceBlackDto dto) {
+        FaceDevice faceDevice = faceDeviceDao.selectOne(
+                Wrappers.<FaceDevice>lambdaQuery().eq(FaceDevice::getSn, dto.getSn()).last("limit 1")
+        );
+        ClassUtil.checkData(faceDevice, "设备不存在");
+        Admin admin = adminDao.selectById(faceDevice.getAdminId());
+        List<AdminLessVo> adminLessVos = getAdminLessVos(admin);
+        List<UserBlackList> userBlackListList = userBlackListDao.selectList(
+                Wrappers.<UserBlackList>lambdaQuery()
+                        .in(UserBlackList::getAdminId, adminLessVos.stream().map(AdminLessVo::getAdminId).collect(Collectors.toList()))
+        );
+
+        List<DeviceBlackVo> blackVos = userBlackListList.stream().map(p -> new DeviceBlackVo(p.getName(), p.getPhone(), p.getIdNumber())).distinct().collect(Collectors.toList());
+        return RestResult.ok(blackVos);
+    }
+}

+ 2 - 2
src/main/java/com/yx/face/service/impl/UserVisitorListServiceImpl.java

@@ -127,7 +127,7 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         } else {
             one.setAvatar(avatarBase64);
         }
-        List<String> faceDeviceOne = faceDeviceDao.selectList(uvl.getAdminId());
+        List<String> faceDeviceOne = faceDeviceDao.selectListByAdminId(uvl.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             throw new ServiceException("该账号下没绑定设备,添加失败哦~");
         }
@@ -180,7 +180,7 @@ public class UserVisitorListServiceImpl implements UserVisitorListService {
         } else {
             one.setAvatar(avatarBase64);
         }
-        List<String> faceDeviceOne = faceDeviceDao.selectList(uvl.getAdminId());
+        List<String> faceDeviceOne = faceDeviceDao.selectListByAdminId(uvl.getAdminId());
         if (faceDeviceOne.isEmpty()) {
             throw new ServiceException("该账号下没绑定设备,添加失败哦~");
         }

+ 3 - 2
src/main/resources/application-test.yml

@@ -19,7 +19,7 @@ spring:
     time-zone: GMT+8
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://127.0.0.1:3306/fyzd?characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
+    url: jdbc:mysql://127.0.0.1:3306/ldb_airport?characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false&serverTimezone=Asia/Shanghai
     username: root
     password: 123456
     hikari:
@@ -55,6 +55,7 @@ logging:
     name: ./logs/${spring.application.name}.log
   level:
     com.yixin.review: info
+    com.yx.face.dao: debug
   logback:
     rollingpolicy:
       max-history: 10
@@ -62,7 +63,7 @@ logging:
 
 mybatis:
   mapper-locations: classpath:mapper/*.xml
-  type-aliases-package: com.yixin.review.model.entity
+  type-aliases-package: com.yx.face.model.entity
   configuration:
     cache-enabled: true
     map-underscore-to-camel-case: true

+ 1 - 1
src/main/resources/mapper/FaceDeviceDao.xml

@@ -170,7 +170,7 @@
             </if>
         </where>
     </select>
-    <select id="selectList" resultType="java.lang.String">
+    <select id="selectListByAdminId" resultType="java.lang.String">
         SELECT sn
         FROM face_device
         WHERE enable = 1

BIN
src/main/webapp/excel/blacklistExcel.xlsx