Merge remote-tracking branch 'origin/20241118-upframework' into prod-250107-from104-master-teacher-1202

# Conflicts:
#	servers/boe-server-all/pom.xml
#	servers/boe-server-all/src/main/java/com/xboe/api/ThirdApi.java
#	servers/boe-server-all/src/main/resources/application-pro.properties
#	servers/boe-server-all/src/main/resources/application-test.properties
#	servers/boe-server-all/src/main/resources/application.properties
This commit is contained in:
hui
2025-01-07 18:35:18 +08:00
592 changed files with 1374 additions and 67049 deletions

View File

@@ -1,39 +1,41 @@
package com.xboe;
import java.io.File;
import java.io.IOException;
import javax.annotation.PostConstruct;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.system.ApplicationPid;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.Configuration;
import org.springframework.retry.annotation.EnableRetry;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.IOException;
@Configuration
@SpringBootApplication
@EnableCaching
@EnableAsync
@EnableRetry
@EnableScheduling
@EnableDiscoveryClient
@EnableFeignClients(basePackages = {"com.boe.feign.api.*.remote", "com.xboe.api"})
public class BoeServerAllApplication {
public static void main(String[] args) {
System.setProperty("jasypt.encryptor.password","jasypt");
SpringApplication.run(BoeServerAllApplication.class, args);
}
@PostConstruct
private void handlePid() throws IOException {
File file = new File("application.pid");
new ApplicationPid().write(file);
file.deleteOnExit();
}
public static void main(String[] args) {
System.setProperty("jasypt.encryptor.password", "jasypt");
SpringApplication.run(BoeServerAllApplication.class, args);
}
@PostConstruct
private void handlePid() throws IOException {
File file = new File("application.pid");
new ApplicationPid().write(file);
file.deleteOnExit();
}
}

View File

@@ -1,14 +1,33 @@
package com.xboe.api;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.lang.Opt;
import cn.hutool.http.HttpRequest;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.boe.feign.api.courseweb.entity.ExamTestDto;
import com.boe.feign.api.courseweb.entity.ProjectStudyDto;
import com.boe.feign.api.courseweb.remote.OffCourseRemoteClient;
import com.boe.feign.api.courseweb.remote.ProjectAdminRemoteClient;
import com.boe.feign.api.courseweb.remote.ProjectRemoteClient;
import com.boe.feign.api.infrastructure.entity.CommonSearchVo;
import com.boe.feign.api.infrastructure.entity.Dict;
import com.boe.feign.api.infrastructure.remote.DictRemoteClient;
import com.boe.feign.api.stat.remote.UserDynamicApiRemoteClient;
import com.boe.feign.api.usercenter.entity.*;
import com.boe.feign.api.usercenter.remote.AudienceRemoteClient;
import com.boe.feign.api.usercenter.remote.UserRemoteClient;
import com.boe.feign.api.usercenter.reps.AudienceMemberVo;
import com.boe.feign.api.usercenter.reps.Response;
import com.xboe.api.infrastructure.res.InfraResult;
import com.xboe.api.vo.*;
import com.xboe.module.course.dto.CourseParam;
import com.xboe.module.course.dto.ScoreParam;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.core.JsonResponse;
import com.xboe.module.course.vo.StudyCourseVo;
import com.xboe.module.course.vo.TeacherInfoVo;
import com.xboe.module.course.vo.TeacherVo;
import com.xboe.module.dict.entity.DictDto;
import com.xboe.module.exam.entity.ExamTest;
@@ -20,9 +39,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
@@ -36,43 +57,34 @@ public class ThirdApi {
public static final ForkJoinPool REQUEST_TASK = new ForkJoinPool(100);
//没有找到
@Value("${orgTree.orgChildTreeList}")
private String orgChildTreeListUrl;
@Value("${audience.usersByAudienceList}")
private String usersByAudienceList;
@Value("${userBasic.searchUserList}")
private String searchUserListUrl;
@Value("${statApi.userdynamicList}")
private String userdynamicListUrl;
@Autowired
UserDao userDao;
@Value("${infrasApi.dict}")
private String infarasApiUrl;
@Value("${manageApi.stu.offcourse}")
private String manageApiStu;
@Resource
private ProjectAdminRemoteClient projectAdminRemoteClient;
@Value("${audience.getOrgUsers}")
private String searchOrgUsersUrl;
@Resource
private OffCourseRemoteClient offCourseRemoteClient;
@Value("${userBasic.getTeacherIds}")
private String getTeacherIds;
@Resource
private ProjectRemoteClient projectRemoteClient;
@Resource
private DictRemoteClient dictRemoteClient;
@Value("${coursesuilt.getStudyStatus}")
private String getStudyStatus;
@Resource
private UserRemoteClient userRemoteClient;
@Value("${manageApi.editExam}")
private String editExam;
@Resource
private AudienceRemoteClient audienceRemoteClient;
@Value("${userBasic.getUserBasicInfo}")
private String getUserBasicInfo;
@Resource
private UserDynamicApiRemoteClient userDynamicApiRemoteClient;
@Value("${coursesuilt.updateOrSaveCourse}")
private String updateOrSaveCourse;
@@ -85,9 +97,12 @@ public class ThirdApi {
//获取例外人员的id
public List<String> getUserId(){
String responseBody = Optional.ofNullable(HttpRequest.get(infarasApiUrl+"?pid=316&type=1").execute() //prod 316
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
public List<String> getUserId() {
CommonSearchVo searcher = new CommonSearchVo();
searcher.setPid(316L);
searcher.setType(1);
List<Dict> dictList = dictRemoteClient.getList(searcher);
String responseBody = JSON.toJSONString(InfraResult.suc(dictList));
log.info("正在获取例外人员工号 responseBody = " + responseBody);
try {
Optional<DictResult> dictResultOptional = Optional.of(responseBody)
@@ -100,54 +115,56 @@ public class ThirdApi {
throw new RuntimeException("DictResult中的data字段为空。");
}
return dictDtos.stream().map(DictDto::getValue).collect(Collectors.toList());
}catch (Exception e){
} catch (Exception e) {
throw new RuntimeException("解析过程发生异常:" + e.getMessage(), e);
}
}
//获取面授课id
public List<String>getOffCourseId(String userId,String token){
public List<String> getOffCourseId(String userId, String token) {
log.info("正在获取面授课id");
String s = Optional.ofNullable(HttpRequest.get(manageApiStu+"?userId="+userId).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
return Opt.ofBlankAble(s).map(t -> JSONUtil.toBean(t, StringResult.class)).map(StringResult::getData).orElseThrow();
return offCourseRemoteClient.getOffCourseId(userId);
}
//获取离职教师信息
public List<TeacherVo>getTeacherInfo(List<String> teacherIds, String token){
TeacherInfoVo teacherInfoVo=new TeacherInfoVo();
teacherInfoVo.setTeacherIds(teacherIds);
public List<TeacherVo> getTeacherInfo(List<String> teacherIds, String token) {
log.info("获取离职教师信息");
log.info(JSONUtil.toJsonStr(teacherInfoVo));
String resp = Optional.ofNullable(
HttpRequest.post(getTeacherIds).body(JSONUtil.toJsonStr(teacherInfoVo)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
com.boe.feign.api.usercenter.entity.TeacherInfoVo teacherInfoFeignVo = new com.boe.feign.api.usercenter.entity.TeacherInfoVo();
teacherInfoFeignVo.setTeacherIds(teacherIds);
Response<List<com.boe.feign.api.usercenter.entity.TeacherVo>> response = userRemoteClient.getTeacherInfo(teacherInfoFeignVo);
String resp = JSON.toJSONString(response);
GetTeacherIdsResult getTeacherIdsResult = JSONUtil.toBean(resp, GetTeacherIdsResult.class);
log.info("getTeacherIdsResult = " + getTeacherIdsResult.getResult());
return getTeacherIdsResult.getResult();
}
public List<TeacherVo>getTeacherInfoByCode(List<String> teacherCode,String token){
TeacherInfoVo teacherInfoVo=new TeacherInfoVo();
teacherInfoVo.setTeacherCode(teacherCode);
public List<TeacherVo> getTeacherInfoByCode(List<String> teacherCode, String token) {
log.info("获取离职教师信息");
log.info("参数为"+JSONUtil.toJsonStr(teacherCode));
String resp = Optional.ofNullable(
HttpRequest.post(getTeacherIds).body(JSONUtil.toJsonStr(teacherInfoVo)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
com.boe.feign.api.usercenter.entity.TeacherInfoVo teacherInfoFeignVo = new com.boe.feign.api.usercenter.entity.TeacherInfoVo();
teacherInfoFeignVo.setTeacherCode(teacherCode);
Response<List<com.boe.feign.api.usercenter.entity.TeacherVo>> response = userRemoteClient.getTeacherInfo(teacherInfoFeignVo);
String resp = JSON.toJSONString(response);
GetTeacherIdsResult getTeacherIdsResult = JSONUtil.toBean(resp, GetTeacherIdsResult.class);
log.info("getTeacherIdsResult = " + getTeacherIdsResult);
return getTeacherIdsResult.getResult();
}
public List<UserInfoListVo> getAllUserList(UserListParam userListParam, String token) {
log.info("获取用户:url:{}", searchOrgUsersUrl);
log.info("获取用户:params:{}", JSONUtil.toJsonStr(userListParam));
String resp = Optional.ofNullable(HttpRequest.post(searchOrgUsersUrl).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
UserQueryDto userQueryDto = new UserQueryDto();
userQueryDto.setOrganizationId(userListParam.getOrganizationId());
userQueryDto.setPageNo(userListParam.getPageNo());
userQueryDto.setPageSize(userListParam.getPageSize());
Response<PageResult<UserOrgSearchVo>> response = userRemoteClient.getOrgUserForRpc(userQueryDto);
String resp = JSON.toJSONString(response);
UserInfoListRootBean userInfoListRootBean1 = JSONUtil.toBean(resp, UserInfoListRootBean.class);
log.info("userInfoListRootBean1 = " + userInfoListRootBean1);
List<UserInfoListVo> list = userInfoListRootBean1.getResult().getList();
log.info("list = " + list);
log.info("获取用户返回值1 {}",resp);
log.info("获取用户返回值1 {}", resp);
return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, UserInfoListRootBean.class).success())
.map(UserInfoListRootBean::getResult)
.map(result -> Opt.ofEmptyAble(result.getList()).peek(t -> nextPage(userListParam, token, t, result)).orElse(ListUtil.toList()))
@@ -156,8 +173,13 @@ public class ThirdApi {
private void getAllUserList(UserListParam userListParam, String token, List<UserInfoListVo> userInfoLists) {
log.info("获取用户2");
String resp = Optional.ofNullable(HttpRequest.post(searchOrgUsersUrl).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.info("获取用户返回值2 {}",resp);
UserQueryDto userQueryDto = new UserQueryDto();
userQueryDto.setOrganizationId(userListParam.getOrganizationId());
userQueryDto.setPageNo(userListParam.getPageNo());
userQueryDto.setPageSize(userListParam.getPageSize());
Response<PageResult<UserOrgSearchVo>> response = userRemoteClient.getOrgUserForRpc(userQueryDto);
String resp = JSON.toJSONString(response);
log.info("获取用户返回值2 {}", resp);
Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, UserInfoListRootBean.class).success()).map(UserInfoListRootBean::getResult).map(UserInfoListRootBean.ResultData::getList).stream().flatMap(Collection::stream).forEach(userInfoLists::add);
}
@@ -177,7 +199,12 @@ public class ThirdApi {
}
public List<AuditList> getAllAudienceList(AuditListParam userListParam, String token) {
String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
AudienceDto userMemberVo = new AudienceDto();
userMemberVo.setPageSize(userListParam.getPageSize());
userMemberVo.setPageNo(userListParam.getPageNo());
userMemberVo.setAudienceId(userListParam.getAudienceId());
PageList<AudienceMemberVo> pageList = audienceRemoteClient.memberList(userMemberVo);
String resp = JSON.toJSONString(pageList);
return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, AuditRootBean.class).success())
.map(AuditRootBean::getResult)
.map(result -> Opt.ofEmptyAble(result.getList()).peek(t -> nextPage(userListParam, t, result, token)).orElse(ListUtil.toList()))
@@ -191,65 +218,82 @@ public class ThirdApi {
}
private void getAllAudienceList(AuditListParam userListParam, List<AuditList> list, String token) {
String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userListParam)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
AudienceDto userMemberVo = new AudienceDto();
userMemberVo.setPageSize(userListParam.getPageSize());
userMemberVo.setPageNo(userListParam.getPageNo());
userMemberVo.setAudienceId(userListParam.getAudienceId());
PageList<AudienceMemberVo> pageList = audienceRemoteClient.memberList(userMemberVo);
String resp = JSON.toJSONString(pageList);
Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, AuditRootBean.class).success()).map(AuditRootBean::getResult).map(Result::getList).stream().flatMap(Collection::stream).forEach(list::add);
}
public List<UserDynamic> getAllUserdynamicList(UserdynamicParam userdynamicParam, String token) {
String resp = Optional.ofNullable(HttpRequest.post(userdynamicListUrl).body(JSONUtil.toJsonStr(userdynamicParam)).header("XBOE-Access-Token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.error("=1----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + resp );
Pagination pagination = new Pagination();
pagination.setPageSize(userdynamicParam.getPageSize());
pagination.setPageIndex(userdynamicParam.getPageIndex());
com.boe.feign.api.stat.entity.UserDynamic udd = new com.boe.feign.api.stat.entity.UserDynamic();
udd.setAid(userdynamicParam.getAid() == null ? null : userdynamicParam.getAid().toString());
udd.setHidden("true".equals(userdynamicParam.getHidden()));
udd.setContentType(userdynamicParam.getContentType() == null ? null : userdynamicParam.getContentType().toString());
JsonResponse<PageList<com.boe.feign.api.stat.entity.UserDynamic>> jsonResponse = userDynamicApiRemoteClient.pageList(pagination, udd, null);
String resp = JSON.toJSONString(jsonResponse);
log.error("=1----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + resp);
return Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(resp, DynamicBean.class).success())
.map(DynamicBean::getResult)
.map(result -> Opt.ofEmptyAble(result.getList()).peek(t -> nextPage(userdynamicParam, t, result, token)).orElse(ListUtil.toList()))
.orElse(ListUtil.toList());
}
private void nextPage(UserdynamicParam userdynamicParam, List<UserDynamic> t, UserDynamicResult result, String token) {
log.error("=2----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam );
log.error("=2----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam);
if (result.getTotalPages() > userdynamicParam.getPageIndex()) {
REQUEST_TASK.submit(() -> IntStream.range(userdynamicParam.getPageIndex(), result.getTotalPages()).parallel().forEach(i -> getAllUserdynamicList(userdynamicParam.withPageIndex(i + 1), t, token))).join();
}
}
private void getAllUserdynamicList(UserdynamicParam userdynamicParam, List<UserDynamic> list, String token) {
log.error("=3----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam );
String resp = Optional.ofNullable(HttpRequest.post(usersByAudienceList).body(JSONUtil.toJsonStr(userdynamicParam.builder().pageSize(1000).build())).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
log.error("=3----getAllUserdynamicList----- 开始课程信息 ---------------------------------resp = " + userdynamicParam);
AudienceDto userMemberVo = new AudienceDto();
userMemberVo.setPageSize(1000);
userMemberVo.setPageNo(userdynamicParam.getPageIndex());
PageList<AudienceMemberVo> pageList = audienceRemoteClient.memberList(userMemberVo);
String resp = JSON.toJSONString(pageList);
Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, DynamicBean.class).success()).map(DynamicBean::getResult).map(UserDynamicResult::getList).stream().flatMap(Collection::stream).forEach(list::add);
}
public List<StudyCourse>getStudyCourseList(String studyId,String courseId, String token){
public List<StudyCourse> getStudyCourseList(String studyId, String courseId, String token) {
StudyCourseVo studyCourseVo = new StudyCourseVo();
studyCourseVo.setStudyId(studyId);
studyCourseVo.setCourseId(courseId);
String resp = Optional.ofNullable(
HttpRequest.post(getStudyStatus).body(JSONUtil.toJsonStr(studyCourseVo)).header("token", token).execute()
.body()).orElseThrow(() -> new RuntimeException("token校验失败"));
StudyCourseResult studyCourseResult = JSONUtil.toBean(resp, StudyCourseResult.class);
log.info("getTeacherIdsResult = " + studyCourseResult);
return studyCourseResult.getResult();
ProjectStudyDto projectStudyDto = new ProjectStudyDto();
BeanUtil.copyProperties(studyCourseVo, studyCourseVo);
projectRemoteClient.updateStudyStatus(projectStudyDto);
return new ArrayList<>();
}
public void sqlUpdate(ExamTest examTest, String token) {
examTest.setSysUpdateTime(null);
examTest.setSysCreateTime(null);
examTest.setPublishTime(null);
String resp = Optional.ofNullable(HttpRequest.post(editExam).body(JSONUtil.toJsonStr(examTest)).header("token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
Opt.ofBlankAble(resp).map(t -> JSONUtil.toBean(t, DynamicBean.class).success());
ExamTestDto examTestDto = new ExamTestDto();
BeanUtil.copyProperties(examTest, examTestDto);
examTestDto.setShowAnswer(examTest.getShowAnswer() ? "true" : "false");
projectAdminRemoteClient.editExam(examTestDto);
}
public static void main(String[] args) {
String token = "eyJ0eXBlIjoidG9rZW4iLCJhbGciOiJIUzI1NiJ9.eyJjb21wYW55Q29kZSI6IkMwMDEiLCJ1SWQiOiI5NjUzNDIwMjc0OTc2MDcxNjgiLCJjb21wYW55SWQiOiIxMDQxNjczOTc3Mzc5OTQ2NDk2IiwibG9naW5JZCI6IjE2ODg0NDg5MjIwNzY0OTE3NzgiLCJpc3MiOiJodHRwOi8vdS5ib2UuY29tIiwiR2l2ZW5OYW1lIjoiYm9ldSIsImV4cCI6MTY5MTM5OTc2NzU1OCwidXNlck5hbWUiOiLmnY7njonlhrAiLCJ1c2VySWQiOiI2QjA0OUZBRi1DMzE0LTdDQ0YtMEQyOC0wRDIzRjRDNDI1MzEifQ==.8b52dcf4d48a790ed258b9ca2b279bb269f5301722095382fbd352705b51c893";
String resp = Optional.ofNullable(HttpRequest.post("https://u-pre.boe.com/statApi/xboe/m/stat/userdynamic/list").body(JSONUtil.toJsonStr(UserdynamicParam.builder().
aid(Long.parseLong("965342027497607168")).pageSize(1000).pageIndex(1).build())).header("XBOE-Access-Token", token).execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
System.out.println(" resp = " +resp);
System.out.println(" resp = " + resp);
DynamicBean a = JSONUtil.toBean(resp, DynamicBean.class);
System.out.println(" a = " +a);
System.out.println(" a = " + a);
System.out.println(" a = " + a.getResult().getCount());
List<UserDynamic> list = a.getResult().getList();
System.out.println(" list = " +list.size());
System.out.println(" list = " +list);
System.out.println(" list = " + list.size());
System.out.println(" list = " + list);
}
/**
@@ -257,13 +301,16 @@ public class ThirdApi {
*/
public UserDynamicResult getAllUserdynamicListOfCaseRead(UserdynamicParam userdynamicParam, String token) {
String s = buildFormData(userdynamicParam);
String resp = Optional.ofNullable(HttpRequest
.post(userdynamicListUrl)
.header("Content-Type", "application/x-www-form-urlencoded")
.body(s)
.header("XBOE-Access-Token", token)
.execute().body()).orElseThrow(() -> new RuntimeException("token校验失败"));
Pagination pagination = new Pagination();
pagination.setPageSize(userdynamicParam.getPageSize());
pagination.setPageIndex(userdynamicParam.getPageIndex());
com.boe.feign.api.stat.entity.UserDynamic udd = new com.boe.feign.api.stat.entity.UserDynamic();
udd.setAid(userdynamicParam.getAid() == null ? null : userdynamicParam.getAid().toString());
udd.setHidden("true".equals(userdynamicParam.getHidden()));
udd.setContentType(userdynamicParam.getContentType() == null ? null : userdynamicParam.getContentType().toString());
udd.setEventKey("ReadCase");
JsonResponse<PageList<com.boe.feign.api.stat.entity.UserDynamic>> jsonResponse = userDynamicApiRemoteClient.pageList(pagination, udd, udd.getAid());
String resp = JSON.toJSONString(jsonResponse);
DynamicBean dynamicBean = JSONUtil.toBean(resp, DynamicBean.class);
UserDynamicResult userdynamicResult = dynamicBean.getResult();
return userdynamicResult;
@@ -273,7 +320,6 @@ public class ThirdApi {
StringBuilder builder = new StringBuilder();
try {
builder.append("pageIndex=").append(URLEncoder.encode(param.getPageIndex().toString(), "UTF-8"));
builder.append("&pageSize=").append(URLEncoder.encode(param.getPageSize().toString(), "UTF-8"));
builder.append("&contentType=").append(URLEncoder.encode(param.getContentType().toString(), "UTF-8"));
builder.append("&aid=").append(URLEncoder.encode(param.getAid().toString(), "UTF-8"));
@@ -299,15 +345,10 @@ public class ThirdApi {
token = request.getHeader("x-access-token");
}
// 将userIds列表转换为逗号分隔的字符串
String userIdsStr = userIds.stream()
.collect(Collectors.joining(","));
String url = getUserBasicInfo +"?userIds=" + userIdsStr;
String respStr = Optional.ofNullable(HttpRequest
.get(url)
.header("token", token)
.execute().body()).orElseThrow(() -> new RuntimeException("用户中心用户数据获取失败"));
UserBasicInfoDto userBasicInfoDto = new UserBasicInfoDto();
userBasicInfoDto.setUserIds(userIds);
Response<List<UserAccount>> response = userRemoteClient.getUserBasicInfo(userBasicInfoDto);
String respStr = JSON.toJSONString(response);
UserBasicInfoResult userBasicInfoResult = JSONUtil.parseObj(respStr).toBean(UserBasicInfoResult.class);
List<UserBasicInfo> basicInfos = userBasicInfoResult.getResult();

View File

@@ -0,0 +1,103 @@
package com.xboe.api.infrastructure.res;
import com.boe.feign.api.courseweb.reps.MessageEnum;
import com.boe.feign.api.courseweb.reps.ResultStatus;
import lombok.Data;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.HashMap;
@Data
@Accessors(chain = true)
public class InfraResult<T> implements Serializable {
private boolean isSuccess = true;
private boolean show = false;
private String version = "1.1.0";
private int code;
private String msg;
private T data;
public InfraResult() {
}
public InfraResult(boolean isSuccess, int code, String msg) {
this.isSuccess = isSuccess;
this.code = code;
this.msg = msg;
}
public InfraResult(boolean isSuccess, int code, String msg, T data) {
this.isSuccess = isSuccess;
this.code = code;
this.msg = msg;
this.data = data;
}
public InfraResult(MessageEnum messageEnum) {
this.code = messageEnum.getCode();
this.msg = messageEnum.getMessage();
this.show = messageEnum.isShow();
}
public InfraResult(MessageEnum messageEnum, T data) {
this.code = messageEnum.getCode();
this.msg = messageEnum.getMessage();
this.show = messageEnum.isShow();
this.data = data;
}
public InfraResult(boolean isSuccess, MessageEnum messageEnum) {
this.isSuccess = isSuccess;
this.code = messageEnum.getCode();
this.msg = messageEnum.getMessage();
this.show = messageEnum.isShow();
}
public InfraResult(boolean isSuccess, MessageEnum messageEnum, T data) {
this.isSuccess = isSuccess;
this.code = messageEnum.getCode();
this.msg = messageEnum.getMessage();
this.show = messageEnum.isShow();
this.data = data;
}
public void setMessageEnum(MessageEnum messageEnum) {
this.code = messageEnum.getCode();
this.msg = messageEnum.getMessage();
}
public InfraResult(ResultStatus status, T data) {
this.code = status.getCode();
this.msg = status.getMessage();
this.data = data;
}
public static InfraResult error(String message) {
return new InfraResult(true, -1, message);
}
public static InfraResult error(MessageEnum messageEnum) {
return new InfraResult(messageEnum);
}
public static InfraResult error(MessageEnum messageEnum, String errMsg) {
return new InfraResult(messageEnum,errMsg);
}
public static InfraResult error(ResultStatus error) {
return new InfraResult(error, new HashMap<>(20));
}
public static InfraResult suc(Object data) {
return new InfraResult(ResultStatus.SUCCESS, data);
}
public static InfraResult ok() {
return new InfraResult(ResultStatus.SUCCESS, new HashMap<>(20));
}
}

View File

@@ -0,0 +1,56 @@
package com.xboe.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpOutputMessage;
import org.springframework.http.converter.HttpMessageNotWritableException;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import java.io.IOException;
import java.lang.reflect.Type;
public class LoggingMappingJackson2HttpMessageConverter extends MappingJackson2HttpMessageConverter {
private static final Logger logger = LoggerFactory.getLogger(LoggingMappingJackson2HttpMessageConverter.class);
private final ObjectMapper objectMapper;
public LoggingMappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
this.objectMapper = objectMapper;
}
@Override
protected void writeInternal(@NonNull Object object, @NonNull HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
// 记录转换前的数据
String jsonBefore = objectMapper.writeValueAsString(object);
logger.info("===========Response JSON Before Conversion: {}", jsonBefore);
// 调用父类方法进行实际的转换
super.writeInternal(object, outputMessage);
// 记录转换后的数据
// 注意:由于输出流已经写入,这里无法直接获取转换后的数据
// 可以考虑使用类似拦截器的方法来捕获响应体
}
/*
* 重写父类的writeInternal方法在响应体写入前记录原始数据
*/
@Override
public void writeInternal(@NonNull Object object, @Nullable Type type, @NonNull HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
// 记录转换前的数据
String jsonBefore = objectMapper.writeValueAsString(object);
logger.info("===========Response JSON type Before Conversion: {}", jsonBefore);
// 调用父类方法进行实际的转换
super.writeInternal(object, type, outputMessage);
// 记录转换后的数据
// 注意:由于输出流已经写入,这里无法直接获取转换后的数据
// 可以考虑使用类似拦截器的方法来捕获响应体
}
}

View File

@@ -0,0 +1,58 @@
package com.xboe.config;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
@Configuration
public class WebConfig implements WebMvcConfigurer {
private static final Logger logger = LoggerFactory.getLogger(WebConfig.class);
//结果处理器
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
return new LoggingMappingJackson2HttpMessageConverter(objectMapper);
}
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY,true);
return mapper;
}
/**
* 在默认的消息转换器基础上添加或移除某些转换器
* 保证StringHttpMessageConverter在FastJsonHttpMessageConverter前被调用
*
* @param converters the list of configured converters to be extended
*/
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.removeIf(t -> t instanceof MappingJackson2HttpMessageConverter || t instanceof MappingJackson2CborHttpMessageConverter);
converters.add(mappingJackson2HttpMessageConverter(objectMapper()));
for (HttpMessageConverter<?> converterLoop : converters) {
logger.info("==######### Registered e message converter: {}", converterLoop.getClass().getName());
}
}
// @Override
// public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
// converters.add(mappingJackson2HttpMessageConverter(new ObjectMapper()));
// for (HttpMessageConverter<?> converter : converters) {
// logger.info("==#########Registered message converter: {}", converter.getClass().getName());
// }
// }
}

View File

@@ -1,5 +1,6 @@
package com.xboe.data.api;
import com.boe.feign.api.serverall.entity.UserData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
@@ -12,7 +13,6 @@ import com.xboe.account.entity.Account;
import com.xboe.account.service.IAccountService;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.data.dto.UserData;
import com.xboe.data.service.IDataUserSyncService;
import com.xboe.system.organization.service.IOrganizationService;
import com.xboe.system.user.service.IUserService;
@@ -40,6 +40,11 @@ public class UserDataSyncApi extends ApiBaseController {
@Autowired
IDataUserSyncService service;
/**
* 同步用户数据
* @param user 用户信息
* @return JsonResponse<Boolean>
*/
@PostMapping("/user")
public JsonResponse<Boolean> syncUser(@RequestBody UserData user) {
@@ -56,7 +61,12 @@ public class UserDataSyncApi extends ApiBaseController {
return error("同步处理用户失败", e.getMessage());
}
}
/**
* 删除用户信息
* @param id 用户id
* @return JsonResponse<Boolean>
*/
@PostMapping("/deluser")
public JsonResponse<Boolean> deleteUser(String id) {

View File

@@ -1,72 +0,0 @@
package com.xboe.data.dto;
import lombok.Data;
/**
* 用于同步的用户数据
* @author seastar
*
*/
@Data
public class UserData {
/**用户的id*/
private String id;
/**主要是为了兼容之前的使用,新用户可以为空*/
private String kid;
/**用户工号,用于登录名*/
private String code;
private String mobile;
/**band的级别*/
private Integer bandLevel;
/**姓名,对应realName*/
private String name;
/**用户的头像*/
private String avatar;
/**性别 1:男 2女*/
private Integer gender;
/**学习时长,秒*/
private Integer learningDuration;
/**部门id*/
private String departId;
/**部门名称*/
private String departName;
/**此字段主要是为了人员的显示*/
private String orgNamePath;
/**
* 用户类型1表学员 此在这只默认只表学员
*/
private Integer userType;
/**
* 表教师 是为1
* */
private Boolean teacher;
/**
* 表系统管理员 是为1
* */
private Boolean sysAdmin;
/**
* 管理员类型1表默认管理员2表非默认管理员0表不是管理员
* */
private Integer adminType;
/**
* 是否删除的如果是删除的上面所有的字段可以不提供只提供id就可以了
*/
private Boolean deleted;
}

View File

@@ -2,8 +2,8 @@ package com.xboe.data.outside;
import java.util.List;
import com.boe.feign.api.serverall.entity.UserData;
import com.xboe.data.dto.AudienceUser;
import com.xboe.data.dto.UserData;
import com.xboe.data.dto.UserOrgIds;
import com.xboe.system.user.vo.UserSimpleVo;

View File

@@ -4,6 +4,7 @@ import java.util.*;
import javax.servlet.http.HttpServletRequest;
import com.boe.feign.api.serverall.entity.UserData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -14,7 +15,6 @@ import com.xboe.core.SysConstant;
import com.xboe.core.api.TokenProxy;
import com.xboe.core.utils.OkHttpUtil;
import com.xboe.data.dto.AudienceUser;
import com.xboe.data.dto.UserData;
import com.xboe.data.dto.UserOrgIds;
import com.xboe.system.user.vo.UserSimpleVo;

View File

@@ -1,6 +1,7 @@
package com.xboe.data.service;
import com.xboe.data.dto.UserData;
import com.boe.feign.api.serverall.entity.UserData;
/**
* 用户数据的更橷

View File

@@ -4,6 +4,7 @@ import java.time.LocalDateTime;
import javax.transaction.Transactional;
import com.boe.feign.api.serverall.entity.UserData;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.retry.annotation.Recover;
@@ -12,7 +13,6 @@ import org.springframework.stereotype.Service;
import com.xboe.account.dao.AccountDao;
import com.xboe.account.entity.Account;
import com.xboe.data.dto.UserData;
import com.xboe.data.service.IDataUserSyncService;
import com.xboe.module.teacher.dao.TeacherDao;
import com.xboe.module.teacher.entity.Teacher;

View File

@@ -6,6 +6,9 @@ import java.util.stream.Collectors;
import javax.annotation.Resource;
import com.boe.feign.api.serverall.entity.CaseVo;
import com.boe.feign.api.serverall.entity.CasesFiledVo;
import com.boe.feign.api.serverall.reps.CasesReps;
import com.xboe.core.orm.FieldFilters;
import com.xboe.module.boecase.dao.CasesMajorTypeDao;
import com.xboe.module.boecase.dto.*;
@@ -17,6 +20,7 @@ import com.xboe.module.excel.ExportsExcelSenderUtil;
import com.xboe.system.user.dao.UserDao;
import com.xboe.system.user.entity.User;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -177,12 +181,11 @@ public class CasesApi extends ApiBaseController {
/**
* 案例分页
*/
@PostMapping("/pagelist")
@PostMapping(value = "/pagelist" , produces = "application/json")
public JsonResponse<PageList<CasesFiledVo>> pageList(Pagination pager, CaseVo caseVo) {
PageList<CasesFiledVo> pageList = casesService.queryList(pager.getPageIndex(), pager.getPageSize(), caseVo);
return success(pageList);
}
/**
* 我的案例
*/
@@ -372,11 +375,15 @@ public class CasesApi extends ApiBaseController {
}
}
/**
* 案例详情
* @param id id
* @param addView 是否记录查看次数
* @return JsonResponse<CasesReps>
*/
@GetMapping("/detail")
public JsonResponse<Cases> selectById(String id, Boolean addView) {
public JsonResponse<CasesReps> selectById(String id, Boolean addView) {
if (StringUtil.isBlank(id)) {
return badRequest("参数错误");
}
@@ -386,11 +393,15 @@ public class CasesApi extends ApiBaseController {
}
try {
Cases cases = casesService.selectById(id, addView);
if (cases == null){
return badRequest("当前案例不存在");
}
if (cases.getDeleted()) {
return badRequest("当前案例已被删除");
}
return success(cases);
CasesReps reps=new CasesReps();
BeanUtils.copyProperties(cases,reps);
return success(reps);
} catch (Exception e) {
log.error("查看案例失败", e);
return error("查看失败", e.getMessage());

View File

@@ -66,7 +66,7 @@ public class CasesRecommendApi extends ApiBaseController {
* @param casesRecommendVo
* @return
*/
@PostMapping("/page")
@PostMapping(value = "/page",produces = "application/json")
public JsonResponse<PageList<CasesRecommend>> page(@RequestBody CasesRecommendVo casesRecommendVo) {
PageList<CasesRecommend> page = iCasesRecommendService.page(casesRecommendVo.getPageIndex(), casesRecommendVo.getPageSize(), casesRecommendVo);
// 组装查看率

View File

@@ -1,7 +1,6 @@
package com.xboe.module.boecase.dao;
import com.xboe.module.boecase.dto.CasePageVo;
import com.xboe.module.boecase.dto.CaseVo;
import com.xboe.module.boecase.entity.Cases;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

View File

@@ -1,32 +0,0 @@
package com.xboe.module.boecase.dto;
import lombok.Data;
@Data
public class CaseVo {
private String keyWord;
private Boolean breCommend;
private String orderField;
private Boolean orderAsc;
private String orgDomain;//后台查询一级
private String majorType;
private Boolean isTop;
private String caseType;
private Boolean excellent;
private String authorName;
}

View File

@@ -1,21 +0,0 @@
package com.xboe.module.boecase.dto;
import lombok.Data;
@Data
public class CasesFiledVo {
private String id;
private String companyId;
private String coverUrl;
private String title;
private String authorId;
private String authorName;
private Boolean excellent;
}

View File

@@ -1,5 +1,7 @@
package com.xboe.module.boecase.service;
import com.boe.feign.api.serverall.entity.CaseVo;
import com.boe.feign.api.serverall.entity.CasesFiledVo;
import com.xboe.common.PageList;
import com.xboe.core.CurrentUser;
import com.xboe.module.boecase.dto.*;
@@ -28,7 +30,7 @@ public interface ICasesService{
/**
* 案例管理列表搜索
* */
PageList<Cases> managerList(int pageIndex,int pageSize,CaseVo caseVo);
PageList<Cases> managerList(int pageIndex, int pageSize, CaseVo caseVo);
List<Cases> exportCase(CaseVo caseVo);
@@ -37,7 +39,7 @@ public interface ICasesService{
/**
* 案例分页
* */
PageList<CasesFiledVo> queryList(int pageIndex,int pageSize,CaseVo caseVo);
PageList<CasesFiledVo> queryList(int pageIndex, int pageSize, CaseVo caseVo);
/**

View File

@@ -6,6 +6,8 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.boe.feign.api.serverall.entity.CaseVo;
import com.boe.feign.api.serverall.entity.CasesFiledVo;
import com.xboe.api.ThirdApi;
import com.xboe.api.vo.UserDynamic;
import com.xboe.api.vo.UserDynamicResult;

View File

@@ -7,10 +7,10 @@ import java.util.stream.Collectors;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.lang.Opt;
import com.boe.feign.api.serverall.entity.UserData;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.xboe.api.ThirdApi;
import com.xboe.data.dto.UserData;
import com.xboe.data.outside.IOutSideDataService;
import com.xboe.module.course.vo.TeacherVo;
import com.xboe.school.study.entity.StudyCourse;

View File

@@ -16,7 +16,6 @@ import javax.management.Query;
import com.xboe.api.ThirdApi;
import com.xboe.core.orm.*;
import com.xboe.data.dto.UserData;
import com.xboe.school.study.dao.StudyCourseDao;
import com.xboe.school.study.entity.StudyCourse;
import org.apache.commons.lang3.StringUtils;

View File

@@ -5,6 +5,7 @@ import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import com.boe.feign.api.serverall.entity.UserData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -16,7 +17,6 @@ import com.xboe.core.CurrentUser;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.core.api.TokenProxy;
import com.xboe.data.dto.UserData;
import com.xboe.data.outside.IOutSideDataService;
import com.xboe.module.teacher.service.ITeacherService;
import com.xboe.system.organization.service.IOrganizationService;

View File

@@ -10,6 +10,7 @@ import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.boe.feign.api.serverall.entity.UserData;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
@@ -29,7 +30,6 @@ import com.xboe.core.IAuthorizationToken;
import com.xboe.core.JsonResponse;
import com.xboe.core.JsonResponseStatus;
import com.xboe.core.api.ApiBaseController;
import com.xboe.data.dto.UserData;
import com.xboe.data.outside.IOutSideDataService;
import com.xboe.data.service.IDataUserSyncService;
import com.xboe.externalinterface.system.service.IFwUserService;

View File

@@ -0,0 +1,109 @@
package com.xboe.school.study.api;
import com.xboe.common.beans.IdName;
import com.xboe.common.beans.KeyValue;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.school.study.dto.BatchSignup;
import com.xboe.school.study.entity.StudySignup;
import com.xboe.school.study.service.IStudySignupService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 课程报名, 本控制器只有一个报名处理,没有其它的处理
*/
@Slf4j
@RestController
@RequestMapping(value = "/remote/xboe/school/study/signup")
public class StudySignupRpcController extends ApiBaseController {
@Resource
IStudySignupService signupService;
/**
* 批量添加学员
*
* @param batch 包含课程ID、课程名称、用户列表等信息的批量报名对象
* @return 返回操作结果,包括成功添加的学员数量
*/
@PostMapping("/batch-add")
public JsonResponse<Integer> BatchAdd(@RequestBody BatchSignup batch) {
if (isBlank(batch.getCourseId())) {
return error("无课程信息");
}
if (isBlank(batch.getCourseName())) {
return error("无课程名称信息");
}
if (batch.getUsers() == null) {
return error("无报名人员信息");
}
if (batch.getUsers().isEmpty()) {
return error("无报名人员信息");
}
//如果没有,就直接设置为录播课
if (batch.getCourseType() == null) {
batch.setCourseType(20);
}
try {
List<IdName> idNameList = batch.getUsers();
List<String> aids = idNameList.stream()
.map(IdName::getId)
.collect(Collectors.toList());
List<KeyValue> hasList = signupService.findByCourseAndUsers(batch.getCourseId(), aids);
Map<String, String> hasMap = new HashMap<>();
for (KeyValue has : hasList) {
hasMap.put((String) has.getValue(), has.getKey());
}
List<StudySignup> list = new ArrayList<>();
int n = 0;
for (IdName u : idNameList) {
//如果报名已经存在,就不再添加
if (hasMap.containsKey(u.getId())) {
continue;
}
StudySignup signup = new StudySignup();
signup.setAid(u.getId());
signup.setCourseId(batch.getCourseId());
signup.setCourseName(batch.getCourseName());
signup.setCourseType(batch.getCourseType());
signup.setName(u.getName());
signup.setSignTime(LocalDateTime.now());
signup.setSignType(StudySignup.SIGNTYPE_ADD);
signup.setSignInfo("");
list.add(signup);
n++;
}
signupService.addList(list);
return success(n);
} catch (Exception e) {
log.error("报名处理失败", e);
return error("报名失败,请与管理员联系", e.getMessage());
}
}
private static boolean isBlank(String string) {
return StringUtils.isBlank(string);
}
}

View File

@@ -62,7 +62,7 @@ public class SysUploaderApi extends ApiBaseController{
fileTypeSet.add("zip");
}
@RequestMapping(value = "/file/upload", method = RequestMethod.POST)
@RequestMapping(value = "/file/upload", method = RequestMethod.POST, produces = "application/json")
public JsonResponse<XUploadResult> save(HttpServletRequest request, String name,String dir) throws IOException {
//以下三项用于回调
String table = request.getParameter("t");//更新的表

View File

@@ -1,12 +1,8 @@
package com.xboe.system.user.api;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang3.StringUtils;
import com.xboe.common.PageList;
import com.xboe.common.Pagination;
import com.xboe.common.constant.CharacterConstant;
import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.JsonResponse;
@@ -17,8 +13,14 @@ import com.xboe.system.user.service.IMessageService;
import com.xboe.system.user.service.MessageSender;
import com.xboe.system.user.vo.BatchMessage;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@@ -31,62 +33,69 @@ public class MessageApi extends ApiBaseController {
/**
* 查看当前账户消息列表 分页
* @param pager pageIndex 页数 pageSize 每页展示条数
* @param isRead true已读 false 未读
* */
*
* @param pager pageIndex 页数 pageSize 每页展示条数
* @param isRead true已读 false 未读
*/
@PostMapping("/list")
public JsonResponse<PageList<Message>> list(Pagination pager,Boolean isRead){
public JsonResponse<PageList<Message>> list(Pagination pager, Boolean isRead) {
String aid = this.getCurrent().getAccountId();
PageList<Message> list = service.query(pager.getPageIndex(), pager.getPageSize(), aid, isRead);
return success(list);
}
@PostMapping("/mobilelist")
public JsonResponse<PageList<Message>> mobileList(Pagination pager,Boolean isRead){
public JsonResponse<PageList<Message>> mobileList(Pagination pager, Boolean isRead) {
String aid = this.getCurrent().getAccountId();
PageList<Message> list = service.queryMobile(pager.getPageIndex(), pager.getPageSize(), aid, isRead);
return success(list);
}
/**
* 删除消息
*
* @param ids 所勾选的id集合
* 物理删除
* */
* 物理删除
*/
@PostMapping("/delete")
@AutoLog(module = "消息",action = "删除消息")
public JsonResponse<Boolean> delete(@RequestBody List<String> ids){
if(ids.isEmpty()){
@AutoLog(module = "消息", action = "删除消息")
public JsonResponse<Boolean> delete(@RequestBody List<String> ids) {
if (ids.isEmpty()) {
return badRequest("参数异常");
}
try {
service.delete(ids);
return success(true);
} catch (Exception e) {
log.error("删除失败",e);
return error("删除失败",e.getMessage());
log.error("删除失败", e);
return error("删除失败", e.getMessage());
}
}
/**
* 查看当前消息并且设置已读
* */
*/
@GetMapping("/detail")
public JsonResponse<Message> detail(String id){
if(StringUtil.isBlank(id)){
public JsonResponse<Message> detail(String id) {
if (StringUtil.isBlank(id)) {
return badRequest("参数异常");
}
Message message = service.detail(id);
return success(message);
}
/**
* 发布消息
* */
*/
@Deprecated
@PostMapping("/save")
@AutoLog(module = "消息",action = "发布消息")
public JsonResponse<Boolean> save(@RequestBody Message message){
if(StringUtil.isBlank(message.getTitle())){
@AutoLog(module = "消息", action = "发布消息")
public JsonResponse<Boolean> save(@RequestBody Message message) {
log.info(CharacterConstant.DEPRECATED_METHOD + "=MessageApi.save /xboe/sys/message/save");
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if(StringUtil.isBlank(message.getContent())){
if (StringUtil.isBlank(message.getContent())) {
return badRequest("内容不能为空");
}
try {
@@ -96,143 +105,144 @@ public class MessageApi extends ApiBaseController {
MessageSender.send(message);
return success(true);
} catch (Exception e) {
log.error("发布消息失败",e);
return error("发布消息失败",e.getMessage());
log.error("发布消息失败", e);
return error("发布消息失败", e.getMessage());
}
}
@PostMapping("/batch-send")
@AutoLog(module = "消息",action = "批量发送消息")
public JsonResponse<Boolean> batchSave(@RequestBody BatchMessage message){
if(message.getAcceptIds()==null || message.getAcceptIds().isEmpty()) {
return badRequest("无发送人信息");
}
if(message.getAcceptNames()==null || message.getAcceptNames().isEmpty()) {
return badRequest("无发送人姓名信息");
}
if(message.getAcceptIds().size()!=message.getAcceptNames().size()) {
return badRequest("发送人姓名信息不相符");
@AutoLog(module = "消息", action = "批量发送消息")
public JsonResponse<Boolean> batchSave(@RequestBody BatchMessage message) {
if (message.getAcceptIds() == null || message.getAcceptIds().isEmpty()) {
return badRequest("无发送人信息");
}
if(StringUtil.isBlank(message.getTitle())){
if (message.getAcceptNames() == null || message.getAcceptNames().isEmpty()) {
return badRequest("无发送人姓名信息");
}
if (message.getAcceptIds().size() != message.getAcceptNames().size()) {
return badRequest("发送人姓名信息不相符");
}
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if(StringUtil.isBlank(message.getTitle())){
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if(StringUtil.isBlank(message.getContent())){
if (StringUtil.isBlank(message.getContent())) {
return badRequest("内容不能为空");
}
try {
Message msg=new Message();
msg.setId(IDGenerator.generate());
Message msg = new Message();
msg.setId(IDGenerator.generate());
// msg.setAcceptId(aid);
// msg.setAcceptName(aname);
msg.setContent(message.getContent());
msg.setConType("0");
msg.setIsRead(false);
msg.setMsgType(1);
msg.setPageParams(message.getPageParams());
msg.setPageType(message.getPageType());
msg.setRefId(message.getRefId());
msg.setRefType(message.getRefType());
msg.setSendAid(message.getSendAid());
msg.setSendName(message.getSendName());
msg.setSendType(1);
msg.setSource(message.getSource());
msg.setTitle(message.getTitle());
MessageSender.batchSend(message.getAcceptIds(),message.getAcceptNames(),msg);
msg.setContent(message.getContent());
msg.setConType("0");
msg.setIsRead(false);
msg.setMsgType(1);
msg.setPageParams(message.getPageParams());
msg.setPageType(message.getPageType());
msg.setRefId(message.getRefId());
msg.setRefType(message.getRefType());
msg.setSendAid(message.getSendAid());
msg.setSendName(message.getSendName());
msg.setSendType(1);
msg.setSource(message.getSource());
msg.setTitle(message.getTitle());
MessageSender.batchSend(message.getAcceptIds(), message.getAcceptNames(), msg);
return success(true);
} catch (Exception e) {
log.error("发布消息失败",e);
return error("发布消息失败",e.getMessage());
log.error("发布消息失败", e);
return error("发布消息失败", e.getMessage());
}
}
/**
* 当前登陆人未读消息条数
* */
*/
@GetMapping("/isRead")
public JsonResponse<Integer> isRead(){
public JsonResponse<Integer> isRead() {
String aid = this.getCurrent().getAccountId();
Integer count = service.isRead(aid);
return success(count);
}
/**
* 设置已读
* */
*/
@PostMapping("/updateIsRead")
@AutoLog(module = "消息",action = "设置消息已读")
public JsonResponse<Boolean> updateIsRead(@RequestBody List<String> ids){
if(ids.isEmpty()){
@AutoLog(module = "消息", action = "设置消息已读")
public JsonResponse<Boolean> updateIsRead(@RequestBody List<String> ids) {
if (ids.isEmpty()) {
return badRequest("参数异常");
}
try {
service.updateIsRead(ids);
return success(true);
} catch (Exception e) {
log.error("设置已读失败",e);
return error("设置已读失败",e.getMessage());
log.error("设置已读失败", e);
return error("设置已读失败", e.getMessage());
}
}
/**
* 设置已读
* */
*/
//@AutoLog(module = "消息",action = "未的全部设置为已读")
@GetMapping("/readall")
public JsonResponse<Boolean> readAll(){
String aid=getCurrent().getAccountId();
if(StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
public JsonResponse<Boolean> readAll() {
String aid = getCurrent().getAccountId();
if (StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
}
try {
service.setReadByAcceptId(aid);
return success(true);
} catch (Exception e) {
log.error("设置已读失败",e);
return error("设置已读失败",e.getMessage());
log.error("设置已读失败", e);
return error("设置已读失败", e.getMessage());
}
}
@GetMapping("/clearall")
public JsonResponse<Boolean> clearAll(){
String aid=getCurrent().getAccountId();
if(StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
public JsonResponse<Boolean> clearAll() {
String aid = getCurrent().getAccountId();
if (StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
}
try {
service.cleanByAcceptId(aid);
return success(true);
} catch (Exception e) {
log.error("清空消息错误",e);
return error("清空消息失败",e.getMessage());
log.error("清空消息错误", e);
return error("清空消息失败", e.getMessage());
}
}
@GetMapping("/clearMessageNotCase")
public JsonResponse<Integer> clearMessageNotCase(){
public JsonResponse<Integer> clearMessageNotCase() {
String aid=getCurrent().getAccountId();
if(StringUtils.isBlank(aid)) {
String aid = getCurrent().getAccountId();
if (StringUtils.isBlank(aid)) {
return badRequest("获取用户信息异常");
}
try {
Integer type = service.clearMessageNotCase(aid);
return success(type);
} catch (Exception e) {
log.error("清空消息错误",e);
return error("清空消息失败",e.getMessage());
log.error("清空消息错误", e);
return error("清空消息失败", e.getMessage());
}
}
@@ -240,12 +250,11 @@ public class MessageApi extends ApiBaseController {
/**
* 移动端
* 消息页面,按用户分组返回 暂时不用
*
* */
*/
@GetMapping("/mess-group")
public JsonResponse<Map<String,Object>> messGroup(){
public JsonResponse<Map<String, Object>> messGroup() {
String aid = this.getCurrent().getAccountId();
if(StringUtil.isBlank(aid)){
if (StringUtil.isBlank(aid)) {
return badRequest("参数异常");
}
Map<String, Object> map = service.messGroup(aid);
@@ -255,27 +264,27 @@ public class MessageApi extends ApiBaseController {
/**
* 移动端
* 按用户删除消息 暂时不用
* */
*/
@GetMapping("/remove")
public JsonResponse<Boolean> remove(String aid){
if(StringUtil.isBlank(aid)){
public JsonResponse<Boolean> remove(String aid) {
if (StringUtil.isBlank(aid)) {
return badRequest("参数异常");
}
try {
service.remove(aid);
return success(true);
} catch (Exception e) {
return error("参数异常",e.getMessage());
return error("参数异常", e.getMessage());
}
}
/**
* 用户消息 查最新的一条
* */
*/
@GetMapping
public JsonResponse<List<Message>> userMess(){
public JsonResponse<List<Message>> userMess() {
String aid = this.getCurrent().getAccountId();
if(StringUtil.isBlank(aid)){
if (StringUtil.isBlank(aid)) {
return badRequest("参数异常");
}
List<Message> messages = service.userMess(aid);
@@ -287,5 +296,4 @@ public class MessageApi extends ApiBaseController {
* */
}

View File

@@ -0,0 +1,98 @@
package com.xboe.system.user.api;
import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.StringUtil;
import com.xboe.core.JsonResponse;
import com.xboe.core.api.ApiBaseController;
import com.xboe.core.log.AutoLog;
import com.xboe.system.user.entity.Message;
import com.xboe.system.user.service.MessageSender;
import com.xboe.system.user.vo.BatchMessage;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.time.LocalDateTime;
@Slf4j
@RestController
@RequestMapping("/remote/xboe/sys/message")
public class MessageRpcController extends ApiBaseController {
/**
* 发布消息
*/
@PostMapping("/save")
@AutoLog(module = "消息", action = "发布消息")
public JsonResponse<Boolean> save(@RequestBody Message message) {
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if (StringUtil.isBlank(message.getContent())) {
return badRequest("内容不能为空");
}
try {
message.setIsRead(false);
message.setMsgType(1);
message.setMsgTime(LocalDateTime.now());
MessageSender.send(message);
return success(true);
} catch (Exception e) {
log.error("发布消息失败", e);
return error("发布消息失败", e.getMessage());
}
}
@PostMapping("/batch-send")
@AutoLog(module = "消息", action = "批量发送消息")
public JsonResponse<Boolean> batchSave(@RequestBody BatchMessage message) {
if (message.getAcceptIds() == null || message.getAcceptIds().isEmpty()) {
return badRequest("无发送人信息");
}
if (message.getAcceptNames() == null || message.getAcceptNames().isEmpty()) {
return badRequest("无发送人姓名信息");
}
if (message.getAcceptIds().size() != message.getAcceptNames().size()) {
return badRequest("发送人姓名信息不相符");
}
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if (StringUtil.isBlank(message.getTitle())) {
return badRequest("标题不能为空");
}
if (StringUtil.isBlank(message.getContent())) {
return badRequest("内容不能为空");
}
try {
Message msg = new Message();
msg.setId(IDGenerator.generate());
msg.setContent(message.getContent());
msg.setConType("0");
msg.setIsRead(false);
msg.setMsgType(1);
msg.setPageParams(message.getPageParams());
msg.setPageType(message.getPageType());
msg.setRefId(message.getRefId());
msg.setRefType(message.getRefType());
msg.setSendAid(message.getSendAid());
msg.setSendName(message.getSendName());
msg.setSendType(1);
msg.setSource(message.getSource());
msg.setTitle(message.getTitle());
MessageSender.batchSend(message.getAcceptIds(), message.getAcceptNames(), msg);
return success(true);
} catch (Exception e) {
log.error("发布消息失败", e);
return error("发布消息失败", e.getMessage());
}
}
}

View File

@@ -1,84 +0,0 @@
## redis
spring.redis.database=1
#spring.redis.host=127.0.0.1
#spring.redis.password=ENC(zA5LNV8xw3yEx6LMwdGGBGgNsOaD3Cg+)
#spring.redis.port=6379
spring.redis.host=124.70.92.162
spring.redis.password=qwert!W577
spring.redis.port=6379
# cloud nacos config
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
## datasource config
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto=update
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
#spring.datasource.username=root
#spring.datasource.password=ENC(lAoFOYuc8CAypPtigTNLYg==)
spring.datasource.url=jdbc:mysql://10.251.160.40:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=admin
spring.datasource.password=boeRds01
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置
logging.config=classpath:log/logback-@profileActive@.xml
## 静态文件目录默认是在static下面以后独立到nginx下面配置
spring.web.resources.static-locations=file:E:/Projects/BOE/10/static
## s秒 m分钟 h小时d天
xcaching.specs.favorites.timeout=10s
xcaching.specs.praises.timeout=10s
xcaching.specs.shares.timeout=10s
## xboe config
xboe.api.cross_filter=true
## 是否是本地开发模式
xboe.local.dev=true
## 上传相磁的路径配置
xboe.upload.file.temp_path=E:/Projects/BOE/10/static/temp
xboe.upload.file.save_path=E:/Projects/BOE/10/static/upload
xboe.upload.file.http_path=http://127.0.0.1:9090/cdn/upload
## 外部接口调用地址 旧系统机构及用户数据接口
xboe.externalinterface.url.system=http://localhost:9091
## 新增加的教师的内部调用接口
xboe.old.base.url=https://u-pre.boe.com
#xboe.old.base.url=https://pretest.zcwytd.com
# 用户中心的接口配置
xboe.server.userbasic.url=https://u-pre.boe.com/userbasic
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
#加密盐
#jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD}
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
# elasticsearch config
xboe.elasticsearch.server.ip=127.0.0.1
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=
xboe.elasticsearch.server.password=
#xboe.elasticsearch.server.user=elastic
#xboe.elasticsearch.server.password=Boe@es123
# 默认搜索的索引
xboe.elasticsearch.index.name=new_resource_list
## 邮件的配置
xboe.email.url=https://u-pre.boe.com/api/b1/email/send
#xboe.email.url=https://pretest.zcwytd.com/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=

View File

@@ -1,64 +0,0 @@
## redis
spring.redis.database=1
spring.redis.host=10.251.160.38
spring.redis.password=qwert!W577
spring.redis.port=6379
#spring.redis.database=3
#spring.redis.host=10.251.129.122
#spring.redis.password=qwert!W588
#spring.redis.port=6379
# cloud nacos config
spring.cloud.nacos.discovery.server-addr=10.251.181.11:8848
## datasource config
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.251.129.126:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=admin
spring.datasource.password=boeRds01
logging.level.org.hibernate.SQL=ERROR
#logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置
logging.config=classpath:log/logback-@profileActive@.xml
## 静态文件目录默认是在static下面以后独立到nginx下面配置
spring.web.resources.static-locations=file:E:/Projects/BOE/java/static
## xboe config
xboe.api.cross_filter=true
## 上传相磁的路径配置
xboe.upload.file.temp_path=/tmp
xboe.upload.file.save_path=/home/www/elearning/upload
xboe.upload.file.http_path=https://u.boe.com/upload
## 外部接口调用地址 旧系统机构及用户数据接口
xboe.externalinterface.url.system=http://127.0.0.1:9091
## 新增加的教师的内部调用接口
xboe.old.base.url=https://u.boe.com
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
xboe.server.userbasic.url=https://u.boe.com/userbasic
#加密盐
#jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
# elasticsearch config
xboe.elasticsearch.server.ip=10.251.129.21
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=
xboe.elasticsearch.server.password=
## 邮件的配置
xboe.email.url=https://u.boe.com/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=

View File

@@ -1,85 +0,0 @@
# cloud nacos config
spring.cloud.nacos.discovery.server-addr=10.251.113.100:8848
## redis
spring.redis.database=1
spring.redis.host=10.251.88.213
spring.redis.password=qwert!W588
spring.redis.port=6379
## datasource config
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://10.251.129.129:8066/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
#spring.datasource.username=admin
#spring.datasource.password=ocYMC>!{8G
spring.datasource.url=jdbc:mysql://10.251.88.216:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=admin
spring.datasource.password=boeRds01
## 使用 hikari 连接池
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.auto-commit: true
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=20
logging.level.org.hibernate.SQL=ERROR
# logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置
logging.config=classpath:log/logback-@profileActive@.xml
## ???????????static????????nginx????
spring.web.resources.static-locations=file:E:/Projects/BOE/java/static
## xboe config
xboe.api.cross_filter=true
## 上传相磁的路径配置
xboe.upload.file.temp_path=/tmp
xboe.upload.file.save_path=/home/www/elearning/upload
xboe.upload.file.http_path=https://u.boe.com/upload
## 外部接口调用地址 旧系统机构及用户数据接口
xboe.externalinterface.url.system=http://127.0.0.1:9091
## ?????????????
xboe.old.base.url=https://u.boe.com
## ???????api??
xboe.stat.base.url=http://127.0.0.1:9080
xboe.server.userbasic.url=https://u.boe.com/userbasic
#???
#jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
# elasticsearch config
xboe.elasticsearch.server.ip=10.251.88.218
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=
xboe.elasticsearch.server.password=
## ?????
xboe.email.url=https://u.boe.com/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=
xxl.job.admin.addresses=http://u.boe.com/jobAdmin
xxl.job.accessToken=65ddc683-22f5-83b4-de3a-3c97a0a29af0
xxl.job.executor.appname=java-servers-job-api
xxl.job.executor.port=9995
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.logpath=/var/log/xxl-job/dw/
xxl.job.executor.logretentiondays=30

View File

@@ -1,92 +0,0 @@
## redis
spring.redis.database=1
spring.redis.host=10.251.160.38
spring.redis.password=qwert!W577
spring.redis.port=6379
# cloud nacos config
spring.cloud.nacos.discovery.server-addr=10.251.186.27:8848
## datasource config
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.251.160.40:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=admin
spring.datasource.password=boeRds01
## 使用 hikari 连接池
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.auto-commit: true
spring.datasource.hikari.minimum-idle=5
spring.datasource.hikari.idle-timeout=60000
spring.datasource.hikari.connection-timeout=30000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=20
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置
logging.config=classpath:log/logback-test.xml
server.tomcat.accept-count=1000
# 最大可被连接数默认10000
server.tomcat.max-connections=10000
# 最大工作线程数默认200,
server.tomcat.threads.max=500
# 最小工作线程数初始化分配线程数默认10
server.tomcat.threads.min-spare=100
# 定制KeepAliveTimeout设置30秒内没有请求则服务器自动断开keepalive连接
server.tomcat.keep-alive-timeout=3000
## 当客户端发送超过10000个请求则自动断开keepalive连接
server.tomcat.max-keep-alive-requests=10000
## xboe config
xboe.api.cross_filter=true
## 上传存储的路径配置
xboe.upload.file.temp_path=/tmp
xboe.upload.file.save_path=/home/www/elearning/upload
xboe.upload.file.http_path=http://u-pre.boe.com/upload
## 外部接口调用地址 旧系统机构及用户数据接口
xboe.externalinterface.url.system=http://127.0.0.1:9091
## 新增加的教师的内部调用接口
xboe.old.base.url=https://u-pre.boe.com
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
xboe.server.userbasic.url=https://u-pre.boe.com/userbasic
#加密盐
#jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
# elasticsearch config
xboe.elasticsearch.server.ip=10.251.129.25
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=elastic
xboe.elasticsearch.server.password=Boe@es123
## 邮件的配置
xboe.email.url=https://u-pre.boe.com/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=
boe.domain=https://u-pre.boe.com
xxl.job.admin.addresses=http://u-pre.boe.com/jobAdmin
xxl.job.accessToken=65ddc683-22f5-83b4-de3a-3c97a0a29af0
xxl.job.executor.appname=java-servers-job-api
xxl.job.executor.port=9995
xxl.job.executor.address=
xxl.job.executor.ip=
xxl.job.executor.logpath=/var/log/xxl-job/dw/
xxl.job.executor.logretentiondays=30

View File

@@ -1,69 +0,0 @@
## redis
spring.redis.database=2
spring.redis.host=10.251.160.38
spring.redis.password=qwert!W577
spring.redis.port=6379
## datasource config
spring.jpa.hibernate.ddl-auto=none
spring.datasource.driverClassName=com.mysql.jdbc.Driver
# spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://10.251.160.40:3306/boe_base?useSSL=false&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull
spring.datasource.username=admin
spring.datasource.password=boeRds01
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE
# 设置logback.xml位置
logging.config=classpath:log/logback-test.xml
server.tomcat.accept-count=1000
# 最大可被连接数默认10000
server.tomcat.max-connections=10000
# 最大工作线程数默认200,
server.tomcat.threads.max=500
# 最小工作线程数初始化分配线程数默认10
server.tomcat.threads.min-spare=100
# 定制KeepAliveTimeout设置30秒内没有请求则服务器自动断开keepalive连接
server.tomcat.keep-alive-timeout=3000
## 当客户端发送超过10000个请求则自动断开keepalive连接
server.tomcat.max-keep-alive-requests=10000
## xboe config
xboe.api.cross_filter=true
## 上传存储的路径配置
xboe.upload.file.temp_path=/tmp
xboe.upload.file.save_path=/home/www/elearning/upload
xboe.upload.file.http_path=http://10.251.160.135/upload
## 外部接口调用地址 旧系统机构及用户数据接口
xboe.externalinterface.url.system=http://127.0.0.1:9091
## 新增加的教师的内部调用接口
xboe.old.base.url=https://10.251.160.135
## 用户统计接口的api地址
xboe.stat.base.url=http://127.0.0.1:9080
xboe.server.userbasic.url=https://10.251.160.135/userbasic
#加密盐
#jasypt.encryptor.password=jasypt
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
# elasticsearch config
xboe.elasticsearch.server.ip=10.251.129.25
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=elastic
xboe.elasticsearch.server.password=Boe@es123
## 邮件的配置
xboe.email.url=https://10.251.160.135/api/b1/email/send
xboe.email.from=boeu_learning@boe.com.cn
xboe.email.user=
xboe.email.security=

View File

@@ -1,83 +0,0 @@
spring.profiles.active=@profileActive@
spring.application.name=boe-server-all
server.port=9090
server.servlet.session.timeout=30m
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.servlet.encoding.force=true
server.tomcat.uri-encoding=UTF-8
ok.http.connect-timeout=30
ok.http.read-timeout=30
ok.http.write-timeout=30
# 连接池中整体的空闲连接的最大数量
ok.http.max-idle-connections=200
# 连接空闲时间最多为 300 秒
ok.http.keep-alive-duration=300
#spring.jackson.locale=
#spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
# spring.jackson.default-property-inclusion=NON_NULL
spring.jackson.time-zone=GMT+8
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB
## 静态文件目录默认是在static下面以后独立到nginx下面配置
spring.mvc.static-path-pattern=/cdn/**
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.min-idle=0
spring.redis.lettuce.pool.max-idle=30
spring.redis.lettuce.pool.max-wait=10000ms
spring.redis.lettuce.shutdown-timeout=100ms
# 上传的临时目录,部署到服务器必须指定
# spring.servlet.multipart.location=
# 上传的临时目录,部署到服务器必须指定
# spring.servlet.multipart.location=
# jpa config
spring.jpa.database = MYSQL
spring.jpa.show-sql = false
# spring.jpa.properties.hibernate.cache.use_second_level_cache=true
# spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory
spring.jpa.properties.hibernate.naming_strategy=org.hibernate.cfg.EJB3NamingStrategy
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
#spring.transaction
# spring.jpa.properties.hibernate.allow_update_outside_transaction=true
# spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate5.SpringSessionContext
# 设置logback.xml位置
logging.config=classpath:log/logback-@profileActive@.xml
# 用于分布式id生成不重复的处理 配置0-31 的数值
# config.id.generator.server.num=1
# config.id.generator.datacenter.num=1
#boe.domain=https://pretest.zcwytd.com
boe.domain=http://127.0.0.1
#boe.domain=http://localhost:30001
orgTree.orgTreeList=${boe.domain}/userbasic/org/list
# ????id????????????
orgTree.orgChildTreeList=${boe.domain}/userbasic/org/childOrgs
userBasic.searchUserList=${boe.domain}/userbasic/user/list
audience.usersByAudienceList=${boe.domain}/userbasic/audience/memberList
#获取用户学习课程数据
statApi.userdynamicList=${boe.domain}/statApi/xboe/m/stat/userdynamic/list
#用户中心根据组织id查询用户信息接口递归子组织
audience.getOrgUsers=${boe.domain}/userbasic/user/getOrgUsers
#获取工号
infrasApi.dict=${boe.domain}/infrasApi/dict/list
#获取非报名课id
manageApi.stu.offcourse=${boe.domain}/manageApi/stu/offcourse/getOffCourseId
manageApi.editExam=${boe.domain}/manageApi/admin/project/editExam
#获取离职教师id
userBasic.getTeacherIds=${boe.domain}/userbasic/user/getTeacherInfo
coursesuilt.getStudyStatus=${boe.domain}/manageApi/stu/project/completeStatus
userBasic.getUserBasicInfo=${boe.domain}/userbasic/user/getUserBasicInfo
#讲师管理创建或修改在线课授课记录
coursesuilt.updateOrSaveCourse=${boe.domain}/manageApi/admin/teacherRecord/updateOrSaveCourse
coursesuilt.syncCourseStudent=${boe.domain}/manageApi/admin/teacherRecord/syncCourseStudent
coursesuilt.syncOnLineScore=${boe.domain}/manageApi/admin/teacherRecord/syncOnLineScore
coursesuilt.updateOnLineStatua=${boe.domain}/manageApi/admin/teacherRecord/updateOnLineStatua

View File

@@ -0,0 +1,24 @@
spring:
application:
name: boe-server-all
profiles:
active: dev
cloud:
nacos:
discovery:
server-addr: 192.168.0.101:8848
config:
server-addr: 192.168.0.101:8848
file-extension: yaml
namespace: fd5741ee-c2aa-4002-a9b0-43a11436d35c
name: boe-server-all
group: SERVER_GROUP
extension-configs:
- data-id: redis0.yaml
group: COMMON_GROUP
refresh: true
# shared-configs:
# - data-id: redis0.yaml
# group: COMMON_GROUP
# refresh: true