1.提交【管理后台】大屏操作台相关接口
2.提交【管理后台】营销管理-视频管理相关接口
14个文件已修改
1个文件已添加
330 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/MemberLevel.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionVideoController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionVideoDTO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionVideoService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionVideoServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/SysUser.java
@@ -1,6 +1,8 @@
package com.ruoyi.system.api.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
@@ -31,7 +33,7 @@
    /** 用户ID */
    @Excel(name = "用户序号", cellType = ColumnType.NUMERIC, prompt = "用户编号")
    @TableField("user_id")
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;
    /** 部门ID */
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/inner/AuctionGoodsController.java
@@ -8,7 +8,12 @@
import com.ruoyi.system.api.domain.AuctionGoods;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
@@ -34,7 +39,7 @@
    }
    @PutMapping("/auction-goods/end/{id}")
    @PutMapping("/end/{id}")
    R<?> endAuctionGoods(@PathVariable("id") Long id) {
        try {
            auctionGoodsService.endAuctionGoods(id);
@@ -45,7 +50,7 @@
        return R.ok();
    }
    @PutMapping("/auction-goods/start/{id}")
    @PutMapping("/start/{id}")
    R<?> startAuctionGoods(@PathVariable("id") Long id) {
        try {
            auctionGoodsService.startAuctionGoods(id);
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/controller/management/MgtAuctionScreenController.java
@@ -125,7 +125,7 @@
     * @param id 拍卖场商品id
     */
    @PutMapping("/stop-current/{id}")
    @ApiOperation("停止当前拍品")
    @ApiOperation("结束当前拍卖商品")
    public R<?> stopCurrentGoods(
            @ApiParam(name = "id", value = "拍卖场商品id", required = true) @PathVariable("id") Long id) {
        auctionSalesroomService.stopCurrentGoods(id);
@@ -157,7 +157,12 @@
        return R.ok();
    }
    @PostMapping("/stop-play/{auctionSalesroomId}")
    /**
     * 结束播放
     *
     * @param auctionSalesroomId 拍卖场id
     */
    @PutMapping("/stop-play/{auctionSalesroomId}")
    @ApiOperation("结束播放")
    public R<?> stopPlay(
            @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true)
@@ -165,4 +170,32 @@
        auctionSalesroomService.stopPlay(auctionSalesroomId);
        return R.ok();
    }
    /**
     * 开始当前拍卖场
     *
     * @param auctionSalesroomId 拍卖场id
     */
    @PutMapping("/start-auction/{auctionSalesroomId}")
    @ApiOperation("开始当前拍卖场")
    public R<?> startCurrentAuctionSalesroom(
            @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true)
            @PathVariable("auctionSalesroomId") Long auctionSalesroomId) {
        auctionSalesroomService.startCurrentAuctionSalesroom(auctionSalesroomId);
        return R.ok();
    }
    /**
     * 结束当前拍卖场
     *
     * @param auctionSalesroomId 拍卖场id
     */
    @PutMapping("/stop-auction/{auctionSalesroomId}")
    @ApiOperation("结束当前拍卖场")
    public R<?> stopCurrentAuctionSalesroom(
            @ApiParam(name = "auctionSalesroomId", value = "拍卖场id", required = true)
            @PathVariable("auctionSalesroomId") Long auctionSalesroomId) {
        auctionSalesroomService.stopCurrentAuctionSalesroom(auctionSalesroomId);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/IAuctionSalesroomService.java
@@ -175,5 +175,19 @@
     */
    void play(MgtScreenVideoDTO dto);
    /**
     * 结束播放
     *
     * @param auctionSalesroomId 拍卖场id
     */
    void stopPlay(Long auctionSalesroomId);
    /**
     * 开始当前拍卖场
     *
     * @param auctionSalesroomId 拍卖场id
     */
    void startCurrentAuctionSalesroom(Long auctionSalesroomId);
    void stopCurrentAuctionSalesroom(Long auctionSalesroomId);
}
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/async/AuctionAsyncMethodService.java
@@ -13,6 +13,7 @@
import java.util.concurrent.TimeUnit;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -28,7 +29,7 @@
    private final RedisService redisService;
    private final SysUserClient sysUserClient;
    // @Async
    @Async
    @Transactional(rollbackFor = Exception.class)
    public void auctionGoodsScheduleTask(List<AuctionGoods> auctionGoodsList) {
        for (AuctionGoods auctionGoods : auctionGoodsList) {
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionGoodsServiceImpl.java
@@ -567,14 +567,14 @@
        AuctionGoods auctionGoods = this.getById(id);
        if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals(
                ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus()
                .equals(AuctionStartStatusEnum.IN_PREVIEW)) {
            this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION)
                .equals(AuctionStartStatusEnum.IN_AUCTION)) {
            this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED)
                    .eq(AuctionGoods::getId, id);
            Map<String, Object> map = new ConcurrentHashMap<>();
            map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS);
            map.put("notification_time", LocalDateTime.now());
            map.put("target_id", id);
            map.put("message_type", "start");
            map.put("message_type", "end");
            String msg = objectMapper.writeValueAsString(map);
            WebSocketUsers.sendMessageToUsersByText(msg);
            log.info("===================>发送websocket通知,消息体{}", msg);
@@ -586,14 +586,14 @@
        AuctionGoods auctionGoods = this.getById(id);
        if (StringUtils.isNotNull(auctionGoods) && auctionGoods.getListingStatus().equals(
                ListingStatusEnum.ON_SHELVES) && auctionGoods.getStartStatus()
                .equals(AuctionStartStatusEnum.IN_AUCTION)) {
            this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.ENDED)
                .equals(AuctionStartStatusEnum.IN_PREVIEW)) {
            this.lambdaUpdate().set(AuctionGoods::getStartStatus, AuctionStartStatusEnum.IN_AUCTION)
                    .eq(AuctionGoods::getId, id);
            Map<String, Object> map = new ConcurrentHashMap<>();
            map.put("notification_type", NotificationTypeConstant.AUCTION_GOODS);
            map.put("notification_time", LocalDateTime.now());
            map.put("target_id", id);
            map.put("message_type", "end");
            map.put("message_type", "start");
            String msg = objectMapper.writeValueAsString(map);
            WebSocketUsers.sendMessageToUsersByText(msg);
            log.info("===================>发送websocket通知,消息体{}", msg);
ruoyi-modules/ruoyi-auction/src/main/java/com/ruoyi/auction/service/impl/AuctionSalesroomServiceImpl.java
@@ -72,6 +72,7 @@
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;
@@ -841,7 +842,7 @@
                MgtAuctionSalesroomVO.class);
        List<AuctionSalesroomGoods> list;
        if (isScreen) {
            list = getAuctionSalesroomGoods(id, Boolean.TRUE);
            list = getAuctionSalesroomGoods(id, Boolean.FALSE);
        } else {
            list = getAuctionSalesroomGoods(id, null);
        }
@@ -1184,9 +1185,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);
        }
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/domain/MemberLevel.java
@@ -11,6 +11,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -28,6 +29,7 @@
@Accessors(chain = true)
@TableName("t_member_level")
@ApiModel(value = "MemberLevel对象", description = "会员等级表")
@Builder
public class MemberLevel implements Serializable {
    private static final long serialVersionUID = 1L;
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/async/AsyncMethodService.java
@@ -1,7 +1,11 @@
package com.ruoyi.member.service.async;
import com.google.common.collect.Lists;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.member.domain.MemberLevel;
import com.ruoyi.member.service.IMemberService;
import com.ruoyi.system.api.domain.Member;
import java.math.BigDecimal;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -26,6 +30,79 @@
     */
    @Async
    public void handleMemberLevel(List<MemberLevel> memberLevels) {
        memberService.list();
        List<Member> list = memberService.list();
        if (StringUtils.isEmpty(memberLevels)) {
            // 如果memberLevels为空或为null,则无需进一步处理
            return;
        }
        List<Member> members = memberService.list();
        if (StringUtils.isEmpty(members)) {
            // 如果成员列表为空或为null,则无需进一步处理
            return;
        }
        for (Member member : members) {
            BigDecimal money = member.getMoney();
            member.setLevel(findAppropriateLevel(memberLevels, money));
        }
    }
    private static int findAppropriateLevel(List<MemberLevel> memberLevels, BigDecimal money) {
        // 对于最开始的level,设置为0(假设0是最低等级)
        int level = 0;
        for (int i = 0; i < memberLevels.size(); i++) {
            MemberLevel currentLevel = memberLevels.get(i);
            BigDecimal currentCumulativeConsumption = currentLevel.getCumulativeConsumption();
            // 如果当前成员的消费额小于等于当前等级的累积消费额
            if (money.compareTo(currentCumulativeConsumption) < 0) {
                return level;
            }
            // 更新level为当前等级,准备下一次比较
            level = currentLevel.getLevel();
        }
        // 如果遍历完成后还没有返回,说明该成员的消费额高于所有已定义等级的累积消费额
        level = memberLevels.get(memberLevels.size() - 1).getLevel();
        return level;
    }
    public static void main(String[] args) {
        MemberLevel build1 = MemberLevel.builder().id(1L).level(1)
                .cumulativeConsumption(BigDecimal.valueOf(100))
                .build();
        MemberLevel build2 = MemberLevel.builder().id(2L).level(2)
                .cumulativeConsumption(BigDecimal.valueOf(200))
                .build();
        MemberLevel build3 = MemberLevel.builder().id(3L).level(3)
                .cumulativeConsumption(BigDecimal.valueOf(300))
                .build();
        MemberLevel build4 = MemberLevel.builder().id(4L).level(4)
                .cumulativeConsumption(BigDecimal.valueOf(500))
                .build();
        MemberLevel build5 = MemberLevel.builder().id(5L).level(5)
                .cumulativeConsumption(BigDecimal.valueOf(500))
                .build();
        MemberLevel build6 = MemberLevel.builder().id(6L).level(6)
                .cumulativeConsumption(BigDecimal.valueOf(600))
                .build();
        MemberLevel build7 = MemberLevel.builder().id(7L).level(7)
                .cumulativeConsumption(BigDecimal.valueOf(700))
                .build();
        MemberLevel build8 = MemberLevel.builder().id(8L).level(8)
                .cumulativeConsumption(BigDecimal.valueOf(800))
                .build();
        MemberLevel build9 = MemberLevel.builder().id(9L).level(9)
                .cumulativeConsumption(BigDecimal.valueOf(900))
                .build();
        MemberLevel build10 = MemberLevel.builder().id(10L).level(10)
                .cumulativeConsumption(BigDecimal.valueOf(1000))
                .build();
        List<MemberLevel> memberLevels = Lists.newArrayList(build1, build2, build3, build4,
                build5, build6, build7, build8, build9, build10);
        System.out.println(findAppropriateLevel(memberLevels, BigDecimal.valueOf(50)));
    }
}
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/MemberLevelServiceImpl.java
@@ -1,6 +1,5 @@
package com.ruoyi.member.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.page.BeanUtils;
@@ -43,16 +42,23 @@
    public List<MgtMemberLevelVO> getMemberLevelList() {
        List<MemberLevel> list = this.lambdaQuery().orderByAsc(MemberLevel::getLevel).list();
        List<MgtMemberLevelVO> mgtMemberLevelVOS = BeanUtils.copyList(list, MgtMemberLevelVO.class);
        List<Member> memberList = memberService.list();
        Integer level = 0;
        if (StringUtils.isNotEmpty(mgtMemberLevelVOS)) {
            for (MgtMemberLevelVO vo : mgtMemberLevelVOS) {
                long count = memberService.count(
                        Wrappers.<Member>lambdaQuery().eq(Member::getLevel, vo.getLevel()));
                vo.setCurrentNumber((int) count);
                vo.setCurrentNumber(getMemberCountByLevel(memberList, vo.getLevel()));
            }
        }
        return mgtMemberLevelVOS;
    }
    private static int getMemberCountByLevel(List<Member> memberList, Integer level) {
        return (int) memberList.stream().filter(member -> member.getLevel().equals(level)).count();
    }
    /**
     * 保存会员等级配置
     *
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/MgtPromotionVideoController.java
@@ -8,8 +8,11 @@
import com.ruoyi.promotion.service.IPromotionVideoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,4 +46,17 @@
    MgtPromotionVideoQuery query) {
        return R.ok(promotionVideoService.getPromotionVideoPage(query));
    }
    /**
     * 删除视频
     *
     * @param id 视频id
     */
    @ApiOperation("删除视频")
    @DeleteMapping("/{id}")
    public R<?> delPromotionVideo(
            @ApiParam(name = "id", value = "视频id", required = true) @PathVariable("id") Long id) {
        promotionVideoService.removeById(id);
        return R.ok();
    }
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/controller/management/dto/MgtPromotionVideoDTO.java
New file
@@ -0,0 +1,29 @@
package com.ruoyi.promotion.controller.management.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import lombok.Data;
/**
 * @author mitao
 * @date 2024/6/3
 */
@Data
@ApiModel(value = "大屏视频视图对象", description = "大屏视频视图对象")
public class MgtPromotionVideoDTO implements Serializable {
    private static final long serialVersionUID = -1717120548273715375L;
    @ApiModelProperty(value = "视频id", notes = "更新必传")
    private Long id;
    @ApiModelProperty(value = "视频名称")
    @NotBlank(message = "视频名称不能为空")
    private String videoName;
    @ApiModelProperty(value = "视频链接")
    @NotBlank(message = "视频链接不能为空")
    private String videoUrl;
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/IPromotionVideoService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.utils.page.PageDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionVideoVO;
import com.ruoyi.system.api.domain.PromotionVideo;
@@ -23,4 +24,6 @@
     * @return PageDTO<MgtPromotionVideoVO>
     */
    PageDTO<MgtPromotionVideoVO> getPromotionVideoPage(MgtPromotionVideoQuery query);
    void saveOrUpdatePromotionVideo(MgtPromotionVideoDTO dto);
}
ruoyi-modules/ruoyi-promotion/src/main/java/com/ruoyi/promotion/service/impl/PromotionVideoServiceImpl.java
@@ -2,8 +2,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
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.PageDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoDTO;
import com.ruoyi.promotion.controller.management.dto.MgtPromotionVideoQuery;
import com.ruoyi.promotion.controller.management.vo.MgtPromotionVideoVO;
import com.ruoyi.promotion.mapper.PromotionVideoMapper;
@@ -39,4 +42,18 @@
        }
        return PageDTO.of(page, MgtPromotionVideoVO.class);
    }
    @Override
    public void saveOrUpdatePromotionVideo(MgtPromotionVideoDTO dto) {
        PromotionVideo promotionVideo = BeanUtils.copyBean(dto, PromotionVideo.class);
        if (StringUtils.isNull(dto.getId())) {
            this.save(promotionVideo);
        } else {
            PromotionVideo video = this.getById(dto.getId());
            if (StringUtils.isNull(video)) {
                throw new ServiceException("视频不存在");
            }
            this.updateById(promotionVideo);
        }
    }
}
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -599,23 +599,30 @@
     */
    @Override
    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())) {
            SysUser user = BeanUtils.copyBean(dto, SysUser.class);
            user.setUserName(dto.getPhonenumber());
            user.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
            user.setUserType("03");
            this.save(user);
        } else {
            // 编辑
            SysUser user = this.getById(dto.getUserId());
            user = this.getById(dto.getUserId());
            if (StringUtils.isNull(user)) {
                throw new ServiceException("供应商不存在");
            }
            user.setNickName(dto.getNickName());
            user.setPhonenumber(dto.getPhonenumber());
            user.setUserName(dto.getPhonenumber());
            user.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
            if (StringUtils.isNotBlank(dto.getPassword())) {
                user.setPassword(SecurityUtils.encryptPassword(dto.getPassword()));
            }
            this.updateById(user);
        }
    }