记得上下班打卡 | git大法好,push需谨慎

Commit 4fb270c3 authored by wangyifan's avatar wangyifan

kylin 回填用户头像

parent c6afeb88
......@@ -3,26 +3,20 @@ package com.liquidnet.service.kylin.service.impl;
import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.base.constant.RedisKeyExpireConst;
import com.liquidnet.service.kylin.constant.GroupBuyStatusConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyActivityVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyDiscountVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyMemberVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.GroupBuyMemberUserInfoVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyMyGroupVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyOrderCardVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyOrderDetailVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyOrderVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyRefreshShareVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.*;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.service.IKylinGroupBuyOrderService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.QueueUtils;
......@@ -36,11 +30,8 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.*;
@Service
@Slf4j
......@@ -101,6 +92,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
List<KylinGroupBuyOrderVo> orders = mongoTemplate.find(dataQuery,
KylinGroupBuyOrderVo.class, KylinGroupBuyOrderVo.class.getSimpleName());
List<KylinGroupBuyMyGroupVo> result = new ArrayList<>();
Map<String, String> avatarCache = new HashMap<>();
for (KylinGroupBuyOrderVo o : orders) {
KylinGroupBuyMyGroupVo vo = new KylinGroupBuyMyGroupVo();
vo.setGroupOrderId(o.getGroupOrderId());
......@@ -116,7 +108,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
for (KylinGroupBuyMemberVo m : o.getMembers()) {
GroupBuyMemberUserInfoVo b = new GroupBuyMemberUserInfoVo();
b.setUserId(m.getUserId());
b.setAvatar(m.getAvatar());
b.setAvatar(resolveAvatar(m.getUserId(), m.getAvatar(), avatarCache));
b.setNickname(m.getNickname());
memberUserList.add(b);
}
......@@ -160,12 +152,13 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
vo.setGroupBuyPrice(discount != null ? discount.getDiscountValue() : null);
}
if (order.getMembers() != null) {
Map<String, String> avatarCache = new HashMap<>();
List<GroupBuyMemberUserInfoVo> members = new ArrayList<>();
for (KylinGroupBuyMemberVo m : order.getMembers()) {
GroupBuyMemberUserInfoVo mu = new GroupBuyMemberUserInfoVo();
mu.setUserId(m.getUserId());
mu.setNickname(m.getNickname());
mu.setAvatar(m.getAvatar());
mu.setAvatar(resolveAvatar(m.getUserId(), m.getAvatar(), avatarCache));
members.add(mu);
}
vo.setMembers(members);
......@@ -179,8 +172,10 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
KylinGroupBuyOrderVo order = findOrder(groupOrderId);
if (order == null) return ResponseDto.failure("拼团不存在");
if (!uid.equals(order.getLeaderUserId())) return ResponseDto.failure("仅团长可取消拼团");
if (GroupBuyStatusConst.OrderStatus.SUCCESS.equals(order.getStatus())) return ResponseDto.failure("拼团已成,不可取消");
if (!GroupBuyStatusConst.OrderStatus.PENDING.equals(order.getStatus())) return ResponseDto.failure("当前状态不可取消");
if (GroupBuyStatusConst.OrderStatus.SUCCESS.equals(order.getStatus()))
return ResponseDto.failure("拼团已成,不可取消");
if (!GroupBuyStatusConst.OrderStatus.PENDING.equals(order.getStatus()))
return ResponseDto.failure("当前状态不可取消");
String lockKey = KylinRedisConst.GROUP_BUY_ORDER_LOCK.concat(groupOrderId);
if (!redisUtil.lock(lockKey, 1, 15)) {
......@@ -371,6 +366,35 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
return DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now());
}
/**
* 快照头像为空时,从 adam 用户缓存回填(不回写 Mongo)。
*/
private String resolveAvatar(String userId, String avatar, Map<String, String> cache) {
if (StringUtil.isNotBlank(avatar)) {
return avatar;
}
if (StringUtil.isBlank(userId)) {
return "";
}
if (cache != null && cache.containsKey(userId)) {
return cache.get(userId);
}
String filled = "";
try {
Object obj = redisUtil.get(AdamRedisConst.INFO_USER.concat(userId));
if (obj instanceof AdamUserInfoVo) {
String fromCache = ((AdamUserInfoVo) obj).getAvatar();
filled = fromCache == null ? "" : fromCache;
}
} catch (Exception e) {
log.warn("拼团回填头像失败 userId={}", userId, e);
}
if (cache != null) {
cache.put(userId, filled);
}
return filled;
}
private void fillTicketInfo(KylinPerformanceVo p, String timeId, String ticketId,
KylinGroupBuyOrderDetailVo vo) {
if (p.getTicketTimeList() == null) return;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment