Browse Source

clear nats and fix warning

animeic 2 years ago
parent
commit
c38dd3182f
13 changed files with 75 additions and 316 deletions
  1. 0 14
      cmd/config-linux.yaml
  2. 1 4
      config-linux.yaml
  3. 1 4
      config.yaml
  4. 0 25
      config/config.go
  5. 1 113
      dao/dao-exam-record.go
  6. 3 19
      dao/dao-exam.go
  7. 8 7
      dao/dao-subject.go
  8. 6 6
      dao/dao-term.go
  9. 31 34
      dao/dao-test-paper.go
  10. 24 27
      dao/dao-user.go
  11. 0 4
      go.mod
  12. 0 14
      go.sum
  13. 0 45
      router/router-exam-record.go

+ 0 - 14
cmd/config-linux.yaml

@@ -1,14 +0,0 @@
-port: 3000
-
-database:
-  name: mysql
-  # host: root:zyhd2022@tcp(177.7.0.13:3306)/exam?charset=utf8mb4&parseTime=True
-  host: root:zyhd2022@tcp(124.71.139.24:3306)/exam?charset=utf8mb4&parseTime=True
-
-  maxOpenConns: 100
-  maxIdleConns: 20
-mq:
-  name: nats
-  # host: nats://177.7.0.14:4222
-  host: nats://127.0.0.1:14223
-

+ 1 - 4
config-linux.yaml

@@ -7,8 +7,5 @@ database:
 
   maxOpenConns: 100
   maxIdleConns: 20
-mq:
-  name: nats
-  # host: nats://177.7.0.14:4222
-  host: nats://127.0.0.1:14223
+
 

+ 1 - 4
config.yaml

@@ -5,8 +5,5 @@ database:
   host: root:zyhd2022@tcp(124.71.139.24:3306)/exam?charset=utf8mb4&parseTime=True
   maxOpenConns: 100
   maxIdleConns: 20
-mq:
-  name: nats
-  host: nats://127.0.0.1:14301
-  # host: nats://127.0.0.1:4222
+
 

+ 0 - 25
config/config.go

@@ -1,20 +1,17 @@
 package config
 
 import (
-	"fmt"
 	"log"
 	"runtime"
 
 	_ "github.com/go-sql-driver/mysql"
 	"github.com/jmoiron/sqlx"
-	"github.com/nats-io/nats.go"
 	"github.com/spf13/viper"
 )
 
 type Config struct {
 	Port     int       `json:"port,omitempty"`
 	DataBase *DataBase `json:"database,omitempty"`
-	MQ       *MQ       `json:"mq,omitempty"`
 }
 
 type DataBase struct {
@@ -24,14 +21,8 @@ type DataBase struct {
 	MaxIdleConns int    `json:"maxIdleConns,omitempty"`
 }
 
-type MQ struct {
-	Name string `json:"name,omitempty"`
-	Host string `json:"host,omitempty"`
-}
-
 var Conf *Config
 var DB *sqlx.DB
-var JS nats.JetStreamContext
 
 func InitConf() {
 	if runtime.GOOS == "linux" {
@@ -62,26 +53,10 @@ func InitDataBase() {
 	DB.SetMaxIdleConns(Conf.DataBase.MaxOpenConns)
 }
 
-func InitMQ() {
-	conn, err := nats.Connect(Conf.MQ.Host)
-	if err != nil {
-		fmt.Println(err)
-	}
-	js, _ := conn.JetStream(nats.PublishAsyncMaxPending(256))
-	js.AddStream(&nats.StreamConfig{
-		Name:     "EXAMS",
-		Subjects: []string{"EXAMS.*"},
-	})
-	JS = js
-}
-
 func init() {
 	// 1、初始化配置
 	InitConf()
 
 	// 2、初始化数据库
 	InitDataBase()
-
-	// 3、初始化MQ
-	InitMQ()
 }

+ 1 - 113
dao/dao-exam-record.go

@@ -189,10 +189,6 @@ where er.id = ?
 and er.update_at - er.create_at <= e.duration
 		and e.end_at > ?
 `
-		fmt.Println("--------------------UPDATETOKEN--------------------------------")
-		fmt.Printf("ID:%d\n", erv.Id)
-		fmt.Printf("TOKEN:%s\n", erv.Token)
-
 		err = tx.Get(erv, sqlStr, erv.Id, erv.Token, time.Now())
 		if err != nil {
 			if err == sql.ErrNoRows {
@@ -203,7 +199,7 @@ and er.update_at - er.create_at <= e.duration
 
 		sqlStr = "update exam_record set token = null,status = ? where id = ?"
 		var res sql.Result
-		res, err = tx.Exec(sqlStr, entity.TESTED, erv.Id)
+		_, err = tx.Exec(sqlStr, entity.TESTED, erv.Id)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetMsg(err.Error())
 		}
@@ -241,9 +237,6 @@ and er.update_at - er.create_at <= e.duration
 				return result.UNKNOW_ERROR.SetMsg("不存在该试题")
 			}
 
-			fmt.Printf("answerId:%d\n", &answerVo.Id)
-			fmt.Printf("owner:%s\n", answerVo.OwnAnswer)
-
 			var score int
 			sqlStr = "select count(id) from subject where id=? and answer=?"
 			err = tx.Get(&score, sqlStr, answerVo.Id, utils.SubjectSort(answerVo.OwnAnswer))
@@ -500,108 +493,3 @@ WHERE
 
 	return result.SUCCESS
 }
-
-func UpdateExamRecordTask(examId int) *result.Result {
-	tx, err := config.DB.Beginx()
-	return utils.Transation(tx, err, func(tx *sqlx.Tx) *result.Result {
-		var ervs []*vo.ExamRecordVo
-		// 1、查询是否存在该记录
-		// 考试已结束
-		sqlStr := `select er.id, er.exam_id
-from exam_record er
-         left join exam e on e.id = er.exam_id
-where e.id = ? and e.end_at < ?
-`
-
-		err = tx.Select(&ervs, sqlStr, examId, time.Now())
-		if err != nil {
-			if err == sql.ErrNoRows {
-				return result.SUCCESS
-			}
-			return result.UNKNOW_ERROR.SetMsg(err.Error())
-		}
-
-		sqlStr = "update exam_record set token = null,status = ? where id = ?"
-		var updateEr *sql.Stmt
-		updateEr, err = tx.Prepare(sqlStr)
-		if err != nil {
-			return result.UNKNOW_ERROR.SetMsg(err.Error())
-		}
-
-		sqlStr = "update  exam_record set score=?,answer=?,update_at=? where id=? and delete_at is null "
-		var updateErScore *sql.Stmt
-		updateErScore, err = tx.Prepare(sqlStr)
-		if err != nil {
-			return result.UNKNOW_ERROR.SetMsg(err.Error())
-		}
-
-		for _, erv := range ervs {
-
-			_, err = updateEr.Exec(entity.TIMEOUT, erv.Id)
-			if err != nil {
-				return result.UNKNOW_ERROR.SetMsg(err.Error())
-			}
-
-			// 2、查询出所需id
-			sqlStr = "select c.sub_ids from chapter c left join exam e on  c.tp_id = e.tp_id where e.id=?"
-
-			var subIdStrs []string
-			err = tx.Select(&subIdStrs, sqlStr, erv.ExamId)
-			if err != nil {
-				return result.UNKNOW_ERROR.SetMsg(err.Error())
-			}
-
-			subIds := make([]*vo.SubIdsVo, 0)
-			for _, subIdStr := range subIdStrs {
-				var subIdsVo []*vo.SubIdsVo
-				err = json.Unmarshal([]byte(subIdStr), &subIdsVo)
-				if err != nil {
-					return result.UNKNOW_ERROR.SetMsg(err.Error())
-				}
-				subIds = append(subIds, subIdsVo...)
-			}
-
-			// 2.1 构造一个key为id的 map
-			subIdMap := make(map[int]int, 0)
-			for _, subId := range subIds {
-				subIdMap[*subId.Id] = *subId.Score
-			}
-
-			// 2、 批量查询id
-			toatalScore := 0
-			for _, answerVo := range erv.AnswerVo {
-				// 判断提交的试题是否在考试范围内
-				// if _, ok := subIdMap[*answerVo.Id]; !ok {
-				// 	return result.UNKNOW_ERROR.SetMsg("不存在该试题")
-				// }
-
-				var score int
-				sqlStr = "select count(id) from subject where id=? and answer=?"
-				err = tx.Get(&score, sqlStr, answerVo.Id, utils.SubjectSort(answerVo.OwnAnswer))
-				if err != nil {
-					return result.UNKNOW_ERROR.SetMsg(err.Error())
-				}
-				toatalScore += score * subIdMap[*answerVo.Id]
-
-				fmt.Println("=========TASK==========================")
-				fmt.Println(toatalScore)
-				delete(subIdMap, *answerVo.Id)
-			}
-			// if len(subIdMap) != 0 {
-			// 	return result.UNKNOW_ERROR.SetMsg("试题提交不完整")
-			// }
-
-			var anwserData []byte
-			anwserData, err = json.Marshal(erv.AnswerVo)
-			fmt.Println("=========TASK-ANSER==========================")
-			fmt.Println(string(anwserData))
-
-			// 插入记录表
-			_, err = updateErScore.Exec(toatalScore, string(anwserData), time.Now(), erv.Id)
-			if err != nil {
-				return result.UNKNOW_ERROR.SetData(err)
-			}
-		}
-		return result.SUCCESS
-	})
-}

+ 3 - 19
dao/dao-exam.go

@@ -209,20 +209,12 @@ func AddExam(e *entity.Exam) *result.Result {
 		}
 
 		for _, user := range users {
-			res, err = stmt.Exec(time.Now(), time.Now(), user.ID, examId, entity.NOT_TESTED)
+			_, err = stmt.Exec(time.Now(), time.Now(), user.ID, examId, entity.NOT_TESTED)
 			if err != nil {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 		}
 
-		// var data []byte
-		// data, err = json.Marshal(&e)
-		// if err != nil {
-		// 	return result.UNKNOW_ERROR.SetMsg(err.Error())
-		// }
-		// 用来判断考试过期的
-		// config.JS.PublishAsync("EXAMS.info", data)
-
 		return result.SuccessResult(examId)
 	})
 }
@@ -387,7 +379,7 @@ func UpdateExam(e *entity.Exam) *result.Result {
 		// 4、插入考试班级表
 		// 4.1、 先删除所有关联
 		sqlStr = "delete from exam_class where exam_id = ?"
-		res, err = tx.Exec(sqlStr, e.Id)
+		_, err = tx.Exec(sqlStr, e.Id)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetData(err)
 		}
@@ -419,21 +411,13 @@ func UpdateExam(e *entity.Exam) *result.Result {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 			if userId == 0 {
-				res, err = stmt.Exec(time.Now(), time.Now(), user.ID, e.Id, entity.NOT_TESTED)
+				_, err = stmt.Exec(time.Now(), time.Now(), user.ID, e.Id, entity.NOT_TESTED)
 				if err != nil {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
 			}
 		}
 
-		// var data []byte
-		// data, err = json.Marshal(&e)
-		// if err != nil {
-		// 	return result.UNKNOW_ERROR.SetMsg(err.Error())
-		// }
-		// // 用来判断考试过期的
-		// config.JS.PublishAsync("EXAMS.info", data)
-
 		return result.SuccessResult(result.NewResultChange(affected))
 	})
 }

+ 8 - 7
dao/dao-subject.go

@@ -8,12 +8,13 @@ import (
 	"exam_system/utils"
 	"exam_system/vo"
 	"fmt"
-	"github.com/jmoiron/sqlx"
-	"github.com/xuri/excelize/v2"
 	"mime/multipart"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/jmoiron/sqlx"
+	"github.com/xuri/excelize/v2"
 )
 
 func AddSubject(s *entity.Subject) *result.Result {
@@ -62,7 +63,7 @@ func SubjectList(page, size int, sort string, query map[string]interface{}) *res
 		sqlStr += "and status=? "
 		parms = append(parms, query["status"])
 	}
-	if query["type"]!=nil{
+	if query["type"] != nil {
 		sqlStr += "and type=? "
 		parms = append(parms, query["type"])
 	}
@@ -98,7 +99,7 @@ func SubjectList(page, size int, sort string, query map[string]interface{}) *res
 		sqlStr += "and status=? "
 		parms = append(parms, query["status"])
 	}
-	if query["type"]!=nil{
+	if query["type"] != nil {
 		sqlStr += "and type=? "
 		parms = append(parms, query["type"])
 	}
@@ -180,7 +181,7 @@ func AddSubjectBatch(file multipart.File, id string) *result.Result {
 		return result.UNKNOW_ERROR.SetMsg(err.Error())
 	}
 
-	return utils.Transation(tx, err, func(tx *sqlx.Tx) *result.Result {
+	return utils.Transation(tx, err, func(_ *sqlx.Tx) *result.Result {
 		// 1.sql准备
 		sqlStr := "insert into subject(question,type,opt_a,opt_b,opt_c,opt_d,answer,analysis,status,qb_id,create_at,update_at) values (?,?,?,?,?,?,?,?,?,?,?,?)"
 		var stmt *sql.Stmt
@@ -239,8 +240,8 @@ func DownloadSubject(file *excelize.File, id, tp int) *result.Result {
 		return result.UNKNOW_ERROR.SetMsg(err.Error())
 	}
 
-	if len(subs)==0{
-		return result.SUCCESS.SetData( "没有" + name)
+	if len(subs) == 0 {
+		return result.SUCCESS.SetData("没有" + name)
 	}
 
 	i := 3

+ 6 - 6
dao/dao-term.go

@@ -7,8 +7,9 @@ import (
 	"exam_system/result"
 	"exam_system/utils"
 	"exam_system/vo"
-	"github.com/jmoiron/sqlx"
 	"time"
+
+	"github.com/jmoiron/sqlx"
 )
 
 func AddTerm(t *entity.Term) *result.Result {
@@ -39,7 +40,7 @@ func TermDetail(id string) *result.Result {
 	return result.SuccessResult(&t)
 }
 
-func TermList(page, size int, sort string, query map[string]interface{}) *result.Result {
+func TermList(page, size int, sort string, _ map[string]interface{}) *result.Result {
 	sqlStr := `SELECT
 	t.*,
 	count( u.id ) user_num 
@@ -55,7 +56,7 @@ ORDER BY
 	t.create_at `
 	if sort == "asc" {
 		sqlStr += "asc "
-	}else{
+	} else {
 		sqlStr += "desc "
 	}
 	sqlStr += "limit ?,?"
@@ -82,7 +83,7 @@ ORDER BY
 	if err != nil {
 		return result.UNKNOW_ERROR.SetMsg(err.Error())
 	}
-	return result.SUCCESS.SetData(result.NewPage(page,len(tv),count,tv))
+	return result.SUCCESS.SetData(result.NewPage(page, len(tv), count, tv))
 }
 
 func UpdateTerm(t *entity.Term) *result.Result {
@@ -101,7 +102,7 @@ func DeleteTerms(ids []string) *result.Result {
 
 	sqlStr := "update term t left join class  c on t.id = c.term_id left join  user u on c.id = u.class_id  set t.delete_at=?,c.delete_at=?,u.delete_at=? where t.id in (?)"
 
-	query, param, err := sqlx.In(sqlStr, time.Now(), time.Now(), time.Now(),ids)
+	query, param, err := sqlx.In(sqlStr, time.Now(), time.Now(), time.Now(), ids)
 	if err != nil {
 		return result.UNKNOW_ERROR.SetMsg(err.Error())
 	}
@@ -112,6 +113,5 @@ func DeleteTerms(ids []string) *result.Result {
 	}
 	affected, _ := res.RowsAffected()
 
-
 	return result.SUCCESS.SetData(result.NewResultChange(affected))
 }

+ 31 - 34
dao/dao-test-paper.go

@@ -9,8 +9,9 @@ import (
 	"exam_system/utils"
 	"exam_system/vo"
 	"fmt"
-	"github.com/jmoiron/sqlx"
 	"time"
+
+	"github.com/jmoiron/sqlx"
 )
 
 func AddTestPaper(t *vo.TestPaperVo) *result.Result {
@@ -22,13 +23,12 @@ func AddTestPaper(t *vo.TestPaperVo) *result.Result {
 		// 1.插入试卷
 		sqlStr := "insert into test_paper(name,create_at,update_at,status,score,pass_score) values (?,?,?,?,?,?)"
 		var res sql.Result
-		res, err = tx.Exec(sqlStr, t.Name, time.Now(), time.Now(), entity.USE,t.Score,t.PassScore)
+		res, err = tx.Exec(sqlStr, t.Name, time.Now(), time.Now(), entity.USE, t.Score, t.PassScore)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetData(err)
 		}
 		id, _ := res.LastInsertId()
 
-
 		var score int64
 		for _, chapter := range t.Chapters {
 
@@ -38,12 +38,12 @@ func AddTestPaper(t *vo.TestPaperVo) *result.Result {
 			sqlStr = "insert into chapter(name,description,sub_ids,tp_id,`index`) values (?,?,?,?,?)"
 			// sublist试题
 			var res2 sql.Result
-			res2, err = tx.Exec(sqlStr, chapter.Name, chapter.Description, string(subData), id,chapter.Index)
+			res2, err = tx.Exec(sqlStr, chapter.Name, chapter.Description, string(subData), id, chapter.Index)
 			if err != nil {
 				return result.UNKNOW_ERROR.SetData(err)
 			}
 			affected, _ := res2.RowsAffected()
-			score+=affected
+			score += affected
 		}
 
 		return result.SuccessResult(id)
@@ -85,12 +85,12 @@ func TestPaperDetail(id string) *result.Result {
 			var sub vo.SubjectVo
 			sqlStr = "select * from subject where id = ?"
 			err = config.DB.Get(&sub, sqlStr, sidvo.Id)
-			if err != nil && err.Error()!="sql: no rows in result set"{
+			if err != nil && err.Error() != "sql: no rows in result set" {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 
 			sub.Score = sidvo.Score
-			subList = append(subList,&sub)
+			subList = append(subList, &sub)
 		}
 
 		chap.SubList = subList
@@ -134,12 +134,12 @@ func TestPaperDetail2(id string) *result.Result {
 			var sub vo.SubjectVo
 			sqlStr = "select id, create_at, update_at, delete_at, type, opt_a, opt_b, opt_c, opt_d, analysis, status, question, qb_id from subject where id = ?"
 			err = config.DB.Get(&sub, sqlStr, sidvo.Id)
-			if err != nil && err.Error()!="sql: no rows in result set"{
+			if err != nil && err.Error() != "sql: no rows in result set" {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 
 			sub.Score = sidvo.Score
-			subList = append(subList,&sub)
+			subList = append(subList, &sub)
 		}
 
 		chap.SubList = subList
@@ -154,18 +154,18 @@ func TestPaperList(page, size int, sort string, query map[string]interface{}) *r
 	// 1、获取paper
 	sqlStr := "select * from test_paper where delete_at is null "
 
-	params := make([]interface{},0)
-	if query["name"]!=nil{
-		sqlStr+="and name like ? "
+	params := make([]interface{}, 0)
+	if query["name"] != nil {
+		sqlStr += "and name like ? "
 		params = append(params, "%"+query["name"].(string)+"%")
 	}
 
-	if query["status"]!=nil{
-		sqlStr+="and status = ? "
+	if query["status"] != nil {
+		sqlStr += "and status = ? "
 		params = append(params, fmt.Sprintf("%1.0f", query["status"].(float64)))
 	}
 
-	sqlStr+="order by create_at "
+	sqlStr += "order by create_at "
 
 	if sort == "asc" {
 		sqlStr += "asc "
@@ -173,7 +173,7 @@ func TestPaperList(page, size int, sort string, query map[string]interface{}) *r
 		sqlStr += "desc "
 	}
 	sqlStr += "limit ?,?"
-	params = append(params,utils.PostionSize(page, size),size)
+	params = append(params, utils.PostionSize(page, size), size)
 
 	var tp []*vo.TestPaperVo
 	err := config.DB.Select(&tp, sqlStr, params...)
@@ -204,12 +204,12 @@ func TestPaperList(page, size int, sort string, query map[string]interface{}) *r
 				var sub vo.SubjectVo
 				sqlStr = "select * from subject where id = ?"
 				err = config.DB.Get(&sub, sqlStr, sidvo.Id)
-				if err != nil && err.Error()!="sql: no rows in result set"{
+				if err != nil && err.Error() != "sql: no rows in result set" {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
 
 				sub.Score = sidvo.Score
-				subList = append(subList,&sub)
+				subList = append(subList, &sub)
 			}
 
 			chap.SubList = subList
@@ -222,45 +222,42 @@ func TestPaperList(page, size int, sort string, query map[string]interface{}) *r
 	sqlStr = "select count(id) from test_paper where delete_at is null "
 
 	var total int
-	params = make([]interface{},0)
-	if query["name"]!=nil{
-		sqlStr+="and name like ? "
+	params = make([]interface{}, 0)
+	if query["name"] != nil {
+		sqlStr += "and name like ? "
 		params = append(params, "%"+query["name"].(string)+"%")
 	}
-	if query["status"]!=nil{
-		sqlStr+="and status = ? "
+	if query["status"] != nil {
+		sqlStr += "and status = ? "
 		params = append(params, fmt.Sprintf("%1.0f", query["status"].(float64)))
 	}
-	err = config.DB.Get(&total, sqlStr,params...)
-	if err!=nil{
+	err = config.DB.Get(&total, sqlStr, params...)
+	if err != nil {
 		return result.UNKNOW_ERROR.SetData(err.Error())
 	}
 
-	return result.SUCCESS.SetData(result.NewPage(page,len(tp),total,tp))
+	return result.SUCCESS.SetData(result.NewPage(page, len(tp), total, tp))
 }
 
 func UpdateTestPaper(t *vo.TestPaperVo) *result.Result {
 
-
-
 	tx, err := config.DB.Beginx()
-	if err!=nil{
+	if err != nil {
 		return result.UNKNOW_ERROR.SetData(err)
 	}
-	return utils.Transation(tx,err, func(tx *sqlx.Tx) *result.Result {
-
+	return utils.Transation(tx, err, func(tx *sqlx.Tx) *result.Result {
 
 		sqlStr := "update  test_paper set name=?,update_at=?,status=?,score=?,pass_score=? where id=? and delete_at is null "
 
 		var res sql.Result
-		res, err = config.DB.Exec(sqlStr, t.Name, time.Now(),t.Status,t.Score,t.PassScore, t.Id)
+		res, err = config.DB.Exec(sqlStr, t.Name, time.Now(), t.Status, t.Score, t.PassScore, t.Id)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetData(err)
 		}
 		affected, _ := res.RowsAffected()
 
 		sqlStr = "delete from chapter where tp_id = ?"
-		res, err = tx.Exec(sqlStr, t.Id)
+		_, err = tx.Exec(sqlStr, t.Id)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetData(err)
 		}
@@ -280,7 +277,7 @@ func UpdateTestPaper(t *vo.TestPaperVo) *result.Result {
 
 			affected2, _ := res.RowsAffected()
 
-			affected+=affected2
+			affected += affected2
 		}
 
 		return result.SuccessResult(result.NewResultChange(affected))

+ 24 - 27
dao/dao-user.go

@@ -8,14 +8,15 @@ import (
 	"exam_system/utils"
 	"exam_system/vo"
 	"fmt"
-	"github.com/jmoiron/sqlx"
-	"github.com/xuri/excelize/v2"
-	"golang.org/x/crypto/bcrypt"
 	"log"
 	"mime/multipart"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/jmoiron/sqlx"
+	"github.com/xuri/excelize/v2"
+	"golang.org/x/crypto/bcrypt"
 )
 
 // FindUserbySid 是否存在
@@ -124,8 +125,6 @@ func InsertUser(user *entity.User, userType string) *result.Result {
 			return result.UNKNOW_ERROR.SetMsg(err.Error())
 		}
 
-
-
 		// 4、插入用户角色表
 		sqlStr = "insert into user_role(user_id, role_id,create_at,update_at) values (?,?,?,?)"
 		_, err = tx.Exec(sqlStr, id, r.Id, time.Now(), time.Now())
@@ -136,8 +135,8 @@ func InsertUser(user *entity.User, userType string) *result.Result {
 		// 5、查询班级还未开始的考试
 		sqlStr = "select e.id from exam_class ec left join exam e on e.id = ec.exam_id where ec.class_id=? and e.end_at>=?"
 		var count []int64
-		err = tx.Select(&count, sqlStr, user.ClassId,time.Now())
-		if err != nil && err!=sql.ErrNoRows{
+		err = tx.Select(&count, sqlStr, user.ClassId, time.Now())
+		if err != nil && err != sql.ErrNoRows {
 			return result.UNKNOW_ERROR.SetMsg(err.Error())
 		}
 
@@ -146,8 +145,8 @@ func InsertUser(user *entity.User, userType string) *result.Result {
 		prepare, _ := tx.Prepare(sqlStr)
 
 		for _, examId := range count {
-			_, err = prepare.Exec( time.Now(), time.Now(),id, examId,entity.NOT_TESTED)
-			if err != nil && err!=sql.ErrNoRows{
+			_, err = prepare.Exec(time.Now(), time.Now(), id, examId, entity.NOT_TESTED)
+			if err != nil && err != sql.ErrNoRows {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 		}
@@ -156,7 +155,7 @@ func InsertUser(user *entity.User, userType string) *result.Result {
 		sqlStr = "update exam set user_count = user_count+1 where id in (?)"
 		var updateExamStr string
 		var param []interface{}
-		updateExamStr, param, err = sqlx.In(sqlStr,count)
+		updateExamStr, param, err = sqlx.In(sqlStr, count)
 		_, err = tx.Exec(updateExamStr, param...)
 		if err != nil {
 			return result.UNKNOW_ERROR.SetMsg(err.Error())
@@ -500,7 +499,7 @@ func InsertBatchUserByClassId(file multipart.File, classId int) *result.Result {
 					}
 				}
 				// 3、更新角色
-				ret, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
+				_, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
 				if err != nil {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
@@ -597,20 +596,19 @@ func InsertBatchUserByTermId(file multipart.File, termId, classId int) *result.R
 			var class entity.Class
 			termClass := strings.Split(termClassName, ">")
 
-
-			if len(termClass)==2{
+			if len(termClass) == 2 {
 				fmt.Println(classStr)
 				err = tx.Get(&class, classStr, termClass[0], termClass[1])
 				if err != nil {
-						if err == sql.ErrNoRows {
-							err = nil
-							continue
-						}
+					if err == sql.ErrNoRows {
+						err = nil
+						continue
+					}
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
 			}
 			fmt.Println()
-			if roleName == "student" && class.TermId != termId || (classId != 0 && class.Id !=nil &&  *class.Id==classId) {
+			if roleName == "student" && class.TermId != termId || (classId != 0 && class.Id != nil && *class.Id == classId) {
 				continue
 			}
 
@@ -666,7 +664,7 @@ func InsertBatchUserByTermId(file multipart.File, termId, classId int) *result.R
 					}
 				}
 				// 3、更新角色
-				ret, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
+				_, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
 				if err != nil {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
@@ -676,8 +674,8 @@ func InsertBatchUserByTermId(file multipart.File, termId, classId int) *result.R
 			// 5、查询班级还未开始的考试
 			sqlStr := "select e.id from exam_class ec left join exam e on e.id = ec.exam_id where ec.class_id=? and e.end_at>=?"
 			var count []int64
-			err = tx.Select(&count, sqlStr, user.ClassId,time.Now())
-			if err != nil && err!=sql.ErrNoRows{
+			err = tx.Select(&count, sqlStr, user.ClassId, time.Now())
+			if err != nil && err != sql.ErrNoRows {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
 			}
 
@@ -686,8 +684,8 @@ func InsertBatchUserByTermId(file multipart.File, termId, classId int) *result.R
 			prepare, _ := tx.Prepare(sqlStr)
 
 			for _, examId := range count {
-				_, err = prepare.Exec( time.Now(), time.Now(),user.ID, examId,entity.NOT_TESTED)
-				if err != nil && err!=sql.ErrNoRows{
+				_, err = prepare.Exec(time.Now(), time.Now(), user.ID, examId, entity.NOT_TESTED)
+				if err != nil && err != sql.ErrNoRows {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}
 			}
@@ -696,7 +694,7 @@ func InsertBatchUserByTermId(file multipart.File, termId, classId int) *result.R
 			sqlStr = "update exam set user_count = user_count+1 where id in (?)"
 			var updateExamStr string
 			var param []interface{}
-			updateExamStr, param, err = sqlx.In(sqlStr,count)
+			updateExamStr, param, err = sqlx.In(sqlStr, count)
 			_, err = tx.Exec(updateExamStr, param...)
 			if err != nil {
 				return result.UNKNOW_ERROR.SetMsg(err.Error())
@@ -793,7 +791,7 @@ func InsertBatchUser(file multipart.File) *result.Result {
 			// 1、查询学期班级
 			termClass := strings.Split(*v.ClassName, ">")
 			var class entity.Class
-			if len(termClass)==2{
+			if len(termClass) == 2 {
 				err = tx.Get(&class, classStr, termClass[0], termClass[1])
 				if err != nil {
 					if err == sql.ErrNoRows {
@@ -804,7 +802,6 @@ func InsertBatchUser(file multipart.File) *result.Result {
 				}
 			}
 
-
 			hash, _ := bcrypt.GenerateFromPassword([]byte(v.Password), bcrypt.DefaultCost)
 			v.Password = string(hash)
 
@@ -859,7 +856,7 @@ func InsertBatchUser(file multipart.File) *result.Result {
 					}
 				}
 				// 3、更新角色
-				ret, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
+				_, err = roleUpdateStmt.Exec(role.Id, time.Now(), user.ID)
 				if err != nil {
 					return result.UNKNOW_ERROR.SetMsg(err.Error())
 				}

+ 0 - 4
go.mod

@@ -7,7 +7,6 @@ require (
 	github.com/gin-gonic/gin v1.8.0
 	github.com/go-sql-driver/mysql v1.6.0
 	github.com/jmoiron/sqlx v1.3.5
-	github.com/nats-io/nats.go v1.19.0
 	github.com/satori/go.uuid v1.2.0
 	github.com/spf13/viper v1.12.0
 	github.com/xuri/excelize/v2 v2.6.0
@@ -30,9 +29,6 @@ require (
 	github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
 	github.com/modern-go/reflect2 v1.0.2 // indirect
 	github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
-	github.com/nats-io/nats-server/v2 v2.9.6 // indirect
-	github.com/nats-io/nkeys v0.3.0 // indirect
-	github.com/nats-io/nuid v1.0.1 // indirect
 	github.com/pelletier/go-toml v1.9.5 // indirect
 	github.com/pelletier/go-toml/v2 v2.0.2 // indirect
 	github.com/richardlehane/mscfb v1.0.4 // indirect

+ 0 - 14
go.sum

@@ -106,7 +106,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD
 github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
 github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
 github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
-github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
 github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
 github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
@@ -152,7 +151,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm
 github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
 github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c=
 github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
 github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -172,7 +170,6 @@ github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-sqlite3 v1.14.6 h1:dNPt6NO46WmLVt2DLNpwczCmdV5boIZ6g/tlDrlRUbg=
 github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/minio/highwayhash v1.0.2 h1:Aak5U0nElisjDCfPSG79Tgzkn2gl66NxOMspRrKnA/g=
 github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
 github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -182,15 +179,6 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G
 github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
 github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
-github.com/nats-io/jwt/v2 v2.3.0 h1:z2mA1a7tIf5ShggOFlR1oBPgd6hGqcDYsISxZByUzdI=
-github.com/nats-io/nats-server/v2 v2.9.6 h1:RTtK+rv/4CcliOuqGsy58g7MuWkBaWmF5TUNwuUo9Uw=
-github.com/nats-io/nats-server/v2 v2.9.6/go.mod h1:AB6hAnGZDlYfqb7CTAm66ZKMZy9DpfierY1/PbpvI2g=
-github.com/nats-io/nats.go v1.19.0 h1:H6j8aBnTQFoVrTGB6Xjd903UMdE7jz6DS4YkmAqgZ9Q=
-github.com/nats-io/nats.go v1.19.0/go.mod h1:tLqubohF7t4z3du1QDPYJIQQyhb4wl6DhjxEajSI7UA=
-github.com/nats-io/nkeys v0.3.0 h1:cgM5tL53EvYRU+2YLXIK0G2mJtK12Ft9oeooSZMA2G8=
-github.com/nats-io/nkeys v0.3.0/go.mod h1:gvUNGjVcM2IPr5rCsRsC6Wb3Hr2CQAm08dsxtV6A5y4=
-github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
-github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
 github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
 github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
 github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw=
@@ -258,7 +246,6 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
 golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20210314154223-e6e6c4f2bb5b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
 golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
@@ -409,7 +396,6 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/time v0.0.0-20220922220347-f3bd1da661af h1:Yx9k8YCG3dvF87UAn2tu2HQLf2dt/eR1bXxpLMWeH+Y=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=

+ 0 - 45
router/router-exam-record.go

@@ -1,21 +1,16 @@
 package router
 
 import (
-	"encoding/json"
-	"exam_system/config"
 	"exam_system/dao"
 	"exam_system/entity"
 	"exam_system/result"
 	"exam_system/utils"
 	"exam_system/vo"
-	"fmt"
 	"net/http"
 	"strconv"
 	"strings"
-	"time"
 
 	"github.com/gin-gonic/gin"
-	"github.com/nats-io/nats.go"
 	"github.com/xuri/excelize/v2"
 )
 
@@ -48,46 +43,6 @@ func ExamRecord(router *RouterPlus) {
 
 	}
 
-	// go UpdateExamRecordTask()
-
-}
-func UpdateExamRecordTask() {
-	config.JS.AddConsumer("EXAMS", &nats.ConsumerConfig{
-		Durable: "MONITOR",
-	})
-	sub, err := config.JS.PullSubscribe("EXAMS.info", "MONITOR")
-	if err != nil {
-		fmt.Println(err)
-	}
-
-	for {
-		time.Sleep(time.Second)
-		// 分批从stream拉取消息一次10个
-		msgs, err := sub.Fetch(100)
-		if err != nil && err != nats.ErrTimeout {
-			fmt.Println(err)
-		}
-		for _, msg := range msgs {
-
-			var e entity.Exam
-			err = json.Unmarshal(msg.Data, &e)
-			if err != nil && err != nats.ErrTimeout {
-				fmt.Println(err)
-			}
-
-			if e.EndAt.Before(time.Now()) {
-				// 更新为
-				res := dao.UpdateExamRecordTask(e.Id)
-				if res.Code == result.SUCCESS.Code {
-					err = msg.Ack()
-					if err != nil {
-						fmt.Println(err)
-					}
-				}
-			}
-
-		}
-	}
 }
 
 func AddExamRecord(c *gin.Context) *result.Result {