|
|
@@ -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);
|
|
|
+ }
|
|
|
}
|