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.member.dto.MemberDTO;
|
import com.ruoyi.system.api.domain.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>
|
* 会员表 服务实现类
|
* </p>
|
*
|
* @author mitao
|
* @since 2024-05-16
|
*/
|
@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;
|
}
|
|
|
}
|