From c8a21748f87bc0a23744d9fee5dec3eaaa403fdc Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 11 六月 2024 18:59:51 +0800 Subject: [PATCH] 1.提交【管理后台】-资讯管理相关接口 --- ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java | 183 ++++++++++++++++++++++++++++++--------------- 1 files changed, 121 insertions(+), 62 deletions(-) diff --git a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java index b1379ab..1021e7c 100644 --- a/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java +++ b/ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java @@ -1,25 +1,20 @@ package com.ruoyi.auction.service.impl; import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.TypeReference; import com.alibaba.fastjson.parser.Feature; import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; -import com.alipay.api.DefaultAlipayClient; import com.alipay.api.internal.util.AlipayEncrypt; import com.alipay.api.internal.util.AlipaySignature; -import com.alipay.api.request.AlipaySystemOauthTokenRequest; -import com.alipay.api.request.AlipayUserInfoShareRequest; -import com.alipay.api.response.AlipaySystemOauthTokenResponse; -import com.alipay.api.response.AlipayUserInfoShareResponse; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Lists; +import com.google.zxing.WriterException; import com.ruoyi.auction.controller.management.dto.MgtAuctionSaleroomBidRecordQuery; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomDTO; import com.ruoyi.auction.controller.management.dto.MgtAuctionSalesroomGoodsDTO; @@ -33,6 +28,7 @@ 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.AuctionBrowseRecord; import com.ruoyi.auction.domain.AuctionSalesroomGoods; import com.ruoyi.auction.domain.AuctionVideo; import com.ruoyi.auction.mapper.AuctionBidRecordMapper; @@ -60,6 +56,7 @@ 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.security.utils.SecurityUtils; import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.AuctionGoods; import com.ruoyi.system.api.domain.AuctionSalesroom; @@ -69,13 +66,14 @@ import com.ruoyi.system.api.domain.PromotionVideo; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.domain.dto.AppMiniLoginDTO; -import com.ruoyi.system.api.domain.dto.AuctionSalesroomGoodsDTO; +import com.ruoyi.system.api.domain.dto.AuctionSalesroomDTO; import com.ruoyi.system.api.domain.dto.BidDTO; import com.ruoyi.system.api.domain.dto.ForepartAuctionBidRecordDTO; 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.OrderAuctionBondDTO; import com.ruoyi.system.api.domain.dto.RefundDTO; import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomGoodsVO; import com.ruoyi.system.api.domain.vo.ForepartAuctionSalesroomVO; @@ -89,6 +87,7 @@ import com.ruoyi.system.api.feignClient.PromotionClient; import com.ruoyi.system.api.feignClient.SysUserClient; import io.seata.spring.annotation.GlobalTransactional; +import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.ArrayList; @@ -202,17 +201,16 @@ @Override - public PageDTO<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { - Page<AuctionSalesroom> page = new Page<>(ationSalesroomGoodsDTO.getPageCurr(), ationSalesroomGoodsDTO.getPageSize()); + public List<AuctionSalesroom> getAuctionBidRecordList(AuctionSalesroomDTO ationSalesroomGoodsDTO) { LambdaQueryWrapper<AuctionSalesroom> wrapper=Wrappers.lambdaQuery(); wrapper.eq(AuctionSalesroom::getSalesroomName,ationSalesroomGoodsDTO.getSalesroomName()); wrapper.eq(AuctionSalesroom::getDelFlag,0); - Page<AuctionSalesroom> page1 = this.page(page, wrapper); - return PageDTO.of(page1); + List<AuctionSalesroom> page1 = this.list(wrapper); + return page1; } @Override - public ForepartAuctionSalesroomVO getBaaner(AuctionSalesroomGoodsDTO ationSalesroomGoodsDTO) { + public ForepartAuctionSalesroomVO getBaaner(AuctionSalesroomDTO ationSalesroomGoodsDTO) { LambdaQueryWrapper<AuctionVideo> wrapper=Wrappers.lambdaQuery(); wrapper.eq(AuctionVideo::getAuctionSalesroomId,ationSalesroomGoodsDTO.getAuctionSalesroomId()); wrapper.eq(AuctionVideo::getDelFlag,0); @@ -233,12 +231,10 @@ public AuctionSalesroom getAuctionBidRecordOne(ForepartAuctionBidRecordDTO arepartAuctionBidRecordDTO) { R<SysUser> r=sysUserClient.queryUserByPhone(arepartAuctionBidRecordDTO.getPhone()); SysUser sysUser=r.getData(); - - if (sysUser!=null){ + if (sysUser==null){ throw new ServiceException("手机号未注册"); } - - if (!sysUser.getPassword().equals(arepartAuctionBidRecordDTO.getPassword())){ + if (!SecurityUtils.matchesPassword(arepartAuctionBidRecordDTO.getPassword(), sysUser.getPassword())){ throw new ServiceException("密码输入错误"); } @@ -255,48 +251,6 @@ if (appMiniLoginDto.getType()==1) { if (appMiniLoginDto.getAuth_code() == null || appMiniLoginDto.getAuth_code().length() == 0) { } else { - /* AppMiniLoginVO user=new AppMiniLoginVO(); - //String serverUrl, String appId, String privateKey, String format,String charset, String alipayPublicKey, String signType - //实例化客户端 参数:正式环境URL,Appid,商户私钥 PKCS8格式,字符编码格式,字符格式,支付宝公钥,签名方式 - AlipayClient alipayClient = new DefaultAlipayClient(ALIPAY_BORDER_PROD,APP_ID_PROD, APP_PRIVATE_KEY, "json", "GBK", ALIPAY_PUBLIC_KEY, "RSA2"); - AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest(); - // 值为authorization_code时,代表用code换取 - request.setGrantType("authorization_code"); - //授权码,用户对应用授权后得到的 - request.setCode(appMiniLoginDto.getAuth_code()); - //这里使用execute方法 - AlipaySystemOauthTokenResponse response = null; - try { - response = alipayClient.execute(request); - } catch (AlipayApiException e) { - throw new RuntimeException(e); - } - //刷新令牌,上次换取访问令牌时得到。见出参的refresh_token字段 - - //返回成功时 就将唯一标识返回 - if (response.isSuccess()) { - System.out.println("调用成功"); - //我这里只返回了一个字段给前端用 - String user1= response.getOpenId(); - appMiniLoginVo.setZfbuserid(response.getOpenId()); - AlipayUserInfoShareResponse alipayUserInfoShareResponse= null; - try { - AlipayUserInfoShareRequest request1 = new AlipayUserInfoShareRequest(); - AlipayUserInfoShareResponse response1 = alipayClient.execute(request1, response.getAccessToken()); - appMiniLoginVo.setPhone(response1.getPhone()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - R<SysUser> sysUserR = sysUserClient.queryUserByPhone(alipayUserInfoShareResponse.getPhone()); - SysUser data = sysUserR.getData(); - appMiniLoginVo.setSysUser(data); - } - }*/ - - - String response = JSON.parseObject(appMiniLoginDto.getAuth_code()).getString("response"); - //1. 获取验签和解密所需要的参数 Map<String, String> openapiResult = JSON.parseObject(appMiniLoginDto.getAuth_code(), new TypeReference<Map<String, String>>() { @@ -340,6 +294,14 @@ plainData = content; } + Map<String, String> openapiResult1 = JSON.parseObject(plainData, + new TypeReference<Map<String, String>>() { + }, Feature.OrderedField); + + R<SysUser> sysUserR = sysUserClient.queryUserByPhone(openapiResult1.get("mobile")); + SysUser data = sysUserR.getData(); + appMiniLoginVo.setSysUser(data); + appMiniLoginVo.setPhone(openapiResult1.get("mobile")); } }else{ @@ -449,7 +411,7 @@ forepartAuctionSalesroomGoodsVO.setCoverPic(goodsSku.getCoverPic()); forepartAuctionSalesroomGoodsVO.setStartingPrice(salesroomGoods.getStartingPrice()); forepartAuctionSalesroomGoodsVO.setSalesroomStock(salesroomGoods.getSalesroomStock()); - forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus().getCode()); + forepartAuctionSalesroomGoodsVO.setGoodsSkustatus(salesroomGoods.getStatus()); forepartAuctionSalesroomGoodsVO.setYears(String.valueOf(goodsSku.getYears())); LambdaQueryWrapper<AuctionBidRecord> wrapper1=Wrappers.lambdaQuery(); wrapper1.eq(AuctionBidRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId()); @@ -471,6 +433,27 @@ forepartAuctionSalesroomGoodsVOS.add(forepartAuctionSalesroomGoodsVO); } memberAuctionSalesroomInfoVO.setForepartAuctionSalesroomGoodsVO(forepartAuctionSalesroomGoodsVOS); + + + LocalDateTime now = LocalDateTime.now(); + LocalDateTime newTime7 = now.minusDays(7); + + LambdaQueryWrapper<AuctionBrowseRecord> wrapper3=Wrappers.lambdaQuery(); + wrapper3.eq(AuctionBrowseRecord::getDelFlag,0); + wrapper3.eq(AuctionBrowseRecord::getTargetId,memberAuctionSalesroomDTO.getAuctionSalesroomId()); + wrapper3.eq(AuctionBrowseRecord::getMemberId,memberAuctionSalesroomDTO.getMemberId()); + wrapper3.ge(AuctionBrowseRecord::getCreateTime, now) + .le(AuctionBrowseRecord::getCreateTime, newTime7); + List<AuctionBrowseRecord> list = iAuctionBrowseRecordService.list(wrapper3); + if (list.size()==0){ + AuctionBrowseRecord auctionBrowseRecord=new AuctionBrowseRecord(); + auctionBrowseRecord.setBrowseType(AuctionOrderTypeEnum.AUCTION_ITEMS); + auctionBrowseRecord.setMemberId(memberAuctionSalesroomDTO.getMemberId()); + auctionBrowseRecord.setTargetId(memberAuctionSalesroomDTO.getAuctionSalesroomId()); + iAuctionBrowseRecordService.save(auctionBrowseRecord); + } + + return memberAuctionSalesroomInfoVO; } @@ -744,7 +727,8 @@ @Override @Transactional @GlobalTransactional(rollbackFor = Exception.class) - public void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto) { + public void saveAuctionSalesroom(MgtAuctionSalesroomDTO dto) + throws IOException, WriterException { Long id = dto.getId(); AuctionSalesroom auctionSalesroom = BeanUtils.copyBean(dto, AuctionSalesroom.class); List<MgtAuctionSalesroomGoodsDTO> auctionSalesroomGoodsDTOS = dto.getAuctionSalesroomGoodsDTOS(); @@ -772,6 +756,8 @@ // 生成唯一编号 Long nextId = IDhelper.getNextId(); auctionSalesroom.setAuctionSalesroomNo(nextId.toString()); + String qrCodeToObs = CreateQrCode.createQRCodeToObs(nextId.toString()); + auctionSalesroom.setQrCode(qrCodeToObs); // 添加 this.save(auctionSalesroom); List<GoodsStockUpdDTO> goodsStockUpdDTOS = auctionSalesroomGoods.stream().map(item -> { @@ -817,7 +803,7 @@ .eq(AuctionSalesroomGoods::getAuctionSalesroomId, id)); } for (AuctionSalesroomGoods auctionSalesroomGood : auctionSalesroomGoods) { - auctionSalesroomGood.setAuctionSalesroomId(id); + auctionSalesroomGood.setAuctionSalesroomId(auctionSalesroom.getId()); } // 添加拍卖商品 for (AuctionSalesroomGoods auctionSalesroomGoodss:auctionSalesroomGoods){ @@ -877,7 +863,7 @@ MgtAuctionSalesroomVO.class); List<AuctionSalesroomGoods> list; if (isScreen) { - list = getAuctionSalesroomGoods(id, Boolean.TRUE); + list = getAuctionSalesroomGoods(id, Boolean.FALSE); } else { list = getAuctionSalesroomGoods(id, null); } @@ -1220,9 +1206,82 @@ iAuctionVideoService.save(auctionVideo); } + /** + * 结束播放 + * + * @param auctionSalesroomId 拍卖场id + */ @Override public void stopPlay(Long auctionSalesroomId) { iAuctionVideoService.remove(Wrappers.<AuctionVideo>lambdaQuery().eq (AuctionVideo::getAuctionSalesroomId, 1L)); } + + /** + * 开始当前拍卖场 + * + * @param auctionSalesroomId 拍卖场id + */ + @Override + public void startCurrentAuctionSalesroom(Long auctionSalesroomId) { + // 修改拍卖场开始状态 + AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId); + auctionSalesroom.setStatus(AuctionStartStatusEnum.IN_AUCTION); + auctionSalesroom.setStartTime(LocalDateTime.now()); + auctionSalesroomMapper.updateById(auctionSalesroom); + // 修改拍卖商品开始状态 + LambdaQueryWrapper<AuctionSalesroomGoods> wrapper = Wrappers.lambdaQuery(); + wrapper.eq(AuctionSalesroomGoods::getStatus, AuctionGoodsStatusEnum.WAITING); + wrapper.eq(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomId); + wrapper.orderByDesc(AuctionSalesroomGoods::getSortNum); + wrapper.last("limit 1"); + AuctionSalesroomGoods auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectOne( + wrapper); + auctionSalesroomGoods.setStatus(AuctionGoodsStatusEnum.IN_PROGRESS); + auctionSalesroomGoods.setStartTime(LocalDateTime.now()); + auctionSalesroomGoodsMapper.updateById(auctionSalesroomGoods); + } + + @Override + @GlobalTransactional(rollbackFor = Exception.class) + @Transactional + public void stopCurrentAuctionSalesroom(Long auctionSalesroomId) { + // 修改拍卖场开始状态 + AuctionSalesroom auctionSalesroom = this.getById(auctionSalesroomId); + auctionSalesroom.setStatus(AuctionStartStatusEnum.ENDED); + auctionSalesroom.setEndTime(LocalDateTime.now()); + auctionSalesroomMapper.updateById(auctionSalesroom); + LambdaQueryWrapper<AuctionSalesroomGoods> wrapper = Wrappers.lambdaQuery(); + wrapper.eq(AuctionSalesroomGoods::getStatus, AuctionGoodsStatusEnum.WAITING); + wrapper.eq(AuctionSalesroomGoods::getAuctionSalesroomId, auctionSalesroomId); + wrapper.orderByDesc(AuctionSalesroomGoods::getSortNum); + List<AuctionSalesroomGoods> auctionSalesroomGoods = auctionSalesroomGoodsMapper.selectList( + wrapper); + if (StringUtils.isNotEmpty(auctionSalesroomGoods)) { + List<GoodsStockUpdDTO> dtoList = new ArrayList<>(); + for (AuctionSalesroomGoods salesroomGoods : auctionSalesroomGoods) { + salesroomGoods.setStatus(AuctionGoodsStatusEnum.ENDED); + GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); + goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId()); + goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock()); + dtoList.add(goodsStockUpdDTO); + } + // 批量更新商品库存 + auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods); + goodsSkuClient.updGoodsStock(dtoList, SecurityConstants.INNER); + } + // 退保证金 + List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList( + Wrappers.<AuctionBidRecord>lambdaQuery() + .eq(AuctionBidRecord::getAuctionSalesroomId, auctionSalesroomId) + .eq(AuctionBidRecord::getStatus, BidStatusEnum.ELIMINATE)); + List<Long> memberIdlist = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId) + .collect(Collectors.toList()); + if (StringUtils.isNotEmpty(memberIdlist)) { + OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO(); + orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId()); + orderAuctionBondDTO.setUserList(memberIdlist); + orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER); + } + } } -- Gitblit v1.7.1