ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchase.java
File was renamed from ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/GoodsGroupPurchase.java @@ -1,4 +1,4 @@ package com.ruoyi.goods.domain; package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberOrderDTO.java
New file @@ -0,0 +1,46 @@ package com.ruoyi.system.api.domain.dto; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; @Data public class MemberOrderDTO { @ApiModelProperty(value = "订单来源 1=商品订单 2=秒杀订单 3=团购订单 4=拍卖订单") private Integer orderFrom; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "商品数量") private Integer goodsQuantity; @ApiModelProperty(value = "优惠券id") private Long couponId; @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "收货人姓名") private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiverphone; @ApiModelProperty(value = "城市") private String receiverCity; @ApiModelProperty(value = "详细地址") private String receiverDetailAddress; @ApiModelProperty(value = "支付方式 1=微信 2=支付宝") private Integer paymentMethod; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/MemberTiOrderVO.java
New file @@ -0,0 +1,75 @@ package com.ruoyi.system.api.domain.vo; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class MemberTiOrderVO { @ApiModelProperty(value = "订单id") private Long id; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "下单时间") private LocalDateTime orderTime; @ApiModelProperty(value = "订单来源 1=商品订单 2=秒杀订单 3=团购订单 4=拍卖订单") private OrderFromEnum orderFrom; @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品") private AuctionOrderTypeEnum auctionType; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "支付方式 1=微信 2=支付宝") private PaymentMethodEnum paymentMethod; @ApiModelProperty(value = "支付合计") private BigDecimal totalAmount; @ApiModelProperty(value = "订单状态 1=待支付 2=待发货 3=待收货 4=已完成 5=已取消") private OrderStatusEnum orderStatus; @ApiModelProperty(value = "优惠金额") private BigDecimal discountMoney; @ApiModelProperty(value = "商品数量") private Integer goodsQuantity; @ApiModelProperty(value = "收货人姓名") private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiverphone; @ApiModelProperty(value = "城市") private String receiverCity; @ApiModelProperty(value = "详细地址") private String receiverDetailAddress; @ApiModelProperty(value = "商品价格") private BigDecimal price; @ApiModelProperty(value = "优惠的价格") private BigDecimal youhiPrice; @ApiModelProperty(value = "商品名称") private String skuName; @ApiModelProperty(value = "封面图") private String coverPic; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/GoodsSkuFactory.java
@@ -1,12 +1,7 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; import com.ruoyi.system.api.domain.GoodsFlavorType; import com.ruoyi.system.api.domain.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSeries; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import java.util.Collection; @@ -51,6 +46,11 @@ } @Override public R<GoodsGroupPurchase> getGoodsSeckiGoodsGroupPurchaseOne(Long goodsSkuId, String source) { return R.fail("通过id团购商品失败:" + cause.getMessage()); } @Override public R<GoodsSeckill> getGoodsSeckillOne(Long goodsSkuId, String source) { return R.fail("通过id查询秒杀商品失败:" + cause.getMessage()); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java
@@ -3,12 +3,7 @@ import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsBrand; import com.ruoyi.system.api.domain.GoodsCategory; import com.ruoyi.system.api.domain.GoodsFlavorType; import com.ruoyi.system.api.domain.GoodsSeckill; import com.ruoyi.system.api.domain.GoodsSeries; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.factory.GoodsSkuFactory; import java.util.Collection; @@ -44,6 +39,10 @@ R<GoodsFlavorType> getFlavorTypeOne(@RequestBody Long flavorTypeId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/goods-group-purchase/getGoodsSeckiGoodsGroupPurchaseOne") R<GoodsGroupPurchase> getGoodsSeckiGoodsGroupPurchaseOne(@RequestBody Long goodsSkuId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/goods-seckill/getGoodsSeckillOne") R<GoodsSeckill> getGoodsSeckillOne(@RequestBody Long goodsSkuId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/inner/GoodsGroupPurchaseController.java
@@ -4,13 +4,11 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.system.api.domain.GoodsGroupPurchase; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; /** * <p> @@ -28,6 +26,14 @@ private final IGoodsGroupPurchaseService goodsGroupPurchaseService; @InnerAuth @PostMapping("/getGoodsSeckiGoodsGroupPurchaseOne") @ResponseBody public R<GoodsGroupPurchase> getGoodsSeckiGoodsGroupPurchaseOne(@RequestBody Integer goodsSkuId) { GoodsGroupPurchase GoodsSeckillOne = goodsGroupPurchaseService.getById(goodsSkuId); return R.ok(GoodsSeckillOne); } /** * 团购商品开始团购 * ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/GoodsGroupPurchaseMapper.java
@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.GoodsGroupPurchase; import org.apache.ibatis.annotations.Param; /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/IGoodsGroupPurchaseService.java
@@ -6,12 +6,11 @@ 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.system.api.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.ListStatusDTO; import com.ruoyi.system.api.domain.vo.GoodsGroupPurchaseInfoVO; import com.ruoyi.system.api.domain.vo.WdGoodsGroupPurchaseVO; import org.springframework.web.bind.annotation.RequestBody; /** * <p> ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -8,7 +8,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.collect.Lists; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.GroupStatusEnum; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; @@ -18,13 +17,12 @@ 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.system.api.domain.Member; import com.ruoyi.system.api.domain.dto.*; import com.ruoyi.system.api.domain.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.system.api.domain.GoodsGroupPurchase; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.ruoyi.goods.service.IGoodsSkuService; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -17,7 +17,7 @@ import com.ruoyi.goods.controller.management.dto.GoodsSkuDTO; import com.ruoyi.goods.controller.management.dto.GoodsSkuQuery; import com.ruoyi.goods.controller.management.vo.GoodsSkuVO; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.GoodsGroupPurchase; import com.ruoyi.goods.domain.GoodsInfoTitleValue; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/task/GoodsScheduler.java
@@ -3,7 +3,7 @@ import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.goods.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.GoodsGroupPurchase; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.ruoyi.goods.service.IGoodsSeckillService; import com.ruoyi.goods.service.async.AsyncMethodService; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/forepart/ForepartOrderController.java
New file @@ -0,0 +1,36 @@ package com.ruoyi.order.controller.forepart; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.IOrderService; import com.ruoyi.system.api.domain.dto.MemberOrderDTO; import com.ruoyi.system.api.domain.vo.MemberTiOrderVO; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; /** * <p> * 订单表 前端控制器 * </p> * * @author mitao * @since 2024-05-16 */ @Slf4j @RestController @RequestMapping("/forepart/order") @RequiredArgsConstructor public class ForepartOrderController { private final IOrderService orderService; @PostMapping("/saveMemberOrder") @ApiOperation(value = "用户端-立即下单") public R<MemberTiOrderVO> saveMemberOrder(@RequestBody MemberOrderDTO memberOrderDTO) { return R.ok(orderService.saveMemberOrder(memberOrderDTO)); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -3,7 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.MemberOrderDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.domain.vo.MemberTiOrderVO; import com.ruoyi.system.api.domain.vo.OrderVO; import org.springframework.web.bind.annotation.RequestBody; @@ -48,5 +50,7 @@ Order getOrderByGroupPurchaseMemberId(HomeGoodsSkuDTO homeGoodsSkuDTO); List<OrderVO> getOrderByGroupPurchaseMemberList(HomeGoodsSkuDTO homeGoodsSkuDTO); MemberTiOrderVO saveMemberOrder(@RequestBody MemberOrderDTO memberOrderDTO); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,24 +1,32 @@ package com.ruoyi.order.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.order.domain.OrderMall; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.service.IOrderMallService; import com.ruoyi.order.service.IOrderService; import com.ruoyi.order.util.OrderUtil; import com.ruoyi.system.api.domain.Order; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; import com.ruoyi.system.api.domain.dto.MemberOrderDTO; import com.ruoyi.system.api.domain.dto.OrderDTO; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import java.util.Set; import java.util.stream.Collectors; import javax.annotation.Resource; import com.ruoyi.system.api.domain.vo.MemberTiOrderVO; import com.ruoyi.system.api.domain.vo.OrderVO; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; import org.springframework.stereotype.Service; /** @@ -36,11 +44,32 @@ @Resource private IOrderMallService orderMallService; @Resource private GoodsSkuClient goodsSkuClient; @Resource private MemberClient memberClient; @Override public void saveOrderOne(OrderDTO OrderDTO) { Order order=new Order(); String prefix = OrderUtil.getOrderNoForPrefix("XM"); order.setOrderNo(prefix); if (OrderDTO.getOrderFrom().getCode()==1){ order.setOrderFrom(OrderFromEnum.COMMODITY_ORDER); order.setOrderNo(OrderUtil.getOrderNoForPrefix("SP")); } if (OrderDTO.getOrderFrom().getCode()==2){ order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("MS")); } if (OrderDTO.getOrderFrom().getCode()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG")); }if (OrderDTO.getOrderFrom().getCode()==4){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("PM")); } order.setOrderTime(OrderDTO.getOrderTime()); order.setOrderFrom(OrderDTO.getOrderFrom()); order.setAuctionType(OrderDTO.getAuctionType()); @@ -105,4 +134,97 @@ public List<OrderVO> getOrderByGroupPurchaseMemberList(HomeGoodsSkuDTO homeGoodsSkuDTO) { return baseMapper.getOrderByGroupPurchaseMemberList(homeGoodsSkuDTO); } @Override public MemberTiOrderVO saveMemberOrder(MemberOrderDTO memberOrderDTO) { MemberTiOrderVO memberOrderVO=new MemberTiOrderVO(); BigDecimal pice=new BigDecimal(0); Order order=new Order(); if (memberOrderDTO.getOrderFrom()==1){ order.setOrderFrom(OrderFromEnum.COMMODITY_ORDER); order.setOrderNo(OrderUtil.getOrderNoForPrefix("SP")); } if (memberOrderDTO.getOrderFrom()==2){ order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("MS")); } if (memberOrderDTO.getOrderFrom()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); order.setOrderNo(OrderUtil.getOrderNoForPrefix("TG")); } if (memberOrderDTO.getPaymentMethod()==1){ order.setPaymentMethod(PaymentMethodEnum.WECHAT); }if (memberOrderDTO.getPaymentMethod()==2){ order.setPaymentMethod(PaymentMethodEnum.ALIPAY); } if (memberOrderDTO.getOrderFrom()==1){ GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(goodsSku.getPrice()); memberOrderVO.setCoverPic(goodsSku.getCoverPic()); memberOrderVO.setSkuName(goodsSku.getSkuName()); pice=goodsSku.getPrice(); } if (memberOrderDTO.getOrderFrom()==2){ order.setOrderFrom(OrderFromEnum.SNAP_ORDERS); GoodsSeckill data = goodsSkuClient.getGoodsSeckillOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(goodsSku.getPrice()); memberOrderVO.setCoverPic(goodsSku.getCoverPic()); memberOrderVO.setSkuName(goodsSku.getSkuName()); memberOrderVO.setYouhiPrice(data.getSeckillPrice()); pice=data.getSeckillPrice(); } if (memberOrderDTO.getOrderFrom()==3){ order.setOrderFrom(OrderFromEnum.GROUP_PURCHASE_ORDERS); GoodsGroupPurchase data = goodsSkuClient.getGoodsSeckiGoodsGroupPurchaseOne(memberOrderDTO.getGoodsSkuId(), SecurityConstants.INNER).getData(); GoodsSku goodsSku = goodsSkuClient.getGoodsSkuOne(data.getGoodsSkuId(), SecurityConstants.INNER).getData(); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setPrice(goodsSku.getPrice()); memberOrderVO.setCoverPic(goodsSku.getCoverPic()); memberOrderVO.setSkuName(goodsSku.getSkuName()); memberOrderVO.setYouhiPrice(data.getGroupPurchasePrice()); pice=data.getGroupPurchasePrice(); } order.setMemberId(memberOrderDTO.getMemberId()); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); order.setOrderTime(LocalDateTime.now()); order.setGoodsQuantity(memberOrderDTO.getGoodsQuantity()); order.setTotalAmount(pice.multiply(new BigDecimal(memberOrderDTO.getGoodsQuantity()))); order.setOrderStatus(OrderStatusEnum.TO_PLAY); MemberAddress data = memberClient.getMemberAddressOne( memberOrderDTO.getMemberId(), SecurityConstants.INNER).getData(); if (StringUtils.isNotNull(data)) { order.setReceiverName(data.getRecipientName()); order.setReceiverCity(data.getReceiverCity()); order.setReceiverDetailAddress(data.getDetailedAddress()); order.setReceiverphone(data.getRecipientPhone()); } baseMapper.insert(order); OrderMall orderMall=new OrderMall(); orderMall.setOrderId(order.getId()); if (memberOrderDTO.getOrderFrom()==1){ orderMall.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); } if (memberOrderDTO.getOrderFrom()==2){ orderMall.setActivityId(memberOrderDTO.getGoodsSkuId()); } if (memberOrderDTO.getOrderFrom()==3){ orderMall.setActivityId(memberOrderDTO.getGoodsSkuId()); } orderMallService.save(orderMall); memberOrderVO.setOrderStatus(OrderStatusEnum.TO_PLAY); memberOrderVO.setOrderNo(order.getOrderNo()); memberOrderVO.setGoodsSkuId(memberOrderDTO.getGoodsSkuId()); memberOrderVO.setOrderTime(order.getOrderTime()); memberOrderVO.setOrderFrom(order.getOrderFrom()); return null; } }