Files
selfcare/proxy_go/Nmysql/provision.go
2025-03-03 11:40:37 +08:00

176 lines
5.2 KiB
Go

package Nmysql
import (
"fmt"
l4g "proxy/logger"
)
func QuerySyncMobileInfo() ([]SyncMobileInfo, error) {
sqlStr := fmt.Sprintf("select PRE_ID, OPER_TYPE, IMSI, SERVICE_NBR, KI, IFNULL(OPC,'') as OPC, CUST_ID, ACCT_ID, PRD_INST_ID, MOBILE_TYPE, VMS_FLAG, IFNULL(BIRTH_DATE,'') as BIRTH_DATE, BALANCE, BALANCE_EXP_DATE, OFR_ID, EXP_DATE, IFNULL(CUG_ID,0) as CUG_ID from tb_sync_mobile where STATE=1 limit 10;")
rows, err := MySqlDb.Query(sqlStr)
if err != nil {
l4g.MysqlLog.Errorf("Query tb_sync_mobile fail: %v", err)
return nil, err
}
defer rows.Close()
var rsp []SyncMobileInfo= nil
for rows.Next(){
var si SyncMobileInfo
if err = rows.Scan(&si.PreId, &si.OperType, &si.Imsi, &si.ServiceNbr, &si.Ki, &si.Opc, &si.CustId, &si.AcctId, &si.PrdInstId,
&si.MobileType, &si.VmsFlag, &si.BirthDate, &si.Balance, &si.BalanceExpDate, &si.OfrId, &si.ExpDate, &si.CugId); err != nil {
l4g.MysqlLog.Errorf("query row of tb_sync_mobile fail: %v", err)
return nil, err
}
if si.BirthDate == "" {
si.BirthDate = "2000-01-01"
}
rsp = append(rsp, si)
}
return rsp, nil
}
type SyncMobileInfo struct {
PreId int// auto incr
OperType int// 1: create subs, 2: replace IMSI
Imsi string
ServiceNbr string
Ki string
Opc string
CustId int
AcctId int
PrdInstId int
MobileType int//0: postpaid, 1: prepaid
VmsFlag int//0: not VMS service, 1: VMS service
BirthDate string
Balance int
BalanceExpDate string
OfrId int
ExpDate string
CugId int// 1: staff, 2: customer
}
func QueryOldImsiInfo(serviceNbr string) (*OldImsiInfo, error) {
sqlStr := fmt.Sprintf("select PRE_ID, IMSI, PRD_INST_ID from tb_sync_mobile WHERE SERVICE_NBR='%s' and STATE>1 ORDER BY PRE_ID DESC limit 1;", serviceNbr)
rows, err := MySqlDb.Query(sqlStr)
if err != nil {
l4g.MysqlLog.Errorf("Query tb_sync_mobile fail: %v", err)
return nil, err
}
defer rows.Close()
var rsp OldImsiInfo
for rows.Next(){
if err = rows.Scan(&rsp.PreId, &rsp.Imsi, &rsp.PrdInstId); err != nil {
l4g.MysqlLog.Errorf("query row of tb_sync_mobile fail: %v", err)
return nil, err
}
return &rsp, nil
}
return nil, nil
}
type OldImsiInfo struct {
PreId int
Imsi string
PrdInstId int
}
func AddSmcliCmd2Mysql(cmdType int, nt int, serviceNbr string, cmdStr string) error {
sqlStr := fmt.Sprintf("INSERT INTO tb_sync_cn_cmd SET cmd_type=%d, node_type=%d, node_name='%s', srv_num='%s', command='%s', state=1, result=0, timestamp=NOW();",
cmdType, nt, NodeName[nt], serviceNbr, cmdStr)
stmt, _ := MySqlDb.Prepare(sqlStr)
defer stmt.Close()
_, err := stmt.Exec()
if err != nil {
l4g.MysqlLog.Errorf("AddSmcliCmd2Mysql, cmdType[%d], nt[%d], prdInstId[%s], cmd[%s] error: %v", cmdType, nt, serviceNbr, cmdStr, err)
return err
}
l4g.MysqlLog.Debugf("AddSmcliCmd2Mysql, cmdType[%d], nt[%d], prdInstId[%s], cmd[%s] succ!", cmdType, nt, serviceNbr, cmdStr)
return nil
}
func AddSmcliCmdSucc2Mysql(cmdType int, nt int, serviceNbr string, cmdStr string) error {
cause := "000:Command Successful"
sqlStr := fmt.Sprintf("INSERT INTO tb_sync_cn_cmd SET cmd_type=%d, node_type=%d, node_name='%s', srv_num='%s', command='%s', state=2, result=1, cause='%s', timestamp=NOW();",
cmdType, nt, NodeName[nt], serviceNbr, cmdStr, cause)
stmt, _ := MySqlDb.Prepare(sqlStr)
defer stmt.Close()
_, err := stmt.Exec()
if err != nil {
l4g.MysqlLog.Errorf("AddSmcliCmd2Mysql, cmdType[%d], nt[%d], prdInstId[%s], cmd[%s] error: %v", cmdType, nt, serviceNbr, cmdStr, err)
return err
}
l4g.MysqlLog.Debugf("AddSmcliCmd2Mysql, cmdType[%d], nt[%d], prdInstId[%s], cmd[%s] succ!", cmdType, nt, serviceNbr, cmdStr)
return nil
}
func UpdateSyncMobileState(preId int, state int) error {
sqlStr := fmt.Sprintf("UPDATE tb_sync_mobile set STATE=%d where PRE_ID=%d;", state, preId)
stmt, _ := MySqlDb.Prepare(sqlStr)
defer stmt.Close()
_, err := stmt.Exec()
if err != nil {
l4g.MysqlLog.Errorf("UpdateSyncMobileState, preId[%d], state[%d] error: %v", preId, state, err)
return err
}
l4g.MysqlLog.Debugf("UpdateSyncMobileState, preId[%d], state[%d] succ!", preId, state)
return nil
}
func QuerySyncCnCmd() ([]CnCmdInfo, error) {
sqlStr := fmt.Sprintf("select id, node_type, command from tb_sync_cn_cmd where state=1 limit 40;")
rows, err := MySqlDb.Query(sqlStr)
if err != nil {
l4g.MysqlLog.Errorf("Query tb_sync_cn_cmd fail: %v", err)
return nil, err
}
defer rows.Close()
var rsp []CnCmdInfo= nil
for rows.Next(){
var si CnCmdInfo
if err = rows.Scan(&si.Id, &si.NodeType, &si.Command); err != nil {
l4g.MysqlLog.Errorf("query row of tb_sync_cn_cmd fail: %v", err)
return nil, err
}
rsp = append(rsp, si)
}
return rsp, nil
}
type CnCmdInfo struct {
Id int// auto incr
NodeType int
Command string
}
func UpdateCnCmdResult(id int, state int, result int, desc string) error {
sqlStr := fmt.Sprintf("update tb_sync_cn_cmd set state=%d,result=%d,cause='%s',timestamp=NOW() where id=%d;",
state, result, desc, id)
stmt, _ := MySqlDb.Prepare(sqlStr)
defer stmt.Close()
_, err := stmt.Exec()
if err != nil {
l4g.MysqlLog.Errorf("UpdateCnCmdResult, id[%d], state[%d], result[%d], cause[%s] error: %v", id, state, result, desc, err)
return err
}
l4g.MysqlLog.Debugf("UpdateCnCmdResult, id[%d], state[%d], result[%d], cause[%s] succ!", id, state, result, desc)
return nil
}