diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/AnchorTopController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/AnchorTopController.java new file mode 100644 index 00000000..6823f559 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/AnchorTopController.java @@ -0,0 +1,96 @@ +package com.ruoyi.cai.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.AnchorTop; +import com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo; +import com.ruoyi.cai.service.AnchorTopService; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.PageQuery; +import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.core.validate.AddGroup; +import com.ruoyi.common.core.validate.EditGroup; +import com.ruoyi.common.enums.BusinessType; +import lombok.RequiredArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; + +/** + * 主播限时置顶 + * + * @author 77 + * @date 2024-03-28 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/cai/anchorTop") +public class AnchorTopController extends BaseController { + + private final AnchorTopService anchorTopService; + + /** + * 查询主播限时置顶列表 + */ + @SaCheckPermission("cai:anchorTop:list") + @GetMapping("/list") + public TableDataInfo list(AnchorTopAdminVo bo, PageQuery pageQuery) { + Page page = anchorTopService.pageAdmin(pageQuery, bo); + return TableDataInfo.build(page); + } + + /** + * 获取主播限时置顶详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("cai:anchorTop:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(anchorTopService.getById(id)); + } + + /** + * 新增主播限时置顶 + */ + @SaCheckPermission("cai:anchorTop:add") + @Log(title = "主播限时置顶", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody AnchorTop bo) { + return toAjax(anchorTopService.save(bo)); + } + + /** + * 修改主播限时置顶 + */ + @SaCheckPermission("cai:anchorTop:edit") + @Log(title = "主播限时置顶", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody AnchorTop bo) { + return toAjax(anchorTopService.updateById(bo)); + } + + /** + * 删除主播限时置顶 + * + * @param ids 主键串 + */ + @SaCheckPermission("cai:anchorTop:remove") + @Log(title = "主播限时置顶", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(anchorTopService.removeBatchByIds(Arrays.asList(ids))); + } +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AnchorTop.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AnchorTop.java new file mode 100644 index 00000000..f00e132a --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/domain/AnchorTop.java @@ -0,0 +1,48 @@ +package com.ruoyi.cai.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Date; + +/** + * 主播限时置顶对象 cai_anchor_top + * + * @author 77 + * @date 2024-03-28 + */ +@Data +@TableName("cai_anchor_top") +public class AnchorTop implements Serializable { + + private static final long serialVersionUID=1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + /** + * 用户ID + */ + private Long userId; + /** + * 开启时间 + */ + private LocalDateTime beginTime; + /** + * 结束时间 + */ + private LocalDateTime endTime; + /** + * 排序字段 + */ + private Long sortBy; + + private LocalDateTime createTime; + private LocalDateTime updateTime; + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorTopAdminVo.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorTopAdminVo.java new file mode 100644 index 00000000..262648e6 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/admin/vo/AnchorTopAdminVo.java @@ -0,0 +1,36 @@ +package com.ruoyi.cai.dto.admin.vo; + +import com.ruoyi.cai.domain.AnchorTop; +import com.ruoyi.common.annotation.Sensitive; +import com.ruoyi.common.enums.SensitiveStrategy; +import lombok.Data; + +@Data +public class AnchorTopAdminVo extends AnchorTop { + /** + * 用户号/ID号 + */ + private String usercode; + /** + * 昵称 + */ + private String nickname; + + /** + * 手机号 + */ + @Sensitive(strategy = SensitiveStrategy.PHONE) + private String mobile; + + /** + * 头像 + */ + private String avatar; + /** + * 性别 + */ + private Integer gender; + private Integer age; + private Integer status; + private Integer onlineStatus; +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/index/AnchorListQuery.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/index/AnchorListQuery.java index 269eb0b0..2d9de000 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/index/AnchorListQuery.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/dto/app/query/index/AnchorListQuery.java @@ -18,4 +18,7 @@ public class AnchorListQuery { @Schema(description = "城市(同城查询使用)") private Integer cityId; + + @Schema(hidden = true) + private Integer onlineStatus; } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java index f6e22f0d..d067d9b9 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/manager/HomeManager.java @@ -40,6 +40,7 @@ public class HomeManager { AnchorListQuery query = new AnchorListQuery(); // 0-默认查询 1-活跃查询 2-新人查询 3-同城查询 query.setType(0); + query.setOnlineStatus(1); Page app = anchorService.pageApp(pageQuery, query); List records = app.getRecords(); RBucket> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_REDIS); diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorTopMapper.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorTopMapper.java new file mode 100644 index 00000000..b17c6232 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/mapper/AnchorTopMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.cai.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.cai.domain.AnchorTop; +import com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo; +import org.apache.ibatis.annotations.Param; + +/** + * 主播限时置顶Mapper接口 + * + * @author 77 + * @date 2024-03-28 + */ +public interface AnchorTopMapper extends BaseMapper { + + Page pageAdmin(@Param("build") Page build, @Param("bo") AnchorTopAdminVo bo); +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorTopService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorTopService.java new file mode 100644 index 00000000..34e274d7 --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/AnchorTopService.java @@ -0,0 +1,18 @@ +package com.ruoyi.cai.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.cai.domain.AnchorTop; +import com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo; +import com.ruoyi.common.core.domain.PageQuery; + +/** + * 主播限时置顶Service接口 + * + * @author 77 + * @date 2024-03-28 + */ +public interface AnchorTopService extends IService { + + Page pageAdmin(PageQuery pageQuery, AnchorTopAdminVo bo); +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorTopServiceImpl.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorTopServiceImpl.java new file mode 100644 index 00000000..8baf94eb --- /dev/null +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/service/impl/AnchorTopServiceImpl.java @@ -0,0 +1,25 @@ +package com.ruoyi.cai.service.impl; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.cai.domain.AnchorTop; +import com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo; +import com.ruoyi.cai.mapper.AnchorTopMapper; +import com.ruoyi.cai.service.AnchorTopService; +import com.ruoyi.common.core.domain.PageQuery; +import org.springframework.stereotype.Service; + +/** + * 主播限时置顶Service业务层处理 + * + * @author 77 + * @date 2024-03-28 + */ +@Service +public class AnchorTopServiceImpl extends ServiceImpl implements AnchorTopService { + + @Override + public Page pageAdmin(PageQuery pageQuery, AnchorTopAdminVo bo) { + return baseMapper.pageAdmin(pageQuery.build(), bo); + } +} diff --git a/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml index bf19d411..e7716e35 100644 --- a/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml +++ b/ruoyi-cai/src/main/resources/mapper/cai/AnchorMapper.xml @@ -45,6 +45,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and t1.city_id = #{query.cityId} + + and t3.status = #{query.onlineStatus} + order by t2.recommend_status desc diff --git a/ruoyi-cai/src/main/resources/mapper/cai/AnchorTopMapper.xml b/ruoyi-cai/src/main/resources/mapper/cai/AnchorTopMapper.xml new file mode 100644 index 00000000..b527abaf --- /dev/null +++ b/ruoyi-cai/src/main/resources/mapper/cai/AnchorTopMapper.xml @@ -0,0 +1,33 @@ + + + + + + + +