diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ca72ab1 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "MarsCode.marscode-extension" + ] +} \ No newline at end of file diff --git a/api/personalityTest/rongXin/controller.go b/api/personalityTest/rongXin/controller.go index c2bdbf9..0889ce8 100644 --- a/api/personalityTest/rongXin/controller.go +++ b/api/personalityTest/rongXin/controller.go @@ -2,8 +2,14 @@ package rongxin import ( "appPlatform/models/modelshr" + personalitycolor "appPlatform/models/personalityColor" + "appPlatform/overall" "appPlatform/overall/publicmethod" "encoding/json" + "errors" + "strconv" + "strings" + "time" "github.com/gin-gonic/gin" ) @@ -29,7 +35,7 @@ func (a *ApiMethod) Login(c *gin.Context) { var requestData PersonalityTestIn err := c.ShouldBindJSON(&requestData) if err != nil { - publicmethod.Result(100, err, c) + publicmethod.Result(100, requestData, c) return } if requestData.Number == "" { @@ -40,12 +46,13 @@ func (a *ApiMethod) Login(c *gin.Context) { publicmethod.Result(1, err, c, "请输入姓名!") return } - if requestData.Post == "" { - 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`") + err = overall.CONSTANT_DB_HrInside.Model(&userCont).Select("`id`,`name`,`key`").Where("`number` = ?", requestData.Number).First(&userCont).Error + // err = userCont.GetCont(map[string]interface{}{"`number`": requestData.Number}, "`id`", "`name`", "`key`") if err != nil || userCont.Id == 0 { publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!") return @@ -93,7 +100,7 @@ func (a *ApiMethod) LoginExternal(c *gin.Context) { publicmethod.Result(1, err, c, "请输入联系电话!") return } - if requestData.Name == "" { + if requestData.MyName == "" { publicmethod.Result(1, err, c, "请输入姓名!") return } @@ -104,15 +111,1089 @@ func (a *ApiMethod) LoginExternal(c *gin.Context) { jsonStr, err := json.Marshal(requestData) if err != nil { - publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!") + publicmethod.Result(1, err, c, "对不起,请检查输入是否正确!") return } jiaMi, err := publicmethod.SM4Encrypt(string(jsonStr)) if err != nil { - publicmethod.Result(1, err, c, "对不起,数据库没有此工号的相关数据!请检查输入是否正确!") + publicmethod.Result(1, err, c, "对不起,请检查输入是否正确!") return } sendInfo := publicmethod.MapOut[string]() sendInfo["sign"] = jiaMi publicmethod.Result(0, sendInfo, c) } + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-29 11:08:43 +@ 功能: 退出 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) LoginOut(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + jiaMi, _ := publicmethod.SM4Decrypt(signCode) + var singOut OutLogin + json.Unmarshal(jiaMi, &singOut) + publicmethod.Result(0, singOut, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-29 16:36:59 +@ 功能: 获取提交测试答案 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) SubmitDataRongXin(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" && myCont.Tel == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number != "" { + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`number`": myCont.Number}, "`id`") + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + var colorInfo personalitycolor.Charcolortest + colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": 10000002}, "`c_id`") + if colorInfo.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + if myCont.Tel != "" { + var colorInfoWai personalitycolor.Charcolortest + colorInfoWai.GetCont(map[string]interface{}{"`c_tel`": myCont.Tel, "`c_class`": 10000002}, "`c_id`") + if colorInfoWai.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + var requestData JieShouDaan + c.ShouldBindJSON(&requestData) + if len(requestData.List) < 1 { + publicmethod.Result(1, requestData, c, "您未填写任何题目!不可提交") + return + } + isTrue := true + for _, v := range requestData.List { + if v.Pick == "" { + isTrue = false + break + } + } + if !isTrue { + publicmethod.Result(1, err, c, "您还有未填写的题目!不可提交") + return + } + creetTime := time.Now().Unix() + var colorContent personalitycolor.Charcolortest + + colorContent.Class = 10000002 //测试试卷类型"` + if myCont.Tel != "" { + colorContent.Types = 2 //1:内部测试;2:外部测试` + } else { + colorContent.Types = 1 //1:内部测试;2:外部测试` + } + + colorContent.Number = myCont.Number //工号"` + colorContent.Name = myCont.Name //姓名"` + colorContent.Department = myCont.Post //部门"` + colorContent.Tel = myCont.Tel //联系电话"` + colorContent.Address = myCont.Address //联系地址"` + if myCont.Number != "" { + colorContent.UserJson = UserContInfo(myCont) //内部员工详细信息"` + } + testPageJson, _ := json.Marshal(requestData) + colorContent.TestJson = string(testPageJson) //试卷答案"` + colorContent.Time = creetTime //写入时间"` + colorContent.EiteTime = creetTime //编辑时间"` + colorContent.State = 1 //状态(1:有效;2:无效)` + colorContent.BranchName = myCont.Post //部门"` + err = overall.CONSTANT_DB_Color.Create(&colorContent).Error + if err != nil { + publicmethod.Result(104, err, c) + return + } + publicmethod.Result(0, err, c) +} + +// 员工内部消息 +func UserContInfo(myCont OutLogin) string { + var userInfo modelshr.PersonArchives + userInfo.GetCont(map[string]interface{}{"`number`": myCont.Number}) + var usColor UserColorInfo + usColor.Numbers = userInfo.Number // `json:"sort"` //300274, + usColor.Name = userInfo.Name // `json:"name"` //郗传文, + usColor.Group = strconv.FormatInt(userInfo.Company, 10) // `json:"group"` //3, + if userInfo.MainDeparment != 0 { + var fc modelshr.AdministrativeOrganization + fc.GetCont(map[string]interface{}{"`id`": userInfo.MainDeparment}, "`name`") + usColor.Fenchang = fc.Name // `json:"fenchang"` //, + } + if userInfo.AdminOrg != 0 { + var gd modelshr.AdministrativeOrganization + gd.GetCont(map[string]interface{}{"`id`": userInfo.AdminOrg}, "`name`") + usColor.Gongduan = gd.Name // `json:"fenchang"` //, + } + if userInfo.Position != 0 { + var gd modelshr.Position + gd.GetCont(map[string]interface{}{"`id`": userInfo.Position}, "`name`") + usColor.Zhiwu = gd.Name // `json:"fenchang"` //, + } + usColor.Banzu = publicmethod.TeamidName(userInfo.TeamId) // `json:"banzu"` //甲班, + usColor.Watchekey = userInfo.Wechat // `json:"watchekey"` //TianJingYunSheng, + if userInfo.WorkWechat != "" { + usColor.Watchekey = userInfo.WorkWechat + } + usColor.Iconurl = userInfo.Icon // `json:"iconurl"` //http = // `` + usColor.Iconsmailurl = userInfo.IconPhoto // `json:"iconsmailurl"` //http = // `` + usColor.Workbranch = "" // `json:"workbranch"` // + usColor.Gangwei = myCont.Post + userJson, _ := json.Marshal(usColor) + return string(userJson) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-30 09:46:11 +@ 功能: 判断是否已经提交过试卷 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) DoesItExist(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" && myCont.Tel == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number != "" { + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`number`": myCont.Number}, "`id`") + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + var colorInfo personalitycolor.Charcolortest + colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": 10000002}, "`c_id`") + if colorInfo.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + if myCont.Tel != "" { + var colorInfoWai personalitycolor.Charcolortest + colorInfoWai.GetCont(map[string]interface{}{"`c_tel`": myCont.Tel, "`c_class`": 10000002}, "`c_id`") + if colorInfoWai.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + publicmethod.Result(0, err, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-30 11:32:26 +@ 功能: 计算三次雷达图数 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) GetUserDISCTest(c *gin.Context) { + var requestData publicmethod.PublicId + err := c.ShouldBindJSON(&requestData) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if requestData.Id == "" { + publicmethod.Result(1, err, c, "未知信息!请检查是否已经登录!") + return + } + var myCont modelshr.PersonArchives + err = myCont.GetCont(map[string]interface{}{"`number`": requestData.Id}, "`id`", "`name`", "`key`") + if err != nil { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + var colorInfo personalitycolor.Charcolortest + err = colorInfo.GetCont(map[string]interface{}{"`c_number`": requestData.Id, "`c_class`": 10000002}, "`c_test_json`") + if err != nil { + err = colorInfo.GetCont(map[string]interface{}{"`c_tel`": requestData.Id, "`c_class`": 10000002}, "`c_test_json`") + if err != nil { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + } + if colorInfo.TestJson == "" { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + var testPage JieShouDaan + err = json.Unmarshal([]byte(colorInfo.TestJson), &testPage) + if err != nil { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + d := 0 + i := 0 + s := 0 + cVal := 0 + for _, v := range testPage.List { + switch v.Pick { + case "D": + d++ + case "I": + i++ + case "S": + s++ + case "C": + cVal++ + default: + } + } + // fmt.Printf("d:%v\ni:%v\ns:%v\nc:%v\n", d, i, s, cVal) + disc := []string{"支配型", "影响型", "稳定型", "服从型"} + discVal := []int{d, i, s, cVal} + maxVal := 0 + for _, mv := range discVal { + if maxVal <= mv { + maxVal = mv + } + } + var cesiJieguo []string + if d == maxVal { + cesiJieguo = append(cesiJieguo, "D") + } + if i == maxVal { + cesiJieguo = append(cesiJieguo, "I") + } + if s == maxVal { + cesiJieguo = append(cesiJieguo, "S") + } + if cVal == maxVal { + cesiJieguo = append(cesiJieguo, "C") + } + indMAx := maxVal + 5 + var indAry []Indicator + var dInd Indicator + dInd.Text = "支配型" + dInd.Max = indMAx + indAry = append(indAry, dInd) + var iInd Indicator + iInd.Text = "影响型" + iInd.Max = indMAx + indAry = append(indAry, iInd) + var sInd Indicator + sInd.Text = "稳定型" + sInd.Max = indMAx + indAry = append(indAry, sInd) + var cInd Indicator + cInd.Text = "服从型" + cInd.Max = indMAx + indAry = append(indAry, cInd) + + saveInfo := publicmethod.MapOut[string]() + saveInfo["CharacterColour"] = strings.Join(cesiJieguo, "、") //工作履历 + saveInfo["ColourNameList"] = cesiJieguo //工作履历 + saveInfo["RadarColour"] = discVal + saveInfo["colourTitle"] = disc + saveInfo["indicator"] = indAry + publicmethod.Result(0, saveInfo, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-30 11:32:26 +@ 功能: 计算三次雷达图数 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) GetUserDISCTestSign(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" && myCont.Tel == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var colorInfo personalitycolor.Charcolortest + if myCont.Number != "" { + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`number`": myCont.Number}, "`id`") + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + + err = colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": 10000002}, "`c_id`", "`c_test_json`") + if err != nil { + publicmethod.Result(0, err, c, "没有您的信息!") + return + } + } + if myCont.Tel != "" { + err = colorInfo.GetCont(map[string]interface{}{"`c_tel`": myCont.Tel, "`c_class`": 10000002}, "`c_id`", "`c_test_json`") + if err != nil { + publicmethod.Result(0, err, c, "没有您的信息!!") + return + } + } + + if colorInfo.TestJson == "" { + publicmethod.Result(0, err, c, "您没有进行性格测试!") + return + } + var testPage JieShouDaan + err = json.Unmarshal([]byte(colorInfo.TestJson), &testPage) + if err != nil { + publicmethod.Result(0, err, c, "您没有进行性格测试!") + return + } + d := 0 + i := 0 + s := 0 + cVal := 0 + for _, v := range testPage.List { + switch v.Pick { + case "D": + d++ + case "I": + i++ + case "S": + s++ + case "C": + cVal++ + default: + } + } + // fmt.Printf("d:%v\ni:%v\ns:%v\nc:%v\n", d, i, s, cVal) + disc := []string{"支配型", "影响型", "稳定型", "服从型"} + discVal := []int{d, i, s, cVal} + maxVal := 0 + for _, mv := range discVal { + if maxVal <= mv { + maxVal = mv + } + } + var cesiJieguo []string + if d == maxVal { + cesiJieguo = append(cesiJieguo, "D") + } + if i == maxVal { + cesiJieguo = append(cesiJieguo, "I") + } + if s == maxVal { + cesiJieguo = append(cesiJieguo, "S") + } + if cVal == maxVal { + cesiJieguo = append(cesiJieguo, "C") + } + indMAx := maxVal + 5 + var indAry []Indicator + var dInd Indicator + dInd.Text = "支配型" + dInd.Max = indMAx + indAry = append(indAry, dInd) + var iInd Indicator + iInd.Text = "影响型" + iInd.Max = indMAx + indAry = append(indAry, iInd) + var sInd Indicator + sInd.Text = "稳定型" + sInd.Max = indMAx + indAry = append(indAry, sInd) + var cInd Indicator + cInd.Text = "服从型" + cInd.Max = indMAx + indAry = append(indAry, cInd) + + saveInfo := publicmethod.MapOut[string]() + saveInfo["CharacterColour"] = strings.Join(cesiJieguo, "、") //工作履历 + saveInfo["ColourNameList"] = cesiJieguo //工作履历 + saveInfo["RadarColour"] = discVal + saveInfo["colourTitle"] = disc + saveInfo["indicator"] = indAry + publicmethod.Result(0, saveInfo, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-10 16:29:40 +@ 功能: 获取人物基础信息 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) GetManTest(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var userCont modelshr.PersonArchives + err = overall.CONSTANT_DB_HrInside.Model(&userCont).Where("`number` = ?", myCont.Number).First(&userCont).Error + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + sendData := publicmethod.MapOut[string]() + sendData["number"] = userCont.Number + sendData["name"] = userCont.Name + sendData["icon"] = userCont.IconPhoto + if userCont.Icon != "" { + sendData["icon"] = userCont.Icon + } + sendData["org"] = "" + var fatherOrg publicmethod.GetOrgAllParent + fatherOrg.GetOrgAllFatherId(userCont.AdminOrg, 4) + var orgName []string + orgIdLen := len(fatherOrg.Id) + if orgIdLen > 0 { + for i := orgIdLen - 1; i >= 0; i-- { + if fatherOrg.Id[i] != 0 { + var orgInfo modelshr.AdministrativeOrganization + orgInfo.GetCont(map[string]interface{}{"`id`": fatherOrg.Id[i]}, "`name`") + if orgInfo.Name != "" { + orgName = append(orgName, orgInfo.Name) + } + } + } + } + // for _, v := range fatherOrg.Id { + // if v != 0 { + // var orgInfo modelshr.AdministrativeOrganization + // orgInfo.GetCont(map[string]interface{}{"`id`": v}, "`name`") + // if orgInfo.Name != "" { + // orgName = append(orgName, orgInfo.Name) + // } + // } + // } + if len(orgName) > 0 { + sendData["org"] = strings.Join(orgName, "/") + } + sendData["testPage"] = 1 + var colorInfo personalitycolor.Charcolortest + err = colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": 10000003}, "`c_id`", "`c_test_json`") + if err == nil && colorInfo.Id != 0 { + sendData["testPage"] = 2 + } + publicmethod.Result(0, sendData, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-11 13:35:52 +@ 功能: 提交性格答案 +*/ +func (a *ApiMethod) SubmitTestPageAnswer(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" && myCont.Tel == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var requestData JieShouDaaning + c.ShouldBindJSON(&requestData) + if myCont.Number != "" { + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`number`": myCont.Number}, "`id`") + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + var colorInfo personalitycolor.Charcolortest + colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": requestData.Code}, "`c_id`") + if colorInfo.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + if myCont.Tel != "" { + var colorInfoWai personalitycolor.Charcolortest + colorInfoWai.GetCont(map[string]interface{}{"`c_tel`": myCont.Tel, "`c_class`": requestData.Code}, "`c_id`") + if colorInfoWai.Id != 0 { + publicmethod.Result(200, err, c, "您已经参加过此类测试!请不要重复测试!") + return + } + } + + if len(requestData.List) < 1 { + publicmethod.Result(1, requestData, c, "您未填写任何题目!不可提交") + return + } + isTrue := true + for _, v := range requestData.List { + if v.Pick { + isTrue = false + break + } + } + if !isTrue { + publicmethod.Result(1, err, c, "您还有未填写的题目!不可提交") + return + } + creetTime := time.Now().Unix() + var colorContent personalitycolor.Charcolortest + + colorContent.Class = requestData.Code //测试试卷类型"` + if myCont.Tel != "" { + colorContent.Types = 2 //1:内部测试;2:外部测试` + } else { + colorContent.Types = 1 //1:内部测试;2:外部测试` + } + + colorContent.Number = myCont.Number //工号"` + colorContent.Name = myCont.Name //姓名"` + colorContent.Department = myCont.Post //部门"` + colorContent.Tel = myCont.Tel //联系电话"` + colorContent.Address = myCont.Address //联系地址"` + if myCont.Number != "" { + colorContent.UserJson = UserContInfo(myCont) //内部员工详细信息"` + } + testPageJson, _ := json.Marshal(requestData) + colorContent.TestJson = string(testPageJson) //试卷答案"` + colorContent.Time = creetTime //写入时间"` + colorContent.EiteTime = creetTime //编辑时间"` + colorContent.State = 1 //状态(1:有效;2:无效)` + colorContent.BranchName = myCont.Post //部门"` + err = overall.CONSTANT_DB_Color.Create(&colorContent).Error + if err != nil { + publicmethod.Result(104, err, c) + return + } + publicmethod.Result(0, err, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-11 13:44:57 +@ 功能: 九型人格测试结果 +*/ +func (a *ApiMethod) NineResult(c *gin.Context) { + signCode := c.Request.Header.Get("sign") + err := errors.New("您的身份令牌已经失效!请重新登录!") + if signCode == "" { + publicmethod.Result(7, err, c) + return + } + jiaMi, err := publicmethod.SM4Decrypt(signCode) + if err != nil { + publicmethod.Result(300, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var myCont OutLogin + err = json.Unmarshal(jiaMi, &myCont) + if err != nil { + publicmethod.Result(301, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + if myCont.Number == "" && myCont.Tel == "" { + publicmethod.Result(302, err, c, "您的身份令牌已经失效!请重新登录!") + return + } + var requestData publicmethod.PublicId + c.ShouldBindJSON(&requestData) + if requestData.Id == "" { + requestData.Id = "10000003" + } + var colorInfo personalitycolor.Charcolortest + if myCont.Number != "" { + var userCont modelshr.PersonArchives + err = userCont.GetCont(map[string]interface{}{"`number`": myCont.Number}, "`id`") + if err != nil { + publicmethod.Result(1, err, c, "您不是本公司员工!不可用员工渠道提交数据!") + return + } + + err = colorInfo.GetCont(map[string]interface{}{"`c_number`": myCont.Number, "`c_class`": requestData.Id}, "`c_id`", "`c_test_json`") + if err != nil { + publicmethod.Result(0, err, c, "没有您的信息!") + return + } + } + if myCont.Tel != "" { + err = colorInfo.GetCont(map[string]interface{}{"`c_tel`": myCont.Tel, "`c_class`": requestData.Id}, "`c_id`", "`c_test_json`") + if err != nil { + publicmethod.Result(0, err, c, "没有您的信息!!") + return + } + } + + if colorInfo.TestJson == "" { + publicmethod.Result(0, err, c, "您没有进行性格测试!1") + return + } + var testPage JieShouDaaning + err = json.Unmarshal([]byte(colorInfo.TestJson), &testPage) + if err != nil { + publicmethod.Result(0, err, c, "您没有进行性格测试!2") + return + } + PL := 0 + RI := 0 + CO := 0 + SH := 0 + ME := 0 + TW := 0 + IM := 0 + CF := 0 + SP := 0 + DR := 0 + for _, v := range testPage.List { + + for _, av := range v.Answer { + // fmt.Printf("PL:%v\n", av.Attribute) + switch av.Attribute { + case "PL": + // fmt.Printf("PL:%v\n", av.Value) + PL = PL + av.Value + case "RI": + RI = RI + av.Value + case "CO": + CO = CO + av.Value + case "SH": + SH = SH + av.Value + case "ME": + ME = ME + av.Value + case "TW": + TW = TW + av.Value + case "IM": + IM = IM + av.Value + case "CF": + CF = CF + av.Value + case "SP": + SP = SP + av.Value + case "DR": + DR = DR + av.Value + default: + } + } + } + colourTitle := []string{"PL", "RI", "CO", "SH", "ME", "TW", "IM", "CF", "SP", "DR"} + RadarColour := []int{PL, RI, CO, SH, ME, TW, IM, CF, SP, DR} + maxAryVal := 0 + for _, v := range RadarColour { + if maxAryVal <= v { + maxAryVal = v + } + } + var pickTest []string + + var indAry []Indicator + var dIndPL Indicator + dIndPL.Text = "PL(创新智多星)" + dIndPL.Max = PL + 5 + // dIndPL.Max = 20 + if maxAryVal == PL { + pickTest = append(pickTest, "PL") + } + indAry = append(indAry, dIndPL) + var dIndRI Indicator + dIndRI.Text = "RI(资源调查员)" + dIndRI.Max = RI + 5 + // dIndRI.Max = 20 + if maxAryVal == RI { + pickTest = append(pickTest, "RI") + } + indAry = append(indAry, dIndRI) + var dIndCO Indicator + dIndCO.Text = "CO(协调者)" + dIndCO.Max = CO + 5 + // dIndCO.Max = 20 + if maxAryVal == CO { + pickTest = append(pickTest, "CO") + } + indAry = append(indAry, dIndCO) + var dIndSH Indicator + dIndSH.Text = "SH(鞭策者)" + dIndSH.Max = SH + 5 + // dIndSH.Max = 20 + if maxAryVal == SH { + pickTest = append(pickTest, "SH") + } + indAry = append(indAry, dIndSH) + var dIndME Indicator + dIndME.Text = "ME(监督评论员)" + dIndME.Max = ME + 5 + // dIndME.Max = 20 + if maxAryVal == ME { + pickTest = append(pickTest, "ME") + } + indAry = append(indAry, dIndME) + var dIndTW Indicator + dIndTW.Text = "TW(凝聚者))" + dIndTW.Max = TW + 5 + // dIndTW.Max = 20 + if maxAryVal == TW { + pickTest = append(pickTest, "TW") + } + indAry = append(indAry, dIndTW) + var dIndIM Indicator + dIndIM.Text = "IM(实干家)" + dIndIM.Max = IM + 5 + // dIndIM.Max = 20 + if maxAryVal == IM { + pickTest = append(pickTest, "IM") + } + indAry = append(indAry, dIndIM) + var dIndCF Indicator + dIndCF.Text = "CF(善始善终者)" + dIndCF.Max = CF + 5 + // dIndCF.Max = 20 + if maxAryVal == CF { + pickTest = append(pickTest, "CF") + } + indAry = append(indAry, dIndCF) + var dIndSP Indicator + dIndSP.Text = "SP(专家)" + dIndSP.Max = SP + 5 + // dIndSP.Max = 20 + if maxAryVal == SP { + pickTest = append(pickTest, "SP") + } + indAry = append(indAry, dIndSP) + var dIndDR Indicator + dIndDR.Text = "DR" + dIndDR.Max = DR + 5 + // dIndDR.Max = 20 + if maxAryVal == DR { + pickTest = append(pickTest, "DR") + } + indAry = append(indAry, dIndDR) + + saveInfo := publicmethod.MapOut[string]() + saveInfo["CharacterColour"] = strings.Join(pickTest, "、") //工作履历 + saveInfo["ColourNameList"] = pickTest //工作履历 + saveInfo["RadarColour"] = RadarColour + saveInfo["colourTitle"] = colourTitle + saveInfo["indicator"] = indAry + publicmethod.Result(0, saveInfo, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-12 16:37:46 +@ 功能: +*/ +func (a *ApiMethod) NineResultToken(c *gin.Context) { + var requestData publicmethod.PublicId + err := c.ShouldBindJSON(&requestData) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if requestData.Id == "" { + publicmethod.Result(1, err, c, "未知信息!请检查是否已经登录!") + return + } + var myCont modelshr.PersonArchives + err = myCont.GetCont(map[string]interface{}{"`number`": requestData.Id}, "`id`", "`name`", "`key`") + if err != nil { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + var colorInfo personalitycolor.Charcolortest + err = colorInfo.GetCont(map[string]interface{}{"`c_number`": requestData.Id, "`c_class`": 10000003}, "`c_test_json`") + if err != nil { + err = colorInfo.GetCont(map[string]interface{}{"`c_tel`": requestData.Id, "`c_class`": 10000003}, "`c_test_json`") + if err != nil { + publicmethod.Result(200, err, c, "您没有进行性格测试!") + return + } + } + + if colorInfo.TestJson == "" { + publicmethod.Result(0, err, c, "您没有进行性格测试!1") + return + } + var testPage JieShouDaaning + err = json.Unmarshal([]byte(colorInfo.TestJson), &testPage) + if err != nil { + publicmethod.Result(0, err, c, "您没有进行性格测试!2") + return + } + PL := 0 + RI := 0 + CO := 0 + SH := 0 + ME := 0 + TW := 0 + IM := 0 + CF := 0 + SP := 0 + DR := 0 + for _, v := range testPage.List { + + for _, av := range v.Answer { + // fmt.Printf("PL:%v\n", av.Attribute) + switch av.Attribute { + case "PL": + // fmt.Printf("PL:%v\n", av.Value) + PL = PL + av.Value + case "RI": + RI = RI + av.Value + case "CO": + CO = CO + av.Value + case "SH": + SH = SH + av.Value + case "ME": + ME = ME + av.Value + case "TW": + TW = TW + av.Value + case "IM": + IM = IM + av.Value + case "CF": + CF = CF + av.Value + case "SP": + SP = SP + av.Value + case "DR": + DR = DR + av.Value + default: + } + } + } + colourTitle := []string{"PL", "RI", "CO", "SH", "ME", "TW", "IM", "CF", "SP", "DR"} + RadarColour := []int{PL, RI, CO, SH, ME, TW, IM, CF, SP, DR} + maxAryVal := 0 + for _, v := range RadarColour { + if maxAryVal <= v { + maxAryVal = v + } + } + var pickTest []string + + var indAry []Indicator + var dIndPL Indicator + dIndPL.Text = "PL(创新智多星)" + dIndPL.Max = PL + 5 + // dIndPL.Max = 20 + if maxAryVal == PL { + pickTest = append(pickTest, "PL") + } + indAry = append(indAry, dIndPL) + var dIndRI Indicator + dIndRI.Text = "RI(资源调查员)" + dIndRI.Max = RI + 5 + // dIndRI.Max = 20 + if maxAryVal == RI { + pickTest = append(pickTest, "RI") + } + indAry = append(indAry, dIndRI) + var dIndCO Indicator + dIndCO.Text = "CO(协调者)" + dIndCO.Max = CO + 5 + // dIndCO.Max = 20 + if maxAryVal == CO { + pickTest = append(pickTest, "CO") + } + indAry = append(indAry, dIndCO) + var dIndSH Indicator + dIndSH.Text = "SH(鞭策者)" + dIndSH.Max = SH + 5 + // dIndSH.Max = 20 + if maxAryVal == SH { + pickTest = append(pickTest, "SH") + } + indAry = append(indAry, dIndSH) + var dIndME Indicator + dIndME.Text = "ME(监督评论员)" + dIndME.Max = ME + 5 + // dIndME.Max = 20 + if maxAryVal == ME { + pickTest = append(pickTest, "ME") + } + indAry = append(indAry, dIndME) + var dIndTW Indicator + dIndTW.Text = "TW(凝聚者))" + dIndTW.Max = TW + 5 + // dIndTW.Max = 20 + if maxAryVal == TW { + pickTest = append(pickTest, "TW") + } + indAry = append(indAry, dIndTW) + var dIndIM Indicator + dIndIM.Text = "IM(实干家)" + dIndIM.Max = IM + 5 + // dIndIM.Max = 20 + if maxAryVal == IM { + pickTest = append(pickTest, "IM") + } + indAry = append(indAry, dIndIM) + var dIndCF Indicator + dIndCF.Text = "CF(善始善终者)" + dIndCF.Max = CF + 5 + // dIndCF.Max = 20 + if maxAryVal == CF { + pickTest = append(pickTest, "CF") + } + indAry = append(indAry, dIndCF) + var dIndSP Indicator + dIndSP.Text = "SP(专家)" + dIndSP.Max = SP + 5 + // dIndSP.Max = 20 + if maxAryVal == SP { + pickTest = append(pickTest, "SP") + } + indAry = append(indAry, dIndSP) + var dIndDR Indicator + dIndDR.Text = "DR" + dIndDR.Max = DR + 5 + // dIndDR.Max = 20 + if maxAryVal == DR { + pickTest = append(pickTest, "DR") + } + indAry = append(indAry, dIndDR) + + saveInfo := publicmethod.MapOut[string]() + saveInfo["CharacterColour"] = strings.Join(pickTest, "、") //工作履历 + saveInfo["ColourNameList"] = pickTest //工作履历 + saveInfo["RadarColour"] = RadarColour + saveInfo["colourTitle"] = colourTitle + saveInfo["indicator"] = indAry + publicmethod.Result(0, saveInfo, c) +} diff --git a/api/personalityTest/rongXin/downLoad.go b/api/personalityTest/rongXin/downLoad.go new file mode 100644 index 0000000..2f8ae93 --- /dev/null +++ b/api/personalityTest/rongXin/downLoad.go @@ -0,0 +1,442 @@ +package rongxin + +import ( + "appPlatform/models/modelshr" + personalitycolor "appPlatform/models/personalityColor" + "appPlatform/overall" + "appPlatform/overall/publicmethod" + "encoding/csv" + "encoding/json" + "fmt" + "net/url" + "sort" + "strconv" + "strings" + + "github.com/gin-gonic/gin" +) + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-13 08:55:14 +@ 功能:下载九型人格测试结果 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) DownLoadNineTestPage(c *gin.Context) { + + keywords := c.Query("keywords") + adminorg := c.Query("adminorg") + emptype := c.Query("emptype") + + var peopleList []modelshr.PersonArchives + goormDb := overall.CONSTANT_DB_HrInside.Model(&modelshr.PersonArchives{}).Select("`number`,`name`,`admin_org`").Where("`emp_type` BETWEEN 1 AND 10") + + if keywords != "undefined" && keywords != "" { + goormDb = goormDb.Where("`name` LIKE ?", "%"+keywords+"%") + } + if adminorg != "undefined" && adminorg != "" { + adminorgInt, _ := strconv.ParseInt(adminorg, 10, 64) + var sunOrg publicmethod.GetOrgAllParent + sunOrg.GetOrgSun(adminorgInt) + sunOrg.Id = append(sunOrg.Id, adminorgInt) + if len(sunOrg.Id) > 0 { + goormDb = goormDb.Where("`admin_org` IN ?", sunOrg.Id) + } + } + var empInt []int + json.Unmarshal([]byte(emptype), &empInt) + if len(empInt) > 0 { + goormDb = goormDb.Where("`emp_type` IN ?", empInt) + } + err := goormDb.Find(&peopleList).Error + if err != nil || len(peopleList) < 1 { + c.String(c.Writer.Status(), "没有查询到数据") + return + } + // fmt.Printf("%v-%v-%v-%v\n", keywords, adminorg, emptype, peopleList) + + testPageList := GetPeopleNineData(peopleList) + // fmt.Printf("testPageList->%v\n", testPageList) + var builder strings.Builder + builder.WriteString("\xEF\xBB\xBF") //写入UTF-8 BOM 防止乱码 + writer := csv.NewWriter(&builder) + writer.Write([]string{"团队角色盘点"}) + writer.Write([]string{"序号", "工号", "姓名", "行政组织", "第一角色", "第二角色", "第三角色", "第四角色"}) + + for i, v := range testPageList { + var scvBody []string + xuHao := strconv.Itoa(i + 1) + scvBody = append(scvBody, xuHao) + scvBody = append(scvBody, v...) + writer.Write(scvBody) + } + + writer.Flush() + fileName := fmt.Sprintf("团队角色盘点_%v.csv", publicmethod.GetUUid(1)) + c.Writer.Header().Add("Content-type", "application/octet-stream") + c.Header("Content-Type", "application/vnd.ms-excel;charset=utf8") + c.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName)) + // c.Header("Content-Disposition", "attachment; filename=团队角色盘点.csv") + c.Header("Content-Transfer-Encoding", "binary") + c.Writer.Write([]byte(builder.String())) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-13 10:30:19 +@ 功能: 获取人员九型性格数据 +*/ +func GetPeopleNineData(user []modelshr.PersonArchives) (list [][]string) { + if len(user) < 1 { + return + } + var numAry []string + for _, v := range user { + numAry = append(numAry, v.Number) + } + var xgAry []personalitycolor.Charcolortest + overall.CONSTANT_DB_Color.Model(&personalitycolor.Charcolortest{}).Where("`c_class` = ? AND `c_number` IN ?", 10000003, numAry).Find(&xgAry) + + for i := 0; i < len(xgAry); i++ { + + if xgAry[i].TestJson != "" { + var testPage JieShouDaaning + err := json.Unmarshal([]byte(xgAry[i].TestJson), &testPage) + if err == nil { + scoreForEachItem := CalculateScoresForEachItem(testPage) + sort.Slice(scoreForEachItem, func(i, j int) bool { + return scoreForEachItem[i].Value > scoreForEachItem[j].Value + }) + var itemList []string + number, name, org := GetUserName(xgAry[i].Number, user) + itemList = append(itemList, number) + itemList = append(itemList, name) + itemList = append(itemList, org) + for j := 0; j < 4; j++ { + itemList = append(itemList, scoreForEachItem[j].Attribute) + } + list = append(list, itemList) + } + } + } + + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-13 11:17:14 +@ 功能: 获取人员姓名 +*/ +func GetUserName(num string, user []modelshr.PersonArchives) (number, name, org string) { + for _, v := range user { + if v.Number == num { + number = num + name = v.Name + org = GetOrgInfo(v.AdminOrg) + return + } + } + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-14 10:31:36 +@ 功能: 获取行政组织 +*/ +func GetOrgInfo(orgId int64) string { + var fatherOrg publicmethod.GetOrgAllParent + fatherOrg.GetOrgAllFatherId(orgId, 4) + var orgName []string + orgIdLen := len(fatherOrg.Id) + if orgIdLen > 0 { + for i := orgIdLen - 1; i >= 0; i-- { + if fatherOrg.Id[i] != 0 { + var orgInfo modelshr.AdministrativeOrganization + orgInfo.GetCont(map[string]interface{}{"`id`": fatherOrg.Id[i]}, "`name`") + if orgInfo.Name != "" { + orgName = append(orgName, orgInfo.Name) + } + } + } + } + if len(orgName) > 0 { + return strings.Join(orgName, "/") + } + return "" +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-13 10:49:43 +@ 功能: 计算各项得分 +*/ +func CalculateScoresForEachItem(testPage JieShouDaaning) (ScoreForEachItem []Character) { + PL := 0 + RI := 0 + CO := 0 + SH := 0 + ME := 0 + TW := 0 + IM := 0 + CF := 0 + SP := 0 + DR := 0 + for _, v := range testPage.List { + + for _, av := range v.Answer { + // fmt.Printf("PL:%v\n", av.Attribute) + switch av.Attribute { + case "PL": + // fmt.Printf("PL:%v\n", av.Value) + PL = PL + av.Value + case "RI": + RI = RI + av.Value + case "CO": + CO = CO + av.Value + case "SH": + SH = SH + av.Value + case "ME": + ME = ME + av.Value + case "TW": + TW = TW + av.Value + case "IM": + IM = IM + av.Value + case "CF": + CF = CF + av.Value + case "SP": + SP = SP + av.Value + case "DR": + DR = DR + av.Value + default: + } + } + } + var itemScorePL Character + itemScorePL.Title = "PL" + itemScorePL.Attribute = "创新智多星" + itemScorePL.Value = PL + ScoreForEachItem = append(ScoreForEachItem, itemScorePL) + + var itemScoreRI Character + itemScoreRI.Title = "RI" + itemScoreRI.Attribute = "资源调查员" + itemScoreRI.Value = RI + ScoreForEachItem = append(ScoreForEachItem, itemScoreRI) + + var itemScoreCO Character + itemScoreCO.Title = "CO" + itemScoreCO.Attribute = "协调者" + itemScoreCO.Value = CO + ScoreForEachItem = append(ScoreForEachItem, itemScoreCO) + + var itemScoreSH Character + itemScoreSH.Title = "SH" + itemScoreSH.Attribute = "鞭策者" + itemScoreSH.Value = SH + ScoreForEachItem = append(ScoreForEachItem, itemScoreSH) + + var itemScoreME Character + itemScoreME.Title = "ME" + itemScoreME.Attribute = "监督评论员" + itemScoreME.Value = ME + ScoreForEachItem = append(ScoreForEachItem, itemScoreME) + + var itemScoreTW Character + itemScoreTW.Title = "TW" + itemScoreTW.Attribute = "凝聚者" + itemScoreTW.Value = TW + ScoreForEachItem = append(ScoreForEachItem, itemScoreTW) + + var itemScoreIM Character + itemScoreIM.Title = "IM" + itemScoreIM.Attribute = "实干家" + itemScoreIM.Value = IM + ScoreForEachItem = append(ScoreForEachItem, itemScoreIM) + + var itemScoreCF Character + itemScoreCF.Title = "CF" + itemScoreCF.Attribute = "善始善终者" + itemScoreCF.Value = CF + ScoreForEachItem = append(ScoreForEachItem, itemScoreCF) + + var itemScoreSP Character + itemScoreSP.Title = "SP" + itemScoreSP.Attribute = "专家" + itemScoreSP.Value = SP + ScoreForEachItem = append(ScoreForEachItem, itemScoreSP) + + var itemScoreDR Character + itemScoreDR.Title = "DR" + itemScoreDR.Attribute = "DR" + itemScoreDR.Value = DR + ScoreForEachItem = append(ScoreForEachItem, itemScoreDR) + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-19 14:17:00 +@ 功能: 下载人格测试状态 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) StatisticsPersonality(c *gin.Context) { + var requestData CharacterStatis + c.ShouldBindJSON(&requestData) + if requestData.Typekey == "" { + requestData.Typekey = "10000001" + } + + keywords := c.Query("keywords") + adminorg := c.Query("org") + typekey := c.Query("typekey") + types := c.Query("types") + + typesInt, _ := strconv.Atoi(types) + + var xgNumber []string + overall.CONSTANT_DB_Color.Model(&personalitycolor.Charcolortest{}).Distinct("`c_number`").Where("`c_class` = ?", typekey).Find(&xgNumber) + + var peopleList []modelshr.PersonArchives + goormDb := overall.CONSTANT_DB_HrInside.Model(&modelshr.PersonArchives{}).Select("`number`,`name`,`company`,`maindeparment`,`admin_org`").Where("`emp_type` BETWEEN 1 AND 10") + + if keywords != "undefined" && keywords != "" { + goormDb = goormDb.Where("`name` LIKE ? OR `number` LIKE ?", "%"+keywords+"%", "%"+keywords+"%") + } + if adminorg != "undefined" && adminorg != "0" && adminorg != "" { + adminorgInt, _ := strconv.ParseInt(adminorg, 10, 64) + var sunOrg publicmethod.GetOrgAllParent + sunOrg.GetOrgSun(adminorgInt) + sunOrg.Id = append(sunOrg.Id, adminorgInt) + if len(sunOrg.Id) > 0 { + goormDb = goormDb.Where("`admin_org` IN ?", sunOrg.Id) + } + } + err := goormDb.Find(&peopleList).Error + if err != nil || len(peopleList) < 1 { + c.String(c.Writer.Status(), "没有查询到数据") + return + } + // return + var builder strings.Builder + builder.WriteString("\xEF\xBB\xBF") //写入UTF-8 BOM 防止乱码 + writer := csv.NewWriter(&builder) + if typesInt == 2 { + writer.Write([]string{"已完成测试人员名单"}) + } else { + writer.Write([]string{"未完成测试人员名单"}) + } + + writer.Write([]string{"序号", "工号", "姓名", "行政组织"}) + jibuqi := 0 + for _, v := range peopleList { + if typesInt == 2 { + if publicmethod.IsInTrue[string](v.Number, xgNumber) { + var scvBody []string + jibuqi++ + xuHao := strconv.Itoa(jibuqi) + scvBody = append(scvBody, xuHao) + scvBody = append(scvBody, v.Number) + scvBody = append(scvBody, v.Name) + scvBody = append(scvBody, jisuanOrg(v.Company, v.MainDeparment, v.AdminOrg)) + writer.Write(scvBody) + } + } else { + if !publicmethod.IsInTrue[string](v.Number, xgNumber) { + var scvBody []string + jibuqi++ + xuHao := strconv.Itoa(jibuqi) + scvBody = append(scvBody, xuHao) + scvBody = append(scvBody, v.Number) + scvBody = append(scvBody, v.Name) + scvBody = append(scvBody, jisuanOrg(v.Company, v.MainDeparment, v.AdminOrg)) + writer.Write(scvBody) + } + } + + } + + writer.Flush() + fileName := fmt.Sprintf("未完成测试人员名单_%v.csv", publicmethod.GetUUid(1)) + if typesInt == 2 { + fileName = fmt.Sprintf("已完成测试人员名单_%v.csv", publicmethod.GetUUid(1)) + } + c.Writer.Header().Add("Content-type", "application/octet-stream") + c.Header("Content-Type", "application/vnd.ms-excel;charset=utf8") + c.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fileName)) + // c.Header("Content-Disposition", "attachment; filename=团队角色盘点.csv") + c.Header("Content-Transfer-Encoding", "binary") + c.Writer.Write([]byte(builder.String())) + + // for _, v := range peopleList { + + // } + + // org = GetOrgInfo(v.AdminOrg) + // publicmethod.Result(0, xgNumber, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-19 15:20:31 +@ 功能: 计算行政组织关系 +*/ +func jisuanOrg(company, deparment, org int64) string { + var orgList []string + if company != 0 { + var com modelshr.AdministrativeOrganization + // err := com.GetCont(map[string]interface{}{"`id`": company}, "`name`") + err := com.RedisCont(company) + if err == nil { + orgList = append(orgList, com.Name) + } + } + if deparment != 0 && deparment != company { + var depam modelshr.AdministrativeOrganization + // err := depam.GetCont(map[string]interface{}{"`id`": deparment}, "`name`") + err := depam.RedisCont(deparment) + if err == nil { + orgList = append(orgList, depam.Name) + } + } + if org != 0 && org != deparment && org != company { + var orgInfo modelshr.AdministrativeOrganization + // err := orgInfo.GetCont(map[string]interface{}{"`id`": org}, "`name`") + err := orgInfo.RedisCont(org) + if err == nil { + orgList = append(orgList, orgInfo.Name) + } + } + if len(orgList) > 0 { + return strings.Join(orgList, "/") + } + return "" +} diff --git a/api/personalityTest/rongXin/type.go b/api/personalityTest/rongXin/type.go index 81f720b..a814c04 100644 --- a/api/personalityTest/rongXin/type.go +++ b/api/personalityTest/rongXin/type.go @@ -24,6 +24,92 @@ type PersonalityTestIn struct { } type PersonalityTestOut struct { Tel string `json:"tel"` - Name string `json:"name"` + MyName string `json:"myName"` Address string `json:"address"` } + +// 退出登录 +type OutLogin struct { + PersonalityTestIn + PersonalityTestOut +} + +// 试题提交 +type RongXinTestPage struct { +} + +// 接收答案 +type JieShouDaan struct { + List []TestPageInfo `json:"list"` +} + +// 试题内容 +type TestPageInfo struct { + Problem string `json:"problem"` //题目 + Answer []AnswerInfo `json:"answer"` //答案项 + Pick string `json:"pick"` //题目 +} + +// 答案列表 +type AnswerInfo struct { + Sort int `json:"sort"` + Title string `json:"title"` + Attribute string `json:"attribute"` + Value int `json:"value"` +} + +// 性格色彩人员信息 +type UserColorInfo struct { + Numbers string `json:"sort"` //300274, + Name string `json:"name"` //郗传文, + Group string `json:"group"` //3, + Fenchang string `json:"fenchang"` //化产分厂, + Gongduan string `json:"gongduan"` //中控, + Zhiwu string `json:"zhiwu"` //值长, + Banzu string `json:"banzu"` //甲班, + Watchekey string `json:"watchekey"` //TianJingYunSheng, + Iconurl string `json:"iconurl"` //http string `` + Iconsmailurl string `json:"iconsmailurl"` //http string `` + Workbranch string `json:"workbranch"` // + Gangwei string `json:"gangwei"` //值长 +} + +type Indicator struct { + Text string `json:"text"` // + Max int `json:"max"` // +} + +// 接收答案 +type JieShouDaaning struct { + Code int64 `json:"code"` // + List []TestPageInfos `json:"list"` +} + +// 试题内容 +type TestPageInfos struct { + Problem string `json:"problem"` //题目 + Answer []AnswerInfo `json:"answer"` //答案项 + Pick bool `json:"pick"` //题目 +} + +// 搜索人员信息 +type SearchPeopleList struct { + KeyWords string `json:"keywords"` //题目 + AdminOrg int `json:"adminorg"` //题目 + EmpType []string `json:"emptype"` //题目 +} + +// 计算性格分数 +type Character struct { + Title string `json:"title"` + Attribute string `json:"attribute"` + Value int `json:"value"` +} + +// 下载性格统计参数 +type CharacterStatis struct { + Types int `json:"types"` + Org string `json:"org"` + Keywords string `json:"keywords"` + Typekey string `json:"typekey"` +} diff --git a/api/shiyan/maptostruct/shiyan.go b/api/shiyan/maptostruct/shiyan.go index e79038a..8c58cfc 100644 --- a/api/shiyan/maptostruct/shiyan.go +++ b/api/shiyan/maptostruct/shiyan.go @@ -766,10 +766,10 @@ func (a *ApiMethod) AppSm4(c *gin.Context) { sendInfo["jiaMi"] = jiaMi sendInfo["jiaMiErr"] = err jieMi, err := publicmethod.SM4Decrypt(jiaMi) - sendInfo["jieMi"] = jieMi + sendInfo["jieMi"] = string(jieMi) sendInfo["jieMiErr"] = err var jsonInfo PersonalityTestIn - json.Unmarshal([]byte(jieMi), &jsonInfo) + json.Unmarshal(jieMi, &jsonInfo) sendInfo["jsonInfo"] = jsonInfo publicmethod.Result(0, sendInfo, c) } diff --git a/api/version1/customerApp/appControll.go b/api/version1/customerApp/appControll.go index 7431f00..bc616ab 100644 --- a/api/version1/customerApp/appControll.go +++ b/api/version1/customerApp/appControll.go @@ -1127,7 +1127,7 @@ func (a *ApiMethod) EditAppPageInfo(c *gin.Context) { return } var customerFormCont modelAppPlatform.CustomerForm - err = customerFormCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "`tablename`", "`signCode`") + err = customerFormCont.GetCont(map[string]interface{}{"`id`": requestData.Id}, "`tablename`", "`signCode`", "`classify`", "`listjson`") if err != nil { publicmethod.Result(107, err, c) return @@ -1145,6 +1145,14 @@ func (a *ApiMethod) EditAppPageInfo(c *gin.Context) { } groupId, _ := strconv.ParseInt(formJsonCont.Config.GroupKey, 10, 64) mainData["`groupid`"] = groupId + if customerFormCont.Classify == 4 && customerFormCont.ListJson != "" { + + listjson, isTrue := ListFields(customerFormCont.ListJson, formJsonCont.List) + if isTrue { + mainData["`listjson`"] = listjson + } + // fmt.Printf("searchMap-->%v\n", searchMap) + } customerFormCont.EiteCont(map[string]interface{}{"`id`": requestData.Id}, mainData) versionData := publicmethod.MapOut[string]() versionData["`mastesform`"] = requestData.Data @@ -1163,6 +1171,93 @@ func (a *ApiMethod) EditAppPageInfo(c *gin.Context) { publicmethod.Result(0, err, c) } +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-14 08:33:50 +@ 功能: 处理列表字段名称变更 +*/ +func ListFields(list string, ComponentList []customerform.MasterStruct) (listString string, isTrue bool) { + if list == "" { + isTrue = false + return + } + var searchMap map[string]interface{} + json.Unmarshal([]byte(list), &searchMap) + if searchData, isOk := searchMap["searchData"]; isOk { + if searchDataAry, isOk := searchData.([]interface{}); isOk { + var fileAry []interface{} + + for _, v := range searchDataAry { + // WordToFile(v,ComponentList) + fileAry = append(fileAry, WordToFile(v, ComponentList)) + } + + searchMap["searchData"] = fileAry + } + } + if tableData, isOk := searchMap["tableData"]; isOk { + if tableMap, isOk := tableData.(map[string]interface{}); isOk { + tableMapInfo := publicmethod.MapOut[string]() + if columns, isOk := tableMap["columns"]; isOk { + fmt.Printf("搜索列表字段-1->%T-->%v\n", columns, columns) + if columnsAry, isOk := columns.([]interface{}); isOk { + var fileTableAry []interface{} + for _, v := range columnsAry { + fileTableAry = append(fileTableAry, WordToFile(v, ComponentList)) + } + tableMapInfo["columns"] = fileTableAry + } + } + if config, isOk := tableMap["config"]; isOk { + tableMapInfo["config"] = config + } + if controlBtn, isOk := tableMap["controlBtn"]; isOk { + tableMapInfo["controlBtn"] = controlBtn + } + if operateBtn, isOk := tableMap["operateBtn"]; isOk { + tableMapInfo["operateBtn"] = operateBtn + } + searchMap["tableData"] = tableMapInfo + } + } + fileAryJson, _ := json.Marshal(searchMap) + fmt.Printf("搜索列表字段-7->%T-->%v\n", fileAryJson, string(fileAryJson)) + listString = string(fileAryJson) + isTrue = true + return +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-14 08:46:39 +@ 功能: 字段比对 +*/ +func WordToFile(filedInfo interface{}, ComponentList []customerform.MasterStruct) interface{} { + // var fileName string + // filedMap := publicmethod.MapOut[string]() + if filedMap, isOk := filedInfo.(map[string]interface{}); isOk { + if fileNames, isok := filedMap["id"]; isok { + if fliedString, isOk := fileNames.(string); isOk { + // fileName = fliedString + + // fmt.Printf("搜索列表字段-4->%T-->%v\n", fileName, fileName) + for _, v := range ComponentList { + if v.Name == fliedString { + // fmt.Printf("搜索列表字段-5->%T-->%v\n", v.Item.Label, v.Item.Label) + filedMap["label"] = v.Item.Label + } + } + // fmt.Printf("搜索列表字段-6->%T-->%v\n", filedMap, filedMap) + return filedMap + + } + } + } + return filedInfo +} + /* * @ 作者: 秦东 diff --git a/api/version1/customerform/codeFormGroup.go b/api/version1/customerform/codeFormGroup.go index 0e25bca..4fe6a9a 100644 --- a/api/version1/customerform/codeFormGroup.go +++ b/api/version1/customerform/codeFormGroup.go @@ -166,6 +166,7 @@ func (a *ApiMethod) CustomerFormGroupList(c *gin.Context) { sort.Slice(groupList, func(i, j int) bool { return groupList[i].Sort < groupList[j].Sort }) + // publicmethod.Result(0, groupList, c) publicmethod.ResultList(0, requestData.Page, requestData.PageSize, total, int64(len(groupList)), groupList, c) } diff --git a/api/version1/customerform/formTable.go b/api/version1/customerform/formTable.go index 753a3be..8229ca1 100644 --- a/api/version1/customerform/formTable.go +++ b/api/version1/customerform/formTable.go @@ -1925,3 +1925,155 @@ func (a *ApiMethod) GainListTableField(c *gin.Context) { publicmethod.Result(0, sendTableList, c) } + +/* +* +@ 作者: 秦东 +@ 时间: 2024-09-13 14:18:47 +@ 功能: 根据版本Id获取相应的表单结构 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func (a *ApiMethod) GainTableVersionField(c *gin.Context) { + var requestData publicmethod.PublicId + err := c.ShouldBindJSON(&requestData) + if err != nil { + publicmethod.Result(100, err, c) + return + } + if requestData.Id == "" { + publicmethod.Result(1, err, c, "未知表单!无法获取字段!") + return + } + var version modelAppPlatform.CustomerFormVersion + version.GetCont(map[string]interface{}{"`id`": requestData.Id}) + sendTableList := publicmethod.MapOut[string]() + var tableMaster modelAppPlatform.CustomerForm + tableMaster.GetCont(map[string]interface{}{"`tablename`": version.TableKey}, "`name`") + sendTableList["masterTableName"] = tableMaster.Name + masterTable, _ := GainFormTableField(version.TableKey) + + if version.MastesFormJson != "" { + var unitCont map[string]interface{} + json.Unmarshal([]byte(version.MastesFormJson), &unitCont) + + var formFieldAry FormJsonFieldInfo + if list, ok := unitCont["list"]; ok { + + if listAry, ok := list.([]interface{}); ok { + formFieldAry.AnalyzingFormJson("", listAry) + } + } + + if len(formFieldAry.MasterInfo) > 0 { + sendTableList["masterTable"] = TableFieldCompareForm(masterTable, formFieldAry.MasterInfo) + } else { + sendTableList["masterTablesss"] = masterTable + } + } else { + sendTableList["masterTablesss"] = masterTable + } + if version.TableStructure != "" { + var sunTable map[string]interface{} + err = json.Unmarshal([]byte(version.TableStructure), &sunTable) + if err == nil { + sunTableMap := publicmethod.MapOut[string]() + for _, v := range sunTable { //遍历子表单名称 + if vStr, ok := v.(string); ok { + sunTableMap[vStr], err = GainFormTableField(vStr) + + } + } + sendTableList["sunTable"] = sunTableMap + } + } + publicmethod.Result(0, sendTableList, c) +} + +/* +* +@ 作者: 秦东 +@ 时间: 2024-03-25 09:01:12 +@ 功能: 表单数据对照 +@ 参数 + + # + +@ 返回值 + + # + +@ 方法原型 + + # +*/ +func TableFieldCompareForm(tableFieldList []Result, jsonFieldList []FormFieldInfo) (fieldList []Result) { + + tableFieldListsdf, _ := json.Marshal(tableFieldList) + jsonFieldListsdf, _ := json.Marshal(jsonFieldList) + fmt.Printf("\n======================1===============================\n") + fmt.Printf("tableFieldListsdf:%v\n", string(tableFieldListsdf)) + fmt.Printf("jsonFieldListsdf:%v\n", string(jsonFieldListsdf)) + fmt.Printf("\n======================1===============================\n") + + if len(tableFieldList) > 0 { + for _, v := range tableFieldList { + // if v.Field == "_lableTitle" { + + // fieldList = append(fieldList, v) + // } else { + + // } + switch v.Field { + case "_lableTitle": + fieldList = append(fieldList, v) + case "id": + fieldList = append(fieldList, v) + case "masters_key": + fieldList = append(fieldList, v) + case "creater": + fieldList = append(fieldList, v) + case "creater_time": + fieldList = append(fieldList, v) + case "edit_time": + fieldList = append(fieldList, v) + case "flow_id": + fieldList = append(fieldList, v) + case "states": + fieldList = append(fieldList, v) + case "flowIsOpen": + fieldList = append(fieldList, v) + default: + formKey := TableFormAttributeForm(v, jsonFieldList) + if formKey.Field != "" { + fieldList = append(fieldList, formKey) + } + + } + } + } else { + fieldList = tableFieldList + } + + return +} +func TableFormAttributeForm(formField Result, tableFieldList []FormFieldInfo) (fieldInfo Result) { + fmt.Printf("formField.Field--->%v\n", formField.Field) + for _, v := range tableFieldList { + fmt.Printf("v.Field--->%v\n", v.Id) + if v.Id == formField.Field { + fieldInfo = formField + return + } + } + return +} diff --git a/api/version1/workWechat/wechat.go b/api/version1/workWechat/wechat.go index bd32135..d971861 100644 --- a/api/version1/workWechat/wechat.go +++ b/api/version1/workWechat/wechat.go @@ -159,7 +159,7 @@ func (a *ApiMethod) LookOnePeopleArchives(c *gin.Context) { var orgList []string sendData.Purview, _, orgList, sendData.Level = user.GetUserPower("appsystem", surverManInfo.Position, roleList) - fmt.Printf("人员信息--->Purview:%v--->orgList:%v--->Level:%v\n", sendData.Purview, orgList, sendData.Level) + // fmt.Printf("人员信息--->Purview:%v--->orgList:%v--->Level:%v\n", sendData.Purview, orgList, sendData.Level) if publicmethod.IsInTrue[string]("210700510225772544", sendData.Purview) { //获取被查看人行政组织 diff --git a/apirouter/personalityAssessment/rongxin.go b/apirouter/personalityAssessment/rongxin.go index 85fcc39..e6316fc 100644 --- a/apirouter/personalityAssessment/rongxin.go +++ b/apirouter/personalityAssessment/rongxin.go @@ -13,7 +13,19 @@ func (a *ApiRouter) RouterGroup(router *gin.RouterGroup) { apiRouter.GET("", methodBinding.Index) //入口 apiRouter.POST("", methodBinding.Index) //入口 - apiRouter.POST("login", methodBinding.Login) //登录(内部人员) - apiRouter.POST("loginExternal", methodBinding.LoginExternal) //登录(内部人员) + apiRouter.POST("login", methodBinding.Login) //登录(内部人员) + apiRouter.POST("loginExternal", methodBinding.LoginExternal) //登录(内部人员) + apiRouter.POST("loginOut", methodBinding.LoginOut) //退出 + apiRouter.POST("submitDataRongXin", methodBinding.SubmitDataRongXin) //获取提交测试答案 + apiRouter.POST("doesItExist", methodBinding.DoesItExist) //判断是否已经提交过试卷 + apiRouter.POST("getUserDISCTest", methodBinding.GetUserDISCTest) //计算三次雷达图数 + apiRouter.POST("getUserDISCTestSign", methodBinding.GetUserDISCTestSign) //计算三次雷达图数 + apiRouter.POST("getManTest", methodBinding.GetManTest) //获取人物基础信息 + apiRouter.POST("submitTestPageAnswer", methodBinding.SubmitTestPageAnswer) //提交性格答案 + apiRouter.POST("nineResult", methodBinding.NineResult) //九型人格测试结果 + apiRouter.POST("nineResultToken", methodBinding.NineResultToken) //九型人格测试结果 + apiRouter.POST("downLoadNineTestPage", methodBinding.DownLoadNineTestPage) //下载九型人格测试结果 + apiRouter.GET("downLoadNineTestPage", methodBinding.DownLoadNineTestPage) //下载九型人格测试结果 + apiRouter.GET("statisticsPersonality", methodBinding.StatisticsPersonality) //下载人格测试状态 } } diff --git a/apirouter/v1/customerformrouter/router.go b/apirouter/v1/customerformrouter/router.go index 3cef294..2343282 100644 --- a/apirouter/v1/customerformrouter/router.go +++ b/apirouter/v1/customerformrouter/router.go @@ -45,6 +45,8 @@ func (a *ApiRouter) RouterGroupPc(router *gin.RouterGroup) { apiRouter.POST("gainFormTableField", methodBinding.GainFormTableField) //获取表格字段 apiRouter.POST("gainTableField", methodBinding.GainTableField) //获取数据库表字段 + apiRouter.POST("gainTableVersionField", methodBinding.GainTableVersionField) //根据版本Id获取相应的表单结构 + apiRouter.POST("editCustomerFormList", methodBinding.EditCustomerFormList) //编辑自定义表单列表数据 apiRouter.POST("gainFormListCont", methodBinding.GainFormListCont) //获取表单列表数据 diff --git a/config/configDatabase/database.go b/config/configDatabase/database.go index 03ba4d7..fd04a71 100644 --- a/config/configDatabase/database.go +++ b/config/configDatabase/database.go @@ -32,7 +32,9 @@ type MysqlSetUp struct { TidbrMaster MasterMysqlSetUp `mapstructure:"tidbrmaster" json:"tidbrmaster" yaml:"tidbrmaster"` //仓储系统数据库 CustomerForm MasterMysqlSetUp `mapstructure:"customerFormDatabase" json:"customerFormDatabase" yaml:"customerFormDatabase"` //自定义表单数据库 FlowLogDatabase MasterMysqlSetUp `mapstructure:"flowLogDatabase" json:"flowLogDatabase" yaml:"flowLogDatabase"` //工作流记录 - ReviseFormData MasterMysqlSetUp `mapstructure:"reviseFormData" json:"reviseFormData" yaml:"reviseFormData"` //工作流记录 + ReviseFormData MasterMysqlSetUp `mapstructure:"reviseFormData" json:"reviseFormData" yaml:"reviseFormData"` + PersonalityColor MasterMysqlSetUp `mapstructure:"charactercolor" json:"charactercolor" yaml:"charactercolor"` //性格色彩 + HrDatabaseInside MasterMysqlSetUp `mapstructure:"hrdatabaseinside" json:"hrdatabaseinside" yaml:"hrdatabaseinside"` //内网Hr数据库 } type MasterMysqlSetUp struct { diff --git a/go.mod b/go.mod index 612416c..34eeb04 100644 --- a/go.mod +++ b/go.mod @@ -7,8 +7,6 @@ require ( github.com/flipped-aurora/gin-vue-admin/server v0.0.0-20231212025023-e0a8e9370425 github.com/fsnotify/fsnotify v1.7.0 github.com/gin-gonic/gin v1.9.1 - github.com/golang-module/carbon v1.7.3 - github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.3 github.com/mitchellh/mapstructure v1.5.0 github.com/mozillazg/go-pinyin v0.20.0 @@ -16,6 +14,7 @@ require ( github.com/robfig/cron/v3 v3.0.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.16.0 + github.com/tjfoc/gmsm v1.4.1 gopkg.in/ini.v1 v1.67.0 gorm.io/driver/mysql v1.5.2 gorm.io/gorm v1.25.5 @@ -32,14 +31,10 @@ require ( github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.14.0 // indirect github.com/go-sql-driver/mysql v1.7.1 // indirect - github.com/gobuffalo/envy v1.7.0 // indirect - github.com/gobuffalo/packd v0.3.0 // indirect - github.com/gobuffalo/packr v1.30.1 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect - github.com/joho/godotenv v1.3.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/leodido/go-urn v1.2.4 // indirect @@ -48,18 +43,15 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/spf13/afero v1.11.0 // indirect github.com/spf13/cast v1.6.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // 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/ugorji/go/codec v1.2.11 // indirect golang.org/x/arch v0.3.0 // indirect golang.org/x/crypto v0.16.0 // indirect - golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.19.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect diff --git a/go.sum b/go.sum index 7edd4d2..766e119 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ 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/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/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= @@ -14,10 +13,6 @@ github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 h1:qSGYFH7+jGhD 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/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/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -31,7 +26,6 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 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/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= @@ -50,18 +44,8 @@ github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QX github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= -github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/logger v1.0.0/go.mod h1:2zbswyIUa45I+c+FLXuWl9zSWEiVuthsk8ze5s8JvPs= -github.com/gobuffalo/packd v0.3.0 h1:eMwymTkA1uXsqxS0Tpoop3Lc0u3kTfiMBE6nKtQU4g4= -github.com/gobuffalo/packd v0.3.0/go.mod h1:zC7QkmNkYVGKPw4tHpBQ+ml7W/3tIebgeo1b36chA3Q= -github.com/gobuffalo/packr v1.30.1 h1:hu1fuVR3fXEZR7rXNW3h8rqSML8EVAf6KNm0NKO/wKg= -github.com/gobuffalo/packr v1.30.1/go.mod h1:ljMyFO2EcrnzsHsN99cvbq055Y9OhRrIaviy289eRuk= -github.com/gobuffalo/packr/v2 v2.5.1/go.mod h1:8f9c96ITobJlPzI44jj+4tHnEKNt0xXWSVlXRN9X1Iw= 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/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/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= @@ -81,41 +65,27 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ 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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= -github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/karrick/godirwalk v1.10.12/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= 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= @@ -125,7 +95,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/mozillazg/go-pinyin v0.20.0 h1:BtR3DsxpApHfKReaPO1fCqF4pThRwH9uwvXzm+GnMFQ= github.com/mozillazg/go-pinyin v0.20.0/go.mod h1:iR4EnMMRXkfpFVV5FMi4FNB6wGq9NV6uDWbUuPhP4Yc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -135,32 +104,20 @@ github.com/redis/go-redis/v9 v9.3.0 h1:RiVDjmig62jIWp7Kk4XVLs0hzV6pI3PyTnnL0cnn0 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/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -178,16 +135,12 @@ 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/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 v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k= 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-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-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= @@ -196,8 +149,6 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL 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/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= @@ -211,11 +162,8 @@ golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJ 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/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-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-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-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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -231,7 +179,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm 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/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= @@ -251,13 +198,10 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/initialization/databaseinit/mysql.go b/initialization/databaseinit/mysql.go index d4f64bb..df78f65 100644 --- a/initialization/databaseinit/mysql.go +++ b/initialization/databaseinit/mysql.go @@ -161,4 +161,18 @@ func LoadDatabase() { } else { fmt.Printf("%v:数据库开启成功!服务器\n", sqlConfig.ReviseFormData.Name) } + //性格色彩 + overall.CONSTANT_DB_Color = sqlConfig.PersonalityColor.OpenSql() + if overall.CONSTANT_DB_Color == nil { + fmt.Printf("%v:数据库开启失败!服务器\n", sqlConfig.PersonalityColor.Name) + } else { + fmt.Printf("%v:数据库开启成功!服务器\n", sqlConfig.PersonalityColor.Name) + } + //内网hr数据库 + overall.CONSTANT_DB_HrInside = sqlConfig.HrDatabaseInside.OpenSql() + if overall.CONSTANT_DB_HrInside == nil { + fmt.Printf("%v:数据库开启失败!服务器\n", sqlConfig.HrDatabaseInside.Name) + } else { + fmt.Printf("%v:数据库开启成功!服务器\n", sqlConfig.HrDatabaseInside.Name) + } } diff --git a/models/modelAppPlatform/userInfoDownTemplate.go b/models/modelAppPlatform/userInfoDownTemplate.go index e6ab2d3..026e597 100644 --- a/models/modelAppPlatform/userInfoDownTemplate.go +++ b/models/modelAppPlatform/userInfoDownTemplate.go @@ -33,7 +33,7 @@ type UserInfoDownTemplate struct { } func (UserInfoDownTemplate *UserInfoDownTemplate) TableName() string { - return "UserInfoDownTemplate" + return "userInfoDownTemplate" } // 编辑内容 diff --git a/models/modelshr/administrative_organization.go b/models/modelshr/administrative_organization.go index 6243582..f106cca 100644 --- a/models/modelshr/administrative_organization.go +++ b/models/modelshr/administrative_organization.go @@ -1,7 +1,10 @@ package modelshr import ( + "appPlatform/middleware/grocerystore" "appPlatform/overall" + "encoding/json" + "fmt" "strings" ) @@ -61,3 +64,23 @@ func (cont *AdministrativeOrganization) ContMap(whereMap interface{}, field ...s gormDb.Where(whereMap).Find(&countAry) return } + +// 根据ID获取行政组织内容 +func (cont *AdministrativeOrganization) RedisCont(orgId int64) (err error) { + redisFileKey := fmt.Sprintf("org:Info:%v_%v", orgId, overall.CONSTANT_CONFIG.RedisPrefixStr.Alias) + redisClient := grocerystore.RunRedis(overall.CONSTANT_REDIS4) //设定redis库 + isTrue, tokens := redisClient.Get(redisFileKey) + if isTrue && tokens != "" { + err = json.Unmarshal([]byte(tokens), &cont) + return + } else { + var jsonStr []byte + err = overall.CONSTANT_DB_HR.Model(&cont).Where("`id` = ?", orgId).First(&cont).Error + if err == nil { + redisClient.SetRedisTime(0) + jsonStr, err = json.Marshal(cont) + redisClient.Set(redisFileKey, string(jsonStr)) + } + } + return +} diff --git a/models/personalityColor/charcolortest.go b/models/personalityColor/charcolortest.go new file mode 100644 index 0000000..371a469 --- /dev/null +++ b/models/personalityColor/charcolortest.go @@ -0,0 +1,52 @@ +package personalitycolor + +import ( + "appPlatform/overall" + "strings" +) + +// 授权账户 +type Charcolortest struct { + Id int64 `json:"id" gorm:"primaryKey;column:c_id;type:bigint(20) unsigned;not null;comment:Id;index"` + Class int64 `json:"class" gorm:"column:c_class;type:bigint(20) unsigned;default:0;not null;comment:测试试卷类型"` + Types int `json:"types" gorm:"column:c_type;type:int(1) unsigned;default:1;not null;comment:1:内部测试;2:外部测试"` + Number string `json:"number" gorm:"column:c_number;type:varchar(10) unsigned;not null;comment:工号"` + Name string `json:"name" gorm:"column:c_name;type:varchar(50) unsigned;not null;comment:姓名"` + Department string `json:"department" gorm:"column:c_department;type:varchar(255) unsigned;not null;comment:部门"` + Tel string `json:"tel" gorm:"column:c_tel;type:varchar(50) unsigned;not null;comment:联系电话"` + Address string `json:"address" gorm:"column:c_address;type:varchar(255) unsigned;not null;comment:联系地址"` + UserJson string `json:"userJson" gorm:"column:c_user_json;type:text unsigned;comment:内部员工详细信息"` + TestJson string `json:"testJson" gorm:"column:c_test_json;type:mediumtext unsigned;comment:试卷答案"` + Time int64 `json:"addtime" gorm:"column:c_add_time;type:bigint(20) unsigned;default:0;not null;comment:写入时间"` + EiteTime int64 `json:"eitetime" gorm:"column:c_eite_time;type:bigint(20) unsigned;default:0;not null;comment:编辑时间"` + State int `json:"c_states" gorm:"column:c_states;type:int(1) unsigned;default:1;not null;comment:1:有效;2:无效"` + BranchName string `json:"branchName" gorm:"column:c_branch_name;type:varchar(255) unsigned;not null;comment:部门"` +} + +func (Position *Charcolortest) TableName() string { + return "charcolortest" +} + +// 编辑职务分类内容 +func (cont *Charcolortest) EiteCont(whereMap interface{}, saveData map[string]interface{}) (err error) { + err = overall.CONSTANT_DB_Color.Model(&cont).Where(whereMap).Updates(saveData).Error + return +} + +// 获取行政组织内容 +func (cont *Charcolortest) GetCont(whereMap interface{}, field ...string) (err error) { + gormDb := overall.CONSTANT_DB_Color.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 *Charcolortest) CountCont(whereMap interface{}) (countId int64) { + overall.CONSTANT_DB_Color.Model(&cont).Where(whereMap).Count(&countId) + return +} diff --git a/overall/appConfig.go b/overall/appConfig.go index d3e79f3..df25a3c 100644 --- a/overall/appConfig.go +++ b/overall/appConfig.go @@ -47,8 +47,11 @@ var ( CONSTANT_DB_WorkFlowLog *gorm.DB //工作流历史记录 CONSTANT_DB_ReviseFormData *gorm.DB //工作流历史记录 - CONSTANT_DB_Server *gorm.DB //线上数据库 - CONSTANT_DB_Tidb *gorm.DB //私有云数据库 + CONSTANT_DB_Server *gorm.DB //线上数据库 + CONSTANT_DB_Tidb *gorm.DB //私有云数据库 + CONSTANT_DB_Color *gorm.DB //私有云数据库 + CONSTANT_DB_HrInside *gorm.DB //内网HR + //Redis CONSTANT_REDIS0 *redis.Client CONSTANT_REDIS1 *redis.Client diff --git a/overall/publicmethod/sm4.go b/overall/publicmethod/sm4.go index 184322b..5471218 100644 --- a/overall/publicmethod/sm4.go +++ b/overall/publicmethod/sm4.go @@ -5,7 +5,6 @@ import ( "bytes" "crypto/cipher" "encoding/hex" - "fmt" "strings" "github.com/tjfoc/gmsm/sm4" @@ -44,7 +43,7 @@ func SM4Encrypt(data string, key ...string) (string, error) { keySm4 := []byte(SM4Key) //实例化sm4加密对象 block, err := sm4.NewCipher(keySm4) - fmt.Printf("block:%v=====>%v\n", err, string(keySm4)) + // fmt.Printf("block:%v=====>%v\n", err, string(keySm4)) if err != nil { return "1", err } @@ -101,7 +100,7 @@ func unPaddingLastGroup(plainText []byte) []byte { # */ -func SM4Decrypt(data string, key ...string) (string, error) { +func SM4Decrypt(data string, key ...string) ([]byte, error) { SM4Key := overall.CONSTANT_CONFIG.Appsetup.AppKey if len(key) > 0 { SM4Key = strings.Join(key, "-") @@ -112,12 +111,12 @@ func SM4Decrypt(data string, key ...string) (string, error) { keySm4 := []byte(SM4Key) block, err := sm4.NewCipher(keySm4) if err != nil { - return "", err + return []byte(""), err } //使用hex解码 decodeString, err := hex.DecodeString(data) if err != nil { - return "", err + return []byte(""), err } //CBC模式 优点:具有较好的安全性,能够隐藏明文的模式和重复性。 缺点:加密过程是串行的,不适合并行处理。 blockMode := cipher.NewCBCDecrypter(block, iv) @@ -126,7 +125,7 @@ func SM4Decrypt(data string, key ...string) (string, error) { //去掉明文后面的填充数据 plainText := unPaddingLastGroup(decodeString) - return string(plainText), nil + return plainText, nil } // 判断字符串长度,多余的删除,不足的补充 diff --git a/overall/publicmethod/technique.go b/overall/publicmethod/technique.go index 826f2ab..67719d1 100644 --- a/overall/publicmethod/technique.go +++ b/overall/publicmethod/technique.go @@ -2864,3 +2864,44 @@ func RemoveReservedWordTime(val string) bool { reservedWord := []string{"datetimerange", "daterange", "monthrange"} return IsInTrue[string](val, reservedWord) } + +/* +* +@ 作者: 秦东 +@ 时间: 2024-08-30 08:49:43 +@ 功能: 输出班组 +*/ +func TeamidName(val int64) string { + switch val { + case 1: + return "长白班" + case 2: + return "甲班" + case 3: + return "乙班" + case 4: + return "丙班" + case 5: + return "丁班" + default: + return "未知" + } + return "未知" +} +func TeamidNameInt(val string) int64 { + switch val { + case "长白班": + return 1 + case "甲班": + return 2 + case "乙班": + return 3 + case "丙班": + return 4 + case "丁班": + return 5 + default: + return 0 + } + return 0 +}