Browse Source

fix:免车费

wrj 1 year ago
parent
commit
8f540b3470

+ 1 - 0
docker/Dockerfile

@@ -2,6 +2,7 @@ FROM java:8u111-jre-alpine
 
 RUN mkdir -p /nightFragrance
 RUN mkdir -p /nightFragrance/upload
+RUN mkdir -p /nightFragrance/uploadPath
 
 COPY *.jar  /nightFragrance/nightFragrance-admin.jar
 

+ 7 - 6
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/PayController.java

@@ -73,17 +73,19 @@ public class PayController {
     @PostMapping("/pay")
     @ApiOperation("AIPV3微信支付充值")
     public R createUnifiedOrder(@RequestBody TRecharge recharge) throws Exception {
-
         TRecharge rechargeResp = rechargeService.recharge(recharge);
+        return getStringR(rechargeResp.getRechargeNo(),recharge.getdMoney(), recharge.getcOpenId(),"充值");
+    }
 
+    public R<String> getStringR(String setOutTradeNo, BigDecimal amount, String openId,String description) throws Exception {
         String timeExpire = DateTimeZoneUtil.dateToTimeZone(System.currentTimeMillis() + 1000 * 60 * 3);
         UnifiedOrderModel unifiedOrderModel = new UnifiedOrderModel()
                 .setAppid(wxPayProperties.getAppId())
                 .setMchid(wxPayProperties.getMchId())
                 //商品描述
-                .setDescription("充值")
+                .setDescription(description)
                 //订单号
-                .setOut_trade_no(rechargeResp.getRechargeNo())
+                .setOut_trade_no(setOutTradeNo)
                 //交易结束时间
                 .setTime_expire(timeExpire)
                 //附加数据
@@ -92,9 +94,9 @@ public class PayController {
                 //示例值:https://www.weixin.qq.com/wxpay/pay.php
                 .setNotify_url(wxPayProperties.getNotifyUrl())
                 //支付金额以分为单位
-                .setAmount(new Amount().setTotal(recharge.getdMoney().multiply(new BigDecimal(100)).intValue()))
+                .setAmount(new Amount().setTotal(amount.multiply(new BigDecimal(100)).intValue()))
                 //交易人
-                .setPayer(new Payer().setOpenid(recharge.getcOpenId()));
+                .setPayer(new Payer().setOpenid(openId));
 
         log.info("统一下单参数 {}", JSONUtil.toJsonStr(unifiedOrderModel));
         IJPayHttpResponse response = WxPayApi.v3(
@@ -121,7 +123,6 @@ public class PayController {
             return R.ok(JSONUtil.toJsonStr(map));
         }
         return R.ok(JSONUtil.toJsonStr(response));
-
     }
 
     private String getSerialNumber() {

+ 6 - 0
nightFragrance-common/src/main/java/com/ylx/common/constant/MassageConstants.java

@@ -27,5 +27,11 @@ public class MassageConstants {
 
     public static final String ATLAS = "atlas:";
 
+    /**
+     * 白天免费时间段
+     */
+    public static final Long START_FREE = 730000L;
+
+    public static final Long END_FREE = 195959L;
 
 }

+ 14 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/TJs.java

@@ -114,6 +114,20 @@ public class TJs implements Serializable {
     @ApiModelProperty("营业执照")
     private String businessLicense;
 
+    /**
+     * 白天免车费公里数
+     */
+    @TableField("daytime_mileage")
+    @ApiModelProperty("白天免车费公里数")
+    private BigDecimal daytimeMileage;
+
+    /**
+     * 白天免车费公里数
+     */
+    @TableField("nigth_mileage")
+    @ApiModelProperty("夜间免车费公里数")
+    private BigDecimal nigthMileage;
+
     /**
      * 个人简介
      */

+ 32 - 7
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TOrderServiceImpl.java

@@ -17,6 +17,7 @@ import com.ylx.massage.enums.JsStatusEnum;
 import com.ylx.massage.enums.OrderStatusEnum;
 import com.ylx.massage.mapper.TOrderMapper;
 import com.ylx.massage.service.*;
+import com.ylx.massage.utils.DateTimeUtils;
 import com.ylx.massage.utils.MassageUtil;
 import com.ylx.massage.utils.OrderNumberGenerator;
 import org.apache.commons.compress.utils.Lists;
@@ -25,13 +26,11 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.xml.crypto.Data;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 
 /**
@@ -68,6 +67,29 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
 //    @Resource
 //    private TInfoService infoService;
 
+    public Boolean isFree(String jsId, BigDecimal distance) {
+        TJs js = jsService.getById(jsId);
+        Date date = new Date();
+        //白天免车费(07.30-20.00)
+        long current = Long.parseLong(DateTimeUtils.numTime(date));
+        if (current >= MassageConstants.START_FREE && current <= MassageConstants.END_FREE) {
+            if (js.getDaytimeMileage().compareTo(distance) >= 0) {
+                //免车费
+                return Boolean.TRUE;
+            } else {
+                return Boolean.FALSE;
+            }
+        } else {
+            //夜间免车费(20.00-07.30)
+            if (js.getNigthMileage().compareTo(distance) >= 0) {
+                //免车费
+                return Boolean.TRUE;
+            } else {
+                return Boolean.FALSE;
+            }
+        }
+    }
+
     /**
      * 添加订单
      *
@@ -84,8 +106,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         }
         //计算车费
         if (order.getDistance() != null) {
-            BigDecimal bigDecimal = massageUtil.calculateTaxiFare(order.getDistance());
-            order.setFare(bigDecimal.setScale(MassageConstants.INTEGER_TWO, RoundingMode.HALF_UP));
+            //判断是否可以免车费
+            if (!this.isFree(order.getcJsId(), order.getDistance())) {
+                BigDecimal bigDecimal = massageUtil.calculateTaxiFare(order.getDistance());
+                order.setFare(bigDecimal.setScale(MassageConstants.INTEGER_TWO, RoundingMode.HALF_UP));
+            }
         }
         //订单价格
         List<TXiangmu> list = JSONObject.parseArray(order.getcGoods().toJSONString(), TXiangmu.class);
@@ -124,7 +149,7 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         if (!orderNew.getnStatus().equals(OrderStatusEnum.WAIT_PAY.getCode())) {
             throw new ServiceException("该订单已经支付或者超时被取消");
         }
-        if(StringUtils.isBlank(orderNew.getParentNo())){
+        if (StringUtils.isBlank(orderNew.getParentNo())) {
             TJs js = jsService.getById(orderNew.getcJsId());
             if (null == js || js.getnStatus().equals(JsStatusEnum.JS_SERVICE.getCode())) {
                 throw new ServiceException("该技师已在服务中请重新下单");

+ 16 - 5
nightFragrance-massage/src/main/java/com/ylx/massage/utils/DateTimeUtils.java

@@ -15,6 +15,8 @@ import java.util.*;
 @Slf4j
 public final class DateTimeUtils {
     public static final String DATE_TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
+
+    public static final String TIME = "HHmmss";
     public static final String DATE_TIME_NUMBER_FORMAT = "yyyyMMddHHmmss";
     public static final String DATE_FORMAT = "yyyy-MM-dd";
     public static final String DATE_FORMAT_FOREIGN = "dd/MM/yyyy";
@@ -47,6 +49,15 @@ public final class DateTimeUtils {
         return formatDate(date, DATE_TIME_FORMAT);
     }
 
+    public static String numTime(Date date) {
+        return formatDate(date, TIME);
+    }
+
+    public static void main(String[] args) {
+        System.out.println(numTime(new Date()));
+        System.out.println(Long.valueOf("0523"));
+    }
+
     public static String formatDatetime() {
         return formatDate(DATE_TIME_FORMAT);
     }
@@ -64,6 +75,7 @@ public final class DateTimeUtils {
      * @return
      */
     public static Date parseDate(String date, String pattern) {
+
         try {
             return new SimpleDateFormat(pattern).parse(date);
         } catch (Exception e) {
@@ -90,6 +102,7 @@ public final class DateTimeUtils {
      */
     public static Date parseDateday(String date) {
         return parseDate(date, DATE_FORMAT);
+
     }
 
     /**
@@ -727,8 +740,8 @@ public final class DateTimeUtils {
      * @author jqlin
      */
     public static boolean isEffectiveDate(Date dateTime, Date startTime, Date endTime) {
-        if (dateTime.getTime() == startTime.getTime()
-                || dateTime.getTime() == endTime.getTime()) {
+        if ((dateTime.getTime() == startTime.getTime())
+                || (dateTime.getTime() == endTime.getTime())) {
             return true;
         }
 
@@ -884,7 +897,5 @@ public final class DateTimeUtils {
         return date != null ? date.getTime() : 0L;
     }
 
-    public static void main(String[] args) {
-        System.out.println(DateUtils.addYears(DateTimeUtils.getFirstDayOfYear(),-3));;
-    }
+
 }

+ 2 - 0
nightFragrance-massage/src/main/resources/mapper/massage/TJsMapper.xml

@@ -19,6 +19,8 @@
         <result column="c_address" property="cAddress"/>
         <result column="health_certificate" property="healthCertificate"/>
         <result column="business_license" property="businessLicense"/>
+        <result column="daytime_mileage" property="daytimeMileage"/>
+        <result column="nigth_mileage" property="nigthMileage"/>
         <result column="c_jianjie" property="cJianjie"/>
         <result column="n_star" property="nStar"/>
         <result column="n_bili" property="nBili"/>