rentaiming
2024-05-22 dc0ade6bfc59db3d133673952bd674ba7a63dc84
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -1,10 +1,34 @@
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>
@@ -17,4 +41,157 @@
@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;
    }
}