Browse Source

在线人数接口

xiatian 6 years ago
parent
commit
eb879ef050
18 changed files with 579 additions and 0 deletions
  1. 28 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/ExamStudentCountController.java
  2. 28 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/StudentCountController.java
  3. 28 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/UserCountController.java
  4. 45 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/ExamStudentCountCloudServiceProvider.java
  5. 44 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/StudentCountCloudServiceProvider.java
  6. 45 0
      examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/UserCountCloudServiceProvider.java
  7. 11 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/ExamStudentCountRepo.java
  8. 11 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/StudentCountRepo.java
  9. 11 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/UserCountRepo.java
  10. 62 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/ExamStudentCountEntity.java
  11. 51 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/StudentCountEntity.java
  12. 55 0
      examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/UserCountEntity.java
  13. 8 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/ExamStudentCountService.java
  14. 8 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/StudentCountService.java
  15. 8 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/UserCountService.java
  16. 49 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/ExamStudentCountServiceImpl.java
  17. 44 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/StudentCountServiceImpl.java
  18. 43 0
      examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/UserCountServiceImpl.java

+ 28 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/ExamStudentCountController.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.examcloud.core.reports.api.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.reports.service.ExamStudentCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "考生在线人数")
+@RequestMapping("${$rmp.ctr.reports}/" + "examStudentCount")
+public class ExamStudentCountController extends ControllerSupport {
+	@Autowired
+	private ExamStudentCountService examStudentCountService;
+	
+	@PostMapping("/getOnlineCount")
+	@ApiOperation(value = "获取在线人数")
+	public Long getOnlineCount(@RequestParam(required = false) Long orgId,@RequestParam(required = false) Long examId) {
+		User user = getAccessUser();
+		return examStudentCountService.getOnlineCount(user.getRootOrgId(), orgId,examId);
+	}
+}

+ 28 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/StudentCountController.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.examcloud.core.reports.api.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.reports.service.StudentCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "学生在线人数")
+@RequestMapping("${$rmp.ctr.reports}/" + "studentCount")
+public class StudentCountController extends ControllerSupport {
+	@Autowired
+	private StudentCountService studentCountService;
+
+	@PostMapping("/getOnlineCount")
+	@ApiOperation(value = "获取在线人数")
+	public Long getOnlineCount(@RequestParam(required = false) Long orgId) {
+		User user = getAccessUser();
+		return studentCountService.getOnlineCount(user.getRootOrgId(), orgId);
+	}
+}

+ 28 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/controller/UserCountController.java

@@ -0,0 +1,28 @@
+package cn.com.qmth.examcloud.core.reports.api.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.core.reports.service.UserCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "后台用户在线人数")
+@RequestMapping("${$rmp.ctr.reports}/" + "userCount")
+public class UserCountController extends ControllerSupport {
+	@Autowired
+	private UserCountService userCountService;
+
+	@PostMapping("/getOnlineCount")
+	@ApiOperation(value = "获取在线人数")
+	public Long getOnlineCount(@RequestParam(required = false) Long orgId) {
+		User user = getAccessUser();
+		return userCountService.getOnlineCount(user.getRootOrgId(),orgId);
+	}
+}

+ 45 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/ExamStudentCountCloudServiceProvider.java

@@ -0,0 +1,45 @@
+package cn.com.qmth.examcloud.core.reports.api.provider;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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 cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.core.reports.api.ExamStudentCountCloudService;
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateExamStudentCountReq;
+import cn.com.qmth.examcloud.core.reports.api.response.AddOrUpdateExamStudentCountResp;
+import cn.com.qmth.examcloud.core.reports.service.ExamStudentCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "考生在线人数接口")
+@RequestMapping("${$rmp.cloud.reports}" + "examStudentCount")
+public class ExamStudentCountCloudServiceProvider extends ControllerSupport implements ExamStudentCountCloudService {
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 3223439983825840881L;
+	@Autowired
+	private ExamStudentCountService examStudentCountService;
+
+	@ApiOperation(value = "新增或更新在线人数")
+	@PostMapping("/addOrUpdateCount")
+	@Override
+	public AddOrUpdateExamStudentCountResp addOrUpdateCount(@RequestBody AddOrUpdateExamStudentCountReq req) {
+		if (req.getRootOrgId() == null) {
+			throw new StatusException("1000001", "rootOrgId不能为空");
+		}
+		if (req.getOrgId() == null) {
+			throw new StatusException("1000002", "orgId不能为空");
+		}
+		if (req.getExamId() == null) {
+			throw new StatusException("1000003", "examId不能为空");
+		}
+		examStudentCountService.addOrUpdateCount(req);
+		return new AddOrUpdateExamStudentCountResp();
+	}
+}

+ 44 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/StudentCountCloudServiceProvider.java

@@ -0,0 +1,44 @@
+package cn.com.qmth.examcloud.core.reports.api.provider;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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 cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.core.reports.api.StudentCountCloudService;
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateStudentCountReq;
+import cn.com.qmth.examcloud.core.reports.api.response.AddOrUpdateStudentCountResp;
+import cn.com.qmth.examcloud.core.reports.service.StudentCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "学生在线人数接口")
+@RequestMapping("${$rmp.cloud.reports}"+"studentCount")
+public class StudentCountCloudServiceProvider extends ControllerSupport implements StudentCountCloudService {
+
+	
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -5584819592660072512L;
+	@Autowired
+	private StudentCountService studentCountService;
+
+	@ApiOperation(value = "新增或更新在线人数")
+    @PostMapping("/addOrUpdateCount")
+	@Override
+	public AddOrUpdateStudentCountResp addOrUpdateCount(@RequestBody AddOrUpdateStudentCountReq req) {
+		if(req.getRootOrgId()==null) {
+			throw new StatusException("1000001", "rootOrgId不能为空");
+		}
+		if(req.getOrgId()==null) {
+			throw new StatusException("1000002", "orgId不能为空");
+		}
+		studentCountService.addOrUpdateCount(req);
+		return new AddOrUpdateStudentCountResp();
+	}
+}

+ 45 - 0
examcloud-core-reports-api-provider/src/main/java/cn/com/qmth/examcloud/core/reports/api/provider/UserCountCloudServiceProvider.java

@@ -0,0 +1,45 @@
+package cn.com.qmth.examcloud.core.reports.api.provider;
+
+import org.springframework.beans.factory.annotation.Autowired;
+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 cn.com.qmth.examcloud.commons.exception.StatusException;
+import cn.com.qmth.examcloud.core.reports.api.UserCountCloudService;
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateUserCountReq;
+import cn.com.qmth.examcloud.core.reports.api.response.AddOrUpdateUserCountResp;
+import cn.com.qmth.examcloud.core.reports.service.UserCountService;
+import cn.com.qmth.examcloud.web.support.ControllerSupport;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+@RestController
+@Api(tags = "后台用户在线人数接口")
+@RequestMapping("${$rmp.cloud.reports}"+"userCount")
+public class UserCountCloudServiceProvider extends ControllerSupport implements UserCountCloudService {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -3472625622982671318L;
+	@Autowired
+	private UserCountService userCountService;
+	
+	@ApiOperation(value = "新增或更新在线人数")
+    @PostMapping("/addOrUpdateCount")
+	@Override
+	public AddOrUpdateUserCountResp addOrUpdateCount(@RequestBody AddOrUpdateUserCountReq req) {
+		if(req.getRootOrgId()==null) {
+			throw new StatusException("1000001", "rootOrgId不能为空");
+		}
+		if(req.getOrgId()==null) {
+			throw new StatusException("1000002", "orgId不能为空");
+		}
+		userCountService.addOrUpdateCount(req);
+		return new AddOrUpdateUserCountResp();
+	}
+
+
+}

+ 11 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/ExamStudentCountRepo.java

@@ -0,0 +1,11 @@
+package cn.com.qmth.examcloud.core.reports.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.ExamStudentCountEntity;
+
+public interface ExamStudentCountRepo extends JpaRepository<ExamStudentCountEntity, Long>,
+		JpaSpecificationExecutor<ExamStudentCountEntity> {
+	public ExamStudentCountEntity findByRootOrgIdAndOrgIdAndExamId(Long rootOrgId,Long orgId,Long examId);
+}

+ 11 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/StudentCountRepo.java

@@ -0,0 +1,11 @@
+package cn.com.qmth.examcloud.core.reports.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.StudentCountEntity;
+
+public interface StudentCountRepo extends JpaRepository<StudentCountEntity, Long>,
+		JpaSpecificationExecutor<StudentCountEntity> {
+	public StudentCountEntity findByRootOrgIdAndOrgId(Long rootOrgId,Long orgId);
+}

+ 11 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/UserCountRepo.java

@@ -0,0 +1,11 @@
+package cn.com.qmth.examcloud.core.reports.dao;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.UserCountEntity;
+
+public interface UserCountRepo extends JpaRepository<UserCountEntity, Long>,
+		JpaSpecificationExecutor<UserCountEntity> {
+	public UserCountEntity findByRootOrgIdAndOrgId(Long rootOrgId,Long orgId);
+}

+ 62 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/ExamStudentCountEntity.java

@@ -0,0 +1,62 @@
+package cn.com.qmth.examcloud.core.reports.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.share.IdEntity;
+
+
+@Entity
+@Table(name = "ec_r_exam_student_count",indexes = {
+		@Index(name = "IDX_R_EXAM_STUDENT_COUNT_01", columnList = "rootOrgId,orgId,examId", unique = true),
+		@Index(name = "IDX_R_EXAM_STUDENT_COUNT_02", columnList = "rootOrgId", unique = false),
+		@Index(name = "IDX_R_EXAM_STUDENT_COUNT_03", columnList = "orgId", unique = false),
+		@Index(name = "IDX_R_EXAM_STUDENT_COUNT_04", columnList = "examId", unique = false)})
+public class ExamStudentCountEntity extends IdEntity {
+
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 8818247713349613850L;
+	@NotNull
+    private Long rootOrgId;
+    @NotNull
+    private Long orgId;
+    @NotNull
+    private Long examId;
+    private Integer totalCount;
+    private Integer onlineCount;
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+	public Long getOrgId() {
+		return orgId;
+	}
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+	public Integer getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(Integer totalCount) {
+		this.totalCount = totalCount;
+	}
+	public Integer getOnlineCount() {
+		return onlineCount;
+	}
+	public void setOnlineCount(Integer onlineCount) {
+		this.onlineCount = onlineCount;
+	}
+	public Long getExamId() {
+		return examId;
+	}
+	public void setExamId(Long examId) {
+		this.examId = examId;
+	}
+}

+ 51 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/StudentCountEntity.java

@@ -0,0 +1,51 @@
+package cn.com.qmth.examcloud.core.reports.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.share.IdEntity;
+
+
+@Entity
+@Table(name = "ec_r_student_count",indexes = {
+		@Index(name = "IDX_R_STUDENT_COUNT_01", columnList = "rootOrgId,orgId", unique = true)})
+public class StudentCountEntity extends IdEntity {
+
+    /**
+	 * 
+	 */
+	private static final long serialVersionUID = 6732497600896224190L;
+	@NotNull
+    private Long rootOrgId;
+    @NotNull
+    private Long orgId;
+    private Integer totalCount;
+    private Integer onlineCount;
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+	public Long getOrgId() {
+		return orgId;
+	}
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+	public Integer getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(Integer totalCount) {
+		this.totalCount = totalCount;
+	}
+	public Integer getOnlineCount() {
+		return onlineCount;
+	}
+	public void setOnlineCount(Integer onlineCount) {
+		this.onlineCount = onlineCount;
+	}
+    
+}

+ 55 - 0
examcloud-core-reports-dao/src/main/java/cn/com/qmth/examcloud/core/reports/dao/entity/UserCountEntity.java

@@ -0,0 +1,55 @@
+package cn.com.qmth.examcloud.core.reports.dao.entity;
+
+import javax.persistence.Entity;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+
+import cn.com.qmth.examcloud.core.reports.dao.entity.share.IdEntity;
+
+
+@Entity
+@Table(name = "ec_r_user_count",indexes = {
+		@Index(name = "IDX_R_USER_COUNT_01", columnList = "rootOrgId,orgId", unique = true)})
+public class UserCountEntity extends IdEntity {
+
+
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = -6420107706111319346L;
+
+
+    @NotNull
+    private Long rootOrgId;
+    @NotNull
+    private Long orgId;
+    private Integer totalCount;
+    private Integer onlineCount;
+	public Long getRootOrgId() {
+		return rootOrgId;
+	}
+	public void setRootOrgId(Long rootOrgId) {
+		this.rootOrgId = rootOrgId;
+	}
+	public Long getOrgId() {
+		return orgId;
+	}
+	public void setOrgId(Long orgId) {
+		this.orgId = orgId;
+	}
+	public Integer getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(Integer totalCount) {
+		this.totalCount = totalCount;
+	}
+	public Integer getOnlineCount() {
+		return onlineCount;
+	}
+	public void setOnlineCount(Integer onlineCount) {
+		this.onlineCount = onlineCount;
+	}
+    
+}

+ 8 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/ExamStudentCountService.java

@@ -0,0 +1,8 @@
+package cn.com.qmth.examcloud.core.reports.service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateExamStudentCountReq;
+
+public interface ExamStudentCountService {
+	public void addOrUpdateCount(AddOrUpdateExamStudentCountReq req);
+	public Long getOnlineCount(Long rootOrgId,Long orgId,Long examId);
+}

+ 8 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/StudentCountService.java

@@ -0,0 +1,8 @@
+package cn.com.qmth.examcloud.core.reports.service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateStudentCountReq;
+
+public interface StudentCountService {
+	public void addOrUpdateCount(AddOrUpdateStudentCountReq req);
+	public Long getOnlineCount(Long rootOrgId,Long orgId);
+}

+ 8 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/UserCountService.java

@@ -0,0 +1,8 @@
+package cn.com.qmth.examcloud.core.reports.service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateUserCountReq;
+
+public interface UserCountService {
+	public void addOrUpdateCount(AddOrUpdateUserCountReq req);
+	public Long getOnlineCount(Long rootOrgId,Long orgId);
+}

+ 49 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/ExamStudentCountServiceImpl.java

@@ -0,0 +1,49 @@
+package cn.com.qmth.examcloud.core.reports.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateExamStudentCountReq;
+import cn.com.qmth.examcloud.core.reports.dao.ExamStudentCountRepo;
+import cn.com.qmth.examcloud.core.reports.dao.entity.ExamStudentCountEntity;
+import cn.com.qmth.examcloud.core.reports.service.ExamStudentCountService;
+
+@Service
+public class ExamStudentCountServiceImpl implements ExamStudentCountService {
+	@Autowired
+	private ExamStudentCountRepo examStudentCountRepo;
+	@Autowired
+	private JdbcTemplate jdbcTemplate;
+
+	@Override
+	public void addOrUpdateCount(AddOrUpdateExamStudentCountReq req) {
+		ExamStudentCountEntity e = examStudentCountRepo.findByRootOrgIdAndOrgIdAndExamId(req.getRootOrgId(),
+				req.getOrgId(), req.getExamId());
+		if (e == null) {
+			e = new ExamStudentCountEntity();
+			e.setRootOrgId(req.getRootOrgId());
+			e.setOrgId(req.getOrgId());
+			e.setExamId(req.getExamId());
+		}
+		e.setOnlineCount(req.getOnlineCount());
+		examStudentCountRepo.save(e);
+	}
+
+	@Override
+	public Long getOnlineCount(Long rootOrgId, Long orgId, Long examId) {
+		StringBuffer sb = new StringBuffer();
+		sb.append(" select sum(t.online_count) from ec_r_exam_student_count t where t.root_orgId=").append(rootOrgId);
+		if (orgId != null) {
+			sb.append(" and t.org_id=").append(orgId);
+		}
+		if (examId != null) {
+			sb.append(" and t.exam_id=").append(examId);
+		}
+		Long count = jdbcTemplate.queryForObject(sb.toString(), Long.class);
+		if (count == null) {
+			count = 0l;
+		}
+		return count;
+	}
+}

+ 44 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/StudentCountServiceImpl.java

@@ -0,0 +1,44 @@
+package cn.com.qmth.examcloud.core.reports.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateStudentCountReq;
+import cn.com.qmth.examcloud.core.reports.dao.StudentCountRepo;
+import cn.com.qmth.examcloud.core.reports.dao.entity.StudentCountEntity;
+import cn.com.qmth.examcloud.core.reports.service.StudentCountService;
+
+@Service
+public class StudentCountServiceImpl implements StudentCountService {
+	@Autowired
+	private StudentCountRepo studentCountRepo;
+	@Autowired
+	private JdbcTemplate jdbcTemplate;
+
+	@Override
+	public void addOrUpdateCount(AddOrUpdateStudentCountReq req) {
+		StudentCountEntity e = studentCountRepo.findByRootOrgIdAndOrgId(req.getRootOrgId(), req.getOrgId());
+		if (e == null) {
+			e = new StudentCountEntity();
+			e.setRootOrgId(req.getRootOrgId());
+			e.setOrgId(req.getOrgId());
+		}
+		e.setOnlineCount(req.getOnlineCount());
+		studentCountRepo.save(e);
+	}
+
+	@Override
+	public Long getOnlineCount(Long rootOrgId, Long orgId) {
+		StringBuffer sb = new StringBuffer();
+		sb.append(" select sum(t.online_count) from ec_r_student_count t where t.root_orgId=").append(rootOrgId);
+		if (orgId != null) {
+			sb.append(" and t.org_id=").append(orgId);
+		}
+		Long count = jdbcTemplate.queryForObject(sb.toString(), Long.class);
+		if (count == null) {
+			count = 0l;
+		}
+		return count;
+	}
+}

+ 43 - 0
examcloud-core-reports-service/src/main/java/cn/com/qmth/examcloud/core/reports/service/impl/UserCountServiceImpl.java

@@ -0,0 +1,43 @@
+package cn.com.qmth.examcloud.core.reports.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+
+import cn.com.qmth.examcloud.core.reports.api.request.AddOrUpdateUserCountReq;
+import cn.com.qmth.examcloud.core.reports.dao.UserCountRepo;
+import cn.com.qmth.examcloud.core.reports.dao.entity.UserCountEntity;
+import cn.com.qmth.examcloud.core.reports.service.UserCountService;
+
+@Service
+public class UserCountServiceImpl implements UserCountService {
+	@Autowired
+	private UserCountRepo userCountRepo;
+	@Autowired
+	private JdbcTemplate jdbcTemplate;
+	@Override
+	public void addOrUpdateCount(AddOrUpdateUserCountReq req) {
+		UserCountEntity e=userCountRepo.findByRootOrgIdAndOrgId(req.getRootOrgId(), req.getOrgId());
+		if(e==null) {
+			e=new UserCountEntity();
+			e.setRootOrgId(req.getRootOrgId());
+			e.setOrgId(req.getOrgId());
+		}
+		e.setOnlineCount(req.getOnlineCount());
+		userCountRepo.save(e);
+	}
+
+	@Override
+	public Long getOnlineCount(Long rootOrgId, Long orgId) {
+		StringBuffer sb=new StringBuffer();
+		sb.append(" select sum(t.online_count) from ec_r_user_count t where t.root_orgId=").append(rootOrgId);
+		if(orgId!=null) {
+			sb.append(" and t.org_id=").append(orgId);
+		}
+		Long count=jdbcTemplate.queryForObject(sb.toString(), Long.class);
+		if(count==null) {
+			count=0l;
+		}
+		return count;
+	}
+}