Sfoglia il codice sorgente

身份证查重列表

licailing 4 anni fa
parent
commit
42838824ea

+ 23 - 0
src/main/java/com/izouma/nineth/dto/UserIdentity.java

@@ -0,0 +1,23 @@
+package com.izouma.nineth.dto;
+
+import com.izouma.nineth.enums.AuthStatus;
+import lombok.Builder;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@Builder
+public class UserIdentity {
+    private Long id;
+
+    private String nickname;
+
+    private String phone;
+
+    private LocalDateTime createdAt;
+
+    private AuthStatus status;
+
+    private LocalDateTime identityCreatedAt;
+}

+ 2 - 0
src/main/java/com/izouma/nineth/repo/IdentityAuthRepo.java

@@ -22,4 +22,6 @@ public interface IdentityAuthRepo extends JpaRepository<IdentityAuth, Long>, Jpa
     Optional<IdentityAuth> findFirstByUserIdAndStatusAndDelFalseOrderByCreatedAtDesc(Long userId, AuthStatus status);
 
     Optional<IdentityAuth> findByIdAndDelFalse(Long id);
+
+    List<IdentityAuth> findAllByIdNoAndUserIdIsNotAndDelFalse(String idNo, Long userId);
 }

+ 27 - 0
src/main/java/com/izouma/nineth/service/IdentityAuthService.java

@@ -3,6 +3,7 @@ package com.izouma.nineth.service;
 import com.izouma.nineth.domain.IdentityAuth;
 import com.izouma.nineth.domain.User;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.UserIdentity;
 import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.IdentityAuthRepo;
@@ -12,7 +13,11 @@ import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.stereotype.Service;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 @AllArgsConstructor
@@ -58,4 +63,26 @@ public class IdentityAuthService {
         user.setAuthStatus(status);
         userRepo.save(user);
     }
+
+    public List<UserIdentity> repeat(String idNo, Long userId) {
+        List<IdentityAuth> auths = identityAuthRepo.findAllByIdNoAndUserIdIsNotAndDelFalse(idNo, userId);
+        if (auths.isEmpty()) {
+            return null;
+        }
+        List<Long> userIds = auths.stream().map(IdentityAuth::getUserId).collect(Collectors.toList());
+        Map<Long, User> userMap = userRepo.findAllById(userIds)
+                .stream()
+                .collect(Collectors.toMap(User::getId, user -> user));
+        return auths.stream().map(auth -> {
+            User user = userMap.get(auth.getUserId());
+            return UserIdentity.builder()
+                    .id(auth.getUserId())
+                    .nickname(user.getNickname())
+                    .phone(user.getPhone())
+                    .createdAt(user.getCreatedAt())
+                    .status(auth.getStatus())
+                    .identityCreatedAt(auth.getCreatedAt())
+                    .build();
+        }).collect(Collectors.toList());
+    }
 }

+ 9 - 1
src/main/java/com/izouma/nineth/web/IdentityAuthController.java

@@ -2,12 +2,14 @@ package com.izouma.nineth.web;
 
 import com.izouma.nineth.domain.IdentityAuth;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.UserIdentity;
 import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.IdentityAuthRepo;
 import com.izouma.nineth.service.IdentityAuthService;
 import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
+import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.data.domain.Page;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -24,7 +26,7 @@ public class IdentityAuthController extends BaseController {
     private IdentityAuthService identityAuthService;
     private IdentityAuthRepo    identityAuthRepo;
 
-//    @PreAuthorize("hasAnyRole('ADMIN','OPERATOR')")
+    //    @PreAuthorize("hasAnyRole('ADMIN','OPERATOR')")
     @PostMapping("/all")
     public Page<IdentityAuth> all(@RequestBody PageQuery pageQuery) {
         return identityAuthService.all(pageQuery);
@@ -67,5 +69,11 @@ public class IdentityAuthController extends BaseController {
     public void deny(@RequestParam Long id) {
         identityAuthService.audit(id, AuthStatus.FAIL);
     }
+
+    @ApiOperation("查找重复身份证")
+    @PostMapping("/repeat")
+    public List<UserIdentity> repeat(@RequestParam String idNo, @RequestParam Long userId) {
+        return identityAuthService.repeat(idNo, userId);
+    }
 }
 

+ 39 - 5
src/main/vue/src/views/IdentityAuthList.vue

@@ -65,15 +65,23 @@
                         ></el-image>
                     </template>
                 </el-table-column>
-                <el-table-column prop="orgLicenseExpire" label="营业执照有效期" min-width="160" show-overflow-tooltip key="3">
+                <el-table-column
+                    prop="orgLicenseExpire"
+                    label="营业执照有效期"
+                    min-width="160"
+                    show-overflow-tooltip
+                    key="3"
+                >
                     <template v-slot="{ row }">
                         <span>{{ row.orgLicenseExpire || '长期' }}</span>
                     </template>
                 </el-table-column>
             </template>
             <template v-else>
-                <el-table-column prop="phone" label="手机" min-width="150" show-overflow-tooltip key="4"> </el-table-column>
-                <el-table-column prop="email" label="邮箱" min-width="200" show-overflow-tooltip key="5"> </el-table-column>
+                <el-table-column prop="phone" label="手机" min-width="150" show-overflow-tooltip key="4">
+                </el-table-column>
+                <el-table-column prop="email" label="邮箱" min-width="200" show-overflow-tooltip key="5">
+                </el-table-column>
             </template>
 
             <el-table-column prop="idNo" label="身份证" min-width="200" show-overflow-tooltip> </el-table-column>
@@ -99,8 +107,9 @@
             </el-table-column>
             <el-table-column prop="status" label="审核状态" :formatter="statusFormatter" width="120" align="center">
             </el-table-column>
-            <el-table-column label="操作" align="center" fixed="right" width="150">
+            <el-table-column label="操作" align="center" fixed="right" width="210">
                 <template slot-scope="{ row }">
+                    <el-button @click="repeat(row)" type="success" size="mini" plain> 查重 </el-button>
                     <el-button @click="pass(row)" type="primary" size="mini" plain v-if="row.status === 'PENDING'">
                         通过
                     </el-button>
@@ -131,6 +140,17 @@
             >
             </el-pagination>
         </div>
+
+        <el-dialog :visible.sync="showDialog" title="重复列表" width="800px" top="10vh">
+            <el-table :data="list" v-loading="dialogLoading" height="40vh" empty-text="暂无重复">
+                <el-table-column prop="id" label="ID" width="80"></el-table-column>
+                <el-table-column prop="nickname" label="昵称"></el-table-column>
+                <el-table-column prop="phone" label="手机"></el-table-column>
+                <el-table-column prop="createdAt" label="注册时间" min-width="100"></el-table-column>
+                <el-table-column prop="status" label="认证状态" :formatter="statusFormatter"></el-table-column>
+                <el-table-column prop="identityCreatedAt" label="认证时间" min-width="100"></el-table-column>
+            </el-table>
+        </el-dialog>
     </div>
 </template>
 <script>
@@ -153,7 +173,10 @@ export default {
                 { label: '失败', value: 'FAIL' }
             ],
             status: 'PENDING',
-            org: false
+            org: false,
+            showDialog: false,
+            dialogLoading: false,
+            list: []
         };
     },
     computed: {
@@ -263,6 +286,17 @@ export default {
                     this.getData();
                 })
                 .catch(e => {});
+        },
+        repeat(row) {
+            this.list = [];
+            this.showDialog = true;
+            this.dialogLoading = true;
+            this.$http.post('/identityAuth/repeat', { idNo: row.idNo, userId: row.userId }).then(res => {
+                if (res != '') {
+                    this.list = res;
+                }
+                this.dialogLoading = false;
+            });
         }
     }
 };