应用集成平台服务端
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.
 
 
 

417 lines
10 KiB

package maptostruct
import (
"appPlatform/api/version1/customerform"
"appPlatform/models/modelAppPlatform"
"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 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)
}
}