|
@@ -341,106 +341,106 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
|
|
|
return R.error("无效的类型参数");
|
|
|
}
|
|
|
}
|
|
|
- public Map<String,Object> computeOrderMoney(BigDecimal orderPrice,FsPackageOrderComputeParam param){
|
|
|
- Map<String,Object> moneys=new HashMap<>();
|
|
|
- BigDecimal payPrice=orderPrice;
|
|
|
- BigDecimal payMoney=new BigDecimal(0);
|
|
|
- BigDecimal payRemain=new BigDecimal(0);
|
|
|
- BigDecimal payDelivery=new BigDecimal(0);
|
|
|
- BigDecimal discountMoney=new BigDecimal(0);
|
|
|
- String json=configService.selectConfigByKey("his.package");
|
|
|
- PackageConfigDTO configDTO=JSONUtil.toBean(json, PackageConfigDTO.class);
|
|
|
- if(param.getUserCouponId()!=null&¶m.getUserCouponId()>0l){
|
|
|
- FsUserCoupon userCoupon=userCouponService.selectFsUserCouponById(param.getUserCouponId());
|
|
|
- if(userCoupon==null){
|
|
|
-
|
|
|
- }
|
|
|
- if(userCoupon.getStatus()!=0){
|
|
|
+ public Map<String, Object> computeOrderMoney(BigDecimal orderPrice, FsPackageOrderComputeParam param) {
|
|
|
+ Map<String, Object> moneys = new HashMap<>();
|
|
|
+ BigDecimal payPrice = orderPrice;
|
|
|
+ BigDecimal payMoney = new BigDecimal(0);
|
|
|
+ BigDecimal payRemain = new BigDecimal(0);
|
|
|
+ BigDecimal payDelivery = new BigDecimal(0);
|
|
|
+ BigDecimal discountMoney = new BigDecimal(0);
|
|
|
+ String json = configService.selectConfigByKey("his.package");
|
|
|
+ PackageConfigDTO configDTO = JSONUtil.toBean(json, PackageConfigDTO.class);
|
|
|
+ if (param.getUserCouponId() != null && param.getUserCouponId() > 0l) {
|
|
|
+ FsUserCoupon userCoupon = userCouponService.selectFsUserCouponById(param.getUserCouponId());
|
|
|
+ if (userCoupon != null) {
|
|
|
+ if (userCoupon.getStatus() == 0) {
|
|
|
+ FsCoupon coupon = couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
|
|
|
+ if (coupon.getCouponType().equals(1)) {
|
|
|
+ if (coupon.getMinPrice().compareTo(orderPrice) <=0) {
|
|
|
+ if (coupon.getPrice().compareTo(orderPrice) >= 0) {
|
|
|
+ payPrice = new BigDecimal(0);
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
+ } else {
|
|
|
+ payPrice = orderPrice.subtract(coupon.getPrice());
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //中药免单券
|
|
|
+ } else if (coupon.getCouponType().equals(2)) {
|
|
|
+ payPrice = new BigDecimal(0);
|
|
|
+ discountMoney = orderPrice;
|
|
|
+ //问诊免单券
|
|
|
+ } else if (coupon.getCouponType().equals(3)) {
|
|
|
+
|
|
|
+ //中药打折券
|
|
|
+ } else if (coupon.getCouponType().equals(4)) {
|
|
|
+ payPrice = orderPrice.multiply(coupon.getRate()).divide(new BigDecimal(100));
|
|
|
+ discountMoney = coupon.getPrice().subtract(orderPrice);
|
|
|
+ //私域疗法券
|
|
|
+ } else if (coupon.getCouponType().equals(5)) {
|
|
|
+ if (coupon.getMinPrice().compareTo(orderPrice) <=0) {
|
|
|
+ if (coupon.getPrice().compareTo(orderPrice) >= 0) {
|
|
|
+ payPrice = new BigDecimal(0);
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
+ } else {
|
|
|
+ payPrice = orderPrice.subtract(coupon.getPrice());
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
|
|
|
- }
|
|
|
- FsCoupon coupon=couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
|
|
|
- if(coupon.getCouponType().equals(1)){
|
|
|
- if(coupon.getMinPrice().compareTo(orderPrice)==1){
|
|
|
-
|
|
|
- }
|
|
|
- if(coupon.getPrice().compareTo(orderPrice)>=0){
|
|
|
- payPrice=new BigDecimal(0);
|
|
|
- discountMoney=coupon.getPrice();
|
|
|
- }
|
|
|
- else{
|
|
|
- payPrice=orderPrice.subtract(coupon.getPrice());
|
|
|
- discountMoney=coupon.getPrice();
|
|
|
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //公域疗法券
|
|
|
+ }else if (coupon.getCouponType().equals(6)){
|
|
|
+ if (coupon.getMinPrice().compareTo(orderPrice) >=0) {
|
|
|
+ //throw new ServiceException("优惠劵最低金额大于订单金额");
|
|
|
|
|
|
+ }
|
|
|
+ if (coupon.getPrice().compareTo(orderPrice) >= 0) {
|
|
|
+ payPrice = new BigDecimal(0);
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
+ } else {
|
|
|
+ payPrice = orderPrice.subtract(coupon.getPrice());
|
|
|
+ discountMoney = coupon.getPrice();
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- else if(coupon.getCouponType().equals(2)){
|
|
|
- payPrice=new BigDecimal(0);
|
|
|
- discountMoney=orderPrice;
|
|
|
-
|
|
|
- }
|
|
|
- else if(coupon.getCouponType().equals(3)){
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- else if(coupon.getCouponType().equals(4)){
|
|
|
- payPrice= orderPrice.multiply(coupon.getRate()).divide(new BigDecimal(100));
|
|
|
- discountMoney=coupon.getPrice().subtract(orderPrice);
|
|
|
|
|
|
- }
|
|
|
- else if(coupon.getCouponType().equals(5)){
|
|
|
- if(coupon.getMinPrice().compareTo(orderPrice)==1){
|
|
|
|
|
|
- }
|
|
|
- if(coupon.getPrice().compareTo(orderPrice)>=0){
|
|
|
- payPrice=new BigDecimal(0);
|
|
|
- discountMoney=coupon.getPrice();
|
|
|
- }
|
|
|
- else{
|
|
|
- payPrice=orderPrice.subtract(coupon.getPrice());
|
|
|
- discountMoney=coupon.getPrice();
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else{
|
|
|
- payPrice=orderPrice;
|
|
|
- discountMoney=new BigDecimal(0);
|
|
|
+ } else {
|
|
|
+ payPrice = orderPrice;
|
|
|
+ discountMoney = new BigDecimal(0);
|
|
|
}
|
|
|
|
|
|
- if(payPrice.compareTo(new BigDecimal(0))==1){
|
|
|
- if(param.getPayType().equals(1)){
|
|
|
+ if (payPrice.compareTo(new BigDecimal(0)) == 1) {
|
|
|
+ if (param.getPayType().equals(1)) {
|
|
|
//全款
|
|
|
- payMoney=payPrice;
|
|
|
- payRemain=new BigDecimal(0);
|
|
|
- payDelivery=new BigDecimal(0);
|
|
|
+ payMoney = payPrice;
|
|
|
+ payRemain = new BigDecimal(0);
|
|
|
+ payDelivery = new BigDecimal(0);
|
|
|
|
|
|
- }
|
|
|
- else if (param.getPayType().equals(2)){
|
|
|
+ } else if (param.getPayType().equals(2)) {
|
|
|
//代收
|
|
|
- payMoney= payPrice.multiply(new BigDecimal((100-configDTO.getPayRate()))).divide(new BigDecimal(100));
|
|
|
- payMoney=new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
|
|
|
- payRemain=payPrice.subtract(payMoney);
|
|
|
- payDelivery=new BigDecimal(0);
|
|
|
- if(payRemain.compareTo(new BigDecimal(0))==0){
|
|
|
- throw new CustomException("代收金额应大于0");
|
|
|
+ payMoney = payPrice.multiply(new BigDecimal((100 - configDTO.getPayRate()))).divide(new BigDecimal(100));
|
|
|
+ payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
|
|
|
+ payRemain = payPrice.subtract(payMoney);
|
|
|
+ payDelivery = new BigDecimal(0);
|
|
|
+ if (payRemain.compareTo(new BigDecimal(0)) == 0) {
|
|
|
+ throw new CustomException("代收金额应大于0");
|
|
|
}
|
|
|
- }
|
|
|
- else if(param.getPayType().equals(3)){
|
|
|
+ } else if (param.getPayType().equals(3)) {
|
|
|
//货到付款
|
|
|
- payMoney=configDTO.getPayDelivery();
|
|
|
- payPrice=payPrice.add(configDTO.getPayDelivery());
|
|
|
- payRemain=payPrice.subtract(configDTO.getPayDelivery());
|
|
|
- payDelivery=configDTO.getPayDelivery();
|
|
|
+ payMoney = configDTO.getPayDelivery();
|
|
|
+ payPrice = payPrice.add(configDTO.getPayDelivery());
|
|
|
+ payRemain = payPrice.subtract(configDTO.getPayDelivery());
|
|
|
+ payDelivery = configDTO.getPayDelivery();
|
|
|
}
|
|
|
}
|
|
|
- moneys.put("payPrice",payPrice);
|
|
|
- moneys.put("payMoney",payMoney);
|
|
|
- moneys.put("payRemain",payRemain);
|
|
|
- moneys.put("payDelivery",payDelivery);
|
|
|
- moneys.put("discountMoney",discountMoney);
|
|
|
+ moneys.put("payPrice", payPrice);
|
|
|
+ moneys.put("payMoney", payMoney);
|
|
|
+ moneys.put("payRemain", payRemain);
|
|
|
+ moneys.put("payDelivery", payDelivery);
|
|
|
+ moneys.put("discountMoney", discountMoney);
|
|
|
List<StoreOrderProductDTO> gifts=new ArrayList<>();
|
|
|
if(configDTO.getGiftStoreId()!=null&¶m.getStoreId()!=null&&configDTO.getGiftStoreId().equals(param.getStoreId())&¶m.getPayType()==1&¶m.getCompanyId()!=null&¶m.getCompanyUserId()!=null&¶m.getCompanyId()>0&&payPrice.compareTo(configDTO.getGiftPrice())>=0){
|
|
|
gifts=configDTO.getGift();
|
|
@@ -613,6 +613,19 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
|
|
|
computeParam.setUserCouponId(order.getUserCouponId());
|
|
|
}
|
|
|
|
|
|
+ Map<String,Object> moneys=computeOrderMoney(order.getTotalPrice(),computeParam);
|
|
|
+ fsPackageOrder.setPayMoney((BigDecimal)moneys.get("payMoney"));
|
|
|
+ fsPackageOrder.setPayPrice((BigDecimal)moneys.get("payPrice"));
|
|
|
+ fsPackageOrder.setPayDelivery((BigDecimal)moneys.get("payDelivery"));
|
|
|
+ if (param.getUserCouponId()!=null&¶m.getUserCouponId()>0){
|
|
|
+ fsPackageOrder.setUserCouponId(param.getUserCouponId());
|
|
|
+
|
|
|
+ }
|
|
|
+ fsPackageOrder.setDiscountMoney((BigDecimal)moneys.get("discountMoney"));
|
|
|
+ fsPackageOrder.setPayRemain((BigDecimal)moneys.get("payRemain"));
|
|
|
+ fsPackageOrder.setPayType(param.getPayType());
|
|
|
+ fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
|
|
|
+
|
|
|
if (param.getUserCouponId()!=null&¶m.getUserCouponId()>0){
|
|
|
FsUserCoupon userCoupon=userCouponService.selectFsUserCouponById(param.getUserCouponId());
|
|
|
FsCoupon coupon=couponService.selectFsCouponByCouponId(userCoupon.getCouponId());
|
|
@@ -626,19 +639,6 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
|
|
|
userCouponService.updateFsUserCoupon(userCoupon);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- Map<String,Object> moneys=computeOrderMoney(order.getTotalPrice(),computeParam);
|
|
|
- fsPackageOrder.setPayMoney((BigDecimal)moneys.get("payMoney"));
|
|
|
- fsPackageOrder.setPayPrice((BigDecimal)moneys.get("payPrice"));
|
|
|
- fsPackageOrder.setPayDelivery((BigDecimal)moneys.get("payDelivery"));
|
|
|
- if (param.getUserCouponId()!=null&¶m.getUserCouponId()>0){
|
|
|
- fsPackageOrder.setUserCouponId(param.getUserCouponId());
|
|
|
-
|
|
|
- }
|
|
|
- fsPackageOrder.setDiscountMoney((BigDecimal)moneys.get("discountMoney"));
|
|
|
- fsPackageOrder.setPayRemain((BigDecimal)moneys.get("payRemain"));
|
|
|
- fsPackageOrder.setPayType(param.getPayType());
|
|
|
- fsPackageOrderMapper.updateFsPackageOrder(fsPackageOrder);
|
|
|
return R.ok();
|
|
|
|
|
|
}
|