5.5 KiB
5.5 KiB
提示词:认证和会话管理
引用真源
需求描述
根据需求文档,实现 Salesforce Partner API 的认证和会话管理功能,包括:
- 获取会话信息(Session ID、实例 URL)
- 获取用户信息(用户 ID、用户名、邮箱、组织信息等)
- 修改密码(旧密码验证、新密码设置)
- 工厂模式管理连接(连接缓存、自动 Session 有效性检查)
- RESTful API 接口(获取会话信息、获取用户信息、修改密码)
设计方案
根据设计文档,采用以下技术方案:
- 工厂模式:使用 PartnerConnectionFactory 工厂类创建和管理 PartnerConnection 连接,继承 AbstractConnectionFactory 抽象类
- 连接缓存:利用 AbstractConnectionFactory 提供的连接缓存和自动 Session 有效性检查功能
- 会话管理:集成 SessionManager 获取会话信息,支持 Session 过期时自动重新登录
- RESTful API:提供 3 个 REST API 接口(获取会话信息、获取用户信息、修改密码)
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 技术栈:Spring Boot 3.x、Spring Security 6.x、MyBatis Plus 3.x、Salesforce Partner API WSC 58.x
- 数据模型:不涉及数据库表,所有数据均来自 Salesforce API
- 性能优化:连接缓存、多线程安全、压缩传输
- 安全设计:HTTPS 加密传输、权限控制、防注入
输出格式要求
-
必须包含以下文件:
- Factory:
PartnerConnectionFactory.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/factory/PartnerConnectionFactory.java) - Service 接口:
IPartnerConnectionService.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/IPartnerConnectionService.java) - Service 实现:
PartnerConnectionServiceImpl.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/service/impl/PartnerConnectionServiceImpl.java) - Controller:
PartnerConnectionController.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/controller/PartnerConnectionController.java) - DTO:
SessionInfoDto.java、UserInfoDto.java、ChangePasswordDto.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/dto/) - VO:
SessionInfoVo.java、UserInfoVo.java(路径:datai-salesforce-partner/src/main/java/com/datai/partner/model/vo/)
- Factory:
-
必须包含单元测试:
PartnerConnectionServiceImplTest.java(路径:datai-salesforce-partner/src/test/java/com/datai/partner/service/impl/PartnerConnectionServiceImplTest.java)
-
必须符合 Spring Boot 最佳实践
-
必须遵循若依框架规范
-
必须使用 partner.jar 中的现有类(Connector、PartnerConnection、GetUserInfoResult 等)
代码规范要求
- 类命名:首字母大写,驼峰命名,如
PartnerConnectionFactory - 方法命名:首字母小写,驼峰命名,如
getSessionId - 变量命名:首字母小写,驼峰命名,如
sessionId - 注释规范:
- 类注释:使用
/** */,包含类功能描述、作者、创建时间 - 方法注释:使用
/** */,包含方法功能、参数、返回值、异常描述 - 字段注释:使用
/** */,包含字段功能描述
- 类注释:使用
- 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
- 导入规范:使用 import 静态导入,避免通配符导入
- 包结构:按照 Controller、Service、Factory、DTO、VO 分层组织
测试要求
- 单元测试覆盖率不低于 80%
- 测试用例包含以下场景:
- 获取会话信息成功
- 获取用户信息成功
- 修改密码成功
- Session 无效异常
- Session 过期异常
- 连接失败异常
- 使用 JUnit 5 和 Mockito 进行测试
- 测试用例命名规范:
test+方法名+场景,如testGetSessionIdSuccess - 测试数据使用 Mockito 模拟 SessionManager 和 PartnerConnection
注意事项
- 必须使用 partner.jar 中的现有类(Connector、PartnerConnection、GetUserInfoResult 等),不进行二次封装
- 必须继承 AbstractConnectionFactory,利用其提供的连接缓存和自动 Session 有效性检查功能
- 必须使用 SessionManager 获取会话信息,固定使用 "source" orgType
- 必须使用 datai-salesforce-common 模块的异常类(SalesforceAuthException、SalesforceLoginException 等)
- 必须使用 @PreAuthorize("@ss.hasLogin()") 进行权限控制
- 必须使用 @Valid 注解进行参数验证
- 必须使用 @Tag 和 @Operation 注解生成 Swagger 文档
- 必须使用 @Slf4j 注解进行日志记录
- 必须使用 @Autowired 注解进行依赖注入
- 必须使用 @RestController 和 @RequestMapping 注解定义 REST API
- 必须使用 @GetMapping、@PostMapping 注解定义 HTTP 方法
- 必须使用 @RequestBody 注解接收请求体参数
- 必须使用 @Schema 注解定义 Swagger 文档
- 必须使用 Lombok 的 @Data、@EqualsAndHashCode 等注解简化代码
- 必须使用 @Component 注解标记 Factory 类为 Spring 组件
- 必须使用 @Service 注解标记 Service 实现类为 Spring 服务
- 必须使用 @Override 注解标记重写的方法
- 必须使用 try-catch 块捕获异常,并转换为自定义异常
- 必须使用 log.error() 记录错误日志
- 必须使用 log.info() 记录操作日志