This commit is contained in:
张良(004796)
2024-03-28 16:16:44 +08:00
parent 1a46596494
commit e955c21991
10 changed files with 281 additions and 0 deletions

View File

@@ -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<AnchorTopAdminVo> list(AnchorTopAdminVo bo, PageQuery pageQuery) {
Page<AnchorTopAdminVo> page = anchorTopService.pageAdmin(pageQuery, bo);
return TableDataInfo.build(page);
}
/**
* 获取主播限时置顶详细信息
*
* @param id 主键
*/
@SaCheckPermission("cai:anchorTop:query")
@GetMapping("/{id}")
public R<AnchorTop> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(anchorTopService.removeBatchByIds(Arrays.asList(ids)));
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -18,4 +18,7 @@ public class AnchorListQuery {
@Schema(description = "城市(同城查询使用)")
private Integer cityId;
@Schema(hidden = true)
private Integer onlineStatus;
}

View File

@@ -40,6 +40,7 @@ public class HomeManager {
AnchorListQuery query = new AnchorListQuery();
// 0-默认查询 1-活跃查询 2-新人查询 3-同城查询
query.setType(0);
query.setOnlineStatus(1);
Page<AnchorListVo> app = anchorService.pageApp(pageQuery, query);
List<AnchorListVo> records = app.getRecords();
RBucket<List<AnchorListVo>> bucket = redissonClient.getBucket(RedisHttpConstant.HOME_RECOMMEND_REDIS);

View File

@@ -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<AnchorTop> {
Page<AnchorTopAdminVo> pageAdmin(@Param("build") Page<Object> build, @Param("bo") AnchorTopAdminVo bo);
}

View File

@@ -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<AnchorTop> {
Page<AnchorTopAdminVo> pageAdmin(PageQuery pageQuery, AnchorTopAdminVo bo);
}

View File

@@ -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<AnchorTopMapper,AnchorTop> implements AnchorTopService {
@Override
public Page<AnchorTopAdminVo> pageAdmin(PageQuery pageQuery, AnchorTopAdminVo bo) {
return baseMapper.pageAdmin(pageQuery.build(), bo);
}
}

View File

@@ -45,6 +45,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="query.cityId != null and query.cityId != ''">
and t1.city_id = #{query.cityId}
</if>
<if test="query.onlineStatus != null">
and t3.status = #{query.onlineStatus}
</if>
<if test="query.type != null">
<if test="query.type == 0">
order by t2.recommend_status desc

View File

@@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cai.mapper.AnchorTopMapper">
<select id="pageAdmin" resultType="com.ruoyi.cai.dto.admin.vo.AnchorTopAdminVo">
select t1.*,
t3.usercode,t3.nickname,t3.mobile,t3.avatar,t3.gender,t3.age,t3.status,
t4.status as online_status
from cai_anchor_top t1
left join cai_anchor t2 on t1.user_id = t2.user_id
left join cai_user t3 on t1.user_id = t3.id
left join cai_user_online t4 on t1.user_id = t4.user_id
<where>
<if test="bo.usercode != null and bo.usercode != ''">
and t3.usercode = #{bo.usercode}
</if>
<if test="bo.nickname != null and bo.nickname != ''">
and t3.nickname = #{bo.nickname}
</if>
<if test="bo.mobile != null and bo.mobile != ''">
and t3.mobile = #{bo.mobile}
</if>
<if test="bo.onlineStatus != null">
and t4.status = #{bo.onlineStatus}
</if>
</where>
order by t1.sort_by desc
</select>
</mapper>