master
ck 5 years ago
parent ba9419239e
commit 4e3ebe2646

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

@ -0,0 +1,22 @@
package com.bsd.cases.model;
public class FillterConstants {
public static String EQUAL = "is";
public static String EQUALSYM = "=";
public static String LIKE = "like";
public static String LIKESYM = "regex";
public static String IN = "in";
public static String GTE = "gte";
public static String GTESYM = ">=";
public static String LTE = "lte";
public static String LTESYM = "<=";
}

@ -10,4 +10,6 @@ public interface CaseCategoryService<CaseCategory> extends BaseService<CaseCateg
JSONObject getAllCaseCategory();
JSONObject getCaseCategoryByParentId(Long parentId,Integer pageNum,Integer pageSize);
}

@ -1,236 +0,0 @@
package com.bsd.cases.service.impl;
import com.bsd.cases.service.WxMpConfigStorage;
import com.bsd.cases.util.wx.common.bean.WxAccessToken;
import javax.net.ssl.SSLContext;
import java.io.File;
/**
* provider
* @author chanjarster
*
*/
public class WxMpInMemoryConfigStorage implements WxMpConfigStorage {
protected volatile String appId;
protected volatile String secret;
protected volatile String partnerId;
protected volatile String partnerKey;
protected volatile String token;
protected volatile String accessToken;
protected volatile String aesKey;
protected volatile long expiresTime;
protected volatile String oauth2redirectUri;
protected volatile String http_proxy_host;
protected volatile int http_proxy_port;
protected volatile String http_proxy_username;
protected volatile String http_proxy_password;
protected volatile String jsapiTicket;
protected volatile long jsapiTicketExpiresTime;
/**
*
*/
protected volatile File tmpDirFile;
protected volatile SSLContext sslContext;
public String getAccessToken() {
return this.accessToken;
}
public boolean isAccessTokenExpired() {
return System.currentTimeMillis() > this.expiresTime;
}
public synchronized void updateAccessToken(WxAccessToken accessToken) {
updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
}
public synchronized void updateAccessToken(String accessToken, int expiresInSeconds) {
this.accessToken = accessToken;
this.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000l;
}
public void expireAccessToken() {
this.expiresTime = 0;
}
public String getJsapiTicket() {
return jsapiTicket;
}
public void setJsapiTicket(String jsapiTicket) {
this.jsapiTicket = jsapiTicket;
}
public long getJsapiTicketExpiresTime() {
return jsapiTicketExpiresTime;
}
public void setJsapiTicketExpiresTime(long jsapiTicketExpiresTime) {
this.jsapiTicketExpiresTime = jsapiTicketExpiresTime;
}
public boolean isJsapiTicketExpired() {
return System.currentTimeMillis() > this.jsapiTicketExpiresTime;
}
public synchronized void updateJsapiTicket(String jsapiTicket, int expiresInSeconds) {
this.jsapiTicket = jsapiTicket;
// 预留200秒的时间
this.jsapiTicketExpiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000l;
}
public void expireJsapiTicket() {
this.jsapiTicketExpiresTime = 0;
}
public String getAppId() {
return this.appId;
}
public String getSecret() {
return this.secret;
}
public String getToken() {
return this.token;
}
public long getExpiresTime() {
return this.expiresTime;
}
public void setAppId(String appId) {
this.appId = appId;
}
public void setSecret(String secret) {
this.secret = secret;
}
public void setToken(String token) {
this.token = token;
}
public String getAesKey() {
return aesKey;
}
public void setAesKey(String aesKey) {
this.aesKey = aesKey;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public void setExpiresTime(long expiresTime) {
this.expiresTime = expiresTime;
}
@Override
public String getOauth2redirectUri() {
return this.oauth2redirectUri;
}
public void setOauth2redirectUri(String oauth2redirectUri) {
this.oauth2redirectUri = oauth2redirectUri;
}
public String getHttp_proxy_host() {
return http_proxy_host;
}
public void setHttp_proxy_host(String http_proxy_host) {
this.http_proxy_host = http_proxy_host;
}
public int getHttp_proxy_port() {
return http_proxy_port;
}
public void setHttp_proxy_port(int http_proxy_port) {
this.http_proxy_port = http_proxy_port;
}
public String getHttp_proxy_username() {
return http_proxy_username;
}
public void setHttp_proxy_username(String http_proxy_username) {
this.http_proxy_username = http_proxy_username;
}
public String getHttp_proxy_password() {
return http_proxy_password;
}
public void setHttp_proxy_password(String http_proxy_password) {
this.http_proxy_password = http_proxy_password;
}
@Override
public String toString() {
return "WxMpInMemoryConfigStorage{" +
"appId='" + appId + '\'' +
", secret='" + secret + '\'' +
", token='" + token + '\'' +
", partnerId='" + partnerId + '\'' +
", partnerKey='" + partnerKey + '\'' +
", accessToken='" + accessToken + '\'' +
", aesKey='" + aesKey + '\'' +
", expiresTime=" + expiresTime +
", http_proxy_host='" + http_proxy_host + '\'' +
", http_proxy_port=" + http_proxy_port +
", http_proxy_username='" + http_proxy_username + '\'' +
", http_proxy_password='" + http_proxy_password + '\'' +
", jsapiTicket='" + jsapiTicket + '\'' +
", jsapiTicketExpiresTime='" + jsapiTicketExpiresTime + '\'' +
", tmpDirFile='" + tmpDirFile + '\'' +
'}';
}
@Override
public String getPartnerId() {
return partnerId;
}
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
@Override
public String getPartnerKey() {
return partnerKey;
}
public void setPartnerKey(String partnerKey) {
this.partnerKey = partnerKey;
}
@Override
public File getTmpDirFile() {
return this.tmpDirFile;
}
public void setTmpDirFile(File tmpDirFile) {
this.tmpDirFile = tmpDirFile;
}
@Override
public SSLContext getSSLContext() {
return sslContext;
}
public void setSSLContext(SSLContext context) {
sslContext = context;
}
}

@ -1,99 +0,0 @@
package com.bsd.cases.service.impl;
import com.bsd.cases.service.WxMpConfigStorage;
import com.bsd.cases.service.WxMpService;
import com.bsd.cases.util.wx.common.bean.WxAccessToken;
import com.bsd.cases.util.wx.common.bean.result.WxError;
import com.bsd.cases.util.wx.common.exception.WxErrorException;
import com.bsd.cases.util.wx.common.session.StandardSessionManager;
import com.bsd.cases.util.wx.common.session.WxSessionManager;
import com.bsd.cases.util.wx.common.util.crypto.SHA1;
import org.apache.http.HttpHost;
import org.apache.http.client.ClientProtocolException;
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.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
public class WxMpServiceImpl implements WxMpService {
protected final Logger log = LoggerFactory.getLogger(WxMpServiceImpl.class);
/**
* access token
*/
protected final Object globalAccessTokenRefreshLock = new Object();
/**
* jsapi_ticket
*/
protected final Object globalJsapiTicketRefreshLock = new Object();
protected WxMpConfigStorage wxMpConfigStorage;
protected CloseableHttpClient httpClient;
protected HttpHost httpProxy;
private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
protected WxSessionManager sessionManager = new StandardSessionManager();
public boolean checkSignature(String timestamp, String nonce, String signature) {
try {
return SHA1.gen(wxMpConfigStorage.getToken(), timestamp, nonce).equals(signature);
} catch (Exception e) {
return false;
}
}
public String getAccessToken() throws WxErrorException {
return getAccessToken(false);
}
public String getAccessToken(boolean forceRefresh) throws WxErrorException {
if (forceRefresh) {
wxMpConfigStorage.expireAccessToken();
}
if (wxMpConfigStorage.isAccessTokenExpired()) {
synchronized (globalAccessTokenRefreshLock) {
if (wxMpConfigStorage.isAccessTokenExpired()) {
String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential"
+ "&appid=" + wxMpConfigStorage.getAppId()
+ "&secret=" + wxMpConfigStorage.getSecret();
try {
HttpGet httpGet = new HttpGet(url);
if (httpProxy != null) {
RequestConfig config = RequestConfig.custom().setProxy(httpProxy).build();
httpGet.setConfig(config);
}
CloseableHttpResponse response = getHttpclient().execute(httpGet);
String resultContent = new BasicResponseHandler().handleResponse(response);
WxError error = WxError.fromJson(resultContent);
if (error.getErrorCode() != 0) {
throw new WxErrorException(error);
}
WxAccessToken accessToken = WxAccessToken.fromJson(resultContent);
wxMpConfigStorage.updateAccessToken(accessToken.getAccessToken(), accessToken.getExpiresIn());
} catch (ClientProtocolException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
}
return wxMpConfigStorage.getAccessToken();
}
protected CloseableHttpClient getHttpclient() {
return httpClient;
}
}

@ -0,0 +1,8 @@
package com.bsd.cases.vo;
import lombok.Data;
@Data
public class CaseVo {
}
Loading…
Cancel
Save