old mode 100644
new mode 100755
| | |
| | | package com.java110.front.smo.wechatGateway.impl; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.java110.core.base.smo.front.AbstractFrontServiceSMO; |
| | | import com.java110.core.context.IPageData; |
| | | import com.java110.core.factory.WechatFactory; |
| | | import com.java110.dto.owner.OwnerAppUserDto; |
| | | import com.java110.dto.smallWeChat.SmallWeChatDto; |
| | | import com.java110.dto.smallWechatAttr.SmallWechatAttrDto; |
| | | import com.java110.front.properties.WechatAuthProperties; |
| | | import com.java110.front.smo.AppAbstractComponentSMO; |
| | | import com.java110.front.smo.wechatGateway.IWechatGatewaySMO; |
| | | import com.java110.utils.cache.MappingCache; |
| | | import com.java110.utils.constant.ServiceCodeConstant; |
| | | import com.java110.utils.constant.ServiceCodeSmallWechatAttrConstant; |
| | | import com.java110.utils.constant.ServiceConstant; |
| | | import com.java110.utils.constant.WechatConstant; |
| | | import com.java110.utils.util.Assert; |
| | | import com.java110.utils.util.BeanConvertUtil; |
| | | import com.java110.utils.util.StringUtil; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.thymeleaf.util.StringUtils; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * wx登录 |
| | | */ |
| | | @Service("wechatGatewaySMOImpl") |
| | | public class WechatGatewaySMOImpl extends AppAbstractComponentSMO implements IWechatGatewaySMO { |
| | | public class WechatGatewaySMOImpl extends AbstractFrontServiceSMO implements IWechatGatewaySMO { |
| | | |
| | | private final static Logger logger = LoggerFactory.getLogger(WechatGatewaySMOImpl.class); |
| | | |
| | |
| | | private WechatAuthProperties wechatAuthProperties; |
| | | |
| | | @Override |
| | | public ResponseEntity<String> |
| | | gateway(IPageData pd) throws Exception { |
| | | return businessProcess(pd); |
| | | } |
| | | public ResponseEntity<String> gateway(IPageData pd, String wId) throws Exception { |
| | | |
| | | @Override |
| | | protected void validate(IPageData pd, JSONObject paramIn) { |
| | | JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); |
| | | Assert.hasKeyAndValue(paramIn, "fromUserName", "请求报文中未包含fromUserName"); |
| | | Assert.hasKeyAndValue(paramIn, "toUserName", "请求报文中未包含toUserName"); |
| | | } |
| | | |
| | | @Override |
| | | protected ResponseEntity<String> doBusinessProcess(IPageData pd, JSONObject paramIn) throws Exception { |
| | | |
| | | logger.debug("doLogin入参:" + paramIn.toJSONString()); |
| | | String responseStr = ""; |
| | |
| | | //判断用户是否绑定业主 |
| | | boolean bindFlag = judgeBindOwner(pd, fromUserName); |
| | | if (!bindFlag) { |
| | | responseStr = WechatFactory.formatText(toUserName, fromUserName, WechatConstant.NO_BIND_OWNER_RESPONSE_MESSAGE); |
| | | |
| | | String noBindOwnerResponseMessage = MappingCache.getRemark(WechatConstant.WECHAT_DOMAIN, WechatConstant.NO_BIND_OWNER); |
| | | |
| | | if (StringUtil.isEmpty(noBindOwnerResponseMessage)) { |
| | | |
| | | noBindOwnerResponseMessage = WechatConstant.NO_BIND_OWNER_RESPONSE_MESSAGE; |
| | | } |
| | | if (!noBindOwnerResponseMessage.contains("wAppId=")) { |
| | | if (noBindOwnerResponseMessage.indexOf("W_APP_ID") > 0) { |
| | | noBindOwnerResponseMessage = noBindOwnerResponseMessage.replace("W_APP_ID","wAppId=" +WechatFactory.getAppId(wId)); |
| | | } |
| | | } |
| | | |
| | | responseStr = WechatFactory.formatText(toUserName, fromUserName, noBindOwnerResponseMessage); |
| | | return new ResponseEntity<String>(responseStr, HttpStatus.OK); |
| | | } |
| | | |
| | |
| | | } |
| | | return new ResponseEntity<>(responseStr, HttpStatus.OK); |
| | | } |
| | | |
| | | @Override |
| | | public SmallWeChatDto getSmallWechat(IPageData pd, SmallWeChatDto smallWeChatDto) { |
| | | |
| | | //List<SmallWeChatDto> smallWeChatDtos = super.getForApis(pd, smallWeChatDto, ServiceCodeSmallWeChatConstant.LIST_SMALL_WE_CHATS, SmallWeChatDto.class); |
| | | ResponseEntity<String> responseEntity = this.callCenterService(restTemplate, pd, "", |
| | | ServiceConstant.SERVICE_API_URL + "/api/smallWeChat.listSmallWeChats?appId=" |
| | | + smallWeChatDto.getAppId() + "&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; |
| | | } |
| | | smallWeChatDto = BeanConvertUtil.covertBean(smallWeChats.get(0), SmallWeChatDto.class); |
| | | SmallWechatAttrDto smallWechatAttrDto = new SmallWechatAttrDto(); |
| | | smallWechatAttrDto.setCommunityId(smallWeChatDto.getObjId()); |
| | | smallWechatAttrDto.setWechatId(smallWeChatDto.getWeChatId()); |
| | | List<SmallWechatAttrDto> smallWechatAttrs = super.getForApis(pd, smallWechatAttrDto, ServiceCodeSmallWechatAttrConstant.LIST_SMALLWECHATATTRS, SmallWechatAttrDto.class); |
| | | |
| | | smallWeChatDto.setSmallWechatAttrs(smallWechatAttrs); |
| | | return smallWeChatDto; |
| | | } |
| | | |
| | | |
| | | public RestTemplate getRestTemplate() { |
| | | return restTemplate; |
| | |
| | | * @return |
| | | */ |
| | | private boolean judgeBindOwner(IPageData pd, String openId) { |
| | | OwnerAppUserDto ownerAppUserDto = new OwnerAppUserDto(); |
| | | ownerAppUserDto.setOpenId(openId); |
| | | List<OwnerAppUserDto> ownerAppUserDtos = super.getForApis(pd, ownerAppUserDto, ServiceCodeConstant.LIST_APPUSERBINDINGOWNERS, OwnerAppUserDto.class); |
| | | |
| | | ResponseEntity responseEntity = this.callCenterService(restTemplate, pd, "", ServiceConstant.SERVICE_API_URL + "/api/owner.listAppUserBindingOwners?openId=" + openId, HttpMethod.GET); |
| | | |
| | | if (responseEntity.getStatusCode() != HttpStatus.OK) { |
| | | return true; |
| | | } |
| | | |
| | | JSONObject ownerInfo = JSONObject.parseObject(responseEntity.getBody().toString()); |
| | | |
| | | if (ownerInfo.getInteger("total") != 1) { |
| | | if (ownerAppUserDtos == null || ownerAppUserDtos.size() != 1) { |
| | | return false; |
| | | } |
| | | return true; |