package com.java110.web.smo.impl; import com.alibaba.fastjson.JSONObject; import com.java110.common.constant.PrivilegeCodeConstant; import com.java110.common.constant.ServiceConstant; import com.java110.common.util.Assert; import com.java110.core.context.IPageData; import com.java110.web.core.BaseComponentSMO; import com.java110.web.smo.IUnitServiceSMO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * @ClassName UnitServiceSMOImpl * @Description TODO * @Author wuxw * @Date 2019/5/2 19:30 * @Version 1.0 * add by wuxw 2019/5/2 **/ @Service("unitServiceSMOImpl") public class UnitServiceSMOImpl extends BaseComponentSMO implements IUnitServiceSMO { private static Logger logger = LoggerFactory.getLogger(UnitServiceSMOImpl.class); @Autowired private RestTemplate restTemplate; @Override public ResponseEntity listUnits(IPageData pd) { validateListUnit(pd); //校验用户是否有权限 super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_UNIT); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); String communityId = paramIn.getString("communityId"); //小区楼编号 String floorId = paramIn.getString("floorId"); ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate); if (responseEntity.getStatusCode() != HttpStatus.OK) { return responseEntity; } Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点"); Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点"); String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd"); //数据校验是否 商户是否入驻该小区 super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate); String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.queryUnits" + mapToUrlParam(paramIn); responseEntity = this.callCenterService(restTemplate, pd, "", apiUrl, HttpMethod.GET); return responseEntity; } /** * 保存小区单元信息 * * @param pd 页面数据封装 * @return ResponseEntity对象 */ @Override public ResponseEntity saveUnit(IPageData pd) { //校验入参 validateSaveUnit(pd); //校验用户是否有权限 super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_UNIT); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); String communityId = paramIn.getString("communityId"); ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate); if (responseEntity.getStatusCode() != HttpStatus.OK) { return responseEntity; } Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点"); Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点"); String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd"); //数据校验是否 商户是否入驻该小区 super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate); String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.saveUnit"; responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); return responseEntity; } @Override public ResponseEntity updateUnit(IPageData pd) { //校验入参 validateUpdateUnit(pd); //校验用户是否有权限 super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_UNIT); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); String communityId = paramIn.getString("communityId"); ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate); if (responseEntity.getStatusCode() != HttpStatus.OK) { return responseEntity; } Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点"); Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点"); String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd"); //数据校验是否 商户是否入驻该小区 super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate); String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.updateUnit"; responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); return responseEntity; } @Override public ResponseEntity deleteUnit(IPageData pd) { //校验入参 validateDeleteUnit(pd); //校验用户是否有权限 super.checkUserHasPrivilege(pd, restTemplate, PrivilegeCodeConstant.PRIVILEGE_UNIT); JSONObject paramIn = JSONObject.parseObject(pd.getReqData()); String communityId = paramIn.getString("communityId"); ResponseEntity responseEntity = super.getStoreInfo(pd, restTemplate); if (responseEntity.getStatusCode() != HttpStatus.OK) { return responseEntity; } Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeId", "根据用户ID查询商户ID失败,未包含storeId节点"); Assert.jsonObjectHaveKey(responseEntity.getBody().toString(), "storeTypeCd", "根据用户ID查询商户类型失败,未包含storeTypeCd节点"); String storeId = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeId"); String storeTypeCd = JSONObject.parseObject(responseEntity.getBody().toString()).getString("storeTypeCd"); //数据校验是否 商户是否入驻该小区 super.checkStoreEnterCommunity(pd, storeId, storeTypeCd, communityId, restTemplate); String apiUrl = ServiceConstant.SERVICE_API_URL + "/api/unit.deleteUnit"; responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(), apiUrl, HttpMethod.POST); return responseEntity; } /** * 删除单元信息校验 * * @param pd 页面数据封装 */ private void validateDeleteUnit(IPageData pd) { Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "floorId", "请求报文中未包含floorId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "unitId", "请求报文中未包含unitId节点"); } /** * 校验 保存小区单元参数信息 * * @param pd 页面数据封装 */ private void validateSaveUnit(IPageData pd) { Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "floorId", "请求报文中未包含floorId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "unitNum", "请求报文中未包含unitNum节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "layerCount", "请求报文中未包含layerCount节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "lift", "请求报文中未包含lift节点"); JSONObject reqJson = JSONObject.parseObject(pd.getReqData()); Assert.isInteger(reqJson.getString("layerCount"), "单元总层数据不是有效数字"); if (!"1010".equals(reqJson.getString("lift")) && !"2020".equals(reqJson.getString("lift"))) { throw new IllegalArgumentException("是否有电梯 传入数据错误"); } } /** * 校验 修改小区单元参数信息 * * @param pd 页面数据封装 */ private void validateUpdateUnit(IPageData pd) { Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "floorId", "请求报文中未包含floorId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "unitNum", "请求报文中未包含unitNum节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "layerCount", "请求报文中未包含layerCount节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "lift", "请求报文中未包含lift节点"); JSONObject reqJson = JSONObject.parseObject(pd.getReqData()); Assert.isInteger(reqJson.getString("layerCount"), "单元总层数据不是有效数字"); if (!"1010".equals(reqJson.getString("lift")) && !"2020".equals(reqJson.getString("lift"))) { throw new IllegalArgumentException("是否有电梯 传入数据错误"); } } /** * 小区单元查询数据校验 * * @param pd 页面数据封装对象 */ private void validateListUnit(IPageData pd) { Assert.jsonObjectHaveKey(pd.getReqData(), "communityId", "请求报文中未包含communityId节点"); Assert.jsonObjectHaveKey(pd.getReqData(), "floorId", "请求报文中未包含floorId节点"); } public RestTemplate getRestTemplate() { return restTemplate; } public void setRestTemplate(RestTemplate restTemplate) { this.restTemplate = restTemplate; } }