应用集成平台服务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

214 lines
5.9 KiB

package maptostruct
import (
"appPlatform/models/modelsschool"
"appPlatform/overall"
"appPlatform/overall/publicmethod"
"crypto/md5"
"encoding/json"
"fmt"
"strconv"
"strings"
"time"
"github.com/gin-gonic/gin"
"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)
}