package maptostruct import ( "appPlatform/api/version1/customerform" "appPlatform/api/version1/taskplatform/taskflow" "appPlatform/models/modelAppPlatform" "appPlatform/models/modelshr" "appPlatform/models/modelsschool" "appPlatform/overall" "appPlatform/overall/publicmethod" "crypto/md5" "encoding/json" "fmt" "strconv" "strings" "time" "github.com/gin-gonic/gin" "github.com/mozillazg/go-pinyin" "gorm.io/gorm/clause" ) /* * @ 作者: 秦东 @ 时间: 2023-08-08 14:16:31 @ 功能: 获取车场车位信息 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) CharParking(c *gin.Context) { var requestData SendParkCont c.ShouldBindJSON(&requestData) var charCont CharParkCont requestData.Data = charCont requestData.Ts = strconv.FormatInt(time.Now().Unix(), 10) jsonByte, err := json.Marshal(requestData.Data) signStrAll := fmt.Sprintf("%v%v%v%v", string(jsonByte), requestData.Ts, requestData.ParkId, requestData.AccessKey) // signStrAll := fmt.Sprintf("%v%v%v", requestData.Ts, requestData.ParkId, requestData.AccessKey) //计算签名 mdNew := md5.New() mdNew.Write([]byte(signStrAll)) signStrAllMd5 := fmt.Sprintf("%x", mdNew.Sum(nil)) signStrAllMd5Big := strings.ToUpper(signStrAllMd5) requestData.Sign = signStrAllMd5Big var toForData SendParkInfo toForData.Data = string(jsonByte) toForData.ParkId = requestData.ParkId toForData.Ts = requestData.Ts toForData.Sign = signStrAllMd5Big sendDate, _ := json.Marshal(toForData) callBackByte := publicmethod.CurlPostJosn("http://1.116.211.94:8002/parkservapi/api_GetParkPlace", sendDate) var toForDataIng SendParkInfoIng toForDataIng.Data = requestData.Data toForDataIng.ParkId = requestData.ParkId toForDataIng.Ts = requestData.Ts toForDataIng.Sign = signStrAllMd5Big sendDateing, _ := json.Marshal(toForDataIng) callBackByteIf := publicmethod.CurlPostJosn("http://1.116.211.94:8002/LPApi.asmx/api_GetGatesInfo", sendDateing) outData := publicmethod.MapOut[string]() outData["err"] = err outData["signStrAll"] = signStrAll outData["signStrAllMd5"] = signStrAllMd5 outData["signStrAllMd5Big"] = signStrAllMd5Big outData["requestData"] = requestData outData["sendDate"] = string(sendDate) outData["callBackByte"] = string(callBackByte) outData["toForData"] = toForData outData["callBackByteIf"] = string(callBackByteIf) // fmt.Printf("%v\n", outData) publicmethod.Result(0, outData, c) } /* * @ 作者: 秦东 @ 时间: 2023-08-16 16:39:13 @ 功能: 迁移试卷数据 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) TestPage(c *gin.Context) { var testPageList []int64 err := overall.CONSTANT_DB_Server.Model(&modelsschool.TestPaper{}).Select("tp_id").Find(&testPageList).Error if err != nil { publicmethod.Result(0, err, c) return } countPage := len(testPageList) fmt.Printf("余数---》%v\n", countPage) if len(testPageList) > 0 { var saveData []int64 jibuqi := 0 for i := 0; i < countPage; i++ { if i != 0 && i%1000 == 0 { saveData = append(saveData, testPageList[i]) jibuqi++ syncSeting.Add(1) // time.Sleep(20 * time.Millisecond) go dengdai(saveData, jibuqi) saveData = saveData[:0] // break } else { saveData = append(saveData, testPageList[i]) } } if len(saveData) > 0 { syncSeting.Add(1) go dengdai(saveData, jibuqi) fmt.Printf("余数---》%v\n", len(saveData)) } syncSeting.Wait() } // var countPages int64 // overall.CONSTANT_DB_Tidb.Model(&modelsschool.TestPaper{}).Select("tp_id").Count(&countPages) publicmethod.Result(0, countPage, c) } func dengdai(testPageList []int64, jibuqi int) { defer syncSeting.Done() // fmt.Printf("金晶科技了%v-------><---", jibuqi) var testPageListCont []modelsschool.TestPaper errEs := overall.CONSTANT_DB_Server.Model(&modelsschool.TestPaper{}).Where("tp_id IN ?", testPageList).Find(&testPageListCont).Error if errEs == nil { var saveCont []modelsschool.TestPaper for i := 0; i < len(testPageListCont); i++ { saveCont = append(saveCont, testPageListCont[i]) if i != 0 && i%10 == 0 { overall.CONSTANT_DB_Tidb.Clauses(clause.OnConflict{DoNothing: true}).Create(&saveCont) saveCont = saveCont[:0] } } if len(saveCont) > 0 { overall.CONSTANT_DB_Tidb.Clauses(clause.OnConflict{DoNothing: true}).Create(&saveCont) } // for _, v := range testPageListCont { // // var testPageCont modelsschool.TestPaper // // err := overall.CONSTANT_DB_Server.Where("tp_id = ?", v).First(&testPageCont).Error // // // fmt.Printf("金晶科技了%v---->%v\n", v, err) // // if err == nil { // overall.CONSTANT_DB_Tidb.Clauses(clause.OnConflict{DoNothing: true}).Create(&v) // // } // } } // var testPageListCont []modelsschool.TestPaper // err := overall.CONSTANT_DB_Server.Model(&modelsschool.TestPaper{}).Where("tp_id IN ?", testPageList).Find(&testPageListCont).Error // if err == nil { // // overall.CONSTANT_DB_Tidb.Create(&testPageListCont) // overall.CONSTANT_DB_Tidb.Clauses(clause.OnConflict{DoNothing: true}).Create(&testPageListCont) // } // time.Sleep(100 * time.Millisecond) } func TestPageTimeTask() { var testPageList []int64 err := overall.CONSTANT_DB_Server.Model(&modelsschool.TestPaper{}).Select("tp_id").Find(&testPageList).Error if err != nil { tadyTime := time.Now().Unix() fmt.Printf("没有数据%v--%v\n", err, publicmethod.UnixTimeToDay(tadyTime, 11)) return } countPage := len(testPageList) // fmt.Printf("余数---》%v\n", countPage) if len(testPageList) > 0 { var saveData []int64 jibuqi := 0 for i := 0; i < countPage; i++ { if i != 0 && i%1000 == 0 { saveData = append(saveData, testPageList[i]) jibuqi++ syncSeting.Add(1) // time.Sleep(20 * time.Millisecond) go dengdai(saveData, jibuqi) saveData = saveData[:0] // break } else { saveData = append(saveData, testPageList[i]) } } if len(saveData) > 0 { syncSeting.Add(1) go dengdai(saveData, jibuqi) // fmt.Printf("余数---》%v\n", len(saveData)) } syncSeting.Wait() } // var countPages int64 // overall.CONSTANT_DB_Tidb.Model(&modelsschool.TestPaper{}).Select("tp_id").Count(&countPages) } type canshuzhi interface{} // 接收参数 func (A *ApiMethod) Canshu(c *gin.Context) { // var db *gorm.DB // err := db.QueryFields // overall.CONSTANT_DB_AppPlatform.Take.Title // // var zhi canshuzhi // zhi, _ := c.GetRawData() // fmt.Printf("%T------------->%v\n", zhi, string(zhi)) } /* * @ 作者: 秦东 @ 时间: 2023-09-05 08:38:58 @ 功能: 模拟创建表单 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) CreateTable(c *gin.Context) { var requestData publicmethod.CommonId[int64] err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } var customerFormCont modelAppPlatform.CustomerFormView err = customerFormCont.GetCont(map[string]interface{}{"cfid": requestData.Id, "`status`": 1}) if err != nil { publicmethod.Result(107, err, c) return } var formJsonCont customerform.CustomerFormMaster json.Unmarshal([]byte(customerFormCont.MastesFormJson), &formJsonCont) mastSql, _ := formJsonCont.DisassembleForm() var formVersionCont modelAppPlatform.CustomerFormVersion formVersionCont.EiteCont(map[string]interface{}{"id": customerFormCont.Id}, map[string]interface{}{"table_structure": mastSql, "edit_time": time.Now().Unix()}) publicmethod.Result(0, mastSql, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-08 09:24:00 @ 功能: 改革自定义表单列表 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) QianyiVersion(c *gin.Context) { var list []modelAppPlatform.CustomerForm err := overall.CONSTANT_DB_AppPlatform.Find(&list).Error if err != nil { return } for _, v := range list { var versionCont modelAppPlatform.CustomerFormVersion versionCont.TableKey = v.TableNames //default:'';not null;comment:表单标识符"` versionCont.Version = 1 //1;not null;comment:版本号"` versionCont.Status = 1 //not null;comment:显示状态(1:启用;2:禁用,3:删除)"` // versionCont.MastesForm = v.MastesForm //';comment:表单结构"` // versionCont.MastesFormJson = v.MastesFormJson //efault:'';comment:表单结构json"` // versionCont.Creater = v.Creater //ult:0;not null;comment:创建人"` versionCont.CreaterTime = v.CreaterTime //not null;comment:创建时间"` versionCont.EditTime = v.EditTime //efault:0;not null;comment:编辑时间"` // versionCont.TableStructure = v.TableStructure //;default:'';comment:字表结构"` // versionCont.Dict = v.Dict //字表结构"` overall.CONSTANT_DB_AppPlatform.Create(&versionCont) } } /* * @ 作者: 秦东 @ 时间: 2023-09-13 13:13:13 @ 功能: 查询表结构 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) LookTableStruct(c *gin.Context) { var requestData publicmethod.CommonId[int64] err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Id == 0 { publicmethod.Result(107, err, c) return } var versionCont modelAppPlatform.CustomerFormVersion err = versionCont.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil { publicmethod.Result(107, err, c) return } formStruct, err := customerform.ReadDatabaseForm(versionCont.TableKey) publicmethod.Result(107, formStruct, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-26 11:34:53 @ 功能: 汉字转拼音 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) HanZiZhuanPinYin(c *gin.Context) { var requestData publicmethod.PublicName err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Name == "" { publicmethod.Result(107, err, c) return } pyObject := pinyin.NewArgs() // pyObject.Heteronym =true pyObject.Style = pinyin.Tone3 pyObject.Separator = "" str := pinyin.Slug(requestData.Name, pyObject) publicmethod.Result(0, str, c) } /* * @ 作者: 秦东 @ 时间: 2023-09-28 15:35:07 @ 功能: 测试表结构数值 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) TestTable(c *gin.Context) { var requestData publicmethod.PublicName err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } if requestData.Name == "" { requestData.Name = "shi_yang" } masterFormCont := publicmethod.MapOut[string]() err = overall.CONSTANT_DB_CustomerForm.Table(requestData.Name).Find(&masterFormCont).Error if err != nil { publicmethod.Result(107, err, c) return } for k, v := range masterFormCont { fmt.Printf("%v => %T\n", k, v) } } /* * @ 作者: 秦东 @ 时间: 2023-10-17 16:42:55 @ 功能: 加密实验 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) JiaMiShiYan(c *gin.Context) { // var requestData JiaMi // err := c.ShouldBindQuery(&requestData) // if err != nil { // publicmethod.Result(100, err, c) // return // } singStr := fmt.Sprintf("%v%v%v", c.Query("userkey"), c.Query("usertoken"), c.Query("time")) var singCodeMd5 publicmethod.Md5Encryption singCodeMd5.Md5EncryptionInit(singStr) signCodeRedisKey := singCodeMd5.Md5EncryptionAlgorithm() sendData := publicmethod.MapOut[string]() sendData["signCodeRedisKey"] = signCodeRedisKey sendData["userkey"] = c.Query("userkey") sendData["usertoken"] = c.Query("usertoken") sendData["time"] = c.Query("time") sendData["singStr"] = singStr publicmethod.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2023-11-08 16:04:39 @ 功能: 根据身份证号获取生日和年龄 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GenJuIdNumber(c *gin.Context) { var requestData publicmethod.PublicName err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(100, err, c) return } shengti := publicmethod.GetBirthday(requestData.Name) var myAge publicmethod.BirthdayAge myAge.GetAgeByBirthday(requestData.Name) sendData := publicmethod.MapOut[string]() sendData["shengti"] = shengti sendData["myAge"] = myAge publicmethod.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2023-11-15 15:26:47 @ 功能: 实验流程图生成 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) CreateFlowChart(c *gin.Context) { var requestData CreatFlowView err := c.ShouldBindJSON(&requestData) if err != nil { publicmethod.Result(10001, err, c) return } if requestData.Id == "" { publicmethod.Result(10001, err, c, "未知表单") return } var flowInfo modelAppPlatform.FlowVersion err = flowInfo.GetCont(map[string]interface{}{"`id`": requestData.Id}) if err != nil && flowInfo.Content == "" { publicmethod.Result(106, err, c) return } var flowVersionCont taskflow.FlowMainBody err = json.Unmarshal([]byte(flowInfo.Content), &flowVersionCont) if err != nil { publicmethod.Result(104, err, c) return } context, _ := c.Get(overall.MyContJwt) var userCont modelshr.ManCont userCont.GetLoginCont(context) // workFlowInfo := flowVersionCont.GenerateFlow(userCont, 349) workFlowInfo := flowVersionCont.NodeConfig.CircularParsing(1, userCont, 349, requestData.ConditionList, requestData.NodelPeople) sendData := publicmethod.MapOut[string]() // sendData["context"] = context // sendData["userCont"] = userCont // sendData["flowInfo"] = flowInfo // sendData["flowVersionCont"] = flowVersionCont sendData["workFlowInfo"] = workFlowInfo publicmethod.Result(0, sendData, c) } /* * @ 作者: 秦东 @ 时间: 2024-03-08 10:47:40 @ 功能: 获取行政组织所有子类 @ 参数 # @ 返回值 # @ 方法原型 # */ func (a *ApiMethod) GetAllOrgSun(c *gin.Context) { var requestData publicmethod.CommonId[int64] c.ShouldBindJSON(&requestData) if requestData.Id == 0 { requestData.Id = 309 } var sunOrg publicmethod.GetOrgAllParent sunOrg.GetOrgSun(requestData.Id) publicmethod.Result(0, sunOrg.Id, c) }