Просмотр исходного кода

优化线上缴费退费功能

java110 лет назад: 3
Родитель
Сommit
aab84ddd91

+ 10 - 0
java110-bean/src/main/java/com/java110/dto/fee/FeeDetailDto.java

@@ -71,6 +71,8 @@ public class FeeDetailDto extends PageDto implements Serializable {
     private String ardId;
     private String[] states;
 
+    private String payOrderId;
+
     private List<FeeAccountDetailDto> feeAccountDetailDtoList;
     private List<PayFeeDetailDiscountDto> payFeeDetailDiscountDtoList;
 
@@ -349,4 +351,12 @@ public class FeeDetailDto extends PageDto implements Serializable {
     public void setPayableAmount(String payableAmount) {
         this.payableAmount = payableAmount;
     }
+
+    public String getPayOrderId() {
+        return payOrderId;
+    }
+
+    public void setPayOrderId(String payOrderId) {
+        this.payOrderId = payOrderId;
+    }
 }

+ 10 - 0
java110-bean/src/main/java/com/java110/po/fee/PayFeeDetailPo.java

@@ -29,6 +29,8 @@ public class PayFeeDetailPo implements Serializable {
 
     private String state;
 
+    private String payOrderId;
+
     public String getDetailId() {
         return detailId;
     }
@@ -148,4 +150,12 @@ public class PayFeeDetailPo implements Serializable {
     public void setPayableAmount(String payableAmount) {
         this.payableAmount = payableAmount;
     }
+
+    public String getPayOrderId() {
+        return payOrderId;
+    }
+
+    public void setPayOrderId(String payOrderId) {
+        this.payOrderId = payOrderId;
+    }
 }

+ 12 - 3
java110-db/src/main/resources/mapper/fee/PayFeeDetailNewV1ServiceDaoImplMapper.xml

@@ -6,12 +6,12 @@
     <!-- 保存费用明细信息 add by wuxw 2018-07-03 -->
     <insert id="savePayFeeDetailNewInfo" parameterType="Map">
         insert into pay_fee_detail(
-        prime_rate,detail_id,receivable_amount,cycles,remark,start_time,received_amount,state,end_time,community_id,fee_id,b_id,payable_amount
+        prime_rate,detail_id,receivable_amount,cycles,remark,start_time,received_amount,state,end_time,community_id,fee_id,b_id,payable_amount,pay_order_id
         <if test="createTime != null">
             ,create_time
         </if>
         ) values (
-        #{primeRate},#{detailId},#{receivableAmount},#{cycles},#{remark},#{startTime},#{receivedAmount},#{state},#{endTime},#{communityId},#{feeId},#{bId},#{payableAmount}
+        #{primeRate},#{detailId},#{receivableAmount},#{cycles},#{remark},#{startTime},#{receivedAmount},#{state},#{endTime},#{communityId},#{feeId},#{bId},#{payableAmount},#{payOrderId}
         <if test="createTime != null">
             ,#{createTime}
         </if>
@@ -24,7 +24,7 @@
         detailId,t.receivable_amount,t.receivable_amount receivableAmount,t.cycles,t.remark,t.status_cd,t.status_cd
         statusCd,t.start_time,t.start_time startTime,t.received_amount,t.received_amount
         receivedAmount,t.state,t.end_time,t.end_time endTime,t.community_id,t.community_id communityId,t.fee_id,t.fee_id
-        feeId,t.payable_amount,t.payable_amount payableAmount
+        feeId,t.payable_amount,t.payable_amount payableAmount,t.pay_order_id payOrderId
         from pay_fee_detail t
         where 1 =1
         <if test="primeRate !=null and primeRate != ''">
@@ -66,6 +66,9 @@
         <if test="feeId !=null and feeId != ''">
             and t.fee_id= #{feeId}
         </if>
+        <if test="payOrderId !=null and payOrderId != ''">
+            and t.pay_order_id= #{payOrderId}
+        </if>
         order by t.create_time desc
         <if test="page != -1 and page != null ">
             limit #{page}, #{row}
@@ -111,6 +114,9 @@
         <if test="feeId !=null and feeId != ''">
             , t.fee_id= #{feeId}
         </if>
+        <if test="payOrderId !=null and payOrderId != ''">
+            , t.pay_order_id= #{payOrderId}
+        </if>
         where 1=1
         <if test="detailId !=null and detailId != ''">
             and t.detail_id= #{detailId}
@@ -167,5 +173,8 @@
         <if test="feeId !=null and feeId != ''">
             and t.fee_id= #{feeId}
         </if>
+        <if test="payOrderId !=null and payOrderId != ''">
+            and t.pay_order_id= #{payOrderId}
+        </if>
     </select>
 </mapper>

+ 1 - 0
service-fee/src/main/java/com/java110/fee/bmo/fee/impl/FeeBMOImpl.java

@@ -417,6 +417,7 @@ public class FeeBMOImpl extends ApiBaseBMO implements IFeeBMO {
         if (StringUtil.isEmpty(payFeeDetail.getPayableAmount())) {
             payFeeDetail.setPayableAmount("0.0");
         }
+        payFeeDetail.setPayOrderId(paramInJson.getString("oId"));
         int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetail);
         if (flag < 1) {
             throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "保存费用明细失败");

+ 1 - 0
service-fee/src/main/java/com/java110/fee/cmd/fee/PayBatchFeeCmd.java

@@ -179,6 +179,7 @@ public class PayBatchFeeCmd extends Cmd {
             DistributedLock.waitGetDistributedLock(key, requestId);
             JSONObject feeDetail = addFeeDetail(paramObj);
             PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(feeDetail, PayFeeDetailPo.class);
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
             int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
                 throw new CmdException("缴费失败");

+ 1 - 0
service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeeCmd.java

@@ -294,6 +294,7 @@ public class PayFeeCmd extends Cmd {
                     feeAccountDetailServiceSMOImpl.saveFeeAccountDetail(feeAccountDetailPo);
                 }
             }
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
             int flag = payFeeDetailNewV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
                 throw new CmdException("缴费失败");

+ 2 - 0
service-fee/src/main/java/com/java110/fee/cmd/fee/PayFeePreTempCarInoutCmd.java

@@ -162,6 +162,8 @@ public class PayFeePreTempCarInoutCmd extends Cmd {
         double receivableAmount = money;
         businessFeeDetail.put("receivableAmount", receivableAmount);
         PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(businessFeeDetail, PayFeeDetailPo.class);
+        payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
+
         int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
 
         if (flag < 1) {

+ 12 - 1
service-fee/src/main/java/com/java110/fee/cmd/fee/PayOweFeeCmd.java

@@ -123,6 +123,9 @@ public class PayOweFeeCmd extends Cmd {
         for (int feeIndex = 0; feeIndex < fees.size(); feeIndex++) {
             feeObj = fees.getJSONObject(feeIndex);
             feeObj.put("communityId", paramObj.getString("communityId"));
+            if(paramObj.containsKey("oId")) {
+                feeObj.put("oId", paramObj.getString("oId"));
+            }
             String remark = paramObj.getString("remark");
             feeObj.put("remark", remark);
             if (!feeObj.containsKey("primeRate") && AppDto.OWNER_WECHAT_PAY.equals(appId)) {  //微信公众号支付
@@ -159,7 +162,9 @@ public class PayOweFeeCmd extends Cmd {
         dataFlowContext.setResponseEntity(ResultVo.createResponseEntity(feeReceiptDetailDtos));
     }
 
-    private void getFeeReceiptDetailPo(ICmdDataFlowContext dataFlowContext, JSONObject paramObj, List<FeeReceiptDetailPo> feeReceiptDetailPos, List<FeeReceiptPo> feeReceiptPos) {
+    private void getFeeReceiptDetailPo(ICmdDataFlowContext dataFlowContext, JSONObject paramObj,
+                                       List<FeeReceiptDetailPo> feeReceiptDetailPos,
+                                       List<FeeReceiptPo> feeReceiptPos) {
         int flag = 0;
         if (!paramObj.containsKey("primeRate")) {
             paramObj.put("primeRate", "6");
@@ -333,6 +338,12 @@ public class PayOweFeeCmd extends Cmd {
         paramInJson.put("feeInfo", feeDto);
         paramInJson.put("cycles", cycles.doubleValue());
         PayFeeDetailPo payFeeDetailPo = BeanConvertUtil.covertBean(businessFeeDetail, PayFeeDetailPo.class);
+        if(paramInJson.containsKey("oId")) {
+            payFeeDetailPo.setPayOrderId(paramInJson.getString("oId"));
+        }else{
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
+
+        }
 
         int flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
 

+ 5 - 1
service-fee/src/main/java/com/java110/fee/cmd/fee/RentingPayFeeConfirmCmd.java

@@ -103,7 +103,7 @@ public class RentingPayFeeConfirmCmd extends Cmd {
             payFeeDetailPo.setReceivableAmount(receivableAmount + "");
             payFeeDetailPo.setReceivedAmount(receivableAmount + "");
             payFeeDetailPo.setCommunityId(rentingPoolDto.getCommunityId());
-
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
             payFeeDetailPo.setState("1400");
             //添加单元信息
             flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
@@ -157,6 +157,8 @@ public class RentingPayFeeConfirmCmd extends Cmd {
             payFeeDetailPo.setReceivableAmount(receivableAmount + "");
             payFeeDetailPo.setReceivedAmount(receivableAmount + "");
             payFeeDetailPo.setCommunityId(rentingPoolDto.getCommunityId());
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
+
             //添加单元信息
             flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {
@@ -209,6 +211,8 @@ public class RentingPayFeeConfirmCmd extends Cmd {
             payFeeDetailPo.setReceivableAmount(receivableAmount + "");
             payFeeDetailPo.setReceivedAmount(receivableAmount + "");
             payFeeDetailPo.setCommunityId(rentingPoolDto.getCommunityId());
+            payFeeDetailPo.setPayOrderId(payFeeDetailPo.getDetailId());
+
             //添加单元信息
             flag = payFeeDetailV1InnerServiceSMOImpl.savePayFeeDetailNew(payFeeDetailPo);
             if (flag < 1) {

+ 38 - 1
service-fee/src/main/java/com/java110/fee/cmd/returnPayFee/UpdateReturnPayFeeCmd.java

@@ -25,11 +25,13 @@ import com.java110.core.event.cmd.CmdEvent;
 import com.java110.core.factory.GenerateCodeFactory;
 import com.java110.dto.RoomDto;
 import com.java110.dto.account.AccountDto;
+import com.java110.dto.communitySpacePerson.CommunitySpacePersonDto;
 import com.java110.dto.fee.FeeDetailDto;
 import com.java110.dto.fee.FeeDto;
 import com.java110.dto.feeDiscount.FeeDiscountDto;
 import com.java110.dto.feeDiscount.FeeDiscountRuleDto;
 import com.java110.dto.feeDiscount.FeeDiscountSpecDto;
+import com.java110.dto.onlinePay.OnlinePayDto;
 import com.java110.dto.owner.OwnerCarDto;
 import com.java110.dto.owner.OwnerRoomRelDto;
 import com.java110.dto.payFeeConfigDiscount.PayFeeConfigDiscountDto;
@@ -37,6 +39,7 @@ import com.java110.dto.payFeeDetailDiscount.PayFeeDetailDiscountDto;
 import com.java110.dto.returnPayFee.ReturnPayFeeDto;
 import com.java110.intf.acct.IAccountDetailInnerServiceSMO;
 import com.java110.intf.acct.IAccountInnerServiceSMO;
+import com.java110.intf.acct.IOnlinePayV1InnerServiceSMO;
 import com.java110.intf.community.IRoomInnerServiceSMO;
 import com.java110.intf.fee.*;
 import com.java110.intf.user.IOwnerCarInnerServiceSMO;
@@ -45,6 +48,7 @@ import com.java110.po.account.AccountPo;
 import com.java110.po.accountDetail.AccountDetailPo;
 import com.java110.po.fee.PayFeeDetailPo;
 import com.java110.po.fee.PayFeePo;
+import com.java110.po.onlinePay.OnlinePayPo;
 import com.java110.po.payFeeDetailDiscount.PayFeeDetailDiscountPo;
 import com.java110.po.returnPayFee.ReturnPayFeePo;
 import com.java110.utils.exception.CmdException;
@@ -63,7 +67,7 @@ import java.util.Date;
 import java.util.List;
 
 /**
- * 类表述:更新
+ * 类表述:退费审核接口
  * 服务编码:returnPayFee.updateReturnPayFee
  * 请求路劲:/app/returnPayFee.UpdateReturnPayFee
  * add by 吴学文 at 2022-02-21 12:20:03 mail: 928255095@qq.com
@@ -125,6 +129,9 @@ public class UpdateReturnPayFeeCmd extends Cmd {
     @Autowired
     private IAccountDetailInnerServiceSMO accountDetailInnerServiceSMOImpl;
 
+    @Autowired
+    private IOnlinePayV1InnerServiceSMO onlinePayV1InnerServiceSMOImpl;
+
     private static final String SPEC_RATE = "89002020980015"; //赠送月份
 
     private static final String SPEC_MONTH = "89002020980014"; //月份
@@ -168,6 +175,7 @@ public class UpdateReturnPayFeeCmd extends Cmd {
             reqJson.put("state", "1300");
             reqJson.put("startTime", DateUtil.getFormatTimeString(feeDetailDto.getStartTime(), DateUtil.DATE_FORMATE_STRING_A));
             reqJson.put("endTime", DateUtil.getFormatTimeString(feeDetailDto.getEndTime(), DateUtil.DATE_FORMATE_STRING_A));
+            reqJson.put("payOrderId",feeDetailDto.getPayOrderId());
             addFeeDetail(reqJson);
 
             reqJson.put("state", "1100");
@@ -335,6 +343,9 @@ public class UpdateReturnPayFeeCmd extends Cmd {
                     }
                 }
             }
+            //提交线上退费
+            returnOnlinePayMoney(feeDetailDto);
+
         }
         //不通过
         if ("1200".equals(reqJson.getString("state"))) {
@@ -442,4 +453,30 @@ public class UpdateReturnPayFeeCmd extends Cmd {
         }
     }
 
+    /**
+     * 发起退款
+     *
+     * @param feeDetailDto
+     */
+    private void returnOnlinePayMoney(FeeDetailDto feeDetailDto) {
+
+        if(StringUtil.isEmpty(feeDetailDto.getPayOrderId())){
+            return;
+        }
+
+        OnlinePayDto onlinePayDto = new OnlinePayDto();
+        onlinePayDto.setOrderId(feeDetailDto.getPayOrderId());
+        List<OnlinePayDto> onlinePayDtos = onlinePayV1InnerServiceSMOImpl.queryOnlinePays(onlinePayDto);
+        if (onlinePayDtos == null || onlinePayDtos.size() < 1) {
+            return;
+        }
+
+        OnlinePayPo onlinePayPo = new OnlinePayPo();
+        onlinePayPo.setOrderId(onlinePayDtos.get(0).getOrderId());
+        onlinePayPo.setPayId(onlinePayDtos.get(0).getPayId());
+        onlinePayPo.setState(OnlinePayDto.STATE_WT);
+        onlinePayPo.setRefundFee(feeDetailDto.getReceivedAmount());
+        onlinePayV1InnerServiceSMOImpl.updateOnlinePay(onlinePayPo);
+    }
+
 }