Browse Source

微信第三方平台

dev_shibei_match
zxc 5 years ago
parent
commit
cdb040ae40
  1. 86
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthCodeDTO.java
  2. 91
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java
  3. 76
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizerRefreshTokenDTO.java
  4. 76
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/ComponentAccessTokenDTO.java
  5. 86
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/FuncInfoDTO.java
  6. 76
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PreAuthTokenDTO.java
  7. 91
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/RefreshAuthorizerAccessTokenDTO.java
  8. 50
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeFormDTO.java
  9. 49
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthorizationInfoFormDTO.java
  10. 47
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthorizerAccessTokenFormDTO.java
  11. 40
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/ComponentAccessTokenFormDTO.java
  12. 41
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/FuncInfoFormDTO.java
  13. 41
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PreAuthTokenFormDTO.java
  14. 37
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/WillOverDueResultDTO.java
  15. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java
  16. 26
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdApiConstant.java
  17. 20
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdPlatformConstant.java
  18. 45
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java
  19. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WeChatNotifyController.java
  20. 36
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java
  21. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java
  22. 33
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizerRefreshTokenDao.java
  23. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/ComponentAccessTokenDao.java
  24. 39
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/FuncInfoDao.java
  25. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java
  26. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PreAuthTokenDao.java
  27. 47
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/RefreshAuthorizerAccessTokenDao.java
  28. 61
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthCodeEntity.java
  29. 66
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthorizationInfoEntity.java
  30. 51
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthorizerRefreshTokenEntity.java
  31. 51
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/ComponentAccessTokenEntity.java
  32. 61
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/FuncInfoEntity.java
  33. 51
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PreAuthTokenEntity.java
  34. 66
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/RefreshAuthorizerAccessTokenEntity.java
  35. 68
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java
  36. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java
  37. 190
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java
  38. 36
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml
  39. 39
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml
  40. 18
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizerRefreshTokenDao.xml
  41. 33
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ComponentAccessTokenDao.xml
  42. 38
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/FuncInfoDao.xml
  43. 11
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml
  44. 32
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PreAuthTokenDao.xml
  45. 52
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/RefreshAuthorizerAccessTokenDao.xml

86
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthCodeDTO.java

@ -0,0 +1,86 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 授权回调url反参表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class AuthCodeDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方APPID
*/
private String authAppid;
/**
* 授权码
*/
private String authCode;
/**
* 有效期 10min
*/
private Integer expiresIn;
/**
*
*/
private Integer delFlag;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdTime;
/**
*
*/
private String updatedBy;
/**
*
*/
private Date updatedTime;
}

91
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizationInfoDTO.java

@ -0,0 +1,91 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 授权信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class AuthorizationInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String id;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方 appid
*/
private String authorizerAppid;
/**
* 接口调用令牌在授权的公众号/小程序具备 API 权限时才有此返回值
*/
private String authorizerAccessToken;
/**
* authorizer_access_token 的有效期在授权的公众号/小程序具备API权限时才有此返回值单位
*/
private Integer expiresIn;
/**
* 刷新令牌在授权的公众号具备API权限时才有此返回值刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token一旦丢失只能让用户重新授权才能再次拿到新的刷新令牌用户重新授权后之前的刷新令牌会失效
*/
private String authorizerRefreshToken;
/**
*
*/
private Integer delFlag;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdTime;
/**
*
*/
private String updatedBy;
/**
*
*/
private Date updatedTime;
}

76
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/AuthorizerRefreshTokenDTO.java

@ -0,0 +1,76 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 授权方的刷新令牌表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class AuthorizerRefreshTokenDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 授权方的刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方appid
*/
private String authorizerAppid;
/**
* 删除标识 0-1-
*/
private String delFlag;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

76
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/ComponentAccessTokenDTO.java

@ -0,0 +1,76 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 第三方平台调用凭证
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class ComponentAccessTokenDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 令牌 第三方平台接口的调用凭据
*/
private String componentAccessToken;
/**
* 令牌有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
/**
* 删除状态 0正常 1删除
*/
private Integer delFlag;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

86
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/FuncInfoDTO.java

@ -0,0 +1,86 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 授权给开发者的权限集列表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class FuncInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 权限类别
*/
private String funcscopeCategory;
/**
* 权限ID
*/
private String funcscopeId;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方APPID
*/
private String authorizationInfoAppid;
/**
*
*/
private Integer delFlag;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdTime;
/**
*
*/
private String updatedBy;
/**
*
*/
private Date updatedTime;
}

76
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/PreAuthTokenDTO.java

@ -0,0 +1,76 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 预授权码历史记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class PreAuthTokenDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
private String id;
/**
* 预授权码 第三方平台方实现授权托管的必备信息每个预授权码有效期为 10 分钟需要先获取令牌才能调用
*/
private String preAuthToken;
/**
* 预授权码有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
/**
* 删除状态 0正常 1删除
*/
private Integer delFlag;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}

91
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/RefreshAuthorizerAccessTokenDTO.java

@ -0,0 +1,91 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
* 获取/刷新接口调用令牌记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
public class RefreshAuthorizerAccessTokenDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
private String id;
/**
* 授权方令牌
*/
private String authorizerAccessToken;
/**
* 有效期单位
*/
private Integer expiresIn;
/**
* 刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方APPID
*/
private String authAppid;
/**
* 客户ID
*/
private String customerId;
/**
*
*/
private Integer delFlag;
/**
*
*/
private String createdBy;
/**
*
*/
private Date createdTime;
/**
*
*/
private String updatedBy;
/**
*
*/
private Date updatedTime;
}

50
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeFormDTO.java

@ -0,0 +1,50 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/8 17:53
*/
@Data
public class AuthCodeFormDTO implements Serializable {
private static final long serialVersionUID = -6163303184086480522L;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方AppId
*/
private String authAppId;
/**
* 授权码
*/
private String authCode;
/**
* 有效期 10min
*/
private Integer expiresIn;
/**
* 删除状态 0正常 1已删除
*/
private Integer delFlag = 0;
/**
* 创建者
*/
private String createdBy = "APP_USER";
/**
* 更新者
*/
private String updatedBy = "APP_USER";
}

49
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthorizationInfoFormDTO.java

@ -0,0 +1,49 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/9 10:30
*/
@Data
public class AuthorizationInfoFormDTO implements Serializable {
private static final long serialVersionUID = -1117036477221128930L;
/**
* 客户Id
*/
private String customerId;
/**
* 授权方 appid
*/
private String authorizerAppid;
/**
* 接口调用令牌在授权的公众号/小程序具备 API 权限时才有此返回值
*/
private String authorizerAccessToken;
/**
* authorizer_access_token 的有效期在授权的公众号/小程序具备API权限时才有此返回值单位
*/
private Integer expiresIn;
/**
* 刷新令牌在授权的公众号具备API权限时才有此返回值刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token一旦丢失只能让用户重新授权才能再次拿到新的刷新令牌用户重新授权后之前的刷新令牌会失效
*/
private String authorizerRefreshToken;
/**
*
*/
private Integer delFlag = 0;
private String createdBy = "APP_USER";
private String updatedBy = "APP_USER";
}

47
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthorizerAccessTokenFormDTO.java

@ -0,0 +1,47 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* @Author zxc
* @CreateTime 2020/7/9 17:29
*/
@Data
public class AuthorizerAccessTokenFormDTO implements Serializable {
private static final long serialVersionUID = 268927093061495006L;
/**
* 授权方令牌
*/
private String authorizerAccessToken;
/**
* 有效期单位
*/
private Integer expiresIn;
/**
* 刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方APPID
*/
private String authAppid;
/**
* 客户ID
*/
private String customerId;
private Integer delFlag = 0;
private String createdBy = "APP_USER";
private String updatedBy = "APP_USER";
}

40
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/ComponentAccessTokenFormDTO.java

@ -0,0 +1,40 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/9 8:54
*/
@Data
public class ComponentAccessTokenFormDTO implements Serializable {
private static final long serialVersionUID = -2860559047843944065L;
/**
* 令牌 第三方平台接口的调用凭据
*/
private String componentAccessToken;
/**
* 令牌有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
/**
* 删除状态 0正常 1删除
*/
private Integer delFlag = 0;
/**
* 创建人
*/
private String createdBy = "APP_USER";
/**
* 更新人
*/
private String updatedBy = "APP_USER";
}

41
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/FuncInfoFormDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/9 10:43
*/
@Data
public class FuncInfoFormDTO implements Serializable {
private static final long serialVersionUID = 5468844633023377254L;
/**
* 权限类别
*/
private String funcscopeCategory;
/**
* 权限ID
*/
private String funcscopeId;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方APPID
*/
private String authorizationInfoAppid;
private Integer delFlag = 0;
private String createdBy = "APP_USER";
private String updatedBy = "APP_USER";
}

41
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PreAuthTokenFormDTO.java

@ -0,0 +1,41 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/9 9:15
*/
@Data
public class PreAuthTokenFormDTO implements Serializable {
private static final long serialVersionUID = 2970040842154724385L;
/**
* 预授权码 第三方平台方实现授权托管的必备信息每个预授权码有效期为 10 分钟需要先获取令牌才能调用
*/
private String preAuthToken;
/**
* 预授权码有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
/**
* 删除状态 0正常 1删除
*/
private Integer delFlag = 0;
/**
* 创建人
*/
private String createdBy = "APP_USER";
/**
* 更新人
*/
private String updatedBy = "APP_USER";
}

37
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/WillOverDueResultDTO.java

@ -0,0 +1,37 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/9 17:01
*/
@Data
public class WillOverDueResultDTO implements Serializable {
private static final long serialVersionUID = -9073227815312384742L;
/**
* 授权方令牌
*/
private String authorizerAccessToken;
/**
* 刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方AppId
*/
private String authAppId;
/**
* 客户Id
*/
private String customerId;
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java

@ -24,6 +24,8 @@ public interface ModuleConstant {
*/
String COMPONENT_ACCESS_TOKEN = "component_access_token";
String FUNC_INFO = "func_info";
/**
* 有效期
*/
@ -39,6 +41,8 @@ public interface ModuleConstant {
String AUTHORIZER_REFRESH_TOKEN = "authorizer_refresh_token";
String AUTHORIZER_ACCESS_TOKEN = "authorizer_access_token";
String AUTH_TICKET = "====================授权票据【ComponentVerifyTicket】:【%s】====================";
String ERROR_TICKET = "微信开放平台,第三方平台获取【验证票据】失败";
@ -57,17 +61,7 @@ public interface ModuleConstant {
String FAILURE_ACCESS_TOKEN = "微信开放平台,第三方平台获取【令牌】失败";
String TICKET_REDIS_KEY = "epmet:wechartthird:componentverifyticket";
String PRE_AUTH_CODE_REDIS_KEY = "epmet:wechartthird:preauthcode";
String ACCESS_TOKEN_REDIS_KEY = "epmet:wechartthird:preauthcode";
String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken";
String AUTHORIZATION_CODE_REDIS_KEY = "epmet:wechartthird:authorizationcode";
String AUTH_INFO_REDIS_KEY = "epmet:wechartthird:authinfo";

26
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdApiConstant.java

@ -0,0 +1,26 @@
package com.epmet.constant;
/**
* @Author zxc
* @CreateTime 2020/7/8 17:59
*/
public interface ThirdApiConstant {
/**
*
*/
String API_CREATE_PREAUTHCODE_URL = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode";
/**
* 使用授权码获取授权信息请求地址
*/
String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth";
/**
* 获取令牌请求地址
*/
String API_COMPONENT_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/component/api_component_token";
String API_AUTHORIZER_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token";
}

20
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdPlatformConstant.java

@ -26,24 +26,4 @@ public interface ThirdPlatformConstant {
*/
String PLATFORM_COMPONENT_TOKEN = "****************";
/**
*
*/
String API_CREATE_PREAUTHCODE_URl = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=COMPONENT_ACCESS_TOKEN";
/**
*
*/
String API_CREATE_PREAUTHCODE_URL = "https://api.weixin.qq.com/cgi-bin/component/api_create_preauthcode?component_access_token=COMPONENT_ACCESS_TOKEN";
/**
* 使用授权码获取授权信息请求地址
*/
String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=COMPONENT_ACCESS_TOKEN";
/**
* 获取令牌请求地址
*/
String API_COMPONENT_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/component/api_component_token";
}

45
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java

@ -0,0 +1,45 @@
package com.epmet.constant;
/**
* @Author zxc
* @CreateTime 2020/7/8 18:16
*/
public interface ThirdRedisKeyConstant {
/**
* :
*/
String COLON = ":";
/**
* component_verify_ticket 令牌目录
*/
String TICKET_REDIS_KEY = "epmet:wechartthird:componentverifyticket";
/**
* pre_auth_code 预授权码
*/
String PRE_AUTH_CODE_REDIS_KEY = "epmet:wechartthird:preauthcode";
/**
* component_access_token
*/
String ACCESS_TOKEN_REDIS_KEY = "epmet:wechartthird:componentaccesstoken";
/**
* authorizer_refresh_token 刷新令牌获取授权信息时得到
*/
String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken";
/**
* auth_code 授权码
*/
String AUTH_CODE_REDIS_KEY = "epmet:wechartthird:authcode";
/**
* authorization_info 授权信息
*/
String AUTH_INFO_REDIS_KEY = "epmet:wechartthird:authinfo";
}

41
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WeChatNotifyController.java

@ -1,13 +1,13 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.service.ComponentVerifyTicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
@ -46,33 +46,38 @@ public class WeChatNotifyController {
/**
* @Description 使用授权码获取授权信息
* @param response
* @param authCode
* @param expiresIn
* @author zxc
*/
@PostMapping(value = "/authinfobyauthcode")
public Result authInfoByAuthCode(HttpServletResponse response,
@RequestParam("auth_code") String authCode,
@RequestParam("expires_in") String expiresIn) {
componentVerifyTicketService.authInfoByAuthCode(response,authCode,expiresIn);
/*@PostMapping(value = "/authinfobyauthcode")
public Result authInfoByAuthCode() {
componentVerifyTicketService.authInfoByAuthCode();
return new Result();
}
}*/
/**
* @Description 获取/刷新接口调用令牌
* @param authorizerAppId 授权方AppId
* @author zxc
*/
@PostMapping("refreshtoken")
public Result refreshToken(@RequestParam("authorizer_appid") String authorizerAppId){
componentVerifyTicketService.refreshToken(authorizerAppId);
public Result refreshToken(){
componentVerifyTicketService.refreshToken();
return new Result();
}
/**
* @Description 授权回调URL
* @param
* @author zxc
*/
@PostMapping("redirecturi")
public Result redirectUri(){
componentVerifyTicketService.redirectUri();
public Result redirectUri(HttpServletRequest request, HttpServletResponse response, @LoginUser TokenDto tokenDto, @PathVariable String authAppId){
componentVerifyTicketService.redirectUri(request,response,tokenDto,authAppId);
return new Result();
}
@PostMapping("merge")
public Result merge(){
return new Result();
}
}

36
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java

@ -0,0 +1,36 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.AuthCodeFormDTO;
import com.epmet.entity.AuthCodeEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 授权回调url反参表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface AuthCodeDao extends BaseDao<AuthCodeEntity> {
void insertRedirectAuthCode(AuthCodeFormDTO formDTO);
}

41
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizationInfoDao.java

@ -0,0 +1,41 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.AuthorizationInfoFormDTO;
import com.epmet.entity.AuthorizationInfoEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 授权信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface AuthorizationInfoDao extends BaseDao<AuthorizationInfoEntity> {
/**
* @Description 插入 授权信息
* @param formDTO
* @author zxc
*/
void insertAuthorizationInfo(AuthorizationInfoFormDTO formDTO);
}

33
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthorizerRefreshTokenDao.java

@ -0,0 +1,33 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.AuthorizerRefreshTokenEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 授权方的刷新令牌表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface AuthorizerRefreshTokenDao extends BaseDao<AuthorizerRefreshTokenEntity> {
}

41
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/ComponentAccessTokenDao.java

@ -0,0 +1,41 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.ComponentAccessTokenFormDTO;
import com.epmet.entity.ComponentAccessTokenEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 第三方平台调用凭证
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface ComponentAccessTokenDao extends BaseDao<ComponentAccessTokenEntity> {
/**
* @Description 插入component_access_token信息
* @param formDTO
* @author zxc
*/
void insertComponentAccessToken(ComponentAccessTokenFormDTO formDTO);
}

39
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/FuncInfoDao.java

@ -0,0 +1,39 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.FuncInfoFormDTO;
import com.epmet.entity.FuncInfoEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 授权给开发者的权限集列表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface FuncInfoDao extends BaseDao<FuncInfoEntity> {
void insertFuncInfo(@Param("funcInfoList") List<FuncInfoFormDTO> funcInfoList);
}

12
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerAgencyDao.java

@ -20,14 +20,22 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.PaCustomerAgencyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 客户根组织信息
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface PaCustomerAgencyDao extends BaseDao<PaCustomerAgencyEntity> {
/**
* @Description 根据userId查询客户Id
* @param userId
* @author zxc
*/
String getCustomerIdByUserId(@Param("userId")String userId);
}

41
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PreAuthTokenDao.java

@ -0,0 +1,41 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.PreAuthTokenFormDTO;
import com.epmet.entity.PreAuthTokenEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 预授权码历史记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface PreAuthTokenDao extends BaseDao<PreAuthTokenEntity> {
/**
* @Description 插入 预授权码
* @param formDTO
* @author zxc
*/
void insertPreAuthToken(PreAuthTokenFormDTO formDTO);
}

47
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/RefreshAuthorizerAccessTokenDao.java

@ -0,0 +1,47 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.form.AuthorizerAccessTokenFormDTO;
import com.epmet.dto.result.WillOverDueResultDTO;
import com.epmet.entity.RefreshAuthorizerAccessTokenEntity;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 获取/刷新接口调用令牌记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-08
*/
@Mapper
public interface RefreshAuthorizerAccessTokenDao extends BaseDao<RefreshAuthorizerAccessTokenEntity> {
/**
* @Description 查询即将过期的 authorizer_access_token
* @param
* @author zxc
*/
List<WillOverDueResultDTO> checkWillOverDue();
void insertAuthorizerAccessToken(AuthorizerAccessTokenFormDTO refreshAccessToken);
}

61
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthCodeEntity.java

@ -0,0 +1,61 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 授权回调url反参表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("auth_code")
public class AuthCodeEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方APPID
*/
private String authAppid;
/**
* 授权码
*/
private String authCode;
/**
* 有效期 10min
*/
private Integer expiresIn;
}

66
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthorizationInfoEntity.java

@ -0,0 +1,66 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 授权信息表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("authorization_info")
public class AuthorizationInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方 appid
*/
private String authorizerAppid;
/**
* 接口调用令牌在授权的公众号/小程序具备 API 权限时才有此返回值
*/
private String authorizerAccessToken;
/**
* authorizer_access_token 的有效期在授权的公众号/小程序具备API权限时才有此返回值单位
*/
private Integer expiresIn;
/**
* 刷新令牌在授权的公众号具备API权限时才有此返回值刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token一旦丢失只能让用户重新授权才能再次拿到新的刷新令牌用户重新授权后之前的刷新令牌会失效
*/
private String authorizerRefreshToken;
}

51
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/AuthorizerRefreshTokenEntity.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 授权方的刷新令牌表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("authorizer_refresh_token")
public class AuthorizerRefreshTokenEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 授权方的刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方appid
*/
private String authorizerAppid;
}

51
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/ComponentAccessTokenEntity.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 第三方平台调用凭证
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("component_access_token")
public class ComponentAccessTokenEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 令牌 第三方平台接口的调用凭据
*/
private String componentAccessToken;
/**
* 令牌有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
}

61
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/FuncInfoEntity.java

@ -0,0 +1,61 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 授权给开发者的权限集列表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("func_info")
public class FuncInfoEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 权限类别
*/
private String funcscopeCategory;
/**
* 权限ID
*/
private String funcscopeId;
/**
* 客户ID
*/
private String customerId;
/**
* 授权方APPID
*/
private String authorizationInfoAppid;
}

51
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/PreAuthTokenEntity.java

@ -0,0 +1,51 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 预授权码历史记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("pre_auth_token")
public class PreAuthTokenEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 预授权码 第三方平台方实现授权托管的必备信息每个预授权码有效期为 10 分钟需要先获取令牌才能调用
*/
private String preAuthToken;
/**
* 预授权码有效期 单位s 最长 60*60*2
*/
private Integer expiresIn;
}

66
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/entity/RefreshAuthorizerAccessTokenEntity.java

@ -0,0 +1,66 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.Date;
/**
* 获取/刷新接口调用令牌记录表
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2020-07-09
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("refresh_authorizer_access_token")
public class RefreshAuthorizerAccessTokenEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 授权方令牌
*/
private String authorizerAccessToken;
/**
* 有效期单位
*/
private Integer expiresIn;
/**
* 刷新令牌
*/
private String authorizerRefreshToken;
/**
* 授权方APPID
*/
private String authAppid;
/**
* 客户ID
*/
private String customerId;
}

68
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java

@ -2,6 +2,9 @@ package com.epmet.redis;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.constant.ModuleConstant;
import com.epmet.constant.ThirdRedisKeyConstant;
import com.epmet.dto.form.AuthCodeFormDTO;
import com.epmet.dto.form.AuthorizerAccessTokenFormDTO;
import com.epmet.dto.result.AuthorizationInfoResultDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -24,60 +27,62 @@ public class RedisThird {
private RedisUtils redisUtils;
/**
* @Description 缓存 component_access_token 有效期1小时59分钟 官网有效期2H
* @param accessToken
* @Description 缓存 component_verify_ticket 有效期9min (官方有效期 10分钟)
* @param verifyTicket
* @author zxc
*/
public void setComponentAccessToken (String accessToken){
redisTemplate.opsForValue().set(ModuleConstant.ACCESS_TOKEN_REDIS_KEY+ModuleConstant.COMPONENT_ACCESS_TOKEN, accessToken, 60 * 60 * 2 - 60, TimeUnit.SECONDS);
public void setComponentVerifyTicket(String verifyTicket){
redisUtils.set(ThirdRedisKeyConstant.TICKET_REDIS_KEY,verifyTicket,-1);
}
/**
* @Description 获取 component_access_token
* @Description 获取 component_verify_ticket
* @param key
* @author zxc
*/
public String getComponentAccessToken(String key){
return redisTemplate.opsForValue().get(ModuleConstant.ACCESS_TOKEN_REDIS_KEY+key).toString();
public String getComponentVerifyTicket(String key){
return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.TICKET_REDIS_KEY).toString();
}
/**
* @Description 获取 component_verify_ticket
* @param key
* @Description 缓存 component_access_token 有效期1小时59分钟 官网有效期2H
* @param accessToken
* @author zxc
*/
public String getComponentVerifyTicket(String key){
return redisTemplate.opsForValue().get(ModuleConstant.TICKET_REDIS_KEY+ModuleConstant.TICKET_REDIS_KEY+key).toString();
public void setComponentAccessToken (String accessToken){
String key = ThirdRedisKeyConstant.ACCESS_TOKEN_REDIS_KEY;
redisUtils.set(key,accessToken,-1);
}
/**
* @Description 缓存 component_verify_ticket 有效期9min (官方有效期 10分钟)
* @param verifyTicket
* @Description 获取 component_access_token
* @param key
* @author zxc
*/
public void setComponentVerifyTicket(String verifyTicket){
redisTemplate.opsForValue().set(ModuleConstant.TICKET_REDIS_KEY+ModuleConstant.TICKET_UNDERLINE_KEY, verifyTicket, 60 * 9, TimeUnit.SECONDS);
public String getComponentAccessToken(String key){
return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.ACCESS_TOKEN_REDIS_KEY+key).toString();
}
/**
* @Description 缓存 pre_auth_code 有效期9min (官方有效期 10分钟)
* @Description 缓存 pre_auth_code 有效期 (官方有效期 10分钟)
* @param authCode pre_auth_code 预授权码
* @param expiresIn expires_in 有效期
* @author zxc
*/
public void setPreAuthCode(String authCode,Integer expiresIn){
redisTemplate.opsForValue().set(ModuleConstant.PRE_AUTH_CODE_REDIS_KEY+ModuleConstant.PRE_AUTH_CODE, authCode,expiresIn, TimeUnit.SECONDS);
redisUtils.set(ThirdRedisKeyConstant.PRE_AUTH_CODE_REDIS_KEY+ModuleConstant.PRE_AUTH_CODE,authCode,-1);
}
/**
* @Description 缓存 刷新令牌
* 在授权的公众号具备API权限时才有此返回值刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token
* 一旦丢失只能让用户重新授权才能再次拿到新的刷新令牌用户重新授权后之前的刷新令牌会失效
* @param authorizerRefreshToken
* @param refreshAccessToken
* @author zxc
*/
public void setAuthorizerRefreshToken(String authorizerRefreshToken){
redisTemplate.opsForValue().set(ModuleConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY+authorizerRefreshToken,authorizerRefreshToken);
public void setAuthorizerRefreshToken(AuthorizerAccessTokenFormDTO refreshAccessToken){
String key = ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + ThirdRedisKeyConstant.COLON + refreshAccessToken.getCustomerId()+ThirdRedisKeyConstant.COLON+refreshAccessToken.getAuthAppid();
redisUtils.set(key,refreshAccessToken,-1);
}
/**
@ -86,7 +91,17 @@ public class RedisThird {
* @author zxc
*/
public String getAuthorizerRefreshToken(String key){
return redisTemplate.opsForValue().get(ModuleConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY+key).toString();
return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY+key).toString();
}
/**
* @Description 缓存授权码 auth_Code
* @param
* @author zxc
*/
public void setAuthCode(AuthCodeFormDTO formDTO){
String key = ThirdRedisKeyConstant.AUTH_CODE_REDIS_KEY+ThirdRedisKeyConstant.COLON+formDTO.getCustomerId();
redisUtils.set(key,formDTO,-1);
}
/**
@ -95,12 +110,17 @@ public class RedisThird {
* @param key
* @author zxc
*/
public String getAuthorizationCode(String key){
return redisTemplate.opsForValue().get(ModuleConstant.AUTHORIZATION_CODE_REDIS_KEY+key).toString();
public String getAuthCode(String key){
return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.AUTH_CODE_REDIS_KEY+key).toString();
}
/**
* @Description 缓存授权信息
* @param authInfo
* @author zxc
*/
public void setAuthInfo(AuthorizationInfoResultDTO authInfo){
redisUtils.set(ModuleConstant.AUTH_INFO_REDIS_KEY,authInfo,-1);
redisUtils.set(ThirdRedisKeyConstant.AUTH_INFO_REDIS_KEY,authInfo,-1);
}
}

16
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java

@ -1,5 +1,7 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -31,20 +33,22 @@ public interface ComponentVerifyTicketService {
/**
* @Description 使用授权码获取授权信息
* @param response
* @param authCode
* @param expiresIn
* @author zxc
*/
void authInfoByAuthCode(HttpServletResponse response,String authCode,String expiresIn);
// void authInfoByAuthCode();
/**
* @Description 获取/刷新接口调用令牌
* @param
* @author zxc
*/
void refreshToken(String authorizerAppId);
void refreshToken();
void redirectUri();
/**
* @Description 授权回调URL
* @param
* @author zxc
*/
void redirectUri(HttpServletRequest request, HttpServletResponse response, TokenDto tokenDto,String authAppId);
}

190
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java

@ -4,19 +4,25 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.client.config.utils.IOUtils;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.constant.ModuleConstant;
import com.epmet.dao.ComponentVerifyTicketDao;
import com.epmet.dto.form.ComponentVerifyTicketFormDTO;
import com.epmet.constant.ThirdApiConstant;
import com.epmet.dao.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.AuthorizationInfoResultDTO;
import com.epmet.dto.result.WillOverDueResultDTO;
import com.epmet.redis.RedisThird;
import com.epmet.service.ComponentVerifyTicketService;
import com.epmet.util.WXBizMsgCrypt;
import com.epmet.util.WXXmlToMapUtil;
import com.epmet.util.XmlUtil;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.github.pagehelper.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -24,9 +30,9 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
import static com.epmet.constant.ThirdPlatformConstant.*;
@ -42,6 +48,20 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
private RedisThird redisThird;
@Autowired
private ComponentVerifyTicketDao ticketDao;
@Autowired
private AuthCodeDao authCodeDao;
@Autowired
private ComponentAccessTokenDao componentAccessTokenDao;
@Autowired
private PreAuthTokenDao preAuthTokenDao;
@Autowired
private AuthorizationInfoDao authorizationInfoDao;
@Autowired
private FuncInfoDao funcInfoDao;
@Autowired
private PaCustomerAgencyDao paCustomerAgencyDao;
@Autowired
private RefreshAuthorizerAccessTokenDao refreshAuthorizerAccessTokenDao;
/**
* @Description 获得授权事件的票据
@ -115,6 +135,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
* @param
* @author zxc
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void getComponentAccessToken() {
log.info("====================开始执行定时任务获取令牌【component_access_token】====================");
@ -126,13 +147,20 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID);
jsonObject.put(ModuleConstant.COMPONENT_APPSECRET, PLATFORM_APP_SECRET);
jsonObject.put(ModuleConstant.TICKET_UNDERLINE_KEY, componentVerifyTicket);
String post = HttpClientManager.getInstance().sendPostByJSON(API_CREATE_PREAUTHCODE_URL, JSON.toJSONString(jsonObject)).getData();
String post = HttpClientManager.getInstance().sendPostByJSON(ThirdApiConstant.API_COMPONENT_TOKEN_URL, JSON.toJSONString(jsonObject)).getData();
HashMap<String, String> hashMap = JSON.parseObject(post, HashMap.class);
String componentAccessToken = hashMap.get(ModuleConstant.COMPONENT_ACCESS_TOKEN);
String expiresIn = hashMap.get(ModuleConstant.EXPIRES_IN);
if (StringUtils.isNotEmpty(componentAccessToken)) {
//令牌信息存DB
ComponentAccessTokenFormDTO formDTO = new ComponentAccessTokenFormDTO();
formDTO.setComponentAccessToken(componentAccessToken);
formDTO.setExpiresIn(Integer.valueOf(expiresIn));
componentAccessTokenDao.insertComponentAccessToken(formDTO);
//存缓存
redisThird.setComponentAccessToken(componentAccessToken);
} else {
throw new RuntimeException(ModuleConstant.FAILURE_ACCESS_TOKEN);
throw new RenException(ModuleConstant.FAILURE_ACCESS_TOKEN);
}
} catch (Exception e) {
e.printStackTrace();
@ -141,10 +169,11 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
}
/**
* @Description 定时获取预授权码
* @Description 获取预授权码
* @param
* @author zxc
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void preAuthCode() {
log.info("====================开始执行定时任务获取预授权码【pre_auth_code】====================");
@ -152,14 +181,20 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
String accessToken = redisThird.getComponentAccessToken(ModuleConstant.COMPONENT_ACCESS_TOKEN);
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID);
String post = HttpClientManager.getInstance().sendPostByJSON(API_CREATE_PREAUTHCODE_URL + accessToken, JSON.toJSONString(jsonObject)).getData();
String post = HttpClientManager.getInstance().sendPostByJSON(ThirdApiConstant.API_CREATE_PREAUTHCODE_URL + accessToken, JSON.toJSONString(jsonObject)).getData();
log.info("====================返回post结果:" + post);
HashMap<String, String> hashMap = JSON.parseObject(post, HashMap.class);
String authCode = hashMap.get(ModuleConstant.PRE_AUTH_CODE);
String preAuthCode = hashMap.get(ModuleConstant.PRE_AUTH_CODE);
String expiresIn = hashMap.get(ModuleConstant.EXPIRES_IN);
int ex = Integer.valueOf(expiresIn) - NumConstant.SIXTY;
if (StringUtils.isNotEmpty(authCode)) {
redisThird.setPreAuthCode(authCode,ex);
if (StringUtils.isNotEmpty(preAuthCode)) {
//预授权码 存DB
PreAuthTokenFormDTO formDTO = new PreAuthTokenFormDTO();
formDTO.setPreAuthToken(preAuthCode);
formDTO.setExpiresIn(ex);
preAuthTokenDao.insertPreAuthToken(formDTO);
//预授权码 放入缓存
redisThird.setPreAuthCode(preAuthCode,ex);
} else {
throw new RuntimeException("微信开放平台,第三方平台获取【预授权码】失败");
}
@ -170,35 +205,60 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
}
/**
* @Description 使用授权码获取授权信息
* @param response
* @param authCode
* @param expiresIn
* @Description 使用授权码获取授权信息 请求参数component_access_tokencomponent_appidauthorization_code
* @author zxc
*/
@Override
public void authInfoByAuthCode(HttpServletResponse response, String authCode, String expiresIn) {
@Transactional(rollbackFor = Exception.class)
public AuthorizationInfoResultDTO authInfoByAuthCode(String authCode,String authAppId,String customerId) {
AuthorizationInfoResultDTO authorizationInfoResultDTO = new AuthorizationInfoResultDTO();
// 获取令牌【component_access_token】
String accessToken = redisThird.getComponentAccessToken(ModuleConstant.COMPONENT_ACCESS_TOKEN);
// 使用授权码获取授权信息
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.COMPONENT_APPID, PLATFORM_APP_ID);
jsonObject.put(ModuleConstant.AUTHORIZATION_CODE, authCode);
String authInfo;
try {
authInfo = HttpClientManager.getInstance().sendPostByJSON(API_QUERY_AUTH_URL + accessToken, JSON.toJSONString(jsonObject)).getData();
HashMap<String,Map> hashMap = JSON.parseObject(authInfo, HashMap.class);
Map map = hashMap.get(ModuleConstant.AUTHORIZATION_INFO);
AuthorizationInfoResultDTO authorizationInfoResultDTO = mapToEntity(map, AuthorizationInfoResultDTO.class);
redisThird.setAuthInfo(authorizationInfoResultDTO);
String authorizerRefreshToken = map.get(ModuleConstant.AUTHORIZER_REFRESH_TOKEN).toString();
redisThird.setAuthorizerRefreshToken(authorizerRefreshToken);
} catch (Exception e) {
e.printStackTrace();
String authInfo = HttpClientManager.getInstance().sendPostByJSON(ThirdApiConstant.API_QUERY_AUTH_URL + accessToken, JSON.toJSONString(jsonObject)).getData();
HashMap<String,Map> hashMap = JSON.parseObject(authInfo, HashMap.class);
Map map = hashMap.get(ModuleConstant.AUTHORIZATION_INFO);
authorizationInfoResultDTO = mapToEntity(map, AuthorizationInfoResultDTO.class);
//授权信息分为两张表,基础信息authorization_info,授权列表func_info
// 1. 基础信息
AuthorizationInfoFormDTO authInfoDTO = new AuthorizationInfoFormDTO();
authInfoDTO.setAuthorizerAppid(authorizationInfoResultDTO.getAuthorizer_appid());
authInfoDTO.setAuthorizerAccessToken(authorizationInfoResultDTO.getAuthorizer_access_token());
authInfoDTO.setAuthorizerRefreshToken(authorizationInfoResultDTO.getAuthorizer_refresh_token());
authInfoDTO.setExpiresIn(Integer.valueOf(authorizationInfoResultDTO.getExpires_in()));
authInfoDTO.setCustomerId(customerId);
authorizationInfoDao.insertAuthorizationInfo(authInfoDTO);
// 获取/刷新接口调用令牌记录表 插入
AuthorizerAccessTokenFormDTO refreshAccessToken = new AuthorizerAccessTokenFormDTO();
refreshAccessToken.setAuthAppid(authAppId);
refreshAccessToken.setCustomerId(customerId);
refreshAccessToken.setAuthorizerAccessToken(authorizationInfoResultDTO.getAuthorizer_access_token());
refreshAccessToken.setAuthorizerRefreshToken(authorizationInfoResultDTO.getAuthorizer_refresh_token());
refreshAccessToken.setExpiresIn(Integer.valueOf(authorizationInfoResultDTO.getExpires_in()));
refreshAuthorizerAccessTokenDao.insertAuthorizerAccessToken(refreshAccessToken);
// 2. 权限列表
List<FuncInfoFormDTO> funcInfos = new ArrayList<>();
List<Map> func_info = authorizationInfoResultDTO.getFunc_info();
for (Map map1 : func_info) {
List key = (List)map1.keySet();
FuncInfoFormDTO fu = new FuncInfoFormDTO();
String funcscopeCategory = key.get(NumConstant.ZERO).toString();
fu.setFuncscopeCategory(funcscopeCategory);
Map funcscope = (Map) map1.get(funcscopeCategory);
String funcscopeId = funcscope.get("id").toString();
fu.setFuncscopeId(funcscopeId);
fu.setAuthorizationInfoAppid(authorizationInfoResultDTO.getAuthorizer_appid());
fu.setCustomerId(customerId);
funcInfos.add(fu);
}
// 重定向地址
// response.sendRedirect("/wechat/authcode");
funcInfoDao.insertFuncInfo(funcInfos);
// 授权信息放入缓存
redisThird.setAuthInfo(authorizationInfoResultDTO);
//authorizer_refresh_token 放入缓存
redisThird.setAuthorizerRefreshToken(refreshAccessToken);
return authorizationInfoResultDTO;
}
/**
@ -206,19 +266,69 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
* @param
* @author zxc
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void refreshToken(String authorizerAppId) {
JSONObject jsonObject = new JSONObject();
//todo 授权方appid从哪来,每个用户的刷新token
//授权方AppId
// jsonObject.put(ModuleConstant.AUTHORIZER_APPID,authorizerAppId);
//第三方平台AppId
jsonObject.put(ModuleConstant.COMPONENT_APPID,PLATFORM_APP_ID);
jsonObject.put("",redisThird.getAuthorizerRefreshToken(""));
public void refreshToken() {
List<WillOverDueResultDTO> willOverDueResultDTOS = refreshAuthorizerAccessTokenDao.checkWillOverDue();
if (willOverDueResultDTOS.size() != NumConstant.ZERO && null != willOverDueResultDTOS){
willOverDueResultDTOS.forEach(willOverDueDTO -> {
JSONObject jsonObject = new JSONObject();
//授权方AppId
jsonObject.put(ModuleConstant.AUTHORIZER_APPID,willOverDueDTO.getAuthAppId());
//第三方平台AppId
jsonObject.put(ModuleConstant.COMPONENT_APPID,PLATFORM_APP_ID);
jsonObject.put(ModuleConstant.AUTHORIZER_REFRESH_TOKEN,willOverDueDTO.getAuthorizerRefreshToken());
String data = HttpClientManager.getInstance().sendPostByJSON(ThirdApiConstant.API_AUTHORIZER_TOKEN_URL, JSON.toJSONString(jsonObject)).getData();
Map map = JSON.parseObject(data, HashMap.class);
//authorizer_access_token
String authorizerAccessToken = map.get(ModuleConstant.AUTHORIZER_ACCESS_TOKEN).toString();
String expiresIn = map.get(ModuleConstant.EXPIRES_IN).toString();
String authorizerRefreshToken = map.get(ModuleConstant.AUTHORIZER_REFRESH_TOKEN).toString();
//更新DB
AuthorizerAccessTokenFormDTO formDTO = new AuthorizerAccessTokenFormDTO();
formDTO.setAuthorizerAccessToken(authorizerAccessToken);
formDTO.setAuthorizerRefreshToken(authorizerRefreshToken);
formDTO.setExpiresIn(Integer.valueOf(expiresIn));
formDTO.setCustomerId(willOverDueDTO.getCustomerId());
formDTO.setAuthAppid(willOverDueDTO.getAuthAppId());
refreshAuthorizerAccessTokenDao.insertAuthorizerAccessToken(formDTO);
//缓存 refreshAuthorizerAccessToken
redisThird.setAuthorizerRefreshToken(formDTO);
});
}
}
/**
* @Description 授权回调URL
* @param
* @author zxc
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void redirectUri() {
public void redirectUri(HttpServletRequest request, HttpServletResponse response, TokenDto tokenDto,String authAppId) {
String userId = tokenDto.getUserId();
String customerId = paCustomerAgencyDao.getCustomerIdByUserId(userId);
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
response.setCharacterEncoding("UTF-8");
String authCode = request.getParameter("auth_code");
String expiresIn = request.getParameter("expires_in");
//authCode存数据库
AuthCodeFormDTO formDTO = new AuthCodeFormDTO();
formDTO.setAuthCode(authCode);
formDTO.setExpiresIn(Integer.valueOf(expiresIn));
formDTO.setAuthAppId(authAppId);
formDTO.setCustomerId(customerId);
authCodeDao.insertRedirectAuthCode(formDTO);
//authCode存缓存
redisThird.setAuthCode(formDTO);
// 获取授权信息
AuthorizationInfoResultDTO authorizationInfoResultDTO = this.authInfoByAuthCode(authCode, authAppId, customerId);
}

36
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.AuthCodeDao">
<resultMap type="com.epmet.entity.AuthCodeEntity" id="authCodeMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="authAppid" column="AUTH_APPID"/>
<result property="authCode" column="AUTH_CODE"/>
<result property="expiresIn" column="EXPIRES_IN"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<insert id="insertRedirectAuthCode" parameterType="com.epmet.dto.form.AuthCodeFormDTO">
INSERT INTO auth_code ( ID, CUSTOMER_ID, AUTH_APPID, AUTH_CODE, EXPIRES_IN, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{customerId},
#{authAppId},
#{authCode},
#{expiresIn},
#{delFlag},
#{createdBy},
NOW(),
#{updatedBy},
NOW()
)
</insert>
</mapper>

39
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.AuthorizationInfoDao">
<resultMap type="com.epmet.entity.AuthorizationInfoEntity" id="authorizationInfoMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="authorizerAppid" column="AUTHORIZER_APPID"/>
<result property="authorizerAccessToken" column="AUTHORIZER_ACCESS_TOKEN"/>
<result property="expiresIn" column="EXPIRES_IN"/>
<result property="authorizerRefreshToken" column="AUTHORIZER_REFRESH_TOKEN"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 插入 授权信息 -->
<insert id="insertAuthorizationInfo" parameterType="com.epmet.dto.form.AuthorizationInfoFormDTO">
INSERT INTO authorization_info ( ID, CUSTOMER_ID, AUTHORIZER_APPID, AUTHORIZER_ACCESS_TOKEN, EXPIRES_IN, AUTHORIZER_REFRESH_TOKEN, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{customerId},
#{authorizerAppid},
#{authorizerAccessToken},
#{expiresIn},
#{authorizerRefreshToken},
#{delFlag},
#{createdBy},
NOW(),
#{updatedBy},
NOW()
)
</insert>
</mapper>

18
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizerRefreshTokenDao.xml

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.AuthorizerRefreshTokenDao">
<resultMap type="com.epmet.entity.AuthorizerRefreshTokenEntity" id="authorizerRefreshTokenMap">
<result property="id" column="ID"/>
<result property="authorizerRefreshToken" column="AUTHORIZER_REFRESH_TOKEN"/>
<result property="authorizerAppid" column="AUTHORIZER_APPID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

33
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/ComponentAccessTokenDao.xml

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.ComponentAccessTokenDao">
<resultMap type="com.epmet.entity.ComponentAccessTokenEntity" id="componentAccessTokenMap">
<result property="id" column="ID"/>
<result property="componentAccessToken" column="COMPONENT_ACCESS_TOKEN"/>
<result property="expiresIn" column="EXPIRES_IN"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<!-- 插入component_access_token信息 -->
<insert id="insertComponentAccessToken" parameterType="com.epmet.dto.form.ComponentAccessTokenFormDTO">
INSERT INTO component_access_token ( ID, COMPONENT_ACCESS_TOKEN, EXPIRES_IN, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{componentAccessToken},
#{expiresIn},
#{delFlag},
#{createdBy},
NOW(),
#{updatedBy},
NOW()
)
</insert>
</mapper>

38
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/FuncInfoDao.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.FuncInfoDao">
<resultMap type="com.epmet.entity.FuncInfoEntity" id="funcInfoMap">
<result property="id" column="ID"/>
<result property="funcscopeCategory" column="FUNCSCOPE_CATEGORY"/>
<result property="funcscopeId" column="FUNCSCOPE_ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="authorizationInfoAppid" column="AUTHORIZATION_INFO_APPID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<insert id="insertFuncInfo" parameterType="com.epmet.dto.form.FuncInfoFormDTO">
<foreach collection="funcInfoList" item="func" separator=",">
INSERT INTO func_info ( ID, FUNCSCOPE_CATEGORY, FUNCSCOPE_ID, CUSTOMER_ID, AUTHORIZATION_INFO_APPID, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{func.funcscopeCategory},
#{func.funcscopeId},
#{func.customerId}
#{func.authorizationInfoAppid},
#{func.delFlag},
#{func.createdBy},
NOW(),
#{func.updatedBy},
NOW()
)
</foreach>
</insert>
</mapper>

11
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerAgencyDao.xml

@ -3,5 +3,16 @@
<mapper namespace="com.epmet.dao.PaCustomerAgencyDao">
<!-- 根据userId查询客户Id -->
<select id="getCustomerIdByUserId" parameterType="java.lang.String" resultType="java.lang.String">
SELECT
customer_id AS customerId
FROM
pa_customer_agency pca
LEFT JOIN pa_customer_user_agency pcua ON pcua.agency_id = pca.id AND pcua.del_flag = '0'
WHERE
pca.del_flag = '0'
AND pcua.user_id = #{userId}
</select>
</mapper>

32
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PreAuthTokenDao.xml

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.PreAuthTokenDao">
<resultMap type="com.epmet.entity.PreAuthTokenEntity" id="preAuthTokenMap">
<result property="id" column="ID"/>
<result property="preAuthToken" column="PRE_AUTH_TOKEN"/>
<result property="expiresIn" column="EXPIRES_IN"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<insert id="insertPreAuthToken" parameterType="com.epmet.dto.form.PreAuthTokenFormDTO">
INSERT INTO pre_auth_token ( ID, PRE_AUTH_TOKEN, EXPIRES_IN, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{preAuthToken},
#{expiresIn},
#{delFlag},
#{createdBy},
NOW(),
#{updatedBy},
NOW()
)
</insert>
</mapper>

52
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/RefreshAuthorizerAccessTokenDao.xml

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.RefreshAuthorizerAccessTokenDao">
<resultMap type="com.epmet.entity.RefreshAuthorizerAccessTokenEntity" id="refreshAuthorizerAccessTokenMap">
<result property="id" column="ID"/>
<result property="authorizerAccessToken" column="AUTHORIZER_ACCESS_TOKEN"/>
<result property="expiresIn" column="EXPIRES_IN"/>
<result property="authorizerRefreshToken" column="AUTHORIZER_REFRESH_TOKEN"/>
<result property="authAppid" column="AUTH_APPID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="checkWillOverDue" resultType="com.epmet.dto.result.WillOverDueResultDTO">
SELECT
authorizer_access_token AS authorizerAccessToken,
authorizer_refresh_token AS authorizerRefreshToken,
auth_appid AS authAppId,
customer_id AS customerId
FROM
refresh_authorizer_access_token
WHERE
( UNIX_TIMESTAMP( CREATED_TIME ) + EXPIRES_IN ) - UNIX_TIMESTAMP(NOW()) <![CDATA[ <= ]]> 10
AND ( UNIX_TIMESTAMP( CREATED_TIME ) + EXPIRES_IN ) - UNIX_TIMESTAMP( NOW()) > 0
AND del_flag = 0
</select>
<insert id="insertAuthorizerAccessToken" parameterType="com.epmet.dto.form.AuthorizerAccessTokenFormDTO">
INSERT INTO refresh_authorizer_access_token ( ID, AUTHORIZER_ACCESS_TOKEN, EXPIRES_IN, AUTHORIZER_REFRESH_TOKEN, AUTH_APPID, CUSTOMER_ID, DEL_FLAG, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME )
VALUES
(
REPLACE ( UUID(), '-', '' ),
#{authorizerAccessToken},
#{expiresIn},
#{authorizerRefreshToken},
#{authAppid},
#{customerId},
#{delFlag},
#{createdBy},
NOW(),
#{updatedBy},
NOW()
)
</insert>
</mapper>
Loading…
Cancel
Save