|
|
@@ -66,6 +66,8 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
|
|
|
private final EquipmentUserDistributeTransportBenefitsMapper transportBenefitsMapper;
|
|
|
|
|
|
+ private final EquipmentUserPayRecordMapper equipmentUserPayRecordMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public void saveDistributionInvitation(Long sharedId, Boolean isNewUser, Long userId) {
|
|
|
if (sharedId.equals(userId)) {
|
|
|
@@ -108,23 +110,7 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
EquipmentUserDistributeInviteRecord record = getDistributeRecord(userId);
|
|
|
if (record != null) {
|
|
|
Long sharId = record.getShareId();
|
|
|
- if (saveInviteRecord(sharId, userId, orderId, EquipmentUserChanceRecord.Status.hasPayment)) {
|
|
|
- EquipmentUserChance chance = equipmentUserChanceMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChance.class)
|
|
|
- .eq(EquipmentUserChance::getUserId, sharId)
|
|
|
- .last("limit 1"));
|
|
|
- if (chance == null) {
|
|
|
- try {
|
|
|
- chance = new EquipmentUserChance();
|
|
|
- chance.setUserId(sharId);
|
|
|
- chance.setNum(1);
|
|
|
- equipmentUserChanceMapper.insert(chance);
|
|
|
- } catch (DuplicateKeyException e) {
|
|
|
- equipmentUserChanceMapper.addUserChance(sharId);
|
|
|
- }
|
|
|
- } else {
|
|
|
- equipmentUserChanceMapper.addUserChance(sharId);
|
|
|
- }
|
|
|
- }
|
|
|
+ saveInviteRecord(sharId, userId, orderId, 1);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -133,13 +119,7 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
EquipmentUserDistributeInviteRecord record = getDistributeRecord(userId);
|
|
|
if (record != null) {
|
|
|
Long sharId = record.getShareId();
|
|
|
- if (saveInviteRecord(sharId, userId, orderId, EquipmentUserChanceRecord.Status.refund)) {
|
|
|
- Integer update = equipmentUserChanceMapper.subUserChance(sharId);
|
|
|
- if (update == 0) {
|
|
|
- //扣除权益
|
|
|
- deductUserBenefits(sharId, orderId);
|
|
|
- }
|
|
|
- }
|
|
|
+ saveInviteRecord(sharId, userId, orderId, 2);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -154,43 +134,25 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
return record;
|
|
|
}
|
|
|
|
|
|
- public Boolean saveInviteRecord(Long sharId, Long userId, Long orderId, EquipmentUserChanceRecord.Status status) {
|
|
|
- if (status == EquipmentUserChanceRecord.Status.hasPayment) {
|
|
|
- //是否有配置车票权益
|
|
|
- SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
- .eq(SysConfig::getSysKey, Constant.EQUIPMENT_DISTRIBUTE_KEY).last("limit 1"));
|
|
|
- if (config == null) {
|
|
|
- return false;
|
|
|
+ public void saveInviteRecord(Long sharId, Long userId, Long orderId, Integer type) {
|
|
|
+ EquipmentConfigDto equipmentConfigDto = checkEquipmentConfigDto();
|
|
|
+ if (equipmentConfigDto != null && type == 1) {
|
|
|
+ //已配置余额 实物发货 发送余额
|
|
|
+ if (equipmentConfigDto.getBalance() != null && equipmentConfigDto.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ addBalanceBenefits(sharId, orderId, equipmentConfigDto.getBalance(), EquipmentUserDistributeTransportBenefits.Status.hasPayment);
|
|
|
}
|
|
|
- String sysValue = config.getSysValue();
|
|
|
- //未配置权益
|
|
|
- if (StrUtil.isEmpty(sysValue)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- try {
|
|
|
- EquipmentConfigDto equipmentConfigDto = Jsons.parseObject(sysValue, EquipmentConfigDto.class);
|
|
|
- if (equipmentConfigDto == null) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- //已配置余额 实物发货 发送余额
|
|
|
- if (equipmentConfigDto.getBalance() != null && equipmentConfigDto.getBalance().compareTo(BigDecimal.ZERO) > 0) {
|
|
|
- log.info("分销人:{}记录分享有礼实物订单:{}余额权益,待发货后发送", sharId, orderId);
|
|
|
- EquipmentUserDistributeTransportBenefits transportBenefits = new EquipmentUserDistributeTransportBenefits();
|
|
|
- transportBenefits.setShareId(sharId);
|
|
|
- transportBenefits.setOrderId(orderId);
|
|
|
- transportBenefits.setStatus(EquipmentUserDistributeTransportBenefits.Status.hasPayment);
|
|
|
- transportBenefits.setBalance(equipmentConfigDto.getBalance());
|
|
|
- transportBenefitsMapper.insert(transportBenefits);
|
|
|
- }
|
|
|
- //未配置车票权益
|
|
|
- if (CollUtil.isEmpty(equipmentConfigDto.getSkuList())) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- return false;
|
|
|
+ //未配置车票权益
|
|
|
+ if (CollUtil.isNotEmpty(equipmentConfigDto.getSkuList())) {
|
|
|
+ addTicketBenefitsChance(sharId, userId, orderId, EquipmentUserChanceRecord.Status.hasPayment);
|
|
|
}
|
|
|
+ EquipmentUserPayRecord record = new EquipmentUserPayRecord();
|
|
|
+ record.setShareId(sharId);
|
|
|
+ record.setUserId(userId);
|
|
|
+ record.setStatus(EquipmentUserPayRecord.Status.hasPayment);
|
|
|
+ record.setOrderId(orderId);
|
|
|
+ equipmentUserPayRecordMapper.insert(record);
|
|
|
}
|
|
|
- if (status == EquipmentUserChanceRecord.Status.refund) {
|
|
|
+ if (type == 2) {
|
|
|
//是否有余额权益
|
|
|
EquipmentUserDistributeTransportBenefits transportBenefits = transportBenefitsMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserDistributeTransportBenefits.class)
|
|
|
.eq(EquipmentUserDistributeTransportBenefits::getOrderId, orderId).last("limit 1"));
|
|
|
@@ -198,30 +160,23 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
transportBenefits.setStatus(EquipmentUserDistributeTransportBenefits.Status.refund);
|
|
|
transportBenefitsMapper.updateById(transportBenefits);
|
|
|
}
|
|
|
- EquipmentUserChanceRecord record = equipmentUserChanceRecordMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChanceRecord.class)
|
|
|
- .eq(EquipmentUserChanceRecord::getUserId, userId)
|
|
|
- .eq(EquipmentUserChanceRecord::getStatus, EquipmentUserChanceRecord.Status.hasPayment)
|
|
|
+ //是否有车票权益
|
|
|
+ int update = equipmentUserChanceRecordMapper.update(null, Wrappers.lambdaUpdate(EquipmentUserChanceRecord.class)
|
|
|
+ .set(EquipmentUserChanceRecord::getStatus, EquipmentUserChanceRecord.Status.refund)
|
|
|
.eq(EquipmentUserChanceRecord::getOrderId, orderId)
|
|
|
- .last("limit 1"));
|
|
|
- if (record == null) {
|
|
|
- return false;
|
|
|
+ .eq(EquipmentUserChanceRecord::getStatus, EquipmentUserChanceRecord.Status.hasPayment));
|
|
|
+ if (update > 0) {
|
|
|
+ update = equipmentUserChanceMapper.subUserChance(sharId);
|
|
|
+ if (update == 0) {
|
|
|
+ //扣除权益
|
|
|
+ deductUserBenefits(sharId, orderId);
|
|
|
+ }
|
|
|
}
|
|
|
+ equipmentUserPayRecordMapper.update(null, Wrappers.lambdaUpdate(EquipmentUserPayRecord.class)
|
|
|
+ .set(EquipmentUserPayRecord::getStatus, EquipmentUserPayRecord.Status.refund)
|
|
|
+ .eq(EquipmentUserPayRecord::getOrderId, orderId)
|
|
|
+ .ne(EquipmentUserPayRecord::getStatus, EquipmentUserChanceRecord.Status.refund));
|
|
|
}
|
|
|
- EquipmentUserChanceRecord record = equipmentUserChanceRecordMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChanceRecord.class)
|
|
|
- .eq(EquipmentUserChanceRecord::getUserId, userId)
|
|
|
- .eq(EquipmentUserChanceRecord::getStatus, status)
|
|
|
- .eq(EquipmentUserChanceRecord::getOrderId, orderId)
|
|
|
- .last("limit 1"));
|
|
|
- if (record != null) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- record = new EquipmentUserChanceRecord();
|
|
|
- record.setShareId(sharId);
|
|
|
- record.setUserId(userId);
|
|
|
- record.setStatus(status);
|
|
|
- record.setOrderId(orderId);
|
|
|
- equipmentUserChanceRecordMapper.insert(record);
|
|
|
- return true;
|
|
|
}
|
|
|
|
|
|
public void deductUserBenefits(Long userId, Long orderId) {
|
|
|
@@ -288,4 +243,63 @@ public class EquipmentDistributeServiceImpl implements EquipmentDistributeServic
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+ public EquipmentConfigDto checkEquipmentConfigDto() {
|
|
|
+ //是否有配置车票权益
|
|
|
+ SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.EQUIPMENT_DISTRIBUTE_KEY).last("limit 1"));
|
|
|
+ if (config == null) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ String sysValue = config.getSysValue();
|
|
|
+ //未配置权益
|
|
|
+ if (StrUtil.isEmpty(sysValue)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ EquipmentConfigDto equipmentConfigDto = null;
|
|
|
+ try {
|
|
|
+ equipmentConfigDto = Jsons.parseObject(sysValue, EquipmentConfigDto.class);
|
|
|
+ } catch (Exception e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return equipmentConfigDto;
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addBalanceBenefits(Long sharId, Long orderId, BigDecimal balance, EquipmentUserDistributeTransportBenefits.Status status) {
|
|
|
+ log.info("分销人:{}记录分享有礼实物订单:{}余额权益,待发货后发送", sharId, orderId);
|
|
|
+ EquipmentUserDistributeTransportBenefits transportBenefits = new EquipmentUserDistributeTransportBenefits();
|
|
|
+ transportBenefits.setShareId(sharId);
|
|
|
+ transportBenefits.setOrderId(orderId);
|
|
|
+ transportBenefits.setStatus(status);
|
|
|
+ transportBenefits.setBalance(balance);
|
|
|
+ transportBenefitsMapper.insert(transportBenefits);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void addTicketBenefitsChance(Long sharId, Long userId, Long orderId, EquipmentUserChanceRecord.Status status) {
|
|
|
+ try {
|
|
|
+ EquipmentUserChanceRecord record = new EquipmentUserChanceRecord();
|
|
|
+ record.setShareId(sharId);
|
|
|
+ record.setUserId(userId);
|
|
|
+ record.setStatus(status);
|
|
|
+ record.setOrderId(orderId);
|
|
|
+ equipmentUserChanceRecordMapper.insert(record);
|
|
|
+
|
|
|
+ EquipmentUserChance chance = equipmentUserChanceMapper.selectOne(Wrappers.lambdaQuery(EquipmentUserChance.class)
|
|
|
+ .eq(EquipmentUserChance::getUserId, sharId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (chance == null) {
|
|
|
+ try {
|
|
|
+ chance = new EquipmentUserChance();
|
|
|
+ chance.setUserId(sharId);
|
|
|
+ chance.setNum(1);
|
|
|
+ equipmentUserChanceMapper.insert(chance);
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
+ equipmentUserChanceMapper.addUserChance(sharId);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ equipmentUserChanceMapper.addUserChance(sharId);
|
|
|
+ }
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|