1.提交【管理后台】团购、拍卖商品立即结束退款处理
2.提交【管理后台】拍卖场管理部分接口
| | |
| | | <minio.version>8.2.2</minio.version> |
| | | <poi.version>4.1.2</poi.version> |
| | | <transmittable-thread-local.version>2.14.2</transmittable-thread-local.version> |
| | | <zxing.version>3.2.1</zxing.version> |
| | | </properties> |
| | | |
| | | <!-- 依赖声明 --> |
| | |
| | | <artifactId>transmittable-thread-local</artifactId> |
| | | <version>${transmittable-thread-local.version}</version> |
| | | </dependency> |
| | | <!--二维码工具--> |
| | | <dependency> |
| | | <groupId>com.google.zxing</groupId> |
| | | <artifactId>core</artifactId> |
| | | <version>${zxing.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- 核心模块 --> |
| | | <dependency> |
| | |
| | | <dependency> |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-api-system</artifactId> |
| | | <version>${ruoyi.version}</version> |
| | | </dependency> |
| | | |
| | | <!--后台配置接口--> |
| | | <dependency> |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-api-management</artifactId> |
| | | <version>${ruoyi.version}</version> |
| | | </dependency> |
| | | |
| | |
| | | @ApiModelProperty(value = "支付合计") |
| | | private BigDecimal totalAmount; |
| | | |
| | | @ApiModelProperty(value = "订单状态 1=待发货 2=待收货 3=已完成 4=已取消") |
| | | @ApiModelProperty(value = "订单状态 1=待支付 2=待发货 3=待收货 4=已完成 5=已取消") |
| | | private OrderStatusEnum orderStatus; |
| | | |
| | | @ApiModelProperty(value = "支付时间") |
New file |
| | |
| | | package com.ruoyi.system.api.domain.dto; |
| | | |
| | | 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 java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author mitao |
| | | * @date 2024/5/29 |
| | | */ |
| | | @Data |
| | | public class OrderUpdDTO implements Serializable { |
| | | |
| | | private static final long serialVersionUID = -437243191517275308L; |
| | | |
| | | @ApiModelProperty(value = "订单id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "订单编号") |
| | | private String orderNo; |
| | | |
| | | @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 LocalDateTime payTime; |
| | | |
| | | @ApiModelProperty(value = "取消时间") |
| | | private LocalDateTime cancelTime; |
| | | |
| | | @ApiModelProperty(value = "订单备注") |
| | | private String orderRemark; |
| | | |
| | | @ApiModelProperty(value = "发货时间") |
| | | private LocalDateTime deliveryTime; |
| | | |
| | | @ApiModelProperty(value = "确认收货时间") |
| | | private LocalDateTime receiveTime; |
| | | |
| | | @ApiModelProperty(value = "优惠金额") |
| | | private BigDecimal discountMoney; |
| | | |
| | | @ApiModelProperty(value = "商品数量") |
| | | private Integer goodsQuantity; |
| | | @ApiModelProperty(value = "快递单号") |
| | | private String courierNumber; |
| | | |
| | | @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待审核,3 已开票,4 拒绝") |
| | | private Integer invoiceStatus; |
| | | |
| | | } |
| | |
| | | package com.ruoyi.system.api.factory; |
| | | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.BondStatusEnum; |
| | | import com.ruoyi.system.api.domain.Order; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderUpdDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | | import java.util.List; |
| | |
| | | public R<Map<String, Object>> refund(List<RefundDTO> refundDTOS, String source) { |
| | | return R.fail("批量退款失败" + cause.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public R<List<OrderAuctionBond>> getOrderAuctionBondList(Long id, |
| | | AuctionOrderTypeEnum auctionOrderTypeEnum, BondStatusEnum bondStatusEnum, |
| | | String source) { |
| | | return R.fail("获取保证金订单列表失败" + cause.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> updateOrderAuctionBondStatus(List<Long> ids, |
| | | BondStatusEnum bondStatusEnum) { |
| | | return R.fail("批量更新保证金订单状态失败" + cause.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public R<?> updateOrderList(List<OrderUpdDTO> orderUpdDTOS, String source) { |
| | | return R.fail("批量更新订单失败" + cause.getMessage()); |
| | | } |
| | | }; |
| | | |
| | | } |
| | |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | import com.ruoyi.common.core.constant.ServiceNameConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.BondStatusEnum; |
| | | import com.ruoyi.system.api.domain.Order; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderUpdDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.factory.OrderFallbackFactory; |
| | | import java.util.List; |
| | |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.PathVariable; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestHeader; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | |
| | | @FeignClient(contextId = "orderClient", value = ServiceNameConstants.RUOYI_ORDER, fallbackFactory = OrderFallbackFactory.class) |
| | | public interface OrderClient { |
| | |
| | | R<List<OrderAuctionBond>> getOrderAuctionBondList(@RequestBody MemberAuctionSalesroomDTO memberAuctionSalesroomDTO, |
| | | @RequestHeader(SecurityConstants.FROM_SOURCE) String source); |
| | | |
| | | @PostMapping("/inner/pay/refund-batch") |
| | | /** |
| | | * 批量退款 |
| | | * |
| | | * @param refundDTOS 退款数据传输对象 |
| | | * @param source 内部调用标志 |
| | | * @return Map<String, Object> |
| | | */ |
| | | @PostMapping("/pay/refund-batch") |
| | | R<Map<String, Object>> refund(@RequestBody List<RefundDTO> refundDTOS, |
| | | @RequestHeader(SecurityConstants.FROM_SOURCE) String source); |
| | | |
| | | /** |
| | | * 查询保证金订单列表 |
| | | * |
| | | * @param id 拍卖商品id |
| | | * @param auctionOrderTypeEnum 拍卖类型: 普通拍品 拍卖会拍品 |
| | | * @param bondStatusEnum 保证金状态 待支付 已支付 已退款 为null则查询所有 |
| | | * @param source 内部调用标志 |
| | | * @return List<OrderAuctionBond> |
| | | */ |
| | | @PostMapping("/order-auction-bond/list") |
| | | R<List<OrderAuctionBond>> getOrderAuctionBondList(@RequestParam("id") Long id, |
| | | @RequestParam("auctionOrderTypeEnum") AuctionOrderTypeEnum auctionOrderTypeEnum, |
| | | @RequestParam(value = "bondStatusEnum", required = false) BondStatusEnum bondStatusEnum, |
| | | @RequestHeader(SecurityConstants.FROM_SOURCE) String source); |
| | | |
| | | /** |
| | | * @param ids 保证金订单id列表 |
| | | * @param bondStatusEnum 保证金状态 |
| | | */ |
| | | @PutMapping("/order-auction-bond") |
| | | R<?> updateOrderAuctionBondStatus(@RequestParam("ids") List<Long> ids, |
| | | @RequestParam("bondStatusEnum") BondStatusEnum bondStatusEnum); |
| | | |
| | | /** |
| | | * 批量更新订单状态 |
| | | * |
| | | * @param orderUpdDTOS 订单更新数据传输对象列表 |
| | | * @param source 内部调用标志 |
| | | */ |
| | | @PutMapping("/order/upd-batch") |
| | | R<?> updateOrderList(@RequestBody List<OrderUpdDTO> orderUpdDTOS, |
| | | @RequestHeader(SecurityConstants.FROM_SOURCE) String source); |
| | | } |
| | |
| | | @AllArgsConstructor |
| | | public enum BondStatusEnum { |
| | | |
| | | /*订单状态 1=待发货 2=待收货 3=已完成 4=已取消*/ |
| | | /*保证金状态 1=待支付 2=已支付 3=已退款*/ |
| | | TO_PLAY(1, "待支付"), |
| | | PAID(2, "已支付"), |
| | | REFUNDED(3, "待收货"); |
| | | REFUNDED(3, "已退款"); |
| | | |
| | | @EnumValue |
| | | private final int code; |
| | |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-common-seata</artifactId> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.ruoyi</groupId> |
| | | <artifactId>ruoyi-modules-member</artifactId> |
| | | <version>3.6.2</version> |
| | | <scope>compile</scope> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>com.google.zxing</groupId> |
| | | <artifactId>core</artifactId> |
| | | </dependency> |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | * @author mitao |
| | | * @since 2024-05-16 |
| | | */ |
| | | @Api(value = "管理后台拍卖商品相关接口", tags = {"管理后台接口"}) |
| | | @Api(value = "拍卖商品管理相关接口", tags = {"管理后台接口"}) |
| | | @RestController |
| | | @RequiredArgsConstructor |
| | | @RequestMapping("/mgt/auction-goods") |
| | |
| | | package com.ruoyi.auction.controller.management; |
| | | |
| | | |
| | | import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; |
| | | import com.ruoyi.auction.service.IAuctionSalesroomService; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | 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.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | |
| | | * @author mitao |
| | | * @since 2024-05-16 |
| | | */ |
| | | @Slf4j |
| | | @RestController |
| | | @RequestMapping("/mgt/auction-salesroom") |
| | | @RequiredArgsConstructor |
| | | @Api(value = "拍卖场管理相关接口", tags = {"管理后台接口"}) |
| | | public class MgtAuctionSalesroomController { |
| | | |
| | | private final IAuctionSalesroomService auctionSalesroomService; |
| | | |
| | | /** |
| | | * 分页查询拍卖场 |
| | | * |
| | | * @param query 拍卖场查询对象 |
| | | * @return PageDTO<MgtAuctionSalesroomVO> |
| | | */ |
| | | @PostMapping("/page") |
| | | @ApiOperation(value = "获取拍卖场列表的分页数据", notes = "获取拍卖场列表的分页数据") |
| | | public R<PageDTO<MgtAuctionSalesroomVO>> getAuctionSalesroomPage( |
| | | MgtAuctionSalesroomQuery query) { |
| | | return R.ok(auctionSalesroomService.getAuctionSalesroomPage(query)); |
| | | } |
| | | |
| | | /** |
| | | * 查看二维码 |
| | | * |
| | | * @param id 拍卖场id |
| | | * @return 二维码 |
| | | */ |
| | | @GetMapping("/qr-code/{id}") |
| | | @ApiOperation(value = "查看二维码", notes = "查看二维码") |
| | | public R<String> getQrCode(@PathVariable("id") Long id) { |
| | | try { |
| | | return R.ok(auctionSalesroomService.getQrCode(id)); |
| | | } catch (Exception e) { |
| | | log.info("查看二维码异常", e); |
| | | return R.fail(); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.ruoyi.auction.controller.management.dto; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.common.core.enums.AuctionStartStatusEnum; |
| | | import com.ruoyi.common.core.enums.AuthenticationEnum; |
| | | import com.ruoyi.common.core.web.page.BasePage; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import java.time.LocalDateTime; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | |
| | | /** |
| | | * @author mitao |
| | | * @date 2024/5/29 |
| | | */ |
| | | @Data |
| | | @EqualsAndHashCode(callSuper = true) |
| | | @ApiModel(value = "拍卖场查询对象", description = "拍卖场查询对象") |
| | | public class MgtAuctionSalesroomQuery extends BasePage { |
| | | |
| | | private static final long serialVersionUID = -4766716589148941634L; |
| | | |
| | | @ApiModelProperty(value = "拍卖场名称") |
| | | private String salesroomName; |
| | | |
| | | @ApiModelProperty(value = "实名认证 0=不需实名 1=需要实名", notes = "传文字") |
| | | private AuthenticationEnum authentication; |
| | | |
| | | @ApiModelProperty(value = "开始状态 0=预展中 1=拍卖中 2=已结束", notes = "传文字") |
| | | private AuctionStartStatusEnum status; |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime startTime; |
| | | |
| | | @ApiModelProperty(value = "结束时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime endTime; |
| | | |
| | | } |
New file |
| | |
| | | package com.ruoyi.auction.controller.management.vo; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import com.ruoyi.common.core.enums.AuctionStartStatusEnum; |
| | | import com.ruoyi.common.core.enums.AuctionTypeEnum; |
| | | import com.ruoyi.common.core.enums.AuthenticationEnum; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * @author mitao |
| | | * @date 2024/5/29 |
| | | */ |
| | | @Data |
| | | @ApiModel(value = "拍卖场视图对象", description = "拍卖场视图对象") |
| | | public class MgtAuctionSalesroomVO implements Serializable { |
| | | |
| | | private static final long serialVersionUID = -7682015246094307938L; |
| | | |
| | | @ApiModelProperty(value = "拍卖场id") |
| | | private Long id; |
| | | |
| | | @ApiModelProperty(value = "拍卖场名称") |
| | | private String salesroomName; |
| | | |
| | | @ApiModelProperty(value = "开始时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime startTime; |
| | | |
| | | @ApiModelProperty(value = "结束时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime endTime; |
| | | |
| | | @ApiModelProperty(value = "拍卖时间 0=线下拍卖 1=线上线下结合") |
| | | private AuctionTypeEnum type; |
| | | |
| | | @ApiModelProperty(value = "保证金") |
| | | private BigDecimal bound; |
| | | |
| | | @ApiModelProperty(value = "实名认证 0=不需认证 1=需要实名") |
| | | private AuthenticationEnum authentication; |
| | | |
| | | @ApiModelProperty(value = "拍卖场说明") |
| | | private String description; |
| | | |
| | | @ApiModelProperty(value = "拍卖场封面图") |
| | | private String coverPic; |
| | | |
| | | @ApiModelProperty(value = "分享标题") |
| | | private String shareTitle; |
| | | |
| | | @ApiModelProperty(value = "分享图片") |
| | | private String sharePic; |
| | | |
| | | @ApiModelProperty(value = "拍卖状态 0=预展中 1=拍卖中 2=已结束") |
| | | private AuctionStartStatusEnum status; |
| | | |
| | | @ApiModelProperty(value = "拍卖场编码") |
| | | private String auctionSalesroomNo; |
| | | |
| | | @ApiModelProperty(value = "创建时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "拍卖商品数") |
| | | private Integer auctionGoodsNum; |
| | | } |
| | |
| | | public class AuctionSalesroom implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value = "拍卖场id") |
| | | @TableId(value = "id", type = IdType.ASSIGN_ID) |
| | | private Long id; |
| | | |
| | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.auction.controller.forepart.dto.AuctionSalesroomGoodsDTO; |
| | | import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO; |
| | | import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomInfoVO; |
| | | import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomVO; |
| | | import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; |
| | | import com.ruoyi.auction.domain.AuctionSalesroom; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.system.api.domain.AppMiniLoginVO; |
| | | import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | |
| | | /** |
| | |
| | | MemberAuctionSalesroomInfoVO getMemberAuctionSalesroomInfo( MemberAuctionSalesroomDTO memberAuctionSalesroomDTO); |
| | | |
| | | MemberAuctionSalesroomVO getMemberAuctionSalesroomSweep( MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO); |
| | | |
| | | /** |
| | | * 分页查询拍卖场 |
| | | * |
| | | * @param query 拍卖场查询对象 |
| | | * @return PageDTO<MgtAuctionSalesroomVO> |
| | | */ |
| | | PageDTO<MgtAuctionSalesroomVO> getAuctionSalesroomPage(MgtAuctionSalesroomQuery query); |
| | | |
| | | /** |
| | | * 查看二维码 |
| | | * |
| | | * @param id 拍卖场id |
| | | * @return 二维码 |
| | | */ |
| | | String getQrCode(Long id) throws Exception; |
| | | } |
| | |
| | | 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.BondStatusEnum; |
| | | import com.ruoyi.common.core.enums.OrderFromEnum; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | |
| | | import com.ruoyi.system.api.domain.GoodsSku; |
| | | import com.ruoyi.system.api.domain.Member; |
| | | import com.ruoyi.system.api.domain.MemberAddress; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | | import com.ruoyi.system.api.feignClient.MemberClient; |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | // 查询出价记录 |
| | | List<AuctionBidRecord> auctionBidRecords = auctionBidRecordService.getBidRecordByGoodsId( |
| | | id); |
| | | Long memberId = null; |
| | | if (StringUtils.isNotEmpty(auctionBidRecords)) { |
| | | // 中标 |
| | | AuctionBidRecord auctionBidRecord = auctionBidRecords.get(0); |
| | | auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL); |
| | | auctionBidRecordService.updateById(auctionBidRecord); |
| | | |
| | | memberId = auctionBidRecord.getMemberId(); |
| | | // 创建待支付订单 |
| | | OrderDTO orderDTO = new OrderDTO(); |
| | | orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); |
| | |
| | | // 结束拍卖 |
| | | this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED) |
| | | .eq(AuctionGoods::getId, id).update(); |
| | | // 查询已支付保证基记录 |
| | | // TODO 退还保证金 |
| | | |
| | | // 查询已支付保证金记录 |
| | | List<OrderAuctionBond> auctionBondList = orderClient.getOrderAuctionBondList(id, |
| | | AuctionOrderTypeEnum.REGULAR_ITEMS, |
| | | BondStatusEnum.PAID, |
| | | SecurityConstants.INNER).getData(); |
| | | if (StringUtils.isNotEmpty(auctionBondList)) { |
| | | List<RefundDTO> refundDTOList = new ArrayList<>(); |
| | | for (OrderAuctionBond orderAuctionBond : auctionBondList) { |
| | | // 已中标需在订单完成后退保证金 |
| | | if (orderAuctionBond.getMemberId().equals(memberId)) { |
| | | continue; |
| | | } |
| | | RefundDTO refundDTO = new RefundDTO(); |
| | | refundDTO.setOrderNo(orderAuctionBond.getOrderNo()); |
| | | refundDTO.setAmount(orderAuctionBond.getBond()); |
| | | } |
| | | // 远程调用订单服务进行退款 |
| | | Map<String, Object> data = orderClient.refund(refundDTOList, |
| | | SecurityConstants.INNER).getData(); |
| | | // 处理退款返回结果 |
| | | List<String> successfulOrders = new ArrayList<>(); |
| | | List<String> failedOrders = new ArrayList<>(); |
| | | |
| | | data.forEach((key, value) -> { |
| | | if ((boolean) value) { |
| | | successfulOrders.add(key); |
| | | } else { |
| | | failedOrders.add(key); |
| | | } |
| | | }); |
| | | log.info("订单号:{},退款失败", failedOrders); |
| | | // 退款成功的订单修改状态 |
| | | List<Long> ids = auctionBondList.stream().map(bond -> { |
| | | if (successfulOrders.contains(bond.getOrderNo())) { |
| | | return bond.getId(); |
| | | } |
| | | return null; |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | // 远程调用订单服务修改订单状态 |
| | | orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.auction.controller.forepart.dto.AuctionSalesroomGoodsDTO; |
| | | import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomGoodsVO; |
| | | import com.ruoyi.auction.controller.forepart.vo.ForepartAuctionSalesroomVO; |
| | | import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomInfoVO; |
| | | import com.ruoyi.auction.controller.forepart.vo.MemberAuctionSalesroomVO; |
| | | import com.ruoyi.auction.domain.*; |
| | | import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; |
| | | import com.ruoyi.auction.domain.AuctionBidRecord; |
| | | import com.ruoyi.auction.domain.AuctionSalesroom; |
| | | import com.ruoyi.auction.domain.AuctionSalesroomGoods; |
| | | import com.ruoyi.auction.domain.AuctionVideo; |
| | | import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; |
| | | import com.ruoyi.auction.mapper.AuctionSalesroomMapper; |
| | | import com.ruoyi.auction.service.*; |
| | | import com.ruoyi.auction.service.IAuctionBidRecordService; |
| | | import com.ruoyi.auction.service.IAuctionSalesroomService; |
| | | import com.ruoyi.auction.service.IAuctionVideoService; |
| | | import com.ruoyi.auction.util.CreateQrCode; |
| | | import com.ruoyi.auction.util.HttpUtils; |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.auction.util.HttpUtils; |
| | | import com.ruoyi.system.api.domain.AppMiniLoginVO; |
| | | import com.ruoyi.system.api.domain.GoodsSku; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | | import com.ruoyi.system.api.feignClient.OrderClient; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import javax.annotation.Resource; |
| | | |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.http.util.EntityUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | HttpResponse response = HttpUtils.doPost(host, "", "POST", headers, querys, body); |
| | | return EntityUtils.toString(response.getEntity()); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询拍卖场 |
| | | * |
| | | * @param query 拍卖场查询对象 |
| | | * @return PageDTO<MgtAuctionSalesroomVO> |
| | | */ |
| | | @Override |
| | | public PageDTO<MgtAuctionSalesroomVO> getAuctionSalesroomPage(MgtAuctionSalesroomQuery query) { |
| | | // 分页查询 |
| | | Page<AuctionSalesroom> page = this.lambdaQuery() |
| | | .select(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName, |
| | | AuctionSalesroom::getCreateTime, AuctionSalesroom::getStartTime, |
| | | AuctionSalesroom::getEndTime, AuctionSalesroom::getType, |
| | | AuctionSalesroom::getAuthentication, AuctionSalesroom::getStatus) |
| | | .like(StringUtils.isNotEmpty(query.getSalesroomName()), |
| | | AuctionSalesroom::getSalesroomName, query.getSalesroomName()) |
| | | .eq(StringUtils.isNotNull(query.getAuthentication()), |
| | | AuctionSalesroom::getAuthentication, query.getAuthentication()) |
| | | .eq(StringUtils.isNotNull(query.getStatus()), AuctionSalesroom::getStatus, |
| | | query.getStatus()).between( |
| | | StringUtils.isNotNull(query.getStartTime()) && StringUtils.isNotNull( |
| | | query.getEndTime()), AuctionSalesroom::getStartTime, |
| | | query.getStartTime(), |
| | | query.getEndTime()) |
| | | .page(new Page<>(query.getPageCurr(), query.getPageSize())); |
| | | List<AuctionSalesroom> records = page.getRecords(); |
| | | if (StringUtils.isNull(records)) { |
| | | return PageDTO.empty(page); |
| | | } |
| | | PageDTO<MgtAuctionSalesroomVO> auctionSalesroomVOPageDTO = PageDTO.of(page, |
| | | MgtAuctionSalesroomVO.class); |
| | | List<MgtAuctionSalesroomVO> list = auctionSalesroomVOPageDTO.getList(); |
| | | List<Long> auctionSalesroomIdList = list.stream().map(MgtAuctionSalesroomVO::getId) |
| | | .collect(Collectors.toList()); |
| | | // 所有拍卖场的拍卖商品 |
| | | List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( |
| | | Wrappers.<AuctionSalesroomGoods>lambdaQuery() |
| | | .in(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomIdList)); |
| | | // 计算每个拍卖场所有拍品数量 |
| | | Map<Long, Integer> map = auctionSalesroomGoods.stream() |
| | | .collect(Collectors.groupingBy(AuctionSalesroomGoods::getAuctionSalesroomId, |
| | | Collectors.summingInt(AuctionSalesroomGoods::getSalesroomStock))); |
| | | for (MgtAuctionSalesroomVO mgtAuctionSalesroomVO : list) { |
| | | Integer i = map.get(mgtAuctionSalesroomVO.getId()); |
| | | if (StringUtils.isNotNull(i)) { |
| | | mgtAuctionSalesroomVO.setAuctionGoodsNum(i); |
| | | } |
| | | } |
| | | return auctionSalesroomVOPageDTO; |
| | | } |
| | | |
| | | /** |
| | | * 查看二维码 |
| | | * |
| | | * @param id 拍卖场id |
| | | * @return 二维码 |
| | | */ |
| | | @Override |
| | | public String getQrCode(Long id) throws Exception { |
| | | AuctionSalesroom auctionSalesroom = this.getById(id); |
| | | String auctionSalesroomNo = auctionSalesroom.getAuctionSalesroomNo(); |
| | | return CreateQrCode.createQRCode(auctionSalesroomNo); |
| | | } |
| | | } |
New file |
| | |
| | | package com.ruoyi.auction.util; |
| | | |
| | | import com.google.zxing.BarcodeFormat; |
| | | import com.google.zxing.EncodeHintType; |
| | | import com.google.zxing.WriterException; |
| | | import com.google.zxing.common.BitMatrix; |
| | | import com.google.zxing.qrcode.QRCodeWriter; |
| | | import java.io.ByteArrayOutputStream; |
| | | import java.io.IOException; |
| | | import java.util.Base64; |
| | | import java.util.HashMap; |
| | | |
| | | public class CreateQrCode { |
| | | |
| | | private static final String base64Url = "data:image/png;base64,"; |
| | | |
| | | /** |
| | | * 创建二维码 |
| | | * |
| | | * @param |
| | | * @param |
| | | * @return |
| | | * @throws IOException |
| | | * @throws WriterException |
| | | */ |
| | | public static String createQRCode(String json) throws IOException, WriterException { |
| | | QRCodeWriter qrCodeWriter = new QRCodeWriter(); |
| | | |
| | | HashMap<EncodeHintType, Object> hints = new HashMap<>(); |
| | | hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); |
| | | BitMatrix bitMatrix = qrCodeWriter.encode(json, BarcodeFormat.QR_CODE, 600, 600, hints); |
| | | ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); |
| | | MatrixToImageWriter.writeToStream(bitMatrix, "PNG", outputStream); |
| | | Base64.Encoder encoder = Base64.getEncoder(); |
| | | String text = encoder.encodeToString(outputStream.toByteArray()); |
| | | return base64Url + text; |
| | | } |
| | | } |
New file |
| | |
| | | /* |
| | | * Copyright 2012 ZXing authors |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | |
| | | package com.ruoyi.auction.util; |
| | | |
| | | import java.awt.image.BufferedImage; |
| | | |
| | | /** |
| | | * Encapsulates custom configuration used in methods of {@link MatrixToImageWriter}. |
| | | */ |
| | | public final class MatrixToImageConfig { |
| | | |
| | | public static final int BLACK = 0xFF000000; |
| | | public static final int WHITE = 0xFFFFFFFF; |
| | | |
| | | private final int onColor; |
| | | private final int offColor; |
| | | |
| | | /** |
| | | * Creates a default config with on color {@link #BLACK} and off color {@link #WHITE}, |
| | | * generating normal black-on-white barcodes. |
| | | */ |
| | | public MatrixToImageConfig() { |
| | | this(BLACK, WHITE); |
| | | } |
| | | |
| | | /** |
| | | * @param onColor pixel on color, specified as an ARGB value as an int |
| | | * @param offColor pixel off color, specified as an ARGB value as an int |
| | | */ |
| | | public MatrixToImageConfig(int onColor, int offColor) { |
| | | this.onColor = onColor; |
| | | this.offColor = offColor; |
| | | } |
| | | |
| | | public int getPixelOnColor() { |
| | | return onColor; |
| | | } |
| | | |
| | | public int getPixelOffColor() { |
| | | return offColor; |
| | | } |
| | | |
| | | int getBufferedImageColorModel() { |
| | | // Use faster BINARY if colors match default |
| | | return onColor == BLACK && offColor == WHITE ? BufferedImage.TYPE_BYTE_BINARY |
| | | : BufferedImage.TYPE_INT_RGB; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | /* |
| | | * Copyright 2009 ZXing authors |
| | | * |
| | | * Licensed under the Apache License, Version 2.0 (the "License"); |
| | | * you may not use this file except in compliance with the License. |
| | | * You may obtain a copy of the License at |
| | | * |
| | | * http://www.apache.org/licenses/LICENSE-2.0 |
| | | * |
| | | * Unless required by applicable law or agreed to in writing, software |
| | | * distributed under the License is distributed on an "AS IS" BASIS, |
| | | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | * See the License for the specific language governing permissions and |
| | | * limitations under the License. |
| | | */ |
| | | package com.ruoyi.auction.util; |
| | | |
| | | import com.google.zxing.common.BitMatrix; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.OutputStream; |
| | | import java.nio.file.Path; |
| | | import javax.imageio.ImageIO; |
| | | |
| | | /** |
| | | * Writes a {@link BitMatrix} to {@link BufferedImage}, file or stream. Provided here instead of |
| | | * core since it depends on Java SE libraries. |
| | | * |
| | | * @author Sean Owen |
| | | */ |
| | | public final class MatrixToImageWriter { |
| | | |
| | | private static final MatrixToImageConfig DEFAULT_CONFIG = new MatrixToImageConfig(); |
| | | |
| | | private MatrixToImageWriter() { |
| | | } |
| | | |
| | | /** |
| | | * Renders a {@link BitMatrix} as an image, where "false" bits are rendered as white, and "true" |
| | | * bits are rendered as black. |
| | | */ |
| | | public static BufferedImage toBufferedImage(BitMatrix matrix) { |
| | | return toBufferedImage(matrix, DEFAULT_CONFIG); |
| | | } |
| | | |
| | | /** |
| | | * As {@link #toBufferedImage(BitMatrix)}, but allows customization of the output. |
| | | */ |
| | | public static BufferedImage toBufferedImage(BitMatrix matrix, MatrixToImageConfig config) { |
| | | int width = matrix.getWidth(); |
| | | int height = matrix.getHeight(); |
| | | BufferedImage image = new BufferedImage(width, height, config.getBufferedImageColorModel()); |
| | | int onColor = config.getPixelOnColor(); |
| | | int offColor = config.getPixelOffColor(); |
| | | for (int x = 0; x < width; x++) { |
| | | for (int y = 0; y < height; y++) { |
| | | image.setRGB(x, y, matrix.get(x, y) ? onColor : offColor); |
| | | } |
| | | } |
| | | return image; |
| | | } |
| | | |
| | | /** |
| | | * @deprecated use {@link #writeToPath(BitMatrix, String, Path)} |
| | | */ |
| | | @Deprecated |
| | | public static void writeToFile(BitMatrix matrix, String format, File file) throws IOException { |
| | | writeToPath(matrix, format, file.toPath()); |
| | | } |
| | | |
| | | /** |
| | | * Writes a {@link BitMatrix} to a file. |
| | | * |
| | | * @see #toBufferedImage(BitMatrix) |
| | | */ |
| | | public static void writeToPath(BitMatrix matrix, String format, Path file) throws IOException { |
| | | writeToPath(matrix, format, file, DEFAULT_CONFIG); |
| | | } |
| | | |
| | | /** |
| | | * @deprecated use {@link #writeToPath(BitMatrix, String, Path, MatrixToImageConfig)} |
| | | */ |
| | | @Deprecated |
| | | public static void writeToFile(BitMatrix matrix, String format, File file, |
| | | MatrixToImageConfig config) |
| | | throws IOException { |
| | | writeToPath(matrix, format, file.toPath(), config); |
| | | } |
| | | |
| | | /** |
| | | * As {@link #writeToFile(BitMatrix, String, File)}, but allows customization of the output. |
| | | */ |
| | | public static void writeToPath(BitMatrix matrix, String format, Path file, |
| | | MatrixToImageConfig config) |
| | | throws IOException { |
| | | BufferedImage image = toBufferedImage(matrix, config); |
| | | if (!ImageIO.write(image, format, file.toFile())) { |
| | | throw new IOException("Could not write an image of format " + format + " to " + file); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Writes a {@link BitMatrix} to a stream. |
| | | * |
| | | * @see #toBufferedImage(BitMatrix) |
| | | */ |
| | | public static void writeToStream(BitMatrix matrix, String format, OutputStream stream) |
| | | throws IOException { |
| | | writeToStream(matrix, format, stream, DEFAULT_CONFIG); |
| | | } |
| | | |
| | | /** |
| | | * As {@link #writeToStream(BitMatrix, String, OutputStream)}, but allows customization of the |
| | | * output. |
| | | */ |
| | | public static void writeToStream(BitMatrix matrix, String format, OutputStream stream, |
| | | MatrixToImageConfig config) |
| | | throws IOException { |
| | | BufferedImage image = toBufferedImage(matrix, config); |
| | | if (!ImageIO.write(image, format, stream)) { |
| | | throw new IOException("Could not write an image of format " + format); |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import com.ruoyi.common.core.constant.SecurityConstants; |
| | | import com.ruoyi.common.core.enums.GroupStatusEnum; |
| | | import com.ruoyi.common.core.enums.ListingStatusEnum; |
| | | import com.ruoyi.common.core.enums.PaymentMethodEnum; |
| | | 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.StringUtils; |
| | |
| | | import com.ruoyi.system.api.domain.GoodsSku; |
| | | import com.ruoyi.system.api.domain.Order; |
| | | 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.feignClient.OrderClient; |
| | | import java.time.LocalDateTime; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.stream.Collectors; |
| | | import lombok.RequiredArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | //查询关联订单 |
| | | List<Order> orderList = orderClient.getOrderByGroupPurchaseId(id, |
| | | SecurityConstants.INNER).getData(); |
| | | for (Order order : orderList) { |
| | | if (PaymentMethodEnum.ALIPAY.equals(order.getPaymentMethod())) { |
| | | //TODO 退款 |
| | | } |
| | | if (PaymentMethodEnum.WECHAT.equals(order.getPaymentMethod())) { |
| | | //TODO 退款 |
| | | } |
| | | |
| | | List<RefundDTO> refundDTOList = orderList.stream().map(order -> { |
| | | RefundDTO refundDTO = new RefundDTO(); |
| | | refundDTO.setOrderNo(order.getOrderNo()); |
| | | refundDTO.setAmount(order.getTotalAmount()); |
| | | return refundDTO; |
| | | }).collect(Collectors.toList()); |
| | | 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); |
| | | } |
| | | } else { |
| | | this.lambdaUpdate() |
| | |
| | | package com.ruoyi.order.controller; |
| | | |
| | | |
| | | 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.common.security.annotation.InnerAuth; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.order.service.IOrderAuctionBondService; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import javax.annotation.Resource; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Resource |
| | | private IOrderAuctionBondService iOrderAuctionBondService; |
| | | |
| | | /** |
| | | * 获取当前商品信息 |
| | | * |
| | | */ |
| | | @InnerAuth |
| | | @PostMapping("/getOrderAuctionBond") |
| | | @ResponseBody |
| | | public R<T> getOrderAuctionBond(@RequestBody OrderAuctionBondDTO orderAuctionBondDTO) { |
| | | iOrderAuctionBondService.getOrderAuctionBond(orderAuctionBondDTO); |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @InnerAuth |
| | | @PostMapping("/getOrderAuctionBondList") |
| | | @ResponseBody |
| | | public R<List<OrderAuctionBond>> getOrderAuctionBondList(@RequestBody MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) { |
| | | LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery(); |
| | | wrapper.eq(OrderAuctionBond::getMemberId,memberAuctionSalesroomDTO.getMemberId()); |
| | | wrapper.eq(OrderAuctionBond::getAuctionSalesroomId,memberAuctionSalesroomDTO.getAuctionSalesroomId()); |
| | | wrapper.eq(OrderAuctionBond::getDelFlag,0); |
| | | List<OrderAuctionBond> list = iOrderAuctionBondService.list(wrapper); |
| | | return R.ok(list); |
| | | |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | |
| | | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.page.BeanUtils; |
| | | import com.ruoyi.common.security.annotation.InnerAuth; |
| | | import com.ruoyi.order.service.IOrderService; |
| | | import com.ruoyi.system.api.domain.Order; |
| | | import com.ruoyi.system.api.domain.dto.OrderDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderUpdDTO; |
| | | import java.util.List; |
| | | 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.PostMapping; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | |
| | | R<List<Order>> getOrderByGroupPurchaseId(@PathVariable("id") Long id) { |
| | | return R.ok(orderService.getOrderByGroupPurchaseId(id)); |
| | | } |
| | | |
| | | /** |
| | | * 批量更新订单状态 |
| | | * |
| | | * @param orderUpdDTOS 订单更新数据传输对象列表 |
| | | */ |
| | | @PutMapping("/upd-batch") |
| | | R<?> updateOrderList(@RequestBody List<OrderUpdDTO> orderUpdDTOS) { |
| | | List<Order> orders = BeanUtils.copyList(orderUpdDTOS, Order.class); |
| | | orderService.updateBatchById(orders); |
| | | return R.ok(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.ruoyi.order.controller.inner; |
| | | |
| | | |
| | | 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.common.core.enums.AuctionOrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.BondStatusEnum; |
| | | import com.ruoyi.common.security.annotation.InnerAuth; |
| | | import com.ruoyi.order.service.IOrderAuctionBondService; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.PutMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | /** |
| | | * <p> |
| | | * 拍卖保证金表 前端控制器 |
| | | * </p> |
| | | * |
| | | * @author mitao |
| | | * @since 2024-05-16 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/order-auction-bond") |
| | | public class OrderAuctionBondController { |
| | | |
| | | @Resource |
| | | private IOrderAuctionBondService iOrderAuctionBondService; |
| | | |
| | | /** |
| | | * 获取当前商品信息 |
| | | */ |
| | | @InnerAuth |
| | | @PostMapping("/getOrderAuctionBond") |
| | | @ResponseBody |
| | | public R<T> getOrderAuctionBond(@RequestBody OrderAuctionBondDTO orderAuctionBondDTO) { |
| | | iOrderAuctionBondService.getOrderAuctionBond(orderAuctionBondDTO); |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @InnerAuth |
| | | @PostMapping("/getOrderAuctionBondList") |
| | | @ResponseBody |
| | | public R<List<OrderAuctionBond>> getOrderAuctionBondList( |
| | | @RequestBody MemberAuctionSalesroomDTO memberAuctionSalesroomDTO) { |
| | | LambdaQueryWrapper<OrderAuctionBond> wrapper = Wrappers.lambdaQuery(); |
| | | wrapper.eq(OrderAuctionBond::getMemberId, memberAuctionSalesroomDTO.getMemberId()); |
| | | wrapper.eq(OrderAuctionBond::getAuctionSalesroomId, |
| | | memberAuctionSalesroomDTO.getAuctionSalesroomId()); |
| | | wrapper.eq(OrderAuctionBond::getDelFlag, 0); |
| | | List<OrderAuctionBond> list = iOrderAuctionBondService.list(wrapper); |
| | | return R.ok(list); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 查询保证金订单列表 |
| | | * |
| | | * @param id 拍卖商品id |
| | | * @param auctionOrderTypeEnum 拍卖类型: 普通拍品 拍卖会拍品 |
| | | * @param bondStatusEnum 保证金状态 待支付 已支付 已退款 为null则查询所有 |
| | | * @return List<OrderAuctionBond> |
| | | */ |
| | | @InnerAuth |
| | | @PostMapping("/list") |
| | | public R<List<OrderAuctionBond>> getOrderAuctionBondList(@RequestParam("id") Long id, |
| | | @RequestParam("auctionOrderTypeEnum") AuctionOrderTypeEnum auctionOrderTypeEnum, |
| | | @RequestParam(value = "bondStatusEnum", required = false) BondStatusEnum bondStatusEnum) { |
| | | return R.ok(iOrderAuctionBondService.getOrderAuctionBondList(id, auctionOrderTypeEnum, |
| | | bondStatusEnum)); |
| | | } |
| | | |
| | | /** |
| | | * 批量更新保证金订单状态 |
| | | * |
| | | * @param ids 保证金订单id列表 |
| | | * @param bondStatusEnum 保证金状态 |
| | | */ |
| | | @InnerAuth |
| | | @PutMapping |
| | | R<?> updateOrderAuctionBondStatus(@RequestParam("ids") List<Long> ids, |
| | | @RequestParam("bondStatusEnum") BondStatusEnum bondStatusEnum) { |
| | | iOrderAuctionBondService.updateOrderAuctionBondStatus(ids, bondStatusEnum); |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| | |
| | | * @date 2024/5/29 |
| | | */ |
| | | @RestController |
| | | @RequestMapping("/inner/pay") |
| | | @RequestMapping("/pay") |
| | | @RequiredArgsConstructor |
| | | public class PayController { |
| | | |
| | |
| | | package com.ruoyi.order.service; |
| | | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.BondStatusEnum; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import java.util.List; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | |
| | | /** |
| | |
| | | public interface IOrderAuctionBondService extends IService<OrderAuctionBond> { |
| | | R<T> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO); |
| | | |
| | | /** |
| | | * 查询保证金订单列表 |
| | | * |
| | | * @param id 拍卖商品id |
| | | * @param auctionOrderTypeEnum 拍卖类型: 普通拍品 拍卖会拍品 |
| | | * @param bondStatusEnum 保证金状态 待支付 已支付 已退款 为null则查询所有 |
| | | * @return List<OrderAuctionBond> |
| | | */ |
| | | List<OrderAuctionBond> getOrderAuctionBondList(Long id, |
| | | AuctionOrderTypeEnum auctionOrderTypeEnum, |
| | | BondStatusEnum bondStatusEnum); |
| | | |
| | | /** |
| | | * 批量更新保证金订单状态 |
| | | * |
| | | * @param ids 保证金订单id列表 |
| | | * @param bondStatusEnum 保证金状态 |
| | | */ |
| | | void updateOrderAuctionBondStatus(List<Long> ids, BondStatusEnum bondStatusEnum); |
| | | } |
| | |
| | | * @return 订单列表 |
| | | */ |
| | | List<Order> getOrderByGroupPurchaseId(Long id); |
| | | |
| | | } |
| | |
| | | |
| | | 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.domain.R; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; |
| | | import com.ruoyi.common.core.enums.BondStatusEnum; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.order.domain.pojo.Paylog; |
| | | import com.ruoyi.order.mapper.OrderAuctionBondMapper; |
| | | import com.ruoyi.order.service.IOrderAuctionBondService; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.order.service.IPaylogService; |
| | | import com.ruoyi.order.util.SinataUtil; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; |
| | | import java.util.List; |
| | | import javax.annotation.Resource; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 查询保证金订单列表 |
| | | * |
| | | * @param id 拍卖商品id |
| | | * @param auctionOrderTypeEnum 拍卖类型: 普通拍品 拍卖会拍品 |
| | | * @param bondStatusEnum 保证金状态 待支付 已支付 已退款 为null则查询所有 |
| | | * @return List<OrderAuctionBond> |
| | | */ |
| | | @Override |
| | | public List<OrderAuctionBond> getOrderAuctionBondList(Long id, |
| | | AuctionOrderTypeEnum auctionOrderTypeEnum, BondStatusEnum bondStatusEnum) { |
| | | return this.lambdaQuery().eq(OrderAuctionBond::getAuctionGoodsId, id) |
| | | .eq(OrderAuctionBond::getBondType, auctionOrderTypeEnum).eq( |
| | | StringUtils.isNotNull(bondStatusEnum), OrderAuctionBond::getBoundStatus, |
| | | bondStatusEnum).list(); |
| | | } |
| | | |
| | | /** |
| | | * 批量更新保证金订单状态 |
| | | * |
| | | * @param ids 保证金订单id列表 |
| | | * @param bondStatusEnum 保证金状态 |
| | | */ |
| | | @Override |
| | | public void updateOrderAuctionBondStatus(List<Long> ids, BondStatusEnum bondStatusEnum) { |
| | | this.lambdaUpdate().set(OrderAuctionBond::getBoundStatus, bondStatusEnum) |
| | | .in(OrderAuctionBond::getId, ids).update(); |
| | | } |
| | | } |
| | |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Objects; |
| | | import java.util.Optional; |
| | | import java.util.Set; |
| | | import java.util.function.Function; |
| | |
| | | iPaylogService.updateBatchById(updList); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("1", true); |
| | | map.put("2", false); |
| | | map.put("3", true); |
| | | map.put("4", false); |
| | | map.put("5", true); |
| | | List<String> collect = map.entrySet().stream().map(entry -> { |
| | | if (!(boolean) entry.getValue()) { |
| | | return entry.getKey(); |
| | | } |
| | | return null; |
| | | }).filter(Objects::nonNull).collect(Collectors.toList()); |
| | | System.out.println(collect); |
| | | } |
| | | |
| | | private Boolean handleRefund(Paylog paylog, BigDecimal amount, |