243 lines
6.0 KiB
Go
243 lines
6.0 KiB
Go
package exam
|
|
|
|
import (
|
|
"context"
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
"dubbo.apache.org/dubbo-go/v3/common/logger"
|
|
"github.com/fonchain_enterprise/fonchain-main/api/account"
|
|
"github.com/fonchain_enterprise/fonchain-main/api/exam"
|
|
"github.com/fonchain_enterprise/fonchain-main/pkg/e"
|
|
"github.com/fonchain_enterprise/fonchain-main/pkg/model/login"
|
|
"github.com/fonchain_enterprise/fonchain-main/pkg/serializer"
|
|
"github.com/fonchain_enterprise/fonchain-main/pkg/service"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func SaveExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskInfo)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("SaveExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
userInfo := login.GetUserInfoFromC(c)
|
|
logger.Info("-------------------------------")
|
|
logger.Info("userInfo:", userInfo)
|
|
req.CreaterName = userInfo.NickName
|
|
req.CreaterID = int32(userInfo.ID)
|
|
|
|
res, err := service.GrpcExamClientImpl.SaveExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func UpdateExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskInfo)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("UpdateExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.UpdateExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func DeleteExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskInfo)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("DeleteExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.DeleteExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func GetExamTasks(c *gin.Context) {
|
|
req := new(exam.ExamTaskPageRequest)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("GetExamTasks ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.GetExamTasks(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
if res != nil && len(res.ExamTaskInfo) > 0 {
|
|
for _, examTaskInfo := range res.ExamTaskInfo {
|
|
positionIds := make([]uint32, 0)
|
|
if examTaskInfo.Examinee != nil {
|
|
for _, value := range examTaskInfo.Examinee {
|
|
if value.PositionId != 0 {
|
|
positionIds = append(positionIds, uint32(value.PositionId))
|
|
}
|
|
}
|
|
}
|
|
// 查询部门下人数
|
|
accountReq := account.ListV2Request{
|
|
Page: 1,
|
|
PageSize: 9999,
|
|
PositionIds: positionIds,
|
|
}
|
|
fmt.Println("========== 部门下请求:", accountReq.PositionIds)
|
|
timer := time.Now() // 记录开始时间
|
|
accountRes, accountErr := service.AccountProvider.ListV2(context.Background(), &accountReq)
|
|
if accountErr != nil {
|
|
service.Error(c, e.Error, accountErr)
|
|
return
|
|
}
|
|
elapsed := time.Since(timer) // 计算自开始时间以来经过的时间
|
|
fmt.Printf("ListV2 耗时 %v milliseconds\n", elapsed.Milliseconds())
|
|
|
|
examTaskInfo.TotalNum = int32(accountRes.Count)
|
|
examTaskInfo.UnexamNum = examTaskInfo.TotalNum - examTaskInfo.PassNum - examTaskInfo.FailNum
|
|
|
|
updateNumInfo := exam.ExamTaskInfo{
|
|
ID: examTaskInfo.ID,
|
|
TotalNum: examTaskInfo.TotalNum,
|
|
PassNum: examTaskInfo.PassNum,
|
|
FailNum: examTaskInfo.FailNum,
|
|
UnexamNum: examTaskInfo.UnexamNum,
|
|
}
|
|
_, updateErr := service.GrpcExamClientImpl.UpdateExamTaskNum(context.Background(), &updateNumInfo)
|
|
if updateErr != nil {
|
|
service.Error(c, e.Error, updateErr)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func DetailExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskIdRequest)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("DetailExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.DetailExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func CheckExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskCheckPageRequest)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("CheckExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.CheckExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func PublishExamTask(c *gin.Context) {
|
|
req := new(exam.ExamTaskPublishRequest)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("PublishExamTask ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
res, err := service.GrpcExamClientImpl.PublishExamTask(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|
|
|
|
func UpdateExamTaskRange(c *gin.Context) {
|
|
req := new(exam.UpdateExamTaskRangeRequest)
|
|
if err := c.ShouldBind(req); err != nil {
|
|
logger.Errorf("UpdateExamTaskRange ShouldBind err", err)
|
|
service.ResponseMsg(c, e.SUCCESS, serializer.Response{
|
|
Msg: err.Error(),
|
|
Status: e.Failed,
|
|
})
|
|
return
|
|
}
|
|
|
|
userInfo := login.GetUserInfoFromC(c)
|
|
logger.Info("-------------------------------")
|
|
logger.Info("userInfo:", userInfo)
|
|
req.UpdaterName = userInfo.NickName
|
|
req.UpdaterID = int32(userInfo.ID)
|
|
|
|
res, err := service.GrpcExamClientImpl.UpdateExamTaskRange(context.Background(), req)
|
|
|
|
if err != nil {
|
|
service.Error(c, e.Error, err)
|
|
return
|
|
}
|
|
|
|
service.Success(c, res)
|
|
}
|