From 8315636d55897ab5ad4587fb9197e99f115c7a11 Mon Sep 17 00:00:00 2001 From: ziin Date: Thu, 18 Dec 2025 20:43:00 +0800 Subject: [PATCH] =?UTF-8?q?feat(host):=20=E6=96=B0=E5=A2=9E=E4=B8=BB?= =?UTF-8?q?=E6=92=AD=E7=9B=B4=E6=92=AD=E6=98=8E=E7=BB=86=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + .../controller/HostInfoController.java | 18 +++ .../mapper/ServerLiveHostDetailMapper.java | 12 ++ .../dto/host/ServerLiveHostDetailDTO.java | 29 ++++ .../model/entity/ServerLiveHostDetail.java | 128 ++++++++++++++++++ .../vo/hosts/ServerLiveHostDetailVO.java | 86 ++++++++++++ .../service/ServerLiveHostDetailService.java | 25 ++++ .../impl/ServerLiveHostDetailServiceImpl.java | 40 ++++++ .../mapper/ServerLiveHostDetailMapper.xml | 29 ++++ 9 files changed, 369 insertions(+) create mode 100644 src/main/java/com/yupi/springbootinit/mapper/ServerLiveHostDetailMapper.java create mode 100644 src/main/java/com/yupi/springbootinit/model/dto/host/ServerLiveHostDetailDTO.java create mode 100644 src/main/java/com/yupi/springbootinit/model/entity/ServerLiveHostDetail.java create mode 100644 src/main/java/com/yupi/springbootinit/model/vo/hosts/ServerLiveHostDetailVO.java create mode 100644 src/main/java/com/yupi/springbootinit/service/ServerLiveHostDetailService.java create mode 100644 src/main/java/com/yupi/springbootinit/service/impl/ServerLiveHostDetailServiceImpl.java create mode 100644 src/main/resources/mapper/ServerLiveHostDetailMapper.xml diff --git a/.gitignore b/.gitignore index 85544b3..248b71d 100644 --- a/.gitignore +++ b/.gitignore @@ -145,3 +145,5 @@ fabric.properties # Android studio 3.1+ serialized cache file .idea/caches/build_file_checksums.ser +/CLAUDE.md +/API_USAGE.md diff --git a/src/main/java/com/yupi/springbootinit/controller/HostInfoController.java b/src/main/java/com/yupi/springbootinit/controller/HostInfoController.java index 5e95915..824400e 100644 --- a/src/main/java/com/yupi/springbootinit/controller/HostInfoController.java +++ b/src/main/java/com/yupi/springbootinit/controller/HostInfoController.java @@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yupi.springbootinit.common.BaseResponse; import com.yupi.springbootinit.common.ResultUtils; import com.yupi.springbootinit.model.dto.host.HostInfoDTO; +import com.yupi.springbootinit.model.dto.host.ServerLiveHostDetailDTO; import com.yupi.springbootinit.model.entity.NewHosts; import com.yupi.springbootinit.model.vo.hosts.NewHostsVO; +import com.yupi.springbootinit.model.vo.hosts.ServerLiveHostDetailVO; import com.yupi.springbootinit.service.HostInfoService; +import com.yupi.springbootinit.service.ServerLiveHostDetailService; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; @@ -27,6 +30,9 @@ public class HostInfoController { @Resource private HostInfoService hostInfoService; + @Resource + private ServerLiveHostDetailService serverLiveHostDetailService; + @PostMapping("hosts_info") public BaseResponse> hostsInfo(@RequestBody HostInfoDTO hostInfoDTO){ Page conditionHosts = hostInfoService.getConditionHosts(hostInfoDTO); @@ -46,4 +52,16 @@ public class HostInfoController { return ResultUtils.success(b); } + + /** + * 根据主播ID和租户ID查询直播明细 + * @param detailDTO 查询条件(包含hostsId和tenantId) + * @return 所有直播明细数据 + */ + @PostMapping("/live_host_detail") + public BaseResponse> getLiveHostDetail(@RequestBody ServerLiveHostDetailDTO detailDTO){ + log.info("查询直播明细,hostsId: {}, tenantId: {}", detailDTO.getHostsId(), detailDTO.getTenantId()); + List result = serverLiveHostDetailService.getLiveHostDetailByHostsIdAndTenantId(detailDTO); + return ResultUtils.success(result); + } } diff --git a/src/main/java/com/yupi/springbootinit/mapper/ServerLiveHostDetailMapper.java b/src/main/java/com/yupi/springbootinit/mapper/ServerLiveHostDetailMapper.java new file mode 100644 index 0000000..9f85691 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/mapper/ServerLiveHostDetailMapper.java @@ -0,0 +1,12 @@ +package com.yupi.springbootinit.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.yupi.springbootinit.model.entity.ServerLiveHostDetail; + +/* +* @author: ziin +* @date: 2025/12/18 19:29 +*/ + +public interface ServerLiveHostDetailMapper extends BaseMapper { +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/dto/host/ServerLiveHostDetailDTO.java b/src/main/java/com/yupi/springbootinit/model/dto/host/ServerLiveHostDetailDTO.java new file mode 100644 index 0000000..5d07e0d --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/dto/host/ServerLiveHostDetailDTO.java @@ -0,0 +1,29 @@ +package com.yupi.springbootinit.model.dto.host; + +import com.yupi.springbootinit.common.PageRequest; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +/* + * @author: ziin + * @date: 2025/12/18 + */ +@Data +@ApiModel("主播直播明细查询DTO") +public class ServerLiveHostDetailDTO implements Serializable { + + /** + * 主播id + */ + @ApiModelProperty(value = "主播ID", required = true, example = "host123") + private String hostsId; + + /** + * 租户 Id + */ + @ApiModelProperty(value = "租户ID", required = true, example = "1001") + private Long tenantId; +} diff --git a/src/main/java/com/yupi/springbootinit/model/entity/ServerLiveHostDetail.java b/src/main/java/com/yupi/springbootinit/model/entity/ServerLiveHostDetail.java new file mode 100644 index 0000000..167e11f --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/entity/ServerLiveHostDetail.java @@ -0,0 +1,128 @@ +package com.yupi.springbootinit.model.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import java.util.Date; +import lombok.Data; + +/* +* @author: ziin +* @date: 2025/12/18 19:29 +*/ + +/** + * 主播单场直播明细表 + */ +@ApiModel(description="主播单场直播明细表") +@Data +@TableName(value = "server_live_host_detail") +public class ServerLiveHostDetail { + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + @ApiModelProperty(value="主键") + private Long id; + + /** + * 当前用户标识 + */ + @TableField(value = "user_id") + @ApiModelProperty(value="当前用户标识") + private Long userId; + + /** + * 主播名称 + */ + @TableField(value = "hosts_id") + @ApiModelProperty(value="主播名称") + private String hostsId; + + /** + * 粉丝团人数 + */ + @TableField(value = "fans_club_count") + @ApiModelProperty(value="粉丝团人数") + private Integer fansClubCount; + + /** + * 礼物之比 + */ + @TableField(value = "lighted_vs_total_gifts") + @ApiModelProperty(value="礼物之比") + private String lightedVsTotalGifts; + + /** + * 直播开始时间(格式化) + */ + @TableField(value = "start_time_formatted") + @ApiModelProperty(value="直播开始时间(格式化)") + private Date startTimeFormatted; + + /** + * 直播结束时间(格式化) + */ + @TableField(value = "end_time_formatted") + @ApiModelProperty(value="直播结束时间(格式化)") + private Date endTimeFormatted; + + /** + * 获得的点赞数量 + */ + @TableField(value = "like_count") + @ApiModelProperty(value="获得的点赞数量") + private Integer likeCount; + + /** + * 持续时间(格式化) + */ + @TableField(value = "duration_formatted") + @ApiModelProperty(value="持续时间(格式化)") + private String durationFormatted; + + /** + * 记录创建时间 + */ + @TableField(value = "create_time") + @ApiModelProperty(value="记录创建时间") + private Date createTime; + + /** + * 记录更新时间 + */ + @TableField(value = "update_time") + @ApiModelProperty(value="记录更新时间") + private Date updateTime; + + /** + * 租户 Id + */ + @TableField(value = "tenant_id") + @ApiModelProperty(value="租户 Id") + private Long tenantId; + + /** + * 是否删除 + */ + @TableField(value = "deleted") + @ApiModelProperty(value="是否删除") + private Byte deleted; + + /** + * 更新人 + */ + @TableField(value = "updater") + @ApiModelProperty(value="更新人") + private String updater; + + /** + * 创建人 + */ + @TableField(value = "creator") + @ApiModelProperty(value="创建人") + private String creator; +} \ No newline at end of file diff --git a/src/main/java/com/yupi/springbootinit/model/vo/hosts/ServerLiveHostDetailVO.java b/src/main/java/com/yupi/springbootinit/model/vo/hosts/ServerLiveHostDetailVO.java new file mode 100644 index 0000000..bf09073 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/model/vo/hosts/ServerLiveHostDetailVO.java @@ -0,0 +1,86 @@ +package com.yupi.springbootinit.model.vo.hosts; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/* + * @author: ziin + * @date: 2025/12/18 + */ +@Data +@ApiModel("主播直播明细VO") +public class ServerLiveHostDetailVO { + + /** + * 主键 + */ + @ApiModelProperty(value = "主键") + private Long id; + + /** + * 当前用户标识 + */ + @ApiModelProperty(value = "当前用户标识") + private Long userId; + + /** + * 主播名称 + */ + @ApiModelProperty(value = "主播ID") + private String hostsId; + + /** + * 粉丝团人数 + */ + @ApiModelProperty(value = "粉丝团人数") + private Integer fansClubCount; + + /** + * 礼物之比 + */ + @ApiModelProperty(value = "礼物之比") + private String lightedVsTotalGifts; + + /** + * 直播开始时间(格式化) + */ + @ApiModelProperty(value = "直播开始时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date startTimeFormatted; + + /** + * 直播结束时间(格式化) + */ + @ApiModelProperty(value = "直播结束时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date endTimeFormatted; + + /** + * 获得的点赞数量 + */ + @ApiModelProperty(value = "获得的点赞数量") + private Integer likeCount; + + /** + * 持续时间(格式化) + */ + @ApiModelProperty(value = "持续时间") + private String durationFormatted; + + /** + * 记录创建时间 + */ + @ApiModelProperty(value = "记录创建时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 租户 Id + */ + @ApiModelProperty(value = "租户ID") + private Long tenantId; +} diff --git a/src/main/java/com/yupi/springbootinit/service/ServerLiveHostDetailService.java b/src/main/java/com/yupi/springbootinit/service/ServerLiveHostDetailService.java new file mode 100644 index 0000000..9ee3d51 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/service/ServerLiveHostDetailService.java @@ -0,0 +1,25 @@ +package com.yupi.springbootinit.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.yupi.springbootinit.model.dto.host.ServerLiveHostDetailDTO; +import com.yupi.springbootinit.model.entity.ServerLiveHostDetail; +import com.baomidou.mybatisplus.extension.service.IService; +import com.yupi.springbootinit.model.vo.hosts.ServerLiveHostDetailVO; + +import java.util.List; + +/* +* @author: ziin +* @date: 2025/12/18 19:29 +*/ + +public interface ServerLiveHostDetailService extends IService{ + + /** + * 根据主播ID和租户ID查询直播明细 + * @param detailDTO 查询条件 + * @return 所有直播明细数据 + */ + List getLiveHostDetailByHostsIdAndTenantId(ServerLiveHostDetailDTO detailDTO); + +} diff --git a/src/main/java/com/yupi/springbootinit/service/impl/ServerLiveHostDetailServiceImpl.java b/src/main/java/com/yupi/springbootinit/service/impl/ServerLiveHostDetailServiceImpl.java new file mode 100644 index 0000000..e841f67 --- /dev/null +++ b/src/main/java/com/yupi/springbootinit/service/impl/ServerLiveHostDetailServiceImpl.java @@ -0,0 +1,40 @@ +package com.yupi.springbootinit.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.springframework.stereotype.Service; +import org.springframework.beans.factory.annotation.Autowired; +import java.util.List; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.yupi.springbootinit.model.dto.host.ServerLiveHostDetailDTO; +import com.yupi.springbootinit.model.entity.ServerLiveHostDetail; +import com.yupi.springbootinit.mapper.ServerLiveHostDetailMapper; +import com.yupi.springbootinit.model.vo.hosts.ServerLiveHostDetailVO; +import com.yupi.springbootinit.service.ServerLiveHostDetailService; +/* +* @author: ziin +* @date: 2025/12/18 19:29 +*/ + +@Service +public class ServerLiveHostDetailServiceImpl extends ServiceImpl implements ServerLiveHostDetailService{ + + @Override + public List getLiveHostDetailByHostsIdAndTenantId(ServerLiveHostDetailDTO detailDTO) { + // 构建查询条件 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("hosts_id", detailDTO.getHostsId()) + .eq("tenant_id", detailDTO.getTenantId()) + .orderByDesc("start_time_formatted"); + + // 查询所有数据 + List list = this.list(queryWrapper); + + // 转换为VO + return BeanUtil.copyToList(list, ServerLiveHostDetailVO.class); + } + +} diff --git a/src/main/resources/mapper/ServerLiveHostDetailMapper.xml b/src/main/resources/mapper/ServerLiveHostDetailMapper.xml new file mode 100644 index 0000000..522853a --- /dev/null +++ b/src/main/resources/mapper/ServerLiveHostDetailMapper.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, user_id, hosts_id, fans_club_count, lighted_vs_total_gifts, start_time_formatted, + end_time_formatted, like_count, duration_formatted, create_time, update_time, tenant_id, + deleted, updater, creator + + \ No newline at end of file