ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/MemberAddress.java
New file @@ -0,0 +1,74 @@ package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> * 会员地址表 * </p> * * @author mitao * @since 2024-05-16 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_member_address") @ApiModel(value = "MemberAddress对象", description = "会员地址表") public class MemberAddress implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "会员地址id") @TableId(value = "id", type = IdType.ASSIGN_ID) private Long id; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "收件人姓名") private String recipientName; @ApiModelProperty(value = "收件人电话") private String recipientPhone; @ApiModelProperty(value = "城市 省市区") private String city; @ApiModelProperty(value = "详细地址") private String detailedAddress; @ApiModelProperty(value = "创建者") @TableField(value = "create_by", fill = FieldFill.INSERT) private String createBy; @ApiModelProperty(value = "创建时间") @TableField(value = "create_time", fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty(value = "更新者") @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) private String updateBy; @ApiModelProperty(value = "更新时间") @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableLogic private Integer delFlag; @ApiModelProperty(value = "是否默认") @TableLogic private Integer isDefault; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderDTO.java
New file @@ -0,0 +1,58 @@ package com.ruoyi.system.api.domain.dto; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class OrderDTO { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "下单时间") private LocalDateTime orderTime; @ApiModelProperty(value = "订单来源 1=商品订单 2=秒杀订单 3=团购订单 4=拍卖订单") private OrderFromEnum orderFrom; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "商品数量") private Integer goodsQuantity; @ApiModelProperty(value = "支付合计") private BigDecimal totalAmount; @ApiModelProperty(value = "收货人姓名") private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiverphone; @ApiModelProperty(value = "城市") private String receiverCity; @ApiModelProperty(value = "详细地址") private String receiverDetailAddress; @ApiModelProperty(value = "保证金") private BigDecimal bound; @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品") private AuctionOrderTypeEnum auctionType; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/MemberFallbackFactory.java
@@ -1,7 +1,12 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.MemberAddress; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import com.ruoyi.system.api.feignClient.MemberClient; import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.web.bind.annotation.PathVariable; /** * @author mitao @@ -11,6 +16,15 @@ @Override public MemberClient create(Throwable cause) { return null; return new MemberClient(){ @Override public R<MemberAddress> getMemberAddressOne(Long userId) { return R.fail("通过用户地址失败:" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/GoodsSkuClient.java
@@ -19,6 +19,6 @@ R<GoodsSku> getGoodsSkuOne(@RequestBody Long goodsSkuId); @PostMapping("/goods-sku//updateGoodsSkuOne") @PostMapping("/goods-sku/updateGoodsSkuOne") R<Boolean> updateGoodsSkuOne(@RequestBody GoodsSku goodsSku); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/MemberClient.java
@@ -1,10 +1,18 @@ package com.ruoyi.system.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.MemberAddress; import com.ruoyi.system.api.factory.MemberFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient(contextId = "memberClient", value = ServiceNameConstants.RUOYI_MEMBER, fallbackFactory = MemberFallbackFactory.class) public interface MemberClient { @PostMapping("/member-address/getMemberAddressOne") R<MemberAddress> getMemberAddressOne(@RequestBody Long userId); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
@@ -1,10 +1,18 @@ package com.ruoyi.system.api.feignClient; import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.dto.OrderDTO; import com.ruoyi.system.api.factory.OrderFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @FeignClient(contextId = "orderClient", value = ServiceNameConstants.RUOYI_ORDER, fallbackFactory = OrderFallbackFactory.class) public interface OrderClient { @PostMapping("/order/saveOrderOne") R<Boolean> saveOrderOne(@RequestBody OrderDTO orderDTO); } ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/OrderFromEnum.java
@@ -15,8 +15,7 @@ COMMODITY_ORDER(1, "商品订单"), SNAP_ORDERS(2, "秒杀订单"), GROUP_PURCHASE_ORDERS(3, "团购订单"), BOND(4, "保证金"), AUCTION_ORDERS(5, "拍卖订单"); AUCTION_ORDERS(4, "拍卖订单"); @EnumValue private final int code; @JsonValue ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/OrderStatusEnum.java
@@ -11,11 +11,11 @@ public enum OrderStatusEnum { /*订单状态 1=待发货 2=待收货 3=已完成 4=已取消*/ TO_BE_SHIPPED(1, "待发货"), GOODS_TO_BE_RECEIVED(2, "待收货"), FINISHED(3, "已完成"), CANCELED(4, "已取消"); TO_PLAY(1, "待支付"), TO_BE_SHIPPED(2, "待发货"), GOODS_TO_BE_RECEIVED(3, "待收货"), FINISHED(4, "已完成"), CANCELED(5, "已取消"); @EnumValue private final int code; ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/DTO/OrderDTO.java
New file @@ -0,0 +1,58 @@ package com.ruoyi.auction.controller.forepart.DTO; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class OrderDTO { private static final long serialVersionUID = 1L; @ApiModelProperty(value = "商品id") private Long goodsSkuId; @ApiModelProperty(value = "订单编号") private String orderNo; @ApiModelProperty(value = "下单时间") private LocalDateTime orderTime; @ApiModelProperty(value = "订单来源 1=商品订单 2=秒杀订单 3=团购订单 4=拍卖订单") private OrderFromEnum orderFrom; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "商品数量") private Integer goodsQuantity; @ApiModelProperty(value = "支付合计") private BigDecimal totalAmount; @ApiModelProperty(value = "收货人姓名") private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiverphone; @ApiModelProperty(value = "城市") private String receiverCity; @ApiModelProperty(value = "详细地址") private String receiverDetailAddress; @ApiModelProperty(value = "保证金") private BigDecimal bound; @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品") private AuctionOrderTypeEnum auctionType; } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/DTO/orderDTO.java
File was deleted ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java
@@ -1,23 +1,12 @@ package com.ruoyi.auction.controller.forepart; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.auction.controller.forepart.DTO.AuctionSalesroomGoodsDTO; import com.ruoyi.auction.controller.forepart.DTO.orderDTO; import com.ruoyi.auction.controller.forepart.VO.AuctionSalesroomVO; import com.ruoyi.auction.controller.forepart.VO.ForepartAuctionSalesroomGoodsVO; import com.ruoyi.auction.domain.pojo.AuctionBidRecord; import com.ruoyi.auction.domain.pojo.AuctionSalesroom; import com.ruoyi.auction.domain.pojo.AuctionSalesroomGoods; import com.ruoyi.auction.service.IAuctionBidRecordService; import com.ruoyi.auction.service.IAuctionSalesroomGoodsService; import com.ruoyi.auction.service.IAuctionSalesroomService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.AuctionStartStatusEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import org.springframework.web.bind.annotation.RequestMapping; @@ -26,11 +15,6 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.lang.reflect.Array; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
@@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.auction.controller.forepart.DTO.AuctionSalesroomGoodsDTO; import com.ruoyi.auction.controller.forepart.DTO.OrderDTO; import com.ruoyi.auction.controller.forepart.VO.AuctionSalesroomVO; import com.ruoyi.auction.controller.forepart.VO.ForepartAuctionSalesroomGoodsVO; import com.ruoyi.auction.domain.pojo.AuctionBidRecord; @@ -14,17 +15,18 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.auction.service.IAuctionSalesroomService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.AuctionStartStatusEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import com.ruoyi.common.core.enums.OrderFromEnum; import com.ruoyi.system.api.domain.GoodsSku; import com.ruoyi.system.api.domain.MemberAddress; import com.ruoyi.system.api.feignClient.GoodsSkuClient; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.formula.functions.T; import com.ruoyi.system.api.feignClient.MemberClient; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -50,6 +52,9 @@ @Resource private IAuctionBidRecordService iAuctionBidRecordService; @Resource private MemberClient emberClient; /** @@ -300,6 +305,8 @@ auctionSalesroomGood.setStatus(AuctionStartStatusEnum.ENDED); iAuctionSalesroomGoodsService.updateById(auctionSalesroomGood); AuctionSalesroom auctionSalesroom=iAuctionSalesroomService.getById(auctionSalesroomGood.getAuctionSalesroomId()); AuctionSalesroomGoods auctionSalesroomGoods=iAuctionSalesroomGoodsService.getById(auctionSalesroomGoodsDTO.getGoodsSkuId()); List<AuctionBidRecord> auctionBidRecordList=new ArrayList<>(); if (auctionSalesroomGoods.getStatus().getCode()==1) { @@ -309,10 +316,12 @@ wrapper.orderByDesc(AuctionBidRecord::getLastBidAmount); auctionBidRecordList = iAuctionBidRecordService.list(wrapper); //判断 if (auctionBidRecordList.size() >= auctionSalesroomGoods.getItemQuantity()) { for (int i = 0; i <= auctionSalesroomGoods.getItemQuantity(); i++) { AuctionBidRecord auctionBidRecord = auctionBidRecordList.get(i); auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); AddOrder(auctionBidRecord.getGoodsSkuId(),auctionBidRecord.getMemberId(),auctionBidRecord.getLastBidAmount(),auctionSalesroom.getBound()); } } else { for (int i = 0; i <= auctionBidRecordList.size(); i++) { @@ -323,4 +332,28 @@ } } public void AddOrder(Long goodsSkuId, Long memberId, BigDecimal lastBidAmount,BigDecimal bound) { OrderDTO order=new OrderDTO(); order.setGoodsSkuId(goodsSkuId); order.setOrderTime(LocalDateTime.now()); order.setOrderFrom(OrderFromEnum.AUCTION_ORDERS); order.setMemberId(memberId); AuctionSalesroomGoods auctionSalesroomGoods=iAuctionSalesroomGoodsService.getById(goodsSkuId); order.setGoodsQuantity(1); order.setTotalAmount(lastBidAmount); R<MemberAddress> memberAddressR=emberClient.getMemberAddressOne(memberId); MemberAddress memberAddress=memberAddressR.getData(); order.setReceiverCity(memberAddress.getCity()); order.setReceiverDetailAddress(memberAddress.getDetailedAddress()); order.setReceiverphone(memberAddress.getRecipientPhone()); order.setReceiverName(memberAddress.getRecipientName()); order.setBound(bound); order.setAuctionType(AuctionOrderTypeEnum.AUCTION_ITEMS); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberAddressController.java
@@ -1,9 +1,14 @@ package com.ruoyi.member.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.R; import com.ruoyi.member.domain.pojo.MemberAddress; import com.ruoyi.member.domain.pojo.MemberCollection; import com.ruoyi.member.service.IMemberAddressService; import io.swagger.annotations.ApiModelProperty; import org.springframework.web.bind.annotation.*; /** * <p> @@ -16,5 +21,29 @@ @RestController @RequestMapping("/member-address") public class MemberAddressController { /** * 获取当前商品信息 * */ @ApiModelProperty private IMemberAddressService iMemberAddressService; @PostMapping("/getMemberAddressOne") @ResponseBody public R<MemberAddress> getMemberAddressOne(@RequestBody Integer userId) { LambdaQueryWrapper<MemberAddress> wrapper2= Wrappers.lambdaQuery(); wrapper2.eq(MemberAddress::getMemberId,userId); wrapper2.eq(MemberAddress::getDelFlag,0); wrapper2.eq(MemberAddress::getIsDefault,2); MemberAddress memberAddress=iMemberAddressService.getOne(wrapper2); if (memberAddress==null){ LambdaQueryWrapper<MemberAddress> wrapper= Wrappers.lambdaQuery(); wrapper.eq(MemberAddress::getMemberId,userId); wrapper.eq(MemberAddress::getDelFlag,0); wrapper.last("limit 1"); memberAddress=iMemberAddressService.getOne(wrapper2); } return R.ok(memberAddress); } } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/pojo/MemberAddress.java
@@ -70,5 +70,9 @@ @TableLogic private Integer delFlag; @ApiModelProperty(value = "是否默认") @TableLogic private Integer isDefault; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderController.java
@@ -1,9 +1,15 @@ package com.ruoyi.order.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.domain.pojo.Order; import com.ruoyi.order.service.IOrderService; import com.ruoyi.system.api.domain.dto.OrderDTO; import io.swagger.annotations.ApiModelProperty; import org.apache.poi.ss.formula.functions.T; import org.springframework.web.bind.annotation.*; /** * <p> @@ -16,5 +22,14 @@ @RestController @RequestMapping("/order") public class OrderController { @ApiModelProperty private IOrderService iOrderService; @PostMapping("/saveOrderOne") @ResponseBody public R<T> saveOrderOne(@RequestBody OrderDTO OrderDTO) { iOrderService.saveOrderOne(OrderDTO); return R.ok(); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/Order.java
@@ -113,24 +113,25 @@ @ApiModelProperty(value = "快递单号") private String courier_number; private String courierNumber; @ApiModelProperty(value = "收货人姓名") private String receiver_name; private String receiverName; @ApiModelProperty(value = "收货人电话") private String receiver_phone; @ApiModelProperty(value = "省份/直辖市") private String receiver_province; private String receiverphone; @ApiModelProperty(value = "城市") private String receiver_city; private String receiverCity; @ApiModelProperty(value = "区") private String receiver_region; @ApiModelProperty(value = "详细地址") private String receiver_detail_address; private String receiverDetailAddress; @ApiModelProperty(value = "保证金") private BigDecimal bound; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -2,6 +2,8 @@ import com.ruoyi.order.domain.pojo.Order; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.OrderDTO; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -13,4 +15,6 @@ */ public interface IOrderService extends IService<Order> { void saveOrderOne(OrderDTO OrderDTO); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -1,10 +1,15 @@ package com.ruoyi.order.service.impl; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.order.domain.pojo.Order; import com.ruoyi.order.mapper.OrderMapper; import com.ruoyi.order.service.IOrderService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.order.util.OrderUtil; import com.ruoyi.system.api.domain.dto.OrderDTO; import org.springframework.stereotype.Service; import javax.annotation.Resource; /** * <p> @@ -17,4 +22,26 @@ @Service public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements IOrderService { @Resource private IOrderService orderService; @Override public void saveOrderOne(OrderDTO OrderDTO) { Order order=new Order(); String prefix = OrderUtil.getOrderNoForPrefix("XM"); order.setOrderNo(prefix); order.setOrderTime(OrderDTO.getOrderTime()); order.setOrderFrom(OrderDTO.getOrderFrom()); order.setAuctionType(OrderDTO.getAuctionType()); order.setMemberId(OrderDTO.getMemberId()); order.setTotalAmount(OrderDTO.getTotalAmount()); order.setOrderStatus(OrderStatusEnum.TO_PLAY); order.setGoodsQuantity(OrderDTO.getGoodsQuantity()); order.setReceiverName(OrderDTO.getReceiverName()); order.setReceiverphone(OrderDTO.getReceiverphone()); order.setReceiverCity(OrderDTO.getReceiverCity()); order.setReceiverDetailAddress(OrderDTO.getReceiverDetailAddress()); order.setBound(OrderDTO.getBound()); orderService.save(order); } }