Browse Source

Merge branches 'dev' and 'dev_heart' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_heart

master
yinzuomei 5 years ago
parent
commit
5fa3313aa6
  1. 2
      epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java
  2. 2
      epmet-gateway/deploy/docker-compose-dev.yml
  3. 2
      epmet-gateway/pom.xml
  4. 6
      epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java
  5. 30
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java
  6. 44
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RegisterByAuthFormDTO.java
  7. 2
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/AuthorizationInfoResultDTO.java
  8. 26
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/RegisterByAuthResultDTO.java
  9. 2
      epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml
  10. 2
      epmet-module/epmet-third/epmet-third-server/pom.xml
  11. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ThirdRedisKeyConstant.java
  12. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java
  13. 18
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java
  14. 7
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/AuthCodeDao.java
  15. 11
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java
  16. 17
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/redis/RedisThird.java
  17. 6
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/ComponentVerifyTicketService.java
  18. 14
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java
  19. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java
  20. 51
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java
  21. 30
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java
  22. 7
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java
  23. 12
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthCodeDao.xml
  24. 2
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/AuthorizationInfoDao.xml
  25. 2
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml
  26. 21
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml
  27. 2
      epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml
  28. 2
      epmet-module/oper-crm/oper-crm-server/pom.xml
  29. 14
      epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java
  30. 20
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

2
epmet-auth/src/main/java/com/epmet/service/impl/ThirdLoginServiceImpl.java

@ -74,6 +74,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
resiLoginFormDTO.setWxCode(formDTO.getWxCode());
Result<UserWechatDTO> result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO);
if (!result.success()) {
logger.error("居民端小程序登陆,调用epmet_third服务获取数据失败");
throw new RenException(result.getCode());
}
UserWechatDTO userWechatDTO = result.getData();
@ -149,6 +150,7 @@ public class ThirdLoginServiceImpl implements ThirdLoginService {
resiLoginFormDTO.setWxCode(formDTO.getWxCode());
Result<UserWechatDTO> result = epmetThirdFeignClient.resiAndWorkLogin(resiLoginFormDTO);
if (!result.success()) {
logger.error("工作端小程序登陆,调用epmet_third服务获取数据失败");
throw new RenException(result.getCode());
}
UserWechatDTO userWechatDTO = result.getData();

2
epmet-gateway/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-gateway-server:
container_name: epmet-gateway-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.26
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-gateway:0.3.27
ports:
- "8080:8080"
network_mode: host # 使用现有网络

2
epmet-gateway/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.26</version>
<version>0.3.27</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>epmet-cloud</artifactId>

6
epmet-gateway/src/main/java/com/epmet/filter/CpAuthGatewayFilterFactory.java

@ -134,8 +134,10 @@ public class CpAuthGatewayFilterFactory extends AbstractGatewayFilterFactory<CpA
.header(AppClientConstant.CLIENT,baseTokenDto.getClient())
.header(AppClientConstant.USER_ID,baseTokenDto.getUserId())
;
if(StringUtils.equals(baseTokenDto.getApp(),"gov")){
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID,customerId);
if (StringUtils.equals(baseTokenDto.getApp(), "gov")) {//工作端
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID, customerId);
} else if (StringUtils.equals(baseTokenDto.getApp(), "public")) {//公众号端
exchange.getRequest().mutate().header(AppClientConstant.CUSTOMER_ID, customerId);
}
ServerHttpRequest build = exchange.getRequest().mutate().build();
return chain.filter(exchange.mutate().request(build).build());

30
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/AuthCodeAndTimeFromDTO.java

@ -0,0 +1,30 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @Author zxc
* @CreateTime 2020/7/21 14:36
*/
@Data
public class AuthCodeAndTimeFromDTO implements Serializable {
private static final long serialVersionUID = 7149257227563083044L;
/**
* 授权码 auth_code
*/
private String authCode;
/**
* 过期时间
*/
private String expiresIn;
/**
* 客户端类型 resi居民端work工作端
*/
private String clientType;
}

44
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/RegisterByAuthFormDTO.java

@ -0,0 +1,44 @@
package com.epmet.dto.form;
import lombok.Data;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Author sun
* @Description 运营端-根据授权状态和初始化状态获取客户列表不分页-接口入参
*/
@Data
public class RegisterByAuthFormDTO implements Serializable {
private static final long serialVersionUID = -6547893374373422628L;
public interface AddUserInternalGroup {
}
/**
* 居民端是否授权(0未授权1已授权)
* */
@NotNull(message = "居民端是否授权不能为空", groups = { AddUserInternalGroup.class })
private Integer resiAuth;
/**
* 工作端是否授权(0未授权1已授权)
* */
@NotNull(message = "工作端是否授权不能为空", groups = { AddUserInternalGroup.class })
private Integer workAuth;
/**
* 初始化状态0:已初始化1:未初始化
* */
@NotNull(message = "初始化状态不能为空", groups = { AddUserInternalGroup.class })
private Integer initState;
/**
* 所属端 resi:居民端 work:工作端
*/
private String client;
}

2
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/AuthorizationInfoResultDTO.java

@ -29,7 +29,7 @@ public class AuthorizationInfoResultDTO implements Serializable {
/**
* authorizer_access_token 的有效期在授权的公众号/小程序具备API权限时才有此返回值单位
*/
private String expires_in;
private Integer expires_in;
/**
* 刷新令牌在授权的公众号具备API权限时才有此返回值刷新令牌主要用于第三方平台获取和刷新已授权用户的 authorizer_access_token

26
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/RegisterByAuthResultDTO.java

@ -0,0 +1,26 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Author sun
* @Description 运营端-根据授权状态和初始化状态获取客户列表不分页-接口返参
*/
@Data
public class RegisterByAuthResultDTO implements Serializable {
private static final long serialVersionUID = 4642988014737245076L;
/**
* 客户Id
*/
private String customerId;
/**
* 客户名称
*/
private String customerName;
}

2
epmet-module/epmet-third/epmet-third-server/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
epmet-third-server:
container_name: epmet-third-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.27
image: 192.168.1.130:10080/epmet-cloud-dev/epmet-third-server:0.0.39
ports:
- "8110:8110"
network_mode: host # 使用现有网络

2
epmet-module/epmet-third/epmet-third-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.0.27</version>
<version>0.0.39</version>
<parent>
<groupId>com.epmet</groupId>

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

@ -34,7 +34,7 @@ public interface ThirdRedisKeyConstant {
/**
* 第三方 授权方交互使用的
*/
String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken";
String AUTHORIZER_REFRESH_TOKEN_REDIS_KEY = "epmet:wechartthird:authorizerrefreshtoken:";
/**
* auth_code 授权码

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/AuthRedirectController.java

@ -1,12 +1,12 @@
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.dto.form.AuthCodeAndTimeFromDTO;
import com.epmet.service.ComponentVerifyTicketService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -28,9 +28,9 @@ public class AuthRedirectController {
* @param
* @author zxc
*/
@GetMapping("redirect/{customerId}/{clientType}")
public Result redirectUri(HttpServletRequest request, HttpServletResponse response, @PathVariable("customerId")String customerId, @PathVariable("clientType")String clientType) throws IOException {
componentVerifyTicketService.redirectUri(request,response,customerId,clientType);
@PostMapping("redirect")
public Result redirectUri(@LoginUser TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO){
componentVerifyTicketService.redirectUri(tokenDto,fromDTO);
return new Result();
}

18
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/PaCustomerController.java

@ -7,12 +7,10 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.dto.form.CreateAgencyFormDTO;
import com.epmet.dto.form.RegisterByAuthFormDTO;
import com.epmet.dto.form.RegisterFormDTO;
import com.epmet.dto.form.RegisterInfoFormDTO;
import com.epmet.dto.result.AgencyLevelListResultDTO;
import com.epmet.dto.result.CreateAgencyResultDTO;
import com.epmet.dto.result.InitCustomerResultDTO;
import com.epmet.dto.result.MyInfoResultDTO;
import com.epmet.dto.result.*;
import com.epmet.service.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -122,4 +120,16 @@ public class PaCustomerController {
return new Result();
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 根据授权状态和初始化状态获取客户列表不分页
**/
@PostMapping(value = "registerbyauth")
public Result<List<RegisterByAuthResultDTO>> registerByAuth(@LoginUser TokenDto tokenDTO, @RequestBody RegisterByAuthFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, RegisterByAuthFormDTO.AddUserInternalGroup.class);
return new Result<List<RegisterByAuthResultDTO>>().ok( paCustomerService.registerByAuth(formDTO));
}
}

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

@ -56,4 +56,11 @@ public interface AuthCodeDao extends BaseDao<AuthCodeEntity> {
*/
void updateAppId(@Param("customerId")String customerId,@Param("clientType")String clientType,@Param("authAppId")String authAppId);
/**
* @Description 逻辑删除客户下的授权码,保持一个授权码有用
* @param customerId
* @param clientType
* @author zxc
*/
void deleteCustomerAuthCode(@Param("customerId")String customerId,@Param("clientType")String clientType);
}

11
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/PaCustomerDao.java

@ -19,7 +19,9 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.form.RegisterByAuthFormDTO;
import com.epmet.dto.result.CustomerAgencyResultDTO;
import com.epmet.dto.result.RegisterByAuthResultDTO;
import com.epmet.entity.PaCustomerEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -58,4 +60,13 @@ public interface PaCustomerDao extends BaseDao<PaCustomerEntity> {
* @Description 修改客户数据状态为已完成初始化
**/
int updateCustomerById(PaCustomerDTO dto);
/**
* @param formDTO
* @return
* @Author sun
* @Description 根据所属端授权状态初始化状态查询客户列表数据
**/
List<RegisterByAuthResultDTO> selectCustomerList(RegisterByAuthFormDTO formDTO);
}

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

@ -1,5 +1,6 @@
package com.epmet.redis;
import cn.hutool.core.bean.BeanUtil;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.constant.ThirdRedisKeyConstant;
import com.epmet.dto.form.AuthCodeFormDTO;
@ -10,6 +11,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.Map;
import static com.epmet.commons.tools.redis.RedisUtils.NOT_EXPIRE;
/**
* @Author zxc
* @CreateTime 2020/7/7 9:33
@ -74,17 +79,19 @@ public class RedisThird {
* @author zxc
*/
public void setAuthorizerRefreshToken(AuthorizationInfoFormDTO authInfoDTO){
String key = ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + ThirdRedisKeyConstant.COLON + authInfoDTO.getCustomerId()+ThirdRedisKeyConstant.COLON+authInfoDTO.getClientType();
redisUtils.set(key,authInfoDTO,-1);
Map<String, Object> map = BeanUtil.beanToMap(authInfoDTO, false, true);
String key = ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + authInfoDTO.getCustomerId()+ThirdRedisKeyConstant.COLON+authInfoDTO.getClientType();
redisUtils.hMSet(key, map,NOT_EXPIRE);
}
/**
* @Description 获取刷新
* @param key = epmet:wechartthird:authorizerrefreshtoken:customerId:clientType 前缀+客户ID+客户端类型
* @param key = epmet:wechartthird:authorizerrefreshtoken:custome rId:clientType 前缀+客户ID+客户端类型
* @author zxc
*/
public String getAuthorizerRefreshToken(String key){
return redisTemplate.opsForValue().get(ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY+key).toString();
public Map<String,Object> getAuthorizerRefreshToken(String key){
Map<String, Object> result = redisUtils.hGetAll(ThirdRedisKeyConstant.AUTHORIZER_REFRESH_TOKEN_REDIS_KEY + key);
return result;
}
/**

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

@ -1,5 +1,9 @@
package com.epmet.service;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.form.AuthCodeAndTimeFromDTO;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@ -42,6 +46,6 @@ public interface ComponentVerifyTicketService {
* @param
* @author zxc
*/
void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String clientType) throws IOException;
void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO fromDTO);
}

14
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/PaCustomerService.java

@ -22,12 +22,10 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.form.CreateAgencyFormDTO;
import com.epmet.dto.form.RegisterByAuthFormDTO;
import com.epmet.dto.form.RegisterFormDTO;
import com.epmet.dto.form.RegisterInfoFormDTO;
import com.epmet.dto.result.AgencyLevelListResultDTO;
import com.epmet.dto.result.CreateAgencyResultDTO;
import com.epmet.dto.result.InitCustomerResultDTO;
import com.epmet.dto.result.MyInfoResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.PaCustomerEntity;
import java.util.List;
@ -155,4 +153,12 @@ public interface PaCustomerService extends BaseService<PaCustomerEntity> {
* @Description 修改客户数据状态为已完成初始化
**/
void updateCustomer(String customerId);
/**
* @param formDTO
* @return
* @Author sun
* @Description 根据授权状态和初始化状态获取客户列表不分页
**/
List<RegisterByAuthResultDTO> registerByAuth(RegisterByAuthFormDTO formDTO);
}

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/AppLetAuthorizationServiceImpl.java

@ -39,7 +39,7 @@ public class AppLetAuthorizationServiceImpl implements AppLetAuthorizationServic
String customerId = paCustomerAgencyDao.getCustomerIdByUserId(userId);
//获取预授权码
String preAuthCode = componentVerifyTicketService.preAuthCode();
String redirectUrl = String.format(WxMaCodeConstant.API_RETURN_REDIRECT_URL, customerId,formDTO.getClientType());
String redirectUrl = WxMaCodeConstant.WEB_URL + formDTO.getClientType();
String authUrl = String.format(WxMaCodeConstant.API_AUTH_REGISTER_URL, componentAppId, preAuthCode, redirectUrl);
result.setUrl(authUrl);
return result;

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

@ -5,6 +5,7 @@ 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.constant.ThirdRedisKeyConstant;
@ -27,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@ -137,13 +139,16 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
break;
case ModuleConstant.AUTHORIZED: //授权成功
// 更改customer_mp 授权信息,appId,并绑定
String authAppId = result.get(ModuleConstant.APP_ID);
// String authAppId = result.get(ModuleConstant.APP_ID);
String authCode = result.get(ModuleConstant.AUTHORIZATION_CODE_HUMP);
log.info("=============================="+authCode);
AuthCodeResultDTO authCodeResultDTO = authCodeDao.selectCustomerIdByAuthCode(authCode);
String clientType = authCodeResultDTO.getClientType();
String customerId = authCodeResultDTO.getCustomerId();
Map<String, Object> authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType);
String authAppId = authorizerRefreshToken.get("authorizerAppid").toString();
this.updateCustomerMpAppIdAndCreateOpenPlatform(customerId,authAppId,clientType);
this.authInfoByAuthCode(authCode, customerId,clientType);
// this.authInfoByAuthCode(authCode, customerId,clientType);
authCodeDao.updateAppId(customerId,clientType,authAppId);
this.saveAuthAccountInfo(customerId,authAppId,clientType);
// customerMpDao.updateAuthorizationFlag(authAppId);
@ -267,7 +272,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
authorizationInfoResultDTO = mapToEntity(map, AuthorizationInfoResultDTO.class);
String authAppId = authorizationInfoResultDTO.getAuthorizer_appid();
log.info("授权信息:"+map);
String expiresIn = authorizationInfoResultDTO.getExpires_in();
String expiresIn = authorizationInfoResultDTO.getExpires_in().toString();
Date expiresInTime = this.countExpirationTime(expiresIn);
//授权信息分为两张表,基础信息authorization_info,授权列表func_info
// 1. 基础信息
@ -286,7 +291,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
List<FuncInfoFormDTO> funcInfos = new ArrayList<>();
List<Map> func_info = authorizationInfoResultDTO.getFunc_info();
log.info("权限列表信息:"+func_info);
func_info.forEach(func -> {
/*func_info.forEach(func -> {
func.forEach((key,value) -> {
FuncInfoFormDTO fu = new FuncInfoFormDTO();
fu.setFuncscopeCategory((String) key);
@ -296,10 +301,10 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
fu.setCustomerId(customerId);
funcInfos.add(fu);
});
});
//先逻辑删除,在插入
funcInfoDao.updateOldFuncInfo(customerId,authAppId);
funcInfoDao.insertFuncInfo(funcInfos);
});*/
// todo 先逻辑删除,在插入
/*funcInfoDao.updateOldFuncInfo(customerId,authAppId);
funcInfoDao.insertFuncInfo(funcInfos);*/
// 授权信息放入缓存
redisThird.setAuthInfo(authorizationInfoResultDTO,customerId,clientType);
//authorizer_refresh_token 放入缓存
@ -367,38 +372,31 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void redirectUri(HttpServletRequest request, HttpServletResponse response,String customerId, String client) throws IOException{
public void redirectUri(TokenDto tokenDto, @RequestBody AuthCodeAndTimeFromDTO authCodeAndTime){
log.info("开始执行回调URL");
try {
request.setCharacterEncoding(ModuleConstant.UTF8);
response.setCharacterEncoding(ModuleConstant.UTF8);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
/*String customerId = request.getParameter(ModuleConstant.CUSTOMER_ID);
String client = request.getParameter(ModuleConstant.CLIENT);*/
String authCode = request.getParameter(ModuleConstant.AUTH_CODE);
String expiresIn = request.getParameter(ModuleConstant.EXPIRES_IN);
String authCode = authCodeAndTime.getAuthCode();
String client = authCodeAndTime.getClientType();
String expiresIn = authCodeAndTime.getExpiresIn();
String customerId = tokenDto.getCustomerId();
customerId = "f530774b31e0609a3c7f0f83794cda0c";
Date expiresInTime = this.countExpirationTime(expiresIn);
if (StringUtils.isBlank(customerId)||StringUtils.isBlank(client)||StringUtils.isBlank(authCode)||StringUtils.isBlank(expiresIn)){
log.info("客户ID = "+customerId+", 客户端类型为 = "+client+", 授权码为 = "+authCode+", 有效期 = "+expiresIn);
}
// AuthorizationInfoResultDTO authorizationInfo = this.authInfoByAuthCode(authCode, customerId,client);
//authCode存数据库
AuthCodeFormDTO formDTO = new AuthCodeFormDTO();
formDTO.setAuthCode(authCode);
formDTO.setExpiresInTime(expiresInTime);
formDTO.setClientType(client);
//授权方AppId
// formDTO.setAuthAppId(authorizationInfo.getAuthorizer_appid());
formDTO.setCustomerId(customerId);
log.info(formDTO.toString());
// this.updateCustomerMpAppIdAndCreateOpenPlatform(customerId,authorizationInfo.getAuthorizer_appid(),client);
authCodeDao.deleteCustomerAuthCode(customerId,client);
authCodeDao.insertRedirectAuthCode(formDTO);
//authCode存缓存
redisThird.setAuthCode(formDTO);
this.authInfoByAuthCode(authCode, customerId,client);
log.info("回调结束");
response.sendRedirect(WxMaCodeConstant.WEB_URL);
}
/**
@ -504,14 +502,15 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
log.info("开始创建开放平台账号并绑定");
Integer authCount = customerMpDao.selectAuthCount(customerId);
String openPlatformId = null;
String authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType);
Map<String, Object> authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType);
String authorizerAccessToken = authorizerRefreshToken.get("authorizerAccessToken").toString();
if (authCount==NumConstant.ZERO){
log.info("未查询到该客户授权信息,先创建开放平台账号,再绑定");
//没有任何一个小程序/公众号授权,【先创建,再绑定】
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.APP_ID,authAppId);
jsonObject.put(ModuleConstant.LOW_APP_ID,authAppId);
// 此处的 access_token 为 【authorizer_access_token】
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN + authorizerRefreshToken, JSON.toJSONString(jsonObject)).getData();
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN + authorizerAccessToken, JSON.toJSONString(jsonObject)).getData();
Map<String,String> map = JSON.parseObject(data, Map.class);
CreateOpenResultDTO createOpen = new CreateOpenResultDTO();
createOpen.setErrCode(Integer.valueOf(map.get(ModuleConstant.ERR_CODE)));

30
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java

@ -35,6 +35,7 @@ import com.epmet.constant.PaConstant;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.CreateAgencyFormDTO;
import com.epmet.dto.form.RegisterByAuthFormDTO;
import com.epmet.dto.form.RegisterFormDTO;
import com.epmet.dto.form.RegisterInfoFormDTO;
import com.epmet.dto.result.*;
@ -432,4 +433,33 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
}
}
/**
* @param formDTO
* @return
* @Author sun
* @Description 根据授权状态和初始化状态获取客户列表不分页
**/
@Override
public List<RegisterByAuthResultDTO> registerByAuth(RegisterByAuthFormDTO formDTO) {
List<RegisterByAuthResultDTO> resultList = new ArrayList<>();
//1.根据是否初始化和居民端授权状态查询客户列表信息
formDTO.setClient(PaConstant.CLIENT_RESI);
List<RegisterByAuthResultDTO> list1 = baseDao.selectCustomerList(formDTO);
//2.根据是否初始化和工作端授权状态查询客户列表信息
formDTO.setClient(PaConstant.CLIENT_WORK);
List<RegisterByAuthResultDTO> list2 = baseDao.selectCustomerList(formDTO);
//3.取交集数据
list1.forEach(dto->{
list2.forEach(cu->{
if(dto.getCustomerId().equals(cu.getCustomerId())){
resultList.add(dto);
}
});
});
return resultList;
}
}

7
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java

@ -16,7 +16,7 @@ public interface WxMaCodeConstant {
/**
* 使用授权码获取授权信息请求地址
*/
String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth";
String API_QUERY_AUTH_URL = "https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=";
/**
* 获取令牌请求地址
@ -33,7 +33,7 @@ public interface WxMaCodeConstant {
/**
* 前端地址 授权之后的跳转的地址
*/
String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/info";
String WEB_URL = "https://epmet-cloud.elinkservice.cn/third/mpweb/page/#/info?clientType=";
/**
* 授权注册页面扫码授权
@ -41,7 +41,8 @@ public interface WxMaCodeConstant {
* pre_auth_code预授权码
* redirect_uri回调url获取授权码
*/
String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s";
// String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/cgi-bin/componentloginpage?component_appid=%s&pre_auth_code=%s&redirect_uri=%s";
String API_AUTH_REGISTER_URL = "https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&auth_type=3&no_scan=1&component_appid=%s&pre_auth_code=%s&redirect_uri=%s#wechat_redirect";
/**
* 创建开放平台帐号并绑定公众号/小程序

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

@ -9,7 +9,7 @@
(
REPLACE ( UUID(), '-', '' ),
#{customerId},
#{clientType}
#{clientType},
#{authCode},
#{expiresInTime},
#{delFlag},
@ -42,4 +42,14 @@
AND auth_code = #{authCode}
</select>
<!-- 逻辑删除客户下的授权码,保持一个授权码有用 -->
<update id="deleteCustomerAuthCode">
UPDATE auth_code
SET del_flag = 1
where
del_flag = 0
AND customer_id = #{customerId}
AND client_type = #{clientType}
</update>
</mapper>

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

@ -14,7 +14,7 @@
#{authorizerAccessToken},
#{expiresInTime},
#{authorizerRefreshToken},
#{clientType}
#{clientType},
#{delFlag},
#{createdBy},
NOW(),

2
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml

@ -27,7 +27,7 @@
WHERE
del_flag = '0'
AND customer_id = #{customerId}
AND authorization_flag = 0
AND authorization_flag = 1
</select>
<!-- 回填customer_mp的appId -->

21
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaCustomerDao.xml

@ -56,6 +56,27 @@
pca.CREATED_TIME DESC
</select>
<select id="selectCustomerList" resultType="com.epmet.dto.result.RegisterByAuthResultDTO">
SELECT
pc.id AS "customerId",
pc.customer_name AS "customerName"
FROM
pa_customer pc
INNER JOIN customer_mp cm ON pc.id = cm.customer_id
WHERE
pc.del_flag = '0'
AND cm.del_flag = '0'
AND pc.is_initialize = #{initState}
<if test='null != client and "" != client and "resi" == client'>
AND cm.client = #{client}
AND cm.AUTHORIZATION_FLAG = #{resiAuth}
</if>
<if test='null != client and "" != client and "work" == client'>
AND cm.client = #{client}
AND cm.AUTHORIZATION_FLAG = #{workAuth}
</if>
</select>
<update id="updateCustomerById">
UPDATE pa_customer
SET is_initialize = #{isInitialize}

2
epmet-module/oper-crm/oper-crm-server/deploy/docker-compose-dev.yml

@ -2,7 +2,7 @@ version: "3.7"
services:
oper-crm-server:
container_name: oper-crm-server-dev
image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.26
image: 192.168.1.130:10080/epmet-cloud-dev/oper-crm-server:0.3.28
ports:
- "8090:8090"
network_mode: host # 使用现有网络

2
epmet-module/oper-crm/oper-crm-server/pom.xml

@ -2,7 +2,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<version>0.3.26</version>
<version>0.3.28</version>
<parent>
<groupId>com.epmet</groupId>
<artifactId>oper-crm</artifactId>

14
epmet-module/oper-crm/oper-crm-server/src/main/java/com/epmet/service/impl/CustomerServiceImpl.java

@ -423,7 +423,19 @@ public class CustomerServiceImpl extends BaseServiceImpl<CustomerDao, CustomerEn
customerEntity.setOrganizationNumber("");
customerEntity.setOrganizationImg("");
customerEntity.setValidityTime(getValidityTime());
customerEntity.setOrganizationLevel(paAgency.getLevelNum());
String level = "5";
if("province".equals(paAgency.getLevel())){
level = "0";
}else if("city".equals(paAgency.getLevel())){
level = "1";
}else if("district".equals(paAgency.getLevel())){
level = "2";
}else if("street".equals(paAgency.getLevel())){
level = "3";
}else if("community".equals(paAgency.getLevel())){
level = "4";
}
customerEntity.setOrganizationLevel(level);
customerEntity.setLogo("");
if (baseDao.insert(customerEntity) < NumConstant.ONE) {
throw new RenException(EpmetErrorCode.OPER_ADD_CUSTOMER_ERROR.getCode());

20
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/UserServiceImpl.java

@ -199,24 +199,32 @@ public class UserServiceImpl extends BaseServiceImpl<UserDao, UserEntity> implem
UserDTO userDTO = userWechatDao.selectUserDTOByOpenId(dto);
UserWechatEntity userWechatEntity = ConvertUtils.sourceToTarget(wechatDTO, UserWechatEntity.class);
if ("".equals(userWechatEntity.getUnionId())) {
userWechatEntity.setUnionId(null);
}
//2.不存在则新增,存在则更新
if(null==userDTO||null==userDTO.getId()){
if (null == userDTO || null == userDTO.getId()) {
//user表新增
UserEntity userEntity = new UserEntity();
userEntity.setFromApp(UserConstant.APP_RESI);
userEntity.setFromClient(UserConstant.CLIENT_WX);
if(baseDao.insert(userEntity)< NumConstant.ONE){
if (baseDao.insert(userEntity) < NumConstant.ONE) {
log.error("小程序登陆,居民端user表新增数据失败");
throw new RenException(UserConstant.SAVE_USER);
}
//user_wechat表新增
userWechatEntity.setUserId(userEntity.getId());
if(userWechatDao.insert(userWechatEntity)< NumConstant.ONE){
if (userWechatDao.insert(userWechatEntity) < NumConstant.ONE) {
log.error("小程序登陆,居民端user_wechat表新增数据失败");
throw new RenException(UserConstant.SAVE_USER_WECHAT);
}
resultDTO.setId(userEntity.getId());
}else {
wechatDTO.setId(userDTO.getId());
if(userWechatDao.updateByUserId(wechatDTO)< NumConstant.ONE){
} else {
wechatDTO.setUserId(userDTO.getId());
wechatDTO.setUpdatedBy(userDTO.getId());
wechatDTO.setUpdatedTime(new Date());
if (userWechatDao.updateByUserId(wechatDTO) < NumConstant.ONE) {
log.error("小程序登陆,居民端user_wechat表更新数据失败");
throw new RenException(UserConstant.UPDATE_USER_WECHAT);
}
resultDTO.setId(userDTO.getId());

Loading…
Cancel
Save