|
|
@ -1,5 +1,6 @@ |
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
|
|
|
import com.epmet.common.token.constant.LoginConstant; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
|
import com.epmet.commons.tools.exception.ExceptionUtils; |
|
|
@ -10,10 +11,7 @@ import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.commons.tools.utils.CpUserDetailRedis; |
|
|
|
import com.epmet.commons.tools.utils.DateUtils; |
|
|
|
import com.epmet.commons.tools.utils.Result; |
|
|
|
import com.epmet.dto.CustomerAgencyDTO; |
|
|
|
import com.epmet.dto.GovStaffRoleDTO; |
|
|
|
import com.epmet.dto.UserDTO; |
|
|
|
import com.epmet.dto.UserWechatDTO; |
|
|
|
import com.epmet.dto.*; |
|
|
|
import com.epmet.dto.form.*; |
|
|
|
import com.epmet.dto.result.DepartmentListResultDTO; |
|
|
|
import com.epmet.dto.result.GridByStaffResultDTO; |
|
|
@ -347,4 +345,100 @@ public class ThirdLoginServiceImpl implements ThirdLoginService { |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @param formDTO |
|
|
|
* @return |
|
|
|
* @Author sun |
|
|
|
* @Description 单客户-选择组织,进入首页 |
|
|
|
**/ |
|
|
|
@Override |
|
|
|
public UserTokenResultDTO enterOrg(ThirdWxmpEnteOrgFormDTO formDTO) { |
|
|
|
//1、需要校验要登录的客户,是否被禁用
|
|
|
|
CustomerStaffFormDTO customerStaffFormDTO = new CustomerStaffFormDTO(); |
|
|
|
customerStaffFormDTO.setCustomerId(formDTO.getCustomerId()); |
|
|
|
customerStaffFormDTO.setMobile(formDTO.getMobile()); |
|
|
|
Result<CustomerStaffDTO> customerStaffDTOResult = epmetUserOpenFeignClient.getCustomerStaffInfo(customerStaffFormDTO); |
|
|
|
if (!customerStaffDTOResult.success() || null == customerStaffDTOResult.getData()) { |
|
|
|
logger.error(String.format("获取工作人员信息失败,手机号[%s],客户id:[%s],code[%s],msg[%s]", formDTO.getMobile(), formDTO.getCustomerId(), customerStaffDTOResult.getCode(), customerStaffDTOResult.getMsg())); |
|
|
|
throw new RenException(customerStaffDTOResult.getCode()); |
|
|
|
} |
|
|
|
CustomerStaffDTO customerStaff = customerStaffDTOResult.getData(); |
|
|
|
//2020.7.24 获取微信信息接口调整,改调用微信api的方式 sun start
|
|
|
|
//2.调用epmet_third服务,校验appId是否有效以及是否授权,校验通过的调用微信API获取用户基本信息
|
|
|
|
WxLoginFormDTO resiLoginFormDTO = new WxLoginFormDTO(); |
|
|
|
resiLoginFormDTO.setAppId(formDTO.getAppId()); |
|
|
|
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(); |
|
|
|
WxMaJscode2SessionResult wxMaJscode2SessionResult = new WxMaJscode2SessionResult(); |
|
|
|
wxMaJscode2SessionResult.setOpenid(userWechatDTO.getWxOpenId()); |
|
|
|
wxMaJscode2SessionResult.setSessionKey(userWechatDTO.getSessionKey()); |
|
|
|
wxMaJscode2SessionResult.setUnionid(""); |
|
|
|
// end
|
|
|
|
|
|
|
|
//3、记录staff_wechat,并记录用户激活状态,激活时间
|
|
|
|
this.savestaffwechat(customerStaff.getUserId(), wxMaJscode2SessionResult.getOpenid()); |
|
|
|
//4、记录登录日志
|
|
|
|
this.saveGovStaffLoginRecord(formDTO, customerStaff.getUserId(), wxMaJscode2SessionResult.getOpenid()); |
|
|
|
//5.1、获取用户token
|
|
|
|
String token = this.generateGovWxmpToken(customerStaff.getUserId()); |
|
|
|
//5.2、保存到redis
|
|
|
|
this.saveGovTokenDto(formDTO.getRootAgencyId(), formDTO.getCustomerId(), customerStaff.getUserId(), wxMaJscode2SessionResult, token); |
|
|
|
UserTokenResultDTO userTokenResultDTO = new UserTokenResultDTO(); |
|
|
|
userTokenResultDTO.setToken(token); |
|
|
|
return userTokenResultDTO; |
|
|
|
} |
|
|
|
|
|
|
|
//保存登录日志
|
|
|
|
private Result saveGovStaffLoginRecord(ThirdWxmpEnteOrgFormDTO formDTO, String staffId, String openId) { |
|
|
|
StaffLoginAgencyRecordFormDTO staffLoginAgencyRecordFormDTO = new StaffLoginAgencyRecordFormDTO(); |
|
|
|
staffLoginAgencyRecordFormDTO.setCustomerId(formDTO.getCustomerId()); |
|
|
|
staffLoginAgencyRecordFormDTO.setStaffId(staffId); |
|
|
|
staffLoginAgencyRecordFormDTO.setWxOpenId(openId); |
|
|
|
staffLoginAgencyRecordFormDTO.setMobile(formDTO.getMobile()); |
|
|
|
staffLoginAgencyRecordFormDTO.setAgencyId(formDTO.getRootAgencyId()); |
|
|
|
Result staffLoginRecordResult = epmetUserOpenFeignClient.saveStaffLoginRecord(staffLoginAgencyRecordFormDTO); |
|
|
|
return staffLoginRecordResult; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @Description 生成token |
|
|
|
* @Date 2020/4/18 23:04 |
|
|
|
**/ |
|
|
|
private void saveGovTokenDto(String orgId, |
|
|
|
String customerId, |
|
|
|
String staffId, |
|
|
|
WxMaJscode2SessionResult wxMaJscode2SessionResult, |
|
|
|
String token) { |
|
|
|
int expire = jwtTokenProperties.getExpire(); |
|
|
|
GovTokenDto govTokenDto = new GovTokenDto(); |
|
|
|
govTokenDto.setApp(LoginConstant.APP_GOV); |
|
|
|
govTokenDto.setClient(LoginConstant.CLIENT_WXMP); |
|
|
|
govTokenDto.setUserId(staffId); |
|
|
|
govTokenDto.setOpenId(wxMaJscode2SessionResult.getOpenid()); |
|
|
|
govTokenDto.setSessionKey(wxMaJscode2SessionResult.getSessionKey()); |
|
|
|
govTokenDto.setUnionId(null == wxMaJscode2SessionResult.getUnionid() ? "" : wxMaJscode2SessionResult.getUnionid()); |
|
|
|
govTokenDto.setToken(token); |
|
|
|
govTokenDto.setUpdateTime(System.currentTimeMillis()); |
|
|
|
govTokenDto.setExpireTime(jwtTokenUtils.getExpiration(token).getTime()); |
|
|
|
govTokenDto.setRootAgencyId(orgId); |
|
|
|
govTokenDto.setCustomerId(customerId); |
|
|
|
|
|
|
|
//设置部门,网格,角色列表
|
|
|
|
govTokenDto.setDeptIdList(getDeptartmentIdList(staffId)); |
|
|
|
govTokenDto.setGridIdList(getGridIdList(staffId)); |
|
|
|
CustomerAgencyDTO agency = getAgencyByStaffId(staffId); |
|
|
|
if (agency != null) { |
|
|
|
govTokenDto.setAgencyId(agency.getId()); |
|
|
|
govTokenDto.setRoleList(queryGovStaffRoles(staffId, agency.getId())); |
|
|
|
} |
|
|
|
govTokenDto.setOrgIdPath(getOrgIdPath(staffId)); |
|
|
|
cpUserDetailRedis.set(govTokenDto, expire); |
|
|
|
logger.info("截止时间:" + DateUtils.format(jwtTokenUtils.getExpiration(token), "yyyy-MM-dd HH:mm:ss")); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|