|  |  |  | 
|---|
|  |  |  | import com.panzhihua.common.model.dtos.elders.ComEldersAuthGetResultDTO; | 
|---|
|  |  |  | import com.panzhihua.common.model.dtos.elders.ComEldersAuthPageDTO; | 
|---|
|  |  |  | import com.panzhihua.common.model.dtos.elders.ComEldersAuthUserAddAppDTO; | 
|---|
|  |  |  | import com.panzhihua.common.model.helper.AESUtil; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.R; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.community.*; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.community.EldersAuthDetailsVO; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.community.EldersAuthFeedbackVO; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.community.EldersAuthVO; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.elders.ComElderAuthUserAppVO; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.partybuilding.ComEldersAuthHistoryExcelVO; | 
|---|
|  |  |  | import com.panzhihua.common.model.vos.user.SysUserVO; | 
|---|
|  |  |  | import com.panzhihua.common.utlis.AgeUtils; | 
|---|
|  |  |  | import com.panzhihua.common.utlis.DateUtils; | 
|---|
|  |  |  | import com.panzhihua.common.utlis.IdCard; | 
|---|
|  |  |  | import com.panzhihua.common.utlis.StringUtils; | 
|---|
|  |  |  | import com.panzhihua.service_community.dao.*; | 
|---|
|  |  |  | import com.panzhihua.service_community.model.dos.*; | 
|---|
|  |  |  | import com.panzhihua.service_community.service.EldersAuthService; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Value; | 
|---|
|  |  |  | import org.springframework.stereotype.Service; | 
|---|
|  |  |  | import org.springframework.beans.BeanUtils; | 
|---|
|  |  |  | import org.springframework.transaction.annotation.Transactional; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import javax.crypto.BadPaddingException; | 
|---|
|  |  |  | import javax.crypto.IllegalBlockSizeException; | 
|---|
|  |  |  | import javax.crypto.NoSuchPaddingException; | 
|---|
|  |  |  | import java.io.UnsupportedEncodingException; | 
|---|
|  |  |  | import java.security.InvalidKeyException; | 
|---|
|  |  |  | import java.security.NoSuchAlgorithmException; | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Date; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | 
|---|
|  |  |  | private ComEldersAuthElderlyMapper comEldersAuthElderlyMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private SysConfMapper sysConfDao; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private ComEldersAuthHistoryRecordMapper comEldersAuthHistoryRecordMapper; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private ComEldersAuthStatisticsMapper comEldersAuthStatisticsMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Value("${domain.aesKey:}") | 
|---|
|  |  |  | private String aesKey; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增高龄认证 | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return 新增结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public R addFeedback(EldersAuthFeedbackAddDTO eldersAuthFeedbackAddDTO){ | 
|---|
|  |  |  | EldersAuthDO eldersAuthDO = eldersAuthDAO.selectById(eldersAuthFeedbackAddDTO.getAuthId()); | 
|---|
|  |  |  | if(eldersAuthDO==null){ | 
|---|
|  |  |  | return R.fail("认证记录不存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(eldersAuthDO.getType()==null){ | 
|---|
|  |  |  | return R.fail("认证方式未知"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(eldersAuthDO.getType().intValue()!=1){ | 
|---|
|  |  |  | return R.fail("当前认证方式不能进行反馈"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | EldersAuthFeedbackDO eldersAuthFeedbackDO = new EldersAuthFeedbackDO(); | 
|---|
|  |  |  | eldersAuthFeedbackDO.setCreateBy(eldersAuthFeedbackAddDTO.getUserId()); | 
|---|
|  |  |  | eldersAuthFeedbackDO.setCreateAt(new Date()); | 
|---|
|  |  |  | 
|---|
|  |  |  | SysConfDO sysConfDO = new SysConfDO(); | 
|---|
|  |  |  | sysConfDO.setCode("ELDER_AUTH_TYPE"); | 
|---|
|  |  |  | sysConfDO.setName("高龄认证类型"); | 
|---|
|  |  |  | sysConfDO.setValue(1+"");//核验类型(1.视频认证 2.人脸核验) | 
|---|
|  |  |  | sysConfDO.setDescribe("高龄认证默认添加的核验类型"); | 
|---|
|  |  |  | sysConfDO.setValue(2+"");//核验类型(1.视频认证 2.人脸核验) | 
|---|
|  |  |  | sysConfDO.setDescription("高龄认证默认添加的核验类型"); | 
|---|
|  |  |  | sysConfDO.setCommunityId(communityId); | 
|---|
|  |  |  | sysConfDO.setCreateBy(eldersAuthTypeQueryDTO.getUserId()); | 
|---|
|  |  |  | int inserted = sysConfDao.insert(sysConfDO); | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional(rollbackFor = Exception.class) | 
|---|
|  |  |  | public R addAuthByEldersApp(ComEldersAuthGetResultDTO authGetResultDTO){ | 
|---|
|  |  |  | public R addAuthByEldersApp(ComEldersAuthGetResultDTO authGetResultDTO) throws Exception{ | 
|---|
|  |  |  | ComEldersAuthUserDO authUserDO = comEldersAuthUserMapper.selectById(authGetResultDTO.getAuthUserId()); | 
|---|
|  |  |  | if(authUserDO != null){ | 
|---|
|  |  |  | String idCard = authUserDO.getIdCard(); | 
|---|
|  |  |  | EldersAuthDO eldersAuthDO = new EldersAuthDO(); | 
|---|
|  |  |  | eldersAuthDO.setIdCard(authUserDO.getIdCard()); | 
|---|
|  |  |  | eldersAuthDO.setIdCard(idCard); | 
|---|
|  |  |  | eldersAuthDO.setAuthUserName(authUserDO.getName()); | 
|---|
|  |  |  | eldersAuthDO.setCreateBy(authGetResultDTO.getUserId()); | 
|---|
|  |  |  | eldersAuthDO.setCreateAt(new Date()); | 
|---|
|  |  |  | eldersAuthDO.setSumitUserId(authGetResultDTO.getUserId()); | 
|---|
|  |  |  | String domicile = this.baseMapper.selectDomicile(eldersAuthDO.getIdCard()); | 
|---|
|  |  |  | String domicile = this.baseMapper.selectDomicile(idCard); | 
|---|
|  |  |  | if(org.springframework.util.StringUtils.isEmpty(domicile)){ | 
|---|
|  |  |  | domicile = "暂无"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | eldersAuthDO.setDomicile(domicile); | 
|---|
|  |  |  | eldersAuthDO.setBirthDay(IdCard.birthDay(authUserDO.getIdCard())); | 
|---|
|  |  |  | eldersAuthDO.setBirthDay(IdcardUtil.getBirthDate(idCard)); | 
|---|
|  |  |  | eldersAuthDO.setFamilyUserId(authUserDO.getId()); | 
|---|
|  |  |  | eldersAuthDO.setAge(IdcardUtil.getAgeByIdCard(eldersAuthDO.getIdCard())); | 
|---|
|  |  |  | Integer age = IdcardUtil.getAgeByIdCard(idCard); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | eldersAuthDO.setAge(age); | 
|---|
|  |  |  | eldersAuthDO.setType(2); | 
|---|
|  |  |  | eldersAuthDO.setVerificationResult(authGetResultDTO.getVerificationResult()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.baseMapper.insert(eldersAuthDO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //认证成功  添加认证记录 | 
|---|
|  |  |  | List<ComEldersAuthHistoryRecordDO> authHistoryRecordDOList = comEldersAuthHistoryRecordMapper.selectList(new QueryWrapper<ComEldersAuthHistoryRecordDO>() | 
|---|
|  |  |  | .lambda().eq(ComEldersAuthHistoryRecordDO::getIdCard,eldersAuthDO.getIdCard()).ge(ComEldersAuthHistoryRecordDO::getCreateAt, DateUtils.getFirstDayOfMonth())); | 
|---|
|  |  |  | if(authHistoryRecordDOList.isEmpty()){ | 
|---|
|  |  |  | ComEldersAuthHistoryRecordDO authHistoryRecordDO = new ComEldersAuthHistoryRecordDO(); | 
|---|
|  |  |  | authHistoryRecordDO.setUserId(authGetResultDTO.getAuthUserId()); | 
|---|
|  |  |  | authHistoryRecordDO.setAuthId(eldersAuthDO.getId()); | 
|---|
|  |  |  | BeanUtils.copyProperties(eldersAuthDO,authHistoryRecordDO); | 
|---|
|  |  |  | authHistoryRecordDO.setId(null); | 
|---|
|  |  |  | authHistoryRecordDO.setBrithday(AgeUtils.getAgeFormatBirthday(IdcardUtil.getBirthByIdCard(idCard))); | 
|---|
|  |  |  | authHistoryRecordDO.setAge(age); | 
|---|
|  |  |  | authHistoryRecordDO.setIsAuth(1); | 
|---|
|  |  |  | authHistoryRecordDO.setDomicile(domicile); | 
|---|
|  |  |  | comEldersAuthHistoryRecordMapper.insert(authHistoryRecordDO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | authUserDO.setIsAuth(ComEldersAuthUserDO.isAuth.yes); | 
|---|
|  |  |  | authUserDO.setIdCard(AESUtil.encrypt128(authUserDO.getIdCard(), aesKey)); | 
|---|
|  |  |  | comEldersAuthUserMapper.updateById(authUserDO); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return R.ok(eldersAuthDO.getId()); | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return  查询结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R pageEldersByApp(ComEldersAuthPageDTO authPageDTO){ | 
|---|
|  |  |  | public R pageEldersByApp(ComEldersAuthPageDTO authPageDTO) throws Exception{ | 
|---|
|  |  |  | //判断当前用户是否是高龄老人,如果是则将这个人新增到高龄老人的列表里 | 
|---|
|  |  |  | SysUserVO userVO = this.eldersAuthDAO.getSysUserByUserId(authPageDTO.getUserId()); | 
|---|
|  |  |  | if(userVO != null){ | 
|---|
|  |  |  | String idCard = userVO.getIdCard(); | 
|---|
|  |  |  | userVO.setIdCard(AESUtil.encrypt128(userVO.getIdCard(), aesKey)); | 
|---|
|  |  |  | //查询当前用户是否已存在用户关联中 | 
|---|
|  |  |  | ComEldersAuthUserDO oldAuthUserDO = comEldersAuthUserMapper.selectOne(new QueryWrapper<ComEldersAuthUserDO>().lambda() | 
|---|
|  |  |  | .eq(ComEldersAuthUserDO::getIdCard,userVO.getIdCard())); | 
|---|
|  |  |  | .eq(ComEldersAuthUserDO::getIdCard, userVO.getIdCard())); | 
|---|
|  |  |  | if(oldAuthUserDO == null){ | 
|---|
|  |  |  | //查询老人库是否存在当前用户信息 | 
|---|
|  |  |  | ComEldersAuthElderlyDO authElderlyDO = comEldersAuthElderlyMapper.selectOne(new QueryWrapper<ComEldersAuthElderlyDO>().lambda() | 
|---|
|  |  |  | 
|---|
|  |  |  | authUserDO.setUserId(userVO.getUserId()); | 
|---|
|  |  |  | authUserDO.setRelation(ComEldersAuthUserDO.relation.br); | 
|---|
|  |  |  | authUserDO.setName(userVO.getName()); | 
|---|
|  |  |  | authUserDO.setIdCard(userVO.getIdCard()); | 
|---|
|  |  |  | authUserDO.setIdCard(idCard); | 
|---|
|  |  |  | authUserDO.setCommunityId(authElderlyDO.getCommunityId()); | 
|---|
|  |  |  | authUserDO.setBigAgeId(authElderlyDO.getId()); | 
|---|
|  |  |  | comEldersAuthUserMapper.insert(authUserDO); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | IPage<ComElderAuthUserAppVO> authUserAppVOIPage = comEldersAuthUserMapper.findByPage(new Page(authPageDTO.getPageNum(),authPageDTO.getPageSize())); | 
|---|
|  |  |  | IPage<ComElderAuthUserAppVO> authUserAppVOIPage = comEldersAuthUserMapper.findByPage(new Page(authPageDTO.getPageNum(),authPageDTO.getPageSize()),authPageDTO.getUserId()); | 
|---|
|  |  |  | if(!authUserAppVOIPage.getRecords().isEmpty()){ | 
|---|
|  |  |  | authUserAppVOIPage.getRecords().forEach(authUser -> { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | authUser.setAge(AgeUtils.getAgeFromBirthTimes(IdCard.birthDay(authUser.getIdCard()).getTime())); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ComEldersAuthUserDO authUserDO = comEldersAuthUserMapper.selectById(authUser.getElderId()); | 
|---|
|  |  |  | if(authUserDO != null){ | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | authUser.setAge(IdcardUtil.getAgeByIdCard(authUserDO.getIdCard())); | 
|---|
|  |  |  | }catch (NullPointerException e){ | 
|---|
|  |  |  | log.error("获取用户年龄出错了:" + authUser.getIdCard()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(authUserAppVOIPage); | 
|---|
|  |  |  | 
|---|
|  |  |  | return R.fail("当前老人已存在"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String encryptedIdCard =authUserAddAppDTO.getIdCard(); | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | encryptedIdCard =  AESUtil.encrypt128(authUserAddAppDTO.getIdCard(), aesKey); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ComEldersAuthElderlyDO authElderlyDO = comEldersAuthElderlyMapper.selectOne(new QueryWrapper<ComEldersAuthElderlyDO>().lambda() | 
|---|
|  |  |  | .eq(ComEldersAuthElderlyDO::getIdCard,authUserAddAppDTO.getIdCard())); | 
|---|
|  |  |  | .eq(ComEldersAuthElderlyDO::getIdCard, encryptedIdCard)); | 
|---|
|  |  |  | if(authElderlyDO == null){ | 
|---|
|  |  |  | return R.fail("未在系统找到相符的高龄老人!请检查信息是否正确,或联系社区工作人员"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.fail(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R pageQueryEldersAuthRecord(PageEldersAuthRecordDTO pageEldersAuthElderlyDTO) { | 
|---|
|  |  |  | Page page = new Page(); | 
|---|
|  |  |  | page.setCurrent(pageEldersAuthElderlyDTO.getPageNum()); | 
|---|
|  |  |  | page.setSize(pageEldersAuthElderlyDTO.getPageSize()); | 
|---|
|  |  |  | IPage<ComEldersAuthRecordForCommunityVO> ipage = eldersAuthDAO.selectCommunityEldersRecordByPage(page, pageEldersAuthElderlyDTO); | 
|---|
|  |  |  | return R.ok(ipage); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R setCommunityAuthType(Long communityId, Integer type) { | 
|---|
|  |  |  | List<SysConfDO> authConf = | 
|---|
|  |  |  | sysConfDao.selectList(new LambdaQueryWrapper<SysConfDO>() | 
|---|
|  |  |  | .eq(SysConfDO::getCommunityId, communityId) | 
|---|
|  |  |  | .eq(SysConfDO::getCode, "ELDER_AUTH_TYPE") | 
|---|
|  |  |  | .orderByDesc(SysConfDO::getCreateAt)); | 
|---|
|  |  |  | if(authConf!=null && authConf.size()>0){ | 
|---|
|  |  |  | SysConfDO first = authConf.get(0); | 
|---|
|  |  |  | first.setValue(type+""); | 
|---|
|  |  |  | int updated = sysConfDao.updateById(first); | 
|---|
|  |  |  | if(updated == 1){ | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.fail(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public R getAuthHistoryList(PageEldersAuthHistoryDTO pageEldersAuthElderlyDTO){ | 
|---|
|  |  |  | return R.ok(comEldersAuthStatisticsMapper.findByPage(new Page(pageEldersAuthElderlyDTO.getPageNum(),pageEldersAuthElderlyDTO.getPageSize()),pageEldersAuthElderlyDTO)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public R getAuthHistoryExport(PageEldersAuthHistoryDTO pageEldersAuthElderlyDTO){ | 
|---|
|  |  |  | Date startTime = DateUtils.getYearMonthStart(pageEldersAuthElderlyDTO.getYear(),pageEldersAuthElderlyDTO.getMonth()); | 
|---|
|  |  |  | Date endTime = DateUtils.getYearMonthEnd(pageEldersAuthElderlyDTO.getYear(),pageEldersAuthElderlyDTO.getMonth()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ComEldersAuthHistoryRecordDO> userList = comEldersAuthHistoryRecordMapper.selectList(new QueryWrapper<ComEldersAuthHistoryRecordDO>().lambda() | 
|---|
|  |  |  | .eq(ComEldersAuthHistoryRecordDO::getCommunityId,pageEldersAuthElderlyDTO.getCommunityId()) | 
|---|
|  |  |  | .ge(ComEldersAuthHistoryRecordDO::getCreateAt,startTime).le(ComEldersAuthHistoryRecordDO::getCreateAt,endTime)); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | List<ComEldersAuthHistoryExcelVO> authHistoryExcelVOS = new ArrayList<>(); | 
|---|
|  |  |  | userList.forEach(user -> { | 
|---|
|  |  |  | ComEldersAuthHistoryExcelVO authHistoryExcelVO = new ComEldersAuthHistoryExcelVO(); | 
|---|
|  |  |  | BeanUtils.copyProperties(user,authHistoryExcelVO); | 
|---|
|  |  |  | authHistoryExcelVOS.add(authHistoryExcelVO); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | return R.ok(authHistoryExcelVOS); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|