| | |
| | | package com.ruoyi.member.service.impl; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.ruoyi.common.core.enums.GenderEnum; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import org.apache.commons.io.IOUtils; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.member.DTO.MemberDTO; |
| | | import com.ruoyi.member.domain.pojo.Member; |
| | | import com.ruoyi.member.mapper.MemberMapper; |
| | | import com.ruoyi.member.service.IMemberService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.apache.http.HttpEntity; |
| | | import org.apache.http.client.config.RequestConfig; |
| | | import org.apache.http.client.methods.CloseableHttpResponse; |
| | | import org.apache.http.client.methods.HttpGet; |
| | | import org.apache.http.impl.client.CloseableHttpClient; |
| | | import org.apache.http.impl.client.HttpClients; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.net.URLEncoder; |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Service |
| | | public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> implements IMemberService { |
| | | |
| | | |
| | | public static RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setSocketTimeout(5000).build(); |
| | | // 配置您申请的KEY,在个人中心->我的数据,接口名称上方查看 |
| | | public static final String APPKEY = ""; |
| | | //明文查询地址 |
| | | public static String query_url = "http://op.juhe.cn/idcard/query?key=" + APPKEY; |
| | | |
| | | |
| | | @Resource |
| | | private IMemberService iMemberService; |
| | | @Override |
| | | public Member loginThird(MemberDTO memberDTO) { |
| | | try { |
| | | if (memberDTO.getType() == 1) { |
| | | LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery(); |
| | | wrapper.eq(Member::getZfbOpenid,memberDTO.getOpenid()); |
| | | Member member=iMemberService.getOne(wrapper); |
| | | if (member==null){ |
| | | Member m=new Member(); |
| | | m.setZfbOpenid(memberDTO.getOpenid()); |
| | | m.setNickname("未知"); |
| | | m.setLevel(0); |
| | | m.setAvatar(""); |
| | | iMemberService.save(m); |
| | | return m; |
| | | }else { |
| | | |
| | | return member; |
| | | } |
| | | |
| | | } |
| | | if (memberDTO.getType() == 2) { |
| | | LambdaQueryWrapper<Member> wrapper= Wrappers.lambdaQuery(); |
| | | wrapper.eq(Member::getWxOpenid,memberDTO.getOpenid()); |
| | | Member member=iMemberService.getOne(wrapper); |
| | | if (member==null){ |
| | | Member m=new Member(); |
| | | m.setZfbOpenid(memberDTO.getOpenid()); |
| | | m.setNickname("未知"); |
| | | m.setLevel(0); |
| | | m.setAvatar(""); |
| | | iMemberService.save(m); |
| | | return m; |
| | | }else { |
| | | |
| | | return member; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public Member getMembeid(MemberDTO memberDTO) { |
| | | return iMemberService.getById(memberDTO.getMemberid()); |
| | | } |
| | | |
| | | @Override |
| | | public void updateMembeid(MemberDTO memberDTO) { |
| | | Member member= iMemberService.getById(memberDTO.getMemberid()); |
| | | if (memberDTO.getAvatar()!=null){ |
| | | member.setAvatar(memberDTO.getAvatar()); |
| | | } |
| | | if (memberDTO.getNickname()!=null){ |
| | | member.setNickname(memberDTO.getNickname()); |
| | | } |
| | | iMemberService.updateById(member); |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void authentificationMembe(MemberDTO memberDTO) { |
| | | Member member= iMemberService.getById(memberDTO.getMemberid()); |
| | | member.setPhone(memberDTO.getPhone()); |
| | | member.setIdNumber(memberDTO.getIdNumber()); |
| | | member.setRealName(memberDTO.getRealName()); |
| | | |
| | | String realname = "";// 姓名 |
| | | String idcard = "";// 身份证 |
| | | int type = 1;// 普通版,不需要加密 |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("realname", realname); |
| | | params.put("idcard", idcard); |
| | | |
| | | CloseableHttpClient httpClient = HttpClients.createDefault(); |
| | | CloseableHttpResponse response = null; |
| | | String result = null; |
| | | String url = query_url; |
| | | try { |
| | | url = new StringBuffer(url).append("&").append(urlencode(params)).toString(); |
| | | HttpGet httpget = new HttpGet(url); |
| | | httpget.setConfig(config); |
| | | response = httpClient.execute(httpget); |
| | | HttpEntity resEntity = response.getEntity(); |
| | | if (resEntity != null) { |
| | | result = IOUtils.toString(resEntity.getContent(), "UTF-8"); |
| | | } |
| | | EntityUtils.consume(resEntity); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | response.close(); |
| | | httpClient.close(); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | } |
| | | JSONObject jsonObject= JSON.parseObject(result); |
| | | String object= jsonObject.get("result").toString(); |
| | | JSONObject jsonObject1= JSON.parseObject(object); |
| | | if (Integer.valueOf(jsonObject1.get("res").toString())==2){ |
| | | throw new ServiceException("实名认证失败"); |
| | | } |
| | | |
| | | String sex=getGender(idcard); |
| | | if (sex.equals("女")){ |
| | | member.setGender(GenderEnum.FEMALE); |
| | | } |
| | | if (sex.equals("男")){ |
| | | member.setGender(GenderEnum.MALE); |
| | | } |
| | | |
| | | iMemberService.updateById(member); |
| | | } |
| | | |
| | | public static String getGender(String idNumber) { |
| | | int genderNum = Integer.parseInt(idNumber.substring(16, 17)); |
| | | return genderNum % 2 == 0 ? "女" : "男"; |
| | | } |
| | | |
| | | |
| | | public static String urlencode(Map<String, ?> data) { |
| | | StringBuilder sb = new StringBuilder(); |
| | | for (Map.Entry<String, ?> i : data.entrySet()) { |
| | | try { |
| | | sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&"); |
| | | } catch (UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | String result = sb.toString(); |
| | | result = result.substring(0, result.lastIndexOf("&")); |
| | | return result; |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |