From d91d49d51503a22a424a5600b8bfa7586cf3cd91 Mon Sep 17 00:00:00 2001
From: rentaiming <806181062@qq.com>
Date: 星期五, 21 六月 2024 20:15:46 +0800
Subject: [PATCH] 用户端商品
---
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java | 131 ++++++++++++++++++++++++++++++++++++++++---
1 files changed, 121 insertions(+), 10 deletions(-)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
index f2cdbce..0f12e35 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -8,36 +8,41 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.constant.SecurityConstants;
+import com.ruoyi.common.core.enums.ClientTypeEnum;
import com.ruoyi.common.core.enums.GroupStatusEnum;
import com.ruoyi.common.core.enums.ListingStatusEnum;
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.StartStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
+import com.ruoyi.common.core.utils.DateUtils;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.common.redis.service.RedisService;
-import com.ruoyi.goods.controller.forepart.vo.GoodsGroupPurchaseInfoVO;
import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseDTO;
import com.ruoyi.goods.controller.management.dto.GoodsGroupPurchaseQuery;
import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO;
-import com.ruoyi.goods.domain.GoodsGroupPurchase;
import com.ruoyi.goods.domain.MemberGoodsCollection;
import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper;
import com.ruoyi.goods.service.IGoodsGroupPurchaseService;
import com.ruoyi.goods.service.IGoodsSkuService;
+import com.ruoyi.goods.service.IMemberGoodsCollectionService;
import com.ruoyi.goods.service.async.AsyncMethodService;
import com.ruoyi.system.api.constants.DelayTaskEnum;
import com.ruoyi.system.api.constants.NotificationTypeConstant;
+import com.ruoyi.system.api.domain.GoodsGroupPurchase;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.Order;
+import com.ruoyi.system.api.domain.WebsocketMessageDTO;
import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO;
import com.ruoyi.system.api.domain.dto.ListStatusDTO;
import com.ruoyi.system.api.domain.dto.OrderUpdDTO;
import com.ruoyi.system.api.domain.dto.RefundDTO;
+import com.ruoyi.system.api.domain.vo.GoodsGroupPurchaseInfoVO;
+import com.ruoyi.system.api.domain.vo.OrderVO;
+import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO;
import com.ruoyi.system.api.feignClient.OrderClient;
-import com.ruoyi.system.api.util.WebSocketUsers;
-import java.time.LocalDateTime;
+import com.ruoyi.system.api.feignClient.SysUserClient;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -64,6 +69,8 @@
private final IGoodsSkuService goodsSkuService;
private final AsyncMethodService asyncMethodService;
private final RedisService redisService;
+ private final IMemberGoodsCollectionService iMemberGoodsCollectionService;
+ private final SysUserClient sysUserClient;
// 创建一个静态共享的ObjectMapper实例以重用
private static final ObjectMapper objectMapper = new ObjectMapper();
/**
@@ -91,6 +98,16 @@
if (StringUtils.isNull(dto.getGoodsSkuId())) {
throw new ServiceException("商品id不能为空");
}
+ LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.eq(GoodsGroupPurchase::getGoodsSkuId, dto.getGoodsSkuId());
+ queryWrapper.eq(GoodsGroupPurchase::getListingStatus,
+ ListingStatusEnum.ON_SHELVES.getCode());
+ queryWrapper.between(GoodsGroupPurchase::getStartTime, dto.getStartTime(),
+ dto.getEndTime());
+ List<GoodsGroupPurchase> list = this.list(queryWrapper);
+ if (StringUtils.isNotEmpty(list)) {
+ throw new ServiceException("添加失败,当前商品在该时间段内有其他团购活动");
+ }
this.save(goodsGroupPurchase);
GoodsSku goodsSku = goodsSkuService.getById(dto.getGoodsSkuId());
if (StringUtils.isNull(goodsSku)) {
@@ -113,7 +130,7 @@
throw new ServiceException("已结束的团购商品不能编辑");
}
int originGroupStock = groupPurchase.getLimitNumber() * groupPurchase.getGroupSize();
- GoodsSku goodsSku = goodsSkuService.getById(dto.getGoodsSkuId());
+ GoodsSku goodsSku = goodsSkuService.getById(groupPurchase.getGoodsSkuId());
if (StringUtils.isNull(goodsSku)) {
throw new ServiceException("商品不存在");
}
@@ -193,11 +210,13 @@
.eq(GoodsGroupPurchase::getId, groupPurchaseId).update();
Map<String, Object> map = new ConcurrentHashMap<>();
map.put("notification_type", NotificationTypeConstant.GROUP_PURCHASE);
- map.put("notification_time", LocalDateTime.now());
+ map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss"));
map.put("target_id", groupPurchaseId);
map.put("message_type", "start");
String msg = objectMapper.writeValueAsString(map);
- WebSocketUsers.sendMessageToUsersByText(msg);
+
+ sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg)
+ .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER);
log.info("===================>发送websocket通知,消息体{}", msg);
}
}
@@ -217,11 +236,12 @@
.eq(GoodsGroupPurchase::getId, groupPurchaseId).update();
Map<String, Object> map = new ConcurrentHashMap<>();
map.put("notification_type", NotificationTypeConstant.GROUP_PURCHASE);
- map.put("notification_time", LocalDateTime.now());
+ map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss"));
map.put("target_id", groupPurchaseId);
map.put("message_type", "end");
String msg = objectMapper.writeValueAsString(map);
- WebSocketUsers.sendMessageToUsersByText(msg);
+ sysUserClient.pushByClientType(WebsocketMessageDTO.builder().message(msg)
+ .clientType(ClientTypeEnum.MEMBER).build(), SecurityConstants.INNER);
log.info("===================>发送websocket通知,消息体{}", msg);
}
}
@@ -283,7 +303,6 @@
@Override
public GoodsGroupPurchaseInfoVO getGoodsGroupPurchaseInfo(HomeGoodsSkuDTO homeGoodsSkuDTO) {
GoodsSku byId = goodsSkuService.getById(homeGoodsSkuDTO.getGoodsSkuId());
-
LambdaQueryWrapper<GoodsGroupPurchase> wrapper3= Wrappers.lambdaQuery();
wrapper3.eq(GoodsGroupPurchase::getDelFlag,0);
wrapper3.eq(GoodsGroupPurchase::getGoodsSkuId,homeGoodsSkuDTO.getGoodsSkuId());
@@ -306,6 +325,98 @@
goodsGroupPurchaseInfoVO.setListingStatus(one.getListingStatus());
goodsGroupPurchaseInfoVO.setGroupStatus(one.getGroupStatus());
+ LambdaQueryWrapper<MemberGoodsCollection> wrapper4= Wrappers.lambdaQuery();
+ wrapper4.eq(MemberGoodsCollection::getDelFlag,0);
+ wrapper4.eq(MemberGoodsCollection::getMemberId,homeGoodsSkuDTO.getMemberId());
+ wrapper4.eq(MemberGoodsCollection::getTargetId,one.getId());
+ wrapper4.eq(MemberGoodsCollection::getType,1);
+ List<MemberGoodsCollection> list = iMemberGoodsCollectionService.list(wrapper4);
+ if (list.size()>0){
+ goodsGroupPurchaseInfoVO.setIsCollection(2);
+ }else{
+ goodsGroupPurchaseInfoVO.setIsCollection(1);
+ }
+ HomeGoodsSkuDTO homeGoodsSkuDTO1=new HomeGoodsSkuDTO();
+ homeGoodsSkuDTO1.setGoodsSkuId(one.getId());
+ homeGoodsSkuDTO1.setMemberId(homeGoodsSkuDTO.getMemberId());
+ Order data = orderClient.getOrderByGroupPurchaseMemberId(homeGoodsSkuDTO1, SecurityConstants.INNER).getData();
+ if (data!=null){
+ goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(2);
+ goodsGroupPurchaseInfoVO.setOrder(data);
+ }else{
+ goodsGroupPurchaseInfoVO.setIsGoodsGroupPurchase(1);
+ }
+
return goodsGroupPurchaseInfoVO;
}
+
+ @Override
+ public void QxGoodsGroupPurchase(HomeGoodsSkuDTO homeGoodsSkuDTO) {
+ Order order1 = orderClient.getOrderByGroupPurchaseMemberId(homeGoodsSkuDTO, SecurityConstants.INNER).getData();
+ RefundDTO refundDTO = new RefundDTO();
+ refundDTO.setOrderNo(order1.getOrderNo());
+ refundDTO.setAmount(order1.getTotalAmount());
+
+ List<RefundDTO>refundDTOList=new ArrayList<>();
+ refundDTOList.add(refundDTO);
+
+ List<Order> orderList=new ArrayList<>();
+ orderList.add(order1);
+
+ Map<String, Object> data = orderClient.refund(refundDTOList,
+ SecurityConstants.INNER).getData();
+ if (StringUtils.isNotEmpty(data)) {
+ // 处理退款返回结果
+ List<String> successfulOrders = new ArrayList<>();
+ List<String> failedOrders = new ArrayList<>();
+
+ data.forEach((key, value) -> {
+ if ((boolean) value) {
+ successfulOrders.add(key);
+ } else {
+ failedOrders.add(key);
+ }
+ });
+ // 处理退款结果
+ List<Order> updateOrderList = orderList.stream()
+ .filter(order -> successfulOrders.contains(order.getOrderNo()))
+ .peek(order -> {
+ order.setOrderStatus(OrderStatusEnum.CANCELED);
+ }).collect(Collectors.toList());
+ List<OrderUpdDTO> orderUpdDTOS = BeanUtils.copyList(updateOrderList,
+ OrderUpdDTO.class);
+ orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER);
+ }
+
+ }
+
+ @Override
+ public PageDTO<WdGoodsGroupPurchaseVO> CtjlGoodsGroupPurchase(HomeGoodsSkuDTO homeGoodsSkuDTO) {
+ List<OrderVO> data = orderClient.getOrderByGroupPurchaseMemberList(homeGoodsSkuDTO, SecurityConstants.INNER).getData();
+ List<Long> goodsSkuIdList = data.stream()
+ .map(OrderVO::getGoodsSkuId)
+ .collect(Collectors.toList());
+ Page<GoodsGroupPurchase> page = new Page<>(homeGoodsSkuDTO.getPageCurr(), homeGoodsSkuDTO.getPageSize());
+ LambdaQueryWrapper< GoodsGroupPurchase> wrapper= Wrappers.lambdaQuery();
+ if (homeGoodsSkuDTO.getSkuName()!=null){
+ wrapper.in(GoodsGroupPurchase::getId,goodsSkuIdList);
+ }
+ wrapper.eq(GoodsGroupPurchase::getListingStatus,0);
+ wrapper.eq( GoodsGroupPurchase::getDelFlag,0);
+ Page< GoodsGroupPurchase> page1 = this.page(page, wrapper);
+
+ PageDTO<WdGoodsGroupPurchaseVO> GoodsGroupPurchaseVOPageDTO = PageDTO.of(page1, WdGoodsGroupPurchaseVO.class);
+ List<WdGoodsGroupPurchaseVO> list2 = GoodsGroupPurchaseVOPageDTO.getList();
+ for (WdGoodsGroupPurchaseVO goodsGroupPurchaseeVO:list2) {
+ GoodsSku byId = goodsSkuService.getById(goodsGroupPurchaseeVO.getGoodsSkuId());
+ goodsGroupPurchaseeVO.setGoodsSkuName(byId.getSkuName());
+ goodsGroupPurchaseeVO.setCoverPic(byId.getCoverPic());
+ goodsGroupPurchaseeVO.setPrice(byId.getPrice());
+ goodsGroupPurchaseeVO.setYears(String.valueOf(byId.getYears().getYear()));
+ goodsGroupPurchaseeVO.setIsGoodsGroupPurchase(2);
+ }
+
+
+ return GoodsGroupPurchaseVOPageDTO;
+ }
}
--
Gitblit v1.7.1