[CMLR-010] 补齐 User/Pk 侧 DTO 模型

This commit is contained in:
2026-02-08 20:12:46 +08:00
parent a7479b280d
commit a319c96972
19 changed files with 202 additions and 57 deletions

View File

@@ -1,6 +1,6 @@
"id","priority","phase","area","title","description","acceptance_criteria","test_mcp","review_initial_requirements","review_regression_requirements","dev_state","review_initial_state","review_regression_state","git_state","owner","refs","notes" "id","priority","phase","area","title","description","acceptance_criteria","test_mcp","review_initial_requirements","review_regression_requirements","dev_state","review_initial_state","review_regression_state","git_state","owner","refs","notes"
"CMLR-000","P0","1","backend","建立改造基线清单","冻结当前 18 个 Map 入参接口、关键返回类型与调用链,作为后续等价回归基线。","形成一份可追溯清单并覆盖 User/Pk/Anchors/SystemMessage/Chat 五个 Controller抽样 5 条接口请求-响应对照样本可复现。","AUTOSERVER","核对接口 URL、HTTP 方法、请求字段名、返回类型不变;清单需可与代码位置一一跳转。","回归时逐项对照基线,任何字段级偏差需记录并阻断合并。","已完成","已完成","已完成","已提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:18;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:30;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:97;src/main/java/vvpkassistant/controller/UserController.java:65;src/main/java/vvpkassistant/controller/PkController.java:64;src/main/java/vvpkassistant/controller/AnchorsController.java:31;src/main/java/vvpkassistant/controller/SystemMessageController.java:25;src/main/java/vvpkassistant/controller/ChatController.java:37;plan/2026-02-08_20-03-29-controller-map-baseline.md:1;plan/2026-02-08_20-03-29-controller-map-baseline.md:32","picked_reason:作为P0基线先冻结18个Map入参接口与调用链降低后续等价替换回归风险。 | review_initial:已核对18个接口URL/HTTP方法/Map字段名/返回类型与代码一致。 | evidence:新增基线文档并抽样5条可复现请求响应样本。 | evidence:rg核验Map入参接口数量=18。 | done_at:2026-02-08" "CMLR-000","P0","1","backend","建立改造基线清单","冻结当前 18 个 Map 入参接口、关键返回类型与调用链,作为后续等价回归基线。","形成一份可追溯清单并覆盖 User/Pk/Anchors/SystemMessage/Chat 五个 Controller抽样 5 条接口请求-响应对照样本可复现。","AUTOSERVER","核对接口 URL、HTTP 方法、请求字段名、返回类型不变;清单需可与代码位置一一跳转。","回归时逐项对照基线,任何字段级偏差需记录并阻断合并。","已完成","已完成","已完成","已提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:18;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:30;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:97;src/main/java/vvpkassistant/controller/UserController.java:65;src/main/java/vvpkassistant/controller/PkController.java:64;src/main/java/vvpkassistant/controller/AnchorsController.java:31;src/main/java/vvpkassistant/controller/SystemMessageController.java:25;src/main/java/vvpkassistant/controller/ChatController.java:37;plan/2026-02-08_20-03-29-controller-map-baseline.md:1;plan/2026-02-08_20-03-29-controller-map-baseline.md:32","picked_reason:作为P0基线先冻结18个Map入参接口与调用链降低后续等价替换回归风险。 | review_initial:已核对18个接口URL/HTTP方法/Map字段名/返回类型与代码一致。 | evidence:新增基线文档并抽样5条可复现请求响应样本。 | evidence:rg核验Map入参接口数量=18。 | done_at:2026-02-08"
"CMLR-010","P0","2.1","backend","补齐 User/Pk 侧 DTO 模型","为 UserController 与 PkController 的 Map 入参接口新增显式 DTO保持 JSON key 与可空语义不变。","新增 DTO 覆盖 User 8 个接口与 Pk 6 个接口Controller 编译通过且不再直接读取 Map key。","AUTOSERVER","字段命名与旧 Map key 完全一致;可选字段保持可空并保留默认行为。","针对每个 Controller 至少执行 1 条成功与 1 条异常参数用例,确认返回结构无变化。","未开始","未开始","未开始","提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:19;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:135;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:188;src/main/java/vvpkassistant/controller/UserController.java:64;src/main/java/vvpkassistant/controller/PkController.java:63","" "CMLR-010","P0","2.1","backend","补齐 User/Pk 侧 DTO 模型","为 UserController 与 PkController 的 Map 入参接口新增显式 DTO保持 JSON key 与可空语义不变。","新增 DTO 覆盖 User 8 个接口与 Pk 6 个接口Controller 编译通过且不再直接读取 Map key。","AUTOSERVER","字段命名与旧 Map key 完全一致;可选字段保持可空并保留默认行为。","针对每个 Controller 至少执行 1 条成功与 1 条异常参数用例,确认返回结构无变化。","已完成","已完成","已完成","提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:19;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:135;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:188;src/main/java/vvpkassistant/controller/UserController.java:64;src/main/java/vvpkassistant/controller/PkController.java:63;src/main/java/vvpkassistant/controller/UserController.java:73;src/main/java/vvpkassistant/controller/PkController.java:70;src/main/java/vvpkassistant/pk/service/PKService.java:22;src/main/java/vvpkassistant/pk/service/PKServiceImpl.java:152;src/main/java/vvpkassistant/User/model/DTO/UserInputUserInfoDTO.java:1;src/main/java/vvpkassistant/pk/model/DTO/PkListRequestDTO.java:1","picked_reason:P0且直接影响14个Map入参接口先完成可尽早收敛控制器签名改造风险。 | review_initial:User8+Pk6接口均改为DTO读取字段名保持与历史Map key一致。 | validation_limited:mvn -q -DskipTests package 在当前仓库基线失败大量与本改动无关的Lombok getter/log符号缺失。 | manual_test:修复仓库编译基线后执行 mvn -q -DskipTests package并分别调用 /user/loginWithPhoneNumber 与 /pk/deletePkDataWithId 的成功/异常参数用例比对返回结构。 | evidence:新增14个DTO并完成UserController/PkController RequestBody Map->DTO替换。 | evidence:rg核验 UserController/PkController 中 @RequestBody Map 匹配为0。 | risk:medium 未完成可执行编译与接口回归,存在运行期兼容性待验证。 | done_at:2026-02-08"
"CMLR-020","P1","2.2","backend","补齐 Anchors/SystemMessage/Chat DTO","为 AnchorsController、SystemMessageController、ChatController 的 Map 入参接口新增 DTO保留宽松兼容策略。","新增 DTO 覆盖 4 个接口anchor/list, anchor/deleteMyAnchor, systemMessage/list, chat/receiveImMessageChat 回调可接受未知字段。","AUTOSERVER","Chat DTO 需支持扩展字段(如保留 payload 承载);分页字段类型与旧行为一致。","回归验证空字段、未知字段、缺字段场景,保证错误路径与历史一致。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:53;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:227;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:254;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:280;src/main/java/vvpkassistant/controller/AnchorsController.java:30;src/main/java/vvpkassistant/controller/SystemMessageController.java:24;src/main/java/vvpkassistant/controller/ChatController.java:36","" "CMLR-020","P1","2.2","backend","补齐 Anchors/SystemMessage/Chat DTO","为 AnchorsController、SystemMessageController、ChatController 的 Map 入参接口新增 DTO保留宽松兼容策略。","新增 DTO 覆盖 4 个接口anchor/list, anchor/deleteMyAnchor, systemMessage/list, chat/receiveImMessageChat 回调可接受未知字段。","AUTOSERVER","Chat DTO 需支持扩展字段(如保留 payload 承载);分页字段类型与旧行为一致。","回归验证空字段、未知字段、缺字段场景,保证错误路径与历史一致。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:53;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:227;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:254;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:280;src/main/java/vvpkassistant/controller/AnchorsController.java:30;src/main/java/vvpkassistant/controller/SystemMessageController.java:24;src/main/java/vvpkassistant/controller/ChatController.java:36",""
"CMLR-030","P0","3","backend","控制器签名 Map->DTO 等价替换","仅替换 Controller 方法参数类型与取值逻辑,保持 URL、HTTP 方法、返回 VO/Map 结构不变。","18 个 Map 入参接口全部改为 DTO全局路由无新增/删除;接口返回类型与 JSON 字段集合与基线一致。","AUTOSERVER","代码评审重点检查序列化字段、空值分支、异常处理路径是否与旧实现等价。","回归执行关键接口快照比对(字段名、字段数量、状态码),差异需附原因。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:20;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:136;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:365","" "CMLR-030","P0","3","backend","控制器签名 Map->DTO 等价替换","仅替换 Controller 方法参数类型与取值逻辑,保持 URL、HTTP 方法、返回 VO/Map 结构不变。","18 个 Map 入参接口全部改为 DTO全局路由无新增/删除;接口返回类型与 JSON 字段集合与基线一致。","AUTOSERVER","代码评审重点检查序列化字段、空值分支、异常处理路径是否与旧实现等价。","回归执行关键接口快照比对(字段名、字段数量、状态码),差异需附原因。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:20;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:136;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:365",""
"CMLR-040","P0","4.1","backend","迁移 User 域注解 SQL 到 Lambda","将 User 相关 Mapper 注解 SQL 迁移到 MyBatis-Plus LambdaQuery/LambdaUpdate并保证签到与手机号查询语义不变。","UserDao 中目标注解方法完成迁移或迁出;`queryWithPhoneNumber`、签到相关查询写入等价实现并通过测试。","AUTOSERVER","确认真实表名与实体映射一致system_user/system_users 差异);签到日期逻辑统一时区。","执行用户登录、签到首签/重复签到、我的 PK 列表查询回归并对比旧行为。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:124;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:140;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:144;src/main/java/vvpkassistant/User/mapper/UserDao.java:16","" "CMLR-040","P0","4.1","backend","迁移 User 域注解 SQL 到 Lambda","将 User 相关 Mapper 注解 SQL 迁移到 MyBatis-Plus LambdaQuery/LambdaUpdate并保证签到与手机号查询语义不变。","UserDao 中目标注解方法完成迁移或迁出;`queryWithPhoneNumber`、签到相关查询写入等价实现并通过测试。","AUTOSERVER","确认真实表名与实体映射一致system_user/system_users 差异);签到日期逻辑统一时区。","执行用户登录、签到首签/重复签到、我的 PK 列表查询回归并对比旧行为。","未开始","未开始","未开始","未提交","","plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:124;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:140;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:144;src/main/java/vvpkassistant/User/mapper/UserDao.java:16",""
1 id priority phase area title description acceptance_criteria test_mcp review_initial_requirements review_regression_requirements dev_state review_initial_state review_regression_state git_state owner refs notes
2 CMLR-000 P0 1 backend 建立改造基线清单 冻结当前 18 个 Map 入参接口、关键返回类型与调用链,作为后续等价回归基线。 形成一份可追溯清单并覆盖 User/Pk/Anchors/SystemMessage/Chat 五个 Controller;抽样 5 条接口请求-响应对照样本可复现。 AUTOSERVER 核对接口 URL、HTTP 方法、请求字段名、返回类型不变;清单需可与代码位置一一跳转。 回归时逐项对照基线,任何字段级偏差需记录并阻断合并。 已完成 已完成 已完成 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:18;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:30;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:97;src/main/java/vvpkassistant/controller/UserController.java:65;src/main/java/vvpkassistant/controller/PkController.java:64;src/main/java/vvpkassistant/controller/AnchorsController.java:31;src/main/java/vvpkassistant/controller/SystemMessageController.java:25;src/main/java/vvpkassistant/controller/ChatController.java:37;plan/2026-02-08_20-03-29-controller-map-baseline.md:1;plan/2026-02-08_20-03-29-controller-map-baseline.md:32 picked_reason:作为P0基线先冻结18个Map入参接口与调用链,降低后续等价替换回归风险。 | review_initial:已核对18个接口URL/HTTP方法/Map字段名/返回类型与代码一致。 | evidence:新增基线文档并抽样5条可复现请求响应样本。 | evidence:rg核验Map入参接口数量=18。 | done_at:2026-02-08
3 CMLR-010 P0 2.1 backend 补齐 User/Pk 侧 DTO 模型 为 UserController 与 PkController 的 Map 入参接口新增显式 DTO,保持 JSON key 与可空语义不变。 新增 DTO 覆盖 User 8 个接口与 Pk 6 个接口;Controller 编译通过且不再直接读取 Map key。 AUTOSERVER 字段命名与旧 Map key 完全一致;可选字段保持可空并保留默认行为。 针对每个 Controller 至少执行 1 条成功与 1 条异常参数用例,确认返回结构无变化。 未开始 已完成 未开始 已完成 未开始 已完成 未提交 已提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:19;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:135;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:188;src/main/java/vvpkassistant/controller/UserController.java:64;src/main/java/vvpkassistant/controller/PkController.java:63 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:19;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:135;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:188;src/main/java/vvpkassistant/controller/UserController.java:64;src/main/java/vvpkassistant/controller/PkController.java:63;src/main/java/vvpkassistant/controller/UserController.java:73;src/main/java/vvpkassistant/controller/PkController.java:70;src/main/java/vvpkassistant/pk/service/PKService.java:22;src/main/java/vvpkassistant/pk/service/PKServiceImpl.java:152;src/main/java/vvpkassistant/User/model/DTO/UserInputUserInfoDTO.java:1;src/main/java/vvpkassistant/pk/model/DTO/PkListRequestDTO.java:1 picked_reason:P0且直接影响14个Map入参接口,先完成可尽早收敛控制器签名改造风险。 | review_initial:User8+Pk6接口均改为DTO读取,字段名保持与历史Map key一致。 | validation_limited:mvn -q -DskipTests package 在当前仓库基线失败(大量与本改动无关的Lombok getter/log符号缺失)。 | manual_test:修复仓库编译基线后执行 mvn -q -DskipTests package;并分别调用 /user/loginWithPhoneNumber 与 /pk/deletePkDataWithId 的成功/异常参数用例比对返回结构。 | evidence:新增14个DTO并完成UserController/PkController RequestBody Map->DTO替换。 | evidence:rg核验 UserController/PkController 中 @RequestBody Map 匹配为0。 | risk:medium 未完成可执行编译与接口回归,存在运行期兼容性待验证。 | done_at:2026-02-08
4 CMLR-020 P1 2.2 backend 补齐 Anchors/SystemMessage/Chat DTO 为 AnchorsController、SystemMessageController、ChatController 的 Map 入参接口新增 DTO,保留宽松兼容策略。 新增 DTO 覆盖 4 个接口(anchor/list, anchor/deleteMyAnchor, systemMessage/list, chat/receiveImMessage);Chat 回调可接受未知字段。 AUTOSERVER Chat DTO 需支持扩展字段(如保留 payload 承载);分页字段类型与旧行为一致。 回归验证空字段、未知字段、缺字段场景,保证错误路径与历史一致。 未开始 未开始 未开始 未提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:53;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:227;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:254;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:280;src/main/java/vvpkassistant/controller/AnchorsController.java:30;src/main/java/vvpkassistant/controller/SystemMessageController.java:24;src/main/java/vvpkassistant/controller/ChatController.java:36
5 CMLR-030 P0 3 backend 控制器签名 Map->DTO 等价替换 仅替换 Controller 方法参数类型与取值逻辑,保持 URL、HTTP 方法、返回 VO/Map 结构不变。 18 个 Map 入参接口全部改为 DTO;全局路由无新增/删除;接口返回类型与 JSON 字段集合与基线一致。 AUTOSERVER 代码评审重点检查序列化字段、空值分支、异常处理路径是否与旧实现等价。 回归执行关键接口快照比对(字段名、字段数量、状态码),差异需附原因。 未开始 未开始 未开始 未提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:20;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:136;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:365
6 CMLR-040 P0 4.1 backend 迁移 User 域注解 SQL 到 Lambda 将 User 相关 Mapper 注解 SQL 迁移到 MyBatis-Plus LambdaQuery/LambdaUpdate,并保证签到与手机号查询语义不变。 UserDao 中目标注解方法完成迁移或迁出;`queryWithPhoneNumber`、签到相关查询写入等价实现并通过测试。 AUTOSERVER 确认真实表名与实体映射一致(system_user/system_users 差异);签到日期逻辑统一时区。 执行用户登录、签到首签/重复签到、我的 PK 列表查询回归并对比旧行为。 未开始 未开始 未开始 未提交 plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:124;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:140;plan/2026-02-08_19-56-54-controller-map-lambda-refactor.md:144;src/main/java/vvpkassistant/User/mapper/UserDao.java:16

View File

@@ -0,0 +1,8 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserCancelPinDTO {
private Integer articleId;
}

View File

@@ -0,0 +1,11 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserHandlePkInfoDTO {
private Integer type;
private Integer userId;
private Integer page;
private Integer size;
}

View File

@@ -0,0 +1,9 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserInputUserInfoDTO {
private String code;
private Integer id;
}

View File

@@ -0,0 +1,9 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserLoginWithPhoneNumberDTO {
private String code;
private Integer inviterId;
}

View File

@@ -0,0 +1,9 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserPinToTopDTO {
private Integer articleId;
private Integer pinExpireTime;
}

View File

@@ -0,0 +1,8 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserPkRecordDetailDTO {
private Integer id;
}

View File

@@ -0,0 +1,10 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserPointsDetailDTO {
private Integer userId;
private Integer page;
private Integer size;
}

View File

@@ -0,0 +1,10 @@
package vvpkassistant.User.model.DTO;
import lombok.Data;
@Data
public class UserQueryMyAllPkDataDTO {
private Integer userId;
private Integer page;
private Integer size;
}

View File

@@ -9,6 +9,12 @@ import vvpkassistant.User.mapper.UserDao;
import vvpkassistant.pk.mapper.PkInfoDao; import vvpkassistant.pk.mapper.PkInfoDao;
import vvpkassistant.pk.mapper.PkRecordDao; import vvpkassistant.pk.mapper.PkRecordDao;
import vvpkassistant.pk.mapper.PkRecordDetailDao; import vvpkassistant.pk.mapper.PkRecordDetailDao;
import vvpkassistant.pk.model.DTO.PkDeleteByIdDTO;
import vvpkassistant.pk.model.DTO.PkFetchDetailDTO;
import vvpkassistant.pk.model.DTO.PkInfoDetailDTO;
import vvpkassistant.pk.model.DTO.PkListRequestDTO;
import vvpkassistant.pk.model.DTO.PkListUninvitedDTO;
import vvpkassistant.pk.model.DTO.PkQueryMyCanUseDTO;
import vvpkassistant.pk.model.PkInfoModel; import vvpkassistant.pk.model.PkInfoModel;
import vvpkassistant.pk.model.PkRecord; import vvpkassistant.pk.model.PkRecord;
import vvpkassistant.pk.model.PkRecordDetail; import vvpkassistant.pk.model.PkRecordDetail;
@@ -61,29 +67,29 @@ public class PkController {
// pk列表 // pk列表
@PostMapping("pkList") @PostMapping("pkList")
public ResponseData<Object> pkList(@RequestBody Map<String,Object> map) { public ResponseData<Object> pkList(@RequestBody PkListRequestDTO request) {
return ResponseData.success(pkService.getPKList(map)); return ResponseData.success(pkService.getPKList(request));
} }
// 查询用户发布的大于当前时间的pk数据 // 查询用户发布的大于当前时间的pk数据
@PostMapping("queryMyCanUsePkData") @PostMapping("queryMyCanUsePkData")
public ResponseData<Object> queryMyCanUsePkData(@RequestBody Map<String,Object> map) { public ResponseData<Object> queryMyCanUsePkData(@RequestBody PkQueryMyCanUseDTO request) {
Long time = VVTools.currentTimeStamp(); Long time = VVTools.currentTimeStamp();
Integer userId = (Integer) map.get("userId"); Integer userId = request.getUserId();
List<PkInfoModel> pkModels = pkDao.queryCanUseData(userId, time); List<PkInfoModel> pkModels = pkDao.queryCanUseData(userId, time);
return ResponseData.success(pkModels); return ResponseData.success(pkModels);
} }
//pk文章详情 //pk文章详情
@PostMapping("pkInfoDetail") @PostMapping("pkInfoDetail")
public ResponseData<Object> pkInfoDetail(@RequestBody Map<String, Integer> map) { public ResponseData<Object> pkInfoDetail(@RequestBody PkInfoDetailDTO request) {
return ResponseData.success(pkService.pkInfoDetail(map)); return ResponseData.success(pkService.pkInfoDetail(request));
} }
//删除自己的pk数据 (单个) //删除自己的pk数据 (单个)
@PostMapping("deletePkDataWithId") @PostMapping("deletePkDataWithId")
public ResponseData<Object> deletePkDataWithId(@RequestBody Map<String,Integer> map) { public ResponseData<Object> deletePkDataWithId(@RequestBody PkDeleteByIdDTO request) {
Integer id = map.get("id"); Integer id = request.getId();
PkInfoModel pkInfoModel = pkDao.selectById(id); PkInfoModel pkInfoModel = pkDao.selectById(id);
if (pkInfoModel.getPinExpireTime() > VVTools.currentTimeStamp()) { if (pkInfoModel.getPinExpireTime() > VVTools.currentTimeStamp()) {
@@ -110,16 +116,16 @@ public class PkController {
// 查询pk中每个场次的详细数据 // 查询pk中每个场次的详细数据
@PostMapping("fetchDetailPkDataWithId") @PostMapping("fetchDetailPkDataWithId")
public ResponseData<Object> fetchDetailPkDataWithId(@RequestBody Map<String,Integer> map) { public ResponseData<Object> fetchDetailPkDataWithId(@RequestBody PkFetchDetailDTO request) {
Integer id = map.get("id"); Integer id = request.getId();
List<PkRecordDetail> pkRecordDetails = recordDao.fetchDetailPkDataWithId(id); List<PkRecordDetail> pkRecordDetails = recordDao.fetchDetailPkDataWithId(id);
return ResponseData.success(pkRecordDetails); return ResponseData.success(pkRecordDetails);
} }
// 根据用户id查询该用户已发布的未被邀请的主播列表 // 根据用户id查询该用户已发布的未被邀请的主播列表
@PostMapping("listUninvitedPublishedAnchorsByUserId") @PostMapping("listUninvitedPublishedAnchorsByUserId")
public ResponseData<Object> listUninvitedPublishedAnchorsByUserId(@RequestBody Map<String,Integer> map) { public ResponseData<Object> listUninvitedPublishedAnchorsByUserId(@RequestBody PkListUninvitedDTO request) {
Integer userId = map.get("userId"); Integer userId = request.getUserId();
List<PkInfoModel> pkInfoModels = pkDao.listUninvitedPublishedAnchorsByUserId(userId); List<PkInfoModel> pkInfoModels = pkDao.listUninvitedPublishedAnchorsByUserId(userId);
for (PkInfoModel pkInfoModel : pkInfoModels) { for (PkInfoModel pkInfoModel : pkInfoModels) {
pkInfoModel.setDisPlayId(VVTools.replaceChar(pkInfoModel.getAnchorId(),'*')); pkInfoModel.setDisPlayId(VVTools.replaceChar(pkInfoModel.getAnchorId(),'*'));

View File

@@ -10,7 +10,15 @@ import vvpkassistant.Data.ResponseInfo;
import vvpkassistant.Data.WxChatParam; import vvpkassistant.Data.WxChatParam;
import vvpkassistant.User.mapper.UserDao; import vvpkassistant.User.mapper.UserDao;
import vvpkassistant.User.model.DTO.ScanInfoDTO; import vvpkassistant.User.model.DTO.ScanInfoDTO;
import vvpkassistant.User.model.DTO.UserCancelPinDTO;
import vvpkassistant.User.model.DTO.UserHandlePkInfoDTO;
import vvpkassistant.User.model.DTO.UserInputUserInfoDTO;
import vvpkassistant.User.model.DTO.UserLoginWithPhoneNumberDTO;
import vvpkassistant.User.model.DTO.UserModelDTO; import vvpkassistant.User.model.DTO.UserModelDTO;
import vvpkassistant.User.model.DTO.UserPinToTopDTO;
import vvpkassistant.User.model.DTO.UserPkRecordDetailDTO;
import vvpkassistant.User.model.DTO.UserPointsDetailDTO;
import vvpkassistant.User.model.DTO.UserQueryMyAllPkDataDTO;
import vvpkassistant.User.model.UserModel; import vvpkassistant.User.model.UserModel;
import vvpkassistant.User.model.UserModelVO; import vvpkassistant.User.model.UserModelVO;
import vvpkassistant.User.service.UserService; import vvpkassistant.User.service.UserService;
@@ -62,18 +70,18 @@ public class UserController {
// 配置用户信息 // 配置用户信息
@PostMapping("inputUserInfo") @PostMapping("inputUserInfo")
public ResponseData<Object> inputUserInfo(@RequestBody Map<String,Object> param) { public ResponseData<Object> inputUserInfo(@RequestBody UserInputUserInfoDTO param) {
if (!param.containsKey("code")) { if (param == null || param.getCode() == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"code不能为空"); throw new BusinessException(ErrorCode.PARAMS_ERROR,"code不能为空");
} }
if (!param.containsKey("id")) { if (param.getId() == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"id不能为空"); throw new BusinessException(ErrorCode.PARAMS_ERROR,"id不能为空");
} }
//获取前端传递过来的code //获取前端传递过来的code
String code = param.get("code").toString(); String code = param.getCode();
// 调用微信获取openid接口 // 调用微信获取openid接口
Map<String, Object> wx_result = vvRequester.loginApp(code); Map<String, Object> wx_result = vvRequester.loginApp(code);
@@ -105,11 +113,10 @@ public class UserController {
//查询用户 //查询用户
String openId = wx_result.get("openid").toString(); String openId = wx_result.get("openid").toString();
String sessionKey = wx_result.get("session_key").toString();
// 创建一个临时model // 创建一个临时model
UserModel tempModel = new UserModel(); UserModel tempModel = new UserModel();
tempModel.setId(Integer.valueOf(param.get("id").toString())); tempModel.setId(param.getId());
tempModel.setUserChatId(openId); tempModel.setUserChatId(openId);
int i = userDao.updateById(tempModel); int i = userDao.updateById(tempModel);
if (i == 1) { if (i == 1) {
@@ -133,13 +140,13 @@ public class UserController {
// 手机号登录 / 注册 // 手机号登录 / 注册
@PostMapping("loginWithPhoneNumber") @PostMapping("loginWithPhoneNumber")
public ResponseData<Object> loginWithPhoneNumber(@RequestBody Map<String,Object> param) { public ResponseData<Object> loginWithPhoneNumber(@RequestBody UserLoginWithPhoneNumberDTO param) {
if (!param.containsKey("code")) { if (param == null || param.getCode() == null) {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"code不能为空"); throw new BusinessException(ErrorCode.PARAMS_ERROR,"code不能为空");
} }
String code = param.get("code").toString(); String code = param.getCode();
String phoneNumber = vvRequester.queryPhoneNumber(code); String phoneNumber = vvRequester.queryPhoneNumber(code);
if (phoneNumber.isEmpty()) { if (phoneNumber.isEmpty()) {
throw new BusinessException(ErrorCode.PARAMS_ERROR,"手机号码无法查询"); throw new BusinessException(ErrorCode.PARAMS_ERROR,"手机号码无法查询");
@@ -165,8 +172,8 @@ public class UserController {
userDao.insert(tempModel); userDao.insert(tempModel);
// 判断用户是否为邀请用户 // 判断用户是否为邀请用户
if (param.containsKey("inviterId")) { if (param.getInviterId() != null) {
int inviterId = (int) param.get("inviterId"); int inviterId = param.getInviterId();
// 查询用户增加积分 // 查询用户增加积分
UserModel oldUser = userDao.selectById(inviterId); UserModel oldUser = userDao.selectById(inviterId);
oldUser.setPoints(oldUser.getPoints() + 10); oldUser.setPoints(oldUser.getPoints() + 10);
@@ -211,10 +218,10 @@ public class UserController {
// 查询用户所有pk数据 // 查询用户所有pk数据
@PostMapping("queryMyAllPkData") @PostMapping("queryMyAllPkData")
public ResponseData<Object> queryMyAllPkData(@RequestBody Map<String,Integer> map) { public ResponseData<Object> queryMyAllPkData(@RequestBody UserQueryMyAllPkDataDTO request) {
Integer userId = map.get("userId"); Integer userId = request.getUserId();
Integer page = map.get("page"); Integer page = request.getPage();
Integer size = map.get("size"); Integer size = request.getSize();
List<PkInfoModel> pkInfoModels = pkInfoDao.queryAllPkData(userId, page * size, size); List<PkInfoModel> pkInfoModels = pkInfoDao.queryAllPkData(userId, page * size, size);
long currentTimeStamp = VVTools.currentTimeStamp(); long currentTimeStamp = VVTools.currentTimeStamp();
// 查找置顶的数据 // 查找置顶的数据
@@ -226,11 +233,11 @@ public class UserController {
// 查询我的pk记录 列表 // 查询我的pk记录 列表
@PostMapping("handlePkInfo") @PostMapping("handlePkInfo")
public ResponseData<Object> handlePkInfo(@RequestBody Map<String,Integer> map) { public ResponseData<Object> handlePkInfo(@RequestBody UserHandlePkInfoDTO request) {
Integer type = map.get("type"); Integer type = request.getType();
Integer id = map.get("userId"); Integer id = request.getUserId();
Integer page = map.get("page"); Integer page = request.getPage();
Integer size = map.get("size"); Integer size = request.getSize();
// 我发起的pk数据 // 我发起的pk数据
if (type == 1) { if (type == 1) {
@@ -245,8 +252,8 @@ public class UserController {
// 查詢单条pk记录详情 // 查詢单条pk记录详情
@PostMapping("pkRecordDetail") @PostMapping("pkRecordDetail")
public ResponseData<Object> pkRecordDetail(@RequestBody Map<String,Integer> map) { public ResponseData<Object> pkRecordDetail(@RequestBody UserPkRecordDetailDTO request) {
Integer id = map.get("id"); Integer id = request.getId();
List<PkRecordDetail> pkRecordDetails = detailDao.queryDetail(id); List<PkRecordDetail> pkRecordDetails = detailDao.queryDetail(id);
return ResponseData.success(pkRecordDetails); return ResponseData.success(pkRecordDetails);
} }
@@ -289,13 +296,13 @@ public class UserController {
// 置顶文章 // 置顶文章
@PostMapping("pinToTop") @PostMapping("pinToTop")
public ResponseData<Object> pinToTop(@RequestBody Map<String,Integer> map) { public ResponseData<Object> pinToTop(@RequestBody UserPinToTopDTO request) {
// 文章id // 文章id
Integer articleId = map.get("articleId"); Integer articleId = request.getArticleId();
PkInfoModel pkInfoModel = pkInfoDao.selectById(articleId); PkInfoModel pkInfoModel = pkInfoDao.selectById(articleId);
Integer userId = pkInfoModel.getSenderId(); Integer userId = pkInfoModel.getSenderId();
// 到期时间戳 // 到期时间戳
Integer pinExpireTime = map.get("pinExpireTime"); Integer pinExpireTime = request.getPinExpireTime();
long currentTimeStamp = VVTools.currentTimeStamp(); long currentTimeStamp = VVTools.currentTimeStamp();
long hour = VVTools.calculateHoursRound(pinExpireTime, currentTimeStamp); long hour = VVTools.calculateHoursRound(pinExpireTime, currentTimeStamp);
@@ -335,8 +342,8 @@ public class UserController {
// 取消置顶 // 取消置顶
@PostMapping("cancelPin") @PostMapping("cancelPin")
public ResponseData<Object> cancelPin(@RequestBody Map<String,Integer> map) { public ResponseData<Object> cancelPin(@RequestBody UserCancelPinDTO request) {
Integer articleId = map.get("articleId"); Integer articleId = request.getArticleId();
PkInfoModel pkInfoModel = pkInfoDao.selectById(articleId); PkInfoModel pkInfoModel = pkInfoDao.selectById(articleId);
Integer pinExpireTime = pkInfoModel.getPinExpireTime(); Integer pinExpireTime = pkInfoModel.getPinExpireTime();
long hour = VVTools.calculateHoursFloor(pinExpireTime, VVTools.currentTimeStamp()); long hour = VVTools.calculateHoursFloor(pinExpireTime, VVTools.currentTimeStamp());
@@ -371,10 +378,10 @@ public class UserController {
// 获取积分明细 // 获取积分明细
@PostMapping("pointsDetail") @PostMapping("pointsDetail")
public ResponseData<Object> pointsDetail(@RequestBody Map<String,Integer> map) { public ResponseData<Object> pointsDetail(@RequestBody UserPointsDetailDTO request) {
Integer userId = map.get("userId"); Integer userId = request.getUserId();
Integer page = map.get("page"); Integer page = request.getPage();
Integer size = map.get("size"); Integer size = request.getSize();
List<CoinRecords> coinRecords = coinRecordsDao.fetchMyPointsData(userId, page * size, size); List<CoinRecords> coinRecords = coinRecordsDao.fetchMyPointsData(userId, page * size, size);
return ResponseData.success(coinRecords); return ResponseData.success(coinRecords);
} }

View File

@@ -0,0 +1,8 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
@Data
public class PkDeleteByIdDTO {
private Integer id;
}

View File

@@ -0,0 +1,8 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
@Data
public class PkFetchDetailDTO {
private Integer id;
}

View File

@@ -0,0 +1,10 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
@Data
public class PkInfoDetailDTO {
private Integer id;
private Integer userId;
private Integer from;
}

View File

@@ -0,0 +1,13 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
import java.util.Map;
@Data
public class PkListRequestDTO {
private Integer page;
private Integer size;
private Map<String, Object> condition;
private Integer userId;
}

View File

@@ -0,0 +1,8 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
@Data
public class PkListUninvitedDTO {
private Integer userId;
}

View File

@@ -0,0 +1,8 @@
package vvpkassistant.pk.model.DTO;
import lombok.Data;
@Data
public class PkQueryMyCanUseDTO {
private Integer userId;
}

View File

@@ -1,11 +1,12 @@
package vvpkassistant.pk.service; package vvpkassistant.pk.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import vvpkassistant.pk.model.DTO.PkInfoDetailDTO;
import vvpkassistant.pk.model.DTO.PkListRequestDTO;
import vvpkassistant.pk.model.PkInfoModel; import vvpkassistant.pk.model.PkInfoModel;
import vvpkassistant.pk.model.PkRecord; import vvpkassistant.pk.model.PkRecord;
import java.util.List; import java.util.List;
import java.util.Map;
/* /*
* @author: ziin * @author: ziin
@@ -18,7 +19,7 @@ public interface PKService extends IService<PkInfoModel> {
PkRecord createPKRecord(PkRecord record); PkRecord createPKRecord(PkRecord record);
List<PkInfoModel> getPKList(Map<String, Object> map); List<PkInfoModel> getPKList(PkListRequestDTO request);
PkInfoModel pkInfoDetail(Map<String, Integer> map); PkInfoModel pkInfoDetail(PkInfoDetailDTO request);
} }

View File

@@ -14,6 +14,8 @@ import vvpkassistant.config.FunctionConfigHolder;
import vvpkassistant.exception.BusinessException; import vvpkassistant.exception.BusinessException;
import vvpkassistant.pk.mapper.PkInfoDao; import vvpkassistant.pk.mapper.PkInfoDao;
import vvpkassistant.pk.mapper.PkRecordDao; import vvpkassistant.pk.mapper.PkRecordDao;
import vvpkassistant.pk.model.DTO.PkInfoDetailDTO;
import vvpkassistant.pk.model.DTO.PkListRequestDTO;
import vvpkassistant.pk.model.PkInfoModel; import vvpkassistant.pk.model.PkInfoModel;
import vvpkassistant.pk.model.PkRecord; import vvpkassistant.pk.model.PkRecord;
@@ -147,11 +149,11 @@ public class PKServiceImpl extends ServiceImpl<PkInfoDao, PkInfoModel> implement
} }
@Override @Override
public List<PkInfoModel> getPKList(Map<String, Object> map) { public List<PkInfoModel> getPKList(PkListRequestDTO request) {
Integer page = (Integer) map.get("page"); Integer page = request.getPage();
Integer size = (Integer) map.get("size"); Integer size = request.getSize();
Map<String,Object> condition = (Map<String, Object>) map.get("condition"); Map<String,Object> condition = request.getCondition();
Map<String, Long> todayTimeStampMap = VVTools.startAndEndTimeStampForToday(); Map<String, Long> todayTimeStampMap = VVTools.startAndEndTimeStampForToday();
Long start = VVTools.currentTimeStamp(); Long start = VVTools.currentTimeStamp();
@@ -162,9 +164,9 @@ public class PKServiceImpl extends ServiceImpl<PkInfoDao, PkInfoModel> implement
long currentTimeStamp = VVTools.currentTimeStamp(); long currentTimeStamp = VVTools.currentTimeStamp();
//如果传了用户id //如果传了用户id
if (map.containsKey("userId")) { if (request.getUserId() != null) {
Long begin = VVTools.currentTimeStamp(); Long begin = VVTools.currentTimeStamp();
Integer userId = Integer.valueOf(map.get("userId").toString()); Integer userId = request.getUserId();
// 查询出当前用户大于等于今天的已接受邀请的pk数据 // 查询出当前用户大于等于今天的已接受邀请的pk数据
List<PkRecord> pkRecords = pkRecordDao.fetchDataFromTodayWithUserId(userId, begin); List<PkRecord> pkRecords = pkRecordDao.fetchDataFromTodayWithUserId(userId, begin);
// 遍历查询出的数据。如果文章的id相同。就显示完整的主播名称 // 遍历查询出的数据。如果文章的id相同。就显示完整的主播名称
@@ -202,10 +204,10 @@ public class PKServiceImpl extends ServiceImpl<PkInfoDao, PkInfoModel> implement
} }
@Override @Override
public PkInfoModel pkInfoDetail(Map<String, Integer> map) { public PkInfoModel pkInfoDetail(PkInfoDetailDTO request) {
Integer id = map.get("id"); Integer id = request.getId();
Integer userId = map.get("userId"); Integer userId = request.getUserId();
Integer from = map.get("from"); // 1 首页 2 聊天 Integer from = request.getFrom(); // 1 首页 2 聊天
PkInfoModel pkInfoModel = pkInfoDao.selectById(id); PkInfoModel pkInfoModel = pkInfoDao.selectById(id);
if (pkInfoModel == null) { if (pkInfoModel == null) {