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

Commit 4fb270c3 authored by wangyifan's avatar wangyifan

kylin 回填用户头像

parent c6afeb88
...@@ -3,26 +3,20 @@ package com.liquidnet.service.kylin.service.impl; ...@@ -3,26 +3,20 @@ package com.liquidnet.service.kylin.service.impl;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisUtil; import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.*; 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.ResponseDto;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.base.constant.RedisKeyExpireConst; import com.liquidnet.service.base.constant.RedisKeyExpireConst;
import com.liquidnet.service.kylin.constant.GroupBuyStatusConst; import com.liquidnet.service.kylin.constant.GroupBuyStatusConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyActivityVo; import com.liquidnet.service.kylin.dto.vo.groupbuy.*;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyDiscountVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.groupbuy.KylinGroupBuyMemberVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
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.mongo.KylinOrderTicketEntitiesVo; 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.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; 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.service.IKylinGroupBuyOrderService;
import com.liquidnet.service.kylin.utils.DataUtils; import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.QueueUtils; import com.liquidnet.service.kylin.utils.QueueUtils;
...@@ -36,11 +30,8 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -36,11 +30,8 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedList;
import java.util.List;
@Service @Service
@Slf4j @Slf4j
...@@ -101,6 +92,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService ...@@ -101,6 +92,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
List<KylinGroupBuyOrderVo> orders = mongoTemplate.find(dataQuery, List<KylinGroupBuyOrderVo> orders = mongoTemplate.find(dataQuery,
KylinGroupBuyOrderVo.class, KylinGroupBuyOrderVo.class.getSimpleName()); KylinGroupBuyOrderVo.class, KylinGroupBuyOrderVo.class.getSimpleName());
List<KylinGroupBuyMyGroupVo> result = new ArrayList<>(); List<KylinGroupBuyMyGroupVo> result = new ArrayList<>();
Map<String, String> avatarCache = new HashMap<>();
for (KylinGroupBuyOrderVo o : orders) { for (KylinGroupBuyOrderVo o : orders) {
KylinGroupBuyMyGroupVo vo = new KylinGroupBuyMyGroupVo(); KylinGroupBuyMyGroupVo vo = new KylinGroupBuyMyGroupVo();
vo.setGroupOrderId(o.getGroupOrderId()); vo.setGroupOrderId(o.getGroupOrderId());
...@@ -116,7 +108,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService ...@@ -116,7 +108,7 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
for (KylinGroupBuyMemberVo m : o.getMembers()) { for (KylinGroupBuyMemberVo m : o.getMembers()) {
GroupBuyMemberUserInfoVo b = new GroupBuyMemberUserInfoVo(); GroupBuyMemberUserInfoVo b = new GroupBuyMemberUserInfoVo();
b.setUserId(m.getUserId()); b.setUserId(m.getUserId());
b.setAvatar(m.getAvatar()); b.setAvatar(resolveAvatar(m.getUserId(), m.getAvatar(), avatarCache));
b.setNickname(m.getNickname()); b.setNickname(m.getNickname());
memberUserList.add(b); memberUserList.add(b);
} }
...@@ -160,12 +152,13 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService ...@@ -160,12 +152,13 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
vo.setGroupBuyPrice(discount != null ? discount.getDiscountValue() : null); vo.setGroupBuyPrice(discount != null ? discount.getDiscountValue() : null);
} }
if (order.getMembers() != null) { if (order.getMembers() != null) {
Map<String, String> avatarCache = new HashMap<>();
List<GroupBuyMemberUserInfoVo> members = new ArrayList<>(); List<GroupBuyMemberUserInfoVo> members = new ArrayList<>();
for (KylinGroupBuyMemberVo m : order.getMembers()) { for (KylinGroupBuyMemberVo m : order.getMembers()) {
GroupBuyMemberUserInfoVo mu = new GroupBuyMemberUserInfoVo(); GroupBuyMemberUserInfoVo mu = new GroupBuyMemberUserInfoVo();
mu.setUserId(m.getUserId()); mu.setUserId(m.getUserId());
mu.setNickname(m.getNickname()); mu.setNickname(m.getNickname());
mu.setAvatar(m.getAvatar()); mu.setAvatar(resolveAvatar(m.getUserId(), m.getAvatar(), avatarCache));
members.add(mu); members.add(mu);
} }
vo.setMembers(members); vo.setMembers(members);
...@@ -179,8 +172,10 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService ...@@ -179,8 +172,10 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
KylinGroupBuyOrderVo order = findOrder(groupOrderId); KylinGroupBuyOrderVo order = findOrder(groupOrderId);
if (order == null) return ResponseDto.failure("拼团不存在"); if (order == null) return ResponseDto.failure("拼团不存在");
if (!uid.equals(order.getLeaderUserId())) return ResponseDto.failure("仅团长可取消拼团"); if (!uid.equals(order.getLeaderUserId())) return ResponseDto.failure("仅团长可取消拼团");
if (GroupBuyStatusConst.OrderStatus.SUCCESS.equals(order.getStatus())) return ResponseDto.failure("拼团已成,不可取消"); if (GroupBuyStatusConst.OrderStatus.SUCCESS.equals(order.getStatus()))
if (!GroupBuyStatusConst.OrderStatus.PENDING.equals(order.getStatus())) return ResponseDto.failure("当前状态不可取消"); return ResponseDto.failure("拼团已成,不可取消");
if (!GroupBuyStatusConst.OrderStatus.PENDING.equals(order.getStatus()))
return ResponseDto.failure("当前状态不可取消");
String lockKey = KylinRedisConst.GROUP_BUY_ORDER_LOCK.concat(groupOrderId); String lockKey = KylinRedisConst.GROUP_BUY_ORDER_LOCK.concat(groupOrderId);
if (!redisUtil.lock(lockKey, 1, 15)) { if (!redisUtil.lock(lockKey, 1, 15)) {
...@@ -371,6 +366,35 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService ...@@ -371,6 +366,35 @@ public class KylinGroupBuyOrderServiceImpl implements IKylinGroupBuyOrderService
return DateUtil.Formatter.yyyyMMddHHmmss.format(LocalDateTime.now()); 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, private void fillTicketInfo(KylinPerformanceVo p, String timeId, String ticketId,
KylinGroupBuyOrderDetailVo vo) { KylinGroupBuyOrderDetailVo vo) {
if (p.getTicketTimeList() == null) return; 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