| | |
| | | @Value("${debug_model}") |
| | | private Boolean isDebug; |
| | | |
| | | @Value("${h5.wechat.mock-enabled:false}") |
| | | private boolean h5WechatMockEnabled; |
| | | |
| | | @Value("${h5.wechat.mock-openid:}") |
| | | private String h5WechatMockOpenid; |
| | | |
| | | @Value("${h5.wechat.mock-code:DEV_MOCK}") |
| | | private String h5WechatMockCode; |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | |
| | | if (StringUtils.isNotBlank(member.getIdcardNo()) && !IdcardUtil.isValidCard(member.getIdcardNo())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); |
| | | } |
| | | // 内部员工/司机:仅在 type=0,2 范围内去重,不与商户人员(type=3)互斥 |
| | | if(StringUtils.isNotBlank(member.getIdcardNo())){ |
| | | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .in(Member::getType,new Integer[]{Constants.ZERO,Constants.TWO}) |
| | |
| | | if(StringUtils.isBlank(code)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if (h5WechatMockEnabled && StringUtils.equals(code, h5WechatMockCode)) { |
| | | return buildYwWxAuthorizeVO(StringUtils.trimToEmpty(h5WechatMockOpenid), userType); |
| | | } |
| | | String appId = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode(); |
| | | String appSecret = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_SECRET).getCode(); |
| | | String getTokenUrl = WXConstant.GET_USER_INFO_URL.replace("CODE", code) |
| | |
| | | JSONObject tokenJson = JSONObject.parseObject(HttpsUtil.get(getTokenUrl,true)); |
| | | log.error("=========================tokenJson=====================" + tokenJson); |
| | | String openId = ""; |
| | | WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO(); |
| | | if(Objects.nonNull(tokenJson)&&!Objects.isNull(tokenJson.get("access_token"))){ |
| | | openId = tokenJson.getString("openid"); |
| | | }else{ |
| | | if(StringUtils.isBlank(openId)){ |
| | | return wxAuthorizeVO; |
| | | return new WxAuthorizeVO(); |
| | | } |
| | | } |
| | | return buildYwWxAuthorizeVO(openId, userType); |
| | | } |
| | | |
| | | private WxAuthorizeVO buildYwWxAuthorizeVO(String openId, Integer userType) { |
| | | WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO(); |
| | | wxAuthorizeVO.setOpenid(openId); |
| | | if(Constants.equalsInteger(userType, LoginUserInfo.H5_USER_CUSTOMER)){ |
| | | String token = ywCustomerH5AuthService.loginByOpenId(openId); |
| | |
| | | } |
| | | return wxAuthorizeVO; |
| | | } |
| | | //根据openId 查询运维用户信息 |
| | | SystemUser user = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda() |
| | | .eq(SystemUser::getOpenid,openId) |
| | | .eq(SystemUser::getDeleted,Boolean.FALSE) |
| | |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setStatus(Constants.ZERO); |
| | | this.checkYwMember(member); |
| | | applyYwMemberIdcard(member); |
| | | memberMapper.insert(member); |
| | | return member; |
| | | } |
| | |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Member existing = memberMapper.selectById(member.getId()); |
| | | if (existing == null || Constants.equalsInteger(existing.getIsdeleted(), Constants.ONE)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "人员信息不存在,请刷新后重试"); |
| | | } |
| | | LoginUserInfo loginUserInfo = member.getLoginUserInfo(); |
| | | member.setEditor(loginUserInfo.getId()); |
| | | member.setCustomerId(null); |
| | | member.setEditDate(new Date()); |
| | | member.setType(Constants.memberType.customer); |
| | | member.setStatus(Constants.ZERO); |
| | | member.setIsdeleted(Constants.ZERO); |
| | | member.setStatus(Constants.ZERO); |
| | | this.checkYwMember(member); |
| | | if (StringUtils.isNotBlank(member.getIdcardNoNew())) { |
| | | applyYwMemberIdcardChange(member, existing); |
| | | } else { |
| | | member.setIdcardNo(existing.getIdcardNo()); |
| | | member.setIdcardDecode(existing.getIdcardDecode()); |
| | | } |
| | | member.setIdcardNoNew(null); |
| | | memberMapper.updateById(member); |
| | | return member; |
| | | } |
| | | |
| | | /** 新建:明文证件号写入 idcard_no(加密) + idcard_decode(脱敏) */ |
| | | private void applyYwMemberIdcard(Member member) { |
| | | if (StringUtils.isBlank(member.getIdcardNo())) { |
| | | return; |
| | | } |
| | | String plain = member.getIdcardNo().trim(); |
| | | if (Constants.equalsInteger(member.getIdcardType(), Constants.ZERO)) { |
| | | member.setSex(Constants.getSexByCardNo(plain)); |
| | | member.setBirthday(DateUtil.fromStringToDate("yyyyMMdd", IdcardUtil.getBirthByIdCard(plain))); |
| | | } |
| | | member.setIdcardDecode(Constants.getTuominStr(plain)); |
| | | member.setIdcardNo(DESUtil.encrypt(Constants.EDS_PWD, plain)); |
| | | } |
| | | |
| | | /** 编辑:通过 idcardNoNew 变更证件号 */ |
| | | private void applyYwMemberIdcardChange(Member member, Member existing) { |
| | | String plain = member.getIdcardNoNew().trim(); |
| | | String encrypted = DESUtil.encrypt(Constants.EDS_PWD, plain); |
| | | if (StringUtils.equals(existing.getIdcardNo(), encrypted)) { |
| | | return; |
| | | } |
| | | if (Constants.equalsInteger(member.getIdcardType(), Constants.ZERO)) { |
| | | member.setSex(Constants.getSexByCardNo(plain)); |
| | | member.setBirthday(DateUtil.fromStringToDate("yyyyMMdd", IdcardUtil.getBirthByIdCard(plain))); |
| | | } |
| | | member.setIdcardDecode(Constants.getTuominStr(plain)); |
| | | member.setIdcardNo(encrypted); |
| | | } |
| | | |
| | | /** 列表展示:补全 idcard_decode */ |
| | | private void fillMemberIdcardDecode(Member member) { |
| | | if (StringUtils.isNotBlank(member.getIdcardDecode()) || StringUtils.isBlank(member.getIdcardNo())) { |
| | | return; |
| | | } |
| | | try { |
| | | String plain = DESUtil.decrypt(Constants.EDS_PWD, member.getIdcardNo()); |
| | | if (StringUtils.isNotBlank(plain)) { |
| | | member.setIdcardDecode(Constants.getTuominStr(plain)); |
| | | } |
| | | } catch (Exception e) { |
| | | member.setIdcardDecode(Constants.getTuominStr(member.getIdcardNo())); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | |
| | | public void checkYwMember(Member member){ |
| | | if (StringUtils.isBlank(member.getPhone())||!PhoneUtil.isPhone(member.getPhone())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"电话号码格式有误"); |
| | | public void checkYwMember(Member member) { |
| | | if (StringUtils.isBlank(member.getPhone()) || !PhoneUtil.isPhone(member.getPhone())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "电话号码格式有误"); |
| | | } |
| | | if (StringUtils.isNotBlank(member.getIdcardNo()) && Constants.equalsInteger(member.getIdcardType(),Constants.ZERO) && !IdcardUtil.isValidCard(member.getIdcardNo())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"身份证号格式有误"); |
| | | if (memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .ne(Objects.nonNull(member.getId()), Member::getId, member.getId()) |
| | | .eq(Member::getPhone, member.getPhone()) |
| | | .eq(Member::getType, Constants.memberType.customer) |
| | | .eq(Member::getIsdeleted, Constants.ZERO)) > Constants.ZERO) { |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【" + member.getPhone() + "】已被使用,不能重复"); |
| | | } |
| | | if(StringUtils.isNotBlank(member.getIdcardNo() ) && Constants.equalsInteger(member.getIdcardType(),Constants.ZERO) ){ |
| | | if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .ne(Objects.nonNull(member.getId()),Member::getId,member.getId()) |
| | | .eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, member.getIdcardNo())) |
| | | .eq(Member::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "身份证号【"+member.getIdcardNo()+"】已被使用,不能重复"); |
| | | String plainIdcard = resolveYwPlainIdcard(member); |
| | | if (StringUtils.isNotBlank(plainIdcard)) { |
| | | if (Constants.equalsInteger(member.getIdcardType(), Constants.ZERO) && !IdcardUtil.isValidCard(plainIdcard)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "身份证号格式有误"); |
| | | } |
| | | String encrypted = DESUtil.encrypt(Constants.EDS_PWD, plainIdcard); |
| | | if (memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | .ne(Objects.nonNull(member.getId()), Member::getId, member.getId()) |
| | | .eq(Member::getType, Constants.memberType.customer) |
| | | .eq(Member::getIsdeleted, Constants.ZERO) |
| | | .eq(Member::getIdcardNo, encrypted)) > Constants.ZERO) { |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "证件号【" + plainIdcard + "】已被使用,不能重复"); |
| | | } |
| | | } |
| | | // if(memberMapper.selectCount(new QueryWrapper<Member>().lambda() |
| | | // .ne(Objects.nonNull(member.getId()),Member::getId,member.getId()) |
| | | // .eq(Member::getPhone, member.getPhone()) |
| | | // .eq(Member::getIsdeleted,Constants.ZERO) ) >0){ |
| | | // throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "手机号【"+member.getPhone()+"】已被使用,不能重复"); |
| | | // } |
| | | } |
| | | |
| | | private String resolveYwPlainIdcard(Member member) { |
| | | if (StringUtils.isNotBlank(member.getIdcardNoNew())) { |
| | | return member.getIdcardNoNew().trim(); |
| | | } |
| | | if (member.getId() == null && StringUtils.isNotBlank(member.getIdcardNo())) { |
| | | return member.getIdcardNo().trim(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | |
| | | .eq(Objects.nonNull(model)&&Objects.nonNull(model.getCustomerId()),Member::getCustomerId,model.getCustomerId()) |
| | | .and(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getName()),i->i.like(Member::getName,model.getName()).or().like( |
| | | Member::getPhone,model.getName() |
| | | )) |
| | | ).or().like(Member::getIdcardDecode, model.getName())) |
| | | .and(Objects.nonNull(model) && StringUtils.isNotBlank(model.getIdcardNo()), w -> { |
| | | String idcard = model.getIdcardNo().trim(); |
| | | w.eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, idcard)) |
| | | .or().like(Member::getIdcardDecode, idcard); |
| | | }) |
| | | .orderByDesc(Member::getCreateDate) |
| | | ); |
| | | return PageData.from(iPage); |
| | | PageData<Member> pageData = PageData.from(iPage); |
| | | if (pageData.getRecords() != null) { |
| | | for (Member item : pageData.getRecords()) { |
| | | fillMemberIdcardDecode(item); |
| | | } |
| | | } |
| | | return pageData; |
| | | } |
| | | |
| | | } |