浏览代码

退款申请bugfix

zhijiezhao 2 年之前
父节点
当前提交
11da116781

+ 11 - 7
src/main/java/com/caimei/modules/bulkpurchase/web/CmRefundsProductController.java

@@ -41,9 +41,8 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 退款信息列表Controller
@@ -346,8 +345,10 @@ public class CmRefundsProductController extends BaseController {
             Integer freightNum = 0;
             //是否是订金充值订单
             boolean rechargeGoods = false;
+            Integer shopOrderId = 0;
             if (cmReturnedPurchase.getCmReturnedPurchaseProductList() != null && cmReturnedPurchase.getCmReturnedPurchaseProductList().size() > 0) {
                 for (List<CmReturnedPurchaseProduct> item : cmReturnedPurchase.getCmReturnedPurchaseProductList()) {
+                    shopOrderId = item.get(0).getShopOrderID();
                     if (item != null && item.size() > 0) {
                         for (CmReturnedPurchaseProduct bean : item) {
                             if (bean.getProductID().equals(999)) {
@@ -404,11 +405,18 @@ public class CmRefundsProductController extends BaseController {
             if (cmReturnedPurchase.getRefundOfflineFee() == null) {
                 cmReturnedPurchase.setRefundOfflineFee(0d);
             }
+
             //线上退款
             if ("2".equals(cmReturnedPurchase.getReturnedWay())) {
                 double refundOnlineFee = refundFee - newOrder.getBalancePayFee();
                 cmReturnedPurchase.setRefundOnlineFee(refundOnlineFee);
                 cmReturnedPurchase.setRefundBalanceFee(newOrder.getBalancePayFee());
+                //查找线上订单已支付金额,申请退款金额不能大于此金额
+                Double onlinePay=cmReturnedPurchaseDao.findOnlinePay(shopOrderId);
+                if(cmReturnedPurchase.getFreeRefundFee()>onlinePay){
+                    model.addAttribute("errorMsg", "退款金额不能大于已付金额");
+                    return applyRefound(cmReturnedPurchase, request, response, model);
+                }
             } else if ("1".equals(cmReturnedPurchase.getReturnedWay()) && cmReturnedPurchase.getRefundBalanceFee() == 0d) {
                 //线上支付,全部退余额
                 cmReturnedPurchase.setRefundBalanceFee(refundFee);
@@ -438,10 +446,6 @@ public class CmRefundsProductController extends BaseController {
                         return applyRefound(cmReturnedPurchase, request, response, model);
                     }
                 }
-                if(cmReturnedPurchase.getFreeRefundFee()>refundFee){
-                    model.addAttribute("errorMsg", "退款金额不能大于已付金额");
-                    return applyRefound(cmReturnedPurchase, request, response, model);
-                }
             }
 
             cmReturnedPurchase.setRefundFee(refundFee);

+ 2 - 0
src/main/java/com/caimei/modules/order/dao/CmReturnedPurchaseDao.java

@@ -43,4 +43,6 @@ public interface CmReturnedPurchaseDao extends CrudDao<CmReturnedPurchase> {
     Double findRefundCharge(String orderRequestNo);
 
     Double findPayAmount(String orderRequestNo);
+
+    Double findOnlinePay(Integer shopOrderId);
 }

+ 1 - 0
src/main/java/com/caimei/modules/order/dao/NewShopOrderDao.java

@@ -2,6 +2,7 @@ package com.caimei.modules.order.dao;
 
 import com.caimei.modules.order.entity.CmPayShop;
 import com.caimei.modules.order.entity.NewShopOrder;
+import com.caimei.modules.order.entity.SettleRecord;
 import com.thinkgem.jeesite.common.persistence.CrudDao;
 import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
 import org.apache.ibatis.annotations.Param;

+ 4 - 0
src/main/java/com/caimei/modules/order/service/CmReturnedPurchaseService.java

@@ -177,6 +177,10 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
         if (num <= 0) {
             return "请填写退货/取消数量";
         }
+        if(2==cmReturnedPurchase.getRefundType()){
+            cmReturnedPurchase.setRefundFee(cmReturnedPurchase.getFreeRefundFee());
+            cmReturnedPurchase.setReturnedPurchaseFee(cmReturnedPurchase.getFreeRefundFee());
+        }
         String id = cmReturnedPurchase.getId();//存在Id则是重申或者再次申请
         if (StringUtils.isEmpty(id)) {
             //正常插入数据流程---新申请

+ 12 - 3
src/main/resources/mappings/modules/order/CmReturnedPurchaseMapper.xml

@@ -40,7 +40,8 @@
 		b.orderType as "orderType",
 		c.userName as "userName",
 		c.name as "name",
-		c.userOrganizeID as "userOrganizeId"
+		c.userOrganizeID as "userOrganizeId",
+		a.refundType as "refundType"
 	</sql>
 
 	<sql id="cmReturnedPurchaseJoins">
@@ -211,7 +212,8 @@
 			applicationUserID,
 			returnTime,
 			reviewUserID,
-			confirmReturnTime
+			confirmReturnTime,
+            refundType
 		) VALUES (
 			#{returnedNo},
 			#{orderID},
@@ -239,7 +241,8 @@
 			#{applicationUserID},
 			#{returnTime},
 			#{reviewUserID},
-			#{confirmReturnTime}
+			#{confirmReturnTime},
+		    #{refundType}
 		)
 	</insert>
 	<insert id="insertCmRefundRecord">
@@ -440,4 +443,10 @@
 		select associateAmount from cm_receipt_order_relation
 		where orderRequestNo = #{orderRequestNo}
 	</select>
+	<select id="findOnlinePay" resultType="java.lang.Double">
+		SELECT SUM(receiptAmount) FROM
+		cm_discern_receipt cdr
+		LEFT JOIN cm_receipt_order_relation cror ON cror.receiptID=cdr.Id
+		WHERE shopOrderId=#{shopOrderId}
+	</select>
 </mapper>

+ 26 - 3
src/main/webapp/WEB-INF/views/modules/bulkpurchase/applyRefoundForm.jsp

@@ -270,12 +270,21 @@
             <td><b>退款编号:</b>
                 ${empty returnedNo?'':(returnedNo)}
             </td>
+            <td><b>退款模式:</b>
+                <form:select path="refundType" class="input-medium" id="refundType" onchange="changeType()">
+                    <form:option value="1">按商品金额退款</form:option>
+                    <form:option value="2">自定义金额退款</form:option>
+                </form:select>
+            </td>
             <td><b>申请时间:</b>
                     ${returnTime}
             </td>
-            <td><b>申请金额:</b>
+            <td id="spt"><b>申请金额:</b>
                 <span class="refundFee"><fmt:formatNumber value="${empty cmReturnedPurchase.refundFee?'0.00':(cmReturnedPurchase.refundFee)}" pattern="#0.00"/></span>元
             </td>
+            <td id="zdy" hidden><b>申请金额:</b>
+                <from:input id="freeRefundFee" path="freeRefundFee" onkeyup="num(this)"   placeholder="¥0.00" value="${empty cmReturnedPurchase.freeRefundFee?'':(cmReturnedPurchase.freeRefundFee)}"></from:input>
+            </td>
             <td><b>退款状态:</b>
                 <c:if test="${empty status}">
                     待申请
@@ -306,7 +315,7 @@
                         <input class="check-item-review refundOfflineFee" type="checkbox"   name="returnedWay" value='3' onclick="showBankInfo()"/>
                         线下转账
                         <from:input path="refundOfflineFee" onkeyup="num(this)"   placeholder="¥0.00" value="${empty cmReturnedPurchase.refundOfflineFee?'':(cmReturnedPurchase.refundOfflineFee)}"></from:input>
-                        <c:if test="${empty order.rechargeGoods}">
+                        <c:if test="${order.rechargeGoods ne 1 && order.rechargeGoods ne 2}">
                             <input class="check-item-review refundBalanceFee" type="checkbox"  name="returnedWay" value='1'/>
                             账户余额
                             <from:input path="refundBalanceFee" onkeyup="num(this)" placeholder="¥0.00" value="${empty cmReturnedPurchase.refundBalanceFee?'':(cmReturnedPurchase.refundBalanceFee)}"></from:input>
@@ -818,10 +827,24 @@
         }
     }
 
+    function showBankInfo() {
+        if (${!returnOnline}){
+            var obj = document.getElementsByName("returnedWay"),
+                blockEle = $('.refund-details-block');
+            if(obj){
+                if(obj[0].checked){
+                    //显示银行信息
+                    blockEle.show();
+                } else {
+                    blockEle.hide();
+                }
+            }
+        }
+    }
+
     $(function () {
         var orderStatus = $("#orderStatus").val();
         var isBuFenFaHuo = $("#isBuFenFaHuo").val();
-        debugger
         if(isBuFenFaHuo == "true"){
             $(".shopOrderInput").attr("readonly",true);
             /*$(".shopOrderInput1").attr("readonly",false);*///设置邮费的可修改