|
|
@@ -11,13 +11,21 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.ruoyi.shop.marketing.enums.MemberRightsType;
|
|
|
+import com.ruoyi.shop.marketing.enums.TeamStatus;
|
|
|
+import com.ruoyi.shop.marketing.groupbuy.domain.GroupBuyActivityGoods;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.domain.GroupBuyTeam;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.domain.vo.TeamMemberUserInfoVO;
|
|
|
+import com.ruoyi.shop.marketing.groupbuy.mapper.GroupBuyActivityGoodsMapper;
|
|
|
+import com.ruoyi.shop.marketing.groupbuy.mapper.GroupBuyTeamMapper;
|
|
|
+import com.ruoyi.shop.marketing.groupbuy.service.IGroupBuyActivityGoodsService;
|
|
|
+import com.ruoyi.shop.marketing.groupbuy.service.IGroupBuyTeamService;
|
|
|
import com.ruoyi.shop.order.domain.ShopOrder;
|
|
|
import com.ruoyi.shop.order.domain.ShopOrderDetail;
|
|
|
import com.ruoyi.shop.order.enums.PaymentStatus;
|
|
|
import com.ruoyi.shop.order.enums.RightsStatus;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.redisson.api.RLock;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.domain.bo.GroupBuyTeamMemberBo;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.domain.vo.GroupBuyTeamMemberVo;
|
|
|
@@ -26,7 +34,9 @@ import com.ruoyi.shop.marketing.groupbuy.mapper.GroupBuyTeamMemberMapper;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.service.IGroupBuyTeamMemberService;
|
|
|
import com.ruoyi.shop.marketing.groupbuy.exception.GroupBuyTeamMemberExceptionEnum;
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
/**
|
|
|
* 拼团活动的成员Service业务层处理
|
|
|
@@ -40,6 +50,18 @@ public class GroupBuyTeamMemberServiceImpl implements IGroupBuyTeamMemberService
|
|
|
|
|
|
private final GroupBuyTeamMemberMapper baseMapper;
|
|
|
|
|
|
+ private final GroupBuyTeamMapper groupBuyTeamMapper;
|
|
|
+
|
|
|
+ private final GroupBuyActivityGoodsMapper groupBuyActivityGoodsMapper;
|
|
|
+
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private IGroupBuyTeamService groupBuyTeamService;
|
|
|
+
|
|
|
+ @Lazy
|
|
|
+ @Resource
|
|
|
+ private IGroupBuyActivityGoodsService groupBuyActivityGoodsService;
|
|
|
+
|
|
|
/**
|
|
|
* 查询拼团活动的成员分页
|
|
|
*
|
|
|
@@ -199,11 +221,11 @@ public class GroupBuyTeamMemberServiceImpl implements IGroupBuyTeamMemberService
|
|
|
groupBuyTeamMember.setLeader(isLeader);
|
|
|
groupBuyTeamMember.setOrderId(order.getOrderId());
|
|
|
groupBuyTeamMember.setOrderCode(order.getOrderNo());
|
|
|
- groupBuyTeamMember.setJoinTime(new Date());
|
|
|
+ groupBuyTeamMember.setJoinTime(null);
|
|
|
groupBuyTeamMember.setPayTime(null);
|
|
|
groupBuyTeamMember.setPayExpireTime(team.getGroupBuyActivity().getPayExpireTime(new Date()));
|
|
|
groupBuyTeamMember.setPayStatus(PaymentStatus.WAIT_PAY);
|
|
|
- groupBuyTeamMember.setJoinStatus(true);
|
|
|
+ groupBuyTeamMember.setJoinStatus(false);
|
|
|
groupBuyTeamMember.setRightsStatus(RightsStatus.NO_RIGHTS);
|
|
|
groupBuyTeamMember.setMemberRightsType(MemberRightsType.NO);
|
|
|
|
|
|
@@ -221,7 +243,14 @@ public class GroupBuyTeamMemberServiceImpl implements IGroupBuyTeamMemberService
|
|
|
groupBuyTeamMember.setTotalReduced(order.getTotalReduced());
|
|
|
groupBuyTeamMember.setOrderDetailId(orderDetail.getOrderDetailId());
|
|
|
groupBuyTeamMember.setNumber(orderDetail.getProductNum());
|
|
|
+ if(PaymentStatus.PAID.equals(order.getPaymentStatus()))
|
|
|
+ {
|
|
|
+ groupBuyTeamMember.setPayTime(new Date());
|
|
|
+ groupBuyTeamMember.setPayStatus(PaymentStatus.PAID);
|
|
|
+ groupBuyTeamMember.setJoinStatus(true);
|
|
|
+ groupBuyTeamMember.setJoinTime(new Date());
|
|
|
|
|
|
+ }
|
|
|
this.baseMapper.insert(groupBuyTeamMember);
|
|
|
return groupBuyTeamMember;
|
|
|
}
|
|
|
@@ -277,9 +306,67 @@ public class GroupBuyTeamMemberServiceImpl implements IGroupBuyTeamMemberService
|
|
|
public Long loadJoinSuccessCount(Long teamId) {
|
|
|
return this.baseMapper.selectCount(new LambdaQueryWrapper<GroupBuyTeamMember>()
|
|
|
.eq(GroupBuyTeamMember::getBuyTeamId, teamId)
|
|
|
+ .eq(GroupBuyTeamMember::getPayStatus, PaymentStatus.PAID)
|
|
|
.eq(GroupBuyTeamMember::getJoinStatus, true)
|
|
|
);
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void memberPayExpireHandler(ShopOrder shopOrder) {
|
|
|
+ GroupBuyTeam groupBuyTeam = groupBuyTeamService.loadById(shopOrder.getSponsorActivityId(), false);
|
|
|
+ if(groupBuyTeam!=null)
|
|
|
+ {
|
|
|
+ GroupBuyTeamMember member = this.getMemberBy(groupBuyTeam.getId(), shopOrder.getUserId());
|
|
|
+ if(member.getLeader())
|
|
|
+ {
|
|
|
+ leaderPayExpireHandler(member);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ memberPayExpireHandler(member);
|
|
|
+ }
|
|
|
+
|
|
|
+ //回退拼团商品库存
|
|
|
+ GroupBuyActivityGoods groupBuyActivityGoods = groupBuyActivityGoodsService.loadByIdAndLock(member.getGroupBuyProductId());
|
|
|
+ if(ObjectUtil.isNotNull(groupBuyActivityGoods)) {
|
|
|
+ groupBuyTeam.getGroupBuyActivityGoods();
|
|
|
+ groupBuyActivityGoods.decSaleNum(member.getNumber());
|
|
|
+ groupBuyActivityGoodsMapper.updateById(groupBuyActivityGoods);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 团长支付过期处理
|
|
|
+ */
|
|
|
+ private void leaderPayExpireHandler(GroupBuyTeamMember member) {
|
|
|
+ if(PaymentStatus.WAIT_PAY.equals(member.getPayStatus()))
|
|
|
+ {
|
|
|
+ //修改成员状态
|
|
|
+ member.setJoinStatus(false);
|
|
|
+ member.setPayStatus(PaymentStatus.EXPIRE);
|
|
|
+ this.baseMapper.updateById(member);
|
|
|
+
|
|
|
+ GroupBuyTeam groupBuyTeam = groupBuyTeamService.loadById(member.getBuyTeamId(), true);
|
|
|
+ groupBuyTeam.setStatus(TeamStatus.CREAT_FAIL);
|
|
|
+ groupBuyTeamMapper.updateById(groupBuyTeam);
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 成员支付过期处理
|
|
|
+ */
|
|
|
+ private void memberPayExpireHandler(GroupBuyTeamMember member) {
|
|
|
+ if(PaymentStatus.WAIT_PAY.equals(member.getPayStatus()))
|
|
|
+ {
|
|
|
+ //修改成员状态
|
|
|
+ member.setJoinStatus(false);
|
|
|
+ member.setPayStatus(PaymentStatus.EXPIRE);
|
|
|
+ this.baseMapper.updateById(member);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
}
|