ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionGoods.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -58,6 +59,7 @@ private Integer auctionStock; @ApiModelProperty(value = "保证金") @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) private BigDecimal bond; @ApiModelProperty(value = "实名认证 0=不需实名 1=需要实名") ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/AuctionSalesroom.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -51,6 +52,7 @@ private AuctionTypeEnum type; @ApiModelProperty(value = "保证金") @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) private BigDecimal bond; @ApiModelProperty(value = "实名认证 0=不需认证 1=需要实名") ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsSku.java
@@ -1,6 +1,7 @@ package com.ruoyi.system.api.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -92,6 +93,7 @@ private String detail; @ApiModelProperty(value = "排序") @TableField(updateStrategy = FieldStrategy.IGNORED, insertStrategy = FieldStrategy.IGNORED) private Integer sortNum; @ApiModelProperty(value = "上架状态 0=上架中 1= 已下架") ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderDTO.java
@@ -4,10 +4,9 @@ import com.ruoyi.common.core.enums.OrderFromEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; import java.time.LocalDateTime; import lombok.Data; @Data @ApiModel(value = "订单传输对象", description = "订单传输对象") @@ -72,6 +71,7 @@ @ApiModelProperty(value = "积分") private Integer points; @ApiModelProperty("失效时间") private LocalDateTime orderTimeSx; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderUpdDTO.java
@@ -90,5 +90,7 @@ @ApiModelProperty(value = "开票状态 开票状态 1 待开票,2待审核,3 已开票,4 拒绝") private Integer invoiceStatus; @ApiModelProperty(value = "是否显示订单 1显示,2 不显示") private Integer isOrder; } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/OrderFallbackFactory.java
@@ -146,7 +146,17 @@ @Override public R<?> autoCancelOrder(Long id, String source) { return null; return R.fail("自动取消订单失败" + cause.getMessage()); } @Override public R<List<Order>> getOrderListByMubres(List<String> mubres, String source) { return R.fail("根据团购唯一表示获取订单列表失败" + cause.getMessage()); } @Override public R<?> updateOrderStatusByMubres(List<String> formedGroupMubres, String source) { return R.fail("修改订单展示状态失败" + cause.getMessage()); } }; ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/OrderClient.java
@@ -183,4 +183,12 @@ @PutMapping("/order/autoCancelOrder/{id}") R<?> autoCancelOrder(@PathVariable("id") Long id, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/order/getOrderListByMubres") R<List<Order>> getOrderListByMubres(@RequestBody List<String> mubres, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); @PostMapping("/order/updOrderStatusByMubres") R<?> updateOrderStatusByMubres(@RequestBody List<String> formedGroupMubres, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); } ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/feignClient/SysUserClient.java
@@ -95,7 +95,7 @@ @GetMapping("/custom-config/{configId}") R<CustomConfig> getconfig(@PathVariable("configId") String configId); @GetMapping("/user/list-by-name") @PostMapping("/user/list-by-name") R<List<SysUser>> getUserListByName(@RequestBody SysUser sysUser, @RequestHeader(SecurityConstants.FROM_SOURCE) String source); ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/controller/management/MgtArticleController.java
@@ -125,4 +125,12 @@ articleService.removeById(id); return R.ok(); } @ApiOperation("删除资讯评论") @DeleteMapping("/comments/{id}") public R<?> removeCommentsById( @ApiParam(name = "id", value = "资讯评论id", required = true) @PathVariable("id") Long id) { articleService.removeCommentsById(id); return R.ok(); } } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/IArticleService.java
@@ -78,4 +78,6 @@ * @param dto 资讯上下架数据传输对象 */ void updStatus(MgtArticleUpdDTO dto); void removeCommentsById(Long id); } ruoyi-modules/ruoyi-article/src/main/java/com/ruoyi/article/service/impl/ArticleServiceImpl.java
@@ -29,6 +29,7 @@ import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; import com.ruoyi.common.core.utils.page.CollUtils; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.SysUser; @@ -36,7 +37,6 @@ import com.ruoyi.system.api.feignClient.MemberClient; import com.ruoyi.system.api.feignClient.SysUserClient; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -46,6 +46,7 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -344,15 +345,19 @@ user.setPhonenumber(query.getPhone()); List<SysUser> sysUserList = sysUserClient.getUserListByName(user, SecurityConstants.INNER).getData(); if (CollUtils.isNotEmpty(sysUserList)) { sysUserIdSet = sysUserList.stream().map(SysUser::getUserId) .collect(Collectors.toSet()); } MemberDTO memberDTO = new MemberDTO(); memberDTO.setNickname(query.getCreateBy()); memberDTO.setPhone(query.getPhone()); List<Member> memberlist = memberClient.getMemberListByCondition(memberDTO, SecurityConstants.INNER).getData(); memberIdSet = memberlist.stream().map(Member::getId) if (CollUtils.isNotEmpty(memberlist)) { memberIdSet = memberlist.stream().map(Member::getId) .collect(Collectors.toSet()); } if (StringUtils.isEmpty(sysUserIdSet) && StringUtils.isEmpty(memberIdSet)) { return PageDTO.empty(page); } @@ -361,11 +366,16 @@ page = this.lambdaQuery() .in(StringUtils.isNotEmpty(sysUserIdSet), Article::getCreateBy, sysUserIdSet) .or() .in(StringUtils.isNotEmpty(memberIdSet), Article::getMemberId, memberIdSet) .eq(StringUtils.isNotNull(query.getListingStatus()), Article::getListingStatus, query.getListingStatus()) .eq(StringUtils.isNotNull(query.getArticleType()), Article::getArticleType, query.getArticleType()) .in(StringUtils.isNotNull(query.getArticleType()) && query.getArticleType() .equals(ArticleTypeEnum.USER_POSTING), Article::getStatus, Lists.newArrayList(AuditStatusEnum.TO_BE_REVIEWED, AuditStatusEnum.REJECTED)) .like(StringUtils.isNotBlank(query.getTitle()), Article::getTitle, query.getTitle()) .orderByDesc(Article::getReported) .page(new Page<>(query.getPageCurr(), query.getPageSize())); @@ -488,7 +498,12 @@ if (StringUtils.isNull(article)) { throw new ServiceException("资讯不存在"); } return BeanUtils.copyBean(article, MgtArticleVO.class); MgtArticleVO mgtArticleVO = BeanUtils.copyBean(article, MgtArticleVO.class); long count = articleCommentsService.count( Wrappers.lambdaQuery(ArticleComments.class).eq(ArticleComments::getArticleId, id) .eq(ArticleComments::getType, 1)); mgtArticleVO.setCommentCount((int) count); return mgtArticleVO; } /** @@ -519,4 +534,25 @@ this.lambdaUpdate().set(Article::getListingStatus, dto.getListingStatus()) .eq(Article::getId, dto.getId()).update(); } @Override @Transactional(rollbackFor = Exception.class) public void removeCommentsById(Long id) { ArticleComments articleComments = articleCommentsService.getById(id); if (StringUtils.isNull(articleComments)) { throw new ServiceException("评论/回复不存在"); } articleCommentsService.removeById(id); // 评论 if (articleComments.getType().equals(1)) { // 查询回复 List<ArticleComments> replyList = articleCommentsService.lambdaQuery() .eq(ArticleComments::getReplyId, id).list(); if (StringUtils.isNotEmpty(replyList)) { List<Long> replyIds = replyList.stream().map(ArticleComments::getId) .collect(Collectors.toList()); articleCommentsService.removeByIds(replyIds); } } } } ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/domain/AuctionSalesroomGoods.java
@@ -1,6 +1,7 @@ package com.ruoyi.auction.domain; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.FieldStrategy; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -53,6 +54,7 @@ private Integer salesroomStock; @ApiModelProperty(value = "兜底成交个数") @TableField(insertStrategy = FieldStrategy.IGNORED, updateStrategy = FieldStrategy.IGNORED) private Integer guaranteedTradeVolume; @ApiModelProperty(value = "拍卖时间(分钟)") ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -354,6 +354,7 @@ orderDTO.setPrice(goodsSku.getPrice()); orderDTO.setSkuName(goodsSku.getSkuName()); } orderDTO.setOrderTimeSx(auctionGoods.getEndTime()); orderClient.saveOrderOne(orderDTO, SecurityConstants.INNER); } else { // 没有人出价,退回拍卖商品库存 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/vo/GoodsSeckillVO.java
@@ -37,6 +37,9 @@ @ApiModelProperty(value = "秒杀价格") private BigDecimal seckillPrice; @ApiModelProperty(value = "商品库存") private Integer goodsSkuStock; @ApiModelProperty(value = "已售数量") private Integer soldQuantity; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -25,6 +25,7 @@ import com.ruoyi.goods.controller.management.vo.GoodsGroupPurchaseVO; import com.ruoyi.goods.domain.MemberGoodsCollection; import com.ruoyi.goods.mapper.GoodsGroupPurchaseMapper; import com.ruoyi.goods.service.IGoodsGroupPurchaseInfoService; import com.ruoyi.goods.service.IGoodsGroupPurchaseService; import com.ruoyi.goods.service.IGoodsSkuService; import com.ruoyi.goods.service.IMemberGoodsCollectionService; @@ -51,7 +52,6 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import javax.annotation.Resource; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -75,9 +75,7 @@ private final RedisService redisService; private final IMemberGoodsCollectionService iMemberGoodsCollectionService; private final SysUserClient sysUserClient; @Resource private GoodsGroupPurchaseInfoServiceImpl GoodsGroupPurchaseInfoServiceImpl; private final IGoodsGroupPurchaseInfoService goodsGroupPurchaseInfoService; // 创建一个静态共享的ObjectMapper实例以重用 private static final ObjectMapper objectMapper = new ObjectMapper(); /** @@ -101,6 +99,7 @@ @Override public void saveGoodsGroupPurchase(GoodsGroupPurchaseDTO dto) { GoodsGroupPurchase goodsGroupPurchase = BeanUtils.copyBean(dto, GoodsGroupPurchase.class); goodsGroupPurchase.setListingStatus(ListingStatusEnum.ON_SHELVES); if (StringUtils.isNull(dto.getId())) { if (StringUtils.isNull(dto.getGoodsSkuId())) { throw new ServiceException("商品id不能为空"); @@ -204,6 +203,12 @@ + groupPurchase.getId()); redisService.deleteObject( DelayTaskEnum.GROUP_PURCHASES_END_TASK.getCode() + "-" + groupPurchase.getId()); // 退回剩余库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setAuctionStock( groupPurchase.getLimitNumber() * groupPurchase.getGroupSize()); goodsStockUpdDTO.setGoodsSkuId(groupPurchase.getGoodsSkuId()); goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); } //修改状态 groupPurchase.setListingStatus(dto.getListingStatus()); @@ -253,10 +258,12 @@ public void endGroupPurchase(Long groupPurchaseId) throws JsonProcessingException { log.info(">>>>>>>>>>>>>>>>>>>>{}团购商品结束团购<<<<<<<<<<<<<<<<<<<<", groupPurchaseId); GoodsGroupPurchase groupPurchase = this.getById(groupPurchaseId); if (StringUtils.isNotNull(groupPurchase) && groupPurchase.getStartStatus() .equals(StartStatusEnum.STARTED)) { this.lambdaUpdate().set(GoodsGroupPurchase::getStartStatus, StartStatusEnum.ENDED) .eq(GoodsGroupPurchase::getId, groupPurchaseId).update(); boolean res = handleGroupPurchase(groupPurchaseId); if (StringUtils.isNotNull(groupPurchase)) { groupPurchase.setStartStatus(StartStatusEnum.ENDED); groupPurchase.setGroupStatus( res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE); this.updateById(groupPurchase); Map<String, Object> map = new ConcurrentHashMap<>(); map.put("notification_type", NotificationTypeConstant.GROUP_PURCHASE); map.put("notification_time", DateUtils.dateTimeNow("yyyy-MM-dd HH:mm:ss")); @@ -280,13 +287,26 @@ if (StringUtils.isNull(groupPurchase)) { throw new ServiceException("团购商品不存在"); } //判断商品状态,未成团则查询关联订单,进行退款;成团就直接修改状态 if (groupPurchase.getGroupStatus().equals(GroupStatusEnum.TO_FORM_A_GROUP)) { //查询关联订单 List<Order> orderList = orderClient.getOrderByGroupPurchaseId(id, // 处理未成团订单退款和成团订单修改展示状态 boolean res = handleGroupPurchase(id); groupPurchase.setGroupStatus( res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE); groupPurchase.setStartStatus(StartStatusEnum.ENDED); this.updateById(groupPurchase); } private boolean handleGroupPurchase(Long id) { List<GoodsGroupPurchaseInfo> groupPurchaseInfoList = goodsGroupPurchaseInfoService.lambdaQuery() .eq(GoodsGroupPurchaseInfo::getGroupPurchaseId, id).list(); if (CollUtils.isNotEmpty(groupPurchaseInfoList)) { List<String> mubres = groupPurchaseInfoList.stream() .filter(g -> g.getCurrentNumber() < g.getGroupSize()) .map(GoodsGroupPurchaseInfo::getMubre).collect( Collectors.toList()); List<Order> orderList = orderClient.getOrderListByMubres(mubres, SecurityConstants.INNER).getData(); if (CollUtils.isNotEmpty(orderList)) { List<RefundDTO> refundDTOList = orderList.stream().map(order -> { RefundDTO refundDTO = new RefundDTO(); refundDTO.setOrderNo(order.getOrderNo()); @@ -307,6 +327,15 @@ failedOrders.add(key); } }); try { log.info( "============ =================退款结束============================="); log.info("退款成功订单:{}", objectMapper.writeValueAsString(successfulOrders)); log.info("退款失败订单:{}", objectMapper.writeValueAsString(failedOrders)); } catch (JsonProcessingException e) { throw new RuntimeException(e); } // 处理退款结果 List<Order> updateOrderList = orderList.stream() .filter(order -> successfulOrders.contains(order.getOrderNo())) @@ -318,10 +347,17 @@ orderClient.updateOrderList(orderUpdDTOS, SecurityConstants.INNER); } } groupPurchase.setGroupStatus(GroupStatusEnum.GROUP_FAILURE); List<String> formedGroupMubres = groupPurchaseInfoList.stream() .filter(g -> g.getCurrentNumber() >= g.getGroupSize()) .map(GoodsGroupPurchaseInfo::getMubre).collect( Collectors.toList()); if (CollUtils.isNotEmpty(formedGroupMubres)) { orderClient.updateOrderStatusByMubres(formedGroupMubres, SecurityConstants.INNER); return true; } } groupPurchase.setStartStatus(StartStatusEnum.ENDED); this.updateById(groupPurchase); return false; } @Override @@ -354,7 +390,7 @@ wrapper6.eq(GoodsGroupPurchaseInfo::getDelFlag,0); wrapper6.eq(GoodsGroupPurchaseInfo::getGroupStatus,0); wrapper6.eq(GoodsGroupPurchaseInfo::getGroupPurchaseId,one.getId()); GoodsGroupPurchaseInfo one1 = GoodsGroupPurchaseInfoServiceImpl.getOne(wrapper6); GoodsGroupPurchaseInfo one1 = goodsGroupPurchaseInfoService.getOne(wrapper6); if (one1!=null){ goodsGroupPurchaseInfoVO.setCurrentNumber(one1.getCurrentNumber()); if (one1.getGroupStatus()==0){ @@ -396,7 +432,7 @@ LambdaQueryWrapper<GoodsGroupPurchaseInfo> wrapper7= Wrappers.lambdaQuery(); wrapper7.eq(GoodsGroupPurchaseInfo::getMubre,data.getGroupNo()); GoodsGroupPurchaseInfo one7 = GoodsGroupPurchaseInfoServiceImpl.getOne(wrapper7); GoodsGroupPurchaseInfo one7 = goodsGroupPurchaseInfoService.getOne(wrapper7); if (one7!=null){ goodsGroupPurchaseInfoVO.setCurrentNumber(one7.getCurrentNumber()); if (one7.getGroupStatus()==0){ ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSeckillServiceImpl.java
@@ -186,6 +186,7 @@ throw new ServiceException("编辑失败,商品库存不足"); } GoodsSeckill goodsSeckillUpd = BeanUtils.copyBean(upd, GoodsSeckill.class); goodsSeckillUpd.setListingStatus(ListingStatusEnum.ON_SHELVES); this.updateById(goodsSeckillUpd); GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setAuctionStock(upd.getSeckillStock() * -1); @@ -216,7 +217,7 @@ DelayTaskEnum.SECKILL_END_TASK.getCode() + "-" + goodsSeckill.getId()); // 退回剩余库存 GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO(); goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock() * -1); goodsStockUpdDTO.setAuctionStock(goodsSeckill.getSeckillStock()); goodsStockUpdDTO.setGoodsSkuId(goodsSeckill.getGoodsSkuId()); goodsSkuService.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO)); goodsSeckill.setSeckillStock(0); @@ -241,8 +242,11 @@ } GoodsSeckillVO vo = BeanUtils.copyBean(goodsSeckill, GoodsSeckillVO.class); GoodsSku goods = goodsSkuService.getById(goodsSeckill.getGoodsSkuId()); Optional.of(goods).ifPresent(goodsSku -> vo.setGoodsSkuName(goodsSku.getSkuName())); Integer num = orderClient.getSeckillMembers(goodsSeckill.getGoodsSkuId(), Optional.of(goods).ifPresent(goodsSku -> { vo.setGoodsSkuName(goodsSku.getSkuName()); vo.setGoodsSkuStock(goodsSku.getStock()); }); Integer num = orderClient.getSeckillMembers(goodsSeckill.getId(), SecurityConstants.INNER).getData(); vo.setNumberOfPurchasedMembers(StringUtils.isNull(num) ? 0 : num); return vo; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsSkuServiceImpl.java
@@ -8,6 +8,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.constant.SecurityConstants; import com.ruoyi.common.core.enums.ListingStatusEnum; import com.ruoyi.common.core.enums.StartStatusEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.page.BeanUtils; @@ -425,7 +426,9 @@ LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper1 =new LambdaQueryWrapper<>(); queryWrapper1.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()); .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()) .eq(GoodsGroupPurchase::getStartStatus, StartStatusEnum.STARTED); GoodsGroupPurchase goodsGroupPurchase = goodsGroupPurchaseMapper.selectOne(queryWrapper1); if(goodsGroupPurchase!=null){ HomeGoodsSkuDTO homeGoodsSkuDTO1 =new HomeGoodsSkuDTO(); @@ -457,7 +460,9 @@ LambdaQueryWrapper<GoodsGroupPurchase> queryWrapper2 =new LambdaQueryWrapper<>(); queryWrapper2.eq(GoodsGroupPurchase::getListingStatus, ListingStatusEnum.ON_SHELVES) .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()); .eq(GoodsGroupPurchase::getGoodsSkuId, byId.getId()) .eq(GoodsGroupPurchase::getStartStatus, StartStatusEnum.STARTED); GoodsGroupPurchase goodsGroupPurchase2 = goodsGroupPurchaseMapper.selectOne(queryWrapper2); if (goodsGroupPurchase2!=null){ homeGoodsSkuInfoVO.setGroupPurchaseGoods(2); ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -18,7 +18,6 @@ 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.ruoyi.common.core.enums.GenderEnum; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.core.utils.StringUtils; @@ -38,7 +37,6 @@ import com.ruoyi.member.service.IMemberService; import com.ruoyi.member.util.HttpUtils; import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.constants.SecurityConstant; import com.ruoyi.system.api.domain.AppMiniLoginVO; import com.ruoyi.system.api.domain.Member; import com.ruoyi.system.api.domain.MemberPoints; @@ -55,7 +53,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import org.apache.commons.io.IOUtils; import org.apache.http.HttpEntity; ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/OrderController.java
@@ -3,8 +3,6 @@ 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.fasterxml.jackson.core.JsonProcessingException; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.enums.OrderStatusEnum; import com.ruoyi.common.core.utils.page.BeanUtils; @@ -183,4 +181,16 @@ return R.ok(); } @InnerAuth @PostMapping("/getOrderListByMubres") R<List<Order>> getOrderListByMubres(@RequestBody List<String> mubres) { return R.ok(orderService.getOrderListByMubres(mubres)); } @InnerAuth @PostMapping("/updOrderStatusByMubres") R<?> updateOrderStatusByMubres(@RequestBody List<String> formedGroupMubres) { orderService.updateOrderStatusByMubres(formedGroupMubres); return R.ok(); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/inner/PayController.java
@@ -3,7 +3,6 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.annotation.InnerAuth; import com.ruoyi.order.service.IPaylogService; import com.ruoyi.order.service.impl.PaylogServiceImpl; import com.ruoyi.system.api.domain.dto.RefundDTO; import java.util.List; import java.util.Map; @@ -24,6 +23,10 @@ private final IPaylogService paylogService; /** * @param refundDTOS 退款数据传输对象 * @return Map<String, Object> key :orderNo value 退款结果 */ @InnerAuth @PostMapping("/refund-batch") public R<Map<String, Object>> refund(@RequestBody List<RefundDTO> refundDTOS) { ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java
@@ -144,4 +144,8 @@ @ApiModelProperty("物流信息") private Express100VO express100VO; @ApiModelProperty("是否售后 1未售后,2 售后") private Integer isRequest; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IOrderService.java
@@ -142,4 +142,8 @@ * @return List<Order> */ List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime); List<Order> getOrderListByMubres(List<String> mubres); void updateOrderStatusByMubres(List<String> formedGroupMubres); } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/IPaylogService.java
@@ -42,6 +42,10 @@ */ void wxnotify(HttpServletRequest request, HttpServletResponse response); /** * @param refundDTOS 退款数据传输对象 * @return Map<String, Object> key :orderNo value 退款结果 */ Map<String, Object> refund(List<RefundDTO> refundDTOS); void refund1(RefundDTO refundDTOS); ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/LogisticsServiceImpl.java
@@ -1,7 +1,6 @@ package com.ruoyi.order.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.nacos.shaded.com.google.gson.Gson; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -12,34 +11,23 @@ import com.kuaidi100.sdk.request.QueryTrackParam; import com.kuaidi100.sdk.request.QueryTrackReq; import com.kuaidi100.sdk.utils.SignUtils; import com.ruoyi.common.core.domain.R; import com.ruoyi.order.mapper.LogisticsMapper; import com.ruoyi.order.service.ILogisticsService; import com.ruoyi.order.vo.KuaiDiCode; import com.ruoyi.system.api.domain.Logistics; import com.ruoyi.system.api.domain.dto.LogisticsDTO; import com.ruoyi.system.api.domain.vo.Express100VO; import net.sf.json.JSONObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.util.LinkedMultiValueMap; import org.springframework.util.MultiValueMap; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; /** * <p> @@ -90,7 +78,9 @@ LambdaQueryWrapper<Logistics> wrapper= Wrappers.lambdaQuery(); wrapper.eq(Logistics::getLogisticsNum,logisticsDTO.getCompany()); Logistics one = this.getOne(wrapper); response.setLogisticsName(one.getLogisticsName()); if (Objects.nonNull(one)) { response.setLogisticsName(one.getLogisticsName()); } return response; } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -163,6 +163,7 @@ } memberIdSet = memberList.stream().map(Member::getId) .collect(Collectors.toSet()); query.setMemberIdSet(memberIdSet); } page = baseMapper.getOrderReturnRequestPage(page, query); if (StringUtils.isEmpty(page.getRecords())) { ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -7,7 +7,6 @@ import com.google.common.collect.Lists; import com.ruoyi.common.core.constant.CacheConstants; 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.AuditStatusEnum; import com.ruoyi.common.core.enums.BondStatusEnum; @@ -37,7 +36,18 @@ import com.ruoyi.order.util.OrderUtil; import com.ruoyi.order.util.SinataUtil; import com.ruoyi.system.api.constants.DelayTaskEnum; import com.ruoyi.system.api.domain.*; import com.ruoyi.system.api.domain.AuctionSalesroom; import com.ruoyi.system.api.domain.CouponMember; import com.ruoyi.system.api.domain.CustomConfig; import com.ruoyi.system.api.domain.DelayTask; import com.ruoyi.system.api.domain.GoodsGroupPurchase; import com.ruoyi.system.api.domain.GoodsGroupPurchaseInfo; import com.ruoyi.system.api.domain.GoodsSeckill; 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.Order; import com.ruoyi.system.api.domain.OrderAuctionBond; import com.ruoyi.system.api.domain.dto.CouponMemberDTO; import com.ruoyi.system.api.domain.dto.GoodsStockUpdDTO; import com.ruoyi.system.api.domain.dto.HomeGoodsSkuDTO; @@ -61,7 +71,10 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.regex.Matcher; @@ -72,6 +85,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -164,6 +178,7 @@ order.setSkuName(OrderDTO.getSkuName()); order.setPrice(OrderDTO.getPrice()); order.setCoverPic(OrderDTO.getCoverPic()); order.setOrderTimeSx(OrderDTO.getOrderTimeSx()); this.save(order); if (OrderDTO.getOrderFrom().getCode()==4){ @@ -1177,8 +1192,9 @@ pageVO = PageDTO.empty(page); } pageVO = PageDTO.of(page, MgtOrderVO.class); List<MgtOrderVO> voList = pageVO.getList(); if (query.getOrderFrom() == OrderFromEnum.AUCTION_ORDERS) { List<MgtOrderVO> list = pageVO.getList(); List<MgtOrderVO> list = voList; // 封装参数查询拍卖会 Set<Long> auctionSalesroomGoodsIdSet = list.stream() .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) @@ -1243,6 +1259,19 @@ } }); } Set<Long> memberVoIdSet = voList.stream().map(MgtOrderVO::getMemberId) .collect(Collectors.toSet()); List<Member> data = memberClient.getMemberListByIds(memberVoIdSet, SecurityConstants.INNER) .getData(); Map<Long, Member> memberMap = data.stream() .collect(Collectors.toMap(Member::getId, e -> e)); voList = voList.stream().peek(order -> { Member member = memberMap.get(order.getMemberId()); if (StringUtils.isNotNull(member)) { order.setNickname(member.getNickname()); order.setPhone(member.getPhone()); } }).collect(Collectors.toList()); return pageVO; } @@ -1274,7 +1303,7 @@ } } // 查询售后信息 if (order.getOrderStatus() == OrderStatusEnum.AFTER_SALE) { if (order.getIsRequest() == 2) { OrderReturnRequest orderReturnRequest = orderReturnRequestService.getOne( Wrappers.lambdaQuery(OrderReturnRequest.class) .eq(OrderReturnRequest::getOrderId, @@ -1345,6 +1374,7 @@ * @param id 订单id */ @Override @Transactional(rollbackFor = Exception.class) public void refund(Long id) { Order order = getOrder(id); String orderNo = order.getOrderNo(); @@ -1367,6 +1397,8 @@ orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED); orderReturnRequestService.save(orderReturnRequest); } order.setIsRequest(2); this.updateById(order); } private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) { @@ -1401,7 +1433,7 @@ Order order = getOrder(id); if (order.getOrderStatus() == OrderStatusEnum.FINISHED) { OrderReturnRequest orderReturnRequest = new OrderReturnRequest(); order.setOrderStatus(OrderStatusEnum.AFTER_SALE); order.setIsRequest(2); this.updateById(order); MgtAfterSaleSettingDTO data = sysUserClient.getAfterSaleSetting().getData(); if (StringUtils.isNull(data)) { @@ -1484,4 +1516,15 @@ public List<Order> getStaticsOrderList(LocalDateTime startTime, LocalDateTime endTime) { return baseMapper.getStaticsOrderList(startTime, endTime); } @Override public List<Order> getOrderListByMubres(List<String> mubres) { return this.lambdaQuery().in(Order::getGroupNo, mubres).list(); } @Override public void updateOrderStatusByMubres(List<String> formedGroupMubres) { this.lambdaUpdate().set(Order::getIsOrder, 1).in(Order::getGroupNo, formedGroupMubres) .update(); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/PaylogServiceImpl.java
@@ -883,6 +883,10 @@ return m.matches(); } /** * @param refundDTOS 退款数据传输对象 * @return Map<String, Object> key :orderNo value 退款结果 */ @Override public Map<String, Object> refund(List<RefundDTO> refundDTOS) { Map<String, Object> map = new HashMap<>(); ruoyi-modules/ruoyi-order/src/main/resources/mapper/order/OrderMapper.xml
@@ -3,14 +3,13 @@ <mapper namespace="com.ruoyi.order.mapper.OrderMapper"> <select id="getSeckillMembers" resultType="java.lang.Integer"> SELECT ifnull(count(1), 0) FROM t_order o SELECT IFNULL(COUNT(id), 0) AS num FROM t_order o WHERE o.goods_sku_id = #{id} AND o.order_from=2 AND o.del_flag=0 AND o.order_status IN (2 , 3 , 4) AND o.order_status IN (2, 3, 4) GROUP BY o.member_id </select> ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtCouponController.java
@@ -2,9 +2,7 @@ import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.write.metadata.WriteSheet; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.page.PageDTO; import com.ruoyi.promotion.controller.management.dto.MgtCouponDTO; @@ -18,8 +16,11 @@ import com.ruoyi.system.api.validate.UpdateGroup; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.io.IOException; import java.net.URLEncoder; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; @@ -43,6 +44,7 @@ public class MgtCouponController { private final ICouponService couponService; private final HttpServletResponse response; /** * 获取优惠券列表的分页数据 @@ -115,14 +117,22 @@ public void exportReceiveDetail(@RequestBody MgtCouponReceiveQuery query) { List<CouponReceiveDetailVO> couponReceiveDetailVOList = couponService.getCouponReceiveDetailList( query); String fileName = "优惠券领取明细" + DateUtils.format(new Date(), "yyyyMMddHHmmss") + ".xlsx"; try (ExcelWriter excelWriter = EasyExcel.write(fileName, CouponReceiveDetailVO.class) .build()) { WriteSheet writeSheet = EasyExcel.writerSheet("优惠券领取详情").build(); excelWriter.write(couponReceiveDetailVOList, writeSheet); response.setContentType( "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 try { String fileName = URLEncoder.encode( "优惠券领取明细" + DateUtils.format(new Date(), "yyyyMMddHHmmss"), "UTF-8") .replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); EasyExcel.write(response.getOutputStream(), CouponReceiveDetailVO.class) .sheet("优惠券领取明细") .doWrite(couponReceiveDetailVOList); } catch (IOException e) { throw new RuntimeException(e); } } } ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/vo/CouponReceiveDetailVO.java
@@ -4,6 +4,7 @@ import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.common.core.enums.CouponUseEnum; import com.ruoyi.promotion.converter.CouponUseEnumConverter; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import java.io.Serializable; @@ -46,7 +47,7 @@ private LocalDateTime createTime; @ApiModelProperty(value = "使用状态 0:未使用, 1:已使用") @ExcelProperty("使用状态") @ExcelProperty(value = "使用状态", converter = CouponUseEnumConverter.class) private CouponUseEnum couponStatus; } ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/converter/CouponUseEnumConverter.java
New file @@ -0,0 +1,17 @@ package com.ruoyi.promotion.converter; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import com.ruoyi.common.core.enums.CouponUseEnum; public class CouponUseEnumConverter implements Converter<CouponUseEnum> { @Override public WriteCellData<?> convertToExcelData(CouponUseEnum value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { return new WriteCellData<String>(value.getDesc()); } } ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserController.java
@@ -587,7 +587,7 @@ } @InnerAuth @GetMapping("/list-by-name") @PostMapping("/list-by-name") R<List<SysUser>> getUserListByName(@RequestBody SysUser sysUser) { List<SysUser> list = userService.lambdaQuery() .like(StringUtils.isNotBlank(sysUser.getNickName()), SysUser::getNickName, ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -603,12 +603,13 @@ public void saveSupplier(SupplierDTO dto) { SysUser user = BeanUtils.copyBean(dto, SysUser.class); boolean b = checkPhoneUnique(user); if (!b) { throw new ServiceException("该手机号已存在"); } // 添加 if (StringUtils.isNull(dto.getUserId())) { boolean b = checkPhoneUnique(user); if (!b) { throw new ServiceException("该手机号已存在"); } user.setUserName(dto.getPhonenumber()); user.setPassword(SecurityUtils.encryptPassword(dto.getPassword())); user.setUserType("04"); @@ -618,6 +619,12 @@ } else { // 编辑 user = this.getById(dto.getUserId()); if (!user.getPhonenumber().equals(dto.getPhonenumber())) { boolean b = checkPhoneUnique(user); if (!b) { throw new ServiceException("该手机号已存在"); } } if (StringUtils.isNull(user)) { throw new ServiceException("供应商不存在"); }