Browse Source

优化代码

java110 5 years ago
parent
commit
4f389cb24d

+ 1 - 1
service-fee/src/main/java/com/java110/fee/FeeServiceApplicationStart.java

@@ -33,7 +33,7 @@ import java.nio.charset.Charset;
 @EnableDiscoveryClient
 @Java110ListenerDiscovery(listenerPublishClass = BusinessServiceDataFlowEventPublishing.class,
         basePackages = {"com.java110.fee.listener"})
-@EnableFeignClients(basePackages = {"com.java110.intf.user","com.java110.intf.order"})
+@EnableFeignClients(basePackages = {"com.java110.intf.user","com.java110.intf.order","com.java110.intf.community"})
 public class FeeServiceApplicationStart {
 
     private static Logger logger = LoggerFactory.getLogger(FeeServiceApplicationStart.class);

+ 46 - 23
service-fee/src/main/java/com/java110/fee/api/FeeApi.java

@@ -1,16 +1,19 @@
 package com.java110.fee.api;
 
 import com.alibaba.fastjson.JSONObject;
-import com.java110.utils.constant.ResponseConstant;
-import com.java110.utils.exception.InitConfigDataException;
-import com.java110.utils.exception.InitDataFlowContextException;
 import com.java110.core.base.controller.BaseController;
 import com.java110.core.context.BusinessServiceDataFlow;
 import com.java110.core.factory.DataTransactionFactory;
+import com.java110.fee.bmo.IQueryParkspaceFee;
 import com.java110.fee.smo.IFeeServiceSMO;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.InitConfigDataException;
+import com.java110.utils.exception.InitDataFlowContextException;
+import com.java110.utils.util.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -25,24 +28,29 @@ import java.util.Map;
  * Created by wuxw on 2018/5/14.
  */
 @RestController
+@RequestMapping(value = "/feeApi")
 public class FeeApi extends BaseController {
     private final static Logger logger = LoggerFactory.getLogger(FeeApi.class);
 
     @Autowired
     IFeeServiceSMO feeServiceSMOImpl;
 
-    @RequestMapping(path = "/feeApi/service",method= RequestMethod.GET)
+    @Autowired
+    private IQueryParkspaceFee queryParkspaceFeeImpl;
+
+    @RequestMapping(path = "/service", method = RequestMethod.GET)
     public String serviceGet(HttpServletRequest request) {
-        return DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_ERROR,"不支持Get方法请求").toJSONString();
+        return DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_ERROR, "不支持Get方法请求").toJSONString();
     }
 
     /**
      * 用户服务统一处理接口
+     *
      * @param orderInfo
      * @param request
      * @return
      */
-    @RequestMapping(path = "/feeApi/service",method= RequestMethod.POST)
+    @RequestMapping(path = "/service", method = RequestMethod.POST)
     public String servicePost(@RequestBody String orderInfo, HttpServletRequest request) {
         BusinessServiceDataFlow businessServiceDataFlow = null;
         JSONObject responseJson = null;
@@ -53,23 +61,24 @@ public class FeeApi extends BaseController {
             preValiateOrderInfo(orderInfo);
             businessServiceDataFlow = this.writeDataToDataFlowContext(orderInfo, headers);
             responseJson = feeServiceSMOImpl.service(businessServiceDataFlow);
-        }catch (InitDataFlowContextException e){
-            logger.error("请求报文错误,初始化 BusinessServiceDataFlow失败"+orderInfo,e);
-            responseJson = DataTransactionFactory.createNoBusinessTypeBusinessResponseJson(orderInfo,ResponseConstant.RESULT_PARAM_ERROR,e.getMessage(),null);
-        }catch (InitConfigDataException e){
-            logger.error("请求报文错误,加载配置信息失败"+orderInfo,e);
-            responseJson = DataTransactionFactory.createNoBusinessTypeBusinessResponseJson(orderInfo,ResponseConstant.RESULT_PARAM_ERROR,e.getMessage(),null);
-        }catch (Exception e){
-            logger.error("请求订单异常",e);
-            responseJson = DataTransactionFactory.createBusinessResponseJson(businessServiceDataFlow,ResponseConstant.RESULT_CODE_ERROR,e.getMessage()+e,
+        } catch (InitDataFlowContextException e) {
+            logger.error("请求报文错误,初始化 BusinessServiceDataFlow失败" + orderInfo, e);
+            responseJson = DataTransactionFactory.createNoBusinessTypeBusinessResponseJson(orderInfo, ResponseConstant.RESULT_PARAM_ERROR, e.getMessage(), null);
+        } catch (InitConfigDataException e) {
+            logger.error("请求报文错误,加载配置信息失败" + orderInfo, e);
+            responseJson = DataTransactionFactory.createNoBusinessTypeBusinessResponseJson(orderInfo, ResponseConstant.RESULT_PARAM_ERROR, e.getMessage(), null);
+        } catch (Exception e) {
+            logger.error("请求订单异常", e);
+            responseJson = DataTransactionFactory.createBusinessResponseJson(businessServiceDataFlow, ResponseConstant.RESULT_CODE_ERROR, e.getMessage() + e,
                     null);
-        }finally {
+        } finally {
             return responseJson.toJSONString();
         }
     }
 
     /**
      * 这里预校验,请求报文中不能有 dataFlowId
+     *
      * @param orderInfo
      */
     private void preValiateOrderInfo(String orderInfo) {
@@ -80,17 +89,18 @@ public class FeeApi extends BaseController {
 
     /**
      * 获取请求信息
+     *
      * @param request
      * @param headers
      * @throws RuntimeException
      */
-    private void getRequestInfo(HttpServletRequest request,Map headers) throws Exception{
-        try{
-            super.initHeadParam(request,headers);
-            super.initUrlParam(request,headers);
-        }catch (Exception e){
-            logger.error("加载头信息失败",e);
-            throw new InitConfigDataException(ResponseConstant.RESULT_PARAM_ERROR,"加载头信息失败");
+    private void getRequestInfo(HttpServletRequest request, Map headers) throws Exception {
+        try {
+            super.initHeadParam(request, headers);
+            super.initUrlParam(request, headers);
+        } catch (Exception e) {
+            logger.error("加载头信息失败", e);
+            throw new InitConfigDataException(ResponseConstant.RESULT_PARAM_ERROR, "加载头信息失败");
         }
     }
 
@@ -101,4 +111,17 @@ public class FeeApi extends BaseController {
     public void setFeeServiceSMOImpl(IFeeServiceSMO feeServiceSMOImpl) {
         this.feeServiceSMOImpl = feeServiceSMOImpl;
     }
+
+
+    /**
+     * 停车费查询
+     *
+     * @param reqJson
+     * @return
+     */
+    @RequestMapping(value = "/parkSpaceFee", method = RequestMethod.POST)
+    public ResponseEntity<String> parkSpaceFee(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "code", "未包含小区编码");
+        return queryParkspaceFeeImpl.query(reqJson);
+    }
 }

+ 14 - 0
service-fee/src/main/java/com/java110/fee/bmo/IQueryParkspaceFee.java

@@ -0,0 +1,14 @@
+package com.java110.fee.bmo;
+
+import com.alibaba.fastjson.JSONObject;
+import org.springframework.http.ResponseEntity;
+
+public interface IQueryParkspaceFee {
+
+    /**
+     * 查询停车费
+     * @param reqJson
+     * @return
+     */
+    ResponseEntity<String> query(JSONObject reqJson);
+}

+ 107 - 0
service-fee/src/main/java/com/java110/fee/bmo/impl/QueryParkspaceFeeImpl.java

@@ -0,0 +1,107 @@
+package com.java110.fee.bmo.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.dto.fee.FeeDetailDto;
+import com.java110.dto.fee.FeeDto;
+import com.java110.dto.owner.OwnerCarDto;
+import com.java110.fee.bmo.IQueryParkspaceFee;
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
+import com.java110.intf.fee.IFeeInnerServiceSMO;
+import com.java110.intf.user.IOwnerCarInnerServiceSMO;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class QueryParkspaceFeeImpl implements IQueryParkspaceFee {
+
+    @Autowired
+    private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeInnerServiceSMO feeInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
+    @Override
+    public ResponseEntity<String> query(JSONObject reqJson) {
+        OwnerCarDto ownerCarDto = new OwnerCarDto();
+        ownerCarDto.setCommunityId(reqJson.getString("code"));
+
+        JSONArray data = new JSONArray();
+        List<OwnerCarDto> cars = ownerCarInnerServiceSMOImpl.queryOwnerCars(ownerCarDto);
+
+        for (OwnerCarDto carDto : cars) {
+            dealOwnerCar(reqJson, carDto, data);
+        }
+        return ResultVo.createResponseEntity(data);
+    }
+
+    /**
+     * @param reqJson
+     * @param carDto
+     * @param data
+     */
+    private void dealOwnerCar(JSONObject reqJson, OwnerCarDto carDto, JSONArray data) {
+
+        FeeDto feeDto = new FeeDto();
+        feeDto.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_PARKING_SPACE);
+        feeDto.setPayerObjId(carDto.getPsId());
+        List<FeeDto> feeDtos = feeInnerServiceSMOImpl.queryFees(feeDto);
+
+        for (FeeDto tmpFeeDto : feeDtos) {
+            dealFee(reqJson, carDto, data, tmpFeeDto);
+        }
+    }
+
+    /**
+     * 处理费用
+     *
+     * @param reqJson
+     * @param carDto
+     * @param data
+     * @param tmpFeeDto
+     */
+    private void dealFee(JSONObject reqJson, OwnerCarDto carDto, JSONArray data, FeeDto tmpFeeDto) {
+        FeeDetailDto feeDetailDto = new FeeDetailDto();
+        feeDetailDto.setCommunityId(reqJson.getString("code"));
+        feeDetailDto.setFeeId(tmpFeeDto.getFeeId());
+        List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+
+        for (FeeDetailDto tmpFeeDetailDto : feeDetailDtos) {
+            dealFeeDetail(reqJson, carDto, data, tmpFeeDto, tmpFeeDetailDto);
+        }
+    }
+
+    /**
+     * 缴费明细
+     *
+     * @param reqJson
+     * @param carDto
+     * @param data
+     * @param tmpFeeDto
+     * @param tmpFeeDetailDto
+     */
+    private void dealFeeDetail(JSONObject reqJson, OwnerCarDto carDto, JSONArray data, FeeDto tmpFeeDto, FeeDetailDto tmpFeeDetailDto) {
+
+        JSONObject dataObj = new JSONObject();
+        dataObj.put("Code", reqJson.getString("code"));
+        dataObj.put("serialNo", tmpFeeDetailDto.getDetailId());
+        dataObj.put("order", tmpFeeDetailDto.getDetailId());
+        dataObj.put("account", tmpFeeDto.getPayerObjId());
+        dataObj.put("payTime", tmpFeeDetailDto.getCreateTime());
+        dataObj.put("payTyte", "1");
+        dataObj.put("fee", tmpFeeDetailDto.getReceivedAmount());
+        dataObj.put("license", carDto.getCarNum());
+        dataObj.put("carType", carDto.getCarType());
+        dataObj.put("parkType", "1");
+        dataObj.put("carPhoto", "");
+        dataObj.put("update_time", tmpFeeDetailDto.getCreateTime());
+        data.add(dataObj);
+    }
+}