|
@@ -88,283 +88,287 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public Object createOrder(Long loginId, OrderReq req, Integer type){
|
|
|
|
|
|
+ public Object createOrder(Long loginId, OrderReq req, Integer type) {
|
|
log.info("<===========>提交下单参数" + JsonMapper.nonEmptyMapper().toJson(req));
|
|
log.info("<===========>提交下单参数" + JsonMapper.nonEmptyMapper().toJson(req));
|
|
// try {
|
|
// try {
|
|
- String orderNo = req.getValuationRes().get(0).getOrderNo();
|
|
|
|
- List<Order> orderLists = iOrderService.list(new QueryWrapper<Order>().eq("order_sn",orderNo));
|
|
|
|
- if(CollectionUtils.isNotEmpty(orderLists)){
|
|
|
|
- req.setOrderId(orderLists.get(0).getId());
|
|
|
|
- // 校验订单状态
|
|
|
|
- Integer status = orderLists.get(0).getStatus();
|
|
|
|
- if (!PayStatusEnum.NO_PAYED.status.equals(status)) {
|
|
|
|
- log.warn("orderSn:{}, status: {}, 该状态不支持下单操作!", orderNo, status);
|
|
|
|
- throw new CustomAppException("该状态不支持下单操作!");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- Member member = iMemberService.getById(loginId);
|
|
|
|
- if (member.getMemberType().equals(MemberTypeEnum.SHOP.type)) {
|
|
|
|
- member = iMemberService.getOne(new QueryWrapper<Member>().eq("member_type", MemberTypeEnum.MERCHANT.type).eq("merchant_id", member.getMerchantId()));
|
|
|
|
- }
|
|
|
|
- Product product = apiProductService.findById(req.getProductId());
|
|
|
|
- if (product == null) {
|
|
|
|
- throw new CustomAppException(ExceptionEnum.PRODUCT_NOT_EXISTS);
|
|
|
|
- }
|
|
|
|
- CouponDto couponDto = null;
|
|
|
|
- if (req.getCouponId() != null) {
|
|
|
|
- couponDto = apiCouponService.findDetail(req.getCouponId());
|
|
|
|
- if (couponDto == null&&type.intValue()!=3) {
|
|
|
|
- throw new CustomAppException("优惠券不存在!");
|
|
|
|
- }
|
|
|
|
|
|
+ String orderNo = req.getValuationRes().get(0).getOrderNo();
|
|
|
|
+ List<Order> orderLists = iOrderService.list(new QueryWrapper<Order>().eq("order_sn", orderNo));
|
|
|
|
+ if (CollectionUtils.isNotEmpty(orderLists)) {
|
|
|
|
+ req.setOrderId(orderLists.get(0).getId());
|
|
|
|
+ // 校验订单状态
|
|
|
|
+ Integer status = orderLists.get(0).getStatus();
|
|
|
|
+ if (!PayStatusEnum.NO_PAYED.status.equals(status)) {
|
|
|
|
+ log.warn("orderSn:{}, status: {}, 该状态不支持下单操作!", orderNo, status);
|
|
|
|
+ throw new CustomAppException("该状态不支持下单操作!");
|
|
}
|
|
}
|
|
- //地址处理重复楼层
|
|
|
|
- address(req);
|
|
|
|
- //保存发件信息, 如果发件Id不存在, 则为手工录入信息, 保存到缓存
|
|
|
|
- apiCacheUserAddress.cacheAddress(loginId, req);
|
|
|
|
-
|
|
|
|
- Order order = createOrder(product, couponDto, req, loginId);
|
|
|
|
- if(order.getId()!=null&& order.getDeliveryStatus().intValue()>= DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status.intValue()&&order.getDeliveryStatus().intValue()!=DeliveryStatusEnum.FINISH.status.intValue()){
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- if(order.getId()!=null&&(DeliveryStatusEnum.CANCEL.status.equals(order.getDeliveryStatus())||DeliveryStatusEnum.FINISH.status.equals(order.getDeliveryStatus()))){
|
|
|
|
- resetOrder(order,product);
|
|
|
|
|
|
+ }
|
|
|
|
+ Member member = iMemberService.getById(loginId);
|
|
|
|
+ if (member.getMemberType().equals(MemberTypeEnum.SHOP.type)) {
|
|
|
|
+ member = iMemberService.getOne(new QueryWrapper<Member>().eq("member_type", MemberTypeEnum.MERCHANT.type).eq("merchant_id", member.getMerchantId()));
|
|
|
|
+ }
|
|
|
|
+ Product product = apiProductService.findById(req.getProductId());
|
|
|
|
+ if (product == null) {
|
|
|
|
+ throw new CustomAppException(ExceptionEnum.PRODUCT_NOT_EXISTS);
|
|
|
|
+ }
|
|
|
|
+ CouponDto couponDto = null;
|
|
|
|
+ if (req.getCouponId() != null) {
|
|
|
|
+ couponDto = apiCouponService.findDetail(req.getCouponId());
|
|
|
|
+ if (couponDto == null && type.intValue() != 3) {
|
|
|
|
+ throw new CustomAppException("优惠券不存在!");
|
|
}
|
|
}
|
|
- order.setMemberId(loginId);
|
|
|
|
- order.setCreateTime(new Date());
|
|
|
|
- order.setTakeType(req.getTakeType());
|
|
|
|
- if(TakeTypeEnum.APPOINTMENT.type.equals(req.getTakeType())){
|
|
|
|
- if(DateUtils.addMinutes(new Date(),130).compareTo(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS,req.getTakeTime()))>0){
|
|
|
|
- //order.setTakeTime(null);
|
|
|
|
- order.setTakeType(TakeTypeEnum.APPOINTMENT_2.type);
|
|
|
|
- }else{
|
|
|
|
- order.setTakeTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS,req.getTakeTime()));
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ //地址处理重复楼层
|
|
|
|
+ address(req);
|
|
|
|
+ //保存发件信息, 如果发件Id不存在, 则为手工录入信息, 保存到缓存
|
|
|
|
+ apiCacheUserAddress.cacheAddress(loginId, req);
|
|
|
|
+
|
|
|
|
+ Order order = createOrder(product, couponDto, req, loginId);
|
|
|
|
+ if (order.getId() != null && order.getDeliveryStatus() != null && order.getDeliveryStatus() >= DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status && order.getDeliveryStatus() != DeliveryStatusEnum.FINISH.status) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ if (order.getId() != null && order.getDeliveryStatus() != null && (DeliveryStatusEnum.CANCEL.status.equals(order.getDeliveryStatus()) || DeliveryStatusEnum.FINISH.status.equals(order.getDeliveryStatus()))) {
|
|
|
|
+ resetOrder(order, product);
|
|
|
|
+ }
|
|
|
|
+ order.setMemberId(loginId);
|
|
|
|
+ order.setCreateTime(new Date());
|
|
|
|
+ order.setTakeType(req.getTakeType());
|
|
|
|
+ if (TakeTypeEnum.APPOINTMENT.type.equals(req.getTakeType())) {
|
|
|
|
+ if (DateUtils.addMinutes(new Date(), 130).compareTo(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, req.getTakeTime())) > 0) {
|
|
|
|
+ //order.setTakeTime(null);
|
|
|
|
+ order.setTakeType(TakeTypeEnum.APPOINTMENT_2.type);
|
|
|
|
+ } else {
|
|
|
|
+ order.setTakeTime(DateUtils.dateTime(DateUtils.YYYY_MM_DD_HH_MM_SS, req.getTakeTime()));
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- BigDecimal tip = BigDecimal.ZERO;
|
|
|
|
- if (req.getTipAmount() != null && req.getTipAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- order.setUseTip(StatusEnum.SHOW.status);
|
|
|
|
- tip = req.getTipAmount();
|
|
|
|
- order.setTipAmount(tip);
|
|
|
|
- }
|
|
|
|
|
|
+ BigDecimal tip = BigDecimal.ZERO;
|
|
|
|
+ if (req.getTipAmount() != null && req.getTipAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ order.setUseTip(StatusEnum.SHOW.status);
|
|
|
|
+ tip = req.getTipAmount();
|
|
|
|
+ order.setTipAmount(tip);
|
|
|
|
+ }
|
|
|
|
|
|
- //发单算钱
|
|
|
|
- List<ValuationRes> resList = req.getValuationRes();
|
|
|
|
- List<ValuationRes> maxReslIst = new ArrayList<>();
|
|
|
|
-
|
|
|
|
- if (couponDto != null) {
|
|
|
|
- for (ValuationRes res : resList) {
|
|
|
|
- if (couponDto.getType().equals(CouponTypeEnum.MAN_JIAN.type)) {
|
|
|
|
- if (res.getDeliveryAmount().compareTo(couponDto.getLimitFee()) >= 0 && res.getIsMine() == 0) {
|
|
|
|
- res.setDeliveryAmount(res.getDeliveryAmount().subtract(couponDto.getMoney()));
|
|
|
|
- res.setCouponAmount(couponDto.getMoney());
|
|
|
|
- }
|
|
|
|
- } else if (couponDto.getType().equals(CouponTypeEnum.LI_JIAN.type) && res.getIsMine() == 0) {
|
|
|
|
|
|
+ //发单算钱
|
|
|
|
+ List<ValuationRes> resList = req.getValuationRes();
|
|
|
|
+ List<ValuationRes> maxReslIst = new ArrayList<>();
|
|
|
|
+
|
|
|
|
+ if (couponDto != null) {
|
|
|
|
+ for (ValuationRes res : resList) {
|
|
|
|
+ if (couponDto.getType().equals(CouponTypeEnum.MAN_JIAN.type)) {
|
|
|
|
+ if (res.getDeliveryAmount().compareTo(couponDto.getLimitFee()) >= 0 && res.getIsMine() == 0) {
|
|
res.setDeliveryAmount(res.getDeliveryAmount().subtract(couponDto.getMoney()));
|
|
res.setDeliveryAmount(res.getDeliveryAmount().subtract(couponDto.getMoney()));
|
|
res.setCouponAmount(couponDto.getMoney());
|
|
res.setCouponAmount(couponDto.getMoney());
|
|
- } else if (couponDto.getType().equals(CouponTypeEnum.ZHE_KOU.type) && res.getIsMine() == 0) {
|
|
|
|
- BigDecimal discount = res.getDeliveryAmount().multiply(couponDto.getDiscount()).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- if((res.getDeliveryAmount().subtract(discount)).compareTo(couponDto.getMaxDiscount())>0){
|
|
|
|
- discount = res.getDeliveryAmount().subtract(couponDto.getMaxDiscount());
|
|
|
|
- }else {
|
|
|
|
- discount = res.getDeliveryAmount().subtract(res.getDeliveryAmount().subtract(discount));
|
|
|
|
- }
|
|
|
|
- res.setCouponAmount( res.getDeliveryAmount().subtract(discount));
|
|
|
|
- res.setDeliveryAmount(discount);
|
|
|
|
}
|
|
}
|
|
|
|
+ } else if (couponDto.getType().equals(CouponTypeEnum.LI_JIAN.type) && res.getIsMine() == 0) {
|
|
|
|
+ res.setDeliveryAmount(res.getDeliveryAmount().subtract(couponDto.getMoney()));
|
|
|
|
+ res.setCouponAmount(couponDto.getMoney());
|
|
|
|
+ } else if (couponDto.getType().equals(CouponTypeEnum.ZHE_KOU.type) && res.getIsMine() == 0) {
|
|
|
|
+ BigDecimal discount = res.getDeliveryAmount().multiply(couponDto.getDiscount()).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ if ((res.getDeliveryAmount().subtract(discount)).compareTo(couponDto.getMaxDiscount()) > 0) {
|
|
|
|
+ discount = res.getDeliveryAmount().subtract(couponDto.getMaxDiscount());
|
|
|
|
+ } else {
|
|
|
|
+ discount = res.getDeliveryAmount().subtract(res.getDeliveryAmount().subtract(discount));
|
|
|
|
+ }
|
|
|
|
+ res.setCouponAmount(res.getDeliveryAmount().subtract(discount));
|
|
|
|
+ res.setDeliveryAmount(discount);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- // 默认没有选择绑定三方运力下单
|
|
|
|
- List<Long> deliveryIds = new ArrayList<>();
|
|
|
|
- for (ValuationRes r : resList){
|
|
|
|
- if (r.getIsMine() == 0){
|
|
|
|
- maxReslIst.add(r);
|
|
|
|
- }
|
|
|
|
- if (r.getIsMine() == 1){
|
|
|
|
- // 自运力
|
|
|
|
- deliveryIds.add(r.getDeliveryId());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- Optional<ValuationRes> max = null;
|
|
|
|
- // false用我们平台支付,true用用户自己绑定三方平台支付
|
|
|
|
- boolean isMine = false;
|
|
|
|
- if (maxReslIst != null && maxReslIst.size() > 0){
|
|
|
|
- max = maxReslIst.stream().max(Comparator.comparing(ValuationRes::getDeliveryAmount));
|
|
|
|
- }else {
|
|
|
|
- max = resList.stream().max(Comparator.comparing(ValuationRes::getDeliveryAmount));
|
|
|
|
- isMine = true;
|
|
|
|
|
|
+ }
|
|
|
|
+ // 默认没有选择绑定三方运力下单
|
|
|
|
+ List<Long> deliveryIds = new ArrayList<>();
|
|
|
|
+ for (ValuationRes r : resList) {
|
|
|
|
+ if (r.getIsMine() == 0) {
|
|
|
|
+ maxReslIst.add(r);
|
|
}
|
|
}
|
|
- if (order.getWaimaiOrderId() != null) {
|
|
|
|
- getWaiMaiInfo(order,req);
|
|
|
|
|
|
+ if (r.getIsMine() == 1) {
|
|
|
|
+ // 自运力
|
|
|
|
+ deliveryIds.add(r.getDeliveryId());
|
|
}
|
|
}
|
|
- //金额折扣
|
|
|
|
- BigDecimal deliveryAmount = max.get().getDeliveryAmount();//取最高价
|
|
|
|
- // req.setOrderSn(max.get().getOrderSn());
|
|
|
|
- order.setOrderSn(max.get().getOrderNo());
|
|
|
|
- //计算优惠券
|
|
|
|
- order.setTotalAmount(deliveryAmount.add(tip));
|
|
|
|
- order.setMaxAmount(deliveryAmount.add(tip));
|
|
|
|
- order.setCouponAmount(BigDecimal.ZERO);
|
|
|
|
- if (couponDto != null) {
|
|
|
|
- if (couponDto.getType().equals(CouponTypeEnum.MAN_JIAN.type)) {
|
|
|
|
- if ((order.getTotalAmount().add(couponDto.getMoney())).compareTo(couponDto.getLimitFee()) >= 0 && !isMine) {
|
|
|
|
- order.setCouponAmount(couponDto.getMoney());
|
|
|
|
- order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
|
|
- couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
|
|
- }
|
|
|
|
- } else if (couponDto.getType().equals(CouponTypeEnum.LI_JIAN.type) && !isMine) {
|
|
|
|
|
|
+ }
|
|
|
|
+ Optional<ValuationRes> max = null;
|
|
|
|
+ // false用我们平台支付,true用用户自己绑定三方平台支付
|
|
|
|
+ boolean isMine = false;
|
|
|
|
+ if (maxReslIst != null && maxReslIst.size() > 0) {
|
|
|
|
+ max = maxReslIst.stream().max(Comparator.comparing(ValuationRes::getDeliveryAmount));
|
|
|
|
+ } else {
|
|
|
|
+ max = resList.stream().max(Comparator.comparing(ValuationRes::getDeliveryAmount));
|
|
|
|
+ isMine = true;
|
|
|
|
+ }
|
|
|
|
+ if (order.getWaimaiOrderId() != null) {
|
|
|
|
+ getWaiMaiInfo(order, req);
|
|
|
|
+ }
|
|
|
|
+ //金额折扣
|
|
|
|
+ BigDecimal deliveryAmount = max.get().getDeliveryAmount();//取最高价
|
|
|
|
+ // req.setOrderSn(max.get().getOrderSn());
|
|
|
|
+ order.setOrderSn(max.get().getOrderNo());
|
|
|
|
+ //计算优惠券
|
|
|
|
+ order.setTotalAmount(deliveryAmount.add(tip));
|
|
|
|
+ order.setMaxAmount(deliveryAmount.add(tip));
|
|
|
|
+ order.setCouponAmount(BigDecimal.ZERO);
|
|
|
|
+ if (couponDto != null) {
|
|
|
|
+ if (couponDto.getType().equals(CouponTypeEnum.MAN_JIAN.type)) {
|
|
|
|
+ if ((order.getTotalAmount().add(couponDto.getMoney())).compareTo(couponDto.getLimitFee()) >= 0 && !isMine) {
|
|
order.setCouponAmount(couponDto.getMoney());
|
|
order.setCouponAmount(couponDto.getMoney());
|
|
order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
}
|
|
}
|
|
- else if (couponDto.getType().equals(CouponTypeEnum.ZHE_KOU.type) && !isMine) {
|
|
|
|
- BigDecimal discount = order.getTotalAmount().multiply(couponDto.getDiscount()).divide(BigDecimal.TEN).setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- if((order.getTotalAmount().subtract(discount)).compareTo(couponDto.getMaxDiscount())>0){
|
|
|
|
- discount = order.getTotalAmount().subtract(couponDto.getMaxDiscount());
|
|
|
|
- }
|
|
|
|
- order.setCouponAmount(order.getTotalAmount().subtract(discount));
|
|
|
|
- order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
|
|
- couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
|
|
|
|
+ } else if (couponDto.getType().equals(CouponTypeEnum.LI_JIAN.type) && !isMine) {
|
|
|
|
+ order.setCouponAmount(couponDto.getMoney());
|
|
|
|
+ order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
|
|
+ couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
|
|
+ } else if (couponDto.getType().equals(CouponTypeEnum.ZHE_KOU.type) && !isMine) {
|
|
|
|
+ BigDecimal discount = order.getTotalAmount().multiply(couponDto.getDiscount()).divide(BigDecimal.TEN).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ if ((order.getTotalAmount().subtract(discount)).compareTo(couponDto.getMaxDiscount()) > 0) {
|
|
|
|
+ discount = order.getTotalAmount().subtract(couponDto.getMaxDiscount());
|
|
}
|
|
}
|
|
|
|
+ order.setCouponAmount(order.getTotalAmount().subtract(discount));
|
|
|
|
+ order.setCouponId(Long.valueOf(couponDto.getId()));
|
|
|
|
+ couponDto.setStatus(MemberCouponStatusEnum.USED.getStatus());
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
|
|
- //新用户只要没有产生过订单数据的算首单,并且是用平台支付
|
|
|
|
- List<Order> orderList = iOrderService.list(new QueryWrapper<Order>().eq("member_id", loginId).eq("status",PayStatusEnum.PAYED.status));
|
|
|
|
|
|
+ //新用户只要没有产生过订单数据的算首单,并且是用平台支付
|
|
|
|
+ List<Order> orderList = new ArrayList<>();
|
|
|
|
+ if (member.getShopId() != null) {
|
|
|
|
+ orderList = iOrderService.list(new QueryWrapper<Order>().eq("shop_id", member.getShopId()).eq("status", PayStatusEnum.PAYED.status));
|
|
|
|
+ } else {
|
|
|
|
+ orderList = iOrderService.list(new QueryWrapper<Order>().eq("member_id", loginId).eq("status", PayStatusEnum.PAYED.status));
|
|
|
|
+ }
|
|
|
|
|
|
- BigDecimal firstCoupon = BigDecimal.ZERO;
|
|
|
|
- if (CollectionUtils.isEmpty(orderList) && !isMine) {
|
|
|
|
- String configValue = iSysConfigService.selectConfigByKey("NEW_COMERS");
|
|
|
|
- firstCoupon = new BigDecimal(configValue);
|
|
|
|
- }
|
|
|
|
- order.setFirstCoupon(firstCoupon);
|
|
|
|
- order.setPayAmount(order.getTotalAmount().subtract(firstCoupon));
|
|
|
|
-
|
|
|
|
- if (order.getCouponAmount().compareTo(order.getTotalAmount().add(order.getCouponAmount())) > 0) {
|
|
|
|
- order.setPayAmount(BigDecimal.ZERO);
|
|
|
|
- order.setCommission(BigDecimal.ZERO);
|
|
|
|
- } else if (order.getPayAmount().compareTo(BigDecimal.ZERO) < 0) {
|
|
|
|
- order.setPayAmount(BigDecimal.ZERO);
|
|
|
|
- } else {
|
|
|
|
- //代理商佣金
|
|
|
|
- order.setCommission(max.get().getCommission());
|
|
|
|
- }
|
|
|
|
- if (!isMine && order.getPayAmount().compareTo(member.getAmount()) > 0 && PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
- log.error("余额不足"+order.getOrderSn());
|
|
|
|
- throw new CustomAppException(ExceptionEnum.AMOUNT_ERROR);
|
|
|
|
- }
|
|
|
|
- // 下单运力中含有自运力
|
|
|
|
- if (deliveryIds.size() > 0 && isMine){
|
|
|
|
- checkMemberAmount(member,deliveryIds);
|
|
|
|
- }
|
|
|
|
- //下单
|
|
|
|
- req.setProduct(product);
|
|
|
|
|
|
+ BigDecimal firstCoupon = BigDecimal.ZERO;
|
|
|
|
+ if (CollectionUtils.isEmpty(orderList) && !isMine) {
|
|
|
|
+ String configValue = iSysConfigService.selectConfigByKey("NEW_COMERS");
|
|
|
|
+ firstCoupon = new BigDecimal(configValue);
|
|
|
|
+ }
|
|
|
|
+ order.setFirstCoupon(firstCoupon);
|
|
|
|
+ order.setPayAmount(order.getTotalAmount().subtract(firstCoupon));
|
|
|
|
+
|
|
|
|
+ if (order.getCouponAmount().compareTo(order.getTotalAmount().add(order.getCouponAmount())) > 0) {
|
|
|
|
+ order.setPayAmount(BigDecimal.ZERO);
|
|
|
|
+ order.setCommission(BigDecimal.ZERO);
|
|
|
|
+ } else if (order.getPayAmount().compareTo(BigDecimal.ZERO) < 0) {
|
|
|
|
+ order.setPayAmount(BigDecimal.ZERO);
|
|
|
|
+ } else {
|
|
|
|
+ //代理商佣金
|
|
|
|
+ order.setCommission(max.get().getCommission());
|
|
|
|
+ }
|
|
|
|
+ if (!isMine && order.getPayAmount().compareTo(member.getAmount()) > 0 && PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
+ log.error("余额不足" + order.getOrderSn());
|
|
|
|
+ throw new CustomAppException(ExceptionEnum.AMOUNT_ERROR);
|
|
|
|
+ }
|
|
|
|
+ // 下单运力中含有自运力
|
|
|
|
+ if (deliveryIds.size() > 0 && isMine) {
|
|
|
|
+ checkMemberAmount(member, deliveryIds);
|
|
|
|
+ }
|
|
|
|
+ //下单
|
|
|
|
+ req.setProduct(product);
|
|
|
|
|
|
- order.setMerchantId(member.getMerchantId());
|
|
|
|
|
|
+ order.setMerchantId(member.getMerchantId());
|
|
// String startLat = req.getSendAddress().getLng() + "," + req.getSendAddress().getLat();
|
|
// String startLat = req.getSendAddress().getLng() + "," + req.getSendAddress().getLat();
|
|
// String endLat = req.getReceiptAddress().getLng() + "," + req.getReceiptAddress().getLat();
|
|
// String endLat = req.getReceiptAddress().getLng() + "," + req.getReceiptAddress().getLat();
|
|
// order.setOrderDistance(BigDecimal.valueOf(AddressLngLatExchanger.getDistance(startLat, endLat)));
|
|
// order.setOrderDistance(BigDecimal.valueOf(AddressLngLatExchanger.getDistance(startLat, endLat)));
|
|
- if (member.getAgentId() != null) {
|
|
|
|
- order.setAgentId(member.getAgentId());
|
|
|
|
- order.setAgentIdSource(member.getAgentSource());
|
|
|
|
- if (member.getPersonnelId() != null){
|
|
|
|
- order.setPersonnelId(member.getPersonnelId());
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- // 判断区域,只给一级代理商
|
|
|
|
- Agent agent = iAgentService.findByArea(order.getSendCityName(), order.getSendDistrictName());
|
|
|
|
- if (agent != null) {
|
|
|
|
- order.setAgentId(agent.getId());
|
|
|
|
- order.setAgentIdSource(AgentSourceEnum.QU_YU.status);
|
|
|
|
- }
|
|
|
|
|
|
+ if (member.getAgentId() != null) {
|
|
|
|
+ order.setAgentId(member.getAgentId());
|
|
|
|
+ order.setAgentIdSource(member.getAgentSource());
|
|
|
|
+ if (member.getPersonnelId() != null) {
|
|
|
|
+ order.setPersonnelId(member.getPersonnelId());
|
|
}
|
|
}
|
|
- if (isMine&&PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())){
|
|
|
|
- order.setPaymentType(PaymentTypeEnum.LOCAL.type);
|
|
|
|
- }else if(!isMine&&PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())){
|
|
|
|
- order.setPaymentType(PaymentTypeEnum.BALANCE.type);
|
|
|
|
- }else{
|
|
|
|
- order.setPaymentType(req.getPaymentType());
|
|
|
|
|
|
+ } else {
|
|
|
|
+ // 判断区域,只给一级代理商
|
|
|
|
+ Agent agent = iAgentService.findByArea(order.getSendCityName(), order.getSendDistrictName());
|
|
|
|
+ if (agent != null) {
|
|
|
|
+ order.setAgentId(agent.getId());
|
|
|
|
+ order.setAgentIdSource(AgentSourceEnum.QU_YU.status);
|
|
}
|
|
}
|
|
- Object resp = "ok";
|
|
|
|
- BigDecimal payAmount = order.getPayAmount().setScale(2,BigDecimal.ROUND_HALF_UP);
|
|
|
|
- if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())&&isMine){
|
|
|
|
- order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
- order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
|
|
+ }
|
|
|
|
+ if (isMine && PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
+ order.setPaymentType(PaymentTypeEnum.LOCAL.type);
|
|
|
|
+ } else if (!isMine && PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
+ order.setPaymentType(PaymentTypeEnum.BALANCE.type);
|
|
|
|
+ } else {
|
|
|
|
+ order.setPaymentType(req.getPaymentType());
|
|
|
|
+ }
|
|
|
|
+ Object resp = "ok";
|
|
|
|
+ BigDecimal payAmount = order.getPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
|
+ if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType()) && isMine) {
|
|
|
|
+ order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
+ order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
+ }
|
|
|
|
+ if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType()) && !isMine) {
|
|
|
|
+ order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
+ order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
+ // 判断余额是否低于50/100
|
|
|
|
+ checkAmount(member.getId());
|
|
|
|
+ } else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(req.getPaymentType()) && order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ // PC下单
|
|
|
|
+ if (req.getCreateType() != null && req.getCreateType() == 1) {
|
|
|
|
+ resp = apiOrderService.getPaymentQRCode(payAmount, order.getOrderSn(), PaymentTypeEnum.ZHI_FU_BAO.type);
|
|
|
|
+ } else {
|
|
|
|
+ // APP下单
|
|
|
|
+ order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status);
|
|
|
|
+ order.setStatus(PayStatusEnum.NO_PAYED.status);
|
|
|
|
+ resp = aliPayService.pay(order.getOrderSn(), payAmount.toString(), order.getOrderSn());
|
|
}
|
|
}
|
|
- if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())&&!isMine) {
|
|
|
|
- order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
- order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
- // 判断余额是否低于50/100
|
|
|
|
- checkAmount(member.getId());
|
|
|
|
- } else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(req.getPaymentType()) && order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- // PC下单
|
|
|
|
- if (req.getCreateType() != null && req.getCreateType() == 1) {
|
|
|
|
- resp = apiOrderService.getPaymentQRCode(payAmount, order.getOrderSn(), PaymentTypeEnum.ZHI_FU_BAO.type);
|
|
|
|
- } else {
|
|
|
|
- // APP下单
|
|
|
|
- order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status);
|
|
|
|
- order.setStatus(PayStatusEnum.NO_PAYED.status);
|
|
|
|
- resp = aliPayService.pay(order.getOrderSn(), payAmount.toString(), order.getOrderSn());
|
|
|
|
- }
|
|
|
|
- } else if (PaymentTypeEnum.WEI_XIN.type.equals(req.getPaymentType()) && order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- // PC下单
|
|
|
|
- if (req.getCreateType() != null && req.getCreateType() == 1) {
|
|
|
|
- resp = apiOrderService.getPaymentQRCode(payAmount, order.getOrderSn(), PaymentTypeEnum.WEI_XIN.type);
|
|
|
|
- } else {
|
|
|
|
- // APP下单
|
|
|
|
- order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status);
|
|
|
|
- order.setStatus(PayStatusEnum.NO_PAYED.status);
|
|
|
|
- OrderPaySignResponse.WechatPayParam respon = null;
|
|
|
|
- try {
|
|
|
|
- respon = wechatPayService.pay(payAmount, order.getOrderSn(), order.getOrderSn(), TradeType.APP);
|
|
|
|
- } catch (WxPayException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
- }
|
|
|
|
- resp = JSONObject.toJSONString(respon);
|
|
|
|
|
|
+ } else if (PaymentTypeEnum.WEI_XIN.type.equals(req.getPaymentType()) && order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ // PC下单
|
|
|
|
+ if (req.getCreateType() != null && req.getCreateType() == 1) {
|
|
|
|
+ resp = apiOrderService.getPaymentQRCode(payAmount, order.getOrderSn(), PaymentTypeEnum.WEI_XIN.type);
|
|
|
|
+ } else {
|
|
|
|
+ // APP下单
|
|
|
|
+ order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_BILLED.status);
|
|
|
|
+ order.setStatus(PayStatusEnum.NO_PAYED.status);
|
|
|
|
+ OrderPaySignResponse.WechatPayParam respon = null;
|
|
|
|
+ try {
|
|
|
|
+ respon = wechatPayService.pay(payAmount, order.getOrderSn(), order.getOrderSn(), TradeType.APP);
|
|
|
|
+ } catch (WxPayException e) {
|
|
|
|
+ e.printStackTrace();
|
|
}
|
|
}
|
|
-
|
|
|
|
- }
|
|
|
|
- if (payAmount.compareTo(BigDecimal.ZERO)==0) {
|
|
|
|
- order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
- order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
- }
|
|
|
|
- if (order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
- paymentService.savePayment(order.getMemberId(), order.getOrderSn(), order.getPayAmount(), req.getPaymentType(), TradeTypeEnum.ORDER.type, JSONObject.toJSONString(resList),order.getOrderSn());
|
|
|
|
- }
|
|
|
|
- order.setRefundMoney(BigDecimal.ZERO);
|
|
|
|
- if(order.getId()!=null){
|
|
|
|
- iOrderService.updateById(order);
|
|
|
|
- }else {
|
|
|
|
- iOrderService.save(order);
|
|
|
|
|
|
+ resp = JSONObject.toJSONString(respon);
|
|
}
|
|
}
|
|
|
|
|
|
- // iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.ORDER_CREATE.status);
|
|
|
|
- iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.NO_PAYED.status);
|
|
|
|
- if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
-
|
|
|
|
- iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.PAYED.status);
|
|
|
|
- iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
- if (!isMine) {
|
|
|
|
- //扣款
|
|
|
|
- iMemberService.updateAmount(member.getId(), payAmount.negate());
|
|
|
|
- //扣款记录
|
|
|
|
- iMemberBalanceLogService.saveLog(loginId, LogTypeEnum.REDUCE.type, "下单支付", LogSourceEnum.CONSUMPTION.status, order.getPayAmount(), member.getMerchantId(),order.getId(), order.getPaymentType());
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ if (payAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ order.setStatus(PayStatusEnum.PAYED.status);
|
|
|
|
+ order.setDeliveryStatus(DeliveryStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
+ }
|
|
|
|
+ if (order.getPayAmount().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ paymentService.savePayment(order.getMemberId(), order.getOrderSn(), order.getPayAmount(), req.getPaymentType(), TradeTypeEnum.ORDER.type, JSONObject.toJSONString(resList), order.getOrderSn());
|
|
|
|
+ }
|
|
|
|
+ order.setRefundMoney(BigDecimal.ZERO);
|
|
|
|
+ if (order.getId() != null) {
|
|
|
|
+ iOrderService.updateById(order);
|
|
|
|
+ } else {
|
|
|
|
+ iOrderService.save(order);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.ORDER_CREATE.status);
|
|
|
|
+ iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.NO_PAYED.status);
|
|
|
|
+ if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())) {
|
|
|
|
+
|
|
|
|
+ iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.PAYED.status);
|
|
|
|
+ iOrderLogService.addOrderLog(order.getId(), OrderStatusEnum.ORDERS_TO_BE_RECEIVED.status);
|
|
|
|
+ if (!isMine) {
|
|
|
|
+ //扣款
|
|
|
|
+ iMemberService.updateAmount(member.getId(), payAmount.negate());
|
|
|
|
+ //扣款记录
|
|
|
|
+ iMemberBalanceLogService.saveLog(loginId, LogTypeEnum.REDUCE.type, "下单支付", LogSourceEnum.CONSUMPTION.status, order.getPayAmount(), member.getMerchantId(), order.getId(), order.getPaymentType());
|
|
}
|
|
}
|
|
- //更改优惠券状态
|
|
|
|
- if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType())||payAmount.compareTo(BigDecimal.ZERO)==0) {
|
|
|
|
- apiCouponService.updateCoupon(couponDto);
|
|
|
|
- if (CollectionUtils.isNotEmpty(resList)) {
|
|
|
|
- // order.setProduct(product);
|
|
|
|
- CouponDto finalCouponDto = couponDto;
|
|
|
|
- TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
|
|
|
- @Override
|
|
|
|
- public void afterCommit() {
|
|
|
|
- applicationContext.publishEvent(new DeliveryOrderEvent(order, resList, finalCouponDto));
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ }
|
|
|
|
+ //更改优惠券状态
|
|
|
|
+ if (PaymentTypeEnum.BALANCE.type.equals(req.getPaymentType()) || payAmount.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
|
+ apiCouponService.updateCoupon(couponDto);
|
|
|
|
+ if (CollectionUtils.isNotEmpty(resList)) {
|
|
|
|
+ // order.setProduct(product);
|
|
|
|
+ CouponDto finalCouponDto = couponDto;
|
|
|
|
+ TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
|
|
|
|
+ @Override
|
|
|
|
+ public void afterCommit() {
|
|
|
|
+ applicationContext.publishEvent(new DeliveryOrderEvent(order, resList, finalCouponDto));
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
- return resp;
|
|
|
|
|
|
+ }
|
|
|
|
+ return resp;
|
|
// }catch (Exception e){
|
|
// }catch (Exception e){
|
|
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
// log.error("下单异常",e);
|
|
// log.error("下单异常",e);
|
|
@@ -373,22 +377,21 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
private Order createOrder(Product product, CouponDto couponDto, OrderReq req, Long memberId) {
|
|
private Order createOrder(Product product, CouponDto couponDto, OrderReq req, Long memberId) {
|
|
Order order = new Order();
|
|
Order order = new Order();
|
|
if (req.getOrderId() != null) {
|
|
if (req.getOrderId() != null) {
|
|
- order = iOrderService.getById(req.getOrderId());
|
|
|
|
- order.setPersonnelId(null);
|
|
|
|
- if (order.getWaimaiOrderId() == null){
|
|
|
|
- order.setProductAmount(req.getProductAmount());
|
|
|
|
- order.setTakeType(req.getTakeType());
|
|
|
|
- order.setTakeRemark(req.getTakeRemark());
|
|
|
|
- }else {
|
|
|
|
- if (StringUtils.isNotBlank(req.getTakeRemark())){
|
|
|
|
- order.setTakeRemark(req.getTakeRemark());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return order;
|
|
|
|
|
|
+ order = iOrderService.getById(req.getOrderId());
|
|
|
|
+ order.setPersonnelId(null);
|
|
|
|
+ if (order.getWaimaiOrderId() == null) {
|
|
|
|
+ order.setProductAmount(req.getProductAmount());
|
|
|
|
+ order.setTakeType(req.getTakeType());
|
|
|
|
+ order.setTakeRemark(req.getTakeRemark());
|
|
|
|
+ } else {
|
|
|
|
+ if (StringUtils.isNotBlank(req.getTakeRemark())) {
|
|
|
|
+ order.setTakeRemark(req.getTakeRemark());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return order;
|
|
}
|
|
}
|
|
order.setMemberId(memberId);
|
|
order.setMemberId(memberId);
|
|
order.setWeight(req.getWeight());
|
|
order.setWeight(req.getWeight());
|
|
@@ -404,11 +407,11 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
order.setCouponAmount(BigDecimal.ZERO);
|
|
order.setCouponAmount(BigDecimal.ZERO);
|
|
order.setTaxpayerId(req.getTaxpayerId());
|
|
order.setTaxpayerId(req.getTaxpayerId());
|
|
order.setInvoiceTitle(req.getInvoiceTitle());
|
|
order.setInvoiceTitle(req.getInvoiceTitle());
|
|
- // order.setProduct(product);
|
|
|
|
|
|
+ // order.setProduct(product);
|
|
Long shopId = req.getShopId();
|
|
Long shopId = req.getShopId();
|
|
- if (shopId == null){
|
|
|
|
|
|
+ if (shopId == null) {
|
|
Member member = iMemberService.getById(memberId);
|
|
Member member = iMemberService.getById(memberId);
|
|
- if (member.getShopId() != null){
|
|
|
|
|
|
+ if (member.getShopId() != null) {
|
|
shopId = member.getShopId();
|
|
shopId = member.getShopId();
|
|
order.setDefaultShop(DefaultShopEnum.SHOW.status);
|
|
order.setDefaultShop(DefaultShopEnum.SHOW.status);
|
|
}
|
|
}
|
|
@@ -421,9 +424,9 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
}
|
|
}
|
|
AddressReq sendAddress = req.getSendAddress();
|
|
AddressReq sendAddress = req.getSendAddress();
|
|
AddressReq receiveAddress = req.getReceiptAddress();
|
|
AddressReq receiveAddress = req.getReceiptAddress();
|
|
- if(StringUtils.isNotBlank(sendAddress.getStreet())){
|
|
|
|
- order.setSendAddress(sendAddress.getAddress()+sendAddress.getStreet());
|
|
|
|
- }else {
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(sendAddress.getStreet())) {
|
|
|
|
+ order.setSendAddress(sendAddress.getAddress() + sendAddress.getStreet());
|
|
|
|
+ } else {
|
|
order.setSendAddress(sendAddress.getAddress());
|
|
order.setSendAddress(sendAddress.getAddress());
|
|
}
|
|
}
|
|
order.setSendAddressId(sendAddress.getId());
|
|
order.setSendAddressId(sendAddress.getId());
|
|
@@ -431,14 +434,14 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
order.setSendContactName(sendAddress.getContact());
|
|
order.setSendContactName(sendAddress.getContact());
|
|
order.setSendPhone(sendAddress.getPhone());
|
|
order.setSendPhone(sendAddress.getPhone());
|
|
order.setSendExtension(sendAddress.getExtension());
|
|
order.setSendExtension(sendAddress.getExtension());
|
|
- order.setSendDistrictName((String)sendAddress.getDistrictName());
|
|
|
|
|
|
+ order.setSendDistrictName((String) sendAddress.getDistrictName());
|
|
order.setSendProvinceName(sendAddress.getProvinceName());
|
|
order.setSendProvinceName(sendAddress.getProvinceName());
|
|
order.setSendLat(sendAddress.getLat());
|
|
order.setSendLat(sendAddress.getLat());
|
|
order.setSendLng(sendAddress.getLng());
|
|
order.setSendLng(sendAddress.getLng());
|
|
order.setSendCityCode(sendAddress.getCityCode());
|
|
order.setSendCityCode(sendAddress.getCityCode());
|
|
- if(StringUtils.isNotBlank(receiveAddress.getStreet())){
|
|
|
|
- order.setReceiptAddress(receiveAddress.getAddress()+receiveAddress.getStreet());
|
|
|
|
- }else {
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(receiveAddress.getStreet())) {
|
|
|
|
+ order.setReceiptAddress(receiveAddress.getAddress() + receiveAddress.getStreet());
|
|
|
|
+ } else {
|
|
order.setReceiptAddress(receiveAddress.getAddress());
|
|
order.setReceiptAddress(receiveAddress.getAddress());
|
|
}
|
|
}
|
|
order.setReceiptAddressId(receiveAddress.getId());
|
|
order.setReceiptAddressId(receiveAddress.getId());
|
|
@@ -446,14 +449,14 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
order.setReceiptContactName(receiveAddress.getContact());
|
|
order.setReceiptContactName(receiveAddress.getContact());
|
|
order.setReceiptPhone(receiveAddress.getPhone());
|
|
order.setReceiptPhone(receiveAddress.getPhone());
|
|
order.setReceiptExtension(receiveAddress.getExtension());
|
|
order.setReceiptExtension(receiveAddress.getExtension());
|
|
- order.setReceiptDistrictName((String)receiveAddress.getDistrictName());
|
|
|
|
|
|
+ order.setReceiptDistrictName((String) receiveAddress.getDistrictName());
|
|
order.setReceiptProvinceName(receiveAddress.getProvinceName());
|
|
order.setReceiptProvinceName(receiveAddress.getProvinceName());
|
|
order.setReceiptLat(receiveAddress.getLat());
|
|
order.setReceiptLat(receiveAddress.getLat());
|
|
order.setReceiptLng(receiveAddress.getLng());
|
|
order.setReceiptLng(receiveAddress.getLng());
|
|
order.setReceiptCityCode(receiveAddress.getCityCode());
|
|
order.setReceiptCityCode(receiveAddress.getCityCode());
|
|
- if (order.getWaimaiOrderId() != null){
|
|
|
|
|
|
+ if (order.getWaimaiOrderId() != null) {
|
|
order.setWaimaiOrderId(order.getWaimaiOrderId());
|
|
order.setWaimaiOrderId(order.getWaimaiOrderId());
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
order.setWaimaiOrderId(req.getWaimaiOrderId());
|
|
order.setWaimaiOrderId(req.getWaimaiOrderId());
|
|
}
|
|
}
|
|
order.setProductAmount(req.getProductAmount());
|
|
order.setProductAmount(req.getProductAmount());
|
|
@@ -472,14 +475,14 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
} else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(order.getPaymentType())) {
|
|
} else if (PaymentTypeEnum.ZHI_FU_BAO.type.equals(order.getPaymentType())) {
|
|
aliPayService.alipayRefundRequest(orderNo, refundMoney.doubleValue());
|
|
aliPayService.alipayRefundRequest(orderNo, refundMoney.doubleValue());
|
|
} else if (PaymentTypeEnum.WEI_XIN.type.equals(order.getPaymentType())) {
|
|
} else if (PaymentTypeEnum.WEI_XIN.type.equals(order.getPaymentType())) {
|
|
- Payment payment = paymentService.getOne(new QueryWrapper<Payment>().eq("child_order_sn", orderNo).eq("payment_type",PaymentTypeEnum.WEI_XIN.type));
|
|
|
|
|
|
+ Payment payment = paymentService.getOne(new QueryWrapper<Payment>().eq("child_order_sn", orderNo).eq("payment_type", PaymentTypeEnum.WEI_XIN.type));
|
|
wechatPayService.refund(orderNo, payment.getTotalAmount(), refundMoney, "");
|
|
wechatPayService.refund(orderNo, payment.getTotalAmount(), refundMoney, "");
|
|
}
|
|
}
|
|
- iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.REFUND.status, refundMoney, merchantId,order.getId(), order.getPaymentType());
|
|
|
|
|
|
+ iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.REFUND.status, refundMoney, merchantId, order.getId(), order.getPaymentType());
|
|
// 是否需要退服务费-绑定三方运力下单
|
|
// 是否需要退服务费-绑定三方运力下单
|
|
- if (order.getBindFee().compareTo(BigDecimal.ZERO) == 1){
|
|
|
|
|
|
+ if (order.getBindFee().compareTo(BigDecimal.ZERO) == 1) {
|
|
iMemberService.updateAmount(member.getId(), order.getBindFee());
|
|
iMemberService.updateAmount(member.getId(), order.getBindFee());
|
|
- iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, "订单取消,服务费退款", LogSourceEnum.REFUND.status, order.getBindFee(), merchantId,order.getId(), order.getPaymentType());
|
|
|
|
|
|
+ iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, "订单取消,服务费退款", LogSourceEnum.REFUND.status, order.getBindFee(), merchantId, order.getId(), order.getPaymentType());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -498,8 +501,8 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
wechatPayService.refund(orderTip.getChildOrderNo(), orderTip.getTotalAmout(), orderTip.getAmount(), "");
|
|
wechatPayService.refund(orderTip.getChildOrderNo(), orderTip.getTotalAmout(), orderTip.getAmount(), "");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- if(tips.compareTo(BigDecimal.ZERO)>0){
|
|
|
|
- iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.REFUND.status, tips, merchantId,Long.valueOf(orderTips.get(0).getOrderId()), orderTips.get(0).getPayType());
|
|
|
|
|
|
+ if (tips.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
|
+ iMemberBalanceLogService.saveLog(memberId, LogTypeEnum.INCREASE.type, remark, LogSourceEnum.REFUND.status, tips, merchantId, Long.valueOf(orderTips.get(0).getOrderId()), orderTips.get(0).getPayType());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -529,18 +532,18 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
// order.setTakeRemark(waimaiOrder.getCaution());
|
|
// order.setTakeRemark(waimaiOrder.getCaution());
|
|
// }
|
|
// }
|
|
|
|
|
|
- if(DefaultShopEnum.SHOW.status.equals(order.getDefaultShop())){
|
|
|
|
|
|
+ if (DefaultShopEnum.SHOW.status.equals(order.getDefaultShop())) {
|
|
order.setDefaultShop(DefaultShopEnum.STOP.status);
|
|
order.setDefaultShop(DefaultShopEnum.STOP.status);
|
|
}
|
|
}
|
|
//order.setShopName(waimaiOrder.getPoiName());
|
|
//order.setShopName(waimaiOrder.getPoiName());
|
|
order.setPoiSeq(waimaiOrder.getDaySeq());
|
|
order.setPoiSeq(waimaiOrder.getDaySeq());
|
|
|
|
+ order.setOrderingSourceNo(waimaiOrder.getOutOrderId());
|
|
if (waimaiOrder.getOrderType().equals(WaimaiTypeEnums.MEI_TUAN.getType())) {
|
|
if (waimaiOrder.getOrderType().equals(WaimaiTypeEnums.MEI_TUAN.getType())) {
|
|
order.setOrderSource("101");
|
|
order.setOrderSource("101");
|
|
- order.setOrderingSourceNo(waimaiOrder.getOutOrderId());
|
|
|
|
- } else if(waimaiOrder.getOrderType().equals(WaimaiTypeEnums.E_LE_ME.getType())){
|
|
|
|
|
|
+ } else if (waimaiOrder.getOrderType().equals(WaimaiTypeEnums.E_LE_ME.getType())) {
|
|
// 饿了么
|
|
// 饿了么
|
|
order.setOrderSource("102");
|
|
order.setOrderSource("102");
|
|
- }else if(waimaiOrder.getOrderType().equals(WaimaiTypeEnums.E_LE_ME_RETAIL.getType())){
|
|
|
|
|
|
+ } else if (waimaiOrder.getOrderType().equals(WaimaiTypeEnums.E_LE_ME_RETAIL.getType())) {
|
|
// 饿百
|
|
// 饿百
|
|
order.setOrderSource("103");
|
|
order.setOrderSource("103");
|
|
}
|
|
}
|
|
@@ -554,42 +557,42 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
* 校验用户绑定三方运力,下单机制(这里校验的都是商家)
|
|
* 校验用户绑定三方运力,下单机制(这里校验的都是商家)
|
|
*/
|
|
*/
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
- public void checkMemberAmount(Member member, List<Long> deliveryIds){
|
|
|
|
- if (member.getMerchantId() == null){
|
|
|
|
|
|
+ public void checkMemberAmount(Member member, List<Long> deliveryIds) {
|
|
|
|
+ if (member.getMerchantId() == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- MerchantDeliveryFee fee = iMerchantDeliveryFeeService.getByMerchantAndDeliveryIds(member.getMerchantId(),deliveryIds);
|
|
|
|
- if (fee == null){
|
|
|
|
|
|
+ MerchantDeliveryFee fee = iMerchantDeliveryFeeService.getByMerchantAndDeliveryIds(member.getMerchantId(), deliveryIds);
|
|
|
|
+ if (fee == null) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (member.getAmount().compareTo(fee.getAmount()) == -1){
|
|
|
|
|
|
+ if (member.getAmount().compareTo(fee.getAmount()) == -1) {
|
|
throw new CustomAppException("选择运力为绑定运力,当前余额少于服务费,请充值后再下单!", 250);
|
|
throw new CustomAppException("选择运力为绑定运力,当前余额少于服务费,请充值后再下单!", 250);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public boolean addRemark(Long orderId, String remark) {
|
|
public boolean addRemark(Long orderId, String remark) {
|
|
- Order order = new Order();
|
|
|
|
|
|
+ Order order = new Order();
|
|
order.setTakeRemark(remark);
|
|
order.setTakeRemark(remark);
|
|
order.setId(orderId);
|
|
order.setId(orderId);
|
|
- return iOrderService.updateById(order);
|
|
|
|
|
|
+ return iOrderService.updateById(order);
|
|
}
|
|
}
|
|
|
|
|
|
- private void address(OrderReq req){
|
|
|
|
|
|
+ private void address(OrderReq req) {
|
|
String sendAddress = req.getSendAddress().getAddress();
|
|
String sendAddress = req.getSendAddress().getAddress();
|
|
String sendStreet = req.getSendAddress().getStreet();
|
|
String sendStreet = req.getSendAddress().getStreet();
|
|
String receiptAddress = req.getReceiptAddress().getAddress();
|
|
String receiptAddress = req.getReceiptAddress().getAddress();
|
|
String receiptStreet = req.getReceiptAddress().getStreet();
|
|
String receiptStreet = req.getReceiptAddress().getStreet();
|
|
- if(StringUtils.isNotBlank(sendStreet)&&sendAddress.endsWith(sendStreet)){
|
|
|
|
- req.getSendAddress().setAddress(sendAddress.substring(0,sendAddress.lastIndexOf(sendStreet)));
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(sendStreet) && sendAddress.endsWith(sendStreet)) {
|
|
|
|
+ req.getSendAddress().setAddress(sendAddress.substring(0, sendAddress.lastIndexOf(sendStreet)));
|
|
}
|
|
}
|
|
- if(StringUtils.isNotBlank(receiptStreet)&&receiptAddress.endsWith(receiptStreet)){
|
|
|
|
- req.getReceiptAddress().setAddress(receiptAddress.substring(0,receiptAddress.lastIndexOf(receiptStreet)));
|
|
|
|
|
|
+ if (StringUtils.isNotBlank(receiptStreet) && receiptAddress.endsWith(receiptStreet)) {
|
|
|
|
+ req.getReceiptAddress().setAddress(receiptAddress.substring(0, receiptAddress.lastIndexOf(receiptStreet)));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- private void resetOrder(Order order, Product product){
|
|
|
|
|
|
+ private void resetOrder(Order order, Product product) {
|
|
order.setId(null);
|
|
order.setId(null);
|
|
order.setRefundMoney(BigDecimal.ZERO);
|
|
order.setRefundMoney(BigDecimal.ZERO);
|
|
order.setOutTradeNo("");
|
|
order.setOutTradeNo("");
|
|
@@ -622,17 +625,18 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
|
|
|
|
/**
|
|
/**
|
|
* 判断用户余额
|
|
* 判断用户余额
|
|
|
|
+ *
|
|
* @param memberId
|
|
* @param memberId
|
|
*/
|
|
*/
|
|
- public void checkAmount(Long memberId){
|
|
|
|
|
|
+ public void checkAmount(Long memberId) {
|
|
Member member = iMemberService.getById(memberId);
|
|
Member member = iMemberService.getById(memberId);
|
|
- if (member.getMerchantId() != null){
|
|
|
|
|
|
+ if (member.getMerchantId() != null) {
|
|
List<Member> members = iMemberService.selectListByMerchantId(member.getMerchantId().intValue());
|
|
List<Member> members = iMemberService.selectListByMerchantId(member.getMerchantId().intValue());
|
|
List<Long> mIds = new ArrayList<>();
|
|
List<Long> mIds = new ArrayList<>();
|
|
- log.info("推送用户==="+JSONObject.toJSONString(members));
|
|
|
|
- if (member.getAmount().compareTo(new BigDecimal(50)) == -1){
|
|
|
|
|
|
+ log.info("推送用户===" + JSONObject.toJSONString(members));
|
|
|
|
+ if (member.getAmount().compareTo(new BigDecimal(50)) == -1) {
|
|
// 自动配送关闭,关闭该商家的所有门店
|
|
// 自动配送关闭,关闭该商家的所有门店
|
|
- for (Member m : members){
|
|
|
|
|
|
+ for (Member m : members) {
|
|
// 判断用户是否开启自配送
|
|
// 判断用户是否开启自配送
|
|
// MemberConfigDto memberConfigDto = iMemberConfigService.findDetail(m.getId());
|
|
// MemberConfigDto memberConfigDto = iMemberConfigService.findDetail(m.getId());
|
|
// if (memberConfigDto == null || memberConfigDto.getOpenAutodelivery().equals(0)){
|
|
// if (memberConfigDto == null || memberConfigDto.getOpenAutodelivery().equals(0)){
|
|
@@ -644,18 +648,18 @@ public class ApiOrderNewServiceImpl implements ApiOrderNewService {
|
|
mIds.add(m.getId());
|
|
mIds.add(m.getId());
|
|
}
|
|
}
|
|
// 发推送
|
|
// 发推送
|
|
- if(CollectionUtils.isNotEmpty(mIds)){
|
|
|
|
- messagePushService.memberAmountMessage(mIds, "您的平台余额低于50元","您的平台余额已不足50元,可能导致自动发单失败,请及时充值!",1);
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(mIds)) {
|
|
|
|
+ messagePushService.memberAmountMessage(mIds, "您的平台余额低于50元", "您的平台余额已不足50元,可能导致自动发单失败,请及时充值!", 1);
|
|
}
|
|
}
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
- if (member.getAmount().compareTo(new BigDecimal(100)) == -1){
|
|
|
|
- for (Member m : members){
|
|
|
|
|
|
+ if (member.getAmount().compareTo(new BigDecimal(100)) == -1) {
|
|
|
|
+ for (Member m : members) {
|
|
mIds.add(m.getId());
|
|
mIds.add(m.getId());
|
|
}
|
|
}
|
|
// 发推送
|
|
// 发推送
|
|
- if(CollectionUtils.isNotEmpty(mIds)){
|
|
|
|
- messagePushService.memberAmountMessage(mIds, "您的平台余额低于100元","您的平台余额已不足100元,可能导致自动发单失败,请及时充值!",2);
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(mIds)) {
|
|
|
|
+ messagePushService.memberAmountMessage(mIds, "您的平台余额低于100元", "您的平台余额已不足100元,可能导致自动发单失败,请及时充值!", 2);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|