|  | @@ -28,6 +28,7 @@ import com.fs.common.utils.ip.IpUtils;
 | 
	
		
			
				|  |  |  import com.fs.common.utils.poi.ExcelUtil;
 | 
	
		
			
				|  |  |  import com.fs.company.domain.CompanyUser;
 | 
	
		
			
				|  |  |  import com.fs.company.mapper.CompanyUserMapper;
 | 
	
		
			
				|  |  | +import com.fs.config.cloud.CloudHostProper;
 | 
	
		
			
				|  |  |  import com.fs.core.config.WxMaConfiguration;
 | 
	
		
			
				|  |  |  import com.fs.core.config.WxPayProperties;
 | 
	
		
			
				|  |  |  import com.fs.core.utils.OrderCodeUtils;
 | 
	
	
		
			
				|  | @@ -163,6 +164,9 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private IFsUserWxService userWxService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private CloudHostProper cloudHostProper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 查询套餐订单
 | 
	
		
			
				|  |  |       *
 | 
	
	
		
			
				|  | @@ -428,21 +432,34 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 | 
	
		
			
				|  |  |  //                if (payRemain.compareTo(new BigDecimal(0)) == 0) {
 | 
	
		
			
				|  |  |  //                    throw new CustomException("代收金额应大于0");
 | 
	
		
			
				|  |  |  //                }
 | 
	
		
			
				|  |  | -                if (sysConfig.getRetainer() != null && sysConfig.getRate() != null && sysConfig.getRate().compareTo(new BigDecimal(0)) > 0) {
 | 
	
		
			
				|  |  | -                    if (payPrice.compareTo(new BigDecimal(100)) < 0) {
 | 
	
		
			
				|  |  | -                        throw new CustomException("订单金额应大于等于100");
 | 
	
		
			
				|  |  | +                if (("益善缘".equals(cloudHostProper.getCompanyName()))){
 | 
	
		
			
				|  |  | +                    String key = redisCache.getCacheObject("createPackageOrderKey:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +                    if (StringUtils.isEmpty(key)) {
 | 
	
		
			
				|  |  | +                        throw new CustomException("订单已过期", 501);
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  | -                    //有最低定金金额和提成比率
 | 
	
		
			
				|  |  | -                    if (payPrice.compareTo(new BigDecimal(1000)) < 0) {
 | 
	
		
			
				|  |  | +                    payMoney = redisCache.getCacheObject("createPackageOrderAmount:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +                    if (payMoney == null) {
 | 
	
		
			
				|  |  |                          payMoney = new BigDecimal(100);
 | 
	
		
			
				|  |  | -                    } else {
 | 
	
		
			
				|  |  | -                        payMoney = payPrice.multiply(sysConfig.getRate()).divide(new BigDecimal(100));
 | 
	
		
			
				|  |  | -                        payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  } else {
 | 
	
		
			
				|  |  |                      payMoney = payPrice.multiply(new BigDecimal((100 - configDTO.getPayRate()))).divide(new BigDecimal(100));
 | 
	
		
			
				|  |  |                      payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | +//                if (sysConfig.getRetainer() != null && sysConfig.getRate() != null && sysConfig.getRate().compareTo(new BigDecimal(0)) > 0) {
 | 
	
		
			
				|  |  | +//                    if (payPrice.compareTo(new BigDecimal(100)) < 0) {
 | 
	
		
			
				|  |  | +//                        throw new CustomException("订单金额应大于等于100");
 | 
	
		
			
				|  |  | +//                    }
 | 
	
		
			
				|  |  | +//                    //有最低定金金额和提成比率
 | 
	
		
			
				|  |  | +//                    if (payPrice.compareTo(new BigDecimal(1000)) < 0) {
 | 
	
		
			
				|  |  | +//                        payMoney = new BigDecimal(100);
 | 
	
		
			
				|  |  | +//                    } else {
 | 
	
		
			
				|  |  | +//                        payMoney = payPrice.multiply(sysConfig.getRate()).divide(new BigDecimal(100));
 | 
	
		
			
				|  |  | +//                        payMoney = new BigDecimal(payMoney.setScale(0, BigDecimal.ROUND_HALF_UP).longValue());
 | 
	
		
			
				|  |  | +//                    }
 | 
	
		
			
				|  |  | +//                } else {
 | 
	
		
			
				|  |  | +//                    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) {
 | 
	
	
		
			
				|  | @@ -542,6 +559,7 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 | 
	
		
			
				|  |  |          if(StringUtils.isEmpty(orderSn)){
 | 
	
		
			
				|  |  |              return R.error("订单生成失败,请重试");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        order.setPayType(param.getPayType());
 | 
	
		
			
				|  |  |          order.setOrderSn(orderSn);
 | 
	
		
			
				|  |  |          order.setStoreId(fsPackage.getStoreId());
 | 
	
		
			
				|  |  |          order.setUserId(param.getUserId());
 | 
	
	
		
			
				|  | @@ -678,6 +696,12 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 | 
	
		
			
				|  |  |              userCoupon.setStatus(1);
 | 
	
		
			
				|  |  |              userCouponService.updateFsUserCoupon(userCoupon);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if (StringUtils.isNotEmpty(param.getCreatePackageOrderKey())) {
 | 
	
		
			
				|  |  | +            redisCache.deleteObject("createPackageOrderKey:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +            redisCache.deleteObject("createPackageOrderPayType:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +            redisCache.deleteObject("createPackageOrderAmount:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +            redisCache.deleteObject("createPackageOrderMoney:" + param.getCreatePackageOrderKey());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return R.ok();
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1725,4 +1749,72 @@ public class FsPackageOrderServiceImpl implements IFsPackageOrderService
 | 
	
		
			
				|  |  |              return R.error("微信接口调用失败: " + e.getMessage());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public R createPackageOrder(CompanyUser companyUser, Long packageId) {
 | 
	
		
			
				|  |  | +        FsPackage fsPackage=fsPackageMapper.selectFsPackageByPackageId(packageId);
 | 
	
		
			
				|  |  | +        if(fsPackage==null){
 | 
	
		
			
				|  |  | +            return R.error("套餐不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(fsPackage.getStatus()!=1){
 | 
	
		
			
				|  |  | +            return R.error("套餐不可用");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String uuid = IdUtil.randomUUID();
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("createPackageOrderKey:" + uuid, companyUser.getCompanyId() + "-" + companyUser.getUserId(), 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("package:" + uuid, fsPackage, 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        BigDecimal price = fsPackage.getTotalPrice();
 | 
	
		
			
				|  |  | +        if (price == null){
 | 
	
		
			
				|  |  | +            price = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("createPackageOrderMoney:" + uuid,price,24,TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        return R.ok().put("packageOrderKey", uuid).put("price", price);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public R updatePackageOrderMoney(String createPackageOrderKey, BigDecimal money, BigDecimal payAmount, Integer payType) {
 | 
	
		
			
				|  |  | +        if (money == null) {
 | 
	
		
			
				|  |  | +            return R.error("请输入应付价格");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (payType != null && payType != 1) {
 | 
	
		
			
				|  |  | +            if (payAmount == null) {
 | 
	
		
			
				|  |  | +                return R.error("请输入代收金额");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (payAmount.compareTo(new BigDecimal(100)) < 0) {
 | 
	
		
			
				|  |  | +                throw new CustomException("物流代收金额应大于等于100");
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        String key = redisCache.getCacheObject("createPackageOrderKey:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        if (StringUtils.isEmpty(key)) {
 | 
	
		
			
				|  |  | +            throw new CustomException("订单已过期", 501);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        FsPackage fsPackage = redisCache.getCacheObject("package:"+createPackageOrderKey);
 | 
	
		
			
				|  |  | +        BigDecimal totalMoney = BigDecimal.ZERO;
 | 
	
		
			
				|  |  | +        if (fsPackage != null && fsPackage.getTotalPrice() != null) {
 | 
	
		
			
				|  |  | +            totalMoney = fsPackage.getTotalPrice();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        logger.info("商品总价===========>{}",totalMoney);
 | 
	
		
			
				|  |  | +        if (money.compareTo(totalMoney) == 1) {
 | 
	
		
			
				|  |  | +            throw new CustomException("价格不能大于套餐包总价", 501);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("createPackageOrderMoney:" + createPackageOrderKey, money, 24, TimeUnit.HOURS);
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("createPackageOrderAmount:" + createPackageOrderKey, payAmount, 24, TimeUnit.HOURS);//物流代收自定义金额
 | 
	
		
			
				|  |  | +        redisCache.setCacheObject("createPackageOrderPayType:" + createPackageOrderKey, payType, 24, TimeUnit.HOURS);//支付类型 1-全付款 2-物流代收(货到付款)
 | 
	
		
			
				|  |  | +        return R.ok();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public R getPackageOrder(String createPackageOrderKey) {
 | 
	
		
			
				|  |  | +        String key = redisCache.getCacheObject("createPackageOrderKey:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        if (StringUtils.isEmpty(key)) {
 | 
	
		
			
				|  |  | +            throw new CustomException("套餐包订单已过期", 501);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        FsPackage fsPackage = redisCache.getCacheObject("package:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        BigDecimal money = redisCache.getCacheObject("createPackageOrderMoney:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        Integer payType = redisCache.getCacheObject("createPackageOrderPayType:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        if (payType != null && payType == 2) {
 | 
	
		
			
				|  |  | +            money = redisCache.getCacheObject("createPackageOrderAmount:" + createPackageOrderKey);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return R.ok().put("package", fsPackage).put("money", money).put("payType", payType);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |