Browse Source

Merge remote-tracking branch 'origin/dev_thirdplatform' into dev

master
zxc 5 years ago
parent
commit
81dc683e61
  1. 33
      epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java
  2. 18
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeAuditRecordFormDTO.java
  3. 14
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/MiniInfoFormDTO.java
  4. 14
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PaInfoFormDTO.java
  5. 4
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java
  6. 5
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java
  7. 22
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PublicCustomerResultDTO.java
  8. 12
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java
  9. 6
      epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java
  10. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/ModuleConstant.java
  11. 4
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java
  12. 12
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CustomerMpController.java
  13. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java
  14. 9
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java
  15. 65
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/exception/AesException.java
  16. 9
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CustomerMpService.java
  17. 3
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java
  18. 41
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/ComponentVerifyTicketServiceImpl.java
  19. 22
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CustomerMpServiceImpl.java
  20. 2
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaCustomerServiceImpl.java
  21. 11
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java
  22. 16
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/WarrantServiceImpl.java
  23. 8
      epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/wxapi/constant/WxMaCodeConstant.java
  24. 18
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CodeAuditRecordDao.xml
  25. 14
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/CustomerMpDao.xml
  26. 14
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/MiniInfoDao.xml
  27. 14
      epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaInfoDao.xml
  28. 6
      epmet-module/resi-guide/resi-guide-client/src/main/java/com/epmet/dto/form/PublicCustomerGridListFormDTO.java
  29. 6
      epmet-module/resi-guide/resi-guide-server/pom.xml
  30. 15
      epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java

33
epmet-auth/src/main/java/com/epmet/service/impl/PublicUserLoginServiceImpl.java

@ -12,6 +12,7 @@ import com.epmet.constant.PublicUserLoginConstant;
import com.epmet.constant.SmsTemplateConstant;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO;
import com.epmet.dto.PaUserWechatDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CustomerUserResultDTO;
import com.epmet.dto.result.SaveUserResultDTO;
@ -77,7 +78,9 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
//3.获取用户token
String token = this.generateGovWxmpToken(resultDTO.getUserId());
//4.保存到redis
this.saveLatestGovTokenDto(resultDTO, wxMpUser, token);
String openid = wxMpUser.getOpenId();
String unionId = (null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId());
this.saveLatestGovTokenDto("", resultDTO.getUserId(), openid, unionId, token);
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
@ -118,17 +121,17 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
}
//保存tokenDto到redis
private void saveLatestGovTokenDto(SaveUserResultDTO resultDTO, WxMpUser wxMpUser, String token) {
private void saveLatestGovTokenDto(String customerId, String userId, String openId, String unionId, String token) {
TokenDto tokenDTO = new TokenDto();
int expire = jwtTokenProperties.getExpire();
tokenDTO.setApp(LoginConstant.APP_PUBLIC);
tokenDTO.setClient(LoginConstant.CLIENT_MP);
tokenDTO.setOpenId(wxMpUser.getOpenId());
tokenDTO.setUnionId(null == wxMpUser.getUnionId() ? "" : wxMpUser.getUnionId());
tokenDTO.setOpenId(openId);
tokenDTO.setUnionId(unionId);
tokenDTO.setToken(token);
//首次初始化时还没有客户
tokenDTO.setCustomerId("");
tokenDTO.setUserId(resultDTO.getUserId());
tokenDTO.setCustomerId(customerId);
tokenDTO.setUserId(userId);
tokenDTO.setExpireTime(jwtTokenUtils.getExpiration(token).getTime());
tokenDTO.setUpdateTime(System.currentTimeMillis());
cpUserDetailRedis.set(tokenDTO, expire);
@ -206,19 +209,27 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
logger.error(String.format("验证码错误code[%s],msg[%s]", EpmetErrorCode.MOBILE_CODE_ERROR.getCode(), EpmetErrorCode.MOBILE_CODE_ERROR.getMsg()));
throw new RenException(EpmetErrorCode.MOBILE_CODE_ERROR.getCode());
}
//获取缓存中的token
TokenDto redisTokenDTO = cpUserDetailRedis.get(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, userDTO.getId(), TokenDto.class);
if (redisTokenDTO == null) {
return null;
}
//4.判断是否存在客户信息,是否需要生成新的token
//4.直接生成一个新的token放入缓存中(不管缓存中是否存在旧的token,都重新生成)
//4-1.生成token
String token = this.generateGovWxmpToken(userDTO.getId());
//4-2.判断是否存在信息,给customerId赋值
PaCustomerDTO customerDTO = resultDTO.getPaCustomerResult();
String customerId = "";
if (null != customerDTO && !StringUtils.isBlank(customerDTO.getId())) {
redisTokenDTO.setCustomerId(customerDTO.getId());
int expire = jwtTokenProperties.getExpire();
cpUserDetailRedis.set(redisTokenDTO, expire);
customerId = customerDTO.getId();
}
//4-3.token存入redis
PaUserWechatDTO wechatDTO = resultDTO.getPaUserWechatResult();
String openid = wechatDTO.getWxOpenId();
String unionId = (null == wechatDTO.getUnionId() ? "" : wechatDTO.getUnionId());
this.saveLatestGovTokenDto(customerId, userDTO.getId(), openid, unionId, token);
//5.登陆成功,访问记录表新增访问记录(访问记录新增失败不应影响用户登陆)
SaveUserVisitedFormDTO visited = new SaveUserVisitedFormDTO();
@ -232,7 +243,7 @@ public class PublicUserLoginServiceImpl implements PublicUserLoginService {
//6.返回token
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO();
userTokenResultDTO.setToken(redisTokenDTO.getToken());
userTokenResultDTO.setToken(token);
return userTokenResultDTO;
}

18
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/CodeAuditRecordFormDTO.java

@ -42,12 +42,12 @@ public class CodeAuditRecordFormDTO implements Serializable {
/**
* 小程序的原始 ID
*/
private String toUserName;
private String ToUserName;
/**
* 发送方帐号一个 OpenID此时发送方是系统帐号
*/
private String fromUserName;
private String FromUserName;
/**
* 消息创建时间 整型时间戳
@ -57,7 +57,7 @@ public class CodeAuditRecordFormDTO implements Serializable {
/**
* 消息类型 event
*/
private String msgType;
private String MsgType;
/**
* 事件类型
@ -65,32 +65,32 @@ public class CodeAuditRecordFormDTO implements Serializable {
weapp_audit_fail审核不通过
weapp_audit_delay审核延后
*/
private String event;
private String Event;
/**
* 审核成功时的时间戳
*/
private Date succTime;
private Date SuccTime;
/**
* 审核不通过的时间戳
*/
private Date failTime;
private Date FailTime;
/**
* 审核延后时的时间戳
*/
private Date delayTime;
private Date DelayTime;
/**
* 审核不通过的原因
*/
private String reason;
private String Reason;
/**
* 审核不通过的截图示例 | 分隔的 media_id 的列表可通过获取永久素材接口拉取截图内容
*/
private String screenShot;
private String ScreenShot;
/**
* 删除状态

14
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/MiniInfoFormDTO.java

@ -28,32 +28,32 @@ public class MiniInfoFormDTO implements Serializable {
/**
* 昵称
*/
private String nickName;
private String nick_name;
/**
* 头像
*/
private String headImg;
private String head_img;
/**
* 小程序类型 默认为 0
*/
private String serviceTypeInfo;
private String service_type_info;
/**
* 小程序认证类型 小程序认证类型
*/
private String verifyTypeInfo;
private String verify_type_info;
/**
* 原始 ID
*/
private String userName;
private String user_name;
/**
* 主体名称
*/
private String principalName;
private String principal_name;
/**
* 账号介绍
@ -63,7 +63,7 @@ public class MiniInfoFormDTO implements Serializable {
/**
* 二维码图片的 URL
*/
private String qrcodeUrl;
private String qrcode_url;
private Integer delFlag = 0;

14
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/form/PaInfoFormDTO.java

@ -28,19 +28,19 @@ public class PaInfoFormDTO implements Serializable {
/**
* 昵称
*/
private String nickName;
private String nick_name;
/**
* 头像
*/
private String headImg;
private String head_img;
/**
* 公众号类型 0订阅号
1由历史老帐号升级后的订阅号
2服务号
*/
private String serviceTypeInfo;
private String service_type_info;
/**
* 公众号认证类型 -1未认证
@ -51,17 +51,17 @@ public class PaInfoFormDTO implements Serializable {
4已资质认证通过还未通过名称认证但通过了新浪微博认证
5已资质认证通过还未通过名称认证但通过了腾讯微博认证
*/
private String verifyTypeInfo;
private String verify_type_info;
/**
* 原始ID
*/
private String userName;
private String user_name;
/**
* 主体名称
*/
private String principalName;
private String principal_name;
/**
* 公众号所设置的微信号可能为空 公众号所设置的微信号可能为空
@ -71,7 +71,7 @@ public class PaInfoFormDTO implements Serializable {
/**
* 二维码图片的 URL
*/
private String qrcodeUrl;
private String qrcode_url;
/**
* 删除状态 0正常1删除

4
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CreateAgencyResultDTO.java

@ -19,9 +19,5 @@ public class CreateAgencyResultDTO implements Serializable {
* 新增客户Id
*/
private String customerId;
/**
* 包含customerId的token
*/
private String token;
}

5
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/CustomerUserResultDTO.java

@ -2,6 +2,7 @@ package com.epmet.dto.result;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO;
import com.epmet.dto.PaUserWechatDTO;
import lombok.Data;
import java.io.Serializable;
@ -22,4 +23,8 @@ public class CustomerUserResultDTO implements Serializable {
* 用户对应的客户信息
*/
private PaCustomerDTO paCustomerResult;
/**
* 用户对应的微信基本信息
*/
private PaUserWechatDTO paUserWechatResult;
}

22
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/dto/result/PublicCustomerResultDTO.java

@ -0,0 +1,22 @@
package com.epmet.dto.result;
import com.epmet.dto.PaCustomerDTO;
import lombok.Data;
import java.io.Serializable;
/**
* 根据appid查询公众号注册的客户信息
* @Author sun
*/
@Data
public class PublicCustomerResultDTO implements Serializable {
private static final long serialVersionUID = 4642988014737245076L;
/**
* 客户信息
*/
private PaCustomerDTO customer;
}

12
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/EpmetThirdFeignClient.java

@ -7,6 +7,7 @@ import com.epmet.dto.form.SaveUserVisitedFormDTO;
import com.epmet.dto.form.WxLoginFormDTO;
import com.epmet.dto.result.CustomerUserResultDTO;
import com.epmet.dto.result.InitCustomerResultDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.feign.fallback.EpmetThirdFeignClientFallback;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
@ -94,5 +95,14 @@ public interface EpmetThirdFeignClient {
* @Description 校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
**/
@PostMapping(value = "third/customermp/resiandworklogin")
Result<UserWechatDTO> resiAndWorkLogin(WxLoginFormDTO formDTO);
Result<UserWechatDTO> resiAndWorkLogin(@RequestBody WxLoginFormDTO formDTO);
/**
* @param appId
* @return
* @Author sun
* @Description 根据appId查询公众号注册的客户信息
**/
@PostMapping(value = "third/customermp/getcustomermsg")
Result<PublicCustomerResultDTO> getCustomerMsg(@PathVariable("appId") String appId);
}

6
epmet-module/epmet-third/epmet-third-client/src/main/java/com/epmet/feign/fallback/EpmetThirdFeignClientFallback.java

@ -8,6 +8,7 @@ import com.epmet.dto.form.SaveUserVisitedFormDTO;
import com.epmet.dto.form.WxLoginFormDTO;
import com.epmet.dto.result.CustomerUserResultDTO;
import com.epmet.dto.result.InitCustomerResultDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.dto.result.SaveUserResultDTO;
import com.epmet.feign.EpmetThirdFeignClient;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
@ -59,4 +60,9 @@ public class EpmetThirdFeignClientFallback implements EpmetThirdFeignClient {
public Result<UserWechatDTO> resiAndWorkLogin(WxLoginFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "resiAndWorkLogin", formDTO);
}
@Override
public Result<PublicCustomerResultDTO> getCustomerMsg(String appId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_THIRD_SERVER, "getCustomerMsg", appId);
}
}

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

@ -41,6 +41,7 @@ public interface ModuleConstant {
//使用授权码获取授权信息 如下
String AUTHORIZATION_CODE = "authorization_code";
String AUTHORIZATION_INFO = "authorization_info";
String ID = "id";
//获取/刷新接口调用令牌 如下
String AUTHORIZER_APPID = "authorizer_appid";
@ -77,6 +78,8 @@ public interface ModuleConstant {
String DELAY = "delay";
String AUDIT_SUCCESS = "audit_success";
String AUDIT_FAILED = "audit_failed";
String XML = "xml";
String CREATE_TIME = "CreateTime";
int FORTY_THOUSAND_AND_THIRTEEN = 40013;
int EIGHTY_NINE_THOUSAND = 89000;

4
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/constant/PaConstant.java

@ -62,4 +62,8 @@ public interface PaConstant {
* 获取缓存中token信息失败
*/
String TOKEN_EXCEPTION = "token已过期";
/**
* 获取客户信息失败
*/
String SELECT_CUSTOMER_EXCEPTION = "获取客户信息失败";
}

12
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/CustomerMpController.java

@ -28,6 +28,7 @@ import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.CustomerMpDTO;
import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.WxLoginFormDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.excel.CustomerMpExcel;
import com.epmet.service.CustomerMpService;
import org.springframework.beans.factory.annotation.Autowired;
@ -104,4 +105,15 @@ public class CustomerMpController {
return new Result<UserWechatDTO>().ok(customerMpService.resiAndWorkLogin(formDTO));
}
/**
* @param appId
* @return
* @Author sun
* @Description 根据appId查询公众号注册的客户信息
**/
@PostMapping("getcustomermsg")
public Result<PublicCustomerResultDTO> getCustomerMsg(@PathVariable("appId") String appId) {
return new Result<PublicCustomerResultDTO>().ok(customerMpService.getCustomerMsg(appId));
}
}

2
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/controller/WarrantController.java

@ -1,6 +1,6 @@
package com.epmet.controller;
import com.epmet.exception.AesException;
import com.epmet.mpaes.AesException;
import com.epmet.service.WarrantService;
import lombok.extern.slf4j.Slf4j;
import org.dom4j.DocumentException;

9
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/dao/CustomerMpDao.java

@ -19,6 +19,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.CustomerMpDTO;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.form.AuthCodeFormDTO;
import com.epmet.entity.CustomerMpEntity;
import org.apache.ibatis.annotations.Mapper;
@ -98,4 +99,12 @@ public interface CustomerMpDao extends BaseDao<CustomerMpEntity> {
* @Description 根据appId查询小程序信息
**/
CustomerMpDTO selectByAppId(@Param("appId") String appId);
/**
* @param appId
* @return
* @Author sun
* @Description 根据appId查询客户信息
**/
PaCustomerDTO selectCustomerByAppId(@Param("appId") String appId);
}

65
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/exception/AesException.java

@ -1,65 +0,0 @@
package com.epmet.exception;
/**
* @Author zxc
* @CreateTime 2020/7/6 10:03
*/
@SuppressWarnings("serial")
public class AesException extends Exception {
/*public final static int OK = 0;
public final static int ValidateSignatureError = -40001;
public final static int ParseXmlError = -40002;
public final static int ComputeSignatureError = -40003;
public final static int IllegalAesKey = -40004;
public final static int ValidateCorpidError = -40005;
public final static int EncryptAESError = -40006;
public final static int DecryptAESError = -40007;
public final static int IllegalBuffer = -40008;
public final static int EncodeBase64Error = -40009;
public final static int DecodeBase64Error = -40010;
public final static int GenReturnXmlError = -40011;
private int code;
private static String getMessage(int code) {
switch (code) {
case ValidateSignatureError:
return "签名验证错误";
case ParseXmlError:
return "xml解析失败";
case ComputeSignatureError:
return "sha加密生成签名失败";
case IllegalAesKey:
return "SymmetricKey非法";
case ValidateCorpidError:
return "corpid校验失败";
case EncryptAESError:
return "aes加密失败";
case DecryptAESError:
return "aes解密失败";
case IllegalBuffer:
return "解密后得到的buffer非法";
case EncodeBase64Error:
return "base64加密错误";
case DecodeBase64Error:
return "base64解密错误";
case GenReturnXmlError:
return "xml生成失败";
default:
return null; // cannot be
}
}
public int getCode() {
return code;
}
public AesException(int code) {
super(getMessage(code));
this.code = code;
}
*/
}

9
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/CustomerMpService.java

@ -22,6 +22,7 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.CustomerMpDTO;
import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.WxLoginFormDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.entity.CustomerMpEntity;
import java.util.List;
@ -112,4 +113,12 @@ public interface CustomerMpService extends BaseService<CustomerMpEntity> {
* @Description 校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
**/
UserWechatDTO resiAndWorkLogin(WxLoginFormDTO formDTO);
/**
* @param appId
* @return
* @Author sun
* @Description 根据appId查询公众号注册的客户信息
**/
PublicCustomerResultDTO getCustomerMsg(String appId);
}

3
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/WarrantService.java

@ -1,8 +1,7 @@
package com.epmet.service;
import com.epmet.exception.AesException;
import com.epmet.mpaes.AesException;
import org.dom4j.DocumentException;
import org.springframework.web.bind.annotation.PathVariable;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

@ -7,6 +7,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.constant.ModuleConstant;
import com.epmet.constant.ThirdRedisKeyConstant;
import com.epmet.constant.ThirdRunTimeInfoConstant;
import com.epmet.dao.*;
import com.epmet.dto.form.*;
@ -263,13 +264,14 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
HashMap<String,Map> hashMap = JSON.parseObject(authInfo, HashMap.class);
Map map = hashMap.get(ModuleConstant.AUTHORIZATION_INFO);
authorizationInfoResultDTO = mapToEntity(map, AuthorizationInfoResultDTO.class);
String authAppId = authorizationInfoResultDTO.getAuthorizer_appid();
log.info("授权信息:"+map);
String expiresIn = authorizationInfoResultDTO.getExpires_in();
Date expiresInTime = this.countExpirationTime(expiresIn);
//授权信息分为两张表,基础信息authorization_info,授权列表func_info
// 1. 基础信息
AuthorizationInfoFormDTO authInfoDTO = new AuthorizationInfoFormDTO();
authInfoDTO.setAuthorizerAppid(authorizationInfoResultDTO.getAuthorizer_appid());
authInfoDTO.setAuthorizerAppid(authAppId);
authInfoDTO.setAuthorizerAccessToken(authorizationInfoResultDTO.getAuthorizer_access_token());
authInfoDTO.setAuthorizerRefreshToken(authorizationInfoResultDTO.getAuthorizer_refresh_token());
authInfoDTO.setExpiresInTime(expiresInTime);
@ -283,20 +285,19 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
List<FuncInfoFormDTO> funcInfos = new ArrayList<>();
List<Map> func_info = authorizationInfoResultDTO.getFunc_info();
log.info("权限列表信息:"+func_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);
}
func_info.forEach(func -> {
func.forEach((key,value) -> {
FuncInfoFormDTO fu = new FuncInfoFormDTO();
fu.setFuncscopeCategory((String) key);
Map funcScope = (Map) value;
fu.setFuncscopeId(funcScope.get(ModuleConstant.ID).toString());
fu.setAuthorizationInfoAppid(authAppId);
fu.setCustomerId(customerId);
funcInfos.add(fu);
});
});
//先逻辑删除,在插入
funcInfoDao.updateOldFuncInfo(customerId,authorizationInfoResultDTO.getAuthorizer_appid());
funcInfoDao.updateOldFuncInfo(customerId,authAppId);
funcInfoDao.insertFuncInfo(funcInfos);
// 授权信息放入缓存
redisThird.setAuthInfo(authorizationInfoResultDTO,customerId,clientType);
@ -328,7 +329,8 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
//第三方平台AppId
jsonObject.put(ModuleConstant.COMPONENT_APPID,componentAppId);
jsonObject.put(ModuleConstant.AUTHORIZER_REFRESH_TOKEN,willOverDueDTO.getAuthorizerRefreshToken());
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_AUTHORIZER_TOKEN_URL, JSON.toJSONString(jsonObject)).getData();
String componentAccessToken = redisThird.getComponentAccessToken();
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_AUTHORIZER_TOKEN_URL + componentAccessToken, JSON.toJSONString(jsonObject)).getData();
Map map = JSON.parseObject(data, HashMap.class);
//authorizer_access_token
String authorizerAccessToken = map.get(ModuleConstant.AUTHORIZER_ACCESS_TOKEN).toString();
@ -408,7 +410,8 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.COMPONENT_APP_ID,componentAppId);
jsonObject.put(ModuleConstant.AUTHORIZER_APP_ID,authAppId);
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_GET_AUTHORIZER_INFO, JSON.toJSONString(jsonObject)).getData();
String componentAccessToken = redisThird.getComponentAccessToken();
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_GET_AUTHORIZER_INFO + componentAccessToken , JSON.toJSONString(jsonObject)).getData();
Map<String,Map> map = JSON.parseObject(data, Map.class);
Map authorizerInfo = map.get(ModuleConstant.AUTHORIZER_INFO);
log.info("授权信息:"+authorizerInfo);
@ -498,12 +501,14 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
log.info("开始创建开放平台账号并绑定");
Integer authCount = customerMpDao.selectAuthCount(customerId);
String openPlatformId = null;
String authorizerRefreshToken = redisThird.getAuthorizerRefreshToken(customerId + ThirdRedisKeyConstant.COLON + clientType);
if (authCount==NumConstant.ZERO){
log.info("未查询到该客户授权信息,先创建开放平台账号,再绑定");
//没有任何一个小程序/公众号授权,【先创建,再绑定】
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.APP_ID,authAppId);
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN, JSON.toJSONString(jsonObject)).getData();
// 此处的 access_token 为 【authorizer_access_token】
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_CREATE_OPEN + authorizerRefreshToken, 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)));
@ -532,7 +537,7 @@ public class ComponentVerifyTicketServiceImpl implements ComponentVerifyTicketSe
JSONObject jsonObject = new JSONObject();
jsonObject.put(ModuleConstant.LOW_APP_ID,componentAppId);
jsonObject.put(ModuleConstant.OPEN_APP_ID,openAppId);
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_BIND_OPEN, JSON.toJSONString(jsonObject)).getData();
String data = HttpClientManager.getInstance().sendPostByJSON(WxMaCodeConstant.API_BIND_OPEN + authorizerRefreshToken, 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)));

22
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/CustomerMpServiceImpl.java

@ -26,10 +26,13 @@ import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.constant.PaConstant;
import com.epmet.dao.CustomerMpDao;
import com.epmet.dto.CustomerMpDTO;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.UserWechatDTO;
import com.epmet.dto.form.WxLoginFormDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.entity.CustomerMpEntity;
import com.epmet.redis.CustomerMpRedis;
import com.epmet.service.CustomerMpService;
@ -142,4 +145,23 @@ public class CustomerMpServiceImpl extends BaseServiceImpl<CustomerMpDao, Custom
return resultMap;
}
/**
* @param appId
* @return
* @Author sun
* @Description 根据appId查询公众号注册的客户信息
**/
@Override
public PublicCustomerResultDTO getCustomerMsg(String appId) {
PublicCustomerResultDTO resultDTO = new PublicCustomerResultDTO();
//1.根据appid查询客户信息
PaCustomerDTO paCustomerDTO = baseDao.selectCustomerByAppId(appId);
if(null==paCustomerDTO){
throw new RenException(PaConstant.SELECT_CUSTOMER_EXCEPTION);
}
resultDTO.setCustomer(paCustomerDTO);
return resultDTO;
}
}

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

@ -289,11 +289,11 @@ public class PaCustomerServiceImpl extends BaseServiceImpl<PaCustomerDao, PaCust
//获取key的剩余过期时间
String key = RedisKeys.getCpUserKey(LoginConstant.APP_PUBLIC, LoginConstant.CLIENT_MP, tokenDTO.getUserId());
long expire = redisUtils.getExpire(key);
//存入redis
cpUserDetailRedis.set(redisTokenDTO, expire);
//6.接口返参
CreateAgencyResultDTO resultDTO = new CreateAgencyResultDTO();
resultDTO.setCustomerId(entity.getId());
resultDTO.setToken(redisTokenDTO.getToken());
return resultDTO;
}

11
epmet-module/epmet-third/epmet-third-server/src/main/java/com/epmet/service/impl/PaUserServiceImpl.java

@ -26,6 +26,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.dao.PaCustomerDao;
import com.epmet.dao.PaUserDao;
import com.epmet.dao.PaUserWechatDao;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.PaUserDTO;
import com.epmet.dto.PaUserWechatDTO;
@ -61,6 +62,8 @@ public class PaUserServiceImpl extends BaseServiceImpl<PaUserDao, PaUserEntity>
private PaUserWechatService paUserWechatService;
@Autowired
private PaCustomerDao paCustomerDao;
@Autowired
private PaUserWechatDao paUserWechatDao;
@Override
public PageData<PaUserDTO> page(Map<String, Object> params) {
@ -175,17 +178,25 @@ public class PaUserServiceImpl extends BaseServiceImpl<PaUserDao, PaUserEntity>
@Override
public CustomerUserResultDTO checkPaUser(String phone) {
CustomerUserResultDTO resultDTO = new CustomerUserResultDTO();
//1.根据手机号查询用户信息
List<PaUserDTO> userList = baseDao.selectUserByPhone(phone);
if (null == userList || userList.size() < NumConstant.ONE) {
resultDTO.setPaUserResult(null);
resultDTO.setPaCustomerResult(null);
resultDTO.setPaUserWechatResult(null);
return resultDTO;
}
PaUserDTO dto = userList.get(NumConstant.ZERO);
//2.根据用户Id查询对应的客户信息
List<PaCustomerDTO> customerList = paCustomerDao.selectCustomerByUserId(dto.getId());
//3.根据用户Id查询对应的微信基本信息
PaUserWechatDTO wechatDTO = new PaUserWechatDTO();
wechatDTO.setUserId(dto.getId());
PaUserWechatEntity wechatEntity = paUserWechatDao.selectWechatByUserId(wechatDTO);
resultDTO.setPaUserResult(dto);
resultDTO.setPaCustomerResult(customerList.size() > NumConstant.ZERO ? customerList.get(NumConstant.ZERO) : null);
resultDTO.setPaUserWechatResult(ConvertUtils.sourceToTarget(wechatEntity, PaUserWechatDTO.class));
return resultDTO;
}

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

@ -10,7 +10,7 @@ import com.epmet.dao.MiniInfoDao;
import com.epmet.dto.form.CodeAuditRecordFormDTO;
import com.epmet.dto.result.CustomerIdAndClientResultDTO;
import com.epmet.dto.result.TemplateAndAppIdResultDTO;
import com.epmet.exception.AesException;
import com.epmet.mpaes.AesException;
import com.epmet.mpaes.WXBizMsgCrypt;
import com.epmet.mpaes.WXXmlToMapUtil;
import com.epmet.service.WarrantService;
@ -26,6 +26,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.Map;
/**
@ -58,15 +59,14 @@ public class WarrantServiceImpl implements WarrantService {
/**
* @Description 1.保存代码审核结果 2.更新代码上传结果
* @param request
* @param appid
* @param appId
* @param response
* @author zxc
*/
@Transactional(rollbackFor = Exception.class)
@Override
public void acceptMessageAndEvent(HttpServletRequest request, String appid, HttpServletResponse response)throws IOException, DocumentException, AesException {
log.info("request:"+request);
log.info("appId:"+ appid);
public void acceptMessageAndEvent(HttpServletRequest request, String appId, HttpServletResponse response)throws IOException, DocumentException, AesException {
log.info("appId:"+ appId);
request.setCharacterEncoding(ModuleConstant.UTF8);
String msgSignature = request.getParameter(ModuleConstant.MSG_SIGNATURE);
String timeStamp = request.getParameter(ModuleConstant.TIMESTAMP);
@ -83,14 +83,16 @@ public class WarrantServiceImpl implements WarrantService {
try {
wxBizMsgCrypt = new WXBizMsgCrypt(token,aesKey,componentAppId);
msg = wxBizMsgCrypt.decryptMsg(msgSignature, timeStamp, nonce, postData);
} catch (com.epmet.mpaes.AesException e) {
} catch (AesException e) {
e.printStackTrace();
}
log.info(String.format(ThirdRunTimeInfoConstant.MSG,msg));
// 将xml转为map
Map<String, Object> result = WXXmlToMapUtil.multilayerXmlToMap(msg);
Map<String,Object> xml = (Map<String, Object>) result.get("xml");
Map<String,Object> xml = (Map<String, Object>) result.get(ModuleConstant.XML);
Long createTime = Long.valueOf(xml.get(ModuleConstant.CREATE_TIME).toString());
CodeAuditRecordFormDTO codeAuditRecord = componentVerifyTicketService.mapToEntity(xml, CodeAuditRecordFormDTO.class);
codeAuditRecord.setWechatCreateTime(new Date(createTime));
String toUserName = codeAuditRecord.getToUserName();//小程序原始ID
CustomerIdAndClientResultDTO customerIdAndClientResultDTO = miniInfoDao.selectCustomerIdAndClientByToUserName(toUserName);
String clientType = customerIdAndClientResultDTO.getClientType();

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

@ -23,7 +23,7 @@ public interface WxMaCodeConstant {
*/
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";
String API_AUTHORIZER_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/component/api_authorizer_token?component_access_token=";
/**
* 授权回调url
@ -48,17 +48,17 @@ public interface WxMaCodeConstant {
/**
* 创建开放平台帐号并绑定公众号/小程序
*/
String API_CREATE_OPEN = "https://api.weixin.qq.com/cgi-bin/open/create";
String API_CREATE_OPEN = "https://api.weixin.qq.com/cgi-bin/open/create?access_token=";
/**
* 公众号/小程序绑定到开放平台帐号下
*/
String API_BIND_OPEN = "https://api.weixin.qq.com/cgi-bin/open/bind?";
String API_BIND_OPEN = "https://api.weixin.qq.com/cgi-bin/open/bind?access_token=";
/**
* 获取授权方的帐号基本信息
*/
String API_GET_AUTHORIZER_INFO = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info";
String API_GET_AUTHORIZER_INFO = "https://api.weixin.qq.com/cgi-bin/component/api_get_authorizer_info?component_access_token=";
/**
* 为授权的小程序帐号上传小程序代码.

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

@ -14,16 +14,16 @@
#{templateId},
#{clientType},
#{authAppId},
#{toUserName},
#{fromUserName},
#{ToUserName},
#{FromUserName},
#{wechatCreateTime},
#{msgType},
#{event},
IFNULL(#{succTime},NULL),
IFNULL(#{failTime},NULL),
IFNULL(#{delayTime},NULL),
IFNULL(#{reason},NULL),
IFNULL(#{screenShot},NULL),
#{MsgType},
#{Event},
IFNULL(#{SuccTime},NULL),
IFNULL(#{FailTime},NULL),
IFNULL(#{DelayTime},NULL),
IFNULL(#{Reason},NULL),
IFNULL(#{ScreenShot},NULL),
#{delFlag},
#{revision},
#{createdBy},

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

@ -99,4 +99,18 @@
AND app_id = #{appId}
</select>
<select id="selectCustomerByAppId" resultType="com.epmet.dto.PaCustomerDTO">
SELECT
pc.id,
pc.customer_name,
pc.is_initialize
FROM
customer_mp cm
INNER JOIN pa_customer pc ON cm.customer_id = pc.id
WHERE
cm.del_flag = '0'
AND pc.del_flag = '0'
AND cm.app_id = #{appId}
</select>
</mapper>

14
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/MiniInfoDao.xml

@ -15,14 +15,14 @@
REPLACE ( UUID(), '-', '' ),
#{customerId},
#{clientType},
#{nickName},
#{headImg},
#{serviceTypeInfo},
#{verifyTypeInfo},
#{userName},
#{principalName},
#{nick_name},
#{head_img},
#{service_type_info},
#{verify_type_info},
#{user_name},
#{principal_name},
#{signature},
#{qrcodeUrl},
#{qrcode_url},
#{delFlag},
#{revision},
#{createdBy},

14
epmet-module/epmet-third/epmet-third-server/src/main/resources/mapper/PaInfoDao.xml

@ -15,14 +15,14 @@
REPLACE ( UUID(), '-', '' ),
#{customerId},
#{clientType},
#{nickName},
#{headImg},
#{serviceTypeInfo},
#{verifyTypeInfo},
#{userName},
#{principalName},
#{nick_name},
#{head_img},
#{service_type_info},
#{verify_type_info},
#{user_name},
#{principal_name},
#{alias},
#{qrcodeUrl},
#{qrcode_url},
#{delFlag},
#{revision},
#{createdBy},

6
epmet-module/resi-guide/resi-guide-client/src/main/java/com/epmet/dto/form/PublicCustomerGridListFormDTO.java

@ -22,10 +22,10 @@ public class PublicCustomerGridListFormDTO implements Serializable {
}
/**
* 客户Id
* 小程序appId
* */
@NotBlank(message = "客户Id不能为空", groups = {AddUserShowGroup.class})
private String customerId;
@NotBlank(message = "小程序appId不能为空", groups = {AddUserShowGroup.class})
private String appId;
/**
* 当前页
* */

6
epmet-module/resi-guide/resi-guide-server/pom.xml

@ -81,6 +81,12 @@
<artifactId>snakeyaml</artifactId>
<version>${snakeyaml.version}</version>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-third-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

15
epmet-module/resi-guide/resi-guide-server/src/main/java/com/epmet/service/impl/StrangerAccessRecordServiceImpl.java

@ -14,12 +14,15 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.StrangerResiGuideConstant;
import com.epmet.dao.StrangerAccessRecordDao;
import com.epmet.dto.PaCustomerDTO;
import com.epmet.dto.StrangerAccessRecordDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.CustomerGridForStrangerResultDTO;
import com.epmet.dto.result.HomeDesignByCustomerResultDTO;
import com.epmet.dto.result.PublicCustomerGridForStrangerResultDTO;
import com.epmet.dto.result.PublicCustomerResultDTO;
import com.epmet.entity.StrangerAccessRecordEntity;
import com.epmet.feign.EpmetThirdFeignClient;
import com.epmet.feign.EpmetUserFeignClient;
import com.epmet.feign.GovOrgFeignClient;
import com.epmet.feign.OperCustomizeFeignClient;
@ -52,6 +55,8 @@ public class StrangerAccessRecordServiceImpl extends BaseServiceImpl<StrangerAcc
private EpmetUserFeignClient epmetUserFeignClient;
@Autowired
private OperCustomizeFeignClient operCustomizeFeignClient;
@Autowired
private EpmetThirdFeignClient epmetThirdFeignClient;
/**
* 查询陌生人访问记录
@ -249,8 +254,16 @@ public class StrangerAccessRecordServiceImpl extends BaseServiceImpl<StrangerAcc
@Override
public Result<List<PublicCustomerGridForStrangerResultDTO>> thirdCustomerGridList(PublicCustomerGridListFormDTO formDTO) {
//0.调用epmet-third服务,根据appId查询客户信息
Result<PublicCustomerResultDTO> result = epmetThirdFeignClient.getCustomerMsg(formDTO.getAppId());
if(!result.success()){
throw new RenException(result.getCode());
}
PublicCustomerResultDTO resultDTO = result.getData();
PaCustomerDTO customer = resultDTO.getCustomer();
ThirdCustomerGridListFormDTO third = new ThirdCustomerGridListFormDTO();
third.setCustomerId(formDTO.getCustomerId());
third.setCustomerId(customer.getId());
//1.参数设置
//根据是自动定位还是手动定位获取地区编码值
third.setAreaCode(ModuleConstant.NOT_POSITION_AUTHORIZED == formDTO.getIsAuthorized() ?

Loading…
Cancel
Save