| | |
| | | package com.ruoyi.auction.service.impl; |
| | | |
| | | import cn.binarywang.wx.miniapp.api.WxMaService; |
| | | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alipay.api.AlipayApiException; |
| | |
| | | import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomQuery; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionBidRecordVO; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomGoodsVO; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomScreenVO; |
| | | import com.ruoyi.auction.controller.management.vo.MgtAuctionSalesroomVO; |
| | | import com.ruoyi.auction.domain.AuctionBidRecord; |
| | | import com.ruoyi.auction.domain.AuctionSalesroomGoods; |
| | |
| | | import com.ruoyi.auction.service.IAuctionBidRecordService; |
| | | import com.ruoyi.auction.service.IAuctionBrowseRecordService; |
| | | import com.ruoyi.auction.service.IAuctionGoodsService; |
| | | import com.ruoyi.auction.service.IAuctionSalesroomGoodsService; |
| | | 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.enums.AuctionGoodsStatusEnum; |
| | | 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.utils.page.Checker; |
| | | import com.ruoyi.common.core.utils.page.CollUtils; |
| | | import com.ruoyi.common.core.utils.page.PageDTO; |
| | | import com.ruoyi.common.core.web.page.BasePage; |
| | | import com.ruoyi.system.api.domain.AppMiniLoginVO; |
| | | import com.ruoyi.system.api.domain.AuctionGoods; |
| | | import com.ruoyi.system.api.domain.AuctionSalesroom; |
| | |
| | | import com.ruoyi.system.api.domain.Member; |
| | | import com.ruoyi.system.api.domain.OrderAuctionBond; |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.domain.dto.*; |
| | | import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; |
| | | import com.ruoyi.system.api.domain.dto.BidDTO; |
| | | import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomBondDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomDTO; |
| | | import com.ruoyi.system.api.domain.dto.MemberAuctionSalesroomWdDTO; |
| | | import com.ruoyi.system.api.domain.dto.RefundDTO; |
| | | import com.ruoyi.system.api.domain.vo.PayInfoVO; |
| | | import com.ruoyi.system.api.domain.vo.WdMemberAuctionSalesroomVO; |
| | | import com.ruoyi.system.api.feignClient.GoodsSkuClient; |
| | |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import java.math.BigDecimal; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.function.Function; |
| | | import java.util.stream.Collectors; |
| | | import javax.annotation.Resource; |
| | |
| | | @Resource |
| | | private SysUserClient sysUserClient; |
| | | |
| | | // @Resource |
| | | // private WxMaService wxMaService; |
| | | @Resource |
| | | private WxMaService wxMaService; |
| | | |
| | | @Resource |
| | | private AuctionSalesroomGoodsMapper auctionSalesroomGoodsMapper; |
| | | |
| | | |
| | | @Resource |
| | | private IAuctionGoodsService auctionGoodsService; |
| | |
| | | |
| | | @Resource |
| | | private OrderClient orderClient; |
| | | |
| | | @Resource |
| | | private MemberClient memberClient; |
| | | |
| | |
| | | String openid; |
| | | String sessionKey = null; |
| | | //获取session |
| | | // session = wxMaService.getUserService().getSessionInfo(appMiniLoginDto.getCode()); |
| | | session = wxMaService.getUserService().getSessionInfo(appMiniLoginDto.getCode()); |
| | | if (session != null && StringUtils.isNotBlank(session.getOpenid())) { |
| | | unionid = session.getUnionid(); |
| | | openid = session.getOpenid(); |
| | |
| | | // 获取拍卖场商品 |
| | | LambdaQueryWrapper<AuctionSalesroomGoods> wrappers=new LambdaQueryWrapper<AuctionSalesroomGoods>(); |
| | | wrappers.eq(AuctionSalesroomGoods::getAuctionSalesroomId, id); |
| | | wrappers.orderByDesc(AuctionSalesroomGoods::getSortNum); |
| | | List<AuctionSalesroomGoods> list = auctionSalesroomGoodsMapper.selectList(wrappers); |
| | | if (StringUtils.isNotEmpty(list)) { |
| | | List<MgtAuctionSalesroomGoodsVO> mgtAuctionSalesroomGoodsVOS = BeanUtils.copyList(list, |
| | |
| | | GoodsSku goodsSku = goodsSkuMap.get(vo.getGoodsSkuId()); |
| | | if (StringUtils.isNotNull(goodsSku)) { |
| | | vo.setGoodsSkuName(goodsSku.getSkuName()); |
| | | vo.setSpec(goodsSku.getSpec()); |
| | | } |
| | | } |
| | | mgtAuctionSalesroomVO.setAuctionSalesroomGoodsVOS(mgtAuctionSalesroomGoodsVOS); |
| | |
| | | } |
| | | return mgtAuctionBidRecordVOPageDTO; |
| | | } |
| | | |
| | | /** |
| | | * 大屏操作台分页查询拍卖场 |
| | | * |
| | | * @param query 拍卖场查询对象 |
| | | * @return PageDTO<MgtAuctionSalesroomVO> |
| | | */ |
| | | @Override |
| | | public PageDTO<MgtAuctionSalesroomVO> getAuctionSalesroom4ScreenPage( |
| | | MgtAuctionSalesroomQuery query) { |
| | | // 分页查询 |
| | | Page<AuctionSalesroom> page = this.lambdaQuery() |
| | | .select(AuctionSalesroom::getId, AuctionSalesroom::getSalesroomName, |
| | | AuctionSalesroom::getStartTime, AuctionSalesroom::getStatus) |
| | | .like(StringUtils.isNotEmpty(query.getSalesroomName()), |
| | | AuctionSalesroom::getSalesroomName, query.getSalesroomName()) |
| | | .eq(StringUtils.isNotNull(query.getStatus()), AuctionSalesroom::getStatus, |
| | | query.getStatus()) |
| | | .ne(AuctionSalesroom::getStatus, AuctionStartStatusEnum.ENDED) |
| | | .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); |
| | | } |
| | | return PageDTO.of(page, MgtAuctionSalesroomVO.class); |
| | | } |
| | | |
| | | /** |
| | | * 进入详情 |
| | | * |
| | | * @param id 拍卖会id |
| | | * @param basePage |
| | | * @return 大屏操作台拍卖场视图对象 |
| | | */ |
| | | @Override |
| | | public MgtAuctionSalesroomScreenVO getAuctionSalesroomDetail(Long id, BasePage basePage) { |
| | | MgtAuctionSalesroomVO mgtAuctionSalesroomVO = this.getAuctionSalesroom(id); |
| | | MgtAuctionSalesroomScreenVO vo = BeanUtils.copyBean( |
| | | mgtAuctionSalesroomVO, MgtAuctionSalesroomScreenVO.class); |
| | | if (vo.getStatus().equals(AuctionStartStatusEnum.IN_AUCTION)) { |
| | | List<MgtAuctionSalesroomGoodsVO> auctionSalesroomGoodsVOS = vo.getAuctionSalesroomGoodsVOS(); |
| | | List<MgtAuctionSalesroomGoodsVO> collect = auctionSalesroomGoodsVOS.stream() |
| | | .peek(goods -> { |
| | | List<AuctionBidRecord> list = auctionBidRecordService.lambdaQuery() |
| | | .eq(AuctionBidRecord::getTargetId, goods.getId()) |
| | | .eq(AuctionBidRecord::getAuctionType, |
| | | AuctionOrderTypeEnum.AUCTION_ITEMS) |
| | | .list(); |
| | | if (StringUtils.isNotEmpty(list)) { |
| | | long bidCount = list.stream() |
| | | .filter(item -> BidStatusEnum.SUCCESSFUL.equals( |
| | | item.getStatus())) |
| | | .count(); |
| | | goods.setBidCount((int) bidCount); |
| | | goods.setBidQuantity((int) bidCount); |
| | | goods.setBidPersonCount(list.size()); |
| | | } |
| | | if (goods.getStatus().equals(AuctionGoodsStatusEnum.IN_PROGRESS)) { |
| | | vo.setCurrentAuctionSalesroomGoods(goods); |
| | | } |
| | | }).collect(Collectors.toList()); |
| | | vo.setAuctionSalesroomGoodsVOS(collect); |
| | | if (StringUtils.isNotNull(vo.getCurrentAuctionSalesroomGoods())) { |
| | | int index = collect.indexOf(vo.getCurrentAuctionSalesroomGoods()); |
| | | vo.setNextAuctionSalesroomGoods(collect.get(index + 1)); |
| | | // 分页查询当前拍品出价信息 |
| | | Page<AuctionBidRecord> page = auctionBidRecordService.lambdaQuery() |
| | | .eq(AuctionBidRecord::getTargetId, |
| | | vo.getCurrentAuctionSalesroomGoods().getId()) |
| | | .eq(AuctionBidRecord::getAuctionType, |
| | | AuctionOrderTypeEnum.AUCTION_ITEMS) |
| | | .page(new Page<>(basePage.getPageCurr(), basePage.getPageSize())); |
| | | if (StringUtils.isNotEmpty(page.getRecords())) { |
| | | vo.setMgtAuctionBidRecordVOPageDTO(PageDTO.empty(page)); |
| | | } |
| | | vo.setMgtAuctionBidRecordVOPageDTO(PageDTO.of(page, MgtAuctionBidRecordVO.class)); |
| | | } else { |
| | | vo.setNextAuctionSalesroomGoods(collect.get(0)); |
| | | } |
| | | } |
| | | return vo; |
| | | } |
| | | } |