From 05683f2b2bdbdbe21cf17ad523c21ab338bd1c54 Mon Sep 17 00:00:00 2001
From: wuxw <928255095@qq.com>
Date: 星期二, 19 七月 2022 21:49:55 +0800
Subject: [PATCH] 优化添加设备 功能

---
 service-fee/src/main/java/com/java110/fee/api/ApplyRoomDiscountApi.java |  406 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 390 insertions(+), 16 deletions(-)

diff --git a/service-fee/src/main/java/com/java110/fee/api/ApplyRoomDiscountApi.java b/service-fee/src/main/java/com/java110/fee/api/ApplyRoomDiscountApi.java
old mode 100644
new mode 100755
index d092172..fc7731e
--- a/service-fee/src/main/java/com/java110/fee/api/ApplyRoomDiscountApi.java
+++ b/service-fee/src/main/java/com/java110/fee/api/ApplyRoomDiscountApi.java
@@ -1,31 +1,68 @@
 package com.java110.fee.api;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.applyRoomDiscount.ApplyRoomDiscountDto;
+import com.java110.dto.applyRoomDiscountType.ApplyRoomDiscountTypeDto;
+import com.java110.dto.fee.FeeDetailDto;
+import com.java110.dto.feeDiscount.FeeDiscountRuleDto;
+import com.java110.dto.file.FileDto;
+import com.java110.fee.bmo.account.ISaveAccountBMO;
+import com.java110.fee.bmo.account.IUpdateAccountBMO;
 import com.java110.fee.bmo.applyRoomDiscount.IAuditApplyRoomDiscountBMO;
 import com.java110.fee.bmo.applyRoomDiscount.IDeleteApplyRoomDiscountBMO;
 import com.java110.fee.bmo.applyRoomDiscount.IGetApplyRoomDiscountBMO;
 import com.java110.fee.bmo.applyRoomDiscount.ISaveApplyRoomDiscountBMO;
 import com.java110.fee.bmo.applyRoomDiscount.IUpdateApplyRoomDiscountBMO;
+import com.java110.fee.bmo.applyRoomDiscountType.IDeleteApplyRoomDiscountTypeBMO;
+import com.java110.fee.bmo.applyRoomDiscountType.IGetApplyRoomDiscountTypeBMO;
+import com.java110.fee.bmo.applyRoomDiscountType.ISaveApplyRoomDiscountTypeBMO;
+import com.java110.fee.bmo.applyRoomDiscountType.IUpdateApplyRoomDiscountTypeBMO;
+import com.java110.intf.acct.IAccountInnerServiceSMO;
+import com.java110.intf.common.IFileInnerServiceSMO;
+import com.java110.intf.common.IFileRelInnerServiceSMO;
+import com.java110.intf.fee.IApplyRoomDiscountInnerServiceSMO;
+import com.java110.intf.fee.IFeeDetailInnerServiceSMO;
+import com.java110.intf.fee.IFeeDiscountRuleInnerServiceSMO;
+import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO;
 import com.java110.po.applyRoomDiscount.ApplyRoomDiscountPo;
+import com.java110.po.applyRoomDiscountType.ApplyRoomDiscountTypePo;
+import com.java110.po.file.FileRelPo;
 import com.java110.utils.util.Assert;
 import com.java110.utils.util.BeanConvertUtil;
+import com.java110.utils.util.StringUtil;
 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.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
 @RestController
 @RequestMapping(value = "/applyRoomDiscount")
 public class ApplyRoomDiscountApi {
 
+    private static final String SPEC_RATE = "89002020980013"; // 鎵撴姌鐜�
+
     @Autowired
     private ISaveApplyRoomDiscountBMO saveApplyRoomDiscountBMOImpl;
+
     @Autowired
     private IUpdateApplyRoomDiscountBMO updateApplyRoomDiscountBMOImpl;
+
     @Autowired
     private IDeleteApplyRoomDiscountBMO deleteApplyRoomDiscountBMOImpl;
 
@@ -34,6 +71,45 @@
 
     @Autowired
     private IAuditApplyRoomDiscountBMO auditApplyRoomDiscountBMOImpl;
+
+    @Autowired
+    private ISaveApplyRoomDiscountTypeBMO saveApplyRoomDiscountTypeBMOImpl;
+
+    @Autowired
+    private IUpdateApplyRoomDiscountTypeBMO updateApplyRoomDiscountTypeBMOImpl;
+
+    @Autowired
+    private IDeleteApplyRoomDiscountTypeBMO deleteApplyRoomDiscountTypeBMOImpl;
+
+    @Autowired
+    private IGetApplyRoomDiscountTypeBMO getApplyRoomDiscountTypeBMOImpl;
+
+    @Autowired
+    private IApplyRoomDiscountInnerServiceSMO applyRoomDiscountInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDiscountRuleInnerServiceSMO feeDiscountRuleInnerServiceSMOImpl;
+
+    @Autowired
+    private IFeeDetailInnerServiceSMO feeDetailInnerServiceSMOImpl;
+
+    @Autowired
+    private IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl;
+
+    @Autowired
+    private IAccountInnerServiceSMO accountInnerServiceSMOImpl;
+
+    @Autowired
+    private ISaveAccountBMO saveAccountBMOImpl;
+
+    @Autowired
+    private IUpdateAccountBMO updateAccountBMOImpl;
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Autowired
+    private IFileRelInnerServiceSMO fileRelInnerServiceSMOImpl;
 
     /**
      * 浼樻儬鐢宠
@@ -44,18 +120,87 @@
      * @path /app/applyRoomDiscount/saveApplyRoomDiscount
      */
     @RequestMapping(value = "/saveApplyRoomDiscount", method = RequestMethod.POST)
-    public ResponseEntity<String> saveApplyRoomDiscount(@RequestBody JSONObject reqJson) {
-
+    public ResponseEntity<String> saveApplyRoomDiscount(@RequestBody JSONObject reqJson) throws ParseException {
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
         Assert.hasKeyAndValue(reqJson, "roomId", "璇锋眰鎶ユ枃涓湭鍖呭惈roomId");
         Assert.hasKeyAndValue(reqJson, "roomName", "璇锋眰鎶ユ枃涓湭鍖呭惈roomName");
         Assert.hasKeyAndValue(reqJson, "startTime", "璇锋眰鎶ユ枃涓湭鍖呭惈startTime");
         Assert.hasKeyAndValue(reqJson, "endTime", "璇锋眰鎶ユ枃涓湭鍖呭惈endTime");
         Assert.hasKeyAndValue(reqJson, "applyType", "璇锋眰鎶ユ枃涓湭鍖呭惈applyType");
-
-
+        if (!StringUtil.isEmpty(reqJson.getString("startTime"))) {
+            String startTime = reqJson.getString("startTime") + " 00:00:00";
+            reqJson.put("startTime", startTime);
+        }
+        if (!StringUtil.isEmpty(reqJson.getString("endTime"))) {
+            String endTime = reqJson.getString("endTime") + " 23:59:59";
+            reqJson.put("endTime", endTime);
+        }
         ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
-        return saveApplyRoomDiscountBMOImpl.save(applyRoomDiscountPo);
+        ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
+        applyRoomDiscountDto.setCommunityId(applyRoomDiscountPo.getCommunityId());
+        applyRoomDiscountDto.setRoomId(applyRoomDiscountPo.getRoomId());
+        applyRoomDiscountDto.setFeeId(applyRoomDiscountPo.getFeeId());
+        //鏌ヨ鎶樻墸鐢宠琛ㄤ腑璇ユ埧灞嬩笅绗﹀悎鏉′欢鐨勬渶鏂扮殑涓�鏉℃暟鎹�
+        List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryFirstApplyRoomDiscounts(applyRoomDiscountDto);
+        //鑾峰彇鏈濉啓鐨勫紑濮嬫椂闂�
+        Date startDate = simpleDateFormat.parse(applyRoomDiscountPo.getStartTime());
+        if (applyRoomDiscountDtos.size() == 0) {
+            //绌虹疆鎴夸紭鎯犲彲鐢�
+            applyRoomDiscountPo.setInUse("0");
+            applyRoomDiscountPo.setArdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ardId));
+            applyRoomDiscountPo.setState(ApplyRoomDiscountDto.STATE_APPLY);
+            saveFile(applyRoomDiscountPo);
+            return saveApplyRoomDiscountBMOImpl.save(applyRoomDiscountPo);
+        } else if (applyRoomDiscountDtos.size() > 0) {
+            //鍙栧嚭缁撴潫鏃堕棿
+            String endTime = applyRoomDiscountDtos.get(0).getEndTime();
+            Date finishTime = simpleDateFormat.parse(endTime);
+            if (startDate.getTime() - finishTime.getTime() >= 0) {
+                //绌虹疆鎴夸紭鎯犲彲鐢�
+                applyRoomDiscountPo.setInUse("0");
+                applyRoomDiscountPo.setArdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ardId));
+                applyRoomDiscountPo.setState(ApplyRoomDiscountDto.STATE_APPLY);
+                saveFile(applyRoomDiscountPo);
+                return saveApplyRoomDiscountBMOImpl.save(applyRoomDiscountPo);
+            } else {
+                throw new UnsupportedOperationException("璇ユ椂闂存宸茬粡鐢宠杩囩┖缃埧锛岃閲嶆柊杈撳叆绌虹疆鎴跨敵璇峰紑濮嬪拰缁撴潫鏃堕棿");
+            }
+        } else {
+            throw new UnsupportedOperationException("淇℃伅閿欒");
+        }
+    }
+
+    /**
+     * 涓婁紶鍥剧墖
+     *
+     * @param applyRoomDiscountPo
+     */
+    public void saveFile(ApplyRoomDiscountPo applyRoomDiscountPo) {
+        //鑾峰彇鍥剧墖
+        List<String> photos = applyRoomDiscountPo.getPhotos();
+        FileRelPo fileRelPo = new FileRelPo();
+        fileRelPo.setFileRelId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_relId));
+        fileRelPo.setObjId(applyRoomDiscountPo.getArdId());
+        //table琛ㄧず琛ㄥ瓨鍌� ftp琛ㄧずftp鏂囦欢瀛樺偍
+        fileRelPo.setSaveWay("ftp");
+        fileRelPo.setCreateTime(new Date());
+        //鍥剧墖涓婁紶
+        if (photos != null && photos.size() > 0) {
+            //19000琛ㄧず瑁呬慨鍥剧墖
+            fileRelPo.setRelTypeCd("19000");
+            for (String photo : photos) {
+                FileDto fileDto = new FileDto();
+                fileDto.setCommunityId("-1");
+                fileDto.setContext(photo);
+                fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+                fileDto.setFileName(fileDto.getFileId());
+                String fileName = fileInnerServiceSMOImpl.saveFile(fileDto);
+                fileRelPo.setFileRealName(fileName);
+                fileRelPo.setFileSaveName(fileName);
+                fileRelInnerServiceSMOImpl.saveFileRel(fileRelPo);
+            }
+        }
     }
 
     /**
@@ -67,19 +212,178 @@
      * @path /app/applyRoomDiscount/updateApplyRoomDiscount
      */
     @RequestMapping(value = "/updateApplyRoomDiscount", method = RequestMethod.POST)
-    public ResponseEntity<String> updateApplyRoomDiscount(@RequestBody JSONObject reqJson) {
-
+    public ResponseEntity<String> updateApplyRoomDiscount(@RequestBody JSONObject reqJson, @RequestHeader(value = "user-id") String userId) {
         Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
         Assert.hasKeyAndValue(reqJson, "state", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧鐘舵��");
         Assert.hasKeyAndValue(reqJson, "startTime", "璇锋眰鎶ユ枃涓湭鍖呭惈寮�濮嬫椂闂�");
         Assert.hasKeyAndValue(reqJson, "endTime", "璇锋眰鎶ユ枃涓湭鍖呭惈缁撴潫鏃堕棿");
         Assert.hasKeyAndValue(reqJson, "checkRemark", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧璇存槑");
-        Assert.hasKeyAndValue(reqJson, "discountId", "璇锋眰鎶ユ枃涓湭鍖呭惈鎶樻墸");
         Assert.hasKeyAndValue(reqJson, "ardId", "ardId涓嶈兘涓虹┖");
-
-
+        ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
+        applyRoomDiscountDto.setArdId(reqJson.getString("ardId"));
+        //鏌ヨ鎴垮眿浼樻儬鐢宠淇℃伅
+        List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
+        Assert.listOnlyOne(applyRoomDiscountDtos, "鏌ヨ鎴垮眿浼樻儬淇℃伅閿欒锛�");
+        //鑾峰彇鎴垮眿浼樻儬瀹℃牳鐘舵��
+        String state = applyRoomDiscountDtos.get(0).getState();
+        if (!StringUtil.isEmpty(state) && !state.equals("1")) {
+            throw new IllegalArgumentException("璇ユ埧灞嬪凡楠岃繃鎴匡紝鏃犳硶鍐嶆杩涜楠屾埧锛�");
+        }
+        reqJson.put("checkUserId", userId);
         ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
         return updateApplyRoomDiscountBMOImpl.update(applyRoomDiscountPo);
+    }
+
+    /**
+     * 淇敼浼樻儬鐢宠
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /applyRoomDiscount/editApplyRoomDiscount
+     * @path /app/applyRoomDiscount/editApplyRoomDiscount
+     */
+    @RequestMapping(value = "/editApplyRoomDiscount", method = RequestMethod.POST)
+    public ResponseEntity<String> editApplyRoomDiscount(@RequestBody JSONObject reqJson, @RequestHeader(value = "user-id") String userId) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
+        Assert.hasKeyAndValue(reqJson, "state", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧鐘舵��");
+        Assert.hasKeyAndValue(reqJson, "startTime", "璇锋眰鎶ユ枃涓湭鍖呭惈寮�濮嬫椂闂�");
+        Assert.hasKeyAndValue(reqJson, "endTime", "璇锋眰鎶ユ枃涓湭鍖呭惈缁撴潫鏃堕棿");
+        Assert.hasKeyAndValue(reqJson, "ardId", "ardId涓嶈兘涓虹┖");
+        ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
+        return updateApplyRoomDiscountBMOImpl.update(applyRoomDiscountPo);
+    }
+
+    /**
+     * 瀹℃壒鎺ュ彛
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /applyRoomDiscount/updateReviewApplyRoomDiscount
+     * @path /app/applyRoomDiscount/updateReviewApplyRoomDiscount
+     */
+    @RequestMapping(value = "/updateReviewApplyRoomDiscount", method = RequestMethod.POST)
+    @Java110Transactional
+    public ResponseEntity<String> updateReviewApplyRoomDiscount(@RequestBody JSONObject reqJson, @RequestHeader(value = "user-id") String userId, DataFlowContext dataFlowContext) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
+        Assert.hasKeyAndValue(reqJson, "state", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧鐘舵��");
+        Assert.hasKeyAndValue(reqJson, "startTime", "璇锋眰鎶ユ枃涓湭鍖呭惈寮�濮嬫椂闂�");
+        Assert.hasKeyAndValue(reqJson, "endTime", "璇锋眰鎶ユ枃涓湭鍖呭惈缁撴潫鏃堕棿");
+        Assert.hasKeyAndValue(reqJson, "reviewRemark", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧璇存槑");
+        Assert.hasKeyAndValue(reqJson, "ardId", "ardId涓嶈兘涓虹┖");
+        ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
+        applyRoomDiscountDto.setArdId(reqJson.getString("ardId"));
+        //鏌ヨ鎴垮眿浼樻儬鐢宠淇℃伅
+        List<ApplyRoomDiscountDto> applyRoomDiscountDtos = applyRoomDiscountInnerServiceSMOImpl.queryApplyRoomDiscounts(applyRoomDiscountDto);
+        Assert.listOnlyOne(applyRoomDiscountDtos, "鏌ヨ鎴垮眿浼樻儬淇℃伅閿欒锛�");
+        //鑾峰彇鎴垮眿浼樻儬瀹℃牳鐘舵��
+        String state = applyRoomDiscountDtos.get(0).getState();
+        String stateNow = reqJson.getString("state");
+        String returnWay = reqJson.getString("returnWay");
+        if (!StringUtil.isEmpty(state) && state.equals("4")) {
+            throw new IllegalArgumentException("璇ユ埧灞嬪凡瀹℃牳杩囷紝鏃犳硶鍐嶆杩涜瀹℃牳锛�");
+        }
+        if (reqJson.containsKey("selectedFees") && !StringUtil.isEmpty(reqJson.getString("selectedFees")) && stateNow.equals("4") && "1002".equals(returnWay)) {
+            //鑾峰彇鍓嶇浼犳潵鐨勭即璐瑰巻鍙�
+            String selectedFees = reqJson.getString("selectedFees");
+            JSONArray feeDetailIds = JSON.parseArray(selectedFees);
+            //鑾峰彇浼樻儬
+            JSONArray discounts = reqJson.getJSONArray("discounts");
+            BigDecimal cashBackAmount = new BigDecimal("0.00");//杩旂幇鎬婚噾棰�
+            for (int i = 0; i < discounts.size(); i++) {
+                JSONObject discountObject = discounts.getJSONObject(i);
+                JSONArray feeDiscountSpecs = discountObject.getJSONArray("feeDiscountSpecs");
+                //鑾峰彇瑙勫垯id
+                String ruleId = discounts.getJSONObject(i).getString("ruleId");
+                FeeDiscountRuleDto feeDiscountRuleDto = new FeeDiscountRuleDto();
+                feeDiscountRuleDto.setRuleId(ruleId);
+                List<FeeDiscountRuleDto> feeDiscountRuleDtos = feeDiscountRuleInnerServiceSMOImpl.queryFeeDiscountRules(feeDiscountRuleDto);
+                Assert.listOnlyOne(feeDiscountRuleDtos, "鏌ヨ鎶樻墸瑙勫垯閿欒锛�");
+                //鑾峰彇鎶樻墸绫诲瀷(1: 鎵撴姌  2:鍑忓厤  3:婊炵撼閲�  4:绌虹疆鎴挎墦鎶�  5:绌虹疆鎴垮噺鍏�)
+                String discountSmallType = feeDiscountRuleDtos.get(0).getDiscountSmallType();
+                //鑾峰彇瑙勫垯
+                //String specValue = feeDiscountSpecs.getJSONObject(1).getString("specValue");
+                String specValue = getRateSpecValueByFeeDiscountSpecs(feeDiscountSpecs);
+                if (!StringUtil.isEmpty(discountSmallType) && (discountSmallType.equals("1") || discountSmallType.equals("4"))) { //鎵撴姌
+                    for (int index = 0; index < feeDetailIds.size(); index++) {
+                        String feeDetailId = String.valueOf(feeDetailIds.get(index));
+                        FeeDetailDto feeDetailDto = new FeeDetailDto();
+                        feeDetailDto.setDetailId(feeDetailId);
+                        List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+                        Assert.listOnlyOne(feeDetailDtos, "鏌ヨ璐圭敤鏄庣粏琛ㄩ敊璇紒");
+
+                        BigDecimal receivedAmount = new BigDecimal(feeDetailDtos.get(0).getReceivedAmount());//鑾峰彇瀹炴敹閲戦
+                        BigDecimal spec = new BigDecimal(specValue);//鎶樻墸
+                        //璁$畻鎵撴姌鍚庣殑瀹炴敹閲戦
+                        BigDecimal money = receivedAmount.multiply(spec);
+                        cashBackAmount = cashBackAmount.add(receivedAmount.subtract(money)); //璁$畻浼樻儬鐨勯噾棰�
+                    }
+                } else if (!StringUtil.isEmpty(discountSmallType) && (discountSmallType.equals("2") || discountSmallType.equals("5"))) { //鍑忓厤
+                    for (int index = 0; index < feeDetailIds.size(); index++) {
+                        String feeDetailId = String.valueOf(feeDetailIds.get(index));
+                        FeeDetailDto feeDetailDto = new FeeDetailDto();
+                        feeDetailDto.setDetailId(feeDetailId);
+                        List<FeeDetailDto> feeDetailDtos = feeDetailInnerServiceSMOImpl.queryFeeDetails(feeDetailDto);
+                        Assert.listOnlyOne(feeDetailDtos, "鏌ヨ璐圭敤鏄庣粏琛ㄩ敊璇紒");
+
+                        BigDecimal spec = new BigDecimal(specValue);//鍑忓厤閲戦
+                        cashBackAmount = cashBackAmount.add(spec); //璁$畻浼樻儬鐨勯噾棰�
+                    }
+                }
+                DecimalFormat df = new DecimalFormat("0.00");
+                reqJson.put("cashBackAmount", df.format(cashBackAmount));
+                //澶勭悊璐︽埛杩旂幇
+                JSONArray businesses = new JSONArray();
+                updateAccountBMOImpl.cashBackAccount(reqJson, dataFlowContext, businesses);
+                reqJson.put("inUse", 1);
+                reqJson.put("returnAmount", df.format(cashBackAmount));
+            }
+        } else {
+            reqJson.put("inUse", 0);
+        }
+        reqJson.put("reviewUserId", userId);
+        ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
+        return updateApplyRoomDiscountBMOImpl.update(applyRoomDiscountPo);
+    }
+
+    /**
+     * 89002020980001	102020001	鏈堜唤
+     * 89002020980002	102020001	鎵撴姌鐜�
+     * 89002020980003	102020002	鏈堜唤
+     * 89002020980004	102020002	鍑忓厤閲戦
+     * 89002020980005	102020003	婊炵撼閲�
+     * 89002020980006	102020004	婊炵撼閲�
+     * 89002020980007	102020005	鏈堜唤
+     * 89002020980008	102020005	鎵撴姌鐜�
+     * 89002020980009	102020005	娆犺垂鏃堕暱
+     * 89002020980010	102020006	鏈堜唤
+     * 89002020980011	102020006	鍑忓厤閲戦
+     * 89002020980012	102020007	鏈堜唤
+     * 89002020980013	102020007	鎵撴姌鐜�
+     *
+     * @param feeDiscountSpecs
+     * @return
+     */
+    private String getRateSpecValueByFeeDiscountSpecs(JSONArray feeDiscountSpecs) {
+
+        for (int specIndex = 0; specIndex < feeDiscountSpecs.size(); specIndex++) {
+            if (SPEC_RATE.equals(feeDiscountSpecs.getJSONObject(specIndex).getString("specId"))) {
+                return feeDiscountSpecs.getJSONObject(specIndex).getString("specValue");
+            }
+            if ("89002020980002".equals(feeDiscountSpecs.getJSONObject(specIndex).getString("specId"))) {
+                return feeDiscountSpecs.getJSONObject(specIndex).getString("specValue");
+            }
+            if ("89002020980004".equals(feeDiscountSpecs.getJSONObject(specIndex).getString("specId"))) {
+                return feeDiscountSpecs.getJSONObject(specIndex).getString("specValue");
+            }
+            if ("89002020980008".equals(feeDiscountSpecs.getJSONObject(specIndex).getString("specId"))) {
+                return feeDiscountSpecs.getJSONObject(specIndex).getString("specValue");
+            }
+            if ("89002020980011".equals(feeDiscountSpecs.getJSONObject(specIndex).getString("specId"))) {
+                return feeDiscountSpecs.getJSONObject(specIndex).getString("specValue");
+            }
+        }
+
+        throw new IllegalArgumentException("鏈壘鍒� 鎵撴姌绯绘暟");
     }
 
     /**
@@ -92,13 +396,10 @@
      */
     @RequestMapping(value = "/auditApplyRoomDiscount", method = RequestMethod.POST)
     public ResponseEntity<String> auditApplyRoomDiscount(@RequestBody JSONObject reqJson) {
-
         Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈灏忓尯淇℃伅");
         Assert.hasKeyAndValue(reqJson, "state", "璇锋眰鎶ユ枃涓湭鍖呭惈楠屾埧鐘舵��");
         Assert.hasKeyAndValue(reqJson, "reviewRemark", "璇锋眰鎶ユ枃涓湭鍖呭惈瀹℃牳璇存槑");
         Assert.hasKeyAndValue(reqJson, "ardId", "ardId涓嶈兘涓虹┖");
-
-
         ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
         return auditApplyRoomDiscountBMOImpl.audit(applyRoomDiscountPo);
     }
@@ -114,10 +415,7 @@
     @RequestMapping(value = "/deleteApplyRoomDiscount", method = RequestMethod.POST)
     public ResponseEntity<String> deleteApplyRoomDiscount(@RequestBody JSONObject reqJson) {
         Assert.hasKeyAndValue(reqJson, "communityId", "灏忓尯ID涓嶈兘涓虹┖");
-
         Assert.hasKeyAndValue(reqJson, "ardId", "ardId涓嶈兘涓虹┖");
-
-
         ApplyRoomDiscountPo applyRoomDiscountPo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountPo.class);
         return deleteApplyRoomDiscountBMOImpl.delete(applyRoomDiscountPo);
     }
@@ -132,18 +430,94 @@
      */
     @RequestMapping(value = "/queryApplyRoomDiscount", method = RequestMethod.GET)
     public ResponseEntity<String> queryApplyRoomDiscount(@RequestParam(value = "communityId") String communityId,
+                                                         @RequestParam(value = "ardId", required = false) String ardId,
                                                          @RequestParam(value = "roomName", required = false) String roomName,
                                                          @RequestParam(value = "roomId", required = false) String roomId,
                                                          @RequestParam(value = "state", required = false) String state,
+                                                         @RequestParam(value = "applyType", required = false) String applyType,
                                                          @RequestParam(value = "page") int page,
                                                          @RequestParam(value = "row") int row) {
         ApplyRoomDiscountDto applyRoomDiscountDto = new ApplyRoomDiscountDto();
+        applyRoomDiscountDto.setArdId(ardId);
         applyRoomDiscountDto.setPage(page);
         applyRoomDiscountDto.setRow(row);
         applyRoomDiscountDto.setCommunityId(communityId);
         applyRoomDiscountDto.setRoomName(roomName);
         applyRoomDiscountDto.setRoomId(roomId);
         applyRoomDiscountDto.setState(state);
+        applyRoomDiscountDto.setApplyType(applyType);
         return getApplyRoomDiscountBMOImpl.get(applyRoomDiscountDto);
     }
+
+    /**
+     * 寰俊淇濆瓨娑堟伅妯℃澘
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /applyRoomDiscount/saveApplyRoomDiscountType
+     * @path /app/applyRoomDiscount/saveApplyRoomDiscountType
+     */
+    @RequestMapping(value = "/saveApplyRoomDiscountType", method = RequestMethod.POST)
+    public ResponseEntity<String> saveApplyRoomDiscountType(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
+        Assert.hasKeyAndValue(reqJson, "typeName", "璇锋眰鎶ユ枃涓湭鍖呭惈typeName");
+        ApplyRoomDiscountTypePo applyRoomDiscountTypePo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountTypePo.class);
+        return saveApplyRoomDiscountTypeBMOImpl.save(applyRoomDiscountTypePo);
+    }
+
+    /**
+     * 寰俊淇敼娑堟伅妯℃澘
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /applyRoomDiscount/updateApplyRoomDiscountType
+     * @path /app/applyRoomDiscount/updateApplyRoomDiscountType
+     */
+    @RequestMapping(value = "/updateApplyRoomDiscountType", method = RequestMethod.POST)
+    public ResponseEntity<String> updateApplyRoomDiscountType(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "璇锋眰鎶ユ枃涓湭鍖呭惈communityId");
+        Assert.hasKeyAndValue(reqJson, "typeName", "璇锋眰鎶ユ枃涓湭鍖呭惈typeName");
+        Assert.hasKeyAndValue(reqJson, "applyType", "applyType涓嶈兘涓虹┖");
+        ApplyRoomDiscountTypePo applyRoomDiscountTypePo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountTypePo.class);
+        return updateApplyRoomDiscountTypeBMOImpl.update(applyRoomDiscountTypePo);
+    }
+
+    /**
+     * 寰俊鍒犻櫎娑堟伅妯℃澘
+     *
+     * @param reqJson
+     * @return
+     * @serviceCode /applyRoomDiscount/deleteApplyRoomDiscountType
+     * @path /app/applyRoomDiscount/deleteApplyRoomDiscountType
+     */
+    @RequestMapping(value = "/deleteApplyRoomDiscountType", method = RequestMethod.POST)
+    public ResponseEntity<String> deleteApplyRoomDiscountType(@RequestBody JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "communityId", "灏忓尯ID涓嶈兘涓虹┖");
+        Assert.hasKeyAndValue(reqJson, "applyType", "applyType涓嶈兘涓虹┖");
+        ApplyRoomDiscountTypePo applyRoomDiscountTypePo = BeanConvertUtil.covertBean(reqJson, ApplyRoomDiscountTypePo.class);
+        return deleteApplyRoomDiscountTypeBMOImpl.delete(applyRoomDiscountTypePo);
+    }
+
+    /**
+     * 寰俊鍒犻櫎娑堟伅妯℃澘
+     *
+     * @param communityId 灏忓尯ID
+     * @return
+     * @serviceCode /applyRoomDiscount/queryApplyRoomDiscountType
+     * @path /app/applyRoomDiscount/queryApplyRoomDiscountType
+     */
+    @RequestMapping(value = "/queryApplyRoomDiscountType", method = RequestMethod.GET)
+    public ResponseEntity<String> queryApplyRoomDiscountType(@RequestParam(value = "communityId") String communityId,
+                                                             @RequestParam(value = "applyType", required = false) String applyType,
+                                                             @RequestParam(value = "typeName", required = false) String typeName,
+                                                             @RequestParam(value = "page") int page,
+                                                             @RequestParam(value = "row") int row) {
+        ApplyRoomDiscountTypeDto applyRoomDiscountTypeDto = new ApplyRoomDiscountTypeDto();
+        applyRoomDiscountTypeDto.setPage(page);
+        applyRoomDiscountTypeDto.setRow(row);
+        applyRoomDiscountTypeDto.setCommunityId(communityId);
+        applyRoomDiscountTypeDto.setApplyType(applyType);
+        applyRoomDiscountTypeDto.setTypeName(typeName);
+        return getApplyRoomDiscountTypeBMOImpl.get(applyRoomDiscountTypeDto);
+    }
 }

--
Gitblit v1.8.0