datai/datai-scenes/datai-scene-salesforce/docs/prompts/007-login-history-query-and-auto-login.md
Kris 469c78cf29 feat: REQ-010-1 完成数据库表结构设计和创建,REQ-010-2 完成基础实体类和Mapper创建需求定义和架构决策
REQ-010-1 完成内容:
- 创建 6 个数据库表设计(datai_meta_org_config、datai_meta_task、datai_meta_job_execution、datai_meta_component、datai_meta_deploy_history、datai_meta_job_log)
- 设计了合理的索引策略
- 对敏感字段进行了加密存储设计
- 表名前缀统一为 datai_meta_
- 所有表包含标准基础字段

REQ-010-2 完成内容:
- 补充用户故事和细化验收标准
- 创建架构决策记录(MyBatis Plus 注解 + XML 映射文件混合方案)
- 对比了 3 种备选方案
- 分析了决策对系统架构、开发流程、运维管理的影响
- 识别了技术风险、业务风险和实施风险
- 定义了回滚策略和验收标准

文档更新:
- 创建 0010-database-table-design.md 架构决策记录
- 创建 0011-entity-mapper-create.md 架构决策记录
- 创建 0020-database-table-design-create.md 变更记录
- 创建 20260117-database-table-design-create.md 会话记录
- 创建 20260117-database-table-design-create-retro.md 复盘报告
- 创建 011-database-table-design-create.md 提示词文档
- 更新 REQ-010-2.md 需求文档
- 更新 docs/index.md 和 CHANGELOG.md
2026-01-18 19:44:13 +08:00

6.2 KiB
Raw Blame History

name description version
PROMPT-007 查询不同类型ORG登录历史及自动登录功能实现 1.0.0

提示词: 查询不同类型ORG登录历史及自动登录功能实现

元数据 (Metadata)

  • name: login-history-query-and-auto-login
  • description: 为查询不同类型ORG登录历史及自动登录功能需求生成代码实现
  • version: 1.0.0
  • author: SSOT Architect
  • lastUpdated: 2026-01-16

目标 (Goal)

为"查询不同类型ORG登录历史及自动登录功能"需求生成代码实现,包括 Controller 层和 Service 层的新方法。

必须引用的文档

  • REQ-007 - 需求文档,定义了功能需求和验收标准
  • ADR-007 - 架构决策,定义了技术方案和实施计划

参考文档

代码参考

输入变量 (Inputs)

必填变量

可选变量

提示词内容 (Prompt Content)

你是 Java 后端开发专家,负责为 Salesforce 集成系统实现查询不同类型ORG登录历史及自动登录功能。

## 上下文信息

基于以下文档:
- [REQ-007](../../requirements/REQ-007.md) - 需求文档,定义了功能需求和验收标准
- [ADR-007](../../decisions/adr/0007-login-history-query-and-auto-login.md) - 架构决策,定义了技术方案和实施计划

## 搜索策略

在开始执行前,请搜索以下文件作为参考:
1. 搜索关键词:`DataISfLoginController`文件类型Java
2. 搜索关键词:`IDataiSfLoginHistoryService`文件类型Java
3. 搜索关键词:`DataiSfLoginHistory`文件类型Java

## 任务描述

请根据 ADR-007 中定义的技术方案,为 `DataISfLoginController` 添加以下两个接口:

### 接口1: 查询不同类型org成功登录历史

**接口路径**: `GET /salesforce/login/history/success/{orgType}`

**功能描述**: 查询指定类型的成功登录历史记录

**实现要求**:
1. 使用 `@GetMapping` 注解
2. 使用 `@Operation` 注解添加接口描述
3. 使用 `@PathVariable` 接收 orgType 参数
4. 调用 `loginHistoryService.selectSuccessLoginHistoryByOrgType(orgType)` 方法
5. 返回 `AjaxResult.success("查询成功", historyList)`
6. 添加详细的日志记录
7. 添加异常处理

### 接口2: 根据对应登录成功历史登录不同的org

**接口路径**: `POST /salesforce/login/autoLoginByHistory`

**功能描述**: 根据指定的登录历史记录自动登录到对应ORG

**实现要求**:
1. 使用 `@PostMapping` 注解
2. 使用 `@Operation` 注解添加接口描述
3. 使用 `@RequestBody` 接收请求参数Map<String, Long>,包含 historyId
4. 调用 `loginHistoryService.selectDataiSfLoginHistoryById(historyId)` 方法查询历史记录
5. 如果历史记录不存在,返回错误信息
6. 调用 `salesforceLoginService.autoLogin(historyId)` 方法执行自动登录
7. 返回 `AjaxResult.success("自动登录成功", result)`
8. 添加详细的日志记录
9. 添加异常处理

同时,请在 `IDataiSfLoginHistoryService` 接口中添加以下两个方法:

### Service 方法1: 查询成功登录历史

```java
List<DataiSfLoginHistory> selectSuccessLoginHistoryByOrgType(String orgType);

Service 方法2: 根据ID查询登录历史

DataiSfLoginHistory selectDataiSfLoginHistoryById(Long id);

执行步骤

  1. 搜索并阅读 DataISfLoginController.java 文件
  2. 搜索并阅读 IDataiSfLoginHistoryService.java 文件
  3. 搜索并阅读 DataiSfLoginHistory.java 文件
  4. DataISfLoginController 添加两个新接口
  5. IDataiSfLoginHistoryService 添加两个新方法签名
  6. DataiSfLoginHistoryServiceImpl 添加两个新方法实现
  7. 确保代码风格与现有代码一致
  8. 添加详细的注释和日志

输出要求

  • 必须符合现有代码风格
  • 必须包含完整的注释
  • 必须包含异常处理
  • 必须包含日志记录
  • 必须使用现有的工具类AjaxResult、Logger
  • 必须遵循 Spring Boot 和 MyBatis Plus 的最佳实践

输出格式

请按照以下格式输出:

1. DataISfLoginController 新增代码

// 在 DataISfLoginController 中添加的代码

2. IDataiSfLoginHistoryService 新增代码

// 在 IDataiSfLoginHistoryService 中添加的代码

3. DataiSfLoginHistoryServiceImpl 新增代码

// 在 DataiSfLoginHistoryServiceImpl 中添加的代码

4. Mapper XML 新增代码(如果需要)

<!-- 在 Mapper XML 中添加的代码 -->

## 输出定义 (Output Definition)

### 输出格式
Java Code

### 输出结构
1. DataISfLoginController 新增代码
2. IDataiSfLoginHistoryService 新增代码
3. DataiSfLoginHistoryServiceImpl 新增代码
4. Mapper XML 新增代码(如果需要)

### 输出要求
- 必须符合现有代码风格
- 必须包含完整的注释
- 必须包含异常处理
- 必须包含日志记录
- 必须使用现有的工具类AjaxResult、Logger
- 必须遵循 Spring Boot 和 MyBatis Plus 的最佳实践

### 输出示例

```java
@Operation(summary = "查询不同类型ORG成功登录历史")
@GetMapping("/history/success/{orgType}")
public AjaxResult getSuccessLoginHistoryByOrgType(@PathVariable String orgType) {
    logger.info("接收到查询登录历史请求ORG类型: {}", orgType);
    
    try {
        List<DataiSfLoginHistory> historyList = loginHistoryService.selectSuccessLoginHistoryByOrgType(orgType);
        return AjaxResult.success("查询成功", historyList);
    } catch (Exception e) {
        logger.error("查询登录历史请求处理失败: {}", e.getMessage(), e);
        return AjaxResult.error("查询失败: " + e.getMessage());
    }
}

版本历史 (Version History)

版本 日期 变更内容 变更人
1.0.0 2026-01-16 初始版本 SSOT Architect