|
|
@@ -56,7 +56,7 @@ import com.cyksj.service.order.OrderRefundService;
|
|
|
import com.cyksj.service.relation.GroupRelationClearService;
|
|
|
import com.cyksj.service.relation.GroupRelationFrontService;
|
|
|
import com.cyksj.service.relation.GroupsRelationChangeService;
|
|
|
-import com.cyksj.service.relation.GroupsRelationNetflixService;
|
|
|
+import com.cyksj.service.translations.BackInfoTranslationsFrontService;
|
|
|
import com.cyksj.service.user.UserBenefitsService;
|
|
|
import com.cyksj.service.user.UserBindRelationService;
|
|
|
import com.cyksj.service.user.UserLoginRecordService;
|
|
|
@@ -144,7 +144,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
|
|
|
private final LumaService lumaService;
|
|
|
|
|
|
- private final GroupsRelationNetflixService groupsRelationNetflixService;
|
|
|
+ private final BackInfoTranslationsFrontService backInfoTranslationsFrontService;
|
|
|
|
|
|
private final UserDistributeMapper userDistributeMapper;
|
|
|
|
|
|
@@ -202,6 +202,8 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
|
|
|
private final UserBenefitsService userBenefitsService;
|
|
|
|
|
|
+ private final ChatgptUserMapper chatgptUserMapper;
|
|
|
+
|
|
|
@Override
|
|
|
public SearchResult<RenewalView> getMyTicket(long userId, Boolean isLoginPopularize, String customId, String account, String orderNo, Integer cmt) {
|
|
|
User u = userMapper.selectById(userId);
|
|
|
@@ -245,6 +247,7 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
.orderBy(RenewalView::getExpiryTime).asc()
|
|
|
.build());
|
|
|
if (list.getDataList().size() > 0) {
|
|
|
+ String lang = request.getHeader("lang");
|
|
|
//过滤邀请制、已失效的车位
|
|
|
Integer size = list.getTotalCount().intValue();
|
|
|
//赠送GPT日卡 参与平台ids
|
|
|
@@ -344,6 +347,12 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
ticket.setIsComplete(orderDon.getStatus() == OrderDon.Status.complete ? true : false);
|
|
|
}
|
|
|
}
|
|
|
+ if (lang != null && !StrUtil.equals(UserPageLanguage.Language.zh_CN.name(), lang)) {
|
|
|
+ String languageSpecVal = backInfoTranslationsFrontService.getLanguageSpecVal(ticket.getSkuId(), lang);
|
|
|
+ if (StrUtil.isNotBlank(languageSpecVal)) {
|
|
|
+ ticket.setSpecVal(languageSpecVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (size > 1 && ticket.getGoodsId() != 18) {
|
|
|
Date payTime = null;
|
|
|
@@ -1765,6 +1774,144 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<UserMirrorTicketView> getMirrorTicket(long userId) {
|
|
|
+ User u = userMapper.selectById(userId);
|
|
|
+ if (u == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
+ if (u.getIsBlack()) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ List<Long> userIds = userBindRelationService.getRelationUserIdList(userId, u);
|
|
|
+ MapBuilder builder = MapUtils.flatBuilder(request.getParameterMap());
|
|
|
+ DateTime now = DateTime.now();
|
|
|
+ String lang = request.getHeader("lang");
|
|
|
+ List<UserMirrorTicketView> list = beanSearcher.searchAll(UserMirrorTicketView.class, builder
|
|
|
+ .field(UserMirrorTicketView::getUserId, userIds).op(Operator.InList)
|
|
|
+ .field(UserMirrorTicketView::getIsMirror, Boolean.TRUE)
|
|
|
+ //过期7天内的镜像车票都展示
|
|
|
+ .field(UserMirrorTicketView::getExpiryTime, DateUtil.offsetDay(now, -7)).op(Operator.GreaterThan)
|
|
|
+ .orderBy(RenewalView::getExpiryTime).asc()
|
|
|
+ .build());
|
|
|
+ list.forEach(ticket -> {
|
|
|
+ if (ticket.getExpiryTime() != null) {
|
|
|
+ String remainDays = DateUtil.formatBetween(now, ticket.getExpiryTime(), BetweenFormater.Level.DAY);
|
|
|
+ if ("0天".equals(remainDays)) {
|
|
|
+ remainDays = "小于1天";
|
|
|
+ } else {
|
|
|
+ //当天也算
|
|
|
+ int days = Integer.parseInt(remainDays.substring(0, remainDays.indexOf("天")));
|
|
|
+ remainDays = days + 1 + "天";
|
|
|
+ }
|
|
|
+ ticket.setRemainDays(remainDays);
|
|
|
+ ticket.setTotal(DateUtil.betweenDay(ticket.getStartTime(), ticket.getExpiryTime(), false) + 1);
|
|
|
+ }
|
|
|
+ if (ticket.getExpiryTime() != null) {
|
|
|
+ ticket.setExpiryTimeStr(DateUtil.format(ticket.getExpiryTime(), "yyyy-MM-dd"));
|
|
|
+ }
|
|
|
+ //续费升级折扣
|
|
|
+ BigDecimal renewDiscount = getRenewDiscount(ticket.getGoodsId(), ticket.getSkuId(), ticket.getIsMirror(), ticket.getSkuNum());
|
|
|
+ ticket.setDiscount(renewDiscount);
|
|
|
+ setAIZoneMirrorTicketInfo(ticket);
|
|
|
+
|
|
|
+ if (lang != null && !StrUtil.equals(UserPageLanguage.Language.zh_CN.name(), lang)) {
|
|
|
+ String languageSpecVal = backInfoTranslationsFrontService.getLanguageSpecVal(ticket.getSkuId(), lang);
|
|
|
+ if (StrUtil.isNotBlank(languageSpecVal)) {
|
|
|
+ ticket.setSpecVal(languageSpecVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ OrderDon orderDon = orderDonMapper.selectOne(Wrappers.lambdaQuery(OrderDon.class)
|
|
|
+ .eq(OrderDon::getRelationId, ticket.getRelationId())
|
|
|
+ .eq(OrderDon::getUserId, ticket.getUserId())
|
|
|
+ .eq(OrderDon::getOrderType, 1)
|
|
|
+ .notIn(OrderDon::getStatus, Constant.noOrderAllStatus)
|
|
|
+ .orderByDesc(OrderDon::getId)
|
|
|
+ .last("limit 1"));
|
|
|
+ if (orderDon != null) {
|
|
|
+ ticket.setOrderId(orderDon.getId());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ userLoginRecordService.saveUserLoginDayRecord(userId);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public TicketRenewUpgradeView getRenewUpgradeInfo(long userId, Long relationId) {
|
|
|
+ List<Long> userIdList = userBindRelationService.getRelationUserIdList(userId, null);
|
|
|
+ GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
|
|
|
+ .field(GroupsRelationView::getUserId, userIdList).op(Operator.InList)
|
|
|
+ .field(GroupsRelationView::getId, relationId)
|
|
|
+ .field(GroupsRelationView::getExpiryTime, DateTime.now()).op(Operator.GreaterThan)
|
|
|
+ .build());
|
|
|
+ TicketRenewUpgradeView ticketRenewUpgradeView = new TicketRenewUpgradeView();
|
|
|
+ if (groupsRelationView != null) {
|
|
|
+ String lang = request.getHeader("lang");
|
|
|
+ //clause pro
|
|
|
+ if (groupsRelationView.getGoodsId() == 75l) {
|
|
|
+ try {
|
|
|
+ ClaudeUserView userInfo = claudeService.getUserInfo(groupsRelationView.getUserId(), groupsRelationView.getId());
|
|
|
+ Long renewSkuId = userInfo.getRenewSkuId();
|
|
|
+ if (renewSkuId != null) {
|
|
|
+ GoodsDonSkuRenewView renewSku = beanSearcher.searchFirst(GoodsDonSkuRenewView.class, MapUtils.builder().field(GoodsDonSkuRenewView::getSkuId, renewSkuId).build());
|
|
|
+ ticketRenewUpgradeView.setRenewSku(renewSku);
|
|
|
+ }
|
|
|
+ ticketRenewUpgradeView.setGptUserLimitNum(userInfo.getLimitNum());
|
|
|
+ ticketRenewUpgradeView.setGptUserLimitTime(userInfo.getLimitTime());
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (groupsRelationView.getGoodsId() == 18) {
|
|
|
+ try {
|
|
|
+ //gpt用户镜像
|
|
|
+ ChatGptUserView userInfo = chatGptAccountService.getUserInfo(groupsRelationView.getUserId(), groupsRelationView.getId());
|
|
|
+ Integer count = upgradePackageMapper.selectCount(Wrappers.lambdaQuery(UpgradePackage.class).apply("JSON_CONTAINS(sku_ids,'\"" + groupsRelationView.getSkuId() + "\"')")
|
|
|
+ .gt(UpgradePackage::getNum, userInfo.getLimitNum())
|
|
|
+ .eq(UpgradePackage::getStatus, Boolean.TRUE)
|
|
|
+ .eq(UpgradePackage::getGptType, 0)
|
|
|
+ .eq(UpgradePackage::getDeleted, Boolean.TRUE));
|
|
|
+ ticketRenewUpgradeView.setUpgrade(count > 0 ? true : false);
|
|
|
+ ticketRenewUpgradeView.setPackageId(userInfo.getPackageId());
|
|
|
+ ticketRenewUpgradeView.setGptUserLimitNum(userInfo.getLimitNum());
|
|
|
+ ticketRenewUpgradeView.setGptUserLimitTime(userInfo.getLimitTime());
|
|
|
+ ticketRenewUpgradeView.setUserDsLimitNum(userInfo.getDsLimitNum());
|
|
|
+ ticketRenewUpgradeView.setUserDsLimitTime(userInfo.getDsLimitTime());
|
|
|
+ ticketRenewUpgradeView.setUserOtherLimitNum(userInfo.getOtherLimitNum());
|
|
|
+ ticketRenewUpgradeView.setUserOtherLimitTime(userInfo.getOtherLimitTime());
|
|
|
+ if (userInfo.getPackageId() != 0) {
|
|
|
+ UpgradePackage upgradePackage = upgradePackageMapper.selectById(userInfo.getPackageId());
|
|
|
+ ticketRenewUpgradeView.setPackagePrice(upgradePackage.getPrice());
|
|
|
+ Long upgradeOrderDonSkuId = upgradePackage.getUpgradeSkuId();
|
|
|
+ GoodsDonSkuRenewView renewSku = beanSearcher.searchFirst(GoodsDonSkuRenewView.class, MapUtils.builder().field(GoodsDonSkuRenewView::getSkuId, upgradeOrderDonSkuId).build());
|
|
|
+ renewSku.setPackageId(userInfo.getPackageId());
|
|
|
+ ticketRenewUpgradeView.setRenewSku(renewSku);
|
|
|
+ }
|
|
|
+ ticketRenewUpgradeView.setIsRenewPackage(userInfo.getIsRenewPackage());
|
|
|
+ Long renewSkuId = userInfo.getRenewSkuId();
|
|
|
+ if (renewSkuId != null) {
|
|
|
+ GoodsDonSkuRenewView upgradeSkuRenewView = ticketRenewUpgradeView.getRenewSku();
|
|
|
+ GoodsDonSkuRenewView renewSku = beanSearcher.searchFirst(GoodsDonSkuRenewView.class, MapUtils.builder().field(GoodsDonSkuRenewView::getSkuId, renewSkuId).build());
|
|
|
+ //续费升级是更高级规格
|
|
|
+ if (upgradeSkuRenewView == null || (renewSku.getGptUserLimitNum() >= upgradeSkuRenewView.getGptUserLimitNum() && renewSku.getMonths() >= userInfo.getMonths())) {
|
|
|
+ Optional.ofNullable(orderDonRenewRecordMapper.selectOne(Wrappers.lambdaQuery(OrderDonRenewRecord.class)
|
|
|
+ .eq(OrderDonRenewRecord::getOrderId, userInfo.getRenewOrderId())
|
|
|
+ .last("limit 1"))).ifPresent(e -> renewSku.setOriginalOrderId(e.getOrderId()));
|
|
|
+ if (lang != null && !StrUtil.equals(UserPageLanguage.Language.zh_CN.name(), lang)) {
|
|
|
+ String languageSpecVal = backInfoTranslationsFrontService.getLanguageSpecVal(renewSku.getSkuId(), lang);
|
|
|
+ if (StrUtil.isNotBlank(languageSpecVal)) {
|
|
|
+ renewSku.setSpecVal(languageSpecVal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ticketRenewUpgradeView.setRenewSku(renewSku);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return ticketRenewUpgradeView;
|
|
|
+ }
|
|
|
+
|
|
|
private DistributePosterGoodsDetailView setGoodsPoster(RenewalView ticket, User user, List<Long> userIds) {
|
|
|
DistributePosterGoodsDetailView distributePosterGoodsDetailView = beanSearcher.searchFirst(DistributePosterGoodsDetailView.class, MapUtils.flatBuilder(request.getParameterMap())
|
|
|
.field(DistributePosterGoodsFrontView::getGoodsId, ticket.getGoodsId()).build());
|
|
|
@@ -1829,6 +1976,24 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private BigDecimal getRenewDiscount(Long goodsId, Long skuId, Boolean isMirror, Integer skuNum) {
|
|
|
+ //镜像或者独立规格
|
|
|
+ if (isMirror || (skuNum != null && skuNum == 1)) {
|
|
|
+ RenewUpgradePackage renewUpgradePackage = renewUpgradePackageMapper.selectOne(Wrappers.lambdaQuery(RenewUpgradePackage.class)
|
|
|
+ .eq(RenewUpgradePackage::getGoodsId, goodsId)
|
|
|
+ .eq(RenewUpgradePackage::getStatus, 1)
|
|
|
+ .eq(RenewUpgradePackage::getDeleted, 1)
|
|
|
+ .eq(RenewUpgradePackage::getSkuId, skuId)
|
|
|
+ .orderByAsc(RenewUpgradePackage::getDiscount)
|
|
|
+ .last("limit 1")
|
|
|
+ .select(RenewUpgradePackage::getId, RenewUpgradePackage::getDiscount));
|
|
|
+ if (renewUpgradePackage != null) {
|
|
|
+ return renewUpgradePackage.getDiscount();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
private void setMirrorTicketInfo(RenewalView ticket) {
|
|
|
//设置MJ镜像信息
|
|
|
setMjMirrorInfo(ticket);
|
|
|
@@ -2106,4 +2271,19 @@ public class GroupRelationFrontServiceImpl implements GroupRelationFrontService
|
|
|
orderDonMapper.insert(orderDon);
|
|
|
return orderDon;
|
|
|
}
|
|
|
+
|
|
|
+ private void setAIZoneMirrorTicketInfo(UserMirrorTicketView ticket) {
|
|
|
+ setAIZoneGptMirrorInfo(ticket);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setAIZoneGptMirrorInfo(UserMirrorTicketView ticket) {
|
|
|
+ if (ticket.getGoodsId() != null && ticket.getGoodsId() == Constant.GPT_PLUS_GID) {
|
|
|
+ ChatgptUser chatgptUser = chatgptUserMapper.selectOne(Wrappers.lambdaQuery(ChatgptUser.class)
|
|
|
+ .eq(ChatgptUser::getRelationId, ticket.getRelationId())
|
|
|
+ .last("limit 1"));
|
|
|
+ if (chatgptUser != null) {
|
|
|
+ ticket.setModel(chatgptUser.getModel());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|