# java110-interface 模块技术文档
## 模块概述
`java110-interface` 是 MicroCommunity 微服务架构中的接口定义模块,基于 Spring Cloud OpenFeign 技术栈,为系统内各微服务提供统一的 Feign 客户端接口定义。本模块包含 584 个业务接口,覆盖社区管理系统的所有核心业务领域。
## 技术架构
### 核心组件
1. **Feign 客户端配置**
- `FeignConfiguration`: Feign 客户端全局配置类
- `UserErrorDecoder`: 自定义错误解码器,处理服务调用异常
2. **接口定义规范**
- 所有接口均使用 `@FeignClient` 注解声明
- 统一的服务间调用异常处理机制
- 支持日志级别动态配置
### 技术栈
- **Spring Cloud OpenFeign**: 微服务接口调用框架
- **Spring Boot**: 应用基础框架
- **Maven**: 项目构建工具
- **JUnit**: 单元测试框架
## 依赖关系
```xml
com.java110
java110-bean
provided
org.springframework.cloud
spring-cloud-starter-openfeign
provided
```
## 核心功能模块
### 1. 用户管理模块 (73个接口)
- **业主管理**: `IOwnerInnerServiceSMO`, `IOwnerV1InnerServiceSMO`
- **员工管理**: `IStaffAppAuthInnerServiceSMO`, `IStaffCommunityV1InnerServiceSMO`
- **权限管理**: `IPrivilegeGroupV1InnerServiceSMO`, `IPrivilegeUserV1InnerServiceSMO`
- **组织架构**: `IOrgInnerServiceSMO`, `IOrgV1InnerServiceSMO`
- **车辆管理**: `IOwnerCarInnerServiceSMO`, `IOwnerCarV1InnerServiceSMO`
### 2. 费用管理模块 (60个接口)
- **费用配置**: `IFeeConfigInnerServiceSMO`, `IPayFeeConfigV1InnerServiceSMO`
- **收费管理**: `IFeeInnerServiceSMO`, `IPayFeeV1InnerServiceSMO`
- **费用折扣**: `IFeeDiscountInnerServiceSMO`, `IFeeDiscountRuleInnerServiceSMO`
- **打印管理**: `IFeePrintPageV1InnerServiceSMO`, `IFeePrintSpecInnerServiceSMO`
- **临时车费**: `ITempCarFeeConfigInnerServiceSMO`, `IComputeTempCarFee`
### 3. 社区管理模块 (99个接口)
- **社区基础**: `ICommunityInnerServiceSMO`, `ICommunityV1InnerServiceSMO`
- **楼栋单元**: `IFloorInnerServiceSMO`, `IUnitInnerServiceSMO`
- **房间管理**: `IRoomInnerServiceSMO`, `IRoomV1InnerServiceSMO`
- **巡检管理**: `IInspectionInnerServiceSMO`, `IInspectionPlanInnerServiceSMO`
- **维修管理**: `IRepairInnerServiceSMO`, `IRepairUserInnerServiceSMO`
- **停车场管理**: `IParkingAreaInnerServiceSMO`, `IParkingSpaceInnerServiceSMO`
### 4. 其他业务模块
- **订单管理**: `IOrderInnerServiceSMO`, `ICordersInnerServiceSMO`
- **商品管理**: `goods` 目录下的接口
- **OA系统**: `oa` 目录下的接口
- **报表管理**: `report` 目录下的接口
- **供应链管理**: `scm` 目录下的接口
## 配置说明
### Feign 客户端配置
```java
@Configuration
public class FeignConfiguration {
@Bean
public ErrorDecoder errorDecoder() {
return new UserErrorDecoder();
}
@Bean
Logger.Level feignLoggerLevel() {
if (SystemLogDto.getLogSwatch()) {
return Logger.Level.FULL;
} else {
return Logger.Level.NONE;
}
}
}
```
### 自定义错误解码器
```java
public class UserErrorDecoder implements ErrorDecoder {
public Exception decode(String methodKey, Response response) {
// 处理服务调用异常,400+状态码转换为 HystrixBadRequestException
// 其他异常记录日志并返回 RuntimeException
}
}
```
## 使用示例
### 1. 服务调用示例
```java
@Autowired
private IUserInnerServiceSMO userInnerService;
// 查询用户信息
List users = userInnerService.getUsers(userDto);
// 查询员工数量
int staffCount = userInnerService.getStaffCount(userDto);
```
### 2. 接口定义规范
```java
@FeignClient(name = "user-service", configuration = {FeignConfiguration.class})
@RequestMapping("/userApi")
public interface IUserInnerServiceSMO {
@RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)
List getUserInfo(@RequestParam("userIds") String[] userIds);
@RequestMapping(value = "/getStaffs", method = RequestMethod.POST)
List getStaffs(@RequestBody UserDto userDto);
}
```
## 开发规范
### 1. 接口命名规范
- 接口类名以 `I` 开头,以 `InnerServiceSMO` 结尾
- 方法名使用驼峰命名法,清晰表达业务功能
- 版本控制使用 `V1` 后缀标识
### 2. 参数传递规范
- 简单参数使用 `@RequestParam` 注解
- 复杂对象使用 `@RequestBody` 注解
- 批量查询支持数组参数
### 3. 异常处理规范
- 服务调用异常由 `UserErrorDecoder` 统一处理
- 400+ 状态码转换为 `HystrixBadRequestException`
- 其他异常记录详细日志信息
## 目录结构
```
java110-interface/
├── src/main/java/com/java110/
│ ├── config/ # 配置类
│ │ ├── feign/ # Feign 配置
│ │ │ ├── FeignConfiguration.java
│ │ │ └── UserErrorDecoder.java
│ │ └── App.java # 启动类
│ └── intf/ # 业务接口定义
│ ├── user/ # 用户管理接口 (73个)
│ ├── fee/ # 费用管理接口 (60个)
│ ├── community/ # 社区管理接口 (99个)
│ ├── order/ # 订单管理接口 (4个)
│ └── ... # 其他业务接口
├── pom.xml # Maven 配置
└── README.md # 本文档
```
## 注意事项
1. **服务发现**: 确保目标服务在服务注册中心可用
2. **超时配置**: 根据业务需求合理设置调用超时时间
3. **熔断机制**: 结合 Hystrix 实现服务熔断和降级
4. **日志管理**: 通过系统日志开关控制 Feign 日志级别
## 版本信息
- **当前版本**: 1.0-SNAPSHOT
- **父项目**: MicroCommunity
- **打包方式**: jar
---