微信小程序获取手机号
This commit is contained in:
parent
1526776971
commit
7d3700ceb3
@ -35,6 +35,7 @@ import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -473,4 +474,57 @@ public class HttpUtils {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 向指定URL发送GET方法的请求
|
||||
*
|
||||
* @param url 发送请求的URL
|
||||
* @param param 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。
|
||||
* @return URL 所代表远程资源的响应结果
|
||||
*/
|
||||
public static String sendGet(String url, String param) {
|
||||
String result = "";
|
||||
BufferedReader in = null;
|
||||
try {
|
||||
String urlNameString = url + "?" + param;
|
||||
URL realUrl = new URL(urlNameString);
|
||||
// 打开和URL之间的连接
|
||||
URLConnection connection = realUrl.openConnection();
|
||||
// 设置通用的请求属性
|
||||
connection.setRequestProperty("accept", "*/*");
|
||||
connection.setRequestProperty("connection", "Keep-Alive");
|
||||
connection.setRequestProperty("user-agent",
|
||||
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
|
||||
// 建立实际的连接
|
||||
connection.connect();
|
||||
// 获取所有响应头字段
|
||||
Map<String, List<String>> map = connection.getHeaderFields();
|
||||
// 遍历所有的响应头字段
|
||||
for (String key : map.keySet()) {
|
||||
System.out.println(key + "--->" + map.get(key));
|
||||
}
|
||||
// 定义 BufferedReader输入流来读取URL的响应
|
||||
in = new BufferedReader(new InputStreamReader(
|
||||
connection.getInputStream(), "utf-8"));
|
||||
String line;
|
||||
while ((line = in.readLine()) != null) {
|
||||
result += line;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
System.out.println("发送GET请求出现异常!" + e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
// 使用finally块来关闭输入流
|
||||
finally {
|
||||
try {
|
||||
if (in != null) {
|
||||
in.close();
|
||||
}
|
||||
} catch (Exception e2) {
|
||||
e2.printStackTrace();
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,7 +23,6 @@ import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.persistence.criteria.CriteriaBuilder;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
@ -82,6 +81,7 @@ public class XhpcPileOrderController extends BaseController {
|
||||
map.put("userId", userId);
|
||||
map.put("message", remark);
|
||||
JSONObject json = new JSONObject(map);
|
||||
logger.info("桩启动回调接口>>>>>json:"+json.toString());
|
||||
//消息对了内容
|
||||
webSocketService.getMessage(userId+"",json.toString());
|
||||
return R.ok();
|
||||
|
||||
@ -114,6 +114,27 @@ public class XhpcStatisticsTimeInterval extends BaseEntity {
|
||||
*/
|
||||
private Long historyOrderId;
|
||||
|
||||
/**
|
||||
* EVCS开始时间(格式:yyyy-MM-dd HH:mm:ss)
|
||||
*/
|
||||
private String startTimeEvcs;
|
||||
|
||||
/**
|
||||
* EVCS结束时间(格式:yyyy-MM-dd HH:mm:ss)
|
||||
*/
|
||||
private String endTimeEvcs;
|
||||
|
||||
/**
|
||||
* EVCS时段电价(单价)
|
||||
*/
|
||||
private BigDecimal elecPriceEvcs;
|
||||
|
||||
/**
|
||||
* EVCS时段服务费价格(单价)
|
||||
*/
|
||||
private BigDecimal servicePriceEvcs;
|
||||
|
||||
|
||||
public Long getStatisticsTimeIntervalId() {
|
||||
|
||||
return statisticsTimeIntervalId;
|
||||
@ -354,4 +375,44 @@ public class XhpcStatisticsTimeInterval extends BaseEntity {
|
||||
this.historyOrderId = historyOrderId;
|
||||
}
|
||||
|
||||
public String getStartTimeEvcs() {
|
||||
|
||||
return startTimeEvcs;
|
||||
}
|
||||
|
||||
public void setStartTimeEvcs(String startTimeEvcs) {
|
||||
|
||||
this.startTimeEvcs = startTimeEvcs;
|
||||
}
|
||||
|
||||
public String getEndTimeEvcs() {
|
||||
|
||||
return endTimeEvcs;
|
||||
}
|
||||
|
||||
public void setEndTimeEvcs(String endTimeEvcs) {
|
||||
|
||||
this.endTimeEvcs = endTimeEvcs;
|
||||
}
|
||||
|
||||
public BigDecimal getElecPriceEvcs() {
|
||||
|
||||
return elecPriceEvcs;
|
||||
}
|
||||
|
||||
public void setElecPriceEvcs(BigDecimal elecPriceEvcs) {
|
||||
|
||||
this.elecPriceEvcs = elecPriceEvcs;
|
||||
}
|
||||
|
||||
public BigDecimal getServicePriceEvcs() {
|
||||
|
||||
return servicePriceEvcs;
|
||||
}
|
||||
|
||||
public void setServicePriceEvcs(BigDecimal servicePriceEvcs) {
|
||||
|
||||
this.servicePriceEvcs = servicePriceEvcs;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -144,7 +144,7 @@ public interface XhpcChargeOrderMapper {
|
||||
|
||||
/**
|
||||
* 获取电桩信息
|
||||
* @param chargingPileId
|
||||
* @param terminalId
|
||||
* @return
|
||||
*/
|
||||
Map<String,Object> getXhpcChargingPile(@Param("terminalId")Long terminalId);
|
||||
|
||||
@ -346,142 +346,142 @@
|
||||
UPDATE xhpc_history_order
|
||||
<set>
|
||||
<if test="chargingStationId != null">
|
||||
charging_station_id = #{chargingStationId,jdbcType=BIGINT},
|
||||
charging_station_id = #{chargingStationId},
|
||||
</if>
|
||||
<if test="chargeOrderId != null">
|
||||
charge_order_id = #{chargeOrderId,jdbcType=BIGINT},
|
||||
charge_order_id = #{chargeOrderId},
|
||||
</if>
|
||||
<if test="userId != null">
|
||||
user_id = #{userId,jdbcType=BIGINT},
|
||||
user_id = #{userId},
|
||||
</if>
|
||||
<if test="terminalId != null">
|
||||
terminal_id = #{terminalId,jdbcType=BIGINT},
|
||||
terminal_id = #{terminalId},
|
||||
</if>
|
||||
<if test="serialNumber != null">
|
||||
serial_number = #{serialNumber,jdbcType=VARCHAR},
|
||||
serial_number = #{serialNumber},
|
||||
</if>
|
||||
<if test="internetSerialNumber != null">
|
||||
internet_serial_number = #{internetSerialNumber,jdbcType=VARCHAR},
|
||||
internet_serial_number = #{internetSerialNumber},
|
||||
</if>
|
||||
<if test="powerPriceTotal != null">
|
||||
power_price_total = #{powerPriceTotal,jdbcType=DECIMAL},
|
||||
power_price_total = #{powerPriceTotal},
|
||||
</if>
|
||||
<if test="servicePriceTotal != null">
|
||||
service_price_total = #{servicePriceTotal,jdbcType=DECIMAL},
|
||||
service_price_total = #{servicePriceTotal},
|
||||
</if>
|
||||
<if test="totalPrice != null">
|
||||
total_price = #{totalPrice,jdbcType=DECIMAL},
|
||||
total_price = #{totalPrice},
|
||||
</if>
|
||||
<if test="promotionDiscount != null">
|
||||
promotion_discount = #{promotionDiscount,jdbcType=DECIMAL},
|
||||
promotion_discount = #{promotionDiscount},
|
||||
</if>
|
||||
<if test="actPrice != null">
|
||||
act_price = #{actPrice,jdbcType=DECIMAL},
|
||||
act_price = #{actPrice},
|
||||
</if>
|
||||
<if test="actPowerPrice != null">
|
||||
act_power_price = #{actPowerPrice,jdbcType=DECIMAL},
|
||||
act_power_price = #{actPowerPrice},
|
||||
</if>
|
||||
<if test="actServicePrice != null">
|
||||
act_service_price = #{actServicePrice,jdbcType=DECIMAL},
|
||||
act_service_price = #{actServicePrice},
|
||||
</if>
|
||||
<if test="internetCommission != null">
|
||||
internet_commission = #{internetCommission,jdbcType=DECIMAL},
|
||||
internet_commission = #{internetCommission},
|
||||
</if>
|
||||
<if test="internetSvcCommission != null">
|
||||
internet_svc_commission = #{internetSvcCommission,jdbcType=DECIMAL},
|
||||
internet_svc_commission = #{internetSvcCommission},
|
||||
</if>
|
||||
<if test="platformCommission != null">
|
||||
platform_commission = #{platformCommission,jdbcType=DECIMAL},
|
||||
platform_commission = #{platformCommission},
|
||||
</if>
|
||||
<if test="platformSvcCommisssion != null">
|
||||
platform_svc_commisssion = #{platformSvcCommisssion,jdbcType=DECIMAL},
|
||||
platform_svc_commisssion = #{platformSvcCommisssion},
|
||||
</if>
|
||||
<if test="operationCommission != null">
|
||||
operation_commission = #{operationCommission,jdbcType=DECIMAL},
|
||||
operation_commission = #{operationCommission},
|
||||
</if>
|
||||
<if test="operationSvcCommission != null">
|
||||
operation_svc_commission = #{operationSvcCommission,jdbcType=DECIMAL},
|
||||
operation_svc_commission = #{operationSvcCommission},
|
||||
</if>
|
||||
<if test="startSoc != null">
|
||||
start_soc = #{startSoc,jdbcType=VARCHAR},
|
||||
start_soc = #{startSoc},
|
||||
</if>
|
||||
<if test="endSoc != null">
|
||||
end_soc = #{endSoc,jdbcType=VARCHAR},
|
||||
end_soc = #{endSoc},
|
||||
</if>
|
||||
<if test="reconciliationStatus != null">
|
||||
reconciliation_status = #{reconciliationStatus,jdbcType=INTEGER},
|
||||
reconciliation_status = #{reconciliationStatus},
|
||||
</if>
|
||||
<if test="sortingStatus != null">
|
||||
sorting_status = #{sortingStatus,jdbcType=INTEGER},
|
||||
sorting_status = #{sortingStatus},
|
||||
</if>
|
||||
<if test="type != null">
|
||||
`type` = #{type,jdbcType=TINYINT},
|
||||
`type` = #{type},
|
||||
</if>
|
||||
<if test="status != null">
|
||||
`status` = #{status,jdbcType=INTEGER},
|
||||
`status` = #{status},
|
||||
</if>
|
||||
<if test="delFlag != null">
|
||||
del_flag = #{delFlag,jdbcType=INTEGER},
|
||||
del_flag = #{delFlag},
|
||||
</if>
|
||||
<if test="createTime != null">
|
||||
create_time = #{createTime,jdbcType=TIMESTAMP},
|
||||
create_time = #{createTime},
|
||||
</if>
|
||||
<if test="createBy != null">
|
||||
create_by = #{createBy,jdbcType=VARCHAR},
|
||||
create_by = #{createBy},
|
||||
</if>
|
||||
<if test="updateTime != null">
|
||||
update_time = #{updateTime,jdbcType=TIMESTAMP},
|
||||
update_time = #{updateTime},
|
||||
</if>
|
||||
<if test="updateBy != null">
|
||||
update_by = #{updateBy,jdbcType=VARCHAR},
|
||||
update_by = #{updateBy},
|
||||
</if>
|
||||
<if test="remark != null">
|
||||
remark = #{remark,jdbcType=VARCHAR},
|
||||
remark = #{remark},
|
||||
</if>
|
||||
<if test="state != null">
|
||||
`state` = #{state,jdbcType=INTEGER},
|
||||
`state` = #{state},
|
||||
</if>
|
||||
<if test="vinNormal != null">
|
||||
vin_normal = #{vinNormal,jdbcType=VARCHAR},
|
||||
vin_normal = #{vinNormal},
|
||||
</if>
|
||||
<if test="searchValue != null">
|
||||
search_value = #{searchValue,jdbcType=VARCHAR},
|
||||
search_value = #{searchValue},
|
||||
</if>
|
||||
<if test="operatorIdEvcs != null">
|
||||
operator_id_evcs = #{operatorIdEvcs,jdbcType=VARCHAR},
|
||||
operator_id_evcs = #{operatorIdEvcs},
|
||||
</if>
|
||||
<if test="chargeModelEvcs != null">
|
||||
charge_model_evcs = #{chargeModelEvcs,jdbcType=INTEGER},
|
||||
charge_model_evcs = #{chargeModelEvcs},
|
||||
</if>
|
||||
<if test="connectorPowerEvcs != null">
|
||||
connector_power_evcs = #{connectorPowerEvcs,jdbcType=DOUBLE},
|
||||
connector_power_evcs = #{connectorPowerEvcs},
|
||||
</if>
|
||||
<if test="meterValueEndEvcs != null">
|
||||
meter_value_end_evcs = #{meterValueEndEvcs,jdbcType=DOUBLE},
|
||||
meter_value_end_evcs = #{meterValueEndEvcs},
|
||||
</if>
|
||||
<if test="meterValueStartEvcs != null">
|
||||
meter_value_start_evcs = #{meterValueStartEvcs,jdbcType=DOUBLE},
|
||||
meter_value_start_evcs = #{meterValueStartEvcs},
|
||||
</if>
|
||||
<if test="operatorId3rdptyEvcs != null">
|
||||
operator_id3rdpty_evcs = #{operatorId3rdptyEvcs,jdbcType=VARCHAR},
|
||||
operator_id3rdpty_evcs = #{operatorId3rdptyEvcs},
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
start_time = #{startTime,jdbcType=TIMESTAMP},
|
||||
start_time = #{startTime},
|
||||
</if>
|
||||
<if test="stopReasonEvcs != null">
|
||||
stop_reason_evcs = #{stopReasonEvcs,jdbcType=INTEGER},
|
||||
stop_reason_evcs = #{stopReasonEvcs},
|
||||
</if>
|
||||
<if test="totalPower != null">
|
||||
total_power = #{totalPower,jdbcType=DOUBLE},
|
||||
total_power = #{totalPower},
|
||||
</if>
|
||||
<if test="userNameEvcs != null">
|
||||
user_name_evcs = #{userNameEvcs,jdbcType=VARCHAR},
|
||||
user_name_evcs = #{userNameEvcs},
|
||||
</if>
|
||||
<if test="phone != null">
|
||||
phone = #{phone,jdbcType=VARCHAR},
|
||||
phone = #{phone},
|
||||
</if>
|
||||
</set>
|
||||
where history_order_id = #{historyOrderId,jdbcType=BIGINT}
|
||||
where history_order_id = #{historyOrderId}
|
||||
</update>
|
||||
|
||||
<select id="info" parameterType="java.lang.Long" resultMap="XhpcHistoryOrderResult">
|
||||
|
||||
@ -30,6 +30,10 @@
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="remark" column="remark"/>
|
||||
<result property="terminalId" column="terminal_id"/>
|
||||
<result property="startTimeEvcs" column="start_time_evcs"/>
|
||||
<result property="endTimeEvcs" column="end_time_evcs"/>
|
||||
<result property="elecPriceEvcs" column="elec_price_evcs"/>
|
||||
<result property="servicePriceEvcs" column="service_price_evcs"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="getTimeIntervalPage" resultType="map">
|
||||
@ -416,7 +420,19 @@
|
||||
terminal_id,
|
||||
</if>
|
||||
<if test="null != historyOrderId ">
|
||||
history_order_id
|
||||
history_order_id,
|
||||
</if>
|
||||
<if test="null != startTimeEvcs ">
|
||||
start_time_evcs,
|
||||
</if>
|
||||
<if test="null != endTimeEvcs ">
|
||||
end_time_evcs,
|
||||
</if>
|
||||
<if test="null != elecPriceEvcs ">
|
||||
elec_price_evcs,
|
||||
</if>
|
||||
<if test="null != servicePriceEvcs ">
|
||||
service_price_evcs
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
@ -493,7 +509,19 @@
|
||||
#{terminalId},
|
||||
</if>
|
||||
<if test="null != historyOrderId ">
|
||||
#{historyOrderId}
|
||||
#{historyOrderId},
|
||||
</if>
|
||||
<if test="null != startTimeEvcs ">
|
||||
#{startTimeEvcs},
|
||||
</if>
|
||||
<if test="null != endTimeEvcs ">
|
||||
#{endTimeEvcs},
|
||||
</if>
|
||||
<if test="null != elecPriceEvcs ">
|
||||
#{elecPriceEvcs},
|
||||
</if>
|
||||
<if test="null != servicePriceEvcs ">
|
||||
#{servicePriceEvcs}
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
@ -143,25 +143,26 @@ public class XhpcAppUserController extends BaseController {
|
||||
if (StringUtils.isEmpty(jsCode)) {
|
||||
return R.fail(HttpStatus.NOT_NULL, "信息不完整");
|
||||
}
|
||||
encryptedData =encryptedData.replace(' ','+');
|
||||
String url = environment.getProperty("WXGETJSCODE") + jsCode + "&grant_type=authorization_code";
|
||||
String result = HttpUtils.get(url);
|
||||
JSONObject json = JSON.parseObject(result);
|
||||
if (null != json) {
|
||||
String openid = json.getString("openid");
|
||||
String sessionKey = json.getString("session_key");
|
||||
System.out.println("sessionKey:"+sessionKey);
|
||||
if (StringUtils.isEmpty(openid)) {
|
||||
return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败");
|
||||
}
|
||||
if (StringUtils.isEmpty(sessionKey)) {
|
||||
return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败");
|
||||
}
|
||||
|
||||
Map<String, Object> map = new HashMap<>(16);
|
||||
map.put("openid", openid);
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
if ((!"".equals(encryptedData) && encryptedData != null) && (!"".equals(iv) && iv != null)) {
|
||||
jsonObject = getPhoneNumber(encryptedData, sessionKey, iv);
|
||||
if (StringUtils.isNull(jsonObject)) {
|
||||
if (jsonObject !=null) {
|
||||
map.put("name", jsonObject.get("nickName"));
|
||||
map.put("sex", jsonObject.get("gender"));
|
||||
map.put("avatar", jsonObject.get("avatarUrl"));
|
||||
@ -197,7 +198,7 @@ public class XhpcAppUserController extends BaseController {
|
||||
}
|
||||
// 初始化
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC");
|
||||
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
|
||||
SecretKeySpec spec = new SecretKeySpec(keyByte, "AES");
|
||||
AlgorithmParameters parameters = AlgorithmParameters.getInstance("AES");
|
||||
parameters.init(new IvParameterSpec(ivByte));
|
||||
@ -212,7 +213,6 @@ public class XhpcAppUserController extends BaseController {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 支付宝授权
|
||||
*/
|
||||
@ -241,4 +241,5 @@ public class XhpcAppUserController extends BaseController {
|
||||
|
||||
return iXhpcAppUserUserService.logout(phone, code);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -110,13 +110,13 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
|
||||
return R.fail(HttpStatus.NOT_NULL, "openid不能为空");
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(code)) {
|
||||
return R.fail(HttpStatus.NOT_NULL, "验证码不能为空");
|
||||
}
|
||||
String captcha = redisService.getCacheObject("pvToken:" + phone);
|
||||
if (!code.equalsIgnoreCase(captcha)) {
|
||||
R.fail(HttpStatus.ERROR_STATUS, "验证码错误");
|
||||
}
|
||||
// if (StringUtils.isEmpty(code)) {
|
||||
// return R.fail(HttpStatus.NOT_NULL, "验证码不能为空");
|
||||
// }
|
||||
// String captcha = redisService.getCacheObject("pvToken:" + phone);
|
||||
// if (!code.equalsIgnoreCase(captcha)) {
|
||||
// R.fail(HttpStatus.ERROR_STATUS, "验证码错误");
|
||||
// }
|
||||
XhpcAppUser info = xhpcAppUserMapper.getAppUserByPhone(phone);
|
||||
if (StringUtils.isNotNull(info)) {
|
||||
return R.fail(HttpStatus.ALREADY_EXISTING, "账号已存在");
|
||||
@ -247,7 +247,7 @@ public class XhpcAppUserServiceImpl implements IXhpcAppUserUserService {
|
||||
return R.fail(HttpStatus.DATA_ERROR, "用户不存在");
|
||||
}
|
||||
if (StatusConstants.OPERATION_ALI_PAY_TYPE.equals(type)) {
|
||||
if (UserConstants.NO_LOGIN == user.getWeixinLogin()) {
|
||||
if (UserConstants.NO_LOGIN == user.getAlipayLogin()) {
|
||||
return R.fail(HttpStatus.USER_LOGIN, "用户未登录");
|
||||
}
|
||||
} else if (StatusConstants.OPERATION_WX_TYPE.equals(type)) {
|
||||
|
||||
@ -0,0 +1,90 @@
|
||||
package com.xhpc.user.util;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
||||
import org.bouncycastle.util.Arrays;
|
||||
import org.bouncycastle.util.encoders.Base64;
|
||||
|
||||
import javax.crypto.Cipher;
|
||||
import javax.crypto.spec.IvParameterSpec;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.security.Key;
|
||||
import java.security.Security;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/9/26 11:33
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class WechatDecryptDataUtil {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String result = decryptData(
|
||||
"3lL+weYF65ym3D/ADsu2b+Rw3MrXmQkFhb2DVtI1HrIW6U7+tOQSHyzNXZCr0Zcs/nIZyEFEBWRpoK4DmOhyYdRKj1R6hhykDY/UquuVXhLB5JrwmHLnFduYQcVAUqC7eUVW4G7E781CphPHxUOUZJYTJC4bkFqOnSVnh49duQJSE2FQVU5XpjVtWTun7qxF6ccQy6wFsVCl5S/ChBdimg==",
|
||||
"xQOZ2TnaZyOtQQsXGRHzgw==",
|
||||
"iBMSyXmseiSJQR5Iv04Qog=="
|
||||
);
|
||||
|
||||
JSONObject jsonObject = JSONObject.parseObject(result);
|
||||
|
||||
System.out.println("jsonObject = " + jsonObject);
|
||||
}
|
||||
|
||||
public static String decryptData(String encryptDataB64, String sessionKeyB64, String ivB64) {
|
||||
return new String(
|
||||
decryptOfDiyIV(
|
||||
Base64.decode(encryptDataB64),
|
||||
Base64.decode(sessionKeyB64),
|
||||
Base64.decode(ivB64)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private static final String KEY_ALGORITHM = "AES";
|
||||
private static final String ALGORITHM_STR = "AES/CBC/PKCS7Padding";
|
||||
private static Key key;
|
||||
private static Cipher cipher;
|
||||
|
||||
private static void init(byte[] keyBytes) {
|
||||
// 如果密钥不足16位,那么就补足. 这个if 中的内容很重要
|
||||
int base = 16;
|
||||
if (keyBytes.length % base != 0) {
|
||||
int groups = keyBytes.length / base + (keyBytes.length % base != 0 ? 1 : 0);
|
||||
byte[] temp = new byte[groups * base];
|
||||
Arrays.fill(temp, (byte) 0);
|
||||
System.arraycopy(keyBytes, 0, temp, 0, keyBytes.length);
|
||||
keyBytes = temp;
|
||||
}
|
||||
// 初始化
|
||||
Security.addProvider(new BouncyCastleProvider());
|
||||
// 转化成JAVA的密钥格式
|
||||
key = new SecretKeySpec(keyBytes, KEY_ALGORITHM);
|
||||
try {
|
||||
// 初始化cipher
|
||||
cipher = Cipher.getInstance(ALGORITHM_STR, "BC");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解密方法
|
||||
*
|
||||
* @param encryptedData 要解密的字符串
|
||||
* @param keyBytes 解密密钥
|
||||
* @param ivs 自定义对称解密算法初始向量 iv
|
||||
* @return 解密后的字节数组
|
||||
*/
|
||||
private static byte[] decryptOfDiyIV(byte[] encryptedData, byte[] keyBytes, byte[] ivs) {
|
||||
byte[] encryptedText = null;
|
||||
init(keyBytes);
|
||||
try {
|
||||
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(ivs));
|
||||
encryptedText = cipher.doFinal(encryptedData);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return encryptedText;
|
||||
}
|
||||
|
||||
}
|
||||
@ -3,6 +3,8 @@ package com.xhpc.wxma.controller;
|
||||
import com.xhpc.common.core.domain.R;
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.wxma.socket.OrderNotificationWebSocket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@ -14,6 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@RestController
|
||||
public class OrderNotificationWebSocketController extends BaseController {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(OrderNotificationWebSocketController.class);
|
||||
@GetMapping("/test")
|
||||
public void test(@RequestParam String userId){
|
||||
OrderNotificationWebSocket.sendMessage(userId,"有新订单啦");
|
||||
@ -22,6 +25,7 @@ public class OrderNotificationWebSocketController extends BaseController {
|
||||
@GetMapping("/orderWebSocket/getMessage")
|
||||
public R getMessage(@RequestParam String userId, @RequestParam String message){
|
||||
OrderNotificationWebSocket.sendMessage(userId,message);
|
||||
logger.info("发送消息成功------->>>>>message:"+message);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user