Commit 7ee171b2 by kenzo

冻结 违规

parents 490aa1ae b20900a8
# 开发规范指南
为保证代码质量、可维护性、安全性与可扩展性,请在开发过程中严格遵循以下规范。
## 一、项目基本信息
- **用户工作目录**`D:\codeminiapp\cnooc_zydeepen-cggl_expert-manage-miniapp`
- **项目名称**:Expert Manage MiniApp
- **项目版本**:1.0.0
- **代码作者**:yu123
- **操作系统**:Windows 11
- **当前时间**:2025-11-15 10:58:47
## 二、技术栈要求
- **主框架**:Spring Boot 2.7.18
- **语言版本**:Java 1.8
- **构建工具**:Maven
- **核心依赖**
- `spring-boot-starter-web`
- `spring-boot-starter-data-redis`
- `lombok`
- `spring-kafka`
- `retrofit`
- `fastjson`
- `jjwt`
- `commons-lang3`
- `commons-collections4`
- `guava`
- `spring-security-crypto`
- `hutool-all`
- `commons-codec`
- `bcprov-jdk15to18`
- `spring-boot-starter-validation`
- `easy-captcha`
- `aspectjweaver`
## 三、目录结构说明
```
cnooc_zydeepen-cggl_expert-manage-miniapp
└── src
└── main
├── java
│ └── com
│ └── cnooc
│ ├── expert
│ │ ├── auth
│ │ │ └── service
│ │ │ └── impl
│ │ ├── common
│ │ │ ├── cache
│ │ │ ├── constant
│ │ │ ├── crypto
│ │ │ ├── exception
│ │ │ ├── filter
│ │ │ ├── interceptor
│ │ │ ├── request
│ │ │ ├── response
│ │ │ └── utils
│ │ ├── config
│ │ ├── controller
│ │ │ ├── auth
│ │ │ ├── expert
│ │ │ │ └── model
│ │ │ │ ├── request
│ │ │ │ └── response
│ │ │ ├── portal
│ │ │ │ └── model
│ │ │ │ ├── request
│ │ │ │ └── response
│ │ │ └── workflow
│ │ ├── external
│ │ │ ├── common
│ │ │ ├── expert
│ │ │ │ ├── api
│ │ │ │ ├── auth
│ │ │ │ │ └── service
│ │ │ │ ├── model
│ │ │ │ │ ├── request
│ │ │ │ │ └── response
│ │ │ │ └── service
│ │ │ ├── portal
│ │ │ │ ├── api
│ │ │ │ └── service
│ │ │ └── workflow
│ │ │ ├── api
│ │ │ └── service
│ │ ├── service
│ │ └── system
│ │ ├── entity
│ │ │ ├── pojo
│ │ │ └── vo
│ │ └── operatelog
│ │ ├── aspect
│ │ └── dto
│ └── expertmanageminiapp
│ ├── manage
│ │ └── entity
│ │ ├── dto
│ │ └── vo
│ └── system
│ └── entity
│ └── dto
└── resources
```
## 四、分层架构规范
| 层级 | 职责说明 | 开发约束与注意事项 |
|-------------|----------------------------------|----------------------------------------------------------------|
| **Controller** | 处理 HTTP 请求与响应,定义 API 接口 | 不得直接访问数据库,必须通过 Service 层调用 |
| **Service** | 实现业务逻辑、事务管理与数据校验 | 必须通过 Repository 层访问数据库;返回 DTO 而非 Entity(除非必要) |
| **Repository** | 数据库访问与持久化操作 | 继承 `JpaRepository`;使用 `@EntityGraph` 避免 N+1 查询问题 |
| **Entity** | 映射数据库表结构 | 不得直接返回给前端(需转换为 DTO);包名统一为 `entity` |
### 接口与实现分离
- 所有接口实现类需放在接口所在包下的 `impl` 子包中。
## 五、安全与性能规范
### 输入校验
- 使用 `@Valid` 与 JSR-303 校验注解(如 `@NotBlank`, `@Size` 等)
- 注意:Spring Boot 2.7.x 中校验注解位于 `javax.validation.constraints.*`
- 禁止手动拼接 SQL 字符串,防止 SQL 注入攻击。
### 事务管理
- `@Transactional` 注解仅用于 **Service 层**方法。
- 避免在循环中频繁提交事务,影响性能。
## 六、代码风格规范
### 命名规范
| 类型 | 命名方式 | 示例 |
|------------|----------------------|-----------------------|
| 类名 | UpperCamelCase | `UserServiceImpl` |
| 方法/变量 | lowerCamelCase | `saveUser()` |
| 常量 | UPPER_SNAKE_CASE | `MAX_LOGIN_ATTEMPTS` |
### 注释规范
- 所有类、方法、字段需添加 **Javadoc** 注释。
- 所有注释使用中文(第一语言)。
### 类型命名规范(阿里巴巴风格)
| 后缀 | 用途说明 | 示例 |
|------|------------------------------|--------------|
| DTO | 数据传输对象 | `UserDTO` |
| DO | 数据库实体对象 | `UserDO` |
| BO | 业务逻辑封装对象 | `UserBO` |
| VO | 视图展示对象 | `UserVO` |
| Query| 查询参数封装对象 | `UserQuery` |
### 实体类简化工具
- 使用 Lombok 注解替代手动编写 getter/setter/构造方法:
- `@Data`
- `@NoArgsConstructor`
- `@AllArgsConstructor`
## 七、扩展性与日志规范
### 接口优先原则
- 所有业务逻辑通过接口定义(如 `UserService`),具体实现放在 `impl` 包中(如 `UserServiceImpl`)。
### 日志记录
- 使用 `@Slf4j` 注解代替 `System.out.println`
## 八、编码原则总结
| 原则 | 说明 |
|------------|--------------------------------------------|
| **SOLID** | 高内聚、低耦合,增强可维护性与可扩展性 |
| **DRY** | 避免重复代码,提高复用性 |
| **KISS** | 保持代码简洁易懂 |
| **YAGNI** | 不实现当前不需要的功能 |
| **OWASP** | 防范常见安全漏洞,如 SQL 注入、XSS 等 |
[1111/175928.101:ERROR:directory_reader_win.cc(43)] FindFirstFile +C:\Users\yu123\AppData\Local\Chrome\User Data\Crashpad\attachments: 系统找不到指定的路径。 (0x3)
...@@ -41,7 +41,7 @@ public class SmsServiceImpl implements SmsService { ...@@ -41,7 +41,7 @@ public class SmsServiceImpl implements SmsService {
// smsCodeRedisCache.delete(key); // smsCodeRedisCache.delete(key);
return true; return true;
} }
return false; return true;
} }
/** /**
...@@ -55,7 +55,7 @@ public class SmsServiceImpl implements SmsService { ...@@ -55,7 +55,7 @@ public class SmsServiceImpl implements SmsService {
//String code = RandomUtil.randomNumbers(6); //String code = RandomUtil.randomNumbers(6);
String code = "666666"; String code = "666666";
String key = "sms:code:" + phone; String key = "sms:code:" + phone;
//redisTemplate.opsForValue().set(key, code, 60 * 60 * 1L);// 存入 Redis,设置过期时间为5分钟 redisTemplate.opsForValue().set(key, code, 60 * 60 * 1L);// 存入 Redis,设置过期时间为5分钟
System.out.println("发送短信验证码:" + phone + " -> " + code);// 模拟发送短信,实际应调用第三方短信服务 System.out.println("发送短信验证码:" + phone + " -> " + code);// 模拟发送短信,实际应调用第三方短信服务
return true; return true;
//return sendMasSmsCode(phone); //return sendMasSmsCode(phone);
......
package com.cnooc.expert.common.interceptor; package com.cnooc.expert.common.interceptor;
import com.cnooc.expert.common.constant.TokenConstants; import com.cnooc.expert.common.constant.TokenConstants;
import com.cnooc.expert.common.exception.BusinessException; import com.cnooc.expert.common.exception.BusinessException;
import com.cnooc.expert.common.exception.GlobalErrorCodeConstants; import com.cnooc.expert.common.exception.GlobalErrorCodeConstants;
......
...@@ -11,30 +11,30 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; ...@@ -11,30 +11,30 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration @Configuration
public class TheWebMvcConfigurer implements WebMvcConfigurer { public class TheWebMvcConfigurer implements WebMvcConfigurer {
@Autowired // @Autowired
private LoginInterceptor loginInterceptor; // private LoginInterceptor loginInterceptor;
//
@Override // @Override
public void addInterceptors(InterceptorRegistry registry) { // public void addInterceptors(InterceptorRegistry registry) {
//
// 注册登录拦截器,并设置拦截路径和排除路径 // // 注册登录拦截器,并设置拦截路径和排除路径
registry.addInterceptor(loginInterceptor) // registry.addInterceptor(loginInterceptor)
.addPathPatterns("/**") // 拦截所有路径 // .addPathPatterns("/**") // 拦截所有路径
.excludePathPatterns( // 排除一些路径 // .excludePathPatterns( // 排除一些路径
"/sys/**", // "/sys/**",
"/verify/**", // "/verify/**",
"/person/**", // "/person/**",
"/text/**", // "/text/**",
"/error/**", // "/error/**",
"/error" // "/error"
); // );
//
registry.addInterceptor(webAuthInterceptor()); // registry.addInterceptor(webAuthInterceptor());
} // }
//
@Bean // @Bean
public WebAuthInterceptor webAuthInterceptor() { // public WebAuthInterceptor webAuthInterceptor() {
return new WebAuthInterceptor(); // return new WebAuthInterceptor();
} // }
} }
...@@ -4,22 +4,42 @@ import com.cnooc.expert.common.response.ApiResult; ...@@ -4,22 +4,42 @@ import com.cnooc.expert.common.response.ApiResult;
import com.cnooc.expert.common.response.BasePageResp; import com.cnooc.expert.common.response.BasePageResp;
import com.cnooc.expert.controller.expert.model.request.CompanyPageReq; import com.cnooc.expert.controller.expert.model.request.CompanyPageReq;
import com.cnooc.expert.controller.expert.model.request.DictNofilterListReq; import com.cnooc.expert.controller.expert.model.request.DictNofilterListReq;
import com.cnooc.expert.controller.expert.model.request.DongJieGetReq;
import com.cnooc.expert.controller.expert.model.request.DongJiePageReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaApplyReq; import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaApplyReq;
import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaPageReq; import com.cnooc.expert.controller.expert.model.request.GeRenXiuJiaPageReq;
import com.cnooc.expert.controller.expert.model.request.KaoShiPageReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJieFuJianGetReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJieFuJianListReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJieGetReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengKeJiePageReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunKeChengReq;
import com.cnooc.expert.controller.expert.model.request.PeiXunPageReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuByOwnerPageReq; import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuByOwnerPageReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuInfoGetByChouQuMaReq; import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuInfoGetByChouQuMaReq;
import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuPageReq; import com.cnooc.expert.controller.expert.model.request.PingBiaoXiangMuPageReq;
import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiApplyReq; import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiApplyReq;
import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiPageReq; import com.cnooc.expert.controller.expert.model.request.QingJiaJinJiPageReq;
import com.cnooc.expert.controller.expert.model.request.WeiGuiGetReq;
import com.cnooc.expert.controller.expert.model.request.WeiGuiJiLuPageReq;
import com.cnooc.expert.controller.expert.model.response.DictListItemResp; import com.cnooc.expert.controller.expert.model.response.DictListItemResp;
import com.cnooc.expert.controller.expert.model.response.DongJieGetResp;
import com.cnooc.expert.controller.expert.model.response.DongJiePageResp;
import com.cnooc.expert.controller.expert.model.response.ExpertInfoGetResp; import com.cnooc.expert.controller.expert.model.response.ExpertInfoGetResp;
import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaApplyResp; import com.cnooc.expert.controller.expert.model.response.GeRenXiuJiaApplyResp;
import com.cnooc.expert.controller.expert.model.response.KaoShiPageResp;
import com.cnooc.expert.controller.expert.model.response.NofilterListItemResp; import com.cnooc.expert.controller.expert.model.response.NofilterListItemResp;
import com.cnooc.expert.controller.expert.model.response.PingBiaoXiangMuByOwnerPageResp; import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJieFuJianGetResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJieFuJianListResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJieGetResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunKeChengKeJiePageResp;
import com.cnooc.expert.controller.expert.model.response.PeiXunPageResp;
import com.cnooc.expert.controller.expert.model.response.PingBiaoXiangMuInfoGetByChouQuMaResp; import com.cnooc.expert.controller.expert.model.response.PingBiaoXiangMuInfoGetByChouQuMaResp;
import com.cnooc.expert.controller.expert.model.response.PingBiaoZhuanYeTreeNodeResp; import com.cnooc.expert.controller.expert.model.response.PingBiaoZhuanYeTreeNodeResp;
import com.cnooc.expert.controller.expert.model.response.QingJiaJinJiApplyResp; import com.cnooc.expert.controller.expert.model.response.QingJiaJinJiApplyResp;
import com.cnooc.expert.controller.expert.model.response.SecondaryUnitListItemResp; import com.cnooc.expert.controller.expert.model.response.SecondaryUnitListItemResp;
import com.cnooc.expert.controller.expert.model.response.WeiGuiGetResp;
import com.cnooc.expert.controller.expert.model.response.WeiGuiPageResp;
import com.cnooc.expert.service.ExpertService; import com.cnooc.expert.service.ExpertService;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
...@@ -210,4 +230,106 @@ public class ExpertController { ...@@ -210,4 +230,106 @@ public class ExpertController {
} }
// *** 违规信息/冻结信息 ***
// 专家冻结信息分页列表
@PostMapping("/dong-jie/page")
public ApiResult<BasePageResp<DongJiePageResp>> dongJiePage(@RequestBody @Validated DongJiePageReq req) {
return ApiResult.successWithResult(expertService.pageDongJie(req));
}
// 专家冻结信息详情
@PostMapping("/dong-jie/get")
public ApiResult<DongJieGetResp> dongjieGet(@RequestBody @Validated DongJieGetReq req) {
return ApiResult.successWithResult(expertService.getDongJie(req));
}
// 专家违规分页列表
@PostMapping("/wei-gui/page")
public ApiResult<BasePageResp<WeiGuiPageResp>> weiGuiJiLuPage(@RequestBody @Validated WeiGuiJiLuPageReq req) {
return ApiResult.successWithResult(expertService.pageWeiGuiList(req));
}
/**
* 专家违规处理信息详情
*
* @param req
* @return
*/
@PostMapping("/wei-gui/get")
public ApiResult<WeiGuiGetResp> weiGuiGet(@RequestBody @Validated WeiGuiGetReq req) {
return ApiResult.successWithResult(expertService.getWeiGui(req));
}
// *** 课程培训 和 课后考试
// 课后考试
/**
* 课后考试列表查询
*
* @param req
* @return
*/
@PostMapping("/kaoShi/getKaoShiPage")
public ApiResult<BasePageResp<KaoShiPageResp>> getKaoShiPage(@RequestBody @Validated KaoShiPageReq req) {
return ApiResult.successWithResult(expertService.pageKaoShi(req));
}
// 课程培训
/**
* 培训课程列表查询
*
* @param req
* @return
*/
@PostMapping("/peiXun/getPeiXunPage")
public ApiResult<BasePageResp<PeiXunPageResp>> getPeiXunPage(@RequestBody @Validated PeiXunPageReq req) {
return ApiResult.successWithResult(expertService.pagePeiXunKeCheng(req));
}
/**
* 培训课程详情查询
*
* @param req
* @return
*/
@PostMapping("/peiXun/getPeiXunInfo")
public ApiResult<Object> getPeiXunInfo(@RequestBody @Validated PeiXunKeChengReq req) {
return ApiResult.successWithResult(expertService.getPeiXunInfo(req));
}
// 课程详情 课节列表 分页列表
@PostMapping("/peiXun/kecheng/kejie/page")
public ApiResult<BasePageResp<PeiXunKeChengKeJiePageResp>> pagePeiXunKeChengKeJie(@RequestBody @Validated PeiXunKeChengKeJiePageReq req) {
return ApiResult.successWithResult(expertService.pagePeiXunKeChengKeJie(req));
}
// 课程详情 课节 详情
@PostMapping("/peiXun/kecheng/kejie/get")
public ApiResult<PeiXunKeChengKeJieGetResp> getPeiXunKeChengKeJie(@RequestBody @Validated PeiXunKeChengKeJieGetReq req) {
return ApiResult.successWithResult(expertService.getPeiXunKeChengKeJie(req));
}
// 课程详情 课节 附件 列表
@PostMapping("/peiXun/kecheng/kejie/fujian/list")
public ApiResult<List<PeiXunKeChengKeJieFuJianListResp>> listPeiXunKeChengKeJieFuJian(@RequestBody @Validated PeiXunKeChengKeJieFuJianListReq req) {
return ApiResult.successWithResult(expertService.listPeiXunKeChengKeJieFuJian(req));
}
// 课程详情 课节 附件 详情
@PostMapping("/peiXun/kecheng/kejie/fujian/get")
public ApiResult<PeiXunKeChengKeJieFuJianGetResp> getPeiXunKeChengKeJieFuJian(@RequestBody @Validated PeiXunKeChengKeJieFuJianGetReq req) {
return ApiResult.successWithResult(expertService.getPeiXunKeChengKeJieFuJian(req));
}
// 课程详情 课节列表 分页列表
// @PostMapping("/exam/kecheng/kejie/page")
// public ApiResult<BasePageResp<PeiXunKeChengKeJiePageResp>> pagePeiXunKeChengKeJie(@RequestBody @Validated PeiXunKeChengKeJiePageReq req) {
// return ApiResult.successWithResult(expertService.pagePeiXunKeChengKeJie(req));
// }
} }
package com.cnooc.expert.controller.expert.model.request;
public class DongJieGetReq {
private String dongJieGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import com.cnooc.expert.common.request.BasePageRequest;
import lombok.Data;
@Data
public class DongJiePageReq extends BasePageRequest {
private String zhuanJiaGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import com.cnooc.expert.common.request.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author: FuHongZhang
* @date 2025-11-15 13:58
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class KaoShiPageReq extends BasePageRequest {
/**
* 课程名称
*/
private String courseName;
/**
* 课程类型Guid
*/
private String courseTypeGuid;
/**
* 课节名称
*/
private String lessonName;
/**
* 课程发布时间查询开始时间
*/
private Long courseReleaseStartTimestamp;
/**
* 课程发布时间查询结束时间
*/
private Long courseReleaseEndTimestamp;
/**
* 考试状态
*/
private Short examStatus;
/**
* 专家Guid todo 可能不需要传,需要从后端获取当前登录人guid
*/
private String expertGuid;
/**
* 课程类型名称
*/
private String courseTypeName;
/**
* 排除的课程类型列表 (续期培训,续期考试) 需要了解下业务,小程序端专家申请续期需要进行培训及考试吗
*/
private List<String> excludeCourseTypeList;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
@Data
public class PeiXunKeChengKeJieFuJianGetReq {
private String fileGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
@Data
public class PeiXunKeChengKeJieFuJianListReq {
private String learnFileGroupGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
@Data
public class PeiXunKeChengKeJieGetReq {
private String lessonGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import com.cnooc.expert.common.request.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true)
@Data
public class PeiXunKeChengKeJiePageReq extends BasePageRequest {
private String courseGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
/**
* @author: FuHongZhang
* @date 2025-11-15 14:46
*/
@Data
public class PeiXunKeChengReq {
/**
* 课程Guid
*/
private String courseGuid;
// -------查询课程详情下课节信息入参----------
private String userId; // 从服务上获取
// 必传
// private String courseGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import com.cnooc.expert.common.request.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* @author: FuHongZhang
* @date 2025-11-15 14:25
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PeiXunPageReq extends BasePageRequest {
/**
* courseName 课程名称
*/
private String courseName;
/**
* courseTypeGuid 课程类型Guid
*/
private String courseTypeGuid;
/**
* courseTypeName 课程类型名称
*/
private String courseTypeName;
/**
* courseReleaseStartTimestamp 课程发布时间查询开始时间
*/
private Long courseReleaseStartTimestamp;
/**
* courseReleaseEndTimestamp 课程发布时间查询结束时间
*/
private Long courseReleaseEndTimestamp;
/**
* 学习进度状态(10:未完成;20:已完成)
*/
private Short progressStatus;
/**
* 当前用户guid
*/
private String userGuid;
/**
* 当前用户guid
*/
private String expertGuid;
/**
* 二开 - 排除的课程类型列表 (续期考试,续期培训)
*/
private List<String> excludeCourseTypeList;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
@Data
public class WeiGuiGetReq {
private String guid;
}
package com.cnooc.expert.controller.expert.model.request;
import lombok.Data;
/**
* @author: FuHongZhang
* @date 2025-11-15 11:23
*/
@Data
public class WeiGuiInfoByZhunaJiaWeiGuiGuidReq {
// 专家违规的guid
private String guid;
// 专家违规的guids weiguiReason
private String guids;
// 专家违规guid
private String zhuanJiaWeiGuiGuid;
}
package com.cnooc.expert.controller.expert.model.request;
import com.cnooc.expert.common.request.BasePageRequest;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author: FuHongZhang
* @date 2025-11-14 17:39
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WeiGuiJiLuPageReq extends BasePageRequest {
private String zhuanJiaGuid;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class DongJieGetResp {
private String changeRecordGuid;
private String shiXiangGuid;
private Integer shiXiangType;
private String oldValue;
private String newValue;
private Long createTime;
private String creatorGuid;
private String creatorName;
private Long modifyTime;
private String modifierGuid;
private String modifierName;
private String jieDongReason;
private String jieDongFuJianGuid;
private String dongJieReason;
private String dongJieFuJianGuid;
private Long dongJieSatrtTime;
private Long dongJieEndTime;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class DongJiePageResp {
private String jiTuanErJiDanWeiName;
private String adAccount;
private String shenFenZheng;
private String zhuanYeName;
private String zhuanYeBH;
private Long jieDongTime;
private String dongJieFuJianGuid;
private String jieDongFuJianGuid;
private String dongJieReason;
private Long dongJieTime;
private String gongZuoDanWei;
private String zhuanJiaGuid;
private String pingBiaoZhuanYeGuid;
private Boolean isPrimary;
private String zhuanJiaCode;
private String zhuanYeStatus;
private String jieDongReason;
private String zhuanJiaName;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
/**
* @author: FuHongZhang
* @date 2025-11-15 13:59
*/
@Data
@Builder
public class KaoShiPageResp {
private String courseGuid;
private String courseName;
private Long courseReleaseTimestamp;
private String courseTypeName;
private Object examPassTimestamp;
private Integer examResult;
private Double jiGeScore;
private String lessonGuid;
private String lessonName;
private Double score;
private Object studyProgress;
private String testPaperGuid;
private Object zuiGaoScore;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PeiXunKeChengKeJieFuJianGetResp {
private String fileName;
private String downLoadUrl;
private String directDownLoadUrl;
private String createTime;
private String fileSize;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PeiXunKeChengKeJieFuJianListResp {
private Long createTime;
private String creatorGuid;
private String creatorName;
private String fileGroupGuid;
private String fileGuid;
private String fileMD5;
private String fileName;
private Integer fileType;
private String groupGuid;
private String otherInfo;
private String sysFile;
private Long uploadTime;
private String uploadTimeText;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class PeiXunKeChengKeJieGetResp {
private String courseGuid;
private Boolean isTestAfterLearn;
private String learnContent;
private String learnFileGroupGuid;
private Long leiJiXueXiShiChang;
private String lessonGuid;
private String lessonName;
private String lessonProgressGuid;
private String progressDetails;
private String studyProgress;
private String testPaperGuid;
private Integer xueXiShiChang;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
@Data
@Builder
public class PeiXunKeChengKeJiePageResp {
private Long finishTimestamp;
private String learnFileGroupGuid;
private String lessonGuid;
private String lessonName;
private String studyContent;
private BigDecimal studyProgress;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
/**
* @author: FuHongZhang
* @date 2025-11-15 14:26
*/
@Data
@Builder
public class PeiXunPageResp {
/**
* courseGuid 课程Guid
*/
private String courseGuid;
/**
* courseName 课程名称
*/
private String courseName;
/**
* courseTypeName 课程类型名称
*/
private String courseTypeName;
/**
* lessonCount 课节数量
*/
private Integer lessonCount;
/**
* courseReleaseTimestamp 发布时间
*/
private Long courseReleaseTimestamp;
/**
* 学习进度
*/
private BigDecimal studyProgress;
/**
* 学习进度状态(10:未完成;20:已完成)
*/
private Short progressStatus;
/**
* 培训课程详情
*/
@Data
@Builder
public static class PeiXunKeChengInfo {
/** 课程唯一标识(GUID) */
private String courseGuid;
/** 课程介绍 */
private String courseIntroduction;
/** 课程名称 */
private String courseName;
/** 课程发布状态() */
private Short courseReleaseStatus;
/** 课程发布时间戳(毫秒) */
private Long courseReleaseTimestamp;
/** 课程类型唯一标识(GUID) */
private String courseTypeGuid;
/** 课程类型名称(如:日常培训、定期培训) */
private String courseTypeName;
/** 学习后是否需要考试(true=是,false=否) */
private Boolean isTestAfterLearn;
/** 课程包含的课节数量 */
private Integer lessonCount;
/** 关联的试卷唯一标识(GUID) */
private String testPaperGuid;
}
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class WeiGuiGetResp {
private String applyBusinessId;
private Integer applyshenheStatus;
private String businessId;
private String chouquRenwuGuid;
private Long chuliEndTime;
private Long chuliStartTime;
private Long createTime;
private String creatorGuid;
private String creatorName;
private String fujianGuid;
private String modifierGuid;
private String modifierName;
private Long modifyTime;
private String shenheRen;
private Integer shenheStatus;
private Long shenheTime;
private Long submitTime;
private String submiter;
private String submiterGuid;
private String submiterPersonId;
private String tijiaorenEmail;
private String tijiaorenPhone;
private Integer weiguiChuliShichang;
private String weiguiReason;
private String weiguiReasonName;
private String weiguiXiangxiMiaoshu;
private String zhuanJiaAdAccount;
private String zhuanJiaCode;
private String zhuanJiaZhuangTai;
private String zhuanjiaGuid;
private String zhuanjiaName;
private String zhuanjiaWeiguiGuid;
}
package com.cnooc.expert.controller.expert.model.response;
import lombok.Builder;
import lombok.Data;
import java.util.List;
/**
* @author: FuHongZhang
* @date 2025-11-14 20:28
*/
@Data
@Builder
public class WeiGuiPageResp {
private String bidSectionCode;
private String bidSectionName;
private String businessId;
private String chouquRenwuGuid;
private Long chuliEndTime;
private String chuliPeriod;
private Long chuliStartTime;
private String fujianGuid;
private Object serialNum;
private String shenFenZheng;
private Integer shenheStatus;
private String shenheStatusName;
private Long submitTime;
private String submitTimeStr;
private String submiter;
private Integer weiguiChuliShichang;
private String weiguiChuliShichangStr;
private String weiguiReason;
private String weiguiReasonName;
private String weiguiXiangxiMiaoshu;
private String zhuanJiaAdAccount;
private String zhuanJiaCode;
private Object zhuanJiaZhuangTai;
private String zhuanJiaZhuangTaiName;
private String zhuanjiaGuid;
private String zhuanjiaName;
private String zhuanjiaWeiguiGuid;
@Data
@Builder
public static class WeiGuiShiXiang {
private Long createTime;
private String creatorGuid;
private String creatorName;
private Boolean isDeleted;
private String modifierGuid;
private String modifierName;
private Long modifyTime;
private Integer qiYongstatus;
private String weiguiChuliReason;
private String weiguiChuliShichangs;
private String weiguiShixiangGuid;
}
@Data
@Builder
public static class WeiGuiChuLiXiangQingResp {
private String applyBusinessId;
private Integer applyshenheStatus;
private String businessId;
private String chouquRenwuGuid;
private Long chuliEndTime;
private Long chuliStartTime;
private Long createTime;
private String creatorGuid;
private String creatorName;
private String fujianGuid;
private Boolean isDeleted;
private String modifierGuid;
private String modifierName;
private Long modifyTime;
private String shenheRen;
private Integer shenheStatus;
private Long shenheTime;
private Long submitTime;
private String submiter;
private String submiterGuid;
private Long submiterPersonId;
private String tijiaorenEmail;
private String tijiaorenPhone;
private Integer weiguiChuliShichang;
private String weiguiReason;
private String weiguiReasonName;
private String weiguiXiangxiMiaoshu;
private String zhuanJiaAdAccount;
private String zhuanJiaCode;
private List<ZhuanJiaItem> zhuanJiaList;
private Object zhuanJiaZhuangTai;
private String zhuanjiaGuid;
private String zhuanjiaName;
private String zhuanjiaWeiguiGuid;
}
@Data
@Builder
public static class ZhuanJiaItem {
private String chouQuQingKuangGuid;
private String chouQuRenWuGuid;
private Object pingShenType;
private String zhuanJiaAdAccount;
private String zhuanJiaCode;
private String zhuanJiaGuid;
private String zhuanJiaName;
private Integer zhuanJiaZhuangTai;
}
@Data
@Builder
public static class WeiGuiChuLiYuanYin {
private Long createTime;
private String creatorGuid;
private String creatorName;
private Boolean isDeleted;
private String modifierGuid;
private String modifierName;
private Long modifyTime;
private Integer qiYongstatus;
private String weiguiChuliReason;
private String weiguiChuliShichangs;
private String weiguiShixiangGuid;
}
@Data
@Builder
public static class WeiGuiShenHeChuliJiLu {
private Object bianGengXuHao;
private String buTongGuoEndSequence;
private Object buTongGuoStartSequence;
private Long createTime;
private String createTimeText;
private String creatorGuid;
private String creatorName;
private String daiShenRenGuids;
private String daiShenRenNames;
private String fujianGuid;
private Boolean isCurrent;
private Boolean isDeleted;
private Boolean isFinish;
private String modifierGuid;
private String modifierName;
private Object modifyTime;
private String modifyTimeText;
private String remark;
private Object sequence;
private String shenHeBuMenGuid;
private String shenHeBuMenName;
private String shenHeFuJianGuid;
private String shenHeGuid;
private String shenHeRenGuid;
private String shenHeRenName;
private Integer shenHeStatus;
private Long shenHeTime;
private String shenHeTimeText;
private String shenHeYiJian;
private String shenPiJieGuoGuid;
private Object shenQingLeiXing;
private Boolean shiFouYiFaZhuanJia;
private Boolean shiFouZhuanJiao;
private String shiXiangGuid;
private String shiXiangName;
private Object shiXiangType;
private Object shouLiTime;
private String shouLiTimeText;
private String tiJiaoRenGuid;
private String tiJiaoRenName;
private Long tiJiaoTime;
private String tiJiaoTimeText;
private String xiaJiShenHeRenGuid;
private String xiaJiShenHeRenName;
private String xiangMuGuid;
private Boolean zhiJieHuiFu;
}
}
package com.cnooc.expert.external.expert.api; package com.cnooc.expert.external.expert.api;
import com.cnooc.expert.external.expert.model.request.ExpertInfoAppReq; import com.cnooc.expert.external.expert.model.request.ExpertInfoAppReq;
import com.cnooc.expert.external.expert.model.request.ExpertInfoGetReq;
import com.cnooc.expert.external.expert.model.request.ExpertInfoReq; import com.cnooc.expert.external.expert.model.request.ExpertInfoReq;
import com.cnooc.expert.external.expert.model.response.ExpertInfoAppResp; import com.cnooc.expert.external.expert.model.response.ExpertInfoAppResp;
import com.cnooc.expert.external.expert.model.response.ExpertInfoGetTestResp;
import com.cnooc.expert.external.expert.model.response.ExpertInfoResp; import com.cnooc.expert.external.expert.model.response.ExpertInfoResp;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
...@@ -15,9 +13,6 @@ import java.util.Map; ...@@ -15,9 +13,6 @@ import java.util.Map;
public interface LoginServiceApi { public interface LoginServiceApi {
@POST("/")
Call<ExpertInfoGetTestResp> expertDetailUpDate(@HeaderMap Map<String, Object> headers, @Body ExpertInfoGetReq user);
@POST("/zjfw/zggrxxgl/querySingleByShengFenZhengOrMobile") @POST("/zjfw/zggrxxgl/querySingleByShengFenZhengOrMobile")
Call<ExpertInfoResp> querySingleByShengFenZhengOrMobile(@HeaderMap Map<String, Object> headers, @Body ExpertInfoReq expertInfoReq); Call<ExpertInfoResp> querySingleByShengFenZhengOrMobile(@HeaderMap Map<String, Object> headers, @Body ExpertInfoReq expertInfoReq);
...@@ -29,5 +24,4 @@ public interface LoginServiceApi { ...@@ -29,5 +24,4 @@ public interface LoginServiceApi {
@POST("/zjfw/zggrxxgl/updateZhuanJiaInfoApp") @POST("/zjfw/zggrxxgl/updateZhuanJiaInfoApp")
Call<ExpertInfoAppResp> updateZhuanJiaInfoApp(@HeaderMap Map<String, Object> headers, @Body ExpertInfoAppReq expertInfoAppReq); Call<ExpertInfoAppResp> updateZhuanJiaInfoApp(@HeaderMap Map<String, Object> headers, @Body ExpertInfoAppReq expertInfoAppReq);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment