ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionGoods.java
File was renamed from ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionGoods.java @@ -1,4 +1,4 @@ package com.ruoyi.auction.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/AuctionSalesroom.java
File was renamed from ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionSalesroom.java @@ -1,4 +1,4 @@ package com.ruoyi.auction.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/OrderAuctionBond.java
@@ -79,6 +79,8 @@ @ApiModelProperty(value = "删除标志(0代表存在 1代表删除)") @TableLogic private Integer delFlag; @ApiModelProperty(value = "支付方式 1=微信 2=支付宝") private PaymentMethodEnum paymentMethod; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/BidVO.java
New file @@ -0,0 +1,30 @@ package com.ruoyi.system.api.domain.dto; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; @Data public class BidVO { @ApiModelProperty(value = "目标商品id(普通拍品id 或 拍卖会拍品id)") private Long targetId; @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "拍卖会id") private Long auctionSalesroomId; @ApiModelProperty("拍卖类型 (1=普通拍品 2=拍卖会拍品)") private Integer auctionType; @ApiModelProperty(value = "最终出价时间") private LocalDateTime lastBidTime; @ApiModelProperty(value = "最终出价金额") private BigDecimal lastBidAmount; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/BondVO.java
New file @@ -0,0 +1,10 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class BondVO { @ApiModelProperty(value = "订单编号") private String orderNO; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberAuctionSalesroomBondDTO.java
New file @@ -0,0 +1,25 @@ package com.ruoyi.system.api.domain.dto; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class MemberAuctionSalesroomBondDTO { @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "拍卖会id") private Long auctionSalesroomId; @ApiModelProperty(value = "保证金类型1=普通拍品 2=拍卖会拍品") private Integer bondType; @ApiModelProperty(value = "拍卖商品id") private Long auctionGoodsId; @ApiModelProperty(value = "支付方式 1=微信 2=支付宝") private Integer paymentMethod; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/MemberAuctionSalesroomDTO.java
@@ -17,4 +17,5 @@ @ApiModelProperty(value = "拍卖场编号") private String salesroomNO; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/PayInfoDTO.java
New file @@ -0,0 +1,26 @@ package com.ruoyi.system.api.domain.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class PayInfoDTO { @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "1 支付宝支付,2 微信支付") private Integer type; @ApiModelProperty(value = "订单编号") private String orderNO; @ApiModelProperty(value = "题目") private String subject; @ApiModelProperty(value = "内容") private String body; @ApiModelProperty(value = "微信支付的用户openid") private String openId; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/vo/PayInfoVO.java
New file @@ -0,0 +1,23 @@ package com.ruoyi.system.api.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class PayInfoVO { @ApiModelProperty(value = "会员id") private Long memberId; @ApiModelProperty(value = "1 支付宝支付,2 微信支付") private Integer type; @ApiModelProperty(value = "订单编号") private String orderNO; @ApiModelProperty(value = "题目") private String subject; @ApiModelProperty(value = "内容") private String body; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/AuctionFallbackFactory.java
@@ -1,6 +1,10 @@ package com.ruoyi.system.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.system.api.feignClient.AuctionClient; import com.ruoyi.system.api.feignClient.OrderClient; import org.springframework.cloud.openfeign.FallbackFactory; /** @@ -11,6 +15,18 @@ @Override public AuctionClient create(Throwable cause) { return null; return new AuctionClient() { @Override public R<AuctionSalesroom> getauctionSalesroomOne(Long auctionSalesroomId, String source) { return R.fail("获取普通拍卖场失败" + cause.getMessage()); } @Override public R<AuctionGoods> getauctionGoodsOne(Long auctionGoodsId, String source) { return R.fail("获取普通拍卖商品失败" + cause.getMessage()); } }; } } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
@@ -10,6 +10,8 @@ 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.domain.dto.*; import com.ruoyi.system.api.domain.vo.PayInfoVO; import com.ruoyi.system.api.feignClient.OrderClient; import java.util.List; import java.util.Map; @@ -78,6 +80,16 @@ public R<?> updateOrderList(List<OrderUpdDTO> orderUpdDTOS, String source) { return R.fail("批量更新订单失败" + cause.getMessage()); } @Override public R<PayInfoVO> SaveOrderAuctionBond(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO, String source) { return R.fail("生成保证金失败" + cause.getMessage()); } @Override public R<?> UpdateBond(BondVO BondVO, String source) { return R.fail("修改保证金支付状态失败" + cause.getMessage()); } }; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/AuctionClient.java
@@ -1,10 +1,25 @@ package com.ruoyi.system.api.feignClient; 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.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.GoodsFlavorType; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.factory.AuctionFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestHeader; @FeignClient(contextId = "auctionClient", value = ServiceNameConstants.RUOYI_AUCTION, fallbackFactory = AuctionFallbackFactory.class) public interface AuctionClient { @PostMapping("/forepart/auction-salesroom/getAuctionSalesroomOne") R<AuctionSalesroom> getauctionSalesroomOne(@RequestBody Long auctionSalesroomId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/forepart/auction-goods/getAuctionGoodsOne") R<AuctionGoods> getauctionGoodsOne(@RequestBody Long auctionGoodsId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
@@ -12,6 +12,8 @@ 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.domain.dto.*; import com.ruoyi.system.api.domain.vo.PayInfoVO; import com.ruoyi.system.api.factory.OrderFallbackFactory; import java.util.List; import java.util.Map; @@ -113,4 +115,11 @@ @PutMapping("/order/upd-batch") R<?> updateOrderList(@RequestBody List<OrderUpdDTO> orderUpdDTOS, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/order-auction-bond/SaveOrderAuctionBond") R<PayInfoVO> SaveOrderAuctionBond(@RequestBody MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/order-auction-bond/UpdateBond") R<?> UpdateBond(@RequestBody BondVO BondVO, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionGoodsController.java
@@ -1,9 +1,14 @@ package com.ruoyi.auction.controller.forepart; import org.springframework.web.bind.annotation.RequestMapping; import com.ruoyi.auction.service.IAuctionGoodsService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; /** * <p> @@ -17,4 +22,16 @@ @RequestMapping("/forepart/auction-goods") public class ForepartAuctionGoodsController { @Resource private IAuctionGoodsService iAuctionGoodsService; @InnerAuth @PostMapping("/getAuctionGoodsOne") @ResponseBody public R<AuctionGoods> getAuctionGoodsOne(@RequestBody Long auctionSalesroomId) { AuctionGoods auctionGoods=iAuctionGoodsService.getById(auctionSalesroomId); return R.ok(auctionGoods); } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomController.java
@@ -3,22 +3,25 @@ import com.ruoyi.auction.controller.forepart.dto.AuctionSalesroomGoodsDTO; import com.ruoyi.auction.controller.forepart.dto.ForepartAuctionBidRecordDTO; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.system.api.domain.GoodsFlavorType; import com.ruoyi.system.api.domain.dto.BidVO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; 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.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.auction.service.IAuctionSalesroomService; import com.ruoyi.common.core.domain.R; 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.vo.PayInfoVO; import io.swagger.annotations.ApiOperation; import javax.annotation.Resource; 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 org.springframework.web.bind.annotation.*; /** * <p> @@ -35,6 +38,15 @@ @Resource private IAuctionSalesroomService iAuctionSalesroomService; @InnerAuth @PostMapping("/getAuctionSalesroomOne") @ResponseBody public R<AuctionSalesroom> getauctionSalesroomOne(@RequestBody Long auctionSalesroomId) { AuctionSalesroom auctionSalesroomOne=iAuctionSalesroomService.getById(auctionSalesroomId); return R.ok(auctionSalesroomOne); } /** * 拍卖大屏获取拍卖信息 @@ -100,8 +112,17 @@ @RequestMapping("/SaveSignUpNow") @ResponseBody @ApiOperation(value = "用户端拍卖立即报名") public R<MemberAuctionSalesroomVO> SaveSignUpNow(@RequestBody MemberAuctionSalesroomDTO MemberAuctionSalesroomDTO) { return R.ok(iAuctionSalesroomService.getMemberAuctionSalesroomSweep(MemberAuctionSalesroomDTO)); public R<PayInfoVO> SaveSignUpNow(@RequestBody MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) { return R.ok( iAuctionSalesroomService.SaveSignUpNow(memberAuctionSalesroomBondDTO)); } @RequestMapping("/SaveBid") @ResponseBody @ApiOperation(value = "用户端拍卖出价") public R SaveBid(@RequestBody BidVO BidVO) { iAuctionSalesroomService.SaveBid(BidVO); return R.ok(); } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionSalesroomGoodsController.java
@@ -61,7 +61,7 @@ @RequestMapping("/auctionSalesroomStart") @ResponseBody @ApiOperation(value = "拍卖师端拍卖场立即开始") public R<T> auctionSalesroomStart(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { public R auctionSalesroomStart(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { iAuctionSalesroomGoodsService.auctionSalesroomStart(ationSalesroomGoodsDTO); return R.ok(); } @@ -74,7 +74,7 @@ @RequestMapping("/auctionSalesroomEnd") @ResponseBody @ApiOperation(value = "拍卖师端拍卖场立即结束") public R<T> auctionSalesroomEnd(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { public R auctionSalesroomEnd(@RequestBody AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { iAuctionSalesroomGoodsService.auctionSalesroomEnd(ationSalesroomGoodsDTO); return R.ok(); } @@ -99,7 +99,7 @@ @RequestMapping("/auctionSalesroomGoodsStart") @ResponseBody @ApiOperation(value = "拍卖师端拍卖场下一个立即开始") public R<T> auctionSalesroomGoodsStart(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) { public R auctionSalesroomGoodsStart(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) { iAuctionSalesroomGoodsService.auctionSalesroomGoodsStart(auctionSalesroomGoodsDTO); return R.ok(); } @@ -113,7 +113,7 @@ @RequestMapping("/auctionSalesroomGoodsEnd") @ResponseBody @ApiOperation(value = "拍卖师端拍卖场下一个立即结束") public R<T> auctionSalesroomGoodsEnd(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) { public R auctionSalesroomGoodsEnd(@RequestBody AuctionSalesroomGoodsDTO auctionSalesroomGoodsDTO) { iAuctionSalesroomGoodsService.auctionSalesroomGoodsStart(auctionSalesroomGoodsDTO); return R.ok(); } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/ForepartAuctionVideoController.java
@@ -46,7 +46,7 @@ @RequestMapping("/addVoid") @ResponseBody @ApiOperation(value = "拍卖师端添加拍卖会视频播放") public R<T> addVoid(@RequestBody ForepartAuctionVideo orepartAuctionVideo) { public R addVoid(@RequestBody ForepartAuctionVideo orepartAuctionVideo) { iAuctionVideoService.addVoid(orepartAuctionVideo); return R.ok(); ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/forepart/vo/AuctionSalesroomGoodsInfoVO.java
@@ -74,5 +74,8 @@ @ApiModelProperty(value = "当前出价") private BigDecimal presentBid; @ApiModelProperty(value = "最低加价金额") private BigDecimal minimumMarkupAmount; } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionGoodsMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.auction.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.auction.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionGoods; /** * <p> ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/mapper/AuctionSalesroomMapper.java
@@ -3,7 +3,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; import com.ruoyi.auction.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.AuctionSalesroom; import org.apache.ibatis.annotations.Param; import java.util.List; ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionGoodsService.java
@@ -4,7 +4,7 @@ import com.ruoyi.auction.controller.management.dto.AuctionGoodsDTO; import com.ruoyi.auction.controller.management.dto.AuctionGoodsQuery; import com.ruoyi.auction.controller.management.vo.AuctionGoodsVO; import com.ruoyi.auction.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.common.core.utils.page.PageDTO; /** ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -3,16 +3,21 @@ 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.BidVO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; 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.system.api.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 com.ruoyi.system.api.domain.vo.PayInfoVO; import org.springframework.web.bind.annotation.RequestBody; /** @@ -63,4 +68,10 @@ * @return 二维码 */ String getQrCode(Long id) throws Exception; PayInfoVO SaveSignUpNow(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO); void SaveBid(@RequestBody BidVO BidVO); } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -7,7 +7,7 @@ import com.ruoyi.auction.controller.management.vo.AuctionBidRecordVO; import com.ruoyi.auction.controller.management.vo.AuctionGoodsVO; import com.ruoyi.auction.domain.AuctionBidRecord; import com.ruoyi.auction.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.auction.mapper.AuctionGoodsMapper; import com.ruoyi.auction.service.IAuctionBidRecordService; import com.ruoyi.auction.service.IAuctionGoodsService; ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomGoodsServiceImpl.java
@@ -8,7 +8,7 @@ import com.ruoyi.auction.controller.forepart.dto.OrderDTO; import com.ruoyi.auction.controller.forepart.vo.*; import com.ruoyi.auction.domain.AuctionBidRecord; import com.ruoyi.auction.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.mapper.AuctionSalesroomGoodsMapper; import com.ruoyi.auction.service.IAuctionBidRecordService; @@ -397,6 +397,7 @@ AuctionSalesroomGoodsInfoVO.setFlavorType(data3.getFlavorTypeName()); AuctionSalesroomGoodsInfoVO.setCoverPic(goodsSku.getCoverPic()); AuctionSalesroomGoodsInfoVO.setAlbum(goodsSku.getAlbum()); AuctionSalesroomGoodsInfoVO.setMinimumMarkupAmount(byId1.getMinimumMarkupAmount()); LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getMemberId,auctionSalesroomGoodsInfoDTO.getMemberId()); wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,byId.getId()); ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -16,41 +16,74 @@ 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.mapper.AuctionSalesroomGoodsMapper; import com.ruoyi.auction.mapper.AuctionSalesroomMapper; import com.ruoyi.auction.service.*; 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.SysUser; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; 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 com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BidStatusEnum; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.dto.BidVO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; 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.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.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.auction.util.HttpUtils; 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 java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.ruoyi.system.api.domain.vo.PayInfoVO; import com.ruoyi.system.api.feignClient.MemberClient; import javax.annotation.Resource; import org.apache.http.HttpResponse; import org.apache.http.util.EntityUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.stream.Collectors; import javax.annotation.Resource; import org.apache.http.HttpResponse; @@ -89,10 +122,18 @@ private AuctionSalesroomGoodsMapper auctionSalesroomGoodsMapper; @Resource private IAuctionSalesroomGoodsService auctionSalesroomGoodsService; @Resource private IAuctionGoodsService auctionGoodsService; @Resource private GoodsSkuClient goodsSkuClient; @Resource private OrderClient orderClient; @Resource private MemberClient memberClient; //微信 @@ -386,6 +427,91 @@ return memberAuctionSalesroomVO; } @Override public PayInfoVO SaveSignUpNow(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) { return orderClient.SaveOrderAuctionBond(memberAuctionSalesroomBondDTO,SecurityConstants.INNER).getData(); } @Override public void SaveBid(BidVO bidVO) { Member membeOne = memberClient.getMembeOne(bidVO.getMemberId(), SecurityConstants.INNER).getData(); if (bidVO.getAuctionType()==2){ AuctionSalesroomGoods byId = auctionSalesroomGoodsService.getById(bidVO.getTargetId()); if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比起拍价低"); } BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比每次最少加价低"); } LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId()); wrapper1.eq(AuctionBidRecord::getAuctionSalesroomId,bidVO.getAuctionSalesroomId()); wrapper1.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId()); wrapper1.eq(AuctionBidRecord::getDelFlag,0); AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1); if (one!=null){ BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount()); if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比上次出价加每次最少加价低"); } one.setLastBidAmount(bidVO.getLastBidAmount()); one.setLastBidTime(LocalDateTime.now()); one.setBidCount(one.getBidCount()+1); auctionBidRecordService.updateById(one); }else{ one=new AuctionBidRecord(); one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId()); one.setTargetId(bidVO.getTargetId()); one.setMemberId(bidVO.getMemberId()); one.setLastBidTime(LocalDateTime.now()); one.setAuctionType(AuctionOrderTypeEnum.AUCTION_ITEMS); one.setStatus(BidStatusEnum.ELIMINATE); one.setBidCount(1); one.setLastBidAmount(bidVO.getLastBidAmount()); auctionBidRecordService.save(one); } }else { AuctionGoods byId = auctionGoodsService.getById(bidVO.getTargetId()); if (byId.getStartingPrice().doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比起拍价低"); } BigDecimal bigDecimal=byId.getStartingPrice().add(byId.getMinimumMarkupAmount()); if (bigDecimal.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比每次最少加价低"); } LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getMemberId,bidVO.getMemberId()); wrapper1.eq(AuctionBidRecord::getTargetId,bidVO.getTargetId()); wrapper1.eq(AuctionBidRecord::getDelFlag,0); AuctionBidRecord one = auctionBidRecordService.getOne(wrapper1); if (one!=null){ BigDecimal bigDecimal1=one.getLastBidAmount().add(byId.getMinimumMarkupAmount()); if (bigDecimal1.doubleValue()<bidVO.getLastBidAmount().doubleValue()){ throw new ServiceException("出价不能比上次出价加每次最少加价低"); } one.setLastBidAmount(bidVO.getLastBidAmount()); one.setLastBidTime(LocalDateTime.now()); one.setBidCount(one.getBidCount()+1); auctionBidRecordService.updateById(one); }else{ one=new AuctionBidRecord(); one.setAuctionSalesroomId(bidVO.getAuctionSalesroomId()); one.setTargetId(bidVO.getTargetId()); one.setMemberId(bidVO.getMemberId()); one.setLastBidTime(LocalDateTime.now()); one.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS); one.setStatus(BidStatusEnum.ELIMINATE); one.setBidCount(1); one.setLastBidAmount(bidVO.getLastBidAmount()); auctionBidRecordService.save(one); } } } public static String getAccessTokenByWX() throws Exception { String host = ACCESS_TOKEN_HOST + "?appid=" + WX_APPID + "&secret=" + WX_SECRET + "&grant_type=client_credential"; ruoyi-modules/ruoyi-auction/src/main/resources/mapper/auction/AuctionSalesroomMapper.xml
@@ -2,7 +2,7 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.auction.mapper.AuctionSalesroomMapper"> <select id="pageMemberAuctionSalesroomList" resultType="com.ruoyi.auction.domain.AuctionSalesroom"> <select id="pageMemberAuctionSalesroomList" resultType="com.ruoyi.system.api.domain.AuctionSalesroom"> SELECT * FROM t_auction_salesroom ta WHERE ta.del_flag = 0 <if test="param.salesroomName!=null and param.salesroomName != ''"> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/MemberController.java
@@ -85,7 +85,7 @@ @RequestMapping("/updateMembeid") @ResponseBody @ApiOperation(value = "修改用户信息") public R<T> updateMembeid(@RequestBody MemberDTO memberDTO) { public R updateMembeid(@RequestBody MemberDTO memberDTO) { iMemberService.updateMembeid(memberDTO); return R.ok(); } @@ -93,7 +93,7 @@ @RequestMapping("/authentificationMembe") @ResponseBody @ApiOperation(value = "用户认证") public R<T> authentificationMembe(@RequestBody MemberDTO memberDTO) { public R authentificationMembe(@RequestBody MemberDTO memberDTO) { iMemberService.authentificationMembe(memberDTO); return R.ok(); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/OrderAuctionBondController.java
@@ -1,9 +1,25 @@ 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.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.BondVO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; import com.ruoyi.system.api.domain.vo.PayInfoVO; 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.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; /** @@ -21,6 +37,53 @@ @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::getBoundStatus,2); wrapper.eq(OrderAuctionBond::getDelFlag,0); List<OrderAuctionBond> list = iOrderAuctionBondService.list(wrapper); return R.ok(list); } @InnerAuth @PostMapping("/SaveOrderAuctionBond") @ResponseBody public R<PayInfoVO> SaveOrderAuctionBond(@RequestBody MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) { return R.ok(iOrderAuctionBondService.SaveOrderAuctionBond(memberAuctionSalesroomBondDTO)); } @InnerAuth @PostMapping("/UpdateBond") @ResponseBody public R UpdateBond(@RequestBody BondVO ondVO) { LambdaQueryWrapper<OrderAuctionBond> wrapper= Wrappers.lambdaQuery(); wrapper.eq(OrderAuctionBond::getOrderNo,ondVO.getOrderNO()); wrapper.eq(OrderAuctionBond::getDelFlag,0); OrderAuctionBond one = iOrderAuctionBondService.getOne(wrapper); one.setBoundStatus(BondStatusEnum.PAID); iOrderAuctionBondService.updateById(one); return R.ok(); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/PaylogController.java
@@ -4,6 +4,16 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.order.service.IPaylogService; import com.ruoyi.order.service.impl.PaylogServiceImpl; import com.ruoyi.order.util.DateUtil; import com.ruoyi.order.util.SinataUtil; import com.ruoyi.order.util.alipay.config.AlipayConfig; import com.ruoyi.order.util.alipay.util.PayDemoActivity; import com.ruoyi.order.util.tencent.common.Configure; import com.ruoyi.order.util.tencent.common.Signature; import com.ruoyi.order.util.tencent.common.XMLParser; import com.ruoyi.order.util.tencent.protocol.AppPayReqData; import com.ruoyi.order.util.tencent.protocol.UnifiedorderReqData; import com.ruoyi.system.api.domain.dto.PayInfoDTO; import io.swagger.annotations.ApiOperation; import java.util.Map; import javax.annotation.Resource; @@ -51,10 +61,10 @@ @ResponseBody @RequestMapping("/getPayInfo") @ApiOperation(value = "获取支付信息") public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderID, public R<Map<String, Object>> getPayInfo(PayInfoDTO payInfoDTO, HttpServletRequest request) { try { return paylogServiceImpl.getPayInfo(uid, type, subject, body, orderID,request); return paylogServiceImpl.getPayInfo(Integer.valueOf(payInfoDTO.getMemberId().intValue()), payInfoDTO.getType(), payInfoDTO.getSubject(), payInfoDTO.getBody(), payInfoDTO.getOrderNO(), payInfoDTO.getOpenId(),request); } catch (Exception e) { return R.fail("获取异常"); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderAuctionBondService.java
@@ -5,9 +5,13 @@ import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BondStatusEnum; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; import java.util.List; import com.ruoyi.system.api.domain.vo.PayInfoVO; import org.apache.poi.ss.formula.functions.T; import org.springframework.web.bind.annotation.RequestBody; /** * <p> @@ -19,6 +23,8 @@ */ public interface IOrderAuctionBondService extends IService<OrderAuctionBond> { R<T> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO); PayInfoVO SaveOrderAuctionBond(@RequestBody MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO); /** * 查询保证金订单列表 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IPaylogService.java
@@ -20,7 +20,7 @@ */ public interface IPaylogService extends IService<Paylog> { R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderID, R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderID,String openId, HttpServletRequest request); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderAuctionBondServiceImpl.java
@@ -3,19 +3,30 @@ 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.domain.R; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BondStatusEnum; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.enums.AuctionOrderTypeEnum; import com.ruoyi.common.core.enums.BondStatusEnum; import com.ruoyi.common.core.enums.PaymentMethodEnum; import com.ruoyi.order.util.OrderUtil; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.order.domain.pojo.Paylog; import com.ruoyi.order.mapper.OrderAuctionBondMapper; import com.ruoyi.order.service.IOrderAuctionBondService; 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.MemberAuctionSalesroomBondDTO; import com.ruoyi.system.api.domain.dto.OrderAuctionBondDTO; import java.util.List; import javax.annotation.Resource; import com.ruoyi.system.api.domain.vo.PayInfoVO; import com.ruoyi.system.api.feignClient.AuctionClient; import org.apache.poi.ss.formula.functions.T; import org.springframework.stereotype.Service; @@ -38,6 +49,11 @@ @Resource private PaylogServiceImpl paylogServiceImpl; @Resource private AuctionClient auctionClient; @Override public R<T> getOrderAuctionBond(OrderAuctionBondDTO orderAuctionBondDTO) { @@ -100,4 +116,93 @@ this.lambdaUpdate().set(OrderAuctionBond::getBoundStatus, bondStatusEnum) .in(OrderAuctionBond::getId, ids).update(); } @Override public PayInfoVO SaveOrderAuctionBond(MemberAuctionSalesroomBondDTO memberAuctionSalesroomBondDTO) { PayInfoVO payInfoVO = new PayInfoVO(); if (memberAuctionSalesroomBondDTO.getBondType() == 2) { AuctionSalesroom data = auctionClient.getauctionSalesroomOne(memberAuctionSalesroomBondDTO.getAuctionSalesroomId(), SecurityConstants.INNER).getData(); if (data.getBound().intValue() == 0) { OrderAuctionBond orderAuctionBond = new OrderAuctionBond(); orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO")); orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId()); orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); orderAuctionBond.setBond(data.getBound()); orderAuctionBond.setBoundStatus(BondStatusEnum.PAID); orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS); iOrderAuctionBondService.save(orderAuctionBond); payInfoVO.setOrderNO(orderAuctionBond.getOrderNo()); payInfoVO.setType(0); payInfoVO.setSubject("保证金"); payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); payInfoVO.setBody("保证金"); } else { OrderAuctionBond orderAuctionBond = new OrderAuctionBond(); orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO")); orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId()); orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); orderAuctionBond.setBond(data.getBound()); orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY); orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS); if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) { orderAuctionBond.setPaymentMethod(PaymentMethodEnum.WECHAT); } else { orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY); } iOrderAuctionBondService.save(orderAuctionBond); payInfoVO.setOrderNO(orderAuctionBond.getOrderNo()); if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) { payInfoVO.setType(2); } else { payInfoVO.setType(1); } payInfoVO.setSubject("保证金"); payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); payInfoVO.setBody("保证金"); } } else { AuctionGoods data = auctionClient.getauctionGoodsOne(memberAuctionSalesroomBondDTO.getAuctionGoodsId(), SecurityConstants.INNER).getData(); if (data.getBond().intValue() == 0) { OrderAuctionBond orderAuctionBond = new OrderAuctionBond(); orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO")); orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId()); orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); orderAuctionBond.setBond(data.getBond()); orderAuctionBond.setBoundStatus(BondStatusEnum.PAID); orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS); iOrderAuctionBondService.save(orderAuctionBond); payInfoVO.setOrderNO(orderAuctionBond.getOrderNo()); payInfoVO.setType(0); payInfoVO.setSubject("保证金"); payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); payInfoVO.setBody("保证金"); } else { OrderAuctionBond orderAuctionBond = new OrderAuctionBond(); orderAuctionBond.setOrderNo(OrderUtil.getOrderNoForPrefix("BO")); orderAuctionBond.setAuctionSalesroomId(memberAuctionSalesroomBondDTO.getAuctionSalesroomId()); orderAuctionBond.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); orderAuctionBond.setBond(data.getBond()); orderAuctionBond.setBoundStatus(BondStatusEnum.TO_PLAY); orderAuctionBond.setBondType(AuctionOrderTypeEnum.AUCTION_ITEMS); if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) { orderAuctionBond.setPaymentMethod(PaymentMethodEnum.WECHAT); } else { orderAuctionBond.setPaymentMethod(PaymentMethodEnum.ALIPAY); } iOrderAuctionBondService.save(orderAuctionBond); payInfoVO.setOrderNO(orderAuctionBond.getOrderNo()); if (memberAuctionSalesroomBondDTO.getPaymentMethod() == 1) { payInfoVO.setType(2); } else { payInfoVO.setType(1); } payInfoVO.setSubject("保证金"); payInfoVO.setMemberId(memberAuctionSalesroomBondDTO.getMemberId()); payInfoVO.setBody("保证金"); } } return payInfoVO; } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -7,7 +7,10 @@ import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayTradeRefundRequest; import com.alipay.api.response.AlipayTradeRefundResponse; 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.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.order.domain.pojo.Paylog; @@ -21,6 +24,8 @@ import com.ruoyi.order.util.tencent.common.XMLParser; import com.ruoyi.order.util.tencent.protocol.AppPayReqData; import com.ruoyi.order.util.tencent.protocol.UnifiedorderReqData; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.BondVO; import com.ruoyi.system.api.domain.dto.RefundDTO; import java.io.IOException; import java.io.PrintWriter; @@ -40,6 +45,8 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ruoyi.system.api.feignClient.OrderClient; import org.springframework.stereotype.Service; /** @@ -59,23 +66,25 @@ @Resource private IPaylogService iPaylogService; @Resource private OrderClient orderClient; @Override public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderID, HttpServletRequest request) { public R<Map<String, Object>> getPayInfo(Integer uid, Integer type, String subject, String body, String orderNO,String openId, HttpServletRequest request) { Double price = 0.0; try { if(judgeContainsStr(orderID)){ if(judgeContainsStr(orderNO)){ price= Double.valueOf(1); body = "商品支付"; subject = "商品支付"; body = body; subject = subject; Map<String, Object> map = new HashMap<String, Object>(); if (type == 1) { // 支付宝预下单 return paylogServiceImpl.alipay("1", subject, body, price, request); return paylogServiceImpl.alipay(orderNO, subject, body, price, request); } else { // 微信预下单 return paylogServiceImpl.wxpay(1, "1", body, price, request); return paylogServiceImpl.wxpay(2, orderNO, body,openId, price, request); } } } catch (Exception e) { @@ -114,19 +123,31 @@ params.put(name, valueStr); } Paylog paylog = getPayLog_alipay(request); Paylog paylog1= getPayLog_alipay(request); // 验证成功 if ("TRADE_FINISHED".equals(paylog.getTradeStatus())) { if ("TRADE_FINISHED".equals(paylog1.getTradeStatus())) { System.out.println("AlipayController.notifyUrl__验证成功:success"); // 支付失败 } else if ("TRADE_SUCCESS".equals(paylog.getTradeStatus())) { } else if ("TRADE_SUCCESS".equals(paylog1.getTradeStatus())) { // 支付成功 try { if(judgeContainsStr(paylog.getOutTradeNo())){ LambdaQueryWrapper<Paylog> wrapper = Wrappers.lambdaQuery(); wrapper.eq(Paylog::getOutTradeNo,paylog1.getOutTradeNo()); Paylog one = iPaylogService.getOne(wrapper); if(SinataUtil.isEmpty(one)) { iPaylogService.save(paylog1); if (paylog1.getOutTradeNo().contains("BO")) { BondVO bondVO=new BondVO(); bondVO.setOrderNO(paylog1.getOutTradeNo()); orderClient.UpdateBond(bondVO, SecurityConstants.INNER); } } // ——请根据您的业务逻辑来编写程序(以上代码仅作参考)—— log.debug("AlipayController.notifyUrl__回调处理:success"); out.println("success"); // 请不要修改或删除 @@ -196,6 +217,11 @@ ///////////////////////////// 这里程序处理支付回调逻辑 ///////////////////////////// //////////////////// LambdaQueryWrapper<Paylog> wrapper = Wrappers.lambdaQuery(); wrapper.eq(Paylog::getOutTradeNo,out_trade_no); Paylog one = iPaylogService.getOne(wrapper); if(SinataUtil.isEmpty(one)) { Paylog paylog = new Paylog(); paylog.setOutTradeNo(out_trade_no); paylog.setPayType(2); @@ -206,7 +232,12 @@ System.out.println("支付完成时间" + time_end); paylog.setAddTime(LocalDateTime.now()); iPaylogService.save(paylog); if (judgeContainsStr(paylog.getOutTradeNo())) { if (paylog.getOutTradeNo().contains("BO")) { BondVO bondVO=new BondVO(); bondVO.setOrderNO(paylog.getOutTradeNo()); orderClient.UpdateBond(bondVO, SecurityConstants.INNER); } log.debug("WxpayController.notify__回调处理成功:SUCCESS"); @@ -306,17 +337,17 @@ * @param request * @return */ public static R<Map<String, Object>> wxpay(Integer apptype, String outTradeNo, String body, Double price, public static R<Map<String, Object>> wxpay(Integer apptype, String outTradeNo, String body,String openId, Double price, HttpServletRequest request) { // 获取预支付接口返回参数 Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> appPayMap = new HashMap<String, Object>(); try { // 构建接口请求参数 UnifiedorderReqData unifiedorderReqData = new UnifiedorderReqData(apptype, outTradeNo, body, price, Configure.wx_notify_url); UnifiedorderReqData unifiedorderReqData = new UnifiedorderReqData(outTradeNo, body, price, Configure.wx_notify_url, "JSAPI", openId); // 请求接口获取返回接口 String result = requestUnifiedorderService(apptype, unifiedorderReqData); String result = requestUnifiedorderService(2, unifiedorderReqData); System.out.println(result); System.out.println("WxpayController.createOrder__result:\n" + result); // 获取预支付接口返回参数 @@ -332,7 +363,7 @@ (String) map.get("prepay_id"), unifiedorderReqData.getNonce_str()); // 对获取预支付返回接口参数进行封装(生成支付订单接口数据) appPayMap.put("appid", appPay.getAppid());// 公众账号ID appPayMap.put("appid", appPay.getAppid());// 小程序ID appPayMap.put("nonceStr", appPay.getNoncestr());// 随机字符串(32位) appPayMap.put("package", appPay.get_package());// 扩展字段(暂填写固定值Sign=WXPay) appPayMap.put("partnerId", appPay.getPartnerid());// 商户号 @@ -427,7 +458,6 @@ paylog.setState(1); paylog.setAddTime(LocalDateTime.now()); paylog.setTradeStatus(trade_status.toString()); iPaylogService.save(paylog); return paylog; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/common/Configure.java
@@ -42,7 +42,7 @@ //HTTPS证书的本地路径 private static String certLocalPath; static{//从服务器相对路径中获取 certLocalPath = Configure.class.getClassLoader().getResource("").getPath() + "com/tencent/common/cert/apiclient_cert.p12"; certLocalPath = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12"; } //HTTPS证书密码,默认密码等于商户号MCHID @@ -51,7 +51,7 @@ //HTTPS证书的本地路径 private static String certLocalPath_2; static{//从服务器相对路径中获取 certLocalPath_2 = Configure.class.getClassLoader().getResource("").getPath() + "com/tencent/common/cert_2/apiclient_cert.p12"; certLocalPath_2 = Configure.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert_2/apiclient_cert.p12"; } //HTTPS证书密码,默认密码等于商户号MCHID ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/protocol/UnifiedorderReqData.java
@@ -89,7 +89,7 @@ * @param notify_url 通知地址 * @throws IllegalAccessException */ public UnifiedorderReqData(String out_trade_no, String body, Double total_fee, String notify_url,String trade_type,String openid) throws IllegalAccessException{ /* public UnifiedorderReqData(String out_trade_no, String body, Double total_fee, String notify_url,String trade_type,String openid) throws IllegalAccessException{ //appID与商户号 this.appid = Configure.getGappid(); @@ -115,8 +115,8 @@ // setNotify_url(notify_url);// 通知地址 this.notify_url = notify_url; /*trade_type 交易类型JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里 MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口*/ *//*trade_type 交易类型JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里 MICROPAY--刷卡支付,刷卡支付有单独的支付接口,不调用统一下单接口*//* this.trade_type = trade_type; this.openid = openid; @@ -124,7 +124,7 @@ this.sign = Signature.getSign(1,toMap()); } */ /** * 预支付请求需要的参数(获取微信统一下单-必填参数)(小程序) * 公众账号ID appid (内置) @@ -137,7 +137,7 @@ * @param notify_url 通知地址 * @throws IllegalAccessException */ public UnifiedorderReqData(String out_trade_no, Double total_fee, String notify_url,String trade_type,String openid) throws IllegalAccessException{ public UnifiedorderReqData(String out_trade_no, String body, Double total_fee, String notify_url,String trade_type,String openid) throws IllegalAccessException{ //appID与商户号 this.appid = Configure.getXappid(); @@ -151,7 +151,7 @@ // setBody(body);// 商品描述 this.body = "小程序支付"; this.body = body; // setOut_trade_no(out_trade_no);// 商户订单号 this.out_trade_no = out_trade_no; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/service/BaseService.java
@@ -25,7 +25,6 @@ public BaseService(Integer apptype,String api) throws ClassNotFoundException, IllegalAccessException, InstantiationException { apiURL = api; if (apptype.equals(2)) {//微信小程序和公众号的 Class<?> c = Class.forName(Configure.HttpsRequestClassName_2); serviceRequest = (IServiceRequest) c.newInstance(); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/util/tencent/service/WXPayConfigImpl.java
@@ -16,7 +16,7 @@ private static WXPayConfigImpl INSTANCE; private WXPayConfigImpl() throws Exception{ String certPath = WXPayConfigImpl.class.getClassLoader().getResource("").getPath() + "com/tencent/common/cert/apiclient_cert.p12"; String certPath = WXPayConfigImpl.class.getClassLoader().getResource("").getPath() + "com/ruoyi/order/util/tencent/common/cert/apiclient_cert.p12"; File file = new File(certPath); InputStream certStream = new FileInputStream(file); this.certData = new byte[(int) file.length()]; ruoyi-modules/ruoyi-order/src/main/resources/conf/param.properties
@@ -29,8 +29,8 @@ # 微信支付分配的商户号ID(微信支付商户号) mchID = 1600685974 # 公众号的商户号 GmchID = 1600685974 # 小程序的商户号 XmchID = 1600685974 # 应用对应的密钥(商户平台开发设置) key = E10ADC3949BA59ABBE56E057F20F883E @@ -38,12 +38,8 @@ # 微信回调地址 wx_notify_url = http://116.63.172.131:8088/api/pay/wxpay/notify # 没有公众号支付所以没有后面的参数配置 # 公众号对应的密钥(商户平台开发设置) key_2 = ZTlyynxl24490918687091970bianhao # 公众号的APPID GappID = wx742b6a65ca132418 #公众号的appSecret appSecret = 1baf1d22f695f3a9aa9f59934bcc94fe # 小程序的APPID XappID = wx742b6a65ca132418