7.30 解决前端同一个拼团显示两个的bug,明确下一步任务。
This commit is contained in:
parent
8d4c13b9e2
commit
9de2d03f17
@ -81,14 +81,27 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
soldBox.textContent = `${allTeamUserCount}人已抢`;
|
||||
}
|
||||
|
||||
/* ------------- 渲染拼团列表 ------------- */
|
||||
/* ------------- 渲染拼团列表 (按 teamId 去重) ------------- */
|
||||
function renderTeams(list = [], groupPrice = 0) {
|
||||
if (!list?.length) {
|
||||
// 1) 先按 teamId 聚合,只取第一条
|
||||
const uniq = [];
|
||||
const seen = new Set();
|
||||
list.forEach(t => {
|
||||
if (!seen.has(t.teamId)) {
|
||||
uniq.push(t);
|
||||
seen.add(t.teamId);
|
||||
}
|
||||
});
|
||||
|
||||
if (!uniq.length) {
|
||||
groupTitle.textContent = '小伙伴,赶紧去开团吧,做村里最靓的仔。';
|
||||
return;
|
||||
}
|
||||
|
||||
// 2) 绘制
|
||||
userList.innerHTML = '';
|
||||
list.forEach(t => userList.appendChild(makeItem(t, groupPrice)));
|
||||
uniq.forEach(t => userList.appendChild(makeItem(t, groupPrice)));
|
||||
|
||||
initUserMarquee(3);
|
||||
initCountdown();
|
||||
}
|
||||
@ -125,7 +138,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
||||
div.className = 'user-item';
|
||||
div.innerHTML = `
|
||||
<div class="user-avatar"><i class="fas fa-user"></i></div>
|
||||
<div class="user-info">
|
||||
<div class="user-info"
|
||||
data-teamid="${team.teamId}"
|
||||
data-activityid="${team.activityId}">
|
||||
<div class="user-name">${maskedId}</div>
|
||||
<div class="user-status">
|
||||
仅剩 ${leftNum} 人成团
|
||||
|
@ -38,7 +38,6 @@ public class TradeLockLockOrderService implements ITradeLockOrderService {
|
||||
return repository.queryGroupBuyProgress(teamId);
|
||||
}
|
||||
|
||||
//TODO:设置超时未付款自动取消lock,释放资源
|
||||
@Override
|
||||
public MarketPayOrderEntity lockMarketPayOrder(UserEntity userEntity, PayActivityEntity payActivityEntity, PayDiscountEntity payDiscountEntity) throws Exception{
|
||||
log.info("拼团交易-锁定营销优惠支付订单:{} activityId:{} goodsId:{}", userEntity.getUserId(), payActivityEntity.getActivityId(), payDiscountEntity.getGoodsId());
|
||||
|
@ -68,6 +68,7 @@ public class TradeTaskService implements ITradeTaskService {
|
||||
* @return key——任务总量、successCount、errorCount、retryCount
|
||||
*/
|
||||
private Map<String, Integer> execNotifyJob(List<NotifyTaskEntity> notifyTaskEntityList) throws Exception {
|
||||
//successCount:成功回调的任务数量
|
||||
int successCount = 0, errorCount = 0, retryCount = 0;
|
||||
for (NotifyTaskEntity notifyTask : notifyTaskEntityList) {
|
||||
// 回调小商城中的groupBuyNotify接口 success 成功,error 失败
|
||||
|
@ -46,6 +46,7 @@ import java.util.concurrent.TimeUnit;
|
||||
@RequiredArgsConstructor
|
||||
// todo:逆向后,还要处理 redis recoveryCount
|
||||
// todo:用户退单后,他的参与活动次数应该释放,应该还能再次参加拼团
|
||||
// todo:支付商城端的消息处理,已支付->退款 未支付->定时任务查询->调用拼团系统释放锁单。
|
||||
public class TradeRepository implements ITradeRepository {
|
||||
|
||||
private final IGroupBuyOrderDao groupBuyOrderDao;
|
||||
|
@ -32,7 +32,8 @@ public class MarketIndexController implements IMarketIndexService {
|
||||
|
||||
private final IIndexGroupBuyMarketService indexGroupBuyMarketService;
|
||||
|
||||
@RateLimiterAccessInterceptor(key = "userId", fallbackMethod = "queryGroupBuyMarketConfigFallBack", permitsPerSecond = 1.0d, blacklistCount = 1)
|
||||
// 每秒放 5 个令牌,超限 5 次后算进黑名单
|
||||
@RateLimiterAccessInterceptor(key = "userId", fallbackMethod = "queryGroupBuyMarketConfigFallBack", permitsPerSecond = 5.0d, blacklistCount = 5)
|
||||
@PostMapping("/query_group_buy_market_config")
|
||||
@Override
|
||||
public Response<GoodsMarketResponseDTO> queryGroupBuyMarketConfig(
|
||||
|
Loading…
x
Reference in New Issue
Block a user