mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/per-boe/java-servers.git
synced 2025-12-09 02:46:50 +08:00
Merge branch 'master' of codeup.aliyun.com:6265f483e4166464dc2f9c14/boeu/baseservers
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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()));
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -70,5 +70,10 @@ public class FavoriteDto {
|
||||
* */
|
||||
private Float progress;
|
||||
|
||||
/**
|
||||
* 课程评分
|
||||
* */
|
||||
private Float score;
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -91,6 +91,11 @@ public class FavoriteTotalDto {
|
||||
* */
|
||||
private String qid;
|
||||
|
||||
/**
|
||||
* score
|
||||
* */
|
||||
private Float score;
|
||||
|
||||
|
||||
public FavoriteTotalDto() {
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 查询课程最新学习记录的进度
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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=
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user