zhou.xiaoning пре 5 година
родитељ
комит
5d4f4a57ec
2 измењених фајлова са 81 додато и 1 уклоњено
  1. 28 1
      models/erms3.go
  2. 53 0
      models/serialNumber.go

+ 28 - 1
models/erms3.go

@@ -127,7 +127,6 @@ type Erms3Biztradedetail struct {
 	Closetradedate       string    `json:"closetradedate" xorm:"CLOSETRADEDATE"`             // 完结交易日(yyyyMMdd)
 	Updatetime           time.Time `json:"updatetime" xorm:"UPDATETIME"`                     // 更新时间
 	Handlestatus         int32     `json:"handlestatus" xorm:"HANDLESTATUS"`                 // 处理状态
-
 }
 
 // TableName is ERMS3_BIZTRADEDETAIL
@@ -135,6 +134,34 @@ func (m *Erms3Biztradedetail) TableName() string {
 	return "ERMS3_BIZTRADEDETAIL"
 }
 
+// Erms2asapply 期现套利业务申请表
+type Erms2asapply struct {
+	Asapplyid       int64     `json:"asapplyid"  xorm:"'ASAPPLYID'" binding:"required"` // 策略申请ID(342+Unix秒时间戳(10位)+xxxxxx)
+	Asno            string    `json:"asno"  xorm:"'ASNO'"`                              // 策略编号
+	Asname          string    `json:"asname"  xorm:"'ASNAME'"`                          // 策略名称
+	Biztype         int32     `json:"biztype"  xorm:"'BIZTYPE'"`                        // 业务类型 - 1:正向套利 2:反向套利
+	Userid          int64     `json:"userid"  xorm:"'USERID'"`                          // 所属机构
+	Deliverygoodsid int64     `json:"deliverygoodsid"  xorm:"'DELIVERYGOODSID'"`        // 现货品种ID
+	Goodsgroupid    int64     `json:"goodsgroupid"  xorm:"'GOODSGROUPID'"`              // 期货品种ID
+	Spotquota       float64   `json:"spotquota"  xorm:"'SPOTQUOTA'"`                    // 现货额度
+	Futurequote     float64   `json:"futurequote"  xorm:"'FUTUREQUOTE'"`                // 期货额度
+	Applybasis      float64   `json:"applybasis"  xorm:"'APPLYBASIS'"`                  // 申请基差
+	Applystatus     int32     `json:"applystatus"  xorm:"'APPLYSTATUS'"`                // 申请状态 - 0:待审核 1:审核通过 2:审核中 3:审核失败 4已撤销 5:审核拒绝
+	Remark          string    `json:"remark"  xorm:"'REMARK'"`                          // 备注
+	Marketid        int64     `json:"marketid"  xorm:"'MARKETID'"`                      // 市场ID
+	Tradedate       string    `json:"tradedate"  xorm:"'TRADEDATE'"`                    // 交易日(yyyyMMdd)
+	Creatorid       int64     `json:"creatorid"  xorm:"'CREATORID'"`                    // 创建人
+	Createtime      time.Time `json:"createtime"  xorm:"'CREATETIME'"`                  // 创建时间
+	Auditid         int64     `json:"auditid"  xorm:"'AUDITID'"`                        // 审核人
+	Audittime       time.Time `json:"audittime"  xorm:"'AUDITTIME'"`                    // 审核时间
+	Auditremark     string    `json:"auditremark"  xorm:"'AUDITREMARK'"`                // 审核备注
+}
+
+// TableName is ERMS2_ASAPPLY
+func (Erms2asapply) TableName() string {
+	return "ERMS2_ASAPPLY"
+}
+
 // AddSpotContractApply 插入现货合同记录
 func AddSpotContractApply(spotContractApply Erms3SpotContractApply) error {
 	engine := db.GetEngine()

+ 53 - 0
models/serialNumber.go

@@ -0,0 +1,53 @@
+package models
+
+import (
+	"fmt"
+	"strconv"
+	"sync"
+	"time"
+)
+
+// 主要用于Oracle ID生成,具有原子操作性质
+var lock sync.Mutex
+
+var requestMap = map[string]int{}
+
+// GetSerialNumber 获取SerialNumber,用于Oracle业务类ID主键生成,有原子操作性质
+func GetSerialNumber(prefix string) (int64, error) {
+	lock.Lock()
+
+	str := ""
+	timeStamp := time.Now().Unix()
+
+	if current, ok := requestMap[prefix]; ok {
+		curStr := repZero(current, 6)
+		str = fmt.Sprintf("%s%d%s", prefix, timeStamp, curStr)
+		current++
+		requestMap[prefix] = current
+	} else {
+		current = 1
+		curStr := repZero(current, 6)
+		str = fmt.Sprintf("%s%d%s", prefix, timeStamp, curStr)
+		current++
+		requestMap[prefix] = current
+	}
+
+	defer lock.Unlock()
+	return strconv.ParseInt(str, 10, 64)
+}
+
+//  repZero 按位数补零
+func repZero(number, digit int) string {
+	str := strconv.Itoa(number)
+	len := len(str)
+	if len >= digit {
+		return str
+	}
+
+	need := len - digit
+	for i := 0; i < need; i++ {
+		str += "0" + str
+	}
+
+	return str
+}