xuhaifeng 1 nedēļu atpakaļ
vecāks
revīzija
14b61bba82

+ 6 - 1
admin-ui/src/views/recharge/cardVersion/index.vue

@@ -230,7 +230,11 @@
                           <el-select v-model="multiInsertForm.companyName" placeholder="请选择企业" clearable >
                             <el-option v-for="company in companyData" :key="company.id" :label="company.name" :value="company.name" />
                           </el-select>
-
+                        </el-form-item>
+                      </el-col>
+                      <el-col :span="12">
+                        <el-form-item label="实收金额" prop="actualAmount" required>
+                          <el-input-number v-model="multiInsertForm.actualAmount" placeholder="请输入实收金额" />
                         </el-form-item>
                       </el-col>
                         <el-col :span="12">
@@ -342,6 +346,7 @@ export default {
                 isSupportLife: 'Y',
                 isSupportCar: 'Y',
                 companyName: '',
+                actualAmount: '',
                 versionId: 0,
                 createNum: 0
             },

+ 3 - 1
yiqi-admin/src/main/java/com/yiqi/admin/controller/recharge/RechargePasswordCardController.java

@@ -181,7 +181,7 @@ public class RechargePasswordCardController extends BaseController {
             batchRecord.setCreateBy(getUsername());
             batchRecord.setCreateTime(new Date());
             // 3. 执行导入
-             rechargePasswordCardService.importData(
+            rechargePasswordCardService.importData(
                     importList, batchRecord
             );
             return R.ok();
@@ -257,6 +257,7 @@ public class RechargePasswordCardController extends BaseController {
         rechargeCardBatchRecord.setStarLevel(rechargeCardMultiInsertDTO.getStarLevel());
         rechargeCardBatchRecord.setRemark(rechargeCardMultiInsertDTO.getRemark());
         rechargeCardBatchRecord.setCompanyName(rechargeCardMultiInsertDTO.getCompanyName());
+        rechargeCardBatchRecord.setActualAmount(rechargeCardMultiInsertDTO.getActualAmount());
         rechargeCardBatchRecordService.save(rechargeCardBatchRecord);
 
 
@@ -277,6 +278,7 @@ public class RechargePasswordCardController extends BaseController {
             rechargePasswordCard.setGivePointAmount(rechargeCardVersion.getGivePointAmount());
             rechargePasswordCard.setRechargeBalance(rechargePasswordCard.getRechargeAmount());
             rechargePasswordCard.setGiveBalance(rechargePasswordCard.getGiveAmount());
+            rechargePasswordCard.setActualAmount(rechargeCardMultiInsertDTO.getActualAmount());
             rechargePasswordCard.setDelFlag(DeleteStatus.OK.getCode());
             rechargePasswordCard.setRechargeStatus(RechargeStatusType.NOT_UES.getCode());
             rechargePasswordCard.setCreateById(getUserId());

+ 0 - 106
yiqi-api/src/main/java/com/yiqi/api/controller/order/WeAppOrderClothController.java

@@ -475,112 +475,6 @@ public class WeAppOrderClothController {
     @ApiOperation("洗衣订单配送订单下单")
     @PostMapping(value = "addSendClothDeliveryOrder")
     public R addSendClothDeliveryOrder(@RequestBody @Valid UpdateOrderClothTakeClothWayDTO updateOrderClothTakeClothWayDTO) throws Exception {
-//        if(updateOrderClothTakeClothWayDTO.getAddressId() == null){
-//            throw new ServiceException("请先选择地址");
-//        }
-//
-//        OrderCloth orderCloth = orderClothService.getOne(new QueryWrapper<OrderCloth>().lambda()
-//                .eq(OrderCloth::getId,updateOrderClothTakeClothWayDTO.getOrderId())
-//                .eq(OrderCloth::getAppUserId,AuthHolder.userId()));
-//        if(orderCloth == null){
-//            throw new ServiceException("未查询到订单");
-//        }
-//        if(!orderCloth.getOrderStatus().equals(ClothOrderStatusType.HAS_WASH.getCode())){
-//            throw new ServiceException("订单状态不正确,无法设置配送方式");
-//        }
-//        if(StringUtils.isNotEmpty(orderCloth.getSendClothWay())){
-//            throw new ServiceException("您已经设置好配送方式了");
-//        }
-//        orderCloth.setSendClothWay(ClothTakeWay.DELIVERY.getCode());
-//        if(ClothTakeWay.TOSTORE.getCode().equals(orderCloth.getSendClothWay())){//到店自取,不需要管配送费
-//            orderClothService.update(new UpdateWrapper<OrderCloth>().lambda()
-//                    .set(OrderCloth::getSendClothWay,orderCloth.getSendClothWay())
-//                    .eq(OrderCloth::getId,updateOrderClothTakeClothWayDTO.getOrderId()));
-//            UpdateOrderClothTakeClothWayRespVO updateOrderClothTakeClothWayRespVO = new UpdateOrderClothTakeClothWayRespVO();
-//            updateOrderClothTakeClothWayRespVO.setIsNeedPay(SysBoolType.NO.getCode());
-//            return R.ok(updateOrderClothTakeClothWayRespVO);
-//        }
-//
-//        int freeDeliveryNum = 0;
-//        if(orderCloth.getOrderClothPrice().doubleValue() >= 100){
-//            freeDeliveryNum++;
-//        }
-//        if(orderCloth.getOrderClothPrice().doubleValue() >= 200){
-//            freeDeliveryNum++;
-//        }
-//        if(ClothTakeWay.DELIVERY.getCode().equals(orderCloth.getTakeClothWay())){
-//            freeDeliveryNum--;
-//        }
-//        /**
-//         * 1.添加配送信息
-//         * 2.此处需要知道配送费是否免费
-//         */
-//        AppUserAddress appUserAddress = appUserAddressService.getOne(new QueryWrapper<AppUserAddress>().lambda()
-//                .eq(AppUserAddress::getId,updateOrderClothTakeClothWayDTO.getAddressId()));
-//        OrderDelivery orderDelivery = orderDeliveryService
-//                .getOne(new QueryWrapper<OrderDelivery>().lambda()
-//                        .eq(OrderDelivery::getOrderSn,orderCloth.getOrderNo())
-//                        .eq(OrderDelivery::getClothOrderType,ClothOrderDeliveryType.takeCloth.getCode()));
-//        OrderDelivery newAddress = new OrderDelivery(appUserAddress);
-//        if(orderDelivery == null){
-//            orderDelivery = newAddress;
-//        }else{
-//            BeanUtils.copyProperties(newAddress,orderDelivery,"id");
-//        }
-//        orderDelivery.setOrderSn(orderCloth.getOrderNo());
-//        orderDelivery.setClothOrderType(ClothOrderDeliveryType.takeCloth.getCode());
-//        orderDelivery.setDeliverySn(orderNoUtils.getDeliveryOrderNo());
-//
-//        //判断是否需要配送,不需要配送费
-//        if(freeDeliveryNum > 0){
-//            orderDelivery.setIsNeedPay(SysBoolType.NO.getCode());
-//            orderDelivery.setDeliveryAmount(BigDecimal.ZERO);
-//            orderDelivery.setPayType(PayType.CASH.getCode());
-//            //不需要配送直接修改订单状态为待配送状态
-//            orderClothService.update(new UpdateWrapper<OrderCloth>().lambda()
-//                    .set(OrderCloth::getSendClothWay,ClothTakeWay.DELIVERY.getCode())
-//                    .set(OrderCloth::getOrderStatus,ClothOrderStatusType.WAITING_TO_SEND.getCode())
-//                    .eq(OrderCloth::getId,updateOrderClothTakeClothWayDTO.getOrderId()));
-//        }else{
-//            orderDelivery.setIsNeedPay(SysBoolType.YES.getCode());
-//            orderDelivery.setPayStatus(PayStatus.WAITING_TO_PAY.getCode());
-//            String deliveryPrice = sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode());
-//            if(StringUtils.isEmpty(deliveryPrice)){
-//                throw new ServiceException("系统未设置配送价格,请联系客服进行处理");
-//            }
-//            orderDelivery.setDeliveryAmount(new BigDecimal(deliveryPrice));
-//            if(StringUtils.isEmpty(updateOrderClothTakeClothWayDTO.getPayType())){
-//                throw new ServiceException("请先选择支付方式");
-//            }
-//            orderDelivery.setPayType(updateOrderClothTakeClothWayDTO.getPayType());
-//            switch (EnumUtils.getEnumByType(orderClothDeliveryAddress.getPayType(),PayType.class)){
-//                case ALIPAY:
-//                case WECHAT:
-//                {
-//                    AppPayRespVO appPayRespVO = payService.appPay(
-//                            PayOrderAppDTO.buildDeliveryOrderPayData(orderDelivery, updateOrderClothTakeClothWayDTO.getPlatform()));
-//                    UpdateOrderClothTakeClothWayRespVO updateOrderClothTakeClothWayRespVO = new UpdateOrderClothTakeClothWayRespVO();
-//                    updateOrderClothTakeClothWayRespVO.setOrderStr(appPayRespVO.getOrderStr());
-//                    updateOrderClothTakeClothWayRespVO.setIsNeedPay(orderDelivery.getIsNeedPay());
-//                    updateOrderClothTakeClothWayRespVO.setDeliveryOrderNo(orderDelivery.getDeliveryOrderNo());
-//                    //保存配送订单
-//                    orderDeliveryService.saveOrUpdate(orderDelivery);
-//                    return R.ok(updateOrderClothTakeClothWayRespVO);
-//                }
-//                case BALANCE:
-//                {
-//                    //余额扣款,扣减余额
-//                    appUserBillMstrService.consumeRecord(ConsumeOrderDTO.buildOrderDeliveryData(orderDelivery,orderCloth.getOrgId(),orderCloth.getSourceType()));
-//                    break;
-//                }
-//            }
-//        }
-//        //保存配送订单
-//        orderDeliveryService.saveOrUpdate(orderDelivery);
-//        UpdateOrderClothTakeClothWayRespVO updateOrderClothTakeClothWayRespVO = new UpdateOrderClothTakeClothWayRespVO();
-//        updateOrderClothTakeClothWayRespVO.setIsNeedPay(orderDelivery.getIsNeedPay());
-//        updateOrderClothTakeClothWayRespVO.setDeliveryOrderNo(orderDelivery.getDeliveryOrderNo());
-//        return R.ok(updateOrderClothTakeClothWayRespVO);
         return R.ok("配送订单单独支付已弃用");
     }
 

+ 15 - 0
yiqi-common/src/main/java/com/yiqi/common/constant/CacheConstants.java

@@ -47,4 +47,19 @@ public class CacheConstants {
      * 登录账户密码错误次数 redis key
      */
     public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:";
+
+
+    /**
+     * config_tab_record 缓存配置
+     */
+
+    /**
+     * 配送金额
+     */
+    public static final String WASH_DELIVERY_AMOUNT_KEY = "wash_delivery_amount";
+
+    /**
+     * 配送免运费金额
+     */
+    public static final String WASH_DELIVERY_FREE_KEY = "wash_delivery_free";
 }

+ 4 - 1
yiqi-common/src/main/java/com/yiqi/order/domain/OrderCloth.java

@@ -334,6 +334,9 @@ public class OrderCloth extends BaseEntity {
     @ApiModelProperty("现金抵扣金额")
     private BigDecimal cashDeductAmount;
 
+    @ApiModelProperty("配送费抵扣金额")
+    private BigDecimal deliveryDeductAmount;
+
     /**
      * 订单完成
      */
@@ -400,7 +403,7 @@ public class OrderCloth extends BaseEntity {
     /**
      * 配送费
      */
-    @Excel(name = "配送费")
+    @Excel(name = "实际配送费")
     @ApiModelProperty("配送费")
     private BigDecimal deliveryAmount;
 

+ 8 - 0
yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargeCardBatchRecord.java

@@ -1,5 +1,6 @@
 package com.yiqi.recharge.domain;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -65,4 +66,11 @@ public class RechargeCardBatchRecord extends BaseEntity
     @Excel(name = "团单公司")
     @ApiModelProperty("团单公司")
     private String companyName;
+
+    /**
+     * 实收金额
+     */
+    @Excel(name = "实收金额")
+    @ApiModelProperty("实收金额")
+    private BigDecimal actualAmount;
 }

+ 7 - 0
yiqi-common/src/main/java/com/yiqi/recharge/domain/RechargePasswordCard.java

@@ -83,6 +83,13 @@ public class RechargePasswordCard extends BaseEntity {
     @ApiModelProperty("赠送金额")
     private BigDecimal giveAmount;
 
+    /**
+     * 实收金额
+     */
+    @Excel(name = "实收金额")
+    @ApiModelProperty("实收金额")
+    private BigDecimal actualAmount;
+
     /**
      * 福利金额
      */

+ 8 - 0
yiqi-common/src/main/java/com/yiqi/recharge/domain/dto/RechargeCardMultiInsertDTO.java

@@ -1,9 +1,11 @@
 package com.yiqi.recharge.domain.dto;
 
+import com.yiqi.common.annotation.Excel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.*;
+import java.math.BigDecimal;
 import java.util.Date;
 
 @Data
@@ -22,6 +24,12 @@ public class RechargeCardMultiInsertDTO {
     @ApiModelProperty("公司")
     private String companyName;
 
+    /**
+     * 实收金额
+     */
+    @ApiModelProperty("实收金额")
+    private BigDecimal actualAmount;
+
     @NotBlank(message = "批次名称不能为空")
     @ApiModelProperty("批次名称")
     private String batchName;

+ 22 - 27
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderClothServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.yiqi.common.constant.CacheConstants;
 import com.yiqi.common.exception.ServiceException;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yiqi.app.domain.AppUser;
@@ -36,10 +37,7 @@ import com.yiqi.recharge.service.IRechargePasswordCardService;
 import com.yiqi.system.domain.SysOrg;
 import com.yiqi.system.domain.SysSettlementRate;
 import com.yiqi.system.domain.SysStore;
-import com.yiqi.system.service.ISysConfigService;
-import com.yiqi.system.service.ISysOrgService;
-import com.yiqi.system.service.ISysSettlementRateService;
-import com.yiqi.system.service.ISysStoreService;
+import com.yiqi.system.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -91,7 +89,7 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
     @Autowired
     private ISysConfigService sysConfigService;
     @Autowired
-    private IOrderClothCouponRelationService orderClothCouponRelationService;
+    private ISysConfigRecordService sysConfigRecordService;
     @Autowired
     private IOrderClothItemCouponRelationService orderClothItemCouponRelationService;
     @Autowired
@@ -696,38 +694,35 @@ public class OrderClothServiceImpl extends ServiceImpl<OrderClothMapper, OrderCl
         for (OrderClothItem orderClothItem : orderClothItems) {
             totalPrice = CurrencyUtil.add(totalPrice, orderClothItem.getTotalPrice());
         }
-
-        int freeDeliveryNum = 0;//免费的配送次数
-        if (totalPrice.doubleValue() >= 100) {
-            freeDeliveryNum++;
-        }
-        if (totalPrice.doubleValue() >= 200) {
-            freeDeliveryNum++;
+        String deliveryAmountStr = sysConfigRecordService.getCacheConfigRecordByKey(CacheConstants.WASH_DELIVERY_AMOUNT_KEY);
+        BigDecimal deliveryAmount = StringUtils.isEmpty(deliveryAmountStr) ? BigDecimal.ZERO : new BigDecimal(deliveryAmountStr);
+        BigDecimal freeAmount = BigDecimal.ZERO;
+        //配送费减免规则 价格1-价格2:减免费用; 多个阶梯之间用英文分号隔开
+        String deliveryFreezeStr = sysConfigRecordService.getCacheConfigRecordByKey(CacheConstants.WASH_DELIVERY_FREE_KEY);
+        if (StringUtils.isNotEmpty(deliveryFreezeStr)) {
+            String[] deliveryFreezes = deliveryFreezeStr.split(";");
+            for (String deliveryFreeze : deliveryFreezes) {
+                String[] deliveryFreezeArr = deliveryFreeze.split(":");
+                String[] amountArr = deliveryFreezeArr[0].split("-");
+                if (totalPrice.doubleValue() >= Double.parseDouble(amountArr[0]) && totalPrice.doubleValue() <= Double.parseDouble(amountArr[1])) {
+                    freeAmount = new BigDecimal(deliveryFreezeArr[1]);
+                }
+            }
         }
         orderCloth.setOrderClothPrice(totalPrice);
-
         BigDecimal totalDeliveryAmount = BigDecimal.ZERO;
         // 上门收衣-计算收衣配送费
         if (orderCloth.getTakeClothWay().equals(TakeOrSendClothWay.DELIVERY.getCode())) {
-            if (freeDeliveryNum > 0) {
-                freeDeliveryNum--;
-            } else {
-                totalDeliveryAmount.add(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode())));
-                totalPrice.add(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode())));
-            }
+            totalDeliveryAmount = deliveryAmount;
         }
         // 上门取衣(配送上门)-计算取衣配送费
         if (orderCloth.getSendClothWay() != null && orderCloth.getSendClothWay().equals(TakeOrSendClothWay.DELIVERY.getCode())) {
-            if (freeDeliveryNum > 0) {
-                freeDeliveryNum--;
-            } else {
-                totalDeliveryAmount.add(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode())));
-                totalPrice.add(new BigDecimal(sysConfigService.selectConfigByKey(SysConfigKey.OrderClothDeliveryPrice.getCode())));
-            }
+            totalDeliveryAmount = CurrencyUtil.add(totalDeliveryAmount, deliveryAmount);
         }
         orderCloth.setDeliveryAmount(totalDeliveryAmount);
-        orderCloth.setOrderAmount(totalPrice);
-        orderCloth.setPayAmount(orderCloth.getOrderAmount());
+        orderCloth.setOrderAmount(CurrencyUtil.add(totalPrice, totalDeliveryAmount));
+        orderCloth.setDeliveryDeductAmount(freeAmount.compareTo(totalDeliveryAmount) > 0 ? totalDeliveryAmount : freeAmount);
+        orderCloth.setPayAmount(CurrencyUtil.sub(orderCloth.getOrderAmount(), orderCloth.getDeliveryDeductAmount()));
     }
 
     /**

+ 1 - 0
yiqi-core/src/main/java/com/yiqi/order/service/impl/OrderRechargeServiceImpl.java

@@ -996,6 +996,7 @@ public class OrderRechargeServiceImpl extends ServiceImpl<OrderRechargeMapper, O
         rechargePasswordCard.setGiveAmount(orderRecharge.getGiveAmount());
         rechargePasswordCard.setGivePointAmount(orderRecharge.getGivePointAmount());
         rechargePasswordCard.setWelfareAmount(orderRecharge.getWelfareAmount());
+        rechargePasswordCard.setActualAmount(orderRecharge.getRechargeAmount());
 
         rechargePasswordCard.setRechargeBalance(rechargePasswordCard.getRechargeAmount());
         rechargePasswordCard.setGiveBalance(rechargePasswordCard.getGiveAmount());

+ 2 - 0
yiqi-core/src/main/java/com/yiqi/recharge/service/impl/RechargeCardBatchRecordServiceImpl.java

@@ -97,6 +97,7 @@ public class RechargeCardBatchRecordServiceImpl extends ServiceImpl<RechargeCard
         RechargePasswordCard rechargePasswordCard = new RechargePasswordCard();
         rechargePasswordCard.setBatchNo(rechargeCardBatchRecord.getBatchNo());
         rechargePasswordCard.setCardNo(orderNoUtils.getOrderNo());
+        rechargePasswordCard.setActualAmount(rechargeBatchDirectCardAddDTO.getRechargeAmount());
         rechargePasswordCard.setPassword(Utils.getPassWordOne(8));
         rechargePasswordCard.setCreateType(RechargeCreateType.IMPORT.getCode());
         rechargePasswordCard.setRechargeAmount(rechargeBatchDirectCardAddDTO.getRechargeAmount());
@@ -138,6 +139,7 @@ public class RechargeCardBatchRecordServiceImpl extends ServiceImpl<RechargeCard
         rechargePasswordCard.setGivePointAmount(rechargeBatchCommonCardAddDTO.getGivePointAmount());
         rechargePasswordCard.setRechargeBalance(rechargePasswordCard.getRechargeAmount());
         rechargePasswordCard.setGiveBalance(rechargePasswordCard.getGiveAmount());
+        rechargePasswordCard.setActualAmount(rechargeCardBatchRecord.getActualAmount());
         rechargePasswordCard.setDelFlag(DeleteStatus.OK.getCode());
         rechargePasswordCard.setRechargeStatus(RechargeStatusType.NOT_UES.getCode());
         rechargePasswordCard.setCreateById(SecurityUtils.getUserId());