|
|
@@ -57,6 +57,10 @@ import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubRewardsMapper;
|
|
|
import com.cyksj.mapper.manage.distribute.sub.UserDistributeSubWaitingMapper;
|
|
|
import com.cyksj.mapper.market.task.TaskTypeMapper;
|
|
|
import com.cyksj.mapper.market.task.UserBindDetailMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopDistributeWaitingSendPointsMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopOrderRelateMapper;
|
|
|
+import com.cyksj.mapper.mirrorshop.UserMirrorShopUserDistributeSharedMapper;
|
|
|
import com.cyksj.mapper.renew.RenewUpgradePackageMapper;
|
|
|
import com.cyksj.mapper.shop.YhShopGoodsSkuMapper;
|
|
|
import com.cyksj.model.dto.*;
|
|
|
@@ -331,6 +335,14 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final OrderDonIndependentRenewRecordMapper independentRenewRecordMapper;
|
|
|
|
|
|
+ private final UserMirrorShopMapper userMirrorShopMapper;
|
|
|
+
|
|
|
+ private final UserMirrorShopUserDistributeSharedMapper userMirrorShopUserDistributeSharedMapper;
|
|
|
+
|
|
|
+ private final UserMirrorShopOrderRelateMapper userMirrorShopOrderRelateMapper;
|
|
|
+
|
|
|
+ private final UserMirrorShopDistributeWaitingSendPointsMapper userMirrorShopDistributeWaitingSendPointsMapper;
|
|
|
+
|
|
|
private final List<String> noChekGoodsTemp = List.of("Apple One", "Youtube", "Spotify");
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -346,7 +358,18 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
AtomicBoolean isGiftCardPay = new AtomicBoolean(false);
|
|
|
//若存在店铺id,校验店铺状态
|
|
|
String customId = payRequest.getCustomId();
|
|
|
- Long yhsId = yhShopFrontService.checkShopCustomIdAndReturnShopId(customId);
|
|
|
+ UserMirrorShop userMirrorShop = null;
|
|
|
+ Long yhsId = 0l;
|
|
|
+ if (payRequest.getCmt() == 1) {
|
|
|
+ yhsId = yhShopFrontService.checkShopCustomIdAndReturnShopId(customId);
|
|
|
+ } else if (payRequest.getCmt() == 2) {
|
|
|
+ userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
|
|
|
+ .eq(UserMirrorShop::getCustomId, customId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (!userMirrorShop.getStatus()) {
|
|
|
+ throw BusinessRuntimeException.getInstance("店铺已关闭");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (CollUtil.isNotEmpty(giftCards)) {
|
|
|
goodsId = payRequest.getGoodsId();
|
|
|
isGiftCardPay.set(true);
|
|
|
@@ -381,7 +404,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
Long relationId = 0L;
|
|
|
Boolean isNeedTicket = checkIsNeedGroupsRelation(goodsDon);
|
|
|
Long userId = payRequest.getUserId();
|
|
|
- if (userId != null) {
|
|
|
+ if (userId != null && payRequest.getCmt() == 1) {
|
|
|
int noPayCount = count(Wrappers.lambdaQuery(OrderDon.class).eq(OrderDon::getUserId, userId).eq(OrderDon::getGoodsId, goodsId)
|
|
|
.eq(OrderDon::getYhsId, yhsId)
|
|
|
.eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
|
|
|
@@ -577,6 +600,12 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
setOrderDonPayTile(isGiftCardPay, gcPayInfo, giftCards, orderDon, goodsDon, sku, dpSkuIds);
|
|
|
//下单手机号
|
|
|
orderDon.setPhone(orderPhone);
|
|
|
+ //镜像店铺订单 区分车票
|
|
|
+ if (payRequest.getCmt() == 2 && userMirrorShop != null) {
|
|
|
+ relation.setCmt(2);
|
|
|
+ relation.setYhsId(userMirrorShop.getId());
|
|
|
+ groupsRelationMapper.updateById(relation);
|
|
|
+ }
|
|
|
this.saveOrUpdate(orderDon);
|
|
|
|
|
|
if (orderDon.getIsDp()) {
|
|
|
@@ -655,7 +684,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
corpInteractiveUserOrderRelationMapper.insert(corpInteractiveUserOrderRelation);
|
|
|
}
|
|
|
//记录文章下单量
|
|
|
- if (payRequest.getInfoId() != null){
|
|
|
+ if (payRequest.getInfoId() != null) {
|
|
|
InformationClickUserRecord informationClickUserRecord = new InformationClickUserRecord();
|
|
|
informationClickUserRecord.setInfoId(payRequest.getInfoId());
|
|
|
informationClickUserRecord.setOrderId(orderDon.getId());
|
|
|
@@ -677,10 +706,28 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
//记录补贴订单关联
|
|
|
recordOrderDonSubsidyRelate(orderId, payRequest.getSubsidyId());
|
|
|
//试用车票跳转记录
|
|
|
- recordOrderTrialTicketJumpPay(orderId,payRequest.getIsTrial());
|
|
|
+ recordOrderTrialTicketJumpPay(orderId, payRequest.getIsTrial());
|
|
|
//记录用户推广海报下单记录
|
|
|
recordPosterUserOrder(orderId, payRequest.getRid());
|
|
|
+ //记录用户镜像店铺订单
|
|
|
+ recordUserMirrorShopOrderRelate(orderId, payRequest.getUserId(), payRequest.getCmt(), payRequest.getCustomId());
|
|
|
+ }
|
|
|
|
|
|
+ private void recordUserMirrorShopOrderRelate(Long orderId, Long userId, Integer cmt, String customId) {
|
|
|
+ if (cmt == 2 && StrUtil.isNotBlank(customId)) {
|
|
|
+ UserMirrorShop userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
|
|
|
+ .eq(UserMirrorShop::getCustomId, customId).last("limit 1"));
|
|
|
+// if (userMirrorShop.getUserId().equals(userId)) {
|
|
|
+// return;
|
|
|
+// }
|
|
|
+ if (userMirrorShop == null || !userMirrorShop.getStatus()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ UserMirrorShopOrderRelate userMirrorShopOrderRelate = new UserMirrorShopOrderRelate();
|
|
|
+ userMirrorShopOrderRelate.setOrderId(orderId);
|
|
|
+ userMirrorShopOrderRelate.setMpId(userMirrorShop.getId());
|
|
|
+ userMirrorShopOrderRelateMapper.insert(userMirrorShopOrderRelate);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private Boolean checkIsNeedGroupsRelation(GoodsDon goodsDon) {
|
|
|
@@ -930,17 +977,36 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
throw new BusinessRuntimeException("缺少必填参数");
|
|
|
}
|
|
|
String customId = payRequest.getCustomId();
|
|
|
- //若存在店铺id,校验店铺状态
|
|
|
- Long yhsId = yhShopFrontService.checkShopCustomIdAndReturnShopId(customId);
|
|
|
+ Long yhsId = 0l;
|
|
|
+ if (payRequest.getCmt() == 1) {
|
|
|
+ //若存在店铺id,校验店铺状态
|
|
|
+ yhsId = yhShopFrontService.checkShopCustomIdAndReturnShopId(customId);
|
|
|
+ } else if (payRequest.getCmt() == 2) {
|
|
|
+ UserMirrorShop userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
|
|
|
+ .eq(UserMirrorShop::getCustomId, customId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (!userMirrorShop.getStatus()) {
|
|
|
+ throw BusinessRuntimeException.getInstance("店铺已关闭");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//是否有其他规格的续费订单 若有请先关闭
|
|
|
List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
- Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
- .eq(OrderDon::getRelationId, payRequest.getRelationId())
|
|
|
- .eq(OrderDon::getYhsId, yhsId)
|
|
|
- .in(OrderDon::getUserId, userIdList)
|
|
|
- .eq(OrderDon::getStatus, OrderDon.Status.noPayment).eq(OrderDon::getOrderType, 2));
|
|
|
- if (count > 0) {
|
|
|
- throw BusinessRuntimeException.getInstance("您有该车票未支付的续费订单..");
|
|
|
+ if (payRequest.getCmt() == 2) {
|
|
|
+ //关闭其他待支付订单
|
|
|
+ orderDonMapper.update(null, Wrappers.lambdaUpdate(OrderDon.class)
|
|
|
+ .set(OrderDon::getStatus, OrderDon.Status.close)
|
|
|
+ .eq(OrderDon::getUserId, userId)
|
|
|
+ .eq(OrderDon::getStatus, OrderDon.Status.noPayment));
|
|
|
+ } else {
|
|
|
+ Integer count = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .eq(OrderDon::getRelationId, payRequest.getRelationId())
|
|
|
+ .eq(OrderDon::getYhsId, yhsId)
|
|
|
+ .in(OrderDon::getUserId, userIdList)
|
|
|
+ .eq(OrderDon::getStatus, OrderDon.Status.noPayment).eq(OrderDon::getOrderType, 2));
|
|
|
+ if (count > 0) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您有该车票未支付的续费订单..");
|
|
|
+ }
|
|
|
}
|
|
|
GoodsDonSku sku = adjustGoodsDonSku(yhsId, false, renewSkuId);
|
|
|
|
|
|
@@ -1120,13 +1186,15 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
//独立规格续费订单记录
|
|
|
recordIndependentRenewOrderDon(orderDon, renewUpgradeIndependentPackage, groupsTrips);
|
|
|
}
|
|
|
+ //统一处理订单记录操作
|
|
|
+ unifiedHandlerOrderRecordFunc(orderDon.getId(), payRequest);
|
|
|
//订单金额为0 且订单为已完成 更新虚物车票
|
|
|
if (orderDon.getMoney().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
OrderDon updateOrder = orderDonMapper.selectById(orderDon.getId());
|
|
|
//mj镜像续费订单
|
|
|
- if(orderDon.getOrderType() == 2 && orderDon.getGoodsId() == 26){
|
|
|
+ if (orderDon.getOrderType() == 2 && orderDon.getGoodsId() == 26) {
|
|
|
GroupsRelation groupsRelation = groupsRelationMapper.selectById(orderDon.getRelationId());
|
|
|
- if(groupsRelation != null){
|
|
|
+ if (groupsRelation != null) {
|
|
|
Date expiryTime = groupsRelation.getExpiryTime();
|
|
|
|
|
|
//mj续费订单当天过期直接加次数
|
|
|
@@ -1185,7 +1253,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
@Override
|
|
|
public AliPayParams aliPay(AlipayOrderDonReq re, String productCode, String qrPayMode) throws Exception {
|
|
|
- return aliPayCommonService.unifiedPay(re,productCode, qrPayMode);
|
|
|
+ return aliPayCommonService.unifiedPay(re, productCode, qrPayMode);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -1429,7 +1497,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
orderDon.setType(UpgradeOrderDon.Type.BALANCE);
|
|
|
orderDon.setPayTime(DateTime.now());
|
|
|
}
|
|
|
- unifiedHandlerUpgradeOrderNotify(orderDon,upgradePackage);
|
|
|
+ unifiedHandlerUpgradeOrderNotify(orderDon, upgradePackage);
|
|
|
}
|
|
|
|
|
|
public void updateCarParkAndSendMsg(GoodsDon goodsDon, GoodsDonSku sku, OrderDon order) {
|
|
|
@@ -1840,7 +1908,8 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
|
|
|
}
|
|
|
CouponNewUserView couponNewUserView = beanSearcher.searchFirst(CouponNewUserView.class, MapUtils.builder().field(CouponNewUserView::getUserId, userId).op(Operator.Equal).build());
|
|
|
- if (couponNewUserView != null) throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
|
|
|
+ if (couponNewUserView != null)
|
|
|
+ throw BusinessRuntimeException.getInstance("该优惠码只适用于新用户");
|
|
|
}
|
|
|
if (userDistributeShared != null && !userDistributeShared.getSharedId().equals(exists.getUserId())) {
|
|
|
throw BusinessRuntimeException.getInstance("您已有推广,无法使用其他人推广码");
|
|
|
@@ -2034,10 +2103,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * @param orderDon 续费订单
|
|
|
- * @param afterSku 续费之后的规格
|
|
|
+ * @param orderDon 续费订单
|
|
|
+ * @param afterSku 续费之后的规格
|
|
|
*/
|
|
|
- private void changeTicketAndRecord(OrderDon orderDon,GoodsDonSku afterSku) {
|
|
|
+ private void changeTicketAndRecord(OrderDon orderDon, GoodsDonSku afterSku) {
|
|
|
Long preSkuId = orderDon.getSkuId();
|
|
|
Long preRelationId = orderDon.getRelationId();
|
|
|
Long orderId = orderDon.getId();
|
|
|
@@ -2577,9 +2646,9 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
|
|
|
//mj镜像续费订单
|
|
|
- if(orderDon.getOrderType() == 2 && orderDon.getGoodsId() == 26){
|
|
|
+ if (orderDon.getOrderType() == 2 && orderDon.getGoodsId() == 26) {
|
|
|
GroupsRelation groupsRelation = groupsRelationMapper.selectById(orderDon.getRelationId());
|
|
|
- if(groupsRelation != null){
|
|
|
+ if (groupsRelation != null) {
|
|
|
Date expiryTime = groupsRelation.getExpiryTime();
|
|
|
|
|
|
//mj续费订单当天过期直接加次数
|
|
|
@@ -2611,7 +2680,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
userBenefitsService.recordBalanceBySource(orderDon.getUserId(), orderDon.getBalance().negate(), UserBalanceSourceRecord.Source.payment, orderDon.getId(), goodsDon.getTitle() + UserBalanceSourceRecord.Source.payment.getDesc());
|
|
|
}
|
|
|
|
|
|
- TASK_POOL.execute(()->{
|
|
|
+ TASK_POOL.execute(() -> {
|
|
|
try {
|
|
|
//发放积分
|
|
|
if (orderDon.getMoney().compareTo(BigDecimal.ZERO) > 0 && orderDon.getIsDistribute()) {
|
|
|
@@ -2666,22 +2735,24 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
//HBO GO车队满员 车队自动下架
|
|
|
setTripDownIfFull(orderDon);
|
|
|
+ //用户镜像店铺分销订单
|
|
|
+ handleUserMirrorSHopOrderDon(orderDon);
|
|
|
} catch (Exception e) {
|
|
|
log.error("回调修改订单信息错误,orderId:{},error:{}", orderDon.getId(), StringUtil.getErrorText(e));
|
|
|
}
|
|
|
});
|
|
|
|
|
|
- TASK_POOL.execute(()->{
|
|
|
+ TASK_POOL.execute(() -> {
|
|
|
try {
|
|
|
orderDonPostService.postData(orderDon.getId(), orderDon.getGoodsId(), orderDon.getPopularizeId());
|
|
|
} catch (Exception e) {
|
|
|
- log.error("回传错误 {}",StringUtil.getErrorText(e));
|
|
|
+ log.error("回传错误 {}", StringUtil.getErrorText(e));
|
|
|
}
|
|
|
});
|
|
|
|
|
|
//虚拟物品购买推送电报消息
|
|
|
- if(goodsDon.getType() == 1){
|
|
|
- TASK_POOL.execute(()->{
|
|
|
+ if (goodsDon.getType() == 1) {
|
|
|
+ TASK_POOL.execute(() -> {
|
|
|
sendTelegramMsg(orderDon, goodsDon, sku);
|
|
|
});
|
|
|
}
|
|
|
@@ -2721,6 +2792,36 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void handleUserMirrorSHopOrderDon(OrderDon orderDon) throws Exception {
|
|
|
+ Long orderId = orderDon.getId();
|
|
|
+ UserMirrorShopOrderRelate userMirrorShopOrderRelate = userMirrorShopOrderRelateMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShopOrderRelate.class)
|
|
|
+ .eq(UserMirrorShopOrderRelate::getOrderId, orderId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (userMirrorShopOrderRelate != null) {
|
|
|
+ Long mpId = userMirrorShopOrderRelate.getMpId();
|
|
|
+ UserMirrorShop userMirrorShop = userMirrorShopMapper.selectById(mpId);
|
|
|
+ if (userMirrorShop == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ log.info("用户镜像店铺:{}订单:{}分销,发放提成", userMirrorShop.getName(), orderId);
|
|
|
+ SysConfig config = sysConfigService.getOne(Wrappers.lambdaQuery(SysConfig.class)
|
|
|
+ .eq(SysConfig::getSysKey, Constant.MIRROR_SHOP_COMMISSION)
|
|
|
+ .last("limit 1"));
|
|
|
+ UserMirrorShopDistributeConfigDto shopDistributeConfigDto = Jsons.parseObject(config.getSysValue(), UserMirrorShopDistributeConfigDto.class);
|
|
|
+ Integer consumeRate = shopDistributeConfigDto.getConsumeRate();
|
|
|
+
|
|
|
+ UserMirrorShopDistributeWaitingSendPoints waitingSendPoints = new UserMirrorShopDistributeWaitingSendPoints();
|
|
|
+ waitingSendPoints.setOrderId(orderId);
|
|
|
+ waitingSendPoints.setShopUserId(userMirrorShop.getUserId());
|
|
|
+ waitingSendPoints.setSendStatus(UserMirrorShopDistributeWaitingSendPoints.Status.waiting);
|
|
|
+ waitingSendPoints.setMoney(BigDecimal.valueOf(consumeRate).divide(BigDecimal.valueOf(100)).multiply(orderDon.getMoney()));
|
|
|
+ waitingSendPoints.setRate(consumeRate);
|
|
|
+ waitingSendPoints.setUserId(orderDon.getUserId());
|
|
|
+ waitingSendPoints.setSendTime(DateUtil.offsetDay(orderDon.getPayTime(), 3));
|
|
|
+ userMirrorShopDistributeWaitingSendPointsMapper.insert(waitingSendPoints);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private void setTripDownIfFull(OrderDon orderDon) {
|
|
|
if (orderDon.getGoodsId() == 8l) {
|
|
|
Long relationId = orderDon.getRelationId();
|
|
|
@@ -2740,18 +2841,18 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void mjRenewOrder(OrderDon orderDon){
|
|
|
+ private void mjRenewOrder(OrderDon orderDon) {
|
|
|
if (orderDon.getOrderType() == 2 && orderDon.getGoodsId() == 26) {
|
|
|
GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
|
|
|
- if (goodsDonSku.getIsMirror()){
|
|
|
- midjourneyUserMapper.update(null, Wrappers.lambdaUpdate(MidjourneyUser.class)
|
|
|
- .set(MidjourneyUser::getMjFastNum, goodsDonSku.getMjFastNum())
|
|
|
- .set(MidjourneyUser::getMjRelaxNum, goodsDonSku.getMjRelaxNum())
|
|
|
- .eq(MidjourneyUser::getRelationId, orderDon.getRelationId()));
|
|
|
- MidjourneyUser midjourneyUser = midjourneyUserMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUser.class).eq(MidjourneyUser::getRelationId, orderDon.getRelationId()));
|
|
|
- log.info("恢复midjourney镜像使用次数: {}", midjourneyUser.getId());
|
|
|
- redisService.del(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId());
|
|
|
- redisService.del(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId());
|
|
|
+ if (goodsDonSku.getIsMirror()) {
|
|
|
+ midjourneyUserMapper.update(null, Wrappers.lambdaUpdate(MidjourneyUser.class)
|
|
|
+ .set(MidjourneyUser::getMjFastNum, goodsDonSku.getMjFastNum())
|
|
|
+ .set(MidjourneyUser::getMjRelaxNum, goodsDonSku.getMjRelaxNum())
|
|
|
+ .eq(MidjourneyUser::getRelationId, orderDon.getRelationId()));
|
|
|
+ MidjourneyUser midjourneyUser = midjourneyUserMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUser.class).eq(MidjourneyUser::getRelationId, orderDon.getRelationId()));
|
|
|
+ log.info("恢复midjourney镜像使用次数: {}", midjourneyUser.getId());
|
|
|
+ redisService.del(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId());
|
|
|
+ redisService.del(RedisService.key.MIDJOURNEY_RELAX_LIMIT.getName() + midjourneyUser.getId());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -2837,7 +2938,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
plusOrderIds.add(orderDon.getId());
|
|
|
}
|
|
|
|
|
|
- public void saveTransportByAddress(Address address,Long orderId) {
|
|
|
+ public void saveTransportByAddress(Address address, Long orderId) {
|
|
|
OrderDonTransport transport = new OrderDonTransport();
|
|
|
transport.setOrderId(orderId);
|
|
|
transport.setReceiver(address.getReceiver());
|
|
|
@@ -3271,41 +3372,41 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
.select(UserDistributeSubWaiting::getLevel).last("limit 1")).stream().map(UserDistributeSubWaiting::getLevel).collect(Collectors.toList());
|
|
|
List<UserDistributeSubRewards> userDistributeSubRewards = userDistributeSubRewardsMapper.selectList(Wrappers.lambdaQuery(UserDistributeSubRewards.class)
|
|
|
.notIn(CollUtil.isNotEmpty(existLevels), UserDistributeSubRewards::getLevel, existLevels));
|
|
|
- for (UserDistributeSubRewards userDistributeSubReward : userDistributeSubRewards) {
|
|
|
- log.info("当前级别:{}对应的目标金额是{}", userDistributeSubReward.getLevel(), userDistributeSubReward.getTargetAmount().divide(BigDecimal.valueOf(100)));
|
|
|
- Integer rewardLevel = userDistributeSubReward.getLevel();
|
|
|
- Integer months = userDistributeSubReward.getMonths();
|
|
|
- BigDecimal targetAmount = userDistributeSubReward.getTargetAmount();
|
|
|
- //是否达到目标额
|
|
|
- BigDecimal subOrderMoney = Optional.ofNullable(orderDonMapper.selectSubChannelOrderMoney(subUserId, userDistributeSub.getCreatedTime(), DateUtil.offsetMonth(userDistributeSub.getCreatedTime(), months))).orElse(BigDecimal.ZERO);
|
|
|
- if (subOrderMoney.compareTo(BigDecimal.ZERO) > 0 && subOrderMoney.compareTo(targetAmount) >= 0) {
|
|
|
- try {
|
|
|
- UserDistributeSubWaiting waiting = Optional.ofNullable(userDistributeSubWaitingMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
|
|
|
- .eq(UserDistributeSubWaiting::getUserId, userId)
|
|
|
- .eq(UserDistributeSubWaiting::getSubUserId, subUserId)
|
|
|
- .eq(UserDistributeSubWaiting::getLevel, rewardLevel)
|
|
|
- .last("limit 1"))).orElse(new UserDistributeSubWaiting());
|
|
|
- if (waiting.getId() != null) {
|
|
|
- if (waiting.getSendStatus() == UserDistributeSubWaiting.Status.close) {
|
|
|
- userDistributeSubWaitingMapper.update(null, Wrappers.lambdaUpdate(UserDistributeSubWaiting.class)
|
|
|
- .set(UserDistributeSubWaiting::getSendStatus, UserDistributeSubWaiting.Status.waiting)
|
|
|
- .eq(UserDistributeSubWaiting::getSendStatus, UserDistributeSubWaiting.Status.close)
|
|
|
- .eq(UserDistributeSubWaiting::getId, waiting.getId()));
|
|
|
- }
|
|
|
- } else {
|
|
|
- waiting.setMoney(userDistributeSubReward.getMoney());
|
|
|
- waiting.setUserId(userId);
|
|
|
- waiting.setSubUserId(subUserId);
|
|
|
- waiting.setSendStatus(UserDistributeSubWaiting.Status.waiting);
|
|
|
- waiting.setSendTime(DateUtil.offsetDay(DateTime.now(), 3));
|
|
|
- waiting.setLevel(rewardLevel);
|
|
|
- userDistributeSubWaitingMapper.insert(waiting);
|
|
|
+ for (UserDistributeSubRewards userDistributeSubReward : userDistributeSubRewards) {
|
|
|
+ log.info("当前级别:{}对应的目标金额是{}", userDistributeSubReward.getLevel(), userDistributeSubReward.getTargetAmount().divide(BigDecimal.valueOf(100)));
|
|
|
+ Integer rewardLevel = userDistributeSubReward.getLevel();
|
|
|
+ Integer months = userDistributeSubReward.getMonths();
|
|
|
+ BigDecimal targetAmount = userDistributeSubReward.getTargetAmount();
|
|
|
+ //是否达到目标额
|
|
|
+ BigDecimal subOrderMoney = Optional.ofNullable(orderDonMapper.selectSubChannelOrderMoney(subUserId, userDistributeSub.getCreatedTime(), DateUtil.offsetMonth(userDistributeSub.getCreatedTime(), months))).orElse(BigDecimal.ZERO);
|
|
|
+ if (subOrderMoney.compareTo(BigDecimal.ZERO) > 0 && subOrderMoney.compareTo(targetAmount) >= 0) {
|
|
|
+ try {
|
|
|
+ UserDistributeSubWaiting waiting = Optional.ofNullable(userDistributeSubWaitingMapper.selectOne(Wrappers.lambdaQuery(UserDistributeSubWaiting.class)
|
|
|
+ .eq(UserDistributeSubWaiting::getUserId, userId)
|
|
|
+ .eq(UserDistributeSubWaiting::getSubUserId, subUserId)
|
|
|
+ .eq(UserDistributeSubWaiting::getLevel, rewardLevel)
|
|
|
+ .last("limit 1"))).orElse(new UserDistributeSubWaiting());
|
|
|
+ if (waiting.getId() != null) {
|
|
|
+ if (waiting.getSendStatus() == UserDistributeSubWaiting.Status.close) {
|
|
|
+ userDistributeSubWaitingMapper.update(null, Wrappers.lambdaUpdate(UserDistributeSubWaiting.class)
|
|
|
+ .set(UserDistributeSubWaiting::getSendStatus, UserDistributeSubWaiting.Status.waiting)
|
|
|
+ .eq(UserDistributeSubWaiting::getSendStatus, UserDistributeSubWaiting.Status.close)
|
|
|
+ .eq(UserDistributeSubWaiting::getId, waiting.getId()));
|
|
|
}
|
|
|
- log.info("分销用户:{}下级渠道:{}达到:{}销售额,发送奖励成功", userId, subUserId, UserDistributeSubRewards.RewardLevel.values()[rewardLevel].getMsg());
|
|
|
- } catch (DuplicateKeyException e) {
|
|
|
+ } else {
|
|
|
+ waiting.setMoney(userDistributeSubReward.getMoney());
|
|
|
+ waiting.setUserId(userId);
|
|
|
+ waiting.setSubUserId(subUserId);
|
|
|
+ waiting.setSendStatus(UserDistributeSubWaiting.Status.waiting);
|
|
|
+ waiting.setSendTime(DateUtil.offsetDay(DateTime.now(), 3));
|
|
|
+ waiting.setLevel(rewardLevel);
|
|
|
+ userDistributeSubWaitingMapper.insert(waiting);
|
|
|
}
|
|
|
+ log.info("分销用户:{}下级渠道:{}达到:{}销售额,发送奖励成功", userId, subUserId, UserDistributeSubRewards.RewardLevel.values()[rewardLevel].getMsg());
|
|
|
+ } catch (DuplicateKeyException e) {
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -3480,13 +3581,22 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
if (user.getIsBlack()) throw BusinessRuntimeException.getInstance("系统检测操作异常,请稍后再试");
|
|
|
}
|
|
|
- List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
- int noPayCount = upgradeOrderDonMapper.selectCount(Wrappers.lambdaQuery(UpgradeOrderDon.class)
|
|
|
- .in(UpgradeOrderDon::getUserId, userIdList)
|
|
|
- .eq(UpgradeOrderDon::getRelationId, payRequest.getRelationId())
|
|
|
- .eq(UpgradeOrderDon::getStatus, UpgradeOrderDon.Status.noPayment.toString()));
|
|
|
- if (noPayCount > 0) {
|
|
|
- throw new BusinessRuntimeException("您有未支付订单.");
|
|
|
+ if (payRequest.getCmt() == 1) {
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
+ int noPayCount = upgradeOrderDonMapper.selectCount(Wrappers.lambdaQuery(UpgradeOrderDon.class)
|
|
|
+ .in(UpgradeOrderDon::getUserId, userIdList)
|
|
|
+ .eq(UpgradeOrderDon::getRelationId, payRequest.getRelationId())
|
|
|
+ .eq(UpgradeOrderDon::getStatus, UpgradeOrderDon.Status.noPayment.toString()));
|
|
|
+ if (noPayCount > 0) {
|
|
|
+ throw new BusinessRuntimeException("您有未支付订单.");
|
|
|
+ }
|
|
|
+ } else if (payRequest.getCmt() == 2) {
|
|
|
+ UserMirrorShop userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
|
|
|
+ .eq(UserMirrorShop::getCustomId, payRequest.getCustomId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (!userMirrorShop.getStatus()) {
|
|
|
+ throw BusinessRuntimeException.getInstance("店铺已关闭");
|
|
|
+ }
|
|
|
}
|
|
|
GroupsRelation groupsRelation = getGroupsRelation(payRequest.getUserId(), payRequest.getRelationId());
|
|
|
GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
|
@@ -3555,7 +3665,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
payRequest.setDonMoney(upgradePackage.getPrice());
|
|
|
}
|
|
|
MidjourneyUser midjourneyUser = midjourneyUserMapper.selectOne(Wrappers.lambdaQuery(MidjourneyUser.class).eq(MidjourneyUser::getRelationId, payRequest.getRelationId()));
|
|
|
- if (midjourneyUser == null){
|
|
|
+ if (midjourneyUser == null) {
|
|
|
throw BusinessRuntimeException.getInstance("车票未激活Midjourney账号,请先激活");
|
|
|
}
|
|
|
}
|
|
|
@@ -3577,7 +3687,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
upgradeOrderDon.setType(UpgradeOrderDon.Type.ALI_PAY);
|
|
|
upgradeOrderDonMapper.insert(upgradeOrderDon);
|
|
|
|
|
|
- deductUpgradeBalancePayOrderMoney(upgradeOrderDon, payRequest.getBalance(),user );
|
|
|
+ deductUpgradeBalancePayOrderMoney(upgradeOrderDon, payRequest.getBalance(), user);
|
|
|
|
|
|
if (upgradeOrderDon.getStatus() == UpgradeOrderDon.Status.noPayment) {
|
|
|
jobManager.addJob(EXPIRY_TIME, () -> {
|
|
|
@@ -3643,7 +3753,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
@Override
|
|
|
public AliPayParams aliPayUpgrade(AlipayOrderDonReq re, String productCode, String qrPayMode) throws Exception {
|
|
|
- return aliPayCommonService.unifiedPayUpgrade(re,productCode,qrPayMode);
|
|
|
+ return aliPayCommonService.unifiedPayUpgrade(re, productCode, qrPayMode);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -3695,7 +3805,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
}
|
|
|
|
|
|
//回调
|
|
|
- unifiedHandlerUpgradeOrderNotify(orderDon,upgradePackage );
|
|
|
+ unifiedHandlerUpgradeOrderNotify(orderDon, upgradePackage);
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -3704,7 +3814,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
*/
|
|
|
public void unifiedHandlerUpgradeOrderNotify(UpgradeOrderDon orderDon, UpgradePackage upgradePackage) {
|
|
|
orderDon.setStatus(UpgradeOrderDon.Status.complete);
|
|
|
- int isSuccess = upgradeOrderDonMapper.update(null,Wrappers.lambdaUpdate(UpgradeOrderDon.class)
|
|
|
+ int isSuccess = upgradeOrderDonMapper.update(null, Wrappers.lambdaUpdate(UpgradeOrderDon.class)
|
|
|
.set(UpgradeOrderDon::getStatus, orderDon.getStatus())
|
|
|
.in(UpgradeOrderDon::getStatus, List.of(UpgradeOrderDon.Status.noPayment, UpgradeOrderDon.Status.close))
|
|
|
.eq(UpgradeOrderDon::getId, orderDon.getId()));
|
|
|
@@ -3729,7 +3839,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
Object fastNum = redisService.get(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId());
|
|
|
if (fastNum == null) {
|
|
|
redisService.set(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId(), midjourneyUser.getMjFastNum() + upgradePackage.getNum().longValue(), RedisService.key.MIDJOURNEY_FAST_LIMIT.getTimeout());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
redisService.incr(RedisService.key.MIDJOURNEY_FAST_LIMIT.getName() + midjourneyUser.getId(), upgradePackage.getNum().longValue());
|
|
|
}
|
|
|
}
|
|
|
@@ -3848,7 +3958,7 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
return orderDon.getStatus();
|
|
|
}
|
|
|
|
|
|
- private UpgradeOrderDon.Status updateUpgradeNoPayment(UpgradeOrderDon orderDon,UpgradePackage upgradePackage) {
|
|
|
+ private UpgradeOrderDon.Status updateUpgradeNoPayment(UpgradeOrderDon orderDon, UpgradePackage upgradePackage) {
|
|
|
unifiedHandlerUpgradeOrderNotify(orderDon, upgradePackage);
|
|
|
return orderDon.getStatus();
|
|
|
}
|
|
|
@@ -3856,13 +3966,13 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
@Override
|
|
|
public UpgradeOrderDetailView getUpgradeOrderDetail(Long orderId, Long userId) {
|
|
|
- MapBuilder builder = MapUtils.builder()
|
|
|
- .field(OrderDonView::getId, orderId)
|
|
|
- .orderBy(OrderDonView::getId).desc();
|
|
|
- if (userId != null) {
|
|
|
- builder.field(UpgradeOrderDetailView::getUserId, userId);
|
|
|
- }
|
|
|
- return beanSearcher.searchFirst(UpgradeOrderDetailView.class, builder.build());
|
|
|
+ MapBuilder builder = MapUtils.builder()
|
|
|
+ .field(OrderDonView::getId, orderId)
|
|
|
+ .orderBy(OrderDonView::getId).desc();
|
|
|
+ if (userId != null) {
|
|
|
+ builder.field(UpgradeOrderDetailView::getUserId, userId);
|
|
|
+ }
|
|
|
+ return beanSearcher.searchFirst(UpgradeOrderDetailView.class, builder.build());
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -3877,13 +3987,22 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
User user = userMapper.selectById(userId);
|
|
|
if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
if (user.getIsBlack()) throw BusinessRuntimeException.getInstance("系统检测操作异常,请稍后再试");
|
|
|
- List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
- int noPayCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
- .in(OrderDon::getUserId, userIdList)
|
|
|
- .eq(OrderDon::getRelationId, payRequest.getRelationId())
|
|
|
- .eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
|
|
|
- if (noPayCount > 0) {
|
|
|
- throw new BusinessRuntimeException("您有未支付订单.");
|
|
|
+ if (payRequest.getCmt() == 1) {
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, user);
|
|
|
+ int noPayCount = orderDonMapper.selectCount(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .in(OrderDon::getUserId, userIdList)
|
|
|
+ .eq(OrderDon::getRelationId, payRequest.getRelationId())
|
|
|
+ .eq(OrderDon::getStatus, OrderDon.Status.noPayment.toString()));
|
|
|
+ if (noPayCount > 0) {
|
|
|
+ throw new BusinessRuntimeException("您有未支付订单.");
|
|
|
+ }
|
|
|
+ } else if (payRequest.getCmt() == 2) {
|
|
|
+ UserMirrorShop userMirrorShop = userMirrorShopMapper.selectOne(Wrappers.lambdaQuery(UserMirrorShop.class)
|
|
|
+ .eq(UserMirrorShop::getCustomId, payRequest.getCustomId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (!userMirrorShop.getStatus()) {
|
|
|
+ throw BusinessRuntimeException.getInstance("店铺已关闭");
|
|
|
+ }
|
|
|
}
|
|
|
GroupsRelation groupsRelation = getGroupsRelation(payRequest.getUserId(), payRequest.getRelationId());
|
|
|
GroupsTrips groupsTrips = getGroupsTrips(groupsRelation);
|
|
|
@@ -3939,13 +4058,15 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
jobManager.addJob(EXPIRY_TIME, () -> {
|
|
|
closeOrder(orderDon.getId(), null);
|
|
|
});
|
|
|
+ //记录用户镜像店铺订单
|
|
|
+ recordUserMirrorShopOrderRelate(orderDon.getId(), payRequest.getUserId(), payRequest.getCmt(), payRequest.getCustomId());
|
|
|
return orderDon;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 试用车票跳转购买正式车票订单记录
|
|
|
*/
|
|
|
- public void recordOrderTrialTicketJumpPay(Long orderId,Boolean isTrial) {
|
|
|
+ public void recordOrderTrialTicketJumpPay(Long orderId, Boolean isTrial) {
|
|
|
if (isTrial != null && isTrial) {
|
|
|
UserTrialTicketJumpPayRecord userTrialTicketJumpPayRecord = new UserTrialTicketJumpPayRecord();
|
|
|
userTrialTicketJumpPayRecord.setOrderId(orderId);
|