Browse Source

编写荣信性格测试

li_v1
超级管理员 1 year ago
parent
commit
df1e5ee307
  1. 10
      api/personalityTest/entry.go
  2. 118
      api/personalityTest/rongXin/controller.go
  3. 29
      api/personalityTest/rongXin/type.go
  4. 93
      api/shiyan/maptostruct/shiyan.go
  5. 11
      api/shiyan/maptostruct/type.go
  6. 8
      api/version1/user/type.go
  7. 190
      api/version1/user/userCont.go
  8. 3
      apirouter/apishiyan/maptostruct.go
  9. 2
      apirouter/entry.go
  10. 3
      apirouter/personalityAssessment/entry.go
  11. 19
      apirouter/personalityAssessment/rongxin.go
  12. 4
      apirouter/v1/userRouters/pc.go
  13. 1
      go.mod
  14. 62
      go.sum
  15. 7
      initialization/route/initRoute.go
  16. 66
      models/modelsschool/answer.go
  17. 80
      models/modelsschool/subject.go
  18. 155
      overall/publicmethod/sm4.go

10
api/personalityTest/entry.go

@ -0,0 +1,10 @@
package personalityTest
import rongxin "appPlatform/api/personalityTest/rongXin"
//性格测试相关
type ApiEntry struct {
CharacterTestRongXin rongxin.ApiMethod
}
var AppApiEntry = new(ApiEntry)

118
api/personalityTest/rongXin/controller.go

@ -0,0 +1,118 @@
package rongxin
import (
"appPlatform/models/modelshr"
"appPlatform/overall/publicmethod"
"encoding/json"
"github.com/gin-gonic/gin"
)
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 16:12:38
@ 功能: 登录(内部人员)
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) Login(c *gin.Context) {
var requestData PersonalityTestIn
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Number == "" {
publicmethod.Result(1, err, c, "请输入工号!")
return
}
if requestData.Name == "" {
publicmethod.Result(1, err, c, "请输入姓名!")
return
}
if requestData.Post == "" {
publicmethod.Result(1, err, c, "请输入岗位!")
return
}
var userCont modelshr.PersonArchives
err = userCont.GetCont(map[string]interface{}{"`number`": requestData.Number}, "`id`", "`name`", "`key`")
if err != nil || userCont.Id == 0 {
publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!")
return
}
jsonStr, err := json.Marshal(requestData)
if err != nil {
publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!")
return
}
jiaMi, err := publicmethod.SM4Encrypt(string(jsonStr))
if err != nil {
publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!")
return
}
sendInfo := publicmethod.MapOut[string]()
sendInfo["sign"] = jiaMi
publicmethod.Result(0, sendInfo, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 16:28:48
@ 功能: 外来人员性格测试
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) LoginExternal(c *gin.Context) {
var requestData PersonalityTestOut
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Tel == "" {
publicmethod.Result(1, err, c, "请输入联系电话!")
return
}
if requestData.Name == "" {
publicmethod.Result(1, err, c, "请输入姓名!")
return
}
if requestData.Address == "" {
publicmethod.Result(1, err, c, "请输入联系地址!")
return
}
jsonStr, err := json.Marshal(requestData)
if err != nil {
publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!")
return
}
jiaMi, err := publicmethod.SM4Encrypt(string(jsonStr))
if err != nil {
publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!")
return
}
sendInfo := publicmethod.MapOut[string]()
sendInfo["sign"] = jiaMi
publicmethod.Result(0, sendInfo, c)
}

29
api/personalityTest/rongXin/type.go

@ -0,0 +1,29 @@
package rongxin
import (
"appPlatform/overall/publicmethod"
"github.com/gin-gonic/gin"
)
//荣信性格测试相关数据处理
type ApiMethod struct{}
// 荣信性格测试入口
func (a *ApiMethod) Index(c *gin.Context) {
outputCont := publicmethod.MapOut[string]()
outputCont["index"] = "荣信性格测试入口"
publicmethod.Result(0, outputCont, c)
}
type PersonalityTestIn struct {
Number string `json:"number"`
Name string `json:"name"`
Post string `json:"post"`
}
type PersonalityTestOut struct {
Tel string `json:"tel"`
Name string `json:"name"`
Address string `json:"address"`
}

93
api/shiyan/maptostruct/shiyan.go

@ -722,3 +722,96 @@ func (a *ApiMethod) GainAppPageInfo(c *gin.Context) {
// sendData["formField"] = fieldList // sendData["formField"] = fieldList
publicmethod.Result(0, sendData, c) publicmethod.Result(0, sendData, c)
} }
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 13:52:07
@ 功能: 测试过密加解密(SM4)
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) AppSm4(c *gin.Context) {
var requestData PersonalityTestIn
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Number == "" {
publicmethod.Result(1, err, c, "请输入工号!")
return
}
if requestData.Name == "" {
publicmethod.Result(1, err, c, "请输入姓名!")
return
}
if requestData.Post == "" {
publicmethod.Result(1, err, c, "请输入岗位!")
return
}
sendInfo := publicmethod.MapOut[string]()
jsonStr, _ := json.Marshal(requestData)
fmt.Printf("jsonStr:%v\n", string(jsonStr))
jiaMi, err := publicmethod.SM4Encrypt(string(jsonStr))
sendInfo["jiaMi"] = jiaMi
sendInfo["jiaMiErr"] = err
jieMi, err := publicmethod.SM4Decrypt(jiaMi)
sendInfo["jieMi"] = jieMi
sendInfo["jieMiErr"] = err
var jsonInfo PersonalityTestIn
json.Unmarshal([]byte(jieMi), &jsonInfo)
sendInfo["jsonInfo"] = jsonInfo
publicmethod.Result(0, sendInfo, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 14:26:33
@ 功能: 删除转现题库内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) DelZhuanXiang(c *gin.Context) {
var requestData publicmethod.CommonId[string]
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Id == "" {
publicmethod.Result(102, err, c)
return
}
var delKey []int64
err = overall.CONSTANT_DB_Master.Model(&modelsschool.Subject{}).Select("`s_key`").Where("`s_one_exam` = ?", requestData.Id).Find(&delKey).Error
if err != nil {
publicmethod.Result(0, delKey, c)
return
}
if len(delKey) > 0 {
overall.CONSTANT_DB_KPI.Where("`s_one_exam` = ?", requestData.Id).Delete(&modelsschool.Subject{})
overall.CONSTANT_DB_KPI.Where("`a_key` IN ?", delKey).Delete(&modelsschool.Answer{})
}
publicmethod.Result(0, delKey, c)
}

11
api/shiyan/maptostruct/type.go

@ -120,3 +120,14 @@ type CreatFlowView struct {
ConditionList []taskflow.ConditionListInfo `json:"conditionList"` //判断条件主体 ConditionList []taskflow.ConditionListInfo `json:"conditionList"` //判断条件主体
NodelPeople []taskflow.NodelPeopleInfo `json:"nodelPeople"` //节点操作人 NodelPeople []taskflow.NodelPeopleInfo `json:"nodelPeople"` //节点操作人
} }
type PersonalityTestIn struct {
Number string `json:"number"`
Name string `json:"name"`
Post string `json:"post"`
}
type PersonalityTestOut struct {
Tel string `json:"tel"`
Name string `json:"name"`
Address string `json:"address"`
}

8
api/version1/user/type.go

@ -65,6 +65,8 @@ type SendPower struct {
type SendUserTemInfo struct { type SendUserTemInfo struct {
modelAppPlatform.UserInfoDownTemplate modelAppPlatform.UserInfoDownTemplate
OrgName string `json:"orgName" gorm:"-"` OrgName string `json:"orgName" gorm:"-"`
OrgIdStr string `json:"orgIdStr" gorm:"-"`
IdStr string `json:"idStr" gorm:"-"`
} }
// 上传模版保存 // 上传模版保存
@ -74,3 +76,9 @@ type UpLoadTemSave struct {
FilePath string `json:"filePath"` FilePath string `json:"filePath"`
FileUrl string `json:"fileUrl"` FileUrl string `json:"fileUrl"`
} }
// 编辑模版内容
type EditTemplateCont struct {
publicmethod.PublicId
UpLoadTemSave
}

190
api/version1/user/userCont.go

@ -600,12 +600,14 @@ func (a *ApiMethod) GainUserInfoDownTemplateList(c *gin.Context) {
for i, v := range temList { for i, v := range temList {
var orgCont modelshr.AdministrativeOrganization var orgCont modelshr.AdministrativeOrganization
if v.OrgId != 0 { if v.OrgId != 0 {
err = orgCont.GetCont(map[string]interface{}{}, "`name`") err = orgCont.GetCont(map[string]interface{}{"`id`": v.OrgId}, "`name`")
if err != nil { if err != nil {
orgCont.Name = "" orgCont.Name = ""
} }
} }
temList[i].OrgName = orgCont.Name temList[i].OrgName = orgCont.Name
temList[i].OrgIdStr = strconv.FormatInt(v.OrgId, 10)
temList[i].IdStr = strconv.FormatInt(v.Id, 10)
} }
publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(temList)), temList, c) publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(temList)), temList, c)
} }
@ -657,3 +659,189 @@ func (a *ApiMethod) UploadUserTemplate(c *gin.Context) {
} }
publicmethod.Result(0, err, c) publicmethod.Result(0, err, c)
} }
/*
*
@ 作者: 秦东
@ 时间: 2024-08-26 11:16:33
@ 功能: 编辑人员模版列表状态
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) EditUserTempr(c *gin.Context) {
var requestData publicmethod.PublicStates
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Id == "" || requestData.Id == "0" {
publicmethod.Result(1, err, c, "未知行政组织!不可编辑")
return
}
if requestData.Status == 0 {
requestData.Status = 1
}
saveData := publicmethod.MapOut[string]()
saveData["status"] = requestData.Status
saveData["dateTime"] = time.Now().Unix()
var fileOrg modelAppPlatform.UserInfoDownTemplate
err = fileOrg.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if err != nil {
publicmethod.Result(106, err, c)
return
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-26 11:28:00
@ 功能: 获取员工模版信息
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GainUserTemplateInfo(c *gin.Context) {
var requestData publicmethod.PublicId
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Id == "" || requestData.Id == "0" {
publicmethod.Result(1, err, c, "未知行政组织!不可编辑")
return
}
var fileOrg SendUserTemInfo
err = fileOrg.GetCont(map[string]interface{}{"`id`": requestData.Id})
if err != nil {
publicmethod.Result(106, err, c)
return
}
var orgCont modelshr.AdministrativeOrganization
if fileOrg.OrgId != 0 {
err = orgCont.GetCont(map[string]interface{}{"`id`": fileOrg.OrgId}, "`name`")
if err != nil {
orgCont.Name = ""
}
}
fileOrg.OrgName = orgCont.Name
fileOrg.OrgIdStr = strconv.FormatInt(fileOrg.OrgId, 10)
fileOrg.IdStr = strconv.FormatInt(fileOrg.Id, 10)
publicmethod.Result(0, fileOrg, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-26 11:31:10
@ 功能: 编辑模版内容
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) EditUserTemplateInfo(c *gin.Context) {
var requestData EditTemplateCont
err := c.ShouldBindJSON(&requestData)
if err != nil {
publicmethod.Result(100, err, c)
return
}
if requestData.Id == "" || requestData.Id == "0" {
publicmethod.Result(1, err, c, "未知行政组织!不可编辑")
return
}
var oldInfo modelAppPlatform.UserInfoDownTemplate
err = oldInfo.GetCont(map[string]interface{}{"`id`": requestData.Id})
if err != nil {
publicmethod.Result(107, err, c)
return
}
saveData := publicmethod.MapOut[string]()
if requestData.OrgId != "" {
orgOldId := strconv.FormatInt(oldInfo.OrgId, 10)
if requestData.OrgId != orgOldId {
saveData["orgId"] = requestData.OrgId
}
}
if requestData.FileName != oldInfo.FileName {
saveData["fileName"] = requestData.FileName
}
if requestData.FilePath != oldInfo.FilePath {
saveData["filePath"] = requestData.FilePath
}
if requestData.FileUrl != oldInfo.FileUrl {
saveData["fileUrl"] = requestData.FileUrl
}
if len(saveData) > 0 {
saveData["status"] = 1
saveData["dateTime"] = time.Now().Unix()
var fileOrg modelAppPlatform.UserInfoDownTemplate
err = fileOrg.EiteCont(map[string]interface{}{"`id`": requestData.Id}, saveData)
if err != nil {
publicmethod.Result(106, err, c)
return
}
}
publicmethod.Result(0, err, c)
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-26 13:00:11
@ 功能: 获取现有模版归属那个组织
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func (a *ApiMethod) GainTempleateOrgList(c *gin.Context) {
var list []int64
err := overall.CONSTANT_DB_AppPlatform.Model(&modelAppPlatform.UserInfoDownTemplate{}).Select("`orgId`").Where("`status` = 1").Find(&list).Error
if err != nil || len(list) == 0 {
publicmethod.Result(107, err, c)
return
}
var orgList []modelshr.AdministrativeOrganization
err = overall.CONSTANT_DB_HR.Model(&modelshr.AdministrativeOrganization{}).Select("`id`,`name`").Where("`id` IN ?", list).Find(&orgList).Error
if err != nil || len(orgList) == 0 {
publicmethod.Result(107, err, c)
return
}
publicmethod.Result(0, orgList, c)
}

3
apirouter/apishiyan/maptostruct.go

@ -40,6 +40,9 @@ func (a *ApiRouter) RouterGroup(router *gin.RouterGroup) {
apiRouter.POST("gainDateCenter", methodBinding.GainDateCenter) //获取行政组织所有子类 apiRouter.POST("gainDateCenter", methodBinding.GainDateCenter) //获取行政组织所有子类
apiRouter.POST("gainAppPageInfo", methodBinding.GainAppPageInfo) //获取行政组织所有子类 apiRouter.POST("gainAppPageInfo", methodBinding.GainAppPageInfo) //获取行政组织所有子类
apiRouter.POST("delZhuanXiang", methodBinding.DelZhuanXiang) //删除转现题库内容
apiRouter.POST("appSm4", methodBinding.AppSm4) //测试过密加解密(SM4)
} }
} }

2
apirouter/entry.go

@ -3,6 +3,7 @@ package apirouter
import ( import (
"appPlatform/apirouter/apishiyan" "appPlatform/apirouter/apishiyan"
"appPlatform/apirouter/authenticationroute" "appPlatform/apirouter/authenticationroute"
"appPlatform/apirouter/personalityAssessment"
"appPlatform/apirouter/v1/customerformrouter" "appPlatform/apirouter/v1/customerformrouter"
datacenterrouter "appPlatform/apirouter/v1/dataCenterRouter" datacenterrouter "appPlatform/apirouter/v1/dataCenterRouter"
dictrouters "appPlatform/apirouter/v1/dict_routers" dictrouters "appPlatform/apirouter/v1/dict_routers"
@ -37,6 +38,7 @@ type RouterGroup struct {
WorkWechatRouter workwechatrouter.ApiRouter WorkWechatRouter workwechatrouter.ApiRouter
DataCenterRouter datacenterrouter.ApiRouter DataCenterRouter datacenterrouter.ApiRouter
WebSocketRouters websocketrouter.ApiRouter WebSocketRouters websocketrouter.ApiRouter
CharacterTestRongXin personalityAssessment.ApiRouter
} }
var RouterGroupEntry = new(RouterGroup) var RouterGroupEntry = new(RouterGroup)

3
apirouter/personalityAssessment/entry.go

@ -0,0 +1,3 @@
package personalityAssessment
type ApiRouter struct{}

19
apirouter/personalityAssessment/rongxin.go

@ -0,0 +1,19 @@
package personalityAssessment
import (
"appPlatform/api/personalityTest"
"github.com/gin-gonic/gin"
)
func (a *ApiRouter) RouterGroup(router *gin.RouterGroup) {
apiRouter := router.Group("rongxin")
var methodBinding = personalityTest.AppApiEntry.CharacterTestRongXin
{
apiRouter.GET("", methodBinding.Index) //入口
apiRouter.POST("", methodBinding.Index) //入口
apiRouter.POST("login", methodBinding.Login) //登录(内部人员)
apiRouter.POST("loginExternal", methodBinding.LoginExternal) //登录(内部人员)
}
}

4
apirouter/v1/userRouters/pc.go

@ -20,5 +20,9 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) {
apiRouter.POST("gainUserInfoDownTemplateList", methodBinding.GainUserInfoDownTemplateList) //获取人员信息模版列表 apiRouter.POST("gainUserInfoDownTemplateList", methodBinding.GainUserInfoDownTemplateList) //获取人员信息模版列表
apiRouter.POST("uploadUserTemplate", methodBinding.UploadUserTemplate) //上传人员信息模版保存 apiRouter.POST("uploadUserTemplate", methodBinding.UploadUserTemplate) //上传人员信息模版保存
apiRouter.POST("editUserTempr", methodBinding.EditUserTempr) //编辑人员模版列表状态
apiRouter.POST("gainUserTemplateInfo", methodBinding.GainUserTemplateInfo) //获取员工模版信息
apiRouter.POST("editUserTemplateInfo", methodBinding.EditUserTemplateInfo) //编辑模版内容
apiRouter.POST("gainTempleateOrgList", methodBinding.GainTempleateOrgList) //获取现有模版归属那个组织
} }
} }

1
go.mod

@ -54,6 +54,7 @@ require (
github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect
github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/pflag v1.0.5 // indirect
github.com/subosito/gotenv v1.6.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect
github.com/tjfoc/gmsm v1.4.1 // indirect
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.11 // indirect github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.3.0 // indirect golang.org/x/arch v0.3.0 // indirect

62
go.sum

@ -1,3 +1,4 @@
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs=
@ -5,11 +6,14 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM=
github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s= github.com/bytedance/sonic v1.9.1 h1:6iJ6NqdoxCDr6mbY8h18oSO+cShGSMRGCEo7F2h0x8s=
github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44=
github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhDF8vLC+iwCD4WpbV1EBDSzWkJODFLams=
github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
@ -21,6 +25,9 @@ github.com/dengsgo/math-engine v0.0.0-20230823154425-78f211b48149 h1:TkVfb0s14IU
github.com/dengsgo/math-engine v0.0.0-20230823154425-78f211b48149/go.mod h1:zkR27k4K0I8FS6rkEd8qBhPeS8i3X2FKfvSPdF64OpQ= github.com/dengsgo/math-engine v0.0.0-20230823154425-78f211b48149/go.mod h1:zkR27k4K0I8FS6rkEd8qBhPeS8i3X2FKfvSPdF64OpQ=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78=
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc=
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20231212025023-e0a8e9370425 h1:XTvBOk+EFcon1fL8gzFRN2N7jGvc2QGZMqWF+evZT10= github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20231212025023-e0a8e9370425 h1:XTvBOk+EFcon1fL8gzFRN2N7jGvc2QGZMqWF+evZT10=
github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20231212025023-e0a8e9370425/go.mod h1:zsseaaJleMl86IDc9evuQx6gJYfdG0kW67+MTVxwTAU= github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20231212025023-e0a8e9370425/go.mod h1:zsseaaJleMl86IDc9evuQx6gJYfdG0kW67+MTVxwTAU=
github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
@ -55,7 +62,22 @@ github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU=
github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I=
github.com/golang-module/carbon v1.7.3 h1:p5mUZj7Tg62MblrkF7XEoxVPvhVs20N/kimqsZOQ+/U= github.com/golang-module/carbon v1.7.3 h1:p5mUZj7Tg62MblrkF7XEoxVPvhVs20N/kimqsZOQ+/U=
github.com/golang-module/carbon v1.7.3/go.mod h1:nUMnXq90Rv8a7h2+YOo2BGKS77Y0w/hMPm4/a8h19N8= github.com/golang-module/carbon v1.7.3/go.mod h1:nUMnXq90Rv8a7h2+YOo2BGKS77Y0w/hMPm4/a8h19N8=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@ -108,6 +130,7 @@ github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6
github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0u0= github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0u0=
github.com/redis/go-redis/v9 v9.3.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= github.com/redis/go-redis/v9 v9.3.0/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M=
github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs=
@ -151,6 +174,8 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho=
github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE=
github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI=
github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
@ -163,30 +188,65 @@ golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY=
golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190515120540-06a5c4944438/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
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=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
@ -206,4 +266,6 @@ gorm.io/driver/mysql v1.5.2/go.mod h1:pQLhh1Ut/WUAySdTHwBpBv6+JKcj+ua4ZFx1QQTBzb
gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gorm.io/gorm v1.25.2-0.20230530020048-26663ab9bf55/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k=
gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls= gorm.io/gorm v1.25.5 h1:zR9lOiiYf09VNh5Q1gphfyia1JpiClIWG9hQaxB/mls=
gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8= gorm.io/gorm v1.25.5/go.mod h1:hbnx/Oo0ChWMn1BIhpy1oYozzpM15i4YPuHDmfYtwg8=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

7
initialization/route/initRoute.go

@ -38,6 +38,13 @@ func InitialRouter() *gin.Engine {
{ {
shiyanApi.RouterGroup(appLoadRouterGroup) shiyanApi.RouterGroup(appLoadRouterGroup)
} }
//性格测试相关
characterTestApi := apirouter.RouterGroupEntry.CharacterTestRongXin
{
characterTestApi.RouterGroup(appLoadRouterGroup)
}
//auto2.0身份验证 //auto2.0身份验证
signCodeApi := apirouter.RouterGroupEntry.SignCodeRouter signCodeApi := apirouter.RouterGroupEntry.SignCodeRouter
{ {

66
models/modelsschool/answer.go

@ -0,0 +1,66 @@
package modelsschool
import (
"appPlatform/overall"
"strings"
)
// 试题答案
type Answer struct {
Id int64 `json:"id" gorm:"primaryKey;column:a_id;type:bigint(20) unsigned;not null;comment:ID"`
TitleText string `json:"titleText" gorm:"column:a_text;type:text;comment:答案"`
trueFalse int `json:"trueFalse" gorm:"column:a_true_false;type:int(1) unsigned;default:1;not null;comment:是否为正确答案(1:正确;2:错误)"`
Types int `json:"types" gorm:"column:a_type;type:tinyint(1) unsigned;default:0;not null;comment:类型(1:单选;2:多选;3:判断)"`
Keys int64 `json:"keys" gorm:"column:a_key;type:bigint(50) unsigned;default:0;not null;comment:'唯一识别符"`
}
func (SystemMenu *Answer) TableName() string {
return "answer"
}
// // 菜单管理
// type SystemMenuOperation struct {
// Answer
// MenuPermit []MenuOperation `json:"menupermit"`
// }
// 编辑内容
func (cont *Answer) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Updates(saveData).Error
return
}
// 获取内容
func (cont *Answer) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_KPI.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}
// 根据条件获取总数
func (cont *Answer) CountCont(whereMap interface{}) (countId int64) {
overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Count(&countId)
return
}
// 读取全部信息
func (cont *Answer) ContMap(whereMap interface{}, field ...string) (countAry []Answer, err error) {
gormDb := overall.CONSTANT_DB_KPI.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
err = gormDb.Where(whereMap).Find(&countAry).Error
return
}
// 删除内容
func (cont *Answer) DelCont(whereMap interface{}) (err error) {
err = overall.CONSTANT_DB_KPI.Where(whereMap).Delete(&cont).Error
return
}

80
models/modelsschool/subject.go

@ -0,0 +1,80 @@
package modelsschool
import (
"appPlatform/overall"
"strings"
)
// 试题题目
type Subject struct {
Id int64 `json:"id" gorm:"primaryKey;column:s_id;type:bigint(20) unsigned;not null;comment:ID"`
Title string `json:"title" gorm:"column:s_title;type:varchar(255);not null;comment:题目"`
State int `json:"state" gorm:"column:s_state;type:tinyint(1) unsigned;default:1;not null;comment:是否启用(1:启用;2:禁用;3:删除)"`
Examination int64 `json:"examination" gorm:"column:s_examination;type:bigint(20) unsigned;default:0;not null;comment:'分厂"`
Sset int `json:"sset" gorm:"column:s_set;type:tinyint(1) unsigned;default:1;not null;comment:是否为共享(1:非共享;2:共享)"`
Time int64 `json:"time" gorm:"column:s_time;type:bigint(30) unsigned;default:0;not null;comment:创建时间"`
EiteTime int64 `json:"eiteTime" gorm:"column:s_eite_time;type:bigint(30) unsigned;default:0;not null;comment:修改时间"`
SystemUser int64 `json:"system_user" gorm:"column:s_system_user;type:bigint(50) unsigned;default:0;not null;comment:'创建人"`
Types int `json:"types" gorm:"column:s_type;type:tinyint(1) unsigned;default:0;not null;comment:类型(1:单选;2:多选;3:判断)"`
Work int64 `json:"work" gorm:"column:s_work;type:bigint(20) unsigned;default:0;not null;comment:'工段"`
Postiton int64 `json:"postiton" gorm:"column:s_postiton;type:bigint(20) unsigned;default:0;not null;comment:'职务"`
Weight int `json:"weight" gorm:"column:s_weight;type:tinyint(4) unsigned;default:0;not null;comment:权重"`
Keys int64 `json:"keys" gorm:"column:s_key;type:bigint(20) unsigned;default:0;not null;comment:'唯一识别符"`
TitleText string `json:"titleText" gorm:"column:s_text;type:text;comment:题目解释"`
ShareNumber int64 `json:"share_number" gorm:"column:s_share_number;type:bigint(50) unsigned;default:0;not null;comment:'共享识别符"`
SpaceNum int `json:"space_num" gorm:"column:s_space_num;type:tinyint(3) unsigned;default:0;not null;comment:空格"`
OneExam int64 `json:"one_exam" gorm:"column:s_one_exam;type:bigint(30) unsigned;default:0;not null;comment:'单一考试试题"`
Special int `json:"special" gorm:"column:s_special;type:tinyint(3) unsigned;default:0;not null;comment:专项考试(1:不是;2:是)"`
Groups int `json:"groups" gorm:"column:s_group;type:int(10) unsigned;default:0;not null;comment:归属集团"`
}
func (SystemMenu *Subject) TableName() string {
return "subject"
}
// // 菜单管理
// type SystemMenuOperation struct {
// Subject
// MenuPermit []MenuOperation `json:"menupermit"`
// }
// 编辑内容
func (cont *Subject) EiteCont(whereMap interface{}, saveData interface{}) (err error) {
err = overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Updates(saveData).Error
return
}
// 获取内容
func (cont *Subject) GetCont(whereMap interface{}, field ...string) (err error) {
gormDb := overall.CONSTANT_DB_KPI.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
gormDb = gormDb.Where(whereMap)
err = gormDb.First(&cont).Error
return
}
// 根据条件获取总数
func (cont *Subject) CountCont(whereMap interface{}) (countId int64) {
overall.CONSTANT_DB_KPI.Model(&cont).Where(whereMap).Count(&countId)
return
}
// 读取全部信息
func (cont *Subject) ContMap(whereMap interface{}, field ...string) (countAry []Subject, err error) {
gormDb := overall.CONSTANT_DB_KPI.Model(&cont)
if len(field) > 0 {
fieldStr := strings.Join(field, ",")
gormDb = gormDb.Select(fieldStr)
}
err = gormDb.Where(whereMap).Find(&countAry).Error
return
}
// 删除内容
func (cont *Subject) DelCont(whereMap interface{}) (err error) {
err = overall.CONSTANT_DB_KPI.Where(whereMap).Delete(&cont).Error
return
}

155
overall/publicmethod/sm4.go

@ -0,0 +1,155 @@
package publicmethod
import (
"appPlatform/overall"
"bytes"
"crypto/cipher"
"encoding/hex"
"fmt"
"strings"
"github.com/tjfoc/gmsm/sm4"
)
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 14:51:02
@ 功能: SM4加密
@ 参数
#data 要加密的字符
#key 附加选项
@ 返回值
#
@ 方法原型
#
*/
func SM4Encrypt(data string, key ...string) (string, error) {
SM4Key := overall.CONSTANT_CONFIG.Appsetup.AppKey
if len(key) > 0 {
SM4Key = strings.Join(key, "-")
}
SM4Key = processString(SM4Key, 16, "s")
//字符串转byte切片
plainText := []byte(data)
SM4Iv := "04TzMuvkHm_EZnHm"
iv := []byte(SM4Iv)
keySm4 := []byte(SM4Key)
//实例化sm4加密对象
block, err := sm4.NewCipher(keySm4)
fmt.Printf("block:%v=====>%v\n", err, string(keySm4))
if err != nil {
return "1", err
}
//明文数据填充
paddingData := paddingLastGroup(plainText, block.BlockSize())
//声明SM4的加密工作模式
blockMode := cipher.NewCBCEncrypter(block, iv)
//为填充后的数据进行加密处理
cipherText := make([]byte, len(paddingData))
//使用CryptBlocks这个核心方法,将paddingData进行加密处理,将加密处理后的值赋值到cipherText中
blockMode.CryptBlocks(cipherText, paddingData)
//加密结果使用hex转成字符串,方便外部调用
cipherString := hex.EncodeToString(cipherText)
return cipherString, nil
}
// 明文数据填充
func paddingLastGroup(plainText []byte, blockSize int) []byte {
//1.计算最后一个分组中明文后需要填充的字节数
padNum := blockSize - len(plainText)%blockSize
//2.将字节数转换为byte类型
char := []byte{byte(padNum)}
//3.创建切片并初始化
newPlain := bytes.Repeat(char, padNum)
//4.将填充数据追加到原始数据后
newText := append(plainText, newPlain...)
return newText
}
// 去掉明文后面的填充数据
func unPaddingLastGroup(plainText []byte) []byte {
//1.拿到切片中的最后一个字节
length := len(plainText)
lastChar := plainText[length-1]
//2.将最后一个数据转换为整数
number := int(lastChar)
return plainText[:length-number]
}
/*
*
@ 作者: 秦东
@ 时间: 2024-08-28 14:58:03
@ 功能: SM4解密
@ 参数
#
@ 返回值
#
@ 方法原型
#
*/
func SM4Decrypt(data string, key ...string) (string, error) {
SM4Key := overall.CONSTANT_CONFIG.Appsetup.AppKey
if len(key) > 0 {
SM4Key = strings.Join(key, "-")
}
SM4Key = processString(SM4Key, 16, "s")
SM4Iv := "04TzMuvkHm_EZnHm"
iv := []byte(SM4Iv)
keySm4 := []byte(SM4Key)
block, err := sm4.NewCipher(keySm4)
if err != nil {
return "", err
}
//使用hex解码
decodeString, err := hex.DecodeString(data)
if err != nil {
return "", err
}
//CBC模式 优点:具有较好的安全性,能够隐藏明文的模式和重复性。 缺点:加密过程是串行的,不适合并行处理。
blockMode := cipher.NewCBCDecrypter(block, iv)
//下文有详解这段代码的含义
blockMode.CryptBlocks(decodeString, decodeString)
//去掉明文后面的填充数据
plainText := unPaddingLastGroup(decodeString)
return string(plainText), nil
}
// 判断字符串长度,多余的删除,不足的补充
func processString(s string, length int, pad string) string {
// 如果字符串长度已经符合要求,直接返回
if len(s) == length {
return s
}
// 如果字符串长度超过了要求,截取指定长度的部分
if len(s) > length {
return s[:length]
}
// 如果字符串长度不足,使用pad字符串进行补充
return s + padString(pad, length-len(s))
}
// 根据需要补充的字符和次数,生成补充字符串
func padString(pad string, times int) string {
var result string
for i := 0; i < times; i++ {
result += pad
}
return result
}
Loading…
Cancel
Save