puhanshu
2021-09-13 a64da80a8dcf17f71f87a9c3a76842c31d8615cf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package com.panzhihua.service_community.service.impl;
 
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Objects;
 
import javax.annotation.Resource;
import javax.crypto.BadPaddingException;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
 
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.panzhihua.common.model.dtos.community.AddIdentityAuthDTO;
import com.panzhihua.common.model.dtos.community.PageIdentityAuthRecordDTO;
import com.panzhihua.common.model.helper.AESUtil;
import com.panzhihua.common.model.vos.R;
import com.panzhihua.service_community.dao.ComElderAuthElderliesDAO;
import com.panzhihua.service_community.dao.ComElderAuthRecordsDAO;
import com.panzhihua.service_community.model.dos.ComElderAuthElderliesDO;
import com.panzhihua.service_community.model.dos.ComElderAuthRecordsDO;
import com.panzhihua.service_community.service.ComElderAuthRecordsService;
 
import lombok.extern.slf4j.Slf4j;
 
/**
 * title: ComElderAuthRecordsServiceImpl  社区政务》高龄老人认证》认证记录表服务实现类
 * projectName 成都呐喊信息技术有限公司-智慧社区项目
 * description: 社区政务》高龄老人认证》认证记录表服务实现类
 *
 * @author txb
 * @date 2021/9/01 14:12
 */
@Slf4j
@Service
public class ComElderAuthRecordsServiceImpl extends ServiceImpl<ComElderAuthRecordsDAO, ComElderAuthRecordsDO> implements ComElderAuthRecordsService {
 
    @Resource
    private ComElderAuthRecordsDAO comElderAuthRecordsDAO;
    @Resource
    private ComElderAuthElderliesDAO comElderAuthElderliesDAO;
 
    @Value("${domain.aesKey:}")
    private String aesKey;
 
    /**
     * 新增高龄认证
     * @param addIdentityAuthDTO 请求参数
     * @return 新增结果
     */
    @Override
    public R addElderAuth(AddIdentityAuthDTO addIdentityAuthDTO) {
        String idCard;
        try {
            idCard = AESUtil.encrypt128(addIdentityAuthDTO.getIdCard(), aesKey);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("加密失败【{}】", e.getMessage());
            return R.fail("认证失败,请重新尝试");
        }
        ComElderAuthElderliesDO comElderAuthElderliesDO = comElderAuthElderliesDAO.selectOne(new QueryWrapper<ComElderAuthElderliesDO>()
                .lambda().eq(ComElderAuthElderliesDO::getIdCard, idCard).eq(ComElderAuthElderliesDO::getCommunityId, addIdentityAuthDTO.getCommunityId()));
        if (Objects.isNull(comElderAuthElderliesDO)) {
            return R.fail("该人员未在社区报道无法认证");
        }
        boolean isInfoCorrect = !comElderAuthElderliesDO.getName().equals(addIdentityAuthDTO.getName()) ||
                !(comElderAuthElderliesDO.getIsRegister() && comElderAuthElderliesDO.getIsAlive());
        if (isInfoCorrect) {
            return R.fail("信息有误,请检查!");
        }
        Date dateNow = new Date();
        String currentAuthPeriod = new SimpleDateFormat("yyyyMM").format(dateNow);
        List<ComElderAuthRecordsDO> currentAuthPeriodRecords = comElderAuthRecordsDAO
                .selectList(new QueryWrapper<ComElderAuthRecordsDO>().lambda()
                        .eq(ComElderAuthRecordsDO::getAuthPeriod, currentAuthPeriod)
                        .eq(ComElderAuthRecordsDO::getElderliesId, comElderAuthElderliesDO.getId()));
        if (!currentAuthPeriodRecords.isEmpty()) {
            if (currentAuthPeriodRecords.stream().filter(record -> record.getAuthStatus()).findFirst().isPresent()) {
                return R.fail(String.format("该人员%s期已认证无需重复认证", currentAuthPeriod));
            }
            if (currentAuthPeriodRecords.stream().filter(record -> record.getApprovalStatus().intValue() == 1).findFirst().isPresent()) {
                return R.fail("该人员本期有尚未审核的认证,请稍后再试!");
            }
        }
        ComElderAuthRecordsDO comElderAuthRecordsDO = new ComElderAuthRecordsDO();
        BeanUtils.copyProperties(addIdentityAuthDTO, comElderAuthRecordsDO);
        comElderAuthRecordsDO.setElderliesId(comElderAuthElderliesDO.getId());
        comElderAuthRecordsDO.setAuthDate(dateNow);
        comElderAuthRecordsDO.setAuthPeriod(currentAuthPeriod);
        if (addIdentityAuthDTO.getType().intValue() == 2) {
            comElderAuthRecordsDO.setApprovalStatus(3);
            comElderAuthRecordsDO.setApprovalDate(dateNow);
            comElderAuthRecordsDO.setAuthStatus(true);
        }
        if (this.baseMapper.insert(comElderAuthRecordsDO) < 0) {
            return R.fail("认证失败,请重新尝试");
        }
        return R.ok();
    }
 
    public static void main(String[] args) throws Exception {
        System.out.println(AESUtil.encrypt128("500381199804034737", "Ryo7M3n8loC5"));
    }
 
    /**
     * 分页查询高龄认证记录
     * @param pageIdentityAuthRecordDTO 高龄认证记录vo
     * @return 高龄认证记录列表
     */
    @Override
    public R queryRecordWithPage(PageIdentityAuthRecordDTO pageIdentityAuthRecordDTO) {
        return R.ok(comElderAuthRecordsDAO.queryRecordWithPage(new Page(pageIdentityAuthRecordDTO.getPageNum(),
                pageIdentityAuthRecordDTO.getPageSize()), pageIdentityAuthRecordDTO));
    }
 
    /**
     * 获取高龄认证详情
     * @param identityAuthId 认证id
     * @return 认证记录详情
     */
    @Override
    public R retrieveElderAuthDetail(Long identityAuthId) {
        return R.ok(comElderAuthRecordsDAO.findById(identityAuthId));
    }
}