|
|
@@ -28,7 +28,9 @@ import java.util.ArrayList;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Collections;
|
|
|
import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.HashSet;
|
|
|
+import java.util.Map;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
import java.util.Set;
|
|
|
@@ -241,15 +243,53 @@ public class LiveConsoleOpLogServiceImpl implements ILiveConsoleOpLogService {
|
|
|
}
|
|
|
|
|
|
Date now = DateUtils.getNowDate();
|
|
|
+ Map<Long, Long> couponTypeMap = resolveCouponTypeMap(opLogs);
|
|
|
List<LiveConsoleOpLogRecordVo> result = new ArrayList<>(opLogs.size());
|
|
|
for (LiveConsoleOpLog opLog : opLogs) {
|
|
|
boolean claimed = opLog.getId() != null && claimedOpLogIds.contains(opLog.getId());
|
|
|
int status = resolveOpLogStatus(opLog, claimed, now);
|
|
|
- result.add(LiveConsoleOpLogRecordVo.from(opLog, status));
|
|
|
+ LiveConsoleOpLogRecordVo recordVo = LiveConsoleOpLogRecordVo.from(opLog, status);
|
|
|
+ fillCouponType(recordVo, opLog, couponTypeMap);
|
|
|
+ result.add(recordVo);
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+ private Map<Long, Long> resolveCouponTypeMap(List<LiveConsoleOpLog> opLogs) {
|
|
|
+ List<Long> couponIds = opLogs.stream()
|
|
|
+ .filter(log -> log.getOpType() != null && log.getBizId() != null
|
|
|
+ && (log.getOpType() == LiveConsoleOpLog.OP_COMPLETION_COUPON
|
|
|
+ || log.getOpType() == LiveConsoleOpLog.OP_WATCH_REWARD_COUPON))
|
|
|
+ .map(LiveConsoleOpLog::getBizId)
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ Map<Long, Long> couponTypeMap = new HashMap<>();
|
|
|
+ if (couponIds.isEmpty()) {
|
|
|
+ return couponTypeMap;
|
|
|
+ }
|
|
|
+ String ids = couponIds.stream().map(String::valueOf).collect(Collectors.joining(","));
|
|
|
+ List<LiveCoupon> coupons = liveCouponMapper.selectLiveCouponByIds(ids);
|
|
|
+ if (coupons != null) {
|
|
|
+ for (LiveCoupon coupon : coupons) {
|
|
|
+ if (coupon.getCouponId() != null) {
|
|
|
+ couponTypeMap.put(coupon.getCouponId(), coupon.getType());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return couponTypeMap;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void fillCouponType(LiveConsoleOpLogRecordVo recordVo, LiveConsoleOpLog opLog, Map<Long, Long> couponTypeMap) {
|
|
|
+ if (recordVo == null || opLog == null || opLog.getOpType() == null || opLog.getBizId() == null) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (opLog.getOpType() != LiveConsoleOpLog.OP_COMPLETION_COUPON
|
|
|
+ && opLog.getOpType() != LiveConsoleOpLog.OP_WATCH_REWARD_COUPON) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ recordVo.setCouponType(couponTypeMap.get(opLog.getBizId()));
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 状态优先级:已领取 > 已结束 > 待领取
|
|
|
*/
|