Merge branch 'master' of codeup.aliyun.com:6265f483e4166464dc2f9c14/boeu/baseservers

This commit is contained in:
dongruihua
2022-11-03 22:28:48 +08:00
26 changed files with 249 additions and 123 deletions

View File

@@ -8,9 +8,12 @@ import java.util.Enumeration;
import javax.annotation.Resource;
import org.apache.commons.lang3.RandomUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import com.xboe.common.utils.IDGenerator;
import com.xboe.common.utils.MD5Util;
import com.xboe.core.SysConstant;
import com.xboe.module.idconfig.entity.IPMapping;
import com.xboe.module.idconfig.service.IIPMappingService;
@@ -31,8 +34,15 @@ public class IdGeneratorAutoConfig {
public void init() throws Exception{
String ip=getLinuxLocalIp();
String appName=SysConstant.getConfigValue("spring.application.name");
if(StringUtils.isBlank(appName)) {
appName=IDGenerator.randomString(8);//随机生成8位字符串
}
log.info("读取的应用名称:"+appName);
String md5=MD5Util.MD5Encode(ip+appName);
IPMapping ipm = ipMappingService.get(md5);
IPMapping ipm = ipMappingService.findByIP(ip);
Integer workServerId=null;
Integer dataCenterId=null;
if(ipm!=null) {
@@ -43,9 +53,11 @@ public class IdGeneratorAutoConfig {
workServerId=RandomUtils.nextInt(0,31);
dataCenterId=RandomUtils.nextInt(0,31);
ipm=new IPMapping();
ipm.setId(md5);
ipm.setIp(ip);
ipm.setDcNum(dataCenterId);
ipm.setWorkNum(workServerId);
ipm.setAppName(appName);
ipMappingService.save(ipm);
}
IDGenerator.init(workServerId,dataCenterId);

View File

@@ -11,13 +11,19 @@ import lombok.Data;
@Data
@Entity
@Table(name = SysConstant.TABLE_PRE + "idconfig")
@Table(name = SysConstant.TABLE_PRE + "ipapp")
public class IPMapping {
@Id
@Column(name = "id", length = 32)
private String id;
@Column(name = "ip", length = 40)
private String ip;
@Column(name = "app_name", length = 50)
private String appName;
@Column(name = "work_num", length = 2)
private Integer workNum;

View File

@@ -5,8 +5,8 @@ import java.util.List;
import com.xboe.module.idconfig.entity.IPMapping;
public interface IIPMappingService {
IPMapping findByIP(String ip);
IPMapping get(String id);
void save(IPMapping ipm);

View File

@@ -17,10 +17,6 @@ public class IPMappingServiceImpl implements IIPMappingService{
@Autowired
IPMappingDao dao;
@Override
public IPMapping findByIP(String ip) {
return dao.get(ip);
}
@Override
@Transactional
@@ -33,5 +29,10 @@ public class IPMappingServiceImpl implements IIPMappingService{
public List<IPMapping> getAll() {
return dao.getAll();
}
@Override
public IPMapping get(String id) {
return dao.get(id);
}
}

View File

@@ -1,30 +1,17 @@
package com.xboe;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.lang3.RandomUtils;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;
import com.xboe.common.utils.IDGenerator;
import com.xboe.module.idconfig.entity.IPMapping;
import com.xboe.module.idconfig.service.IIPMappingService;
import lombok.extern.slf4j.Slf4j;
import com.xboe.module.idconfig.IdGeneratorAutoConfig;
/**
* 启动就执行的一些处理
*/
@Slf4j
@Component
public class ApplicationStartRunner implements ApplicationRunner {
@@ -32,64 +19,12 @@ public class ApplicationStartRunner implements ApplicationRunner {
Environment env;
@Resource
IIPMappingService ipMappingService;
IdGeneratorAutoConfig autoConfig;
@Override
public void run(ApplicationArguments args) throws Exception {
// Map<String,Integer> ipconfig=new HashMap<>();
// ipconfig.put("10.251.186.27",0);//测试环境
// ipconfig.put("10.251.132.41",1);
// ipconfig.put("10.251.132.42",2);
// ipconfig.put("10.251.132.47",3);
String ip=getLinuxLocalIp();
IPMapping ipm = ipMappingService.findByIP(ip);
Integer workServerId=null;
Integer dataCenterId=null;
if(ipm!=null) {
workServerId=ipm.getWorkNum();
dataCenterId=ipm.getDcNum();
}else {
log.warn("无IP【"+ip+"】的配置的workNum和DataCenterNum,系统自动生成随机数");
workServerId=RandomUtils.nextInt(0,31);
dataCenterId=RandomUtils.nextInt(0,31);
ipm=new IPMapping();
ipm.setIp(ip);
ipm.setDcNum(dataCenterId);
ipm.setWorkNum(workServerId);
ipMappingService.save(ipm);
}
IDGenerator.init(workServerId,dataCenterId);
//多服务器配置时生成的id根据服务器ip地址不同参数不同防止不同服务器生成的id重复问题
autoConfig.init();
}
private static String getLinuxLocalIp() throws SocketException {
String ip = "";
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
//String name = intf.getName();
//if (!name.contains("docker") && !name.contains("lo")){
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
String ipaddress = inetAddress.getHostAddress().toString();
if (!ipaddress.contains(":") && !ipaddress.contains("::") && !ipaddress.contains("0:0:") && !ipaddress.contains("fe80")) {
ip = ipaddress;
//log.error("获取的ip:"+ipaddress);
}
}
}
//}
}
}catch (SocketException ex) {
ip = "127.0.0.1";
//log.error("获取ip地址异常",ex);
}
//log.error("获取的实际的ip:"+ip);
return ip;
}
}

View File

@@ -350,5 +350,22 @@ public class Course extends BaseEntity {
this.shares=shares;
this.favorites=favorites;
}
public Course(String id,String name,String summary,String coverImg,String sysCreateAid,String sysCreateBy,Integer type,LocalDateTime publishTime,Integer views,Integer comments,Integer praises,Integer shares,Integer favorites,Float score){
super.setId(id);
this.name=name;
this.summary=summary;
this.coverImg=coverImg;
super.setSysCreateAid(sysCreateAid);
super.setSysCreateBy(sysCreateBy);
this.type=type;
this.publishTime=publishTime;
this.views=views;
this.comments=comments;
this.praises=praises;
this.shares=shares;
this.favorites=favorites;
this.score=score;
}
}

View File

@@ -63,6 +63,7 @@ public class CourseHRBPAuditServiceImpl implements ICourseHRBPAuditService {
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.addFields("a","c.name","c.type","c.sysType1","c.sysType2","c.sysType3","c.sysCreateBy");
//query.addGroupBy("")
query.addFilter(FieldFilters.eqField("a.courseId", "c.id"));
query.addFilter(FieldFilters.eq("a.courseId",info.getCourseId()));

View File

@@ -370,8 +370,9 @@ public class CourseServiceImpl implements ICourseService {
if(rs.isEmpty()) {
log.error("未能查询出数据");
}
courses.addAll(rs);
return courses;
// courses.addAll(rs);
rs.addAll(courses);
return rs;
}
@Override
@@ -424,11 +425,12 @@ public class CourseServiceImpl implements ICourseService {
courseDao.updateFieldById(id,"name","已删除"+name);
//同时添加发布事件,这里的创建人需要修改为教师
Course c=courseDao.get(id);
if(eventSender!=null) {
eventSender.send("删除课程","PublishCourse", "删除课程【"+c.getName()+"", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
}else {
log.error("未配置事件消息发送的实现");
}
//删除分两种情况,一个是管理员删除,一个是自己删除 ,所以这里的处理移到前端了
// if(eventSender!=null) {
// eventSender.send("删除课程","DeleteCourse", "删除课程【"+c.getName()+"】", c.getId(), "1", c.getName(), c.getSysCreateAid(), c.getSysCreateBy(),"");
// }else {
// log.error("未配置事件消息发送的实现");
// }
//删除
if(c.getFullTextId()!=null) {
try {
@@ -1040,6 +1042,7 @@ public class CourseServiceImpl implements ICourseService {
QueryBuilder builder = QueryBuilder.from(Course.class);
builder.addFilter(FieldFilters.eq("deleted",false));
builder.addFilter(FieldFilters.eq("enabled",true));
builder.addFilter(FieldFilters.gt("score",4.0f));
builder.setPageSize(3);
List<IFieldFilter> iFieldFilters = new ArrayList<>();
iFieldFilters.add(FieldFilters.in("sysType1",strings));

View File

@@ -72,8 +72,6 @@ public class AloneExamApi extends ApiBaseController {
@Resource
private IExamPaperService examPapeService;
/**
* 当前用户的考试任务,AloneExam
* @param pager
@@ -84,7 +82,7 @@ public class AloneExamApi extends ApiBaseController {
public JsonResponse<PageList<AloneExam>> findUserPage(Pagination pager, AloneExam dto) {
try {
dto.setAid(getCurrent().getAccountId());
PageList<AloneExam> rs = service.findPage(pager.getPageIndex(), pager.getPageSize(), dto, OrderCondition.desc("sysCreateTime"));
PageList<AloneExam> rs = service.findPage(pager.getPageIndex(), pager.getPageSize(), dto, null);
return success(rs);
} catch (Exception e){
log.error("查询独立考试答卷列表错误", e);

View File

@@ -5,6 +5,7 @@ import java.time.LocalDateTime;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xboe.core.SysConstant;
@@ -115,7 +116,7 @@ public class AloneExam extends IdBaseEntity {
/**
* 开始时间
*/
@JsonFormat(pattern = "yyyy--MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "start_time")
private LocalDateTime startTime;
@@ -125,5 +126,26 @@ public class AloneExam extends IdBaseEntity {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "end_time")
private LocalDateTime endTime;
@Transient
private Float total;
public AloneExam() {
}
public AloneExam(String id,String aid,String testId,String testName,Integer testDuration,Integer times,Float score,Integer status,LocalDateTime taskTime,LocalDateTime startTime,LocalDateTime endTime) {
this.setId(id);
this.setAid(aid);
this.testId=testId;
this.testName=testName;
this.testDuration=testDuration;
this.times=times;
this.score=score;
this.status=status;
this.taskTime=taskTime;
this.startTime=startTime;
this.endTime=endTime;
}
}

View File

@@ -18,6 +18,7 @@ import com.xboe.module.exam.dao.AloneExamAnswerDao;
import com.xboe.module.exam.dao.AloneExamDao;
import com.xboe.module.exam.entity.AloneExam;
import com.xboe.module.exam.entity.AloneExamAnswer;
import com.xboe.module.exam.entity.ExamTest;
import com.xboe.module.exam.service.IAloneExamService;
@Service
@@ -182,29 +183,31 @@ public class AloneExamServiceImpl implements IAloneExamService{
@Override
public PageList<AloneExam> findPage(int pageIndex, int pageSize, AloneExam aea, OrderCondition oc) {
QueryBuilder query=QueryBuilder.from(AloneExam.class);
QueryBuilder query=QueryBuilder.from(AloneExam.class.getSimpleName()+" a,"+ExamTest.class.getSimpleName()+" t");
query.addField("new AloneExam(a.id,a.aid,a.testId,a.testName,a.testDuration,a.times,a.score,a.status,a.taskTime,t.entranceTime,t.deadlineTime)");
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.addFilter(FieldFilters.eqField("a.testId","t.id"));
if(oc!=null) {
query.addOrder(oc);
}else {
query.addOrder(OrderCondition.desc("sysCreateTime"));
query.addOrder(OrderCondition.desc("a.sysCreateTime"));
}
if(aea!=null) {
if(aea.getStatus()!=null) {
query.addFilter(FieldFilters.eq("status",aea.getStatus()));
query.addFilter(FieldFilters.eq("a.status",aea.getStatus()));
}
if(StringUtils.isNotBlank(aea.getTestId())) {
query.addFilter(FieldFilters.eq("testId",aea.getTestId()));
query.addFilter(FieldFilters.eq("a.testId",aea.getTestId()));
}
if(StringUtils.isNotBlank(aea.getTestName())) {
query.addFilter(FieldFilters.like("testName",aea.getTestName()));
query.addFilter(FieldFilters.like("a.testName",aea.getTestName()));
}
if(StringUtils.isNotBlank(aea.getAid())) {
query.addFilter(FieldFilters.eq("aid",aea.getAid()));
query.addFilter(FieldFilters.eq("a.aid",aea.getAid()));
}
if(StringUtils.isNotBlank(aea.getName())) {
query.addFilter(FieldFilters.eq("name",aea.getName()));
query.addFilter(FieldFilters.eq("a.name",aea.getName()));
}
}
return aeDao.findPage(query.builder());

View File

@@ -2,7 +2,9 @@ package com.xboe.module.interaction.api;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.xboe.common.utils.StringUtil;
import com.xboe.module.interaction.dto.CommentsDto;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -70,6 +72,37 @@ public class CommentsApi extends ApiBaseController{
return success(list);
}
/**
* 只显示某个内容下的一级评论,现在只有笔记
* */
@PostMapping("/list")
public JsonResponse<List<Comments>> list(Integer objType,String objId){
if(StringUtil.isBlank(objId)){
return badRequest("参数异常");
}
if(objType==null){
return badRequest("参数异常");
}
List<Comments> list = service.list(objType, objId);
// List<String> ids=new ArrayList<String>();
// for(Comments c: list) {
// if(c.getReplys()>0) {
// ids.add(c.getId());
// }
// }
List<String> ids = list.stream().map(Comments::getId).collect(Collectors.toList());
if(!ids.isEmpty()) {
List<Comments> replyList = service.findReplysByCommentIds(20, objType, ids);
list.addAll(replyList);
}
return success(list);
}
@RequestMapping(value="/user-reply-list",method= {RequestMethod.GET,RequestMethod.POST})

View File

@@ -70,5 +70,10 @@ public class FavoriteDto {
* */
private Float progress;
/**
* 课程评分
* */
private Float score;
}

View File

@@ -91,6 +91,11 @@ public class FavoriteTotalDto {
* */
private String qid;
/**
* score
* */
private Float score;
public FavoriteTotalDto() {
}

View File

@@ -137,5 +137,13 @@ public interface ICommentsService {
PageList<CommentsDto> findAll(int pageIndex, int pageSize, String toaid, String uname);
/**
*
* 笔记的回复
* */
List<Comments> list(Integer objType,String objId);
}

View File

@@ -289,6 +289,12 @@ public class CommentsServiceImpl implements ICommentsService{
}
@Override
public List<Comments> list(Integer objType, String objId) {
List<Comments> list = dao.findList(FieldFilters.eq("objType", objType), FieldFilters.eq("objId", objId));
return list;
}
@Override
public PageList<CommentsDto> findCourseTome(int pageIndex, int pageSize, Integer objType, String toaid, String uname, Boolean isread) {

View File

@@ -189,7 +189,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
if(!courseList.isEmpty()) {
QueryBuilder from = QueryBuilder.from(Course.class);
from.addFilter(FieldFilters.in("id",courseList));
from.addFields("new Course(id,name,summary,coverImg,sysCreateAid,sysCreateBy,type,publishTime,views,comments,praises,shares,favorites)");
from.addFields("new Course(id,name,summary,coverImg,sysCreateAid,sysCreateBy,type,publishTime,views,comments,praises,shares,favorites,score)");
List<Course> courses = courseDao.findList(from.builder());
if(!courses.isEmpty()){
for (Course c : courses) {
@@ -208,6 +208,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
favoriteTotalDto.setPraises(c.getPraises());
favoriteTotalDto.setShares(c.getShares());
favoriteTotalDto.setFavorites(c.getFavorites());
favoriteTotalDto.setScore(c.getScore());
}
}
}
@@ -438,7 +439,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
String from=Favorites.class.getSimpleName()+" f,"+Course.class.getSimpleName()+" c";
QueryBuilder query=QueryBuilder.from(from);
query.addFields("f.id","f.sysCreateTime","f.objId","c.name","c.summary","c.type","c.coverImg","c.sysCreateAid","c.sysCreateBy");
query.addFields("c.deadTime","c.views","c.comments","c.praises","c.shares","c.favorites","f.objType");
query.addFields("c.deadTime","c.views","c.comments","c.praises","c.shares","c.favorites","f.objType","c.score");
query.setPageIndex(pageIndex);
query.setPageSize(pageSize);
query.addOrder(OrderCondition.desc("f.id"));
@@ -478,6 +479,7 @@ public class FavoritesServiceImpl implements IFavoritesService{
dto.setShares(ConvertUtil.toInt(objs[13]));
dto.setFavorites(ConvertUtil.toInt(objs[14]));
dto.setObjType((Integer) objs[15]);
dto.setScore((Float) objs[16]);
result.getList().add(dto);
}

View File

@@ -86,6 +86,9 @@ public class Answer extends IdBaseEntity {
@Column(name = "replay_name",length = 50)
private String replayName;
@Column(name = "replays")
private Integer replays;
@Transient
private List<Answer> answers;

View File

@@ -41,6 +41,7 @@ public class AnswerServiceImpl implements IAnswerService {
answer.setShares(0);
answer.setDeleted(false);
answer.setClevel(1);
answer.setReplays(0);
answerDao.save(answer);
questionDao.updateMultiFieldById(answer.getQid(),UpdateBuilder.create("answers", "answers+1",FieldUpdateType.EXPRESSION));
}
@@ -150,11 +151,11 @@ public class AnswerServiceImpl implements IAnswerService {
if(StringUtil.isNoneBlank(qid)){
builder.addFilter(FieldFilters.eq("qid",qid));
}
// if(StringUtil.isNoneBlank(orderType)){
// builder.addOrder(OrderCondition.desc(orderType));
// }else{
// builder.addOrder(OrderCondition.desc("id"));
// }
if(StringUtil.isNoneBlank(orderType)){
builder.addOrder(OrderCondition.desc(orderType));
}else{
builder.addOrder(OrderCondition.asc("sysCreateTime"));
}
if(StringUtil.isNoneBlank(keyword)){
builder.addFilter(FieldFilters.like("content",keyword));
}
@@ -184,7 +185,12 @@ public class AnswerServiceImpl implements IAnswerService {
answer.setPraises(0);
answer.setShares(0);
answer.setDeleted(false);
answer.setReplays(0);
answerDao.save(answer);
if(StringUtil.isNotBlank(answer.getParentId())){
answerDao.updateMultiFieldById(answer.getParentId(),UpdateBuilder.create("replays","replays+1",FieldUpdateType.EXPRESSION));
}
questionDao.updateMultiFieldById(answer.getQid(),UpdateBuilder.create("answers", "answers+1",FieldUpdateType.EXPRESSION));
}

View File

@@ -35,6 +35,7 @@ import com.xboe.module.teacher.service.ITeacherService;
import com.xboe.school.study.dto.StudyContentDto;
import com.xboe.school.study.dto.StudyCourseNameDto;
import com.xboe.school.study.dto.StudyCourseQuery;
import com.xboe.school.study.dto.StudyCourseSimple;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudySignup;
@@ -654,14 +655,14 @@ public class StudyCourseApi extends ApiBaseController{
* 我的关注 二次查询
* */
@PostMapping("/follow-ids")
public JsonResponse<List<StudyCourse>> followIds(@RequestBody StudyCourseQuery studyCourseQuery){
public JsonResponse<List<StudyCourseSimple>> followIds(@RequestBody StudyCourseQuery studyCourseQuery){
if(studyCourseQuery!=null && studyCourseQuery.getIds().isEmpty()){
return badRequest("参数异常");
}
if(studyCourseQuery!=null && studyCourseQuery.getAids().isEmpty()){
return badRequest("无关注人");
}
List<StudyCourse> studyCouseDtos = service.followids(studyCourseQuery);
List<StudyCourseSimple> studyCouseDtos = service.followids(studyCourseQuery);
// List<String> ids=new ArrayList<String>();
// for(StudyCourse scourse:studyCouseDtos) {
// ids.add(scourse.getCourseId());

View File

@@ -0,0 +1,38 @@
package com.xboe.school.study.dto;
import java.time.LocalDateTime;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
@Data
public class StudyCourseSimple {
private String id;
private String courseName;
private String courseId;
private String courseType;
private Integer source;
private String courseImage;
private Float progress;
private Float lastScore;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime addTime;
private String sysType1;
private String sysType2;
private String sysType3;
private String aid;
}

View File

@@ -1,18 +1,16 @@
package com.xboe.school.study.service;
import java.util.List;
import com.xboe.common.OrderCondition;
import com.xboe.common.PageList;
import com.xboe.school.study.dto.StudyCourseNameDto;
import com.xboe.school.study.dto.StudyCourseQuery;
import com.xboe.school.study.dto.StudyCouseDto;
import com.xboe.school.study.dto.StudyCourseSimple;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudySignup;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
public interface IStudyCourseService {
/**
@@ -81,7 +79,7 @@ public interface IStudyCourseService {
/**
* 二次查询 我的关注
* */
List<StudyCourse> followids(StudyCourseQuery studyCourseQuery);
List<StudyCourseSimple> followids(StudyCourseQuery studyCourseQuery);
/**
* 查询课程最新学习记录的进度

View File

@@ -1,15 +1,11 @@
package com.xboe.school.study.service.impl;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.transaction.Transactional;
@@ -37,6 +33,7 @@ import com.xboe.school.study.dao.StudySignupDao;
import com.xboe.school.study.dao.StudyTimeDao;
import com.xboe.school.study.dto.StudyCourseNameDto;
import com.xboe.school.study.dto.StudyCourseQuery;
import com.xboe.school.study.dto.StudyCourseSimple;
import com.xboe.school.study.entity.StudyCourse;
import com.xboe.school.study.entity.StudyCourseItem;
import com.xboe.school.study.entity.StudySignup;
@@ -418,18 +415,18 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
}
@Override
public List<StudyCourse> followids(StudyCourseQuery studyCourseQuery) {
public List<StudyCourseSimple> followids(StudyCourseQuery studyCourseQuery) {
//分两次查询,查询课程,查询学习记录
String courseHql="Select id,coverImg,score from "+Course.class.getSimpleName()+" where id in(?1)";
String courseHql="Select id,coverImg,score,name,sysType1,sysType2,sysType3 from "+Course.class.getSimpleName()+" where id in(?1)";
String studyHql="Select courseId,addTime,progress,aid from "+StudyCourse.class.getSimpleName()+" where aid in(?1) and courseId in(?2)";
List<StudyCourse> rs=new ArrayList<>();
List<StudyCourseSimple> rs=new ArrayList<>();
try {
List<Object[]> clist= studyCourseDao.findListFields(courseHql,studyCourseQuery.getIds());
List<Object[]> slist= studyCourseDao.findListFields(studyHql,studyCourseQuery.getAids(),studyCourseQuery.getIds());
//数据数量一般不会太多不超过20条所以直接使用嵌套循环
for(Object[] sobjs : slist) {
StudyCourse sc=new StudyCourse();
StudyCourseSimple sc=new StudyCourseSimple();
sc.setCourseId(ConvertUtil.toStr(sobjs[0]));
sc.setAddTime((LocalDateTime)sobjs[1]);
sc.setProgress(ConvertUtil.toFloat(sobjs[2]));
@@ -440,6 +437,10 @@ public class StudyCourseServiceImpl implements IStudyCourseService{
if(cid!=null && cid.equals(sc.getCourseId())) {
sc.setCourseImage(ConvertUtil.toStr(cobjs[1]));
sc.setLastScore(ConvertUtil.toFloat(cobjs[2]));//课程分数,使用此值来承载
sc.setCourseName(ConvertUtil.toStr(cobjs[3]));
sc.setSysType1(ConvertUtil.toStr(cobjs[4]));
sc.setSysType2(ConvertUtil.toStr(cobjs[5]));
sc.setSysType3(ConvertUtil.toStr(cobjs[6]));
break;
}
}

View File

@@ -52,7 +52,7 @@ 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.ip=192.168.0.11
xboe.elasticsearch.server.port=9200
xboe.elasticsearch.server.user=
xboe.elasticsearch.server.password=

View File

@@ -160,7 +160,11 @@ public class BasicDataSyncServiceImpl implements IBasicDataSyncService{
Object idObj = orgDao.findField("id", FieldFilters.eq("kid", dto.getOldDepartId()));
if(idObj!=null) {
dto.setDepartId(idObj.toString());
}else {
log.error("用户【"+dto.getKid()+""+dto.getName()+"对应的机构的kid【"+dto.getOldDepartId()+"】本地未查到");
}
}else {
log.error("用户【"+dto.getKid()+""+dto.getName()+"无关联的机构信息oldDepartId");
}
//同一个用户工号对应 多个kid的情况,所以直接根据kid查询是不对的,所以这里按工号查询,不使用kid
User user = userDao.findOne(FieldFilters.eq("userNo", dto.getUserNo()));
@@ -208,7 +212,6 @@ public class BasicDataSyncServiceImpl implements IBasicDataSyncService{
user.setId(a.getId());
user.setPersonId(person.getId());
user.setEnterpriseId(dto.getEnterpriseId());
user.setDepartId(dto.getDepartId());
user.setDescription(dto.getDescription());
user.setDomainId(dto.getDomainId());
user.setDuty(dto.getDuty());
@@ -260,7 +263,12 @@ public class BasicDataSyncServiceImpl implements IBasicDataSyncService{
user.setOrgNamePath(dto.getOrgNamePath());
user.setOrgTreeType(dto.getOrgTreeType());
user.setEnterpriseId(dto.getEnterpriseId());
user.setDepartId(dto.getDepartId());
if(StringUtils.isNotBlank(dto.getDepartId())) {
user.setDepartId(dto.getDepartId());
}else {
log.error("用户【"+user+"】无机构信息,不更新此字段");
}
user.setRank(dto.getRank());
user.setSassId(dto.getSassId());
user.setTelephoneNo(dto.getTelephoneNo());

View File

@@ -2,11 +2,13 @@ package com.xboe.primary.service.impl;
import java.time.LocalDateTime;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.xboe.basic.entity.Account;
import com.xboe.basic.service.impl.BasicDataSyncServiceImpl;
import com.xboe.dto.OrganizationDto;
import com.xboe.dto.UserDto;
import com.xboe.primary.dao.MainAccountDao;
@@ -18,9 +20,12 @@ import com.xboe.primary.entity.MainOrganization;
import com.xboe.primary.entity.MainUser;
import com.xboe.primary.service.IMainDbSyncService;
import lombok.extern.slf4j.Slf4j;
/**
* 主数据库同步的实现
*/
@Slf4j
@Service("allService")
public class MainDbSyncServiceImpl implements IMainDbSyncService {
@@ -95,7 +100,12 @@ public class MainDbSyncServiceImpl implements IMainDbSyncService {
//更新用户信息,更新账号信息
user.setSysId(dto.getKid());
user.setName(dto.getName());
user.setDepartId(dto.getDepartId());
if(StringUtils.isNotBlank(dto.getDepartId())) {
user.setDepartId(dto.getDepartId());
}else {
log.error("主库用户【"+user+"】无机构信息,不更新此字段");
}
user.setDescription(dto.getDescription());
user.setDomainId(dto.getDomainId());
user.setDuty(dto.getDuty());
@@ -142,7 +152,11 @@ public class MainDbSyncServiceImpl implements IMainDbSyncService {
user=new MainUser();
//同步过程中一样,可以不一样。因为此系统当前是一致的,所以统一使用一个
user.setId(a.getId());
user.setDepartId(dto.getDepartId());
if(StringUtils.isNotBlank(dto.getDepartId())) {
user.setDepartId(dto.getDepartId());
}else {
log.error("主库新增用户【"+user+"】无机构信息");
}
user.setDescription(dto.getDescription());
user.setDomainId(dto.getDomainId());
user.setDuty(dto.getDuty());