rentaiming
2024-07-20 ed4f07531b9cb0794e976a14cee3b591dec8d4f6
Merge remote-tracking branch 'origin/master'
27个文件已修改
1个文件已添加
397 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/CouponMember.java
@@ -47,7 +47,7 @@
    @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
    private CouponTypeEnum couponType;
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
    private CouponUseEnum couponStatus;
    
    @ApiModelProperty(value = "满减金额,例如:满100元")
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/GoodsGroupPurchaseInfo.java
@@ -46,7 +46,7 @@
    @ApiModelProperty(value = "成团人数")
    private Integer groupSize;
    @ApiModelProperty(value = "0 是未成团,1 是已经成团")
    @ApiModelProperty(value = "0 是未成团,1 是已经成团 2 成团失败")
    private Integer groupStatus;
    @ApiModelProperty(value = "创建者")
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/Order.java
@@ -163,4 +163,5 @@
    @ApiModelProperty("团购编号")
    private String groupNo;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/CouponMemberDTO.java
@@ -15,6 +15,6 @@
    @ApiModelProperty(value = "会员id")
    private  Long memberId;
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
    private Integer couponStatus;
}
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/dto/OrderReturnDTO.java
@@ -1,12 +1,8 @@
package com.ruoyi.system.api.domain.dto;
import com.ruoyi.common.core.enums.RequestTypeEnum;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime;
@Data
@ApiModel(value = "售后订单传输对象", description = "售后订单传输对象")
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
@@ -54,7 +54,7 @@
    }
    private boolean isWithinOneHour(LocalDateTime startTime) {
        LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
        LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61);
        return checkTime.isAfter(startTime);
    }
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -317,12 +317,29 @@
                    id);
            List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
            if (StringUtils.isNotEmpty(auctionBidRecords)) {
                // 中标
                for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                    AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                    auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                    auctionBidRecordList.add(auctionBidRecord);
                if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
                    // 中标
                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                        auctionBidRecordList.add(auctionBidRecord);
                    }
                } else {
                    // 中标
                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                        auctionBidRecordList.add(auctionBidRecord);
                    }
                    // 退回剩余库存
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
                    goodsStockUpdDTO.setAuctionStock(
                            auctionGoods.getAuctionStock() - auctionBidRecordList.size());
                    goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                            SecurityConstants.INNER);
                }
                auctionBidRecordService.updateBatchById(auctionBidRecordList);
                // 创建待支付订单
@@ -330,11 +347,12 @@
                        ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                CustomConfig pointsConfig = sysUserClient.getconfig(
                        ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
                double ratio =
                        Double.parseDouble(
                                pointsConfig.getConfigValue()) / Double.parseDouble(
                                moneyConfig.getConfigValue());
                for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
                    BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
                    BigDecimal divide = lastBidAmount.divide(
                            new BigDecimal(moneyConfig.getConfigValue()), 0, RoundingMode.DOWN);
                    int points = divide.multiply(
                            new BigDecimal(pointsConfig.getConfigValue())).intValue();
                    OrderDTO orderDTO = new OrderDTO();
                    orderDTO.setAuctionType(AuctionOrderTypeEnum.REGULAR_ITEMS);
                    orderDTO.setGoodsQuantity(auctionGoods.getAuctionStock());
@@ -344,8 +362,7 @@
                    orderDTO.setTotalAmount(auctionBidRecord.getLastBidAmount());
                    orderDTO.setOrderFrom(OrderFromEnum.AUCTION_ORDERS);
                    orderDTO.setOrderTime(LocalDateTime.now());
                    orderDTO.setPoints(auctionBidRecord.getLastBidAmount()
                            .multiply(BigDecimal.valueOf(ratio)).intValue());
                    orderDTO.setPoints(points);
                    orderDTO.setBound(auctionGoods.getBond());
                    MemberAddress data = memberClient.getMemberAddressOne(
                            auctionBidRecord.getMemberId(), SecurityConstants.INNER).getData();
@@ -692,12 +709,29 @@
                        id);
                List<AuctionBidRecord> auctionBidRecordList = new ArrayList<>();
                if (StringUtils.isNotEmpty(auctionBidRecords)) {
                    // 中标
                    for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                        AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                        auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                        auctionBidRecordList.add(auctionBidRecord);
                    if (auctionBidRecords.size() >= auctionGoods.getAuctionStock()) {
                        // 中标
                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                            auctionBidRecordList.add(auctionBidRecord);
                        }
                    } else {
                        // 中标
                        for (int i = 0; i < auctionGoods.getAuctionStock(); i++) {
                            AuctionBidRecord auctionBidRecord = auctionBidRecords.get(i);
                            auctionBidRecord.setStatus(BidStatusEnum.SUCCESSFUL);
                            auctionBidRecordList.add(auctionBidRecord);
                        }
                        // 退回剩余库存
                        GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                        goodsStockUpdDTO.setGoodsSkuId(auctionGoods.getGoodsSkuId());
                        goodsStockUpdDTO.setAuctionStock(
                                auctionGoods.getAuctionStock() - auctionBidRecords.size());
                        goodsSkuClient.updGoodsStock(Lists.newArrayList(goodsStockUpdDTO),
                                SecurityConstants.INNER);
                    }
                    auctionBidRecordService.updateBatchById(auctionBidRecordList);
                    // 创建待支付订单
@@ -705,12 +739,6 @@
                            ConfigEnum.MEMBER_POINTS_MONEY.getKey()).getData();
                    CustomConfig pointsConfig = sysUserClient.getconfig(
                            ConfigEnum.MEMBER_POINTS_POINTS.getKey()).getData();
                    BigDecimal ratio =
                            BigDecimal.valueOf(Double.parseDouble(
                                            pointsConfig.getConfigValue()))
                                    .divide(BigDecimal.valueOf(Double.parseDouble(
                                            moneyConfig.getConfigValue())), 0, RoundingMode.DOWN);
                    for (AuctionBidRecord auctionBidRecord : auctionBidRecordList) {
                        BigDecimal lastBidAmount = auctionBidRecord.getLastBidAmount();
                        BigDecimal divide = lastBidAmount.divide(
@@ -798,7 +826,7 @@
                        return null;
                    }).filter(Objects::nonNull).collect(Collectors.toList());
                    // 远程调用订单服务修改订单状态
                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.PAID,
                    orderClient.updateOrderAuctionBondStatus(ids, BondStatusEnum.REFUNDED,
                            SecurityConstants.INNER);
                }
            }
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -903,7 +903,7 @@
    public String getQrCode(Long id) throws Exception {
        AuctionSalesroom auctionSalesroom = this.getById(id);
        String auctionSalesroomNo = auctionSalesroom.getAuctionSalesroomNo();
        return CreateQrCode.createQRCode(auctionSalesroomNo);
        return auctionSalesroom.getQrCode();
    }
    @Override
@@ -1502,11 +1502,10 @@
        if (lastBidAmount.intValue() > 0) {
            BigDecimal divide = lastBidAmount.divide(
                    BigDecimal.valueOf(Long.parseLong(memberPointsMoney.getConfigValue())), 0,
                    new BigDecimal(memberPointsMoney.getConfigValue()), 0,
                    RoundingMode.DOWN);
            int points = divide.multiply(
                    BigDecimal.valueOf(
                            Long.parseLong((memberPointsPoints.getConfigValue())))).intValue();
                    new BigDecimal(memberPointsPoints.getConfigValue())).intValue();
            order.setPoints(points);
        } else {
            order.setPoints(0);
@@ -1649,10 +1648,14 @@
            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);
                // 等待中的商品退库存
                if (salesroomGoods.getStatus().equals(AuctionGoodsStatusEnum.WAITING)) {
                    GoodsStockUpdDTO goodsStockUpdDTO = new GoodsStockUpdDTO();
                    goodsStockUpdDTO.setGoodsSkuId(salesroomGoods.getGoodsSkuId());
                    goodsStockUpdDTO.setAuctionStock(salesroomGoods.getSalesroomStock());
                    dtoList.add(goodsStockUpdDTO);
                }
            }
            // 批量更新商品库存
            auctionSalesroomGoodsMapper.updateBatchById(auctionSalesroomGoods);
@@ -1662,15 +1665,16 @@
        List<AuctionBidRecord> auctionBidRecordList = auctionBidRecordMapper.selectList(
                Wrappers.<AuctionBidRecord>lambdaQuery()
                        .eq(AuctionBidRecord::getAuctionSalesroomId, auctionSalesroomId)
                        .eq(AuctionBidRecord::getStatus, BidStatusEnum.ELIMINATE));
        Set<Long> memberIdlist = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId)
                .collect(Collectors.toSet());
        if (StringUtils.isNotEmpty(memberIdlist)) {
            OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO();
            orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId());
            orderAuctionBondDTO.setUserList(memberIdlist);
            orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER);
                        .ne(AuctionBidRecord::getStatus, BidStatusEnum.SUCCESSFUL));
        Set<Long> memberIdList = new HashSet<>();
        if (CollUtils.isNotEmpty(auctionBidRecordList)) {
            memberIdList = auctionBidRecordList.stream().map(AuctionBidRecord::getMemberId)
                    .collect(Collectors.toSet());
        }
        OrderAuctionBondDTO orderAuctionBondDTO = new OrderAuctionBondDTO();
        orderAuctionBondDTO.setAuctionSalesroomId(auctionSalesroom.getId());
        orderAuctionBondDTO.setUserList(memberIdList);
        orderClient.getOrderAuctionBond(orderAuctionBondDTO, SecurityConstants.INNER);
        Map<String, Object> map = new ConcurrentHashMap<>();
        map.put("notification_type", NotificationTypeConstant.AUCTION_SALESROOM);
        map.put("auctionSalesroomId", auctionSalesroom.getId().toString());
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/async/AsyncMethodService.java
@@ -79,7 +79,7 @@
    }
    
    private boolean isWithinOneHour(LocalDateTime startTime) {
        LocalDateTime checkTime = LocalDateTime.now().plusHours(1);
        LocalDateTime checkTime = LocalDateTime.now().plusMinutes(61);
        return checkTime.isAfter(startTime);
    }
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/GoodsGroupPurchaseServiceImpl.java
@@ -285,6 +285,7 @@
        groupPurchase.setGroupStatus(
                res ? GroupStatusEnum.FORMED_INTO_A_GROUP : GroupStatusEnum.GROUP_FAILURE);
        groupPurchase.setStartStatus(StartStatusEnum.ENDED);
        this.updateById(groupPurchase);
    }
@@ -322,7 +323,7 @@
                    });
                    try {
                        log.info(
                                "============  =================退款结束=============================");
                                "=============================退款结束=============================");
                        log.info("退款成功订单:{}",
                                objectMapper.writeValueAsString(successfulOrders));
                        log.info("退款失败订单:{}", objectMapper.writeValueAsString(failedOrders));
@@ -349,6 +350,13 @@
                orderClient.updateOrderStatusByMubres(formedGroupMubres, SecurityConstants.INNER);
                return true;
            }
            List<GoodsGroupPurchaseInfo> notGroupedList = groupPurchaseInfoList.stream()
                    .filter(g -> !g.getCurrentNumber()
                            .equals(g.getGroupSize())).peek(p -> {
                        p.setGroupStatus(GroupStatusEnum.GROUP_FAILURE.getCode());
                    }).collect(
                            Collectors.toList());
            goodsGroupPurchaseInfoService.updateBatchById(notGroupedList);
        }
        return false;
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/inner/MemberPointsController.java
@@ -2,18 +2,14 @@
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.system.api.domain.MemberPoints;
import com.ruoyi.member.service.IMemberPointsService;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import io.swagger.annotations.ApiOperation;
import javax.annotation.Resource;
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.RestController;
import javax.annotation.Resource;
/**
 * <p>
@@ -31,11 +27,7 @@
    @PostMapping("/addMemberPoints")
    @ApiOperation(value = "用户端-添加或减少用户积分")
    public R addMemberPoints(@RequestBody MemberPointsDTO memberPointsDTO) {
        MemberPoints points=new MemberPoints();
        points.setMemberId(memberPointsDTO.getMemberId());
        points.setPointsType(memberPointsDTO.getPointsType());
        points.setPoints(memberPointsDTO.getPoints());
        iMemberPointsService.save(points);
        iMemberPointsService.addMemberPoints(memberPointsDTO);
        return R.ok();
    }
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/IMemberPointsService.java
@@ -6,6 +6,7 @@
import com.ruoyi.member.controller.management.vo.MgtMemberPointsVO;
import com.ruoyi.system.api.domain.MemberPoints;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
/**
 * <p>
@@ -26,4 +27,6 @@
     * @return PageDTO<MgtMemberPointsVO>
     */
    PageDTO<MgtMemberPointsVO> getMemberPointsPage(MgtMemberPointsQuery query);
    void addMemberPoints(MemberPointsDTO memberPointsDTO);
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberPointsServiceImpl.java
@@ -14,6 +14,7 @@
import com.ruoyi.system.api.domain.Member;
import com.ruoyi.system.api.domain.MemberPoints;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import com.ruoyi.system.api.feignClient.MemberClient;
import java.util.List;
import java.util.Map;
@@ -22,6 +23,8 @@
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
 * <p>
@@ -69,6 +72,7 @@
                .eq(StringUtils.isNotNull(query.getPointsStatus()), MemberPoints::getPointsStatus,
                        query.getPointsStatus())
                .in(StringUtils.isNotEmpty(memberIdSet), MemberPoints::getMemberId, memberIdSet)
                .eq(StringUtils.isNotNull(query.getId()), MemberPoints::getMemberId, query.getId())
                .orderByDesc(MemberPoints::getCreateTime)
                .page(page);
        if (StringUtils.isEmpty(page.getRecords())) {
@@ -116,4 +120,14 @@
        }
        return memberDTO;
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void addMemberPoints(MemberPointsDTO memberPointsDTO) {
        MemberPoints points = new MemberPoints();
        points.setMemberId(memberPointsDTO.getMemberId());
        points.setPointsType(memberPointsDTO.getPointsType());
        points.setPoints(memberPointsDTO.getPoints());
        this.save(points);
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberServiceImpl.java
@@ -64,6 +64,8 @@
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
 * <p>
@@ -525,6 +527,7 @@
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW)
    public void updMembeOne(updMembeOneDTO dMembeOneDTO) {
        Member byId = this.getById(dMembeOneDTO.getMemberId());
        if (dMembeOneDTO.getMoney()!=null){
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/controller/management/vo/MgtOrderVO.java
@@ -35,7 +35,7 @@
    private LocalDateTime orderTime;
    @ApiModelProperty(value = "拍卖订单类型 1=普通拍品 2=拍卖会拍品")
    private AuctionOrderTypeEnum auctionType;
    private AuctionOrderTypeEnum auctionOrderType;
    @ApiModelProperty(value = "所属拍卖场")
    private String salesroomName;
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/MemberInvoiceServiceImpl.java
@@ -34,6 +34,7 @@
import javax.annotation.Resource;
import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
 * <p>
@@ -208,6 +209,7 @@
     * @param dto 管理后台-开票申请审核数据传输对象
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void audit(MgtMemberInvoicingAuditDTO dto) {
        MemberInvoice memberInvoice = getMemberInvoice(dto.getId());
        if (!Objects.equals(memberInvoice.getInvoiceStatus(), 1)) {
@@ -222,13 +224,13 @@
        List<MemberInvoiceOrder> memberInvoiceOrderList = iMemberInvoiceOrderService.lambdaQuery()
                .eq(MemberInvoiceOrder::getInvoiceId, memberInvoice)
                .list();
        Set<Long> orderIdSet = memberInvoiceOrderList.stream()
                .map(MemberInvoiceOrder::getOrderId)
        Set<String> orderNoSet = memberInvoiceOrderList.stream()
                .map(MemberInvoiceOrder::getOrderNo)
                .collect(Collectors.toSet());
        if (!orderIdSet.isEmpty()) {
        if (!orderNoSet.isEmpty()) {
            iOrderService.lambdaUpdate()
                    .set(Order::getInvoiceStatus, dto.getInvoiceStatus() == 2 ? 3 : 4)
                    .in(Order::getId, orderIdSet).update();
                    .in(Order::getOrderNo, orderNoSet).update();
        }
    }
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderReturnRequestServiceImpl.java
@@ -8,6 +8,7 @@
import com.ruoyi.common.core.enums.AuditStatusEnum;
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
import com.ruoyi.common.core.enums.PointStatusEnum;
import com.ruoyi.common.core.enums.RequestTypeEnum;
import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
import com.ruoyi.common.core.exception.ServiceException;
@@ -28,11 +29,14 @@
import com.ruoyi.system.api.domain.Order;
import com.ruoyi.system.api.domain.dto.LogisticsDTO;
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import com.ruoyi.system.api.domain.dto.OrderReturnDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
import com.ruoyi.system.api.domain.vo.Express100VO;
import com.ruoyi.system.api.domain.vo.OrderReturnVO;
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@@ -248,7 +252,8 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    @GlobalTransactional(rollbackFor = Exception.class)
    @Transactional
    public void confirmReturnRequest(Long id) {
        OrderReturnRequest orderReturnRequest = getOrderReturnRequest(id);
        if (orderReturnRequest.getStatus()
@@ -268,14 +273,31 @@
        String orderNo = order.getOrderNo();
        Paylog paylog = paylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo)
                .last("limit 1").one();
        PaymentMethodEnum paymentMethod = order.getPaymentMethod();
        if (StringUtils.isNotNull(paylog)) {
            PaymentMethodEnum paymentMethod = order.getPaymentMethod();
            boolean result = handleRefund(paymentMethod, paylog, orderNo);
            if (result) {
                paylog.setState(3);// 已退款
                paylogService.updateById(paylog);
            }
        }
        // 扣除订单积分
        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
                .getData();
        if (StringUtils.isNotNull(member)) {
            MemberPointsDTO memberPointsDTO = new MemberPointsDTO();
            memberPointsDTO.setMemberId(order.getMemberId());
            memberPointsDTO.setPointsType(1);
            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
            memberPointsDTO.setPoints(order.getPoints());
            memberClient.addMemberPoints(memberPointsDTO);
            updMembeOneDTO updMembeOneDTO = new updMembeOneDTO();
            updMembeOneDTO.setMemberId(order.getMemberId());
            updMembeOneDTO.setType(2);
            updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0));
            memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER);
        }
    }
    private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) {
ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/OrderServiceImpl.java
@@ -14,12 +14,12 @@
import com.ruoyi.common.core.enums.OrderStatusEnum;
import com.ruoyi.common.core.enums.OrderTypeEnum;
import com.ruoyi.common.core.enums.PaymentMethodEnum;
import com.ruoyi.common.core.enums.PointStatusEnum;
import com.ruoyi.common.core.enums.RequestTypeEnum;
import com.ruoyi.common.core.enums.ReturnRequestStatusEnum;
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.common.redis.service.RedisService;
import com.ruoyi.order.controller.management.dto.MgtOrderConfirmShipmentDTO;
@@ -56,6 +56,7 @@
import com.ruoyi.system.api.domain.dto.MemberDTO;
import com.ruoyi.system.api.domain.dto.MemberOrderDTO;
import com.ruoyi.system.api.domain.dto.MemberOrderListDTO;
import com.ruoyi.system.api.domain.dto.MemberPointsDTO;
import com.ruoyi.system.api.domain.dto.MgtAfterSaleSettingDTO;
import com.ruoyi.system.api.domain.dto.OrderDTO;
import com.ruoyi.system.api.domain.dto.updMembeOneDTO;
@@ -69,6 +70,7 @@
import com.ruoyi.system.api.feignClient.MemberClient;
import com.ruoyi.system.api.feignClient.PromotionClient;
import com.ruoyi.system.api.feignClient.SysUserClient;
import io.seata.spring.annotation.GlobalTransactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
@@ -1233,7 +1235,8 @@
            List<MgtOrderVO> list = voList;
            // 封装参数查询拍卖会
            Set<Long> auctionSalesroomGoodsIdSet = list.stream()
                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS)
                    .filter(order -> order.getAuctionOrderType()
                            == AuctionOrderTypeEnum.AUCTION_ITEMS)
                    .map(MgtOrderVO::getGoodsSkuId).collect(Collectors.toSet());
            List<AuctionSalesroom> auctionSalesroomList = auctionClient.getAuctionSalesroomByIds(
                            auctionSalesroomGoodsIdSet, SecurityConstants.INNER)
@@ -1243,7 +1246,8 @@
                            AuctionSalesroom::getSalesroomName));
            // 封装参数查询拍卖订单保证金
            Set<Long> auctionGoodsIdSet = list.stream()
                    .filter(order -> order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS)
                    .filter(order -> order.getAuctionOrderType()
                            == AuctionOrderTypeEnum.REGULAR_ITEMS)
                    .map(MgtOrderVO::getGoodsSkuId)
                    .collect(Collectors.toSet());
@@ -1269,7 +1273,7 @@
                            Function.identity()));
            list.forEach(order -> {
                if (order.getAuctionType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
                if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
                    order.setSalesroomName(
                            StringUtils.isNotBlank(salesroomMap.get(order.getGoodsSkuId()))
                                    ? salesroomMap.get(order.getAuctionSalesroomId()) : "无");
@@ -1282,7 +1286,7 @@
                                    .getBoundStatus()
                                    : null);
                }
                if (order.getAuctionType() == AuctionOrderTypeEnum.REGULAR_ITEMS) {
                if (order.getAuctionOrderType() == AuctionOrderTypeEnum.REGULAR_ITEMS) {
                    order.setSalesroomName("无");
                    order.setBoundStatus(
                            StringUtils.isNotNull(auctionSalesroomGoodsBondMap.get(
@@ -1410,9 +1414,13 @@
     * @param id 订单id
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    @GlobalTransactional(rollbackFor = Exception.class)
    @Transactional
    public void refund(Long id) {
        Order order = getOrder(id);
        if (order.getIsRequest() == 2) {
            throw new ServiceException("该订单已是售后状态");
        }
        String orderNo = order.getOrderNo();
        Paylog paylog = iPaylogService.lambdaQuery().eq(Paylog::getOutTradeNo, orderNo)
                .last("limit 1").one();
@@ -1431,10 +1439,28 @@
            orderReturnRequest.setRequestReason("管理后台退款");
            orderReturnRequest.setStatus(ReturnRequestStatusEnum.COMPLETED);
            orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED);
            orderReturnRequest.setAuditTime(LocalDateTime.now());
            orderReturnRequestService.save(orderReturnRequest);
        }
        order.setIsRequest(2);
        this.updateById(order);
        // 扣除订单积分
        Member member = memberClient.getMembeOne(order.getMemberId(), SecurityConstants.INNER)
                .getData();
        if (StringUtils.isNotNull(member)) {
            MemberPointsDTO memberPointsDTO = new MemberPointsDTO();
            memberPointsDTO.setMemberId(order.getMemberId());
            memberPointsDTO.setPointsType(1);
            memberPointsDTO.setPointsStatus(PointStatusEnum.INCREASE);
            memberPointsDTO.setPoints(order.getPoints());
            memberClient.addMemberPoints(memberPointsDTO);
            updMembeOneDTO updMembeOneDTO = new updMembeOneDTO();
            updMembeOneDTO.setMemberId(order.getMemberId());
            updMembeOneDTO.setType(2);
            updMembeOneDTO.setTotalPoints(Math.max(member.getTotalPoints() - order.getPoints(), 0));
            memberClient.updMembeOne(updMembeOneDTO, SecurityConstants.INNER);
        }
    }
    private boolean handleRefund(PaymentMethodEnum paymentMethod, Paylog paylog, String orderNo) {
@@ -1467,6 +1493,9 @@
    @Override
    public void refundReturn(Long id) {
        Order order = getOrder(id);
        if (order.getIsRequest() == 2) {
            throw new ServiceException("该订单已是售后状态");
        }
        if (order.getOrderStatus() == OrderStatusEnum.FINISHED) {
            OrderReturnRequest orderReturnRequest = new OrderReturnRequest();
            order.setIsRequest(2);
@@ -1484,6 +1513,7 @@
            orderReturnRequest.setRequestReason("管理后台退款退货");
            orderReturnRequest.setStatus(ReturnRequestStatusEnum.TO_BE_RETURNED);
            orderReturnRequest.setAuditStatus(AuditStatusEnum.PASSED);
            orderReturnRequest.setAuditTime(LocalDateTime.now());
            orderReturnRequestService.save(orderReturnRequest);
        }
@@ -1505,33 +1535,33 @@
    @Override
    public void refundBond(Long id) {
        Order order = getOrder(id);
        List<OrderAuctionBond> orderAuctionBond;
        OrderAuctionBond orderAuctionBond;
        if (order.getAuctionOrderType() == AuctionOrderTypeEnum.AUCTION_ITEMS) {
            orderAuctionBond = orderAuctionBondMapper.selectList(
            orderAuctionBond = orderAuctionBondMapper.selectOne(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .eq(OrderAuctionBond::getOrderId, id)
                            .eq(OrderAuctionBond::getAuctionSalesroomId,
                                    order.getAuctionSalesroomId())
                            .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
        } else {
            orderAuctionBond = orderAuctionBondMapper.selectList(
            orderAuctionBond = orderAuctionBondMapper.selectOne(
                    Wrappers.lambdaQuery(OrderAuctionBond.class)
                            .eq(OrderAuctionBond::getOrderId, id)
                            .eq(OrderAuctionBond::getAuctionGoodsId,
                                    order.getGoodsSkuId())
                            .eq(OrderAuctionBond::getBoundStatus, BondStatusEnum.PAID));
        }
        if (CollUtils.isNotEmpty(orderAuctionBond)) {
            for (OrderAuctionBond auctionBond : orderAuctionBond) {
                Paylog paylog = iPaylogService.lambdaQuery()
                        .in(Paylog::getOutTradeNo, auctionBond.getOrderNo())
                        .one();
                boolean result = handleRefund(auctionBond.getPaymentMethod(), paylog,
                        auctionBond.getOrderNo());
                if (result) {
                    paylog.setState(3);// 已退款
                    auctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
                    iPaylogService.updateById(paylog);
                    this.updateById(order);
                }
        if (StringUtils.isNotNull(orderAuctionBond)) {
            Paylog paylog = iPaylogService.lambdaQuery()
                    .in(Paylog::getOutTradeNo, orderAuctionBond.getOrderNo())
                    .one();
            boolean result = handleRefund(orderAuctionBond.getPaymentMethod(), paylog,
                    orderAuctionBond.getOrderNo());
            if (result) {
                paylog.setState(3);// 已退款
                orderAuctionBond.setBoundStatus(BondStatusEnum.REFUNDED);
                iPaylogService.updateById(paylog);
                this.updateById(order);
            }
        }
    }
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/forepart/vo/CouponMemberVO.java
@@ -1,13 +1,16 @@
package com.ruoyi.promotion.controller.forepart.vo;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.ruoyi.common.core.enums.CouponTypeEnum;
import com.ruoyi.common.core.enums.CouponUseEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;
@Data
public class CouponMemberVO {
@@ -27,7 +30,7 @@
    @ApiModelProperty(value = "优惠券类型 1=满减券 2=代金券 3=折扣券")
    private CouponTypeEnum couponType;
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用")
    @ApiModelProperty(value = "优惠券状态 0:未使用, 1:已使用 2:已过期")
    private CouponUseEnum couponStatus;
    @ApiModelProperty(value = "满减金额,例如:满100元")
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/mapper/CouponMemberMapper.java
@@ -13,4 +13,5 @@
 */
public interface CouponMemberMapper extends BaseMapper<CouponMember> {
    void timingCheckMemberCoupon();
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/scheduler/PromotionScheduler.java
New file
@@ -0,0 +1,28 @@
package com.ruoyi.promotion.scheduler;
import com.ruoyi.promotion.service.ICouponMemberService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/**
 * @author mitao
 * @date 2024/7/20
 */
@Slf4j
@Component
@RequiredArgsConstructor
public class PromotionScheduler {
    private final ICouponMemberService couponMemberService;
    /**
     * 每天凌晨定时检查优惠券过期
     */
    @Scheduled(cron = "1 0 0 * * ?")
    private void timingCheckMemberCoupon() {
        log.info("----------------定时检查优惠券过期任务开始执行----------------");
        couponMemberService.timingCheckMemberCoupon();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/ICouponMemberService.java
@@ -3,11 +3,10 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.promotion.controller.forepart.vo.CouponMemberVO;
import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
import com.ruoyi.system.api.domain.CouponMember;
import org.springframework.web.bind.annotation.RequestBody;
import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
import java.util.List;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * <p>
@@ -30,4 +29,5 @@
    List<CouponMemberVO> updCouponMember1(@RequestBody CouponMemberDTO couponMemberDTO);
    void timingCheckMemberCoupon();
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/async/AsyncMethodService.java
@@ -33,14 +33,12 @@
        Integer issuedQuantity = coupon.getIssuedQuantity();
        List<CouponMember> memberCouponList = new ArrayList<>();
        for (Long memberId : memberIdList) {
            coupon.setId(null);
            CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class);
            couponMember.setMemberId(memberId);
            couponMember.setCouponId(couponId);
            memberCouponList.add(couponMember);
            if (StringUtils.isNotNull(issuedQuantity)
                    && memberCouponList.size() >= issuedQuantity) {
                break;
            for (int i = 0; i < issuedQuantity; i++) {
                coupon.setId(null);
                CouponMember couponMember = BeanUtils.copyBean(coupon, CouponMember.class);
                couponMember.setMemberId(memberId);
                couponMember.setCouponId(couponId);
                memberCouponList.add(couponMember);
            }
        }
        if (StringUtils.isNotEmpty(memberCouponList)) {
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponMemberServiceImpl.java
@@ -13,19 +13,14 @@
import com.ruoyi.promotion.mapper.CouponMapper;
import com.ruoyi.promotion.mapper.CouponMemberMapper;
import com.ruoyi.promotion.service.ICouponMemberService;
import com.ruoyi.promotion.service.ICouponService;
import com.ruoyi.system.api.domain.CouponMember;
import com.ruoyi.system.api.domain.GoodsSku;
import com.ruoyi.system.api.domain.dto.CouponMemberDTO;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
/**
 * <p>
@@ -142,4 +137,9 @@
        }
        return couponMemberVOS;
    }
    @Override
    public void timingCheckMemberCoupon() {
        this.baseMapper.timingCheckMemberCoupon();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/CouponServiceImpl.java
@@ -187,6 +187,10 @@
    public PageDTO<CouponReceiveDetailVO> getReceiveDetail(MgtCouponReceiveQuery query) {
        MemberDTO memberDTO = getMemberQueryParam(query);
        Set<Long> memberIdSet = getMemberIdSet(memberDTO);
        if ((StringUtils.isNotBlank(query.getNickname()) || StringUtils.isNotBlank(
                query.getPhone())) && CollUtils.isEmpty(memberIdSet)) {
            return PageDTO.empty(0L, 0L);
        }
        Page<CouponMember> page = couponMemberService.lambdaQuery()
                .eq(StringUtils.isNotNull(query.getCouponStatus()),
                        CouponMember::getCouponStatus, query.getCouponStatus())
ruoyi-modules/ruoyi-promotion/src/main/resources/mapper/promotion/CouponMemberMapper.xml
@@ -2,4 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.promotion.mapper.CouponMemberMapper">
  <update id="timingCheckMemberCoupon">
    UPDATE t_coupon_member
    SET coupon_status = 2
    WHERE del_flag = 0
      AND coupon_status = 0
      AND end_date &lt; CURDATE()
  </update>
</mapper>
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -601,11 +601,9 @@
     */
    @Override
    public void saveSupplier(SupplierDTO dto) {
        SysUser user = BeanUtils.copyBean(dto, SysUser.class);
        // 添加
        if (StringUtils.isNull(dto.getUserId())) {
            SysUser user = BeanUtils.copyBean(dto, SysUser.class);
            boolean b = checkPhoneUnique(user);
            if (!b) {
                throw new ServiceException("该手机号已存在");
@@ -618,25 +616,25 @@
            this.save(user);
        } else {
            // 编辑
            user = this.getById(dto.getUserId());
            if (!user.getPhonenumber().equals(dto.getPhonenumber())) {
                boolean b = checkPhoneUnique(user);
            SysUser userUpd = this.getById(dto.getUserId());
            if (StringUtils.isNull(userUpd)) {
                throw new ServiceException("供应商不存在");
            }
            userUpd.setNickName(dto.getNickName());
            userUpd.setUpdateTime(new Date());
            userUpd.setUpdateBy(SecurityUtils.getUsername());
            if (StringUtils.isNotBlank(dto.getPassword())) {
                userUpd.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
            }
            if (!userUpd.getPhonenumber().equals(dto.getPhonenumber())) {
                userUpd.setPhonenumber(dto.getPhonenumber());
                userUpd.setUserName(dto.getPhonenumber());
                boolean b = checkPhoneUnique(userUpd);
                if (!b) {
                    throw new ServiceException("该手机号已存在");
                }
            }
            if (StringUtils.isNull(user)) {
                throw new ServiceException("供应商不存在");
            }
            user.setNickName(dto.getNickName());
            user.setPhonenumber(dto.getPhonenumber());
            user.setUserName(dto.getPhonenumber());
            user.setUpdateTime(new Date());
            user.setUpdateBy(SecurityUtils.getUsername());
            if (StringUtils.isNotBlank(dto.getPassword())) {
                user.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
            }
            this.updateById(user);
            this.updateById(userUpd);
        }
    }
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -130,6 +130,7 @@
        from sys_user
        where phonenumber = #{phonenumber}
            and del_flag = '0'
            and user_type in ('00', '04')
        limit 1
    </select>