12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025 |
- package models
- import (
- "database/sql"
- "fmt"
- "log"
- "strings"
- "time"
- "xugu_license/internal/api"
- "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"`
- LicenseRecordToEmails []LicenseRecordToEmails `json:"license_record_to_emails"`
- }
- type LicenseRecordToUser struct {
- ID int `json:"id"`
- OARequestId int `json:"oa_request_id"`
- LicenseUniqueID string `json:"license_unique_id"`
- UserUniqueID string `json:"user_unique_id"`
- UserAccount string `json:"user_account"`
- OperatorUniqueID string `json:"operator_unique_id"`
- UpTime time.Time `json:"up_time"`
- DelTime time.Time `json:"del_time"` // 删除或失效的时间
- }
- type LicenseRecordToEmails struct {
- ID int `json:"id"`
- OARequestId int `json:"oa_request_id"`
- LicenseUniqueID string `json:"license_unique_id"`
- Emails string `json:"emails"`
- OperatorUniqueID string `json:"operator_unique_id"`
- UpTime time.Time `json:"up_time"`
- 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 {
- 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(OA_REQUESTID,License_UniqueID ,user_UniqueID,User_Account,up_Time,operator_UniqueID) values(?,?,?,?,?,?)`,
- oaRequestID, LicenseUniqueID, userUniqueID, UserAccount, time.Now(), operatorUniqueID)
- if err != nil {
- global.Logger.Errorln("插入分发记录用户表失败: ", err.Error())
- return err
- }
- return nil
- }
- // 插入分发记录邮箱表
- func InsertlicenseRecordByEmailRow(oaRequestID, 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(OA_REQUESTID,License_UniqueID ,emails,operator_UniqueID,up_Time) values(?,?,?,?,?)`,
- oaRequestID, LicenseUniqueID, emails, operatorUniqueID, time.Now())
- if err != nil {
- global.Logger.Errorln("插入分发记录邮箱表失败: ", err.Error())
- return err
- }
- return nil
- }
- // 搜索分发记录用户表
- func GetlicenseRecordByUser(OA_REQUESTID int, License_UniqueID string) ([]LicenseRecordToUser, error) {
- fmt.Println("搜索分发记录表 OA_REQUESTID", OA_REQUESTID)
- if License_UniqueID == "" {
- return nil, fmt.Errorf("uniqueID is empty")
- }
- if OA_REQUESTID <= 0 {
- return nil, fmt.Errorf("OA_REQUESTID is empty or error")
- }
- sqlLicUser := `select OA_REQUESTID,License_UniqueID,user_UNIQUEID,User_Account,operator_UniqueID,up_Time from licenseRecordToUser where License_UniqueID = ? AND del_time IS NULL`
- rows, err := global.XuguDB.Query(sqlLicUser, License_UniqueID)
- if err != nil {
- global.Logger.Errorln("query data: ", err.Error())
- return nil, fmt.Errorf("query error: %v", err)
- }
- defer rows.Close()
- var results []LicenseRecordToUser
- for rows.Next() {
- var lRU LicenseRecordToUser
- err = rows.Scan(
- &lRU.OARequestId,
- &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(OA_REQUESTID int, License_UniqueID string) ([]LicenseRecordToEmails, error) {
- if License_UniqueID == "" {
- return nil, fmt.Errorf("uniqueID is empty")
- }
- if OA_REQUESTID <= 0 {
- return nil, fmt.Errorf("OA_REQUESTID is empty or error")
- }
- sqlLicEmail := `select OA_REQUESTID, License_UniqueID,emails,operator_UniqueID ,up_Time from licenseRecordToEmails where License_UniqueID = ? AND del_time IS NULL;`
- rows, err := global.XuguDB.Query(sqlLicEmail, License_UniqueID)
- if err != nil {
- global.Logger.Errorln("query data: ", err.Error())
- return nil, fmt.Errorf("query error: %v", err)
- }
- var results []LicenseRecordToEmails
- for rows.Next() {
- var lRU LicenseRecordToEmails
- err = rows.Scan(
- &lRU.OARequestId,
- &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
- }
- // 删除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)
- OARequestNameHTMLNew sql.NullString `json:"oa_request_name_html_new"` // 新请求名称(HTML格式) (wr.REQUESTNAMEHTMLNEW)
- OAGLXMID sql.NullInt64 `json:"oa_glxm_id"` // 关联项目ID (fm.glxm)
- OAGLXMName sql.NullString `json:"oa_glxm_name"` // 关联项目 (PP.NAME)
- OASQSJ sql.NullString `json:"oa_sqsj"` // 申请时间 (fm.SQSJ)
- OASalespersonName sql.NullString `json:"oa_salesperson_name"` // 销售人员名称 (hrm1.LASTNAME)
- OAOperationsPersonName sql.NullString `json:"oa_operations_person_name"` // 运维人员名称 (hrm2.LASTNAME)
- OAXSJSYX sql.NullString `json:"oa_xsjsyx"` // 销售邮箱 (fm.XSJSYX)
- OAJFJSYX sql.NullString `json:"oa_jfjsyx"` // 运维邮箱 (fm.JFJSYX)
- OASYDW sql.NullString `json:"oa_sydw"` // 使用单位 (fm.SYDW)
- OAXMXXMS sql.NullString `json:"oa_xmxxms"` // 项目详细描述 (fm.XMXXMS)
- OAJDS sql.NullInt64 `json:"oa_jds"` // 节点数 (fm.JDS)
- OANodeCount sql.NullInt64 `json:"oa_node_count"` // 总节点数 (fmd.JDS)
- OAProductName sql.NullString `json:"oa_product_name"` // 产品编号 (ws1.SELECTNAME)
- OAProductVersion sql.NullString `json:"oa_product_version"` // 产品版本 (ws2.SELECTNAME)
- CLQ sql.NullString `json:"clq"` // cpu
- CZXT sql.NullString `json:"czxt"` // 操作系统 (fmd.CZXT)
- IP sql.NullString `json:"ip"` // IP 地址 (fmd.IP)
- MAC sql.NullString `json:"mac"` // MAC 地址 (fmd.MAC)
- OACreationDate sql.NullString `json:"oa_creation_date"` // 创建日期 (wr.CREATEDATE)
- OACreationTime sql.NullString `json:"oa_creation_time"` // 创建时间 (wr.CREATETIME)
- OALastOperateDate sql.NullString `json:"oa_last_operate_date"` // 最后操作日期 (wr.LASTOPERATEDATE)
- OALastOperateTime sql.NullString `json:"oa_last_operate_time"` // 最后操作时间 (wr.LASTOPERATETIME)
- }
- // 检验与oa库数据是否一致
- func CheckLicenseInfoInOADB(licInfo *TargetOALicenseInfo) (bool, error) {
- //fmt.Println("该死的id", licInfo.ID)
- if !licInfo.OAId.Valid {
- return false, fmt.Errorf("uniqueID is empty")
- }
- sql := `
- SELECT
- wr.REQUESTNAME, wr.REQUESTNAMENEW, wr.REQUESTNAMEHTMLNEW,
- fm.glxm,PP.NAME,fm.SQSJ, hrm1.LASTNAME,
- hrm2.LASTNAME, fm.XSJSYX, fm.JFJSYX,
- fm.SYDW, fm.XMXXMS, fm.JDS,
- fmd.JDS, ws1.SELECTNAME,
- ws2.SELECTNAME, fmd.CLQ, fmd.CZXT,
- fmd.IP, fmd.MAC,wr.CREATEDATE, wr.CREATETIME,
- wr.LASTOPERATEDATE, wr.LASTOPERATETIME
- FROM XUGU.formtable_main_146 fm
- LEFT JOIN XUGU.HRMRESOURCE hrm1 ON TO_NUMBER(fm.XSRY) = hrm1.id
- LEFT JOIN XUGU.HRMRESOURCE hrm2 ON TO_NUMBER(fm.jfry) = hrm2.id
- LEFT JOIN XUGU.FORMTABLE_MAIN_146_dt1 fmd ON fmd.mainid = fm.id
- LEFT JOIN XUGU.WORKFLOW_SELECTITEM ws1 ON fmd.cpmc = ws1.SELECTVALUE AND ws1.FIELDID = 14627
- LEFT JOIN XUGU.WORKFLOW_SELECTITEM ws2 ON fmd.BB = ws2.SELECTVALUE AND ws2.FIELDID = 14628
- LEFT JOIN XUGU.WORKFLOW_REQUESTBASE WR ON fm.REQUESTID = WR.REQUESTID
- LEFT JOIN XUGU.PRJ_PROJECTINFO PP ON fm.glxm = PP.ID
- where fmd.id = ?
- PARALLEL 8;
- `
- var record SQLResult
- //Wvar sqsj string
- err := global.OaDB.QueryRow(sql, licInfo.OAId.Int64).Scan(
- &record.OARequestName,
- &record.OARequestNameNew,
- &record.OARequestNameHTMLNew,
- &record.OAGLXMID,
- &record.OAGLXMName,
- &record.OASQSJ,
- &record.OASalespersonName,
- &record.OAOperationsPersonName,
- &record.OAXSJSYX,
- &record.OAJFJSYX,
- &record.OASYDW,
- &record.OAXMXXMS,
- &record.OAJDS,
- &record.OANodeCount,
- &record.OAProductName,
- &record.OAProductVersion,
- &record.CLQ,
- &record.CZXT,
- &record.IP,
- &record.MAC,
- &record.OACreationDate,
- &record.OACreationTime,
- &record.OALastOperateDate,
- &record.OALastOperateTime,
- )
- if err != nil {
- //global.Logger.Errorln("query data: ", err.Error())
- return false, fmt.Errorf("CheckLicenseInfoInOADB query error: %v", err)
- }
- // 将字符串转换为 time.Time 对象
- //record.OASQSJ.Time, err = time.Parse("2006-01-02", sqsj)
- // if err != nil {
- // //fmt.Println("Error parsing date:", err)
- // return false, fmt.Errorf("CheckLicenseInfoInOADB 将字符串转换为 time.Time Error : %v", err)
- // }
- if isEqual := compareAndCopy(record, licInfo); !isEqual {
- return true, nil
- }
- return false, nil
- }
- func SearchLicInfoToDb(userInput string) ([]TargetOALicenseInfo, error) {
- query := fmt.Sprintf(`
- SELECT
- ID, UNIQUE_ID, OA_REQUESTID, OA_REQUESTNAME, OA_REQUESTNAMENEW, OA_REQUESTNAMEHTMLNEW,
- OA_GLXMID, OA_GLXMNAME, OA_SQSJ, OA_SALESPERSONNAME, OA_XSJSYX, OA_OPERATIONSPERSONNAME,
- OA_JFJSYX, OA_SYDW, OA_XMXXMS, OA_JDS, OA_NODECOUNT, OA_PRODUCTCODE, OA_PRODUCTNAME,
- OA_PRODUCTVERSION, OA_CPU, OA_OPERATINGSYSTEM, OA_MAINMAC, OA_SECONDMAC,
- OA_CREATIONDATE, OA_CREATIONTIME, OA_LASTOPERATEDATE, OA_LASTOPERATETIME
- FROM SYSDBA.TARGET_OA_LICENSE
- WHERE
- UNIQUE_ID LIKE '%%%s%%' OR
- OA_REQUESTNAME LIKE '%%%s%%' OR
- OA_REQUESTNAMENEW LIKE '%%%s%%' OR
- OA_REQUESTNAMEHTMLNEW LIKE '%%%s%%' OR
- OA_GLXMNAME LIKE '%%%s%%' OR
- OA_SQSJ LIKE '%%%s%%' OR
- OA_SALESPERSONNAME LIKE '%%%s%%' OR
- OA_XSJSYX LIKE '%%%s%%' OR
- OA_OPERATIONSPERSONNAME LIKE '%%%s%%' OR
- OA_JFJSYX LIKE '%%%s%%' OR
- OA_SYDW LIKE '%%%s%%' OR
- OA_XMXXMS LIKE '%%%s%%' OR
- OA_PRODUCTCODE LIKE '%%%s%%' OR
- OA_PRODUCTNAME LIKE '%%%s%%' OR
- OA_PRODUCTVERSION LIKE '%%%s%%' OR
- OA_CPU LIKE '%%%s%%' OR
- OA_OPERATINGSYSTEM LIKE '%%%s%%' OR
- OA_MAINMAC LIKE '%%%s%%' OR
- OA_SECONDMAC LIKE '%%%s%%' OR
- OA_CREATIONDATE LIKE '%%%s%%' OR
- OA_CREATIONTIME LIKE '%%%s%%' OR
- OA_LASTOPERATEDATE LIKE '%%%s%%' OR
- OA_LASTOPERATETIME LIKE '%%%s%%';
- `, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput, userInput)
- rows, err := global.XuguDB.Query(query)
- if err != nil {
- return nil, err
- }
- defer rows.Close()
- // 处理查询结果
- var licenses []TargetOALicenseInfo
- for rows.Next() {
- var license TargetOALicenseInfo
- err := rows.Scan(
- &license.ID, &license.UniqueID, &license.OARequestID, &license.OARequestName,
- &license.OARequestNameNew, &license.OARequestNameHTMLNew, &license.OAGLXMID,
- &license.OAGLXMName, &license.OASQSJ, &license.OASalespersonName, &license.OAXSJSYX,
- &license.OAOperationsPersonName, &license.OAJFJSYX, &license.OASYDW, &license.OAXMXXMS,
- &license.OAJDS, &license.OANodeCount, &license.OAProductCode, &license.OAProductName,
- &license.OAProductVersion, &license.OACPU, &license.OAOperatingSystem, &license.OAMainMAC,
- &license.OASecondMAC, &license.OACreationDate, &license.OACreationTime, &license.OALastOperateDate,
- &license.OALastOperateTime,
- )
- if err != nil {
- log.Fatal(err)
- }
- licenses = append(licenses, license)
- }
- if err != nil {
- log.Fatal(err)
- }
- // 检查错误
- if err := rows.Err(); err != nil {
- log.Fatal(err)
- }
- return licenses, nil
- }
- // 检测该单个license是否分配给用户
- func CheckLicenseToUser(LicenseUniqueID string, userUNIQUEID string) (bool, error) {
- if LicenseUniqueID == "" || userUNIQUEID == "" {
- global.Logger.Errorln("LicenseUniqueID 或 userUNIQUEID 为空")
- return false, fmt.Errorf("LicenseUniqueID 或 userUNIQUEID 为空")
- }
- type checkLicens struct {
- check int
- }
- sql := `SELECT ID FROM licenseRecordToUser WHERE License_UniqueID = ? AND user_UNIQUEID = ?`
- rows, err := global.XuguDB.Query(sql, LicenseUniqueID, userUNIQUEID)
- if err != nil {
- global.Logger.Errorln("query data: ", err.Error())
- return false, fmt.Errorf("query error: %v", err)
- }
- var cl checkLicens
- for rows.Next() {
- err = rows.Scan(
- &cl.check,
- )
- if err != nil {
- global.Logger.Errorln("scan row: ", err.Error())
- return false, fmt.Errorf("scan row error: %v", err)
- }
- }
- if err = rows.Err(); err != nil {
- global.Logger.Errorln("rows error: ", err.Error())
- return false, fmt.Errorf("rows error: %v", err)
- }
- fmt.Println("check: ", cl)
- if cl.check == 0 {
- return false, nil
- }
- return true, nil
- }
- // 按oa的申请单号来检测是否分发给用户
- func CheckOaLicRequest(oaRequestID string, userUNIQUEID string) (bool, error) {
- if oaRequestID == "" || userUNIQUEID == "" {
- global.Logger.Errorln("CheckOaLicRequest : LicenseUniqueID 或 userUNIQUEID 为空")
- return false, fmt.Errorf("oaRequestID 或 userUNIQUEID 为空")
- }
- type checkLicens struct {
- check int
- }
- sql := `SELECT ID FROM licenseRecordToUser WHERE OA_REQUESTID = ? AND user_UNIQUEID = ?`
- rows, err := global.XuguDB.Query(sql, oaRequestID, userUNIQUEID)
- if err != nil {
- global.Logger.Errorln("CheckOaLicRequest : query data: ", err.Error())
- return false, fmt.Errorf("CheckOaLicRequest : query error: %v", err)
- }
- var cl checkLicens
- for rows.Next() {
- err = rows.Scan(
- &cl.check,
- )
- if err != nil {
- global.Logger.Errorln("CheckOaLicRequest : scan row: ", err.Error())
- return false, fmt.Errorf("CheckOaLicRequest : scan row error: %v", err)
- }
- }
- if err = rows.Err(); err != nil {
- global.Logger.Errorln("CheckOaLicRequest : rows error: ", err.Error())
- return false, fmt.Errorf("CheckOaLicRequest : rows error: %v", err)
- }
- if cl.check == 0 {
- return false, nil
- }
- return true, nil
- }
- // ------------------按搜索条件查询license表--------------------
- // 假设你有一个结构体保存传入的参数
- 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`
- // 动态条件部分
- var conditions []string
- var args []interface{}
- // 根据 LicenseFlag 生成条件
- if params.LicenseFlag != "" {
- conditions = append(conditions, "li.License_Flage = ?")
- args = append(args, params.LicenseFlag)
- }
- // 根据 StartingDate 生成条件,将字符串转换为日期
- if params.StartingDate != "" {
- conditions = append(conditions, "TO_DATE(la.OA_CREATIONDATE, 'YYYY-MM-DD') >= ?")
- args = append(args, params.StartingDate)
- }
- // 根据 EndDate 生成条件,将字符串转换为日期
- if params.EndDate != "" {
- conditions = append(conditions, "TO_DATE(la.OA_CREATIONDATE, 'YYYY-MM-DD') <= ?")
- args = append(args, params.EndDate)
- }
- // 如果有条件,将条件加入SQL语句中
- if len(conditions) > 0 {
- baseSQL += " AND " + strings.Join(conditions, " AND ")
- }
- return baseSQL, args
- }
- func GetConditionalSearch(params api.ConditionalSearchRequest) (*[]OALicenseInfo, error) {
- // 构建SQL语句和参数
- query, args := buildSQL(params)
- // 输出SQL语句和参数
- fmt.Println("Query:", query)
- fmt.Println("Args:", args)
- rows, err := global.XuguDB.Query(query, args...)
- 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)
-
- fmt.Println("info", info)
- }
- return &rest, nil
- }
|