[CMLR-050] 迁移 PK 域注解 SQL 到 Lambda

This commit is contained in:
2026-02-08 20:21:28 +08:00
parent 32a6d71748
commit 8692b10d07
4 changed files with 68 additions and 27 deletions

View File

@@ -1,5 +1,6 @@
package vvpkassistant.pk.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.*;
import org.jetbrains.annotations.Nullable;
import vvpkassistant.pk.model.PkInfoModel;
@@ -43,28 +44,49 @@ public interface PkInfoDao extends BaseMapper<PkInfoModel> {
);
// 查询用户发布的大于当前时间的pk数据
@Select("select * from pk_info where #{userId} = sender_id and #{time} <= pk_time and invite_status = 0;")
List<PkInfoModel> queryCanUseData(@Param("userId") Integer userId , @Param("time") Long time);
default List<PkInfoModel> queryCanUseData(Integer userId, Long time) {
return selectList(Wrappers.<PkInfoModel>lambdaQuery()
.eq(PkInfoModel::getSenderId, userId)
.ge(PkInfoModel::getPkTime, time)
.eq(PkInfoModel::getInviteStatus, 0));
}
// 查询用户发布的所有pk数据
@Select("select * from pk_info where sender_id = #{userId} order by id desc limit #{page}, #{size};")
List<PkInfoModel> queryAllPkData(@Param("userId") Integer userId, @Param("page") Integer page, @Param("size") Integer size);
default List<PkInfoModel> queryAllPkData(Integer userId, Integer page, Integer size) {
return selectList(Wrappers.<PkInfoModel>lambdaQuery()
.eq(PkInfoModel::getSenderId, userId)
.orderByDesc(PkInfoModel::getId)
.last(String.format("limit %d, %d", page, size)));
}
// 根据id删除pk信息
@Delete("delete from pk_info where id = #{id}")
Integer deletePkDataWithId(@Param("id") Integer id);
default Integer deletePkDataWithId(Integer id) {
return deleteById(id);
}
//查询制定时间范围制定主播的pk信息
@Select("select * from pk_info where anchor_id = #{anchorId} and pk_time between #{startTime} and #{endTime}")
List<PkInfoModel> selectDataWithAnchorIdAndTime(@Param("anchorId") String anchorId, @Param("startTime") long startTime , @Param("endTime") long endTime);
default List<PkInfoModel> selectDataWithAnchorIdAndTime(String anchorId, long startTime, long endTime) {
return selectList(Wrappers.<PkInfoModel>lambdaQuery()
.eq(PkInfoModel::getAnchorId, anchorId)
.between(PkInfoModel::getPkTime, startTime, endTime));
}
// 置顶和取消置顶
@Update("update pk_info set pin_expire_time = #{time} where id = #{id}")
int setPinTime(@Param("id") Integer id, @Param("time") @Nullable Integer time);
default int setPinTime(Integer id, @Nullable Integer time) {
PkInfoModel updateModel = new PkInfoModel();
updateModel.setPinExpireTime(time);
return update(updateModel, Wrappers.<PkInfoModel>lambdaUpdate()
.eq(PkInfoModel::getId, id));
}
// 根据用户id查询该用户已发布的未被邀请的主播列表
@Select("select * from pk_info where sender_id = #{userId} and invite_status = 0 and pk_time > UNIX_TIMESTAMP();")
List<PkInfoModel> listUninvitedPublishedAnchorsByUserId(@Param("userId") Integer userId);
default List<PkInfoModel> listUninvitedPublishedAnchorsByUserId(Integer userId) {
long currentTime = System.currentTimeMillis() / 1000;
return selectList(Wrappers.<PkInfoModel>lambdaQuery()
.eq(PkInfoModel::getSenderId, userId)
.eq(PkInfoModel::getInviteStatus, 0)
.gt(PkInfoModel::getPkTime, currentTime));
}
// 查询当前用户与该主播是否存在未完成的pk记录
@Select("SELECT COUNT(*) FROM `pk_record`\n" +

View File

@@ -1,6 +1,7 @@
package vvpkassistant.pk.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@@ -14,20 +15,33 @@ import java.util.List;
public interface PkRecordDao extends BaseMapper<PkRecord> {
// 查询当天所有的pk数据 Python使用
@Select("SELECT * FROM pk_record WHERE pk_time BETWEEN #{startTime} AND #{endTime} and pk_status = 1;")
List<PkRecord> pkListForToday(@Param("startTime") long start, @Param("endTime") long end);
default List<PkRecord> pkListForToday(long start, long end) {
return selectList(Wrappers.<PkRecord>lambdaQuery()
.between(PkRecord::getPkTime, String.valueOf(start), String.valueOf(end))
.eq(PkRecord::getPkStatus, 1));
}
// 查询大于等于今天的PK记录数据
@Select("select * from pk_record where (user_id_a = #{userId} or user_id_b = #{userId}) and pk_time >= #{fromTime}")
List<PkRecord> fetchDataFromTodayWithUserId(@Param("userId") Integer userId, @Param("fromTime") Long fromTime);
default List<PkRecord> fetchDataFromTodayWithUserId(Integer userId, Long fromTime) {
return selectList(Wrappers.<PkRecord>lambdaQuery()
.and(wrapper -> wrapper.eq(PkRecord::getUserIdA, userId)
.or()
.eq(PkRecord::getUserIdB, userId))
.ge(PkRecord::getPkTime, String.valueOf(fromTime)));
}
// 查询是否存在未处理的邀请数据
@Select("select count(*) from pk_record where anchor_id_a = #{anchorA} and anchor_id_b = #{anchorB} and pk_status = 0")
Integer getPendingInvitations(@Param("anchorA") String anchorA , @Param("anchorB") String anchorB);
default Integer getPendingInvitations(String anchorA, String anchorB) {
return Math.toIntExact(selectCount(Wrappers.<PkRecord>lambdaQuery()
.eq(PkRecord::getAnchorIdA, anchorA)
.eq(PkRecord::getAnchorIdB, anchorB)
.eq(PkRecord::getPkStatus, 0)));
}
// 根据id查询记录详情
@Select("select * from pk_record where id = #{id}")
PkRecord singleRecord(@Param("id") Integer id);
default PkRecord singleRecord(Integer id) {
return selectById(id);
}
// 查询每场pk的详细数据
@@ -35,7 +49,11 @@ public interface PkRecordDao extends BaseMapper<PkRecord> {
List<PkRecordDetail> fetchDetailPkDataWithId(@Param("id") Integer id);
// 查询主播是否存在pk记录
@Select("select count(*) from pk_record where anchor_id_a = #{id} or anchor_id_b = #{id}")
int existsPkRecordByAnchor(@Param("id") String id);
default int existsPkRecordByAnchor(String id) {
return Math.toIntExact(selectCount(Wrappers.<PkRecord>lambdaQuery()
.and(wrapper -> wrapper.eq(PkRecord::getAnchorIdA, id)
.or()
.eq(PkRecord::getAnchorIdB, id))));
}
}

View File

@@ -1,9 +1,8 @@
package vvpkassistant.pk.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import vvpkassistant.pk.model.PkRecordDetail;
import java.util.List;
@@ -12,7 +11,9 @@ import java.util.List;
public interface PkRecordDetailDao extends BaseMapper<PkRecordDetail> {
// 根据id查询对应的明细数据
@Select("select * from pk_record_detail where pk_record_id = #{id}")
List<PkRecordDetail> queryDetail(@Param("id") Integer id);
default List<PkRecordDetail> queryDetail(Integer id) {
return selectList(Wrappers.<PkRecordDetail>lambdaQuery()
.eq(PkRecordDetail::getPkRecordId, id));
}
}