Browse Source

修改查询渲染方式以及sql

GTong 8 months ago
parent
commit
4e7781b39b

+ 7 - 3
config.toml

@@ -1,11 +1,15 @@
+[config]
+ip = "127.0.0.1"
+port = "8080"
+
 [database]
-oadb_ip = "10.28.20.233"
+oadb_ip = "127.0.0.1"
 oadb_port = "5138"
 oadb_db = "OAdb"
 oadb_user = "SYSDBA"
 oadb_password = "SYSDBA"
 
-licdb_ip = "10.28.20.233"
+licdb_ip = "127.0.0.1"
 licdb_port = "5138"
 licdb_db = "license"
 licdb_user = "SYSDBA"
@@ -14,4 +18,4 @@ licdb_password = "SYSDBA"
 
 
 [logs]
-lic_logs = "/logs"
+lic_log = "/logs"

+ 9 - 0
internal/global/config.go

@@ -8,6 +8,13 @@ import (
 
 type Config struct {
 	Database DatabaseConfig `toml:"database"`
+	App      AppConfig      `toml:"config"`
+	Logs     LogConfig      `toml:"logs"`
+}
+
+type AppConfig struct {
+	Ip   string `toml:"ip"`
+	Port string `toml:"port"`
 }
 
 type DatabaseConfig struct {
@@ -22,7 +29,9 @@ type DatabaseConfig struct {
 	LicDBDb   string `toml:"licdb_db"`
 	LicDBUser string `toml:"licdb_user"`
 	LicDBPass string `toml:"licdb_password"`
+}
 
+type LogConfig struct {
 	LicLog string `toml:"lic_log"`
 }
 

+ 14 - 12
internal/global/global.go

@@ -12,24 +12,26 @@ import (
 
 var XuguDB *sql.DB
 var OaDB *sql.DB
+var Cfg *Config
 
 //var LicCache *license_cache.Cache
 
 func InitDb() {
-	cfg := LoadConfig("./config.toml")
-	fmt.Println("cfg", cfg)
+	Cfg = LoadConfig("./config.toml")
+	fmt.Println("Cfg", Cfg)
 	licDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
-		cfg.Database.LicDBIP,
-		cfg.Database.LicDBDb,
-		cfg.Database.LicDBUser,
-		cfg.Database.LicDBPass,
-		cfg.Database.LicDBPort)
+		Cfg.Database.LicDBIP,
+		Cfg.Database.LicDBDb,
+		Cfg.Database.LicDBUser,
+		Cfg.Database.LicDBPass,
+		Cfg.Database.LicDBPort)
 	oaDbstr := fmt.Sprintf("IP=%s;DB=%s;User=%s;PWD=%s;Port=%s;AUTO_COMMIT=on;CHAR_SET=UTF8",
-		cfg.Database.OADBIP,
-		cfg.Database.OADBDb,
-		cfg.Database.OADBUser,
-		cfg.Database.OADBPass,
-		cfg.Database.OADBPort)
+		Cfg.Database.OADBIP,
+		Cfg.Database.OADBDb,
+		Cfg.Database.OADBUser,
+		Cfg.Database.OADBPass,
+		Cfg.Database.OADBPort)
+		
 	var err error
 	XuguDB, err = sql.Open("xugusql", licDbstr)
 	if err != nil {

+ 5 - 5
internal/global/logs.go

@@ -64,16 +64,16 @@ func newHook(writer io.Writer, formatter logrus.Formatter, level logrus.Level) *
 // InitLogs 函数负责初始化 logrus.Logger 对象。它首先检查是否存在指定的日志目录(默认为 ./logs/)。
 // 如果目录不存在,它会创建该目录。
 func InitLogs(logFilePath string, logLevelStr string) *logrus.Logger {
-	dir := "./logs/"
+	//dir := "./logs/"
 	// 检查目录是否存在
-	if _, err := os.Stat(dir); os.IsNotExist(err) {
+	if _, err := os.Stat(logFilePath); os.IsNotExist(err) {
 		// 目录不存在,创建目录
-		err := os.MkdirAll(dir, os.ModePerm)
+		err := os.MkdirAll(logFilePath, os.ModePerm)
 		if err != nil {
 			fmt.Println("Error creating directory:", err)
 			return nil
 		}
-		fmt.Println("Directory created:", dir)
+		fmt.Println("Directory created:", logFilePath)
 	}
 
 	// 尝试将 logLevelStr 转换为 logrus.Level。如果转换失败,则默认使用 InfoLevel 级别。
@@ -93,7 +93,7 @@ func InitLogs(logFilePath string, logLevelStr string) *logrus.Logger {
 
 	// 使用当前日期生成日志文件名,格式为 `log-YYYY-MM-DD.log`
 	currentDate := time.Now().Format("2006-01-02")
-	logFileName := fmt.Sprintf("%slog-%s.log", logFilePath, currentDate)
+	logFileName := fmt.Sprintf("%s/log-%s.log", logFilePath, currentDate)
 
 	// 打开或创建日志文件。日志文件的路径由 logFilePath 参数指定。
 	logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)

+ 485 - 0
internal/models/license_info_models.go

@@ -0,0 +1,485 @@
+package models
+
+import (
+	"database/sql"
+	"fmt"
+	"log"
+	"time"
+	"xugu_license/internal/global"
+)
+
+type OALicenseInfo struct {
+	LicInfo     TargetOALicenseInfo
+	GenrateInfo LicenseGenerateInfo
+}
+
+type TargetOALicenseInfo struct {
+	ID                     sql.NullInt32  `json:"id"` // 自增主键,从1开始,每次递增1
+	OAId                   sql.NullInt64  `json:"OA_Id"`
+	UniqueID               sql.NullString `json:"unique_id"`                 // 每行数据的唯一值ID,理论上有oa的REQUESTID就可以了
+	OARequestID            sql.NullInt64  `json:"oa_request_id"`             // oa里的申请单请求ID,假设唯一标识
+	OARequestName          sql.NullString `json:"oa_request_name"`           // 请求名称
+	OARequestNameNew       sql.NullString `json:"oa_request_name_new"`       // 新请求名称
+	OARequestNameHTMLNew   sql.NullString `json:"oa_request_name_html_new"`  // 新请求名称(HTML格式)
+	OAGLXMID               sql.NullInt64  `json:"oa_glxm_id"`                // 关联项目ID
+	OAGLXMName             sql.NullString `json:"oa_glxm_name"`              // 关联项目
+	OASQSJ                 sql.NullString `json:"oa_sqsj"`                   // 申请时间
+	OASalespersonName      sql.NullString `json:"oa_salesperson_name"`       // 销售人员名称
+	OAXSJSYX               sql.NullString `json:"oa_xsjsyx"`                 // 销售邮箱
+	OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称
+	OAJFJSYX               sql.NullString `json:"oa_jfjsyx"`                 // 运维邮箱
+	OASYDW                 sql.NullString `json:"oa_sydw"`                   // 使用单位
+	OAXMXXMS               sql.NullString `json:"oa_xmxxms"`                 // 项目详细描述
+	OAJDS                  sql.NullInt64  `json:"oa_jds"`                    // 节点数
+	OANodeCount            sql.NullInt64  `json:"oa_node_count"`             // 总节点数
+	OAProductCode          sql.NullString `json:"oa_product_code"`           // 产品编号
+	OAProductName          sql.NullString `json:"oa_product_name"`           // 产品名称
+	OAProductVersion       sql.NullString `json:"oa_product_version"`        // 产品版本
+	OACPU                  sql.NullString `json:"oa_cpu"`                    // CPU 信息
+	OAOperatingSystem      sql.NullString `json:"oa_operating_system"`       // 操作系统信息
+	OAMainMAC              sql.NullString `json:"oa_main_mac"`               // 主 MAC 地址
+	OASecondMAC            sql.NullString `json:"oa_second_mac"`             // 副 MAC 地址
+	OACreationDate         sql.NullString `json:"oa_creation_date"`          // 创建日期
+	OACreationTime         sql.NullString `json:"oa_creation_time"`          // 创建时间
+	OALastOperateDate      sql.NullString `json:"oa_last_operate_date"`      // 最后操作日期
+	OALastOperateTime      sql.NullString `json:"oa_last_operate_time"`      // 最后操作时间
+	CaptureTime            sql.NullTime   `json:"capture_time"`              // 抓取时间,用于记录数据抓取的时间
+	DelTime                sql.NullTime   `json:"del_Time"`                  //该行的删除时间
+	LastOperateTime        sql.NullTime   `json:"LAST_OPERATE_TIME"`         // 该表的行最后操作时间,非oa表中的最后操作时间'
+}
+
+type LicenseGenerateInfo struct {
+	ID              sql.NullInt32  `json:"id"` // 自增主键,从1开始,每次递增1
+	OAId            sql.NullInt32  `json:"OA_Id"`
+	LicenseUniqueID sql.NullString `json:"license_unique_id"` // LicenseApplication表的唯一值ID
+	LicenseFlage    sql.NullString `json:"license_flage"`     // License分发状态
+	Lic1            sql.NullString `json:"lic1"`              // 主License
+	Lic2            sql.NullString `json:"lic2"`              // 副License
+	CreatorGenerate sql.NullTime   `json:"creator_generate"`  // 生成时间
+}
+
+// 获取多个或单个license信息,或者指定某个用户能查询到的所有license信息
+func GetOALicenseInfo(page int, pageSize int, permission string, licUniqueID string, userUniqueID string, OA_REQUESTID string) (*[]OALicenseInfo, int, error) {
+	//offset := (page - 1) * pageSize
+	// 查询总记录数
+	// var total int
+	// err := global.XuguDB.QueryRow(`SELECT COUNT(*) FROM target_OA_license WHERE del_Time IS NULL`).Scan(&total)
+	// if err != nil {
+	// 	return nil, 0, fmt.Errorf("GetOALicenseInfocount query error: %v", err)
+	// }
+
+	switch {
+	// 根据LicUniqueID查询指定页的数据
+	case licUniqueID != "":
+		data, err := getSingleLicInfoByUniqueID(licUniqueID)
+		if err != nil {
+			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
+		}
+
+		return &[]OALicenseInfo{*data}, 1, nil
+
+	// 根据userUniqueID查询指定页的数据 未完成
+	case userUniqueID != "":
+		data, err := getLicInfoByUserUniqueID(userUniqueID, pageSize, page)
+		if err != nil {
+			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
+		}
+
+		return data, 1, nil
+	//case permission == "read_license":
+	//读取所有的lic信息
+	case permission == "read_all_license":
+		data, total, err := getAllLicInfo(pageSize, page)
+		if err != nil {
+			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
+		}
+		return data, total, nil
+		//读取所有
+	case OA_REQUESTID != "":
+		data, err := getLicInfoByOA_REQUESTID(OA_REQUESTID)
+		if err != nil {
+			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
+		}
+		return data, len(*data), nil
+	}
+
+	return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID 没有指定查询条件")
+
+}
+
+func getAllLicInfo(limit int, offset int) (*[]OALicenseInfo, int, error) {
+	fmt.Println("getAllLicInfo", limit, offset)
+	total := 0
+	err := global.XuguDB.QueryRow(`
+SELECT COUNT(*) from (SELECT OA_REQUESTID AS RequestCount
+FROM TARGET_OA_LICENSE
+where  Del_Time IS NULL
+GROUP BY OA_REQUESTID 
+)
+HAVING COUNT(*) > 1;`).Scan(&total)
+	if err != nil {
+		return nil, 0, fmt.Errorf("count query error: %v", err)
+	}
+
+	sql := `
+						SELECT *
+FROM SYSDBA.TARGET_OA_LICENSE  tl 
+INNER JOIN 
+			License_generate_Info li
+		ON 
+			tl.Unique_ID = li.License_UniqueID
+		WHERE OA_REQUESTID  IN(
+		SELECT OA_REQUESTID FROM (
+		SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID  FROM TARGET_OA_LICENSE) a) s
+								WHERE a BETWEEN ? AND ?)
+		AND tl.del_Time IS NULL
+
+`
+	rows, err := global.XuguDB.Query(sql, limit, offset)
+	if err != nil {
+		global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
+		return nil, 0, fmt.Errorf("getAllLicInfo query error: %v", err)
+	}
+	defer rows.Close()
+
+	var results []OALicenseInfo
+	for rows.Next() {
+		var info OALicenseInfo
+		err := rows.Scan(
+			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
+			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
+			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
+			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
+			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
+			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
+			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
+			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
+			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
+			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
+			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
+			&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
+			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
+		)
+		if err != nil {
+			global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
+			return nil, 0, fmt.Errorf("getAllLicInfo scan error: %v", err)
+		}
+		results = append(results, info)
+	}
+
+	// 打印结果或进一步处理
+	// for _, result := range results {
+	// 	fmt.Println(result)
+	// }
+	return &results, total, nil
+}
+
+func getSingleLicInfoByUniqueID(unique_ID string) (*OALicenseInfo, error) {
+	sql := `
+	SELECT 
+		la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
+		la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
+		la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
+		la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
+		la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
+		la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
+		la.del_Time, la.LAST_OPERATE_TIME,
+		li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
+	FROM 
+		target_OA_license la
+	INNER JOIN 
+		License_generate_Info li
+	ON 
+		la.Unique_ID = li.License_UniqueID
+	WHERE 
+		la.del_Time IS NULL
+	AND 
+		la.Unique_ID = ?`
+
+	rows, err := global.XuguDB.Query(sql, unique_ID)
+	if err != nil {
+		global.Logger.Errorln("getOAlicInfoToUniqueID 数据查询失败: ", err.Error())
+		return nil, fmt.Errorf("getOAlicInfoToUniqueID 数据查询失败: %v", err)
+	}
+	defer rows.Close()
+
+	var info OALicenseInfo
+	rows.Next()
+
+	err = rows.Scan(
+
+		&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
+		&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
+		&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
+		&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
+		&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
+		&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
+		&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
+		&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
+		&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
+		&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
+		&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
+		&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
+		&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
+	)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	return &info, nil
+}
+
+func getLicInfoByUserUniqueID(userUniqueID string, limit int, offset int) (*[]OALicenseInfo, error) {
+	sql := `
+	 SELECT     la.ID, la.Unique_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
+            la.OA_REQUESTNAMEHTMLNEW,
+			la.OA_GLXMID ,la.OA_GLXMNAME,
+			la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
+            la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
+            la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
+            la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
+            la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
+            la.del_Time, la.LAST_OPERATE_TIME,
+            li.ID AS License_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
+FROM SYSDBA.TARGET_OA_LICENSE  la 
+INNER JOIN 
+			License_generate_Info li
+		ON 
+			la.Unique_ID = li.License_UniqueID
+INNER JOIN 
+			LICENSERECORDTOUSER LU 
+		ON
+			la.UNIQUE_ID = lu.LICENSE_UNIQUEID 
+				AND lu.USER_UNIQUEID = ?
+				
+		WHERE OA_REQUESTID IN(
+			SELECT OA_REQUESTID FROM (
+		SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID FROM LICENSERECORDTOUSER) a) s
+								WHERE a BETWEEN ? AND ?) 
+								
+		AND la.del_Time IS NULL
+	
+
+`
+	rows, err := global.XuguDB.Query(sql, userUniqueID, limit, offset)
+	if err != nil {
+		global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
+		return nil, fmt.Errorf("getAllLicInfo query error: %v", err)
+	}
+	defer rows.Close()
+
+	var results []OALicenseInfo
+	for rows.Next() {
+		var info OALicenseInfo
+		err := rows.Scan(
+			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OARequestID,
+			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
+			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
+			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
+			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
+			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
+			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
+			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
+			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
+			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
+			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
+			&info.GenrateInfo.ID, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
+			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
+		)
+		if err != nil {
+			global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
+			return nil, fmt.Errorf("getAllLicInfo scan error: %v", err)
+		}
+		results = append(results, info)
+	}
+
+	// 打印结果或进一步处理
+	for _, result := range results {
+		fmt.Println(result)
+	}
+	return &results, nil
+}
+
+func getLicInfoByOA_REQUESTID(unique_ID string) (*[]OALicenseInfo, error) {
+	sql := `
+	SELECT 
+		la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
+		la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
+		la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
+		la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
+		la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
+		la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
+		la.del_Time, la.LAST_OPERATE_TIME,
+		li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
+	FROM 
+		target_OA_license la
+	INNER JOIN 
+		License_generate_Info li
+	ON 
+		la.Unique_ID = li.License_UniqueID
+	WHERE 
+		la.del_Time IS NULL
+	AND 
+		la.OA_REQUESTID = ?`
+
+	rows, err := global.XuguDB.Query(sql, unique_ID)
+	if err != nil {
+		global.Logger.Errorln("getLicInfoByOAUniqueID 数据查询失败: ", err.Error())
+		return nil, fmt.Errorf("getLicInfoByOAUniqueID 数据查询失败: %v", err)
+	}
+	defer rows.Close()
+	var rest []OALicenseInfo
+	for rows.Next() {
+		var info OALicenseInfo
+		err = rows.Scan(
+			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
+			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
+			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
+			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
+			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
+			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
+			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
+			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
+			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
+			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
+			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
+			&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
+			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
+		)
+		if err != nil {
+			log.Fatal(err)
+		}
+		rest = append(rest, info)
+	}
+
+	return &rest, nil
+}
+
+// 插入生成好的lic1,2的信息
+func UpdateOALicenseStr(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 License_generate_Info SET License_Flage = ? ,lic1 = ?,Creator_generate =?  WHERE License_UniqueID = ?
+	`,
+			"已生成", string(lic1), time.Now(), uniqueID)
+	} else {
+		_, err = tx.Exec(`
+UPDATE License_generate_Info SET License_Flage = ? ,lic1 = ?,lic2 = ?,Creator_generate =?   WHERE License_UniqueID = ?
+	`,
+			"已生成", string(lic1), string(lic2), time.Now(), uniqueID)
+	}
+
+	if err != nil {
+		global.Logger.Errorln("插入lic1 ,2 失败:  ", err.Error())
+		return err
+	}
+	return nil
+}
+
+// 修改一行前端可改的license信息
+func UpdatelicenseInfoRow(license OALicenseInfo) 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 target_OA_license SET OA_REQUESTNAME =? ,OA_CREATIONDATE =? ,OA_GLXMNAME = ? ,
+		OA_SALESPERSONNAME = ? , OA_XSJSYX = ?  , OA_OPERATIONSPERSONNAME = ? , OA_JFJSYX = ? , OA_JDS = ? ,
+		OA_SYDW = ? , OA_PRODUCTNAME = ? , OA_PRODUCTVERSION = ? , OA_NODECOUNT = ? 
+		WHERE  Unique_ID =?;
+	`, license.LicInfo.OARequestName.String, license.LicInfo.OACreationDate.String, license.LicInfo.OAGLXMName.String,
+		license.LicInfo.OASalespersonName.String, license.LicInfo.OAXSJSYX.String, license.LicInfo.OAOperationsPersonName.String, license.LicInfo.OAJFJSYX.String, license.LicInfo.OAJDS.Int64,
+		license.LicInfo.OASYDW.String, license.LicInfo.OAProductName.String, license.LicInfo.OAProductVersion.String, license.LicInfo.OANodeCount.Int64, license.LicInfo.UniqueID.String)
+	if err != nil {
+		global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
+		return err
+	}
+
+	return nil
+}
+
+// 修改一行LICENSE_GENERATE_INFO信息
+func UpdatelicenseGenerateInfoRow(license OALicenseInfo) 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 LICENSE_GENERATE_INFO SET LICENSE_FLAGE =? ,LIC1 =? ,LIC2 = ? ,
+		CREATOR_GENERATE = ? 
+		WHERE  LICENSE_UNIQUEID =?;
+	`, "已失效", nil, nil, time.Now(), license.LicInfo.UniqueID.String)
+	if err != nil {
+		global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
+		return err
+	}
+
+	return nil
+}
+
+// 删除LicenseApplication和LicenseInfo表中的数据
+func DelLicenseInfoRow(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 target_OA_license SET Del_Time = ?  WHERE Unique_ID = ?", time.Now(), uniqueID)
+	if err != nil {
+		return err
+	}
+	return nil
+}

+ 30 - 494
internal/models/license_oa_models.go

@@ -10,56 +10,6 @@ import (
 	"xugu_license/internal/global"
 )
 
-type OALicenseInfo struct {
-	LicInfo     TargetOALicenseInfo
-	GenrateInfo LicenseGenerateInfo
-}
-
-type TargetOALicenseInfo struct {
-	ID                     sql.NullInt32  `json:"id"` // 自增主键,从1开始,每次递增1
-	OAId                   sql.NullInt64  `json:"OA_Id"`
-	UniqueID               sql.NullString `json:"unique_id"`                 // 每行数据的唯一值ID,理论上有oa的REQUESTID就可以了
-	OARequestID            sql.NullInt64  `json:"oa_request_id"`             // oa里的申请单请求ID,假设唯一标识
-	OARequestName          sql.NullString `json:"oa_request_name"`           // 请求名称
-	OARequestNameNew       sql.NullString `json:"oa_request_name_new"`       // 新请求名称
-	OARequestNameHTMLNew   sql.NullString `json:"oa_request_name_html_new"`  // 新请求名称(HTML格式)
-	OAGLXMID               sql.NullInt64  `json:"oa_glxm_id"`                // 关联项目ID
-	OAGLXMName             sql.NullString `json:"oa_glxm_name"`              // 关联项目
-	OASQSJ                 sql.NullString `json:"oa_sqsj"`                   // 申请时间
-	OASalespersonName      sql.NullString `json:"oa_salesperson_name"`       // 销售人员名称
-	OAXSJSYX               sql.NullString `json:"oa_xsjsyx"`                 // 销售邮箱
-	OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称
-	OAJFJSYX               sql.NullString `json:"oa_jfjsyx"`                 // 运维邮箱
-	OASYDW                 sql.NullString `json:"oa_sydw"`                   // 使用单位
-	OAXMXXMS               sql.NullString `json:"oa_xmxxms"`                 // 项目详细描述
-	OAJDS                  sql.NullInt64  `json:"oa_jds"`                    // 节点数
-	OANodeCount            sql.NullInt64  `json:"oa_node_count"`             // 总节点数
-	OAProductCode          sql.NullString `json:"oa_product_code"`           // 产品编号
-	OAProductName          sql.NullString `json:"oa_product_name"`           // 产品名称
-	OAProductVersion       sql.NullString `json:"oa_product_version"`        // 产品版本
-	OACPU                  sql.NullString `json:"oa_cpu"`                    // CPU 信息
-	OAOperatingSystem      sql.NullString `json:"oa_operating_system"`       // 操作系统信息
-	OAMainMAC              sql.NullString `json:"oa_main_mac"`               // 主 MAC 地址
-	OASecondMAC            sql.NullString `json:"oa_second_mac"`             // 副 MAC 地址
-	OACreationDate         sql.NullString `json:"oa_creation_date"`          // 创建日期
-	OACreationTime         sql.NullString `json:"oa_creation_time"`          // 创建时间
-	OALastOperateDate      sql.NullString `json:"oa_last_operate_date"`      // 最后操作日期
-	OALastOperateTime      sql.NullString `json:"oa_last_operate_time"`      // 最后操作时间
-	CaptureTime            sql.NullTime   `json:"capture_time"`              // 抓取时间,用于记录数据抓取的时间
-	DelTime                sql.NullTime   `json:"del_Time"`                  //该行的删除时间
-	LastOperateTime        sql.NullTime   `json:"LAST_OPERATE_TIME"`         // 该表的行最后操作时间,非oa表中的最后操作时间'
-}
-
-type LicenseGenerateInfo struct {
-	ID              sql.NullInt32  `json:"id"` // 自增主键,从1开始,每次递增1
-	OAId            sql.NullInt32  `json:"OA_Id"`
-	LicenseUniqueID sql.NullString `json:"license_unique_id"` // LicenseApplication表的唯一值ID
-	LicenseFlage    sql.NullString `json:"license_flage"`     // License分发状态
-	Lic1            sql.NullString `json:"lic1"`              // 主License
-	Lic2            sql.NullString `json:"lic2"`              // 副License
-	CreatorGenerate sql.NullTime   `json:"creator_generate"`  // 生成时间
-}
-
 // LicenseRecord 包含 LicenseRecordToUser 和 LicenseRecordToEmails 两个结构体
 type LicenseRecord struct {
 	LicenseRecordToUser   []LicenseRecordToUser   `json:"license_record_to_user"`
@@ -87,399 +37,6 @@ type LicenseRecordToEmails struct {
 	DelTime          time.Time `json:"del_time"` // 删除或失效的时间
 }
 
-// 获取多个或单个license信息,或者指定某个用户能查询到的所有license信息
-func GetOALicenseInfo(page int, pageSize int, permission string, licUniqueID string, userUniqueID string, OA_REQUESTID string) (*[]OALicenseInfo, int, error) {
-	//offset := (page - 1) * pageSize
-	// 查询总记录数
-	// var total int
-	// err := global.XuguDB.QueryRow(`SELECT COUNT(*) FROM target_OA_license WHERE del_Time IS NULL`).Scan(&total)
-	// if err != nil {
-	// 	return nil, 0, fmt.Errorf("GetOALicenseInfocount query error: %v", err)
-	// }
-
-	switch {
-	// 根据LicUniqueID查询指定页的数据
-	case licUniqueID != "":
-		data, err := getSingleLicInfoByUniqueID(licUniqueID)
-		if err != nil {
-			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
-		}
-
-		return &[]OALicenseInfo{*data}, 1, nil
-
-	// 根据userUniqueID查询指定页的数据 未完成
-	case userUniqueID != "":
-		data, err := getLicInfoByUserUniqueID(userUniqueID, pageSize, page)
-		if err != nil {
-			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
-		}
-
-		return data, 1, nil
-	//case permission == "read_license":
-	//读取所有的lic信息
-	case permission == "read_all_license":
-		data, total, err := getAllLicInfo(userUniqueID, pageSize, page)
-		if err != nil {
-			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
-		}
-		return data, total, nil
-		//读取所有
-	case OA_REQUESTID != "":
-		data, err := getLicInfoByOA_REQUESTID(OA_REQUESTID)
-		if err != nil {
-			return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID query error: %v", err)
-		}
-		return data, len(*data), nil
-	}
-
-	return nil, 0, fmt.Errorf("getOAlicInfoToUniqueID 没有指定查询条件")
-
-}
-
-func getAllLicInfo(userUniqueID string, limit int, offset int) (*[]OALicenseInfo, int, error) {
-	fmt.Println("getAllLicInfo", limit, offset)
-	total := 0
-	err := global.XuguDB.QueryRow(`
-SELECT COUNT(*) from (SELECT OA_REQUESTID AS RequestCount
-FROM TARGET_OA_LICENSE
-where  Del_Time IS NULL
-GROUP BY OA_REQUESTID 
-)
-HAVING COUNT(*) > 1;`).Scan(&total)
-	if err != nil {
-		return nil, 0, fmt.Errorf("count query error: %v", err)
-	}
-
-	sql := `
-						SELECT *
-FROM SYSDBA.TARGET_OA_LICENSE  tl 
-INNER JOIN 
-			License_generate_Info li
-		ON 
-			tl.Unique_ID = li.License_UniqueID
-		WHERE OA_REQUESTID  IN(
-		SELECT OA_REQUESTID FROM (
-		SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID  FROM TARGET_OA_LICENSE) a) s
-								WHERE a BETWEEN ? AND ?)
-		AND tl.del_Time IS NULL
-
-`
-	rows, err := global.XuguDB.Query(sql, limit, offset)
-	if err != nil {
-		global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
-		return nil, 0, fmt.Errorf("getAllLicInfo query error: %v", err)
-	}
-	defer rows.Close()
-
-	var results []OALicenseInfo
-	for rows.Next() {
-		var info OALicenseInfo
-		err := rows.Scan(
-			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
-			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
-			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
-			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
-			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
-			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
-			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
-			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
-			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
-			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
-			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
-			&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
-			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
-		)
-		if err != nil {
-			global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
-			return nil, 0, fmt.Errorf("getAllLicInfo scan error: %v", err)
-		}
-		results = append(results, info)
-	}
-
-	// 打印结果或进一步处理
-	// for _, result := range results {
-	// 	fmt.Println(result)
-	// }
-	return &results, total, nil
-}
-
-func getSingleLicInfoByUniqueID(unique_ID string) (*OALicenseInfo, error) {
-	sql := `
-	SELECT 
-		la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
-		la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
-		la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
-		la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
-		la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
-		la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
-		la.del_Time, la.LAST_OPERATE_TIME,
-		li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
-	FROM 
-		target_OA_license la
-	INNER JOIN 
-		License_generate_Info li
-	ON 
-		la.Unique_ID = li.License_UniqueID
-	WHERE 
-		la.del_Time IS NULL
-	AND 
-		la.Unique_ID = ?`
-
-	rows, err := global.XuguDB.Query(sql, unique_ID)
-	if err != nil {
-		global.Logger.Errorln("getOAlicInfoToUniqueID 数据查询失败: ", err.Error())
-		return nil, fmt.Errorf("getOAlicInfoToUniqueID 数据查询失败: %v", err)
-	}
-	defer rows.Close()
-
-	var info OALicenseInfo
-	rows.Next()
-
-	err = rows.Scan(
-
-		&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
-		&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
-		&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
-		&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
-		&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
-		&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
-		&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
-		&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
-		&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
-		&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
-		&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
-		&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
-		&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
-	)
-	if err != nil {
-		log.Fatal(err)
-	}
-
-	return &info, nil
-}
-
-func getLicInfoByUserUniqueID(userUniqueID string, limit int, offset int) (*[]OALicenseInfo, error) {
-	sql := `
-	 SELECT     la.ID, la.Unique_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
-            la.OA_REQUESTNAMEHTMLNEW,
-			la.OA_GLXMID ,la.OA_GLXMNAME,
-			la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
-            la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
-            la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
-            la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
-            la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
-            la.del_Time, la.LAST_OPERATE_TIME,
-            li.ID AS License_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
-FROM SYSDBA.TARGET_OA_LICENSE  la 
-INNER JOIN 
-			License_generate_Info li
-		ON 
-			la.Unique_ID = li.License_UniqueID
-INNER JOIN 
-			LICENSERECORDTOUSER LU 
-		ON
-			la.UNIQUE_ID = lu.LICENSE_UNIQUEID 
-				AND lu.USER_UNIQUEID = ?
-				
-		WHERE OA_REQUESTID IN(
-			SELECT OA_REQUESTID FROM (
-		SELECT OA_REQUESTID ,rownum AS a FROM (SELECT DISTINCT OA_REQUESTID FROM LICENSERECORDTOUSER) a) s
-								WHERE a BETWEEN ? AND ?) 
-								
-		AND la.del_Time IS NULL
-	
-
-`
-	rows, err := global.XuguDB.Query(sql, userUniqueID, limit, offset)
-	if err != nil {
-		global.Logger.Errorln(" getAllLicInfo rows not found ", err.Error())
-		return nil, fmt.Errorf("getAllLicInfo query error: %v", err)
-	}
-	defer rows.Close()
-
-	var results []OALicenseInfo
-	for rows.Next() {
-		var info OALicenseInfo
-		err := rows.Scan(
-			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OARequestID,
-			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
-			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
-			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
-			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
-			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
-			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
-			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
-			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
-			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
-			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
-			&info.GenrateInfo.ID, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
-			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
-		)
-		if err != nil {
-			global.Logger.Errorln(" getAllLicInfo scan error: ", err.Error())
-			return nil, fmt.Errorf("getAllLicInfo scan error: %v", err)
-		}
-		results = append(results, info)
-	}
-
-	// 打印结果或进一步处理
-	for _, result := range results {
-		fmt.Println(result)
-	}
-	return &results, nil
-}
-
-func getLicInfoByOA_REQUESTID(unique_ID string) (*[]OALicenseInfo, error) {
-	sql := `
-	SELECT 
-		la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
-		la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
-		la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
-		la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
-		la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
-		la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
-		la.del_Time, la.LAST_OPERATE_TIME,
-		li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
-	FROM 
-		target_OA_license la
-	INNER JOIN 
-		License_generate_Info li
-	ON 
-		la.Unique_ID = li.License_UniqueID
-	WHERE 
-		la.del_Time IS NULL
-	AND 
-		la.OA_REQUESTID = ?`
-
-	rows, err := global.XuguDB.Query(sql, unique_ID)
-	if err != nil {
-		global.Logger.Errorln("getLicInfoByOAUniqueID 数据查询失败: ", err.Error())
-		return nil, fmt.Errorf("getLicInfoByOAUniqueID 数据查询失败: %v", err)
-	}
-	defer rows.Close()
-	var rest []OALicenseInfo
-	for rows.Next() {
-		var info OALicenseInfo
-		err = rows.Scan(
-			&info.LicInfo.ID, &info.LicInfo.UniqueID, &info.LicInfo.OAId, &info.LicInfo.OARequestID,
-			&info.LicInfo.OARequestName, &info.LicInfo.OARequestNameNew, &info.LicInfo.OARequestNameHTMLNew,
-			&info.LicInfo.OAGLXMID, &info.LicInfo.OAGLXMName,
-			&info.LicInfo.OASQSJ, &info.LicInfo.OASalespersonName, &info.LicInfo.OAXSJSYX,
-			&info.LicInfo.OAOperationsPersonName, &info.LicInfo.OAJFJSYX, &info.LicInfo.OASYDW,
-			&info.LicInfo.OAXMXXMS, &info.LicInfo.OAJDS, &info.LicInfo.OANodeCount,
-			&info.LicInfo.OAProductCode, &info.LicInfo.OAProductName, &info.LicInfo.OAProductVersion,
-			&info.LicInfo.OACPU, &info.LicInfo.OAOperatingSystem, &info.LicInfo.OAMainMAC,
-			&info.LicInfo.OASecondMAC, &info.LicInfo.OACreationDate, &info.LicInfo.OACreationTime,
-			&info.LicInfo.OALastOperateDate, &info.LicInfo.OALastOperateTime, &info.LicInfo.CaptureTime,
-			&info.LicInfo.DelTime, &info.LicInfo.LastOperateTime,
-			&info.GenrateInfo.ID, &info.GenrateInfo.OAId, &info.GenrateInfo.LicenseUniqueID, &info.GenrateInfo.LicenseFlage,
-			&info.GenrateInfo.Lic1, &info.GenrateInfo.Lic2, &info.GenrateInfo.CreatorGenerate,
-		)
-		if err != nil {
-			log.Fatal(err)
-		}
-		rest = append(rest, info)
-	}
-
-	return &rest, nil
-}
-
-// 插入生成好的lic1,2的信息
-func UpdateOALicenseStr(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 License_generate_Info SET License_Flage = ? ,lic1 = ?,Creator_generate =?  WHERE License_UniqueID = ?
-	`,
-			"已生成", string(lic1), time.Now(), uniqueID)
-	} else {
-		_, err = tx.Exec(`
-UPDATE License_generate_Info SET License_Flage = ? ,lic1 = ?,lic2 = ?,Creator_generate =?   WHERE License_UniqueID = ?
-	`,
-			"已生成", string(lic1), string(lic2), time.Now(), uniqueID)
-	}
-
-	if err != nil {
-		global.Logger.Errorln("插入lic1 ,2 失败:  ", err.Error())
-		return err
-	}
-	return nil
-}
-
-// 修改一行前端可改的license信息
-func UpdatelicenseInfoRow(license OALicenseInfo) 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 target_OA_license SET OA_REQUESTNAME =? ,OA_CREATIONDATE =? ,OA_GLXMNAME = ? ,
-		OA_SALESPERSONNAME = ? , OA_XSJSYX = ?  , OA_OPERATIONSPERSONNAME = ? , OA_JFJSYX = ? , OA_JDS = ? ,
-		OA_SYDW = ? , OA_PRODUCTNAME = ? , OA_PRODUCTVERSION = ? , OA_NODECOUNT = ? 
-		WHERE  Unique_ID =?;
-	`, license.LicInfo.OARequestName.String, license.LicInfo.OACreationDate.String, license.LicInfo.OAGLXMName.String,
-		license.LicInfo.OASalespersonName.String, license.LicInfo.OAXSJSYX.String, license.LicInfo.OAOperationsPersonName.String, license.LicInfo.OAJFJSYX.String, license.LicInfo.OAJDS.Int64,
-		license.LicInfo.OASYDW.String, license.LicInfo.OAProductName.String, license.LicInfo.OAProductVersion.String, license.LicInfo.OANodeCount.Int64, license.LicInfo.UniqueID.String)
-	if err != nil {
-		global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
-		return err
-	}
-
-	return nil
-}
-
-// 修改一行LICENSE_GENERATE_INFO信息
-func UpdatelicenseGenerateInfoRow(license OALicenseInfo) 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 LICENSE_GENERATE_INFO SET LICENSE_FLAGE =? ,LIC1 =? ,LIC2 = ? ,
-		CREATOR_GENERATE = ? 
-		WHERE  LICENSE_UNIQUEID =?;
-	`, "已失效", nil, nil, time.Now(), license.LicInfo.UniqueID.String)
-	if err != nil {
-		global.Logger.Errorln("UpdatelicenseInfoRow失败 ", err.Error())
-		return err
-	}
-
-	return nil
-}
-
 // 插入分发记录用户表
 func InsertlicenseRecordByUserRow(oaRequestID string, LicenseUniqueID string, userUniqueID string, UserAccount string, operatorUniqueID string) error {
 
@@ -535,7 +92,7 @@ func InsertlicenseRecordByEmailRow(oaRequestID, LicenseUniqueID string, emails s
 
 }
 
-// 搜索分发记录用户表
+// 获取分发记录用户表
 func GetlicenseRecordByUser(OA_REQUESTID int, License_UniqueID string) ([]LicenseRecordToUser, error) {
 	fmt.Println("搜索分发记录表 OA_REQUESTID", OA_REQUESTID)
 
@@ -580,7 +137,7 @@ func GetlicenseRecordByUser(OA_REQUESTID int, License_UniqueID string) ([]Licens
 	return results, nil
 }
 
-// 搜索分发记录邮箱表
+// 获取分发记录邮箱表
 func GetlicenseRecordByEmail(OA_REQUESTID int, License_UniqueID string) ([]LicenseRecordToEmails, error) {
 
 	if License_UniqueID == "" {
@@ -628,39 +185,6 @@ func GetlicenseRecordByEmail(OA_REQUESTID int, License_UniqueID string) ([]Licen
 	return results, nil
 }
 
-// 删除LicenseApplication和LicenseInfo表中的数据
-func DelLicenseInfoRow(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 target_OA_license SET Del_Time = ?  WHERE Unique_ID = ?", time.Now(), uniqueID)
-	if err != nil {
-		return err
-	}
-	return nil
-}
-
 type SQLResult struct {
 	OARequestName          sql.NullString `json:"oa_request_name"`           // 请求名称 (wr.REQUESTNAME)
 	OARequestNameNew       sql.NullString `json:"oa_request_name_new"`       // 新请求名称 (wr.REQUESTNAMENEW)
@@ -937,21 +461,32 @@ func CheckOaLicRequest(oaRequestID string, userUNIQUEID string) (bool, error) {
 func buildSQL(params api.ConditionalSearchRequest) (string, []interface{}) {
 	// 基础SQL查询
 	baseSQL := `SELECT 
-		la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
-		la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
-		la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
-		la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
-		la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
-		la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
-		la.del_Time, la.LAST_OPERATE_TIME,
-		li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
-	FROM 
-		target_OA_license la
-	INNER JOIN 
-		License_generate_Info li
-		ON 
-		la.Unique_ID = li.License_UniqueID
-	WHERE 1=1`
+    la.ID, la.Unique_ID, la.OA_ID, la.OA_REQUESTID, la.OA_REQUESTNAME, la.OA_REQUESTNAMENEW,
+    la.OA_REQUESTNAMEHTMLNEW, la.OA_GLXMID ,la.OA_GLXMNAME ,la.OA_SQSJ, la.OA_SALESPERSONNAME, la.OA_XSJSYX,
+    la.OA_OPERATIONSPERSONNAME, la.OA_JFJSYX, la.OA_SYDW, la.OA_XMXXMS, la.OA_JDS,
+    la.OA_NODECOUNT, la.OA_PRODUCTCODE, la.OA_PRODUCTNAME, la.OA_PRODUCTVERSION,
+    la.OA_CPU, la.OA_OPERATINGSYSTEM, la.OA_MAINMAC, la.OA_SECONDMAC, la.OA_CREATIONDATE,
+    la.OA_CREATIONTIME, la.OA_LASTOPERATEDATE, la.OA_LASTOPERATETIME, la.capture_Time,
+    la.del_Time, la.LAST_OPERATE_TIME,
+    li.ID AS License_ID, li.OA_ID, li.License_UniqueID, li.License_Flage, li.lic1, li.lic2, li.Creator_generate
+FROM 
+    target_OA_license la
+INNER JOIN 
+    License_generate_Info li
+    ON 
+    la.Unique_ID = li.License_UniqueID
+WHERE 
+    OA_REQUESTID  IN (
+        SELECT OA_REQUESTID 
+        FROM (
+            SELECT OA_REQUESTID, rownum AS a 
+            FROM (
+                SELECT DISTINCT OA_REQUESTID FROM TARGET_OA_LICENSE
+            ) a
+        ) s
+        WHERE a BETWEEN 1 AND 10
+    )
+AND 1=1`
 
 	// 动态条件部分
 	var conditions []string
@@ -982,6 +517,7 @@ func buildSQL(params api.ConditionalSearchRequest) (string, []interface{}) {
 
 	return baseSQL, args
 }
+
 func GetConditionalSearch(params api.ConditionalSearchRequest) (*[]OALicenseInfo, error) {
 
 	// 构建SQL语句和参数
@@ -1017,7 +553,7 @@ func GetConditionalSearch(params api.ConditionalSearchRequest) (*[]OALicenseInfo
 			log.Fatal(err)
 		}
 		rest = append(rest, info)
-	
+
 		fmt.Println("info", info)
 	}
 

+ 9 - 2
internal/router.go

@@ -5,6 +5,7 @@ import (
 	"os"
 	"time"
 	"xugu_license/internal/controllers"
+	"xugu_license/internal/global"
 
 	middlewares "xugu_license/internal/middleware"
 
@@ -93,7 +94,7 @@ func SetupRouter() *gin.Engine {
 		//搜索license
 		protected.GET("/GetSearchLicInfoToDb", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.SearchLicInfoToDb)
 		protected.POST("/GetConditionalSearch", middlewares.PermissionMiddleware(middlewares.ReadLicense), controllers.ConditionalSearchController)
-		
+
 		//生成license new
 		protected.POST("/GenerateLicense", middlewares.PermissionMiddleware(middlewares.GenerateLicense), controllers.GenerateOALicenseStrController)
 
@@ -129,5 +130,11 @@ func configureRootHandler(r *gin.Engine) {
 // HttpController 启动 HTTP 服务器
 func HttpController() {
 	r := SetupRouter()
-	r.Run("127.0.0.1:8080")
+	ipPort := fmt.Sprintf("%s:%s", global.Cfg.App.Ip, global.Cfg.App.Port)
+	fmt.Println("ipPort:", ipPort)
+	err := r.Run(ipPort)
+	if err != nil {
+		panic(err)
+	}
+	global.Logger.Info("Server is running on port", fmt.Sprintf("%s:%s", global.Cfg.App.Ip, global.Cfg.App.Port))
 }

+ 2 - 1
main.go

@@ -9,7 +9,8 @@ import (
 
 func main() {
 	global.InitDb()
-	global.InitLogs("./logs/", "info")
+
+	global.InitLogs(global.Cfg.Logs.LicLog, "info")
 
 	err := global.XuguDB.Ping()
 	if err != nil {

+ 4 - 18
static/license_info/license_info.js

@@ -956,6 +956,7 @@ submitButton.addEventListener('click', filterContent);
 
 // 过滤功能实现
 function filterContent() {
+    console.log('过滤功能触发');
     // 构建请求体参数
     const requestData = {
         license_flag: statusFilter.value || undefined,
@@ -991,23 +992,8 @@ function displayLicenseInfo(data) {
     licenseInfoContainer.innerHTML = '';
     LicApplicationData =[];
     // 遍历返回的数据,生成并插入卡片
-    data.forEach(item => {
-        const licInfo = item.LicInfo;
-        const genrateInfo = item.GenrateInfo;
-
-        // 创建卡片元素
-        const card = document.createElement('div');
-        card.classList.add('license-info-card');
-        card.innerHTML = `
-            <h3>${licInfo.oa_request_name.String}</h3>
-            <p>项目名称: ${licInfo.oa_glxm_name.String}</p>
-            <p>申请时间: ${licInfo.oa_sqsj.String}</p>
-            <p>状态: ${genrateInfo.license_flage.String}</p>
-            <p>License 生成时间: ${new Date(genrateInfo.creator_generate.Time).toLocaleString()}</p>
-        `;
-
-        // 将卡片插入容器
-        licenseInfoContainer.appendChild(card);
-    });
+      // 处理返回的数据并更新界面,使用 renderLicenseCards 方法进行渲染
+      renderLicenseCards(data, true);
+    
 }