package com.stylefeng.guns.modular.system.util.qianyuntong;
|
|
import cn.hutool.http.HttpRequest;
|
import cn.hutool.http.HttpResponse;
|
import cn.hutool.http.HttpUtil;
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.google.gson.Gson;
|
import com.open.common.util.OpenApiClient;
|
import com.open.common.util.SystemParameterNames;
|
import com.stylefeng.guns.modular.system.util.UUIDUtil;
|
import com.stylefeng.guns.modular.system.util.qianyuntong.model.*;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* 用户工具类
|
*
|
* @author zhibing.pu
|
* @Date 2025/6/6 14:47
|
*/
|
@Slf4j
|
public class UserUtil {
|
|
|
/**
|
* 根据手机号码获取人员信息
|
*
|
* @param mobile 手机号码
|
* @param enterNum 企业编号
|
*/
|
public static List<QYTUserInfo> getUserInfoByPhone(String mobile, String enterNum) {
|
//请求路径
|
String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getUserInfoByPhone";
|
//私钥文件
|
String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
|
//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
|
String appKey = QianYunTongProperties.appkey;//appkey
|
Map<String, String> headers = new HashMap<>();
|
headers.put("Content-Type", "application/json");
|
Map<String, Object> contentMap = new HashMap<String, Object>();
|
Date nowdate = new Date();
|
SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
String timeStamp = date.format(nowdate);
|
String messageId = UUID.randomUUID().toString().replaceAll("-", "");
|
contentMap.put(SystemParameterNames.getAppKey(), appKey);
|
contentMap.put(SystemParameterNames.getMessage_id(), messageId);
|
contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
|
contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
|
Map<String, String> map = new HashMap<>();
|
map.put("mobile", mobile);
|
if (null != enterNum) {
|
map.put("enterNum", enterNum);
|
}
|
contentMap.put("content", JSON.toJSONString(map));
|
log.info("【根据手机号码获取人员信息】请求地址:" + url);
|
log.info("【根据手机号码获取人员信息】请求参数:" + JSON.toJSONString(contentMap));
|
String result = OpenApiClient.sendCommonHttpRequst(url, headers, "GET", skprivateKeyFile, timeStamp, contentMap);
|
log.info("【根据手机号码获取人员信息】请求结果:" + result);
|
JSONObject jsonObject = JSON.parseObject(result);
|
String retCode = jsonObject.getString("retCode");
|
if (!"0".equals(retCode)) {
|
log.error("【根据手机号码获取人员信息】请求失败:" + result);
|
return null;
|
}
|
JSONObject object = jsonObject.getJSONObject("object");
|
String status = object.getString("status");
|
if (!"0".equals(status)) {
|
log.error("【根据手机号码获取人员信息】失败:" + object.toJSONString());
|
return null;
|
}
|
JSONArray data = object.getJSONArray("data");
|
List<QYTUserInfo> list = new ArrayList<>();
|
for (int i = 0; i < data.size(); i++) {
|
data.getJSONObject(i).getString("enter_code");
|
QYTUserInfo userInfo = data.getObject(i, QYTUserInfo.class);
|
list.add(userInfo);
|
}
|
return list;
|
}
|
|
|
/**
|
* 根据手机号注册用户
|
*
|
* @param request
|
* @return
|
*/
|
public static RegisterViaMobile registerViaMobile(RegisterViaMobileRequest request) {
|
//请求路径
|
String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/m1_register_via_mobile";
|
//私钥文件
|
String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
|
//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
|
String appKey = QianYunTongProperties.appkey;//appkey
|
Map<String, String> headers = new HashMap<>();
|
headers.put("Content-Type", "application/json");
|
Map<String, Object> contentMap = new HashMap<String, Object>();
|
Date nowdate = new Date();
|
SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
String timeStamp = date.format(nowdate);
|
String messageId = UUID.randomUUID().toString().replaceAll("-", "");
|
contentMap.put(SystemParameterNames.getAppKey(), appKey);
|
contentMap.put(SystemParameterNames.getMessage_id(), messageId);
|
contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
|
contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
|
contentMap.put("content", new Gson().toJson(request));
|
log.info("【根据手机号注册用户】请求地址:" + url);
|
log.info("【根据手机号注册用户】请求参数:" + JSON.toJSONString(contentMap));
|
String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
|
log.info("【根据手机号注册用户】请求结果:" + result);
|
JSONObject jsonObject = JSON.parseObject(result);
|
String retCode = jsonObject.getString("retCode");
|
if (!"0".equals(retCode)) {
|
log.error("【根据手机号注册用户】请求失败:" + result);
|
throw new RuntimeException("【根据手机号注册用户】请求失败:" + result);
|
}
|
JSONObject object = jsonObject.getJSONObject("object");
|
String status = object.getString("status");
|
if (!"0".equals(status)) {
|
log.error("【根据手机号注册用户】失败:" + object.toJSONString());
|
throw new RuntimeException("【根据手机号注册用户】失败:" + object.toJSONString());
|
}
|
return jsonObject.getObject("object", RegisterViaMobile.class);
|
}
|
|
|
/**
|
* 易信用户修改密码
|
*
|
* @param request
|
* @return
|
*/
|
public static Boolean modifyPwd(ModifyPwdRequest request) {
|
//请求路径
|
String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/modifyPwd";
|
//私钥文件
|
String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
|
//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
|
String appKey = QianYunTongProperties.appkey;//appkey
|
Map<String, String> headers = new HashMap<>();
|
headers.put("Content-Type", "application/json");
|
Map<String, Object> contentMap = new HashMap<String, Object>();
|
Date nowdate = new Date();
|
SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
String timeStamp = date.format(nowdate);
|
String messageId = UUID.randomUUID().toString().replaceAll("-", "");
|
contentMap.put(SystemParameterNames.getAppKey(), appKey);
|
contentMap.put(SystemParameterNames.getMessage_id(), messageId);
|
contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
|
contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
|
contentMap.put("content", new Gson().toJson(request));
|
log.info("【易信用户修改密码】请求地址:" + url);
|
log.info("【易信用户修改密码】请求参数:" + JSON.toJSONString(contentMap));
|
String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
|
log.info("【易信用户修改密码】请求结果:" + result);
|
JSONObject jsonObject = JSON.parseObject(result);
|
String retCode = jsonObject.getString("retCode");
|
if (!"0".equals(retCode)) {
|
log.error("【易信用户修改密码】请求失败:" + result);
|
throw new RuntimeException("【易信用户修改密码】请求失败:" + result);
|
}
|
JSONObject object = jsonObject.getJSONObject("object");
|
String status = object.getString("status");
|
if (!"0".equals(status)) {
|
log.error("【易信用户修改密码】失败:" + object.toJSONString());
|
throw new RuntimeException("【易信用户】失败:" + object.toJSONString());
|
}
|
return true;
|
}
|
|
|
/**
|
* 易信重置密码
|
*
|
* @param request
|
* @return
|
*/
|
public static Boolean resetPwd(ResetPwdRequest request) {
|
//请求路径
|
String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/resetPwd";
|
//私钥文件
|
String skprivateKeyFile = QianYunTongProperties.privateKeyPath;
|
//注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
|
String appKey = QianYunTongProperties.appkey;//appkey
|
Map<String, String> headers = new HashMap<>();
|
headers.put("Content-Type", "application/json");
|
Map<String, Object> contentMap = new HashMap<String, Object>();
|
Date nowdate = new Date();
|
SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
String timeStamp = date.format(nowdate);
|
String messageId = UUID.randomUUID().toString().replaceAll("-", "");
|
contentMap.put(SystemParameterNames.getAppKey(), appKey);
|
contentMap.put(SystemParameterNames.getMessage_id(), messageId);
|
contentMap.put(SystemParameterNames.getUserName(), QianYunTongProperties.userName);
|
contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status);
|
contentMap.put("content", new Gson().toJson(request));
|
log.info("【易信重置密码】请求地址:" + url);
|
log.info("【易信重置密码】请求参数:" + JSON.toJSONString(contentMap));
|
String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
|
log.info("【易信重置密码】请求结果:" + result);
|
JSONObject jsonObject = JSON.parseObject(result);
|
String retCode = jsonObject.getString("retCode");
|
if (!"0".equals(retCode)) {
|
log.error("【易信重置密码】请求失败:" + result);
|
throw new RuntimeException("【易信重置密码】请求失败:" + result);
|
}
|
JSONObject object = jsonObject.getJSONObject("object");
|
String status = object.getString("status");
|
if (!"0".equals(status)) {
|
log.error("【易信重置密码】失败:" + object.toJSONString());
|
throw new RuntimeException("【易信重置密码】失败:" + object.toJSONString());
|
}
|
return true;
|
}
|
|
|
/**
|
* 微信小程序登录
|
*
|
* @param code
|
* @return
|
*/
|
public static LoginWeChatXiao loginWeChatXiao(String code) {
|
HttpRequest post = HttpUtil.createPost("https://casme.teamshub.com/webapp-backstage/ajax/loginWeChatXiao/v1.0");
|
post.header("Content-Type", "text/plain;charset=UTF-8");
|
post.header("Accept-encodeing", "UTF-8");
|
JSONObject body = new JSONObject();
|
body.put("version", "1.0");
|
try {
|
body.put("id", UUIDUtil.getRandomCode(6));
|
} catch (Exception e) {
|
throw new RuntimeException(e);
|
}
|
body.put("type", "loginWeChatXiao");
|
body.put("action", "request");
|
body.put("code", code);
|
body.put("appId", QianYunTongProperties.appId);
|
post.body(body.toJSONString());
|
HttpResponse execute = post.execute();
|
if (200 != execute.getStatus()) {
|
log.error("微信登录失败");
|
return null;
|
}
|
JSONObject jsonObject = JSON.parseObject(execute.body());
|
Integer status = jsonObject.getInteger("status");
|
if (0 != status) {
|
log.error("微信登录失败:" + jsonObject.getString("desc"));
|
return null;
|
}
|
LoginWeChatXiao loginWeChatXiao = jsonObject.getObject("data", LoginWeChatXiao.class);
|
return loginWeChatXiao;
|
}
|
|
}
|