Your Name
2023-04-17 da3b5c72fa45bc26a9868c2b26e3efda14845179
service-common/src/main/java/com/java110/common/cmd/chargeMachine/StartChargeCmd.java
@@ -1,6 +1,5 @@
package com.java110.common.cmd.chargeMachine;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.charge.IChargeCore;
import com.java110.core.annotation.Java110Cmd;
@@ -10,13 +9,12 @@
import com.java110.core.event.cmd.CmdEvent;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.dto.account.AccountDto;
import com.java110.dto.accountDetail.AccountDetailDto;
import com.java110.dto.chargeMachine.ChargeMachineDto;
import com.java110.dto.chargeMachineOrder.ChargeMachineOrderDto;
import com.java110.dto.chargeMachinePort.ChargeMachinePortDto;
import com.java110.dto.chargeRuleFee.ChargeRuleFeeDto;
import com.java110.dto.couponPropertyPoolConfig.CouponPropertyPoolConfigDto;
import com.java110.dto.couponPropertyUser.CouponPropertyUserDto;
import com.java110.dto.chargeMachine.ChargeMachineOrderDto;
import com.java110.dto.chargeMachine.ChargeMachinePortDto;
import com.java110.dto.chargeMachine.ChargeRuleFeeDto;
import com.java110.dto.couponPool.CouponPropertyPoolConfigDto;
import com.java110.dto.couponPool.CouponPropertyUserDto;
import com.java110.dto.user.UserDto;
import com.java110.intf.acct.IAccountInnerServiceSMO;
import com.java110.intf.acct.ICouponPropertyPoolConfigV1InnerServiceSMO;
@@ -256,17 +254,14 @@
        }
        resultVo.setData(orderId);
        double couponDurationHours = 0.0;
        //todo 优惠券抵扣
        withholdCoupon(reqJson, chargeMachineDtos, orderId);
        if (durationHours - couponDurationHours > 0) {
            // todo 3.0 账户扣款
            withholdAccount(reqJson, chargeMachineDtos, orderId, durationHours, couponDurationHours);
        }
        // todo 3.0 账户预扣款
        withholdAccount(reqJson, chargeMachineDtos, orderId, durationHours);
        context.setResponseEntity(ResultVo.createResponseEntity(resultVo));
    }
@@ -363,20 +358,17 @@
     * @param chargeMachineDtos
     * @param orderId
     */
    private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId, double durationHours, double couponDurationHours) {
    private void withholdAccount(JSONObject reqJson, List<ChargeMachineDto> chargeMachineDtos, String orderId, double durationHours) {
        AccountDto accountDto = new AccountDto();
        accountDto.setAcctId(reqJson.getString("acctId"));
        List<AccountDto> accountDtos = accountInnerServiceSMOImpl.queryAccounts(accountDto);
        double amount = 0.0;
        BigDecimal durationPrice = new BigDecimal(Double.parseDouble(reqJson.getString("durationPrice")));
        if (couponDurationHours > 0) {
            durationPrice = durationPrice.multiply(new BigDecimal(durationHours - couponDurationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
            amount = durationPrice.doubleValue();
        } else {
            durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
            amount = durationPrice.doubleValue();
        }
        durationPrice = durationPrice.multiply(new BigDecimal(durationHours)).setScale(2, BigDecimal.ROUND_HALF_UP);
        amount = durationPrice.doubleValue();
        AccountDetailPo accountDetailPo = new AccountDetailPo();
        accountDetailPo.setAcctId(accountDtos.get(0).getAcctId());
@@ -392,11 +384,7 @@
        chargeMachineOrderAcctPo.setCmoaId(GenerateCodeFactory.getGeneratorId("11"));
        chargeMachineOrderAcctPo.setOrderId(orderId);
        chargeMachineOrderAcctPo.setAcctId(accountDtos.get(0).getAcctId());
        if (couponDurationHours > 0) {
            chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        } else {
            chargeMachineOrderAcctPo.setStartTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(couponDurationHours)).intValue()));
        }
        chargeMachineOrderAcctPo.setStartTime(DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
        chargeMachineOrderAcctPo.setEndTime(DateUtil.getAddHoursStringA(DateUtil.getCurrentDate(), new Double(Math.ceil(durationHours)).intValue()));
        chargeMachineOrderAcctPo.setRemark("账户扣款");
        chargeMachineOrderAcctPo.setCommunityId(chargeMachineDtos.get(0).getCommunityId());