This commit is contained in:
parent
c011fe69c8
commit
05f8043672
19
Dockerfile
19
Dockerfile
@ -1,17 +1,24 @@
|
|||||||
FROM golang:1.18 as builder
|
FROM golang:1.18 as builder
|
||||||
|
|
||||||
|
# 启用go module
|
||||||
|
ENV GO111MODULE=on \
|
||||||
|
GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /builder
|
WORKDIR /builder
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN go mod download && go build -o app && upx -9 app
|
RUN go mod download && go build -o app && upx -9 app
|
||||||
RUN ls -lh && chmod +x ./app
|
RUN ls -lh && chmod +x ./app
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# 指定OS等,并go build
|
||||||
|
RUN GOOS=linux GOARCH=amd64 go build .
|
||||||
|
|
||||||
|
# 运行阶段指定scratch作为基础镜像
|
||||||
|
FROM alpine
|
||||||
|
|
||||||
# 指定创建的基础镜像
|
|
||||||
FROM alpine as runner
|
|
||||||
# 替换阿里云的源
|
|
||||||
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
|
|
||||||
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=builder /builder/app ./app
|
COPY --from=builder /builder/app ./app
|
||||||
CMD ./app
|
CMD ./app
|
||||||
|
|
||||||
|
ENTRYPOINT ["./app"]
|
1
main.go
1
main.go
@ -1,6 +1,5 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import "C"
|
|
||||||
import (
|
import (
|
||||||
"docDemo/router"
|
"docDemo/router"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
69
map_test.go
69
map_test.go
@ -1,69 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"docDemo/client"
|
|
||||||
"docDemo/model"
|
|
||||||
"encoding/json"
|
|
||||||
"fmt"
|
|
||||||
"github.com/xuri/excelize/v2"
|
|
||||||
"strings"
|
|
||||||
"testing"
|
|
||||||
)
|
|
||||||
|
|
||||||
var AZ = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
|
|
||||||
|
|
||||||
func TestMap(t *testing.T) {
|
|
||||||
|
|
||||||
file, err := excelize.OpenFile("result.xlsx")
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
rows, err := file.GetRows("Sheet1")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, row := range rows[1:3] {
|
|
||||||
if row[0] == "" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
var ques []map[string]string
|
|
||||||
for i := range row[2:] {
|
|
||||||
ques = append(ques, map[string]string{AZ[i]: row[2:][i]})
|
|
||||||
}
|
|
||||||
|
|
||||||
awssJson, err := json.Marshal(ques)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var Questions model.Question
|
|
||||||
Questions.Content = row[1]
|
|
||||||
Questions.Answer = string(awssJson)
|
|
||||||
Questions.Analysis = "A"
|
|
||||||
Questions.CorrectAnswer = "A"
|
|
||||||
Questions.Subject = "大学语文"
|
|
||||||
|
|
||||||
if strings.Contains(row[0], "单选") || strings.Contains(row[0], "单项") {
|
|
||||||
Questions.SubjectType = "single"
|
|
||||||
}
|
|
||||||
if strings.Contains(row[0], "多选") || strings.Contains(row[0], "多项") {
|
|
||||||
Questions.SubjectType = "mutil"
|
|
||||||
}
|
|
||||||
if strings.Contains(row[0], "判断") {
|
|
||||||
Questions.SubjectType = "judge"
|
|
||||||
}
|
|
||||||
if strings.Contains(row[0], "应用") || strings.Contains(row[0], "简答") {
|
|
||||||
Questions.SubjectType = "application"
|
|
||||||
}
|
|
||||||
|
|
||||||
err = client.MySQL.Table("sys_question_bank").Create(&Questions).Error
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("导入题库失败:", err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,62 +0,0 @@
|
|||||||
package utils
|
|
||||||
|
|
||||||
import (
|
|
||||||
"docDemo/model"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"gitee.ltd/lxh/logger/log"
|
|
||||||
"github.com/xuri/excelize/v2"
|
|
||||||
"strings"
|
|
||||||
)
|
|
||||||
|
|
||||||
var AZ = []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
|
|
||||||
|
|
||||||
type excel struct{}
|
|
||||||
|
|
||||||
func ExcelUtils() *excel {
|
|
||||||
return &excel{}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ParseQuestion 转换Excel为量表问题答案信息
|
|
||||||
func (e excel) ParseQuestion(ef *excelize.File) (es []model.Question, err error) {
|
|
||||||
// 获取指定sheet
|
|
||||||
rows, err := ef.GetRows("question")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
log.Debugf("读取成功,共%d行%d列数据", len(rows), len(rows[0]))
|
|
||||||
// 循环行,处理为结构体,不处理第一行,因为是标题
|
|
||||||
for i, row := range rows[1:] {
|
|
||||||
// 如果问题出现空行,终止解析
|
|
||||||
if row[0] == "" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
// 创建一个问题结构体
|
|
||||||
var q model.Question
|
|
||||||
q.QuestionSerial = i + 1
|
|
||||||
q.Question = row[0]
|
|
||||||
// 开始解析答案
|
|
||||||
var answers []model.AnswerEntity
|
|
||||||
for j, a := range row[1:] {
|
|
||||||
// 如果答案出现空行,终止解析
|
|
||||||
if a == "" {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
// 拆开答案,获取答案和分值
|
|
||||||
if !strings.Contains(a, "|") {
|
|
||||||
log.Errorf("异常数据: %v", a)
|
|
||||||
err = errors.New(fmt.Sprintf("模板文件格式错误(%v行%v列),答案和分值必须以|隔开", i+2, j+2))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
answerInfo := strings.Split(a, "|")
|
|
||||||
answers = append(answers, model.AnswerEntity{
|
|
||||||
Code: AZ[j],
|
|
||||||
Answer: answerInfo[0],
|
|
||||||
Score: StrToInt(answerInfo[1]),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
q.Answers = answers
|
|
||||||
es = append(es, q)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user