| | |
| | | import com.java110.core.context.IPageData; |
| | | import com.java110.core.context.PageData; |
| | | import com.java110.core.factory.AuthenticationFactory; |
| | | import com.java110.core.factory.WechatFactory; |
| | | import com.java110.dto.owner.OwnerAppUserDto; |
| | | import com.java110.dto.smallWeChat.SmallWeChatDto; |
| | | import com.java110.dto.user.UserDto; |
| | | import com.java110.front.properties.WechatAuthProperties; |
| | | import com.java110.front.smo.ownerLogin.IOwnerAppLoginSMO; |
| | |
| | | import com.java110.utils.constant.WechatConstant; |
| | | import com.java110.utils.exception.SMOException; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import com.java110.vo.ResultVo; |
| | | import org.slf4j.Logger; |
| | |
| | | UserDto userDto = new UserDto(); |
| | | userDto.setUserName(loginInfo.getString("username")); |
| | | userDto.setPassword(loginInfo.getString("password")); |
| | | userDto = super.postForApi(pd,userDto,ServiceCodeConstant.SERVICE_CODE_USER_LOGIN,UserDto.class); |
| | | userDto = super.postForApi(pd, userDto, ServiceCodeConstant.SERVICE_CODE_USER_LOGIN, UserDto.class); |
| | | |
| | | if(userDto == null){ |
| | | if (userDto == null) { |
| | | responseEntity = new ResponseEntity<>("用户名或密码错误", HttpStatus.BAD_REQUEST); |
| | | return responseEntity; |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public ResponseEntity<String> getPageAccessToken(IPageData pd) throws SMOException { |
| | | public ResponseEntity<String> getPageAccessToken(IPageData pd, HttpServletRequest request) throws SMOException { |
| | | JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); |
| | | String authCode = paramIn.getString("code"); |
| | | String state = paramIn.getString("state"); |
| | |
| | | JSONObject param = JSONObject.parseObject(paramStr); |
| | | String redirectUrl = param.getString("redirectUrl"); |
| | | String errorUrl = param.getString("errorUrl"); |
| | | String wId = paramIn.getString("wId"); |
| | | SmallWeChatDto smallWeChatDto = null; |
| | | if (!StringUtil.isEmpty(wId)) { |
| | | paramIn.put("appId", WechatFactory.getAppId(wId)); |
| | | smallWeChatDto = getSmallWechat(pd, paramIn); |
| | | } |
| | | if (smallWeChatDto == null) { //从配置文件中获取 小程序配置信息 |
| | | smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setAppId(wechatAuthProperties.getWechatAppId()); |
| | | smallWeChatDto.setAppSecret(wechatAuthProperties.getWechatAppSecret()); |
| | | smallWeChatDto.setMchId(wechatAuthProperties.getMchId()); |
| | | smallWeChatDto.setPayPassword(wechatAuthProperties.getKey()); |
| | | } |
| | | |
| | | |
| | | String url = WechatConstant.APP_GET_ACCESS_TOKEN_URL.replace("APPID", wechatAuthProperties.getWechatAppId()) |
| | | .replace("SECRET", wechatAuthProperties.getWechatAppSecret()) |
| | | String url = WechatConstant.APP_GET_ACCESS_TOKEN_URL.replace("APPID", smallWeChatDto.getAppId()) |
| | | .replace("SECRET", smallWeChatDto.getAppSecret()) |
| | | .replace("CODE", authCode); |
| | | |
| | | ResponseEntity<String> paramOut = outRestTemplate.getForEntity(url, String.class); |
| | |
| | | |
| | | int loginFlag = paramIn.getInteger("loginFlag"); |
| | | //说明是登录页面,下发code 就可以,不需要下发key 之类 |
| | | if(loginFlag == LOGIN_PAGE){ |
| | | if (loginFlag == LOGIN_PAGE) { |
| | | //将openId放到redis 缓存,给前段下发临时票据 |
| | | String code = UUID.randomUUID().toString(); |
| | | CommonCache.setValue(code, openId, expireTime); |
| | |
| | | userDto.setUserId(ownerAppUserDtos.get(0).getUserId()); |
| | | UserDto tmpUserDto = super.getForApi(pd, userDto, ServiceCodeConstant.QUERY_USER_SECRET, UserDto.class); |
| | | |
| | | if(StringUtil.isEmpty(tmpUserDto.getKey())){ |
| | | if (StringUtil.isEmpty(tmpUserDto.getKey())) { |
| | | String code = UUID.randomUUID().toString(); |
| | | CommonCache.setValue(code, openId, expireTime); |
| | | return ResultVo.redirectPage(errorUrl + "?code=" + code); |
| | |
| | | param.put("redirectUrl", redirectUrl); |
| | | param.put("errorUrl", errorUrl); |
| | | CommonCache.setValue(urlCode, param.toJSONString(), expireTime); |
| | | String wAppId = request.getHeader("w-app-id"); |
| | | SmallWeChatDto smallWeChatDto = null; |
| | | if (!StringUtil.isEmpty(wAppId)) { |
| | | JSONObject paramIn = new JSONObject(); |
| | | paramIn.put("appId", wAppId); |
| | | smallWeChatDto = getSmallWechat(pd, paramIn); |
| | | } |
| | | if (smallWeChatDto == null) { //从配置文件中获取 小程序配置信息 |
| | | smallWeChatDto = new SmallWeChatDto(); |
| | | smallWeChatDto.setAppId(wechatAuthProperties.getWechatAppId()); |
| | | smallWeChatDto.setAppSecret(wechatAuthProperties.getWechatAppSecret()); |
| | | smallWeChatDto.setMchId(wechatAuthProperties.getMchId()); |
| | | smallWeChatDto.setPayPassword(wechatAuthProperties.getKey()); |
| | | } |
| | | |
| | | URL url = null; |
| | | String openUrl = ""; |
| | |
| | | } |
| | | |
| | | openUrl = WechatConstant.OPEN_AUTH |
| | | .replace("APPID", wechatAuthProperties.getWechatAppId()) |
| | | .replace("APPID", smallWeChatDto.getAppId()) |
| | | .replace("SCOPE", "snsapi_base") |
| | | .replace( |
| | | "REDIRECT_URL", |
| | | URLEncoder |
| | | .encode( |
| | | (newUrl |
| | | + "/app/loginOwnerWechatAuth?appId=992020061452450002&urlCode=" + urlCode+"&loginFlag="+loginFlag), |
| | | + "/app/loginOwnerWechatAuth?appId=992020061452450002&urlCode=" + |
| | | urlCode + "&loginFlag=" + loginFlag + "&wId=" + WechatFactory.getWId(wAppId)), |
| | | "UTF-8")).replace("STATE", "1"); |
| | | |
| | | } catch (Exception e) { |
| | |
| | | pd.getAppId()); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/smallWeChat.listSmallWeChats?appId=" |
| | | + paramIn.getString("appId") + "&page=1&row=1&communityId="+ownerAppUserDtos.get(0).getCommunityId(), HttpMethod.GET); |
| | | + paramIn.getString("appId") + "&page=1&row=1&communityId=" + ownerAppUserDtos.get(0).getCommunityId(), HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return responseEntity; |
| | |
| | | return null; |
| | | } |
| | | |
| | | private SmallWeChatDto getSmallWechat(IPageData pd, JSONObject paramIn) { |
| | | |
| | | ResponseEntity responseEntity = null; |
| | | |
| | | pd = PageData.newInstance().builder(pd.getUserId(), "", "", pd.getReqData(), |
| | | "", "", "", "", |
| | | pd.getAppId()); |
| | | responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/smallWeChat.listSmallWeChats?appId=" |
| | | + paramIn.getString("appId") + "&page=1&row=1", HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return null; |
| | | } |
| | | JSONObject smallWechatObj = JSONObject.parseObject(responseEntity.getBody().toString()); |
| | | JSONArray smallWeChats = smallWechatObj.getJSONArray("smallWeChats"); |
| | | |
| | | if (smallWeChats == null || smallWeChats.size() < 1) { |
| | | return null; |
| | | } |
| | | |
| | | return BeanConvertUtil.covertBean(smallWeChats.get(0), SmallWeChatDto.class); |
| | | } |
| | | |
| | | public RestTemplate getRestTemplate() { |
| | | return restTemplate; |
| | | } |