添加数据
This commit is contained in:
parent
dfc8d1cf2f
commit
6d27e92e08
|
@ -164,6 +164,150 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
|
|||
@Override
|
||||
public Result insertOrders(UserPackageOrder userPackageOrder){
|
||||
reentrantReadWriteLock.writeLock().lock();
|
||||
|
||||
|
||||
//先判断是否是企业预约项目
|
||||
UserPackageOrdersMapping ta = userPackageOrder.getOrdersPackageList().get(0);
|
||||
MassagePackage pacT1 = massagePackageService.getById(ta.getPackageId());
|
||||
if(pacT1.getType()==104) {//企业预约
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
BigDecimal canCouponMoney = BigDecimal.ZERO;//当可用代金券时的金额
|
||||
BigDecimal canVipMoney = BigDecimal.ZERO;//当可用vip时的金额
|
||||
BigDecimal totalMoney = BigDecimal.ZERO;//总金额
|
||||
List<Long> classifyIdArr = Lists.newArrayList();
|
||||
List<UserPackageOrdersMapping> ordersPackageList = userPackageOrder.getOrdersPackageList();
|
||||
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
|
||||
MassagePackage massagePackage = massagePackageService.getById(ordersPackage.getPackageId());
|
||||
//获取企业预约实际项目的金额
|
||||
QueryWrapper<MassagePackageDetail> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("main_id",massagePackage.getId());
|
||||
wrapper.last("limit 1");
|
||||
MassagePackageDetail massagePackageDetail = massagePackageDetailDao.selectOne(wrapper);
|
||||
//根据项目的金额*数量算优惠券金额
|
||||
BigDecimal sum = massagePackageDetail.getPackagePrice().multiply(new BigDecimal(ordersPackage.getNum()));
|
||||
if(massagePackage.getIsCanCoupon() == 1){
|
||||
canCouponMoney = canCouponMoney.add(sum);
|
||||
}
|
||||
if(massagePackage.getIsCanVip() == 1){
|
||||
canVipMoney = canVipMoney.add(sum);
|
||||
}
|
||||
totalMoney = totalMoney.add(sum);
|
||||
Long classifyId = massagePackage.getClassifyId();
|
||||
classifyIdArr.add(classifyId);
|
||||
}
|
||||
|
||||
BigDecimal couponMinMoney = BigDecimal.ZERO;//所有代金券的使用额度总和
|
||||
List<CouponUser> CouponUserList = Lists.newArrayList();
|
||||
String couponIds = userPackageOrder.getCouponId();
|
||||
if(couponIds!=null && couponIds.length()>0){
|
||||
if(canCouponMoney.compareTo(BigDecimal.ZERO)==0){
|
||||
return Result.error("此次购买的服务不支持优惠券!");
|
||||
}
|
||||
String[] couponArr = couponIds.trim().split(",");
|
||||
BigDecimal couponMoney = new BigDecimal(0);
|
||||
int count = 0;
|
||||
for(int i=0;i<couponArr.length;i++){
|
||||
if(couponArr[i]!=null && !couponArr[i].equals("")){
|
||||
Long couponId = Long.valueOf(couponArr[i]);
|
||||
CouponUser couponUser = couponUserService.getById(couponId);
|
||||
if (!couponUser.getStatus().equals(0)) {
|
||||
return Result.error("优惠券已被使用!");
|
||||
}
|
||||
if(couponUser.getClassifyId()!=0){
|
||||
if(!classifyIdArr.contains(couponUser.getClassifyId())){
|
||||
return Result.error("优惠券不满足使用条件!");
|
||||
}
|
||||
}
|
||||
couponMinMoney = couponMinMoney.add(couponUser.getMinMoney());
|
||||
CouponUserList.add(couponUser);
|
||||
BigDecimal money= couponUser.getMoney();
|
||||
couponMoney = couponMoney.add(money);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
userPackageOrder.setCouponCount(count);
|
||||
userPackageOrder.setCouponMoney(couponMoney);
|
||||
}else{
|
||||
userPackageOrder.setCouponCount(0);
|
||||
userPackageOrder.setCouponMoney(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
if(canCouponMoney.compareTo(couponMinMoney) < 0){
|
||||
return Result.error("当前应付总金额不满足优惠券使用的最小额度,请重新选择优惠券!");
|
||||
}
|
||||
|
||||
//获取用户VIP的优惠信息
|
||||
BigDecimal vipRate = new BigDecimal(100);
|
||||
//服务包支持vip时,获取vip优惠比例
|
||||
if(canVipMoney.compareTo(BigDecimal.ZERO)>0) {
|
||||
UserVip userVip = userVipService.selectUserVipByUserId(userPackageOrder.getUserId());
|
||||
if (userVip != null) {
|
||||
if (userVip.getIsVip() == 1) {
|
||||
//获取用户到期时间
|
||||
Date date = null;
|
||||
try {
|
||||
date = simpleDateFormat.parse(userVip.getEndTime());
|
||||
if (date.getTime() >= System.currentTimeMillis()) {
|
||||
VipDetails vipDetails = vipDetailsDao.selectOne(new QueryWrapper<VipDetails>().eq("vip_name_type", userVip.getVipNameType()));
|
||||
if (vipDetails != null) {
|
||||
vipRate = vipDetails.getRate();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.getMessage();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
userPackageOrder.setVipRate(vipRate);
|
||||
BigDecimal vipMoney = canVipMoney;
|
||||
BigDecimal unCanVipMoney = totalMoney.subtract(canVipMoney);//非会员优惠金额
|
||||
canVipMoney = canVipMoney.multiply(userPackageOrder.getVipRate()).divide(new BigDecimal(100));//对可用vip的金额进行优惠
|
||||
canVipMoney = canVipMoney.setScale(0,BigDecimal.ROUND_UP);
|
||||
BigDecimal vipReductionMoney = vipMoney.subtract(canVipMoney);
|
||||
userPackageOrder.setVipReductionMoney(vipReductionMoney);//会员减免金额
|
||||
totalMoney = canVipMoney.add(unCanVipMoney);//优惠后的总金额
|
||||
totalMoney = totalMoney.subtract(userPackageOrder.getCouponMoney());//减去优惠券额度后的总金额
|
||||
|
||||
userPackageOrder.setPayMoney(totalMoney);
|
||||
userPackageOrder.setCreateTime(simpleDateFormat.format(new Date()));
|
||||
userPackageOrder.setStatus(0);
|
||||
userPackageOrder.setOrdersNo(getGeneralOrder());
|
||||
//插入订单表
|
||||
baseMapper.insertOrders(userPackageOrder);
|
||||
Long ordersId = userPackageOrder.getOrdersId();
|
||||
|
||||
//插入订单代金券表
|
||||
if(CouponUserList.size()>0){
|
||||
for(int i=0;i<CouponUserList.size();i++){
|
||||
CouponUser couponUser = CouponUserList.get(i);
|
||||
UserPackageOrder upo = new UserPackageOrder();
|
||||
upo.setOrdersId(ordersId);
|
||||
upo.setUserCouponId(couponUser.getId());
|
||||
upo.setCouponName(couponUser.getCouponName());
|
||||
upo.setCouponMoney(couponUser.getMoney());
|
||||
baseMapper.insertCoupon(upo);
|
||||
//更新用户代金券表
|
||||
couponUserService.update(Wrappers.<CouponUser>lambdaUpdate().eq(CouponUser::getId, couponUser.getId()).set(CouponUser::getStatus, 1));
|
||||
}
|
||||
userPackageOrder.setCouponUserList(CouponUserList);
|
||||
}
|
||||
|
||||
//插入用户-服务包-订单-服务包与订单映射关系表
|
||||
for (UserPackageOrdersMapping ordersPackage : ordersPackageList) {
|
||||
ordersPackage.setOrdersId(ordersId);
|
||||
userPackageOrdersMappingService.insert(ordersPackage);
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
log.error("添加订单异常" + e.getMessage(), e);
|
||||
} finally {
|
||||
reentrantReadWriteLock.writeLock().unlock();
|
||||
}
|
||||
return Result.success().put("data", userPackageOrder);
|
||||
}else{
|
||||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
try {
|
||||
BigDecimal canCouponMoney = BigDecimal.ZERO;//当可用代金券时的金额
|
||||
|
@ -296,6 +440,7 @@ public class UserPackageOrderServiceImpl extends ServiceImpl<UserPackageOrderDao
|
|||
}
|
||||
return Result.success().put("data", userPackageOrder);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
|
|
Loading…
Reference in New Issue