mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2025-10-15 14:33:45 +08:00
Compare commits
8 Commits
v5.4.0
...
ea9379a52f
Author | SHA1 | Date | |
---|---|---|---|
|
ea9379a52f | ||
|
0b0f2ee8ea | ||
|
6d2f104a43 | ||
|
2e50e30778 | ||
|
daf79683b3 | ||
|
5849ddc160 | ||
|
c88367939c | ||
|
a748d0d62c |
@@ -16,28 +16,55 @@ import org.dromara.common.core.utils.StringUtils;
|
||||
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class AddressUtils {
|
||||
|
||||
// 未知IP
|
||||
public static final String UNKNOWN_IP = "XX XX";
|
||||
// 内网地址
|
||||
public static final String LOCAL_ADDRESS = "内网IP";
|
||||
// 未知地址
|
||||
public static final String UNKNOWN = "XX XX";
|
||||
public static final String UNKNOWN_ADDRESS = "未知";
|
||||
|
||||
public static String getRealAddressByIP(String ip) {
|
||||
// 处理空串并过滤HTML标签
|
||||
ip = HtmlUtil.cleanHtmlTag(StringUtils.blankToDefault(ip,""));
|
||||
boolean isIPv6 = NetUtils.isIPv6(ip);
|
||||
// 判断是否为IPv4或IPv6,如果不是则返回未知地址
|
||||
if (!NetUtils.isIPv4(ip) && !isIPv6) {
|
||||
return UNKNOWN;
|
||||
// 判断是否为IPv4
|
||||
if (NetUtils.isIPv4(ip)) {
|
||||
return resolverIPv4Region(ip);
|
||||
}
|
||||
// 判断是否为IPv6
|
||||
if (NetUtils.isIPv6(ip)) {
|
||||
return resolverIPv6Region(ip);
|
||||
}
|
||||
// 如果不是IPv4或IPv6,则返回未知IP
|
||||
return UNKNOWN_IP;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据IPv4地址查询IP归属行政区域
|
||||
* @param ip ipv4地址
|
||||
* @return 归属行政区域
|
||||
*/
|
||||
private static String resolverIPv4Region(String ip){
|
||||
// 内网不查询
|
||||
if (NetUtils.isInnerIPv6(ip) || NetUtils.isInnerIP(ip)) {
|
||||
return "内网IP";
|
||||
}
|
||||
// 不支持IPv6,不再进行没有必要的IP地址信息的解析,直接返回
|
||||
if (isIPv6) {
|
||||
log.warn("ip2region不支持IPV6地址解析:{}", ip);
|
||||
// 如有需要,可自行实现IPv6地址信息解析逻辑,并在这里返回
|
||||
return "未知";
|
||||
if (NetUtils.isInnerIP(ip)) {
|
||||
return LOCAL_ADDRESS;
|
||||
}
|
||||
return RegionUtils.getCityInfo(ip);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据IPv6地址查询IP归属行政区域
|
||||
* @param ip ipv6地址
|
||||
* @return 归属行政区域
|
||||
*/
|
||||
private static String resolverIPv6Region(String ip){
|
||||
// 内网不查询
|
||||
if (NetUtils.isInnerIPv6(ip)) {
|
||||
return LOCAL_ADDRESS;
|
||||
}
|
||||
log.warn("ip2region不支持IPV6地址解析:{}", ip);
|
||||
// 不支持IPv6,不再进行没有必要的IP地址信息的解析,直接返回
|
||||
// 如有需要,可自行实现IPv6地址信息解析逻辑,并在这里返回
|
||||
return UNKNOWN_ADDRESS;
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -0,0 +1,154 @@
|
||||
package me.zhyd.oauth.request;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import me.zhyd.oauth.cache.AuthStateCache;
|
||||
import me.zhyd.oauth.config.AuthConfig;
|
||||
import me.zhyd.oauth.config.AuthSource;
|
||||
import me.zhyd.oauth.enums.AuthResponseStatus;
|
||||
import me.zhyd.oauth.enums.AuthUserGender;
|
||||
import me.zhyd.oauth.exception.AuthException;
|
||||
import me.zhyd.oauth.model.AuthCallback;
|
||||
import me.zhyd.oauth.model.AuthToken;
|
||||
import me.zhyd.oauth.model.AuthUser;
|
||||
import me.zhyd.oauth.utils.HttpUtils;
|
||||
import me.zhyd.oauth.utils.StringUtils;
|
||||
import me.zhyd.oauth.utils.UrlBuilder;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 企业微信登录父类
|
||||
* </p>
|
||||
*
|
||||
* @author liguanhua (347826496(a)qq.com)
|
||||
* @since 1.15.9
|
||||
*/
|
||||
public abstract class AbstractAuthWeChatEnterpriseRequest extends AuthDefaultRequest {
|
||||
|
||||
public AbstractAuthWeChatEnterpriseRequest(AuthConfig config, AuthSource source) {
|
||||
super(config,source);
|
||||
}
|
||||
|
||||
|
||||
public AbstractAuthWeChatEnterpriseRequest(AuthConfig config, AuthSource source, AuthStateCache authStateCache) {
|
||||
super(config, source, authStateCache);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuthToken getAccessToken(AuthCallback authCallback) {
|
||||
String response = doGetAuthorizationCode(accessTokenUrl(null));
|
||||
|
||||
JSONObject object = this.checkResponse(response);
|
||||
|
||||
return AuthToken.builder()
|
||||
.accessToken(object.getString("access_token"))
|
||||
.expireIn(object.getIntValue("expires_in"))
|
||||
.code(authCallback.getCode())
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AuthUser getUserInfo(AuthToken authToken) {
|
||||
String response = doGetUserInfo(authToken);
|
||||
JSONObject object = this.checkResponse(response);
|
||||
|
||||
// 返回 OpenId 或其他,均代表非当前企业用户,不支持
|
||||
// https://github.com/justauth/JustAuth/issues/227 修复bug
|
||||
if (!object.containsKey("userid")) {
|
||||
throw new AuthException(AuthResponseStatus.UNIDENTIFIED_PLATFORM, source);
|
||||
}
|
||||
String userId = object.getString("userid");
|
||||
String userTicket = object.getString("user_ticket");
|
||||
JSONObject userDetail = getUserDetail(authToken.getAccessToken(), userId, userTicket);
|
||||
|
||||
return AuthUser.builder()
|
||||
.rawUserInfo(userDetail)
|
||||
.username(userDetail.getString("name"))
|
||||
.nickname(userDetail.getString("alias"))
|
||||
.avatar(userDetail.getString("avatar"))
|
||||
.location(userDetail.getString("address"))
|
||||
.email(userDetail.getString("email"))
|
||||
.uuid(userId)
|
||||
.gender(AuthUserGender.getWechatRealGender(userDetail.getString("gender")))
|
||||
.token(authToken)
|
||||
.source(source.toString())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验请求结果
|
||||
*
|
||||
* @param response 请求结果
|
||||
* @return 如果请求结果正常,则返回JSONObject
|
||||
*/
|
||||
private JSONObject checkResponse(String response) {
|
||||
JSONObject object = JSONObject.parseObject(response);
|
||||
|
||||
if (object.containsKey("errcode") && object.getIntValue("errcode") != 0) {
|
||||
throw new AuthException(object.getString("errmsg"), source);
|
||||
}
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 返回获取accessToken的url
|
||||
*
|
||||
* @param code 授权码
|
||||
* @return 返回获取accessToken的url
|
||||
*/
|
||||
@Override
|
||||
protected String accessTokenUrl(String code) {
|
||||
return UrlBuilder.fromBaseUrl(source.accessToken())
|
||||
.queryParam("corpid", config.getClientId())
|
||||
.queryParam("corpsecret", config.getClientSecret())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 返回获取userInfo的url
|
||||
*
|
||||
* @param authToken 用户授权后的token
|
||||
* @return 返回获取userInfo的url
|
||||
*/
|
||||
@Override
|
||||
protected String userInfoUrl(AuthToken authToken) {
|
||||
return UrlBuilder.fromBaseUrl(source.userInfo())
|
||||
.queryParam("access_token", authToken.getAccessToken())
|
||||
.queryParam("code", authToken.getCode())
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户详情
|
||||
*
|
||||
* @param accessToken accessToken
|
||||
* @param userId 企业内用户id
|
||||
* @param userTicket 成员票据,用于获取用户信息或敏感信息
|
||||
* @return 用户详情
|
||||
*/
|
||||
private JSONObject getUserDetail(String accessToken, String userId, String userTicket) {
|
||||
// 用户基础信息
|
||||
String userInfoUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/user/get")
|
||||
.queryParam("access_token", accessToken)
|
||||
.queryParam("userid", userId)
|
||||
.build();
|
||||
String userInfoResponse = new HttpUtils(config.getHttpConfig()).get(userInfoUrl).getBody();
|
||||
JSONObject userInfo = checkResponse(userInfoResponse);
|
||||
|
||||
// 用户敏感信息
|
||||
if (StringUtils.isNotEmpty(userTicket)) {
|
||||
String userDetailUrl = UrlBuilder.fromBaseUrl("https://qyapi.weixin.qq.com/cgi-bin/auth/getuserdetail")
|
||||
.queryParam("access_token", accessToken)
|
||||
.build();
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("user_ticket", userTicket);
|
||||
String userDetailResponse = new HttpUtils(config.getHttpConfig()).post(userDetailUrl, param.toJSONString()).getBody();
|
||||
JSONObject userDetail = checkResponse(userDetailResponse);
|
||||
|
||||
userInfo.putAll(userDetail);
|
||||
}
|
||||
return userInfo;
|
||||
}
|
||||
|
||||
}
|
@@ -59,4 +59,9 @@ public class TestDemoBo extends BaseEntity {
|
||||
@NotBlank(message = "值不能为空", groups = {AddGroup.class, EditGroup.class})
|
||||
private String value;
|
||||
|
||||
/**
|
||||
* 版本
|
||||
*/
|
||||
private Long version;
|
||||
|
||||
}
|
||||
|
@@ -108,4 +108,9 @@ public class TestDemoVo implements Serializable {
|
||||
@ExcelProperty(value = "更新人账号")
|
||||
private String updateByName;
|
||||
|
||||
/**
|
||||
* 版本
|
||||
*/
|
||||
private Long version;
|
||||
|
||||
}
|
||||
|
@@ -58,7 +58,7 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
|
||||
lqw.eq(bo.getDictSort() != null, SysDictData::getDictSort, bo.getDictSort());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getDictLabel()), SysDictData::getDictLabel, bo.getDictLabel());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getDictType()), SysDictData::getDictType, bo.getDictType());
|
||||
lqw.orderByAsc(SysDictData::getDictSort);
|
||||
lqw.orderByAsc(SysDictData::getDictSort, SysDictData::getDictCode);
|
||||
return lqw;
|
||||
}
|
||||
|
||||
|
@@ -15,6 +15,7 @@ import org.dromara.warm.flow.core.entity.Task;
|
||||
import org.dromara.warm.flow.core.listener.GlobalListener;
|
||||
import org.dromara.warm.flow.core.listener.ListenerVariable;
|
||||
import org.dromara.warm.flow.core.service.InsService;
|
||||
import org.dromara.warm.flow.orm.entity.FlowInstance;
|
||||
import org.dromara.warm.flow.orm.entity.FlowTask;
|
||||
import org.dromara.workflow.common.ConditionalOnEnable;
|
||||
import org.dromara.workflow.common.constant.FlowConstant;
|
||||
@@ -151,13 +152,15 @@ public class WorkflowGlobalListener implements GlobalListener {
|
||||
flwCommonService.sendMessage(definition.getFlowName(), instance.getId(), messageType, notice);
|
||||
}
|
||||
}
|
||||
FlowInstance ins = new FlowInstance();
|
||||
Map<String, Object> variableMap = instance.getVariableMap();
|
||||
variableMap.remove(FlowConstant.FLOW_COPY_LIST);
|
||||
variableMap.remove(FlowConstant.MESSAGE_TYPE);
|
||||
variableMap.remove(FlowConstant.MESSAGE_NOTICE);
|
||||
variableMap.remove(FlowConstant.SUBMIT);
|
||||
instance.setVariable(FlowEngine.jsonConvert.objToStr(variableMap));
|
||||
insService.updateById(instance);
|
||||
ins.setId(instance.getId());
|
||||
ins.setVariable(FlowEngine.jsonConvert.objToStr(variableMap));
|
||||
insService.updateById(ins);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -623,6 +623,10 @@ insert into sys_role_menu values ('3', '107');
|
||||
insert into sys_role_menu values ('3', '108');
|
||||
insert into sys_role_menu values ('3', '118');
|
||||
insert into sys_role_menu values ('3', '123');
|
||||
insert into sys_role_menu values ('3', '130');
|
||||
insert into sys_role_menu values ('3', '131');
|
||||
insert into sys_role_menu values ('3', '132');
|
||||
insert into sys_role_menu values ('3', '133');
|
||||
insert into sys_role_menu values ('3', '500');
|
||||
insert into sys_role_menu values ('3', '501');
|
||||
insert into sys_role_menu values ('3', '1001');
|
||||
@@ -696,8 +700,11 @@ insert into sys_role_menu values ('3', '1620');
|
||||
insert into sys_role_menu values ('3', '1621');
|
||||
insert into sys_role_menu values ('3', '1622');
|
||||
insert into sys_role_menu values ('3', '1623');
|
||||
insert into sys_role_menu values ('3', '11616');
|
||||
insert into sys_role_menu values ('3', '11618');
|
||||
insert into sys_role_menu values ('3', '11619');
|
||||
insert into sys_role_menu values ('3', '11622');
|
||||
insert into sys_role_menu values ('3', '11623');
|
||||
insert into sys_role_menu values ('3', '11629');
|
||||
insert into sys_role_menu values ('3', '11632');
|
||||
insert into sys_role_menu values ('3', '11633');
|
||||
@@ -707,6 +714,7 @@ insert into sys_role_menu values ('3', '11640');
|
||||
insert into sys_role_menu values ('3', '11641');
|
||||
insert into sys_role_menu values ('3', '11642');
|
||||
insert into sys_role_menu values ('3', '11643');
|
||||
insert into sys_role_menu values ('3', '11701');
|
||||
insert into sys_role_menu values ('4', '5');
|
||||
insert into sys_role_menu values ('4', '1500');
|
||||
insert into sys_role_menu values ('4', '1501');
|
||||
|
@@ -624,6 +624,10 @@ insert into sys_role_menu values ('3', '107');
|
||||
insert into sys_role_menu values ('3', '108');
|
||||
insert into sys_role_menu values ('3', '118');
|
||||
insert into sys_role_menu values ('3', '123');
|
||||
insert into sys_role_menu values ('3', '130');
|
||||
insert into sys_role_menu values ('3', '131');
|
||||
insert into sys_role_menu values ('3', '132');
|
||||
insert into sys_role_menu values ('3', '133');
|
||||
insert into sys_role_menu values ('3', '500');
|
||||
insert into sys_role_menu values ('3', '501');
|
||||
insert into sys_role_menu values ('3', '1001');
|
||||
@@ -697,8 +701,11 @@ insert into sys_role_menu values ('3', '1620');
|
||||
insert into sys_role_menu values ('3', '1621');
|
||||
insert into sys_role_menu values ('3', '1622');
|
||||
insert into sys_role_menu values ('3', '1623');
|
||||
insert into sys_role_menu values ('3', '11616');
|
||||
insert into sys_role_menu values ('3', '11618');
|
||||
insert into sys_role_menu values ('3', '11619');
|
||||
insert into sys_role_menu values ('3', '11622');
|
||||
insert into sys_role_menu values ('3', '11623');
|
||||
insert into sys_role_menu values ('3', '11629');
|
||||
insert into sys_role_menu values ('3', '11632');
|
||||
insert into sys_role_menu values ('3', '11633');
|
||||
@@ -708,6 +715,7 @@ insert into sys_role_menu values ('3', '11640');
|
||||
insert into sys_role_menu values ('3', '11641');
|
||||
insert into sys_role_menu values ('3', '11642');
|
||||
insert into sys_role_menu values ('3', '11643');
|
||||
insert into sys_role_menu values ('3', '11701');
|
||||
insert into sys_role_menu values ('4', '5');
|
||||
insert into sys_role_menu values ('4', '1500');
|
||||
insert into sys_role_menu values ('4', '1501');
|
||||
|
@@ -448,6 +448,10 @@ insert into sys_role_menu values ('3', '107');
|
||||
insert into sys_role_menu values ('3', '108');
|
||||
insert into sys_role_menu values ('3', '118');
|
||||
insert into sys_role_menu values ('3', '123');
|
||||
insert into sys_role_menu values ('3', '130');
|
||||
insert into sys_role_menu values ('3', '131');
|
||||
insert into sys_role_menu values ('3', '132');
|
||||
insert into sys_role_menu values ('3', '133');
|
||||
insert into sys_role_menu values ('3', '500');
|
||||
insert into sys_role_menu values ('3', '501');
|
||||
insert into sys_role_menu values ('3', '1001');
|
||||
@@ -521,8 +525,11 @@ insert into sys_role_menu values ('3', '1620');
|
||||
insert into sys_role_menu values ('3', '1621');
|
||||
insert into sys_role_menu values ('3', '1622');
|
||||
insert into sys_role_menu values ('3', '1623');
|
||||
insert into sys_role_menu values ('3', '11616');
|
||||
insert into sys_role_menu values ('3', '11618');
|
||||
insert into sys_role_menu values ('3', '11619');
|
||||
insert into sys_role_menu values ('3', '11622');
|
||||
insert into sys_role_menu values ('3', '11623');
|
||||
insert into sys_role_menu values ('3', '11629');
|
||||
insert into sys_role_menu values ('3', '11632');
|
||||
insert into sys_role_menu values ('3', '11633');
|
||||
@@ -532,6 +539,7 @@ insert into sys_role_menu values ('3', '11640');
|
||||
insert into sys_role_menu values ('3', '11641');
|
||||
insert into sys_role_menu values ('3', '11642');
|
||||
insert into sys_role_menu values ('3', '11643');
|
||||
insert into sys_role_menu values ('3', '11701');
|
||||
insert into sys_role_menu values ('4', '5');
|
||||
insert into sys_role_menu values ('4', '1500');
|
||||
insert into sys_role_menu values ('4', '1501');
|
||||
|
@@ -2494,6 +2494,14 @@ INSERT sys_role_menu VALUES (3, 118);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 123);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 130);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 131);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 132);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 133);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 500);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 501);
|
||||
@@ -2640,10 +2648,16 @@ INSERT sys_role_menu VALUES (3, 1622);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 1623);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11616);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11618);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11619);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11622);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11623);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11629);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11632);
|
||||
@@ -2662,6 +2676,8 @@ INSERT sys_role_menu VALUES (3, 11642);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11643);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (3, 11701);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (4, 5);
|
||||
GO
|
||||
INSERT sys_role_menu VALUES (4, 1500);
|
||||
|
Reference in New Issue
Block a user