package project.user.kyc.internal; import java.text.MessageFormat; import java.util.Date; import java.util.List; import kernel.exception.BusinessException; import kernel.web.ApplicationUtil; import project.redis.RedisHandler; import project.syspara.SysparaService; import project.user.UserRedisKeys; import project.user.kyc.Kyc; import project.user.kyc.KycService; public class KycServiceImpl implements KycService { private RedisHandler redisHandler; private SysparaService sysparaService; @Override public Kyc get(String partyId) { Kyc kyc = (Kyc) redisHandler.get(UserRedisKeys.KYC_PARTY_ID + partyId); if (kyc != null) return kyc; kyc = new Kyc(); kyc.setPartyId(partyId); return kyc; } @Override public void save(Kyc entity) { Kyc kyc = get(entity.getPartyId().toString()); // 实名认证是否判断身份证号唯一(true:是,false:否) Object obj = this.sysparaService.find("kyc_idnumber_only"); if (null != obj) { if ("true".equals(this.sysparaService.find("kyc_idnumber_only").getValue())) { List kycs = findByIdNumber(entity.getIdnumber().trim()); if (kycs != null) { for (Kyc kyc_othde : kycs) { if (kyc_othde.getStatus() == 2 && !kyc_othde.getPartyId().equals(entity.getPartyId())) { throw new BusinessException("身份证号已实名过!"); } } } } } if (kyc.getId() == null) { entity.setApply_time(new Date()); entity.setId(ApplicationUtil.getCurrentTimeUUID()); this.insertKyc(entity); redisHandler.setSync(UserRedisKeys.KYC_PARTY_ID + entity.getPartyId().toString(), entity); } else { kyc.setIdnumber(entity.getIdnumber()); kyc.setStatus(entity.getStatus()); kyc.setIdname(entity.getIdname()); kyc.setName(entity.getName()); kyc.setIdimg_1(entity.getIdimg_1()); kyc.setIdimg_2(entity.getIdimg_2()); kyc.setIdimg_3(entity.getIdimg_3()); kyc.setNationality(entity.getNationality()); if(entity.getStatus()==1) { kyc.setApply_time(new Date()); }else { kyc.setOperation_time(new Date()); } kyc.setMsg(entity.getMsg()); this.updateKyc(kyc); entity.setId(kyc.getId()); redisHandler.setSync(UserRedisKeys.KYC_PARTY_ID + kyc.getPartyId().toString(), kyc); } } @Override public void saveNoIdNumOnly(Kyc entity) { Kyc kyc = get(entity.getPartyId().toString()); if (kyc.getId() == null) { entity.setApply_time(new Date()); kyc.setId(ApplicationUtil.getCurrentTimeUUID()); this.insertKyc(entity); redisHandler.setSync(UserRedisKeys.KYC_PARTY_ID + entity.getPartyId().toString(), entity); } else { kyc.setIdnumber(entity.getIdnumber()); kyc.setStatus(entity.getStatus()); kyc.setIdname(entity.getIdname()); kyc.setName(entity.getName()); kyc.setIdimg_1(entity.getIdimg_1()); kyc.setIdimg_2(entity.getIdimg_2()); kyc.setIdimg_3(entity.getIdimg_3()); kyc.setNationality(entity.getNationality()); if (entity.getStatus() == 1) { kyc.setApply_time(new Date()); } else { kyc.setOperation_time(new Date()); } kyc.setMsg(entity.getMsg()); this.updateKyc(kyc); entity.setId(kyc.getId()); redisHandler.setSync(UserRedisKeys.KYC_PARTY_ID + kyc.getPartyId().toString(), kyc); } } /** * 查询是否有多个实名用户 * * @return */ public List findByIdNumber(String idNumber) { List list = ApplicationUtil.executeSelect(Kyc.class,"WHERE IDNUMBER=?",new Object[] {idNumber}); return list.size()<=0?null:list; } /** * 验证审核结果 */ public String checkApplyResult(String partyId) throws BusinessException { Kyc kyc = get(partyId); if (null == kyc.getId()) return ""; String msg = ""; switch (kyc.getStatus()) { case 0: msg = "已经提交申请,请等待审核"; break; case 1: msg = "审核中"; break; case 2: msg = "审核已通过"; break; case 3: msg = MessageFormat.format("审核未通过,原因:{0}", kyc.getMsg()); break; default: msg = "审核状态异常请联系客服"; break; } if (kyc.getStatus() != 3) { throw new BusinessException(msg); } else { return msg; } } public boolean isPass(String partyId) { Kyc kyc = get(partyId); if (null == kyc) return Boolean.FALSE; return kyc.getStatus() == 2; } public void delete(String partyId) { ApplicationUtil.executeDelete(Kyc.class,"WHERE PARTY_ID=?",new Object[] {partyId}); redisHandler.remove(UserRedisKeys.KYC_PARTY_ID + partyId); } public void insertKyc(Kyc kyc) { ApplicationUtil.executeInsert(kyc); } public void updateKyc(Kyc kyc) { ApplicationUtil.executeUpdate(kyc,"WHERE UUID=?", new Object[] {kyc.getId()}); } public void setRedisHandler(RedisHandler redisHandler) { this.redisHandler = redisHandler; } public void setSysparaService(SysparaService sysparaService) { this.sysparaService = sysparaService; } }