123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581 |
- package models
- import (
- "database/sql"
- "fmt"
- "time"
- "xugu_license/internal/global"
- "github.com/google/uuid"
- )
- type LicenseApplication struct {
- Creator string // 创建人
- ApplicationDate string //申请日期
- AssociatedProject string // 关联项目
- SalesPerson string //销售人员
- SalesEmail string // 销售接收邮箱
- SupportPerson string //技服人员
- SupportEmail string // 技服接收邮箱
- TotalNodes string //总节点数
- Company string //使用单位
- ProductName string // 产品名称
- Version string //版本
- NodeCount string //节点数
- Processor string //处理器
- OperatingSystem string //操作系统
- MasterMacAddress string // 主MasterMac地址
- SecondaryMasterMacAddress sql.NullString // 副MasterMac地址
- }
- type LicenseInfo struct {
- ID int `json:"id"`
- UserID int `json:"user_id"`
- UpUser string `json:"up_user"`
- UpTime sql.NullTime `json:"up_time"`
- DelTime sql.NullTime `json:"del_time"`
- License1 sql.NullString
- License2 sql.NullString
- LicenseFlage string
- UniqueID string
- LicenseApplication
- }
- // 删除LicenseApplication和LicenseInfo表中的数据
- // func DelLicenseApplicationAndInfoRow(uniqueID string) error {
- // fmt.Println("UniqueID12313", uniqueID)
- // tx, err := global.XuguDB.Begin()
- // if err != nil {
- // return fmt.Errorf("begin transaction: %v", err)
- // }
- // defer func() {
- // if err != nil {
- // tx.Rollback()
- // } else {
- // err = tx.Commit()
- // }
- // }()
- // // "update LicenseApplication set DelTime = ? where UniqueID = ?",
- // //DELETE FROM LicenseInfo WHERE LicenseApplicationUniqueID = ?
- // // _, err = tx.Exec("DELETE FROM LicenseInfo WHERE LicenseApplicationUniqueID = ?", uniqueID)
- // // if err != nil {
- // // return err
- // // }
- // // _, err = tx.Exec("DELETE FROM LicenseApplication WHERE UniqueID = ?", uniqueID)
- // // if err != nil {
- // // return err
- // // }
- // _, err = tx.Exec("UPDATE LicenseApplication SET DelTime = ? WHERE UniqueID = ?", time.Now(), uniqueID)
- // if err != nil {
- // return err
- // }
- // return nil
- // }
- func InsertLicenseApplicationAndInfoRow(licenseInfo LicenseApplication, userId int, userName string) error {
- tx, err := global.XuguDB.Begin()
- if err != nil {
- return fmt.Errorf("begin transaction: %v", err)
- }
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- err = tx.Commit()
- }
- }()
- // 插入 LicenseApplication 表
- uniqueID := uuid.New()
- insertLicenseApplication := `
- INSERT INTO LicenseApplication (
- UniqueID, UserId, UpUser, UpTime, DelTime,
- Creator, ApplicationDate, AssociatedProject, SalesPerson, SalesEmail,
- SupportPerson, SupportEmail,TotalNodes, Company,ProductName, Version,
- NodeCount, Processor, OperatingSystem,MasterMacAddress, SecondaryMasterMacAddress
- ) VALUES (
- ?, ?, ?, ?, ?,
- ?, ?, ?, ?, ?,
- ?, ?, ?, ?, ?,
- ?, ?, ?, ?, ?,?
- )`
- _, err = tx.Exec(insertLicenseApplication,
- uniqueID, userId, userName, time.Now(), nil,
- licenseInfo.Creator, licenseInfo.ApplicationDate, licenseInfo.AssociatedProject,
- licenseInfo.SalesPerson, licenseInfo.SalesEmail, licenseInfo.SupportPerson,
- licenseInfo.SupportEmail, licenseInfo.TotalNodes, licenseInfo.Company, licenseInfo.ProductName,
- licenseInfo.Version, licenseInfo.NodeCount, licenseInfo.Processor,
- licenseInfo.OperatingSystem, licenseInfo.MasterMacAddress,
- licenseInfo.SecondaryMasterMacAddress)
- if err != nil {
- return err
- }
- //插入 LicenseInfo 表
- _, err = tx.Exec(`
- INSERT INTO LicenseInfo (
- LicenseApplicationUniqueID, LicenseFlage
- ) VALUES (?, ?)
- `,
- uniqueID, "未生成")
- if err != nil {
- fmt.Println("InsertLicenseApplicationRow", err)
- return err
- }
- return nil
- }
- // 获取所有或单个license信息,或者指定某个用户能查询到的所有license信息
- func GetLicenseInfoAllOrSingle(page int, pageSize int, uniqueID string, userName string) ([]LicenseInfo, int, error) {
- offset := (page - 1) * pageSize
- // 查询总记录数
- var total int
- err := global.XuguDB.QueryRow(`SELECT COUNT(*) FROM LicenseApplication WHERE DelTime IS NULL`).Scan(&total)
- if err != nil {
- return nil, 0, fmt.Errorf("count query error: %v", err)
- }
- var query string
- if uniqueID != "" {
- query = fmt.Sprintf(`SELECT
- la.id,
- la.UniqueID,
- la.UserId,
- la.UpUser,
- la.UpTime,
- la.DelTime,
- la.Creator,
- la.ApplicationDate,
- la.AssociatedProject,
- la.SalesPerson,
- la.SalesEmail,
- la.SupportPerson,
- la.SupportEmail,
- la.TotalNodes,
- la.Company,
- la.ProductName,
- la.Version,
- la.NodeCount,
- la.Processor,
- la.OperatingSystem,
- la.MasterMacAddress,
- la.SecondaryMasterMacAddress,
- li.lic1,
- li.lic2
- FROM
- LicenseApplication la
- INNER JOIN
- LicenseInfo li
- ON
- la.UniqueID = li.LicenseApplicationUniqueID
- WHERE
- la.DelTime IS NULL
- AND la.UniqueID = '%s' LIMIT ? OFFSET ?`, uniqueID)
- } else if userName != "" { //使用用户名查询
- err := global.XuguDB.QueryRow(`SELECT COUNT(*) FROM licenseRecordToUser lr WHERE lr.userUNIQUEID LIKE '%%%s%%'`, userName).Scan(&total)
- if err != nil {
- global.Logger.Errorln("查询总数失败 ", err.Error())
- return nil, 0, fmt.Errorf("查询总数失败: %v", err)
- }
- query = fmt.Sprintf(`
- SELECT la.*,li.lic1, li.lic2, lr.upTime
- FROM LicenseApplication la
- JOIN licenseRecordToUser lr ON la.UniqueID = lr.LicenseUniqueID
- JOIN LicenseInfo li ON la.UniqueID = li.LicenseApplicationUniqueID
- WHERE lr.userUNIQUEID LIKE '%%%s%%' and la.deltime is null
- LIMIT ? OFFSET ?`, userName)
- rows, err := global.XuguDB.Query(query, pageSize, offset)
- if err != nil {
- global.Logger.Errorln("查询数据失败 ", err.Error())
- return nil, 0, fmt.Errorf("query error: %v", err)
- }
- defer rows.Close()
- var results []LicenseInfo
- for rows.Next() {
- var li LicenseInfo
- err = rows.Scan(
- &li.ID,
- &li.UniqueID,
- &li.UserID,
- &li.UpUser,
- &li.UpTime,
- &li.DelTime,
- &li.LicenseApplication.Creator,
- &li.LicenseApplication.ApplicationDate,
- &li.LicenseApplication.AssociatedProject,
- &li.LicenseApplication.SalesPerson,
- &li.LicenseApplication.SalesEmail,
- &li.LicenseApplication.SupportPerson,
- &li.LicenseApplication.SupportEmail,
- &li.LicenseApplication.TotalNodes,
- &li.LicenseApplication.Company,
- &li.LicenseApplication.ProductName,
- &li.LicenseApplication.Version,
- &li.LicenseApplication.NodeCount,
- &li.LicenseApplication.Processor,
- &li.LicenseApplication.OperatingSystem,
- &li.LicenseApplication.MasterMacAddress,
- &li.LicenseApplication.SecondaryMasterMacAddress,
- &li.License1,
- &li.License2,
- &li.UpTime,
- )
- if err != nil {
- global.Logger.Errorln("数据查询失败: ", err.Error())
- // return nil, fmt.Errorf("scan row: %v", err)
- return nil, 0, fmt.Errorf("scan row error: %v", err)
- }
- results = append(results, li)
- }
- if err = rows.Err(); err != nil {
- global.Logger.Errorln("rows数据查询失败: ", err.Error())
- return nil, 0, fmt.Errorf("rows error: %v", err)
- }
- // fmt.Printf("\n usernaame %s\n", userName)
- // fmt.Printf("\n LIMIT ? OFFSET ?`, %d,%d\n", pageSize, offset)
- // fmt.Printf("\nresults123 %#v\n", results)
- return results, total, nil
- } else {
- query = `
- SELECT
- la.id,
- la.UniqueID,
- la.UserId,
- la.UpUser,
- la.UpTime,
- la.DelTime,
- la.Creator,
- la.ApplicationDate,
- la.AssociatedProject,
- la.SalesPerson,
- la.SalesEmail,
- la.SupportPerson,
- la.SupportEmail,
- la.TotalNodes,
- la.Company,
- la.ProductName,
- la.Version,
- la.NodeCount,
- la.Processor,
- la.OperatingSystem,
- la.MasterMacAddress,
- la.SecondaryMasterMacAddress,
- li.Lic1,
- li.Lic2,
- li.LicenseFlage
- FROM
- LicenseApplication la
- INNER JOIN
- LicenseInfo li
- ON
- la.UniqueID = li.LicenseApplicationUniqueID
- WHERE
- la.DelTime IS NULL
- LIMIT ? OFFSET ?
- `
- }
- rows, err := global.XuguDB.Query(query, pageSize, offset)
- if err != nil {
- global.Logger.Errorln("数据查询失败: ", err.Error())
- return nil, 0, fmt.Errorf("query error: %v", err)
- }
- defer rows.Close()
- var results []LicenseInfo
- for rows.Next() {
- var li LicenseInfo
- if uniqueID != "" {
- err = rows.Scan(
- &li.ID,
- &li.UniqueID,
- &li.UserID,
- &li.UpUser,
- &li.UpTime,
- &li.DelTime,
- &li.LicenseApplication.Creator,
- &li.LicenseApplication.ApplicationDate,
- &li.LicenseApplication.AssociatedProject,
- &li.LicenseApplication.SalesPerson,
- &li.LicenseApplication.SalesEmail,
- &li.LicenseApplication.SupportPerson,
- &li.LicenseApplication.SupportEmail,
- &li.LicenseApplication.TotalNodes,
- &li.LicenseApplication.Company,
- &li.LicenseApplication.ProductName,
- &li.LicenseApplication.Version,
- &li.LicenseApplication.NodeCount,
- &li.LicenseApplication.Processor,
- &li.LicenseApplication.OperatingSystem,
- &li.LicenseApplication.MasterMacAddress,
- &li.LicenseApplication.SecondaryMasterMacAddress,
- &li.License1,
- &li.License2,
- )
- } else {
- err = rows.Scan(
- &li.ID,
- &li.UniqueID,
- &li.UserID,
- &li.UpUser,
- &li.UpTime,
- &li.DelTime,
- &li.LicenseApplication.Creator,
- &li.LicenseApplication.ApplicationDate,
- &li.LicenseApplication.AssociatedProject,
- &li.LicenseApplication.SalesPerson,
- &li.LicenseApplication.SalesEmail,
- &li.LicenseApplication.SupportPerson,
- &li.LicenseApplication.SupportEmail,
- &li.LicenseApplication.TotalNodes,
- &li.LicenseApplication.Company,
- &li.LicenseApplication.ProductName,
- &li.LicenseApplication.Version,
- &li.LicenseApplication.NodeCount,
- &li.LicenseApplication.Processor,
- &li.LicenseApplication.OperatingSystem,
- &li.LicenseApplication.MasterMacAddress,
- &li.LicenseApplication.SecondaryMasterMacAddress,
- &li.License1,
- &li.License2,
- &li.LicenseFlage,
- )
- }
- if err != nil {
- global.Logger.Errorln("数据查询失败: ", err.Error())
- return nil, 0, fmt.Errorf("scan row error: %v", err)
- }
- results = append(results, li)
- }
- if err = rows.Err(); err != nil {
- global.Logger.Errorln("数据查询失败: ", err.Error())
- return nil, 0, fmt.Errorf("rows error: %v", err)
- }
- return results, total, nil
- }
- // 插入生成好的lic1,2的信息
- func UpdateLicenseStr(uniqueID string, lic1 []byte, lic2 []byte) error {
- tx, err := global.XuguDB.Begin()
- if err != nil {
- global.Logger.Errorln("begin transaction失败: ", err.Error())
- return fmt.Errorf("begin transaction: %v", err)
- }
- defer func() {
- if err != nil {
- tx.Rollback()
- } else {
- err = tx.Commit()
- }
- }()
- //插入 LicenseInfo 表
- if lic2 == nil {
- _, err = tx.Exec(`
- UPDATE LicenseInfo SET LicenseFlage = ? ,lic1 = ? WHERE LicenseApplicationUniqueID = ?
- `,
- "已生成", string(lic1), uniqueID)
- } else {
- _, err = tx.Exec(`
- UPDATE LicenseInfo SET LicenseFlage = ? ,lic1 = ?,lic2 = ? WHERE LicenseApplicationUniqueID = ?
- `,
- "已生成", string(lic1), string(lic2), uniqueID)
- }
- if err != nil {
- global.Logger.Errorln("插入lic1 ,2 失败: ", err.Error())
- return err
- }
- return nil
- }
- // 插入分发记录表
- // func InsertlicenseRecordByUserRow(LicenseUniqueID string, userUniqueID string, UserAccount string, operatorUniqueID string) error {
- // tx, err := global.XuguDB.Begin()
- // if err != nil {
- // global.Logger.Errorln("begin transaction失败: ", err.Error())
- // return fmt.Errorf("begin transaction: %v", err)
- // }
- // defer func() {
- // if err != nil {
- // tx.Rollback()
- // } else {
- // err = tx.Commit()
- // }
- // }()
- // _, err = tx.Exec(`
- // Insert into licenseRecordToUser(LicenseUniqueID ,userUniqueID,UserAccount,upTime,operatorUniqueID) values(?,?,?,?,?)`,
- // LicenseUniqueID, userUniqueID, UserAccount, time.Now(), operatorUniqueID)
- // if err != nil {
- // global.Logger.Errorln("插入分发记录用户表失败: ", err.Error())
- // return err
- // }
- // return nil
- // }
- // 插入分发记录表
- // func InsertlicenseRecordByEmailRow(LicenseUniqueID string, emails string, operatorUniqueID string) error {
- // tx, err := global.XuguDB.Begin()
- // if err != nil {
- // global.Logger.Errorln("begin transaction失败: ", err.Error())
- // return fmt.Errorf("begin transaction: %v", err)
- // }
- // defer func() {
- // if err != nil {
- // tx.Rollback()
- // } else {
- // err = tx.Commit()
- // }
- // }()
- // _, err = tx.Exec(`
- // Insert into licenseRecordToEmails(LicenseUniqueID ,emails,operatorUniqueID,upTime) values(?,?,?,?)`,
- // LicenseUniqueID, emails, operatorUniqueID, time.Now())
- // if err != nil {
- // global.Logger.Errorln("插入分发记录邮箱表失败: ", err.Error())
- // return err
- // }
- // return nil
- // }
- // // 搜索分发记录表
- // func GetlicenseRecordByUser(uniqueID string) ([]LicenseRecordToUser, error) {
- // fmt.Println("搜索分发记录表 uniqueID", uniqueID)
- // if uniqueID == "" {
- // return nil, fmt.Errorf("uniqueID is empty")
- // }
- // sqlLicUser := `select LicenseUniqueID,userUNIQUEID,UserAccount,operatorUniqueID,upTime from licenseRecordToUser where LicenseUniqueID = ? AND deltime IS NULL`
- // rows, err := global.XuguDB.Query(sqlLicUser, uniqueID)
- // if err != nil {
- // global.Logger.Errorln("query data: ", err.Error())
- // return nil, fmt.Errorf("query error: %v", err)
- // }
- // defer rows.Close()
- // fmt.Println("执行这里")
- // var results []LicenseRecordToUser
- // for rows.Next() {
- // var lRU LicenseRecordToUser
- // err = rows.Scan(
- // &lRU.LicenseUniqueID,
- // &lRU.UserUniqueID,
- // &lRU.UserAccount,
- // &lRU.OperatorUniqueID,
- // &lRU.UpTime,
- // )
- // if err != nil {
- // global.Logger.Errorln("scan row: ", err.Error())
- // return nil, fmt.Errorf("scan row error: %v", err)
- // }
- // results = append(results, lRU)
- // }
- // fmt.Println("LicenseRecordToUser ", results)
- // return results, nil
- // }
- // func GetlicenseRecordByEmail(uniqueID string) ([]LicenseRecordToEmails, error) {
- // if uniqueID == "" {
- // return nil, fmt.Errorf("uniqueID is empty")
- // }
- // sqlLicEmail := `select LicenseUniqueID,emails,operatorUniqueID ,upTime from licenseRecordToEmails where LicenseUniqueID = ? AND deltime IS NULL;`
- // rows, err := global.XuguDB.Query(sqlLicEmail, uniqueID)
- // if err != nil {
- // global.Logger.Errorln("query data: ", err.Error())
- // return nil, fmt.Errorf("query error: %v", err)
- // }
- // fmt.Println("执行这里")
- // var results []LicenseRecordToEmails
- // for rows.Next() {
- // var lRU LicenseRecordToEmails
- // err = rows.Scan(
- // &lRU.LicenseUniqueID,
- // &lRU.Emails,
- // &lRU.OperatorUniqueID,
- // &lRU.UpTime,
- // )
- // if err != nil {
- // global.Logger.Errorln("scan row: ", err.Error())
- // return nil, fmt.Errorf("scan row error: %v", err)
- // }
- // results = append(results, lRU)
- // }
- // if err = rows.Err(); err != nil {
- // global.Logger.Errorln("rows error: ", err.Error())
- // return nil, fmt.Errorf("rows error: %v", err)
- // }
- // return results, nil
- // }
- // func UpdatelicenseInfoRow(license LicenseInfo) error {
- // tx, err := global.XuguDB.Begin()
- // if err != nil {
- // return fmt.Errorf("begin transaction: %v", err)
- // }
- // defer func() {
- // if err != nil {
- // tx.Rollback()
- // } else {
- // err = tx.Commit()
- // }
- // }()
- // _, err = tx.Exec(`
- // UPDATE LICENSEAPPLICATION SET Creator =? ,ApplicationDate =? ,AssociatedProject = ? ,
- // SalesPerson = ? , SalesEmail = ? , SupportPerson = ? , SupportEmail = ? , TotalNodes = ? ,
- // Company = ? , ProductName = ? , Version = ? , NodeCount = ?
- // WHERE UniqueID =?;
- // `, license.Creator, license.ApplicationDate, license.AssociatedProject,
- // license.SalesPerson, license.SalesEmail, license.SupportPerson, license.SupportEmail, license.TotalNodes,
- // license.Company, license.ProductName, license.Version, license.NodeCount, license.UniqueID)
- // if err != nil {
- // global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
- // return err
- // }
- // return nil
- // }
|