Ver código fonte

1、解决母账户资金信息未从对冲外部资金账户表获取的问题;
2、解决母账户卖方向持仓计算开仓均价错误问题。

zhou.xiaoning 4 anos atrás
pai
commit
4983b85349
7 arquivos alterados com 8718 adições e 8026 exclusões
  1. 6 6
      config/config.xml
  2. 9 9
      controllers/ermcp/qryOrder.go
  3. 20 0
      controllers/taaccount/taaccount.go
  4. 2996 2766
      docs/docs.go
  5. 2996 2766
      docs/swagger.json
  6. 2654 2479
      docs/swagger.yaml
  7. 37 0
      models/account.go

+ 6 - 6
config/config.xml

@@ -13,11 +13,11 @@
     <DbAddress value="192.168.31.117"/>
     <DbName value="orcl"/>
     <DbPort value="1521"/>
-    <DbUser value="mtp2_test114"/>
+    <DbUser value="mtp2_test220"/>
     <DbPwd value="muchinfo"/>
   </DbSetting>
   <RedisSetting>
-    <Address value="192.168.31.114"/>
+    <Address value="192.168.31.220"/>
     <Port value="5007"/>
     <Timeout value="3"/>
     <ConnNum value="1"/>
@@ -25,11 +25,11 @@
     <Pwd value=""/>
   </RedisSetting>
   <MqSetting>
-    <Url value="amqp://guest:guest@192.168.31.114:5020/test"/>
+    <Url value="amqp://guest:guest@192.168.31.220:5020/test"/>
     <Exchange value="entry"/>
   </MqSetting>
   <MongoDBSetting>
-    <HostName value="192.168.31.114"/>
+    <HostName value="192.168.31.220"/>
     <Port value="5025"/>
     <DBName value="HistoryQuote"/>
     <Username value="quote_test01"/>
@@ -38,8 +38,8 @@
   <MySQLSetting>
     <Host value="192.168.30.140"/>
     <Port value="3306"/>
-    <DBName value="historyquote_test114"/>
-    <Username value="quote_test114"/>
+    <DBName value="historyquote_test220"/>
+    <Username value="quote_test220"/>
     <Password value="123456"/>
   </MySQLSetting>
 </Configuration>

+ 9 - 9
controllers/ermcp/qryOrder.go

@@ -161,11 +161,11 @@ func QueryErmcpTradePosition(c *gin.Context) {
 				// 持仓均价 = 持仓成本 / 期末头寸 / 合约单位
 				item.PositionAveragePrice = v.Buypositioncost / float64(v.Curbuyposition) / goods.Agreeunit
 				item.PositionAveragePrice, _ = strconv.ParseFloat(utils.FormatFloat(item.PositionAveragePrice, int(goods.Decimalplace)), 64)
-				// 盯市浮盈(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位
+				// 盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.PositionPL = (item.Last - item.PositionAveragePrice) * float64(v.Curbuyposition) * goods.Agreeunit
 				}
-				// 逐笔浮盈(MTP:开仓盈亏、平仓盈亏)买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位
+				// 逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.OpenPL = (item.Last - item.OpenAveragePrice) * float64(v.Curbuyposition) * goods.Agreeunit
 				}
@@ -245,13 +245,13 @@ func QueryErmcpTradePosition(c *gin.Context) {
 				// 持仓均价 = 持仓成本 / 期末头寸 / 合约单位
 				item.PositionAveragePrice = v.Sellpositioncost / float64(v.Cursellposition) / goods.Agreeunit
 				item.PositionAveragePrice, _ = strconv.ParseFloat(utils.FormatFloat(item.PositionAveragePrice, int(goods.Decimalplace)), 64)
-				// 盯市浮盈(MTP:浮动盈亏、持仓盈亏) 卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
+				// 盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.PositionPL = (item.PositionAveragePrice - item.Last) * float64(v.Cursellposition) * goods.Agreeunit
 				}
-				// 逐笔浮盈(MTP:开仓盈亏、平仓盈亏)买方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
+				// 逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
-					item.OpenPL = (item.Last - item.OpenAveragePrice) * float64(v.Cursellposition) * goods.Agreeunit
+					item.OpenPL = (item.OpenAveragePrice - item.Last) * float64(v.Cursellposition) * goods.Agreeunit
 				}
 				// 持仓盈亏比例 = 持仓盈亏 / 开仓成本
 				if item.PositionPL != 0 && v.Sellopencost != 0 {
@@ -358,11 +358,11 @@ func QueryErmcpTradePosition(c *gin.Context) {
 				// 持仓均价 = 持仓成本 / 期末头寸 / 合约单位
 				item.PositionAveragePrice = v.Buycurholderamount / float64(v.Buycurpositionqty) / goods.Agreeunit
 				item.PositionAveragePrice, _ = strconv.ParseFloat(utils.FormatFloat(item.PositionAveragePrice, int(goods.Decimalplace)), 64)
-				// 盯市浮盈(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位
+				// 盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.PositionPL = (item.Last - item.PositionAveragePrice) * float64(v.Buycurpositionqty) * goods.Agreeunit
 				}
-				// 逐笔浮盈(MTP:开仓盈亏、平仓盈亏)买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位
+				// 逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.OpenPL = (item.Last - item.OpenAveragePrice) * float64(v.Buycurpositionqty) * goods.Agreeunit
 				}
@@ -459,11 +459,11 @@ func QueryErmcpTradePosition(c *gin.Context) {
 				// 持仓均价 = 持仓成本 / 期末头寸 / 合约单位
 				item.PositionAveragePrice = v.Sellcurholderamount / float64(v.Sellcurpositionqty) / goods.Agreeunit
 				item.PositionAveragePrice, _ = strconv.ParseFloat(utils.FormatFloat(item.PositionAveragePrice, int(goods.Decimalplace)), 64)
-				// 盯市浮盈(MTP:浮动盈亏、持仓盈亏) 卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
+				// 盯市浮盈【实时行情更新】(MTP:浮动盈亏、持仓盈亏) 买方向 = (最新价 - 持仓均价) * 买期末头寸 * 合约单位;卖方向 = (持仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.PositionPL = (item.PositionAveragePrice - item.Last) * float64(v.Sellcurpositionqty) * goods.Agreeunit
 				}
-				// 逐笔浮盈(MTP:开仓盈亏、平仓盈亏)卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
+				// 逐笔浮盈【实时行情更新】(MTP:开仓盈亏、平仓盈亏) 买方向 = (最新价 - 开仓均价) * 买期末头寸 * 合约单位;卖方向 = (开仓均价 - 最新价) * 卖期末头寸 * 合约单位
 				if item.Last != 0 {
 					item.OpenPL = (item.OpenAveragePrice - item.Last) * float64(v.Sellcurpositionqty) * goods.Agreeunit
 				}

+ 20 - 0
controllers/taaccount/taaccount.go

@@ -48,6 +48,26 @@ func GetTaAccounts(c *gin.Context) {
 		return
 	}
 
+	// 如果是母账户,要从对冲外部资金账户表获取资金信息
+	for i, _ := range taAccounts {
+		item := &taAccounts[i]
+		if item.Ismain == 1 {
+			hedgeOutTaAccount, _ := models.GetHedgeOutTaAccount(int(item.Accountid))
+			if hedgeOutTaAccount != nil {
+				item.Balance = hedgeOutTaAccount.Prebalance
+				item.Currentbalance = hedgeOutTaAccount.Balance
+				item.Usedmargin = hedgeOutTaAccount.Usedmargin
+				item.Freezemargin = hedgeOutTaAccount.Freezemargin
+				item.Freezecharge = hedgeOutTaAccount.Freezecharge
+				item.Otherfreezemargin = hedgeOutTaAccount.Otherfreezemargin
+				item.Inamount = hedgeOutTaAccount.Inamount
+				item.Outamount = hedgeOutTaAccount.Outamount
+				item.Paycharge = hedgeOutTaAccount.Paycharge
+				item.Closepl = hedgeOutTaAccount.Closepl
+			}
+		}
+	}
+
 	// 查询成功
 	logger.GetLogger().Debugln("GetTaAccounts successed: %v", taAccounts)
 	appG.Response(http.StatusOK, e.SUCCESS, taAccounts)

Diferenças do arquivo suprimidas por serem muito extensas
+ 2996 - 2766
docs/docs.go


Diferenças do arquivo suprimidas por serem muito extensas
+ 2996 - 2766
docs/swagger.json


Diferenças do arquivo suprimidas por serem muito extensas
+ 2654 - 2479
docs/swagger.yaml


+ 37 - 0
models/account.go

@@ -103,6 +103,29 @@ func (Taaccount) TableName() string {
 	return "TAACCOUNT"
 }
 
+// Hedgeouttaaccount 对冲外部资金账户表 - 导历史
+type Hedgeouttaaccount struct {
+	Accountid         int64   `json:"accountid"  xorm:"'ACCOUNTID'" binding:"required"` // 资金账号[外部母账户]
+	Hedgeaccountcode  string  `json:"hedgeaccountcode"  xorm:"'HEDGEACCOUNTCODE'"`      // 对冲账号
+	Tradedate         string  `json:"tradedate"  xorm:"'TRADEDATE'"`                    // 交易日(yyyyMMdd)
+	Prebalance        float64 `json:"prebalance"  xorm:"'PREBALANCE'"`                  // 期初余额
+	Balance           float64 `json:"balance"  xorm:"'BALANCE'"`                        // 期末余额
+	Usedmargin        float64 `json:"usedmargin"  xorm:"'USEDMARGIN'"`                  // 占用保证金
+	Freezemargin      float64 `json:"freezemargin"  xorm:"'FREEZEMARGIN'"`              // 冻结保证金
+	Freezecharge      float64 `json:"freezecharge"  xorm:"'FREEZECHARGE'"`              // 手续费冻结
+	Otherfreezemargin float64 `json:"otherfreezemargin"  xorm:"'OTHERFREEZEMARGIN'"`    // 其他冻结保证金(交割买方冻结 申购冻结 全款买入 商城买入)
+	Inamount          float64 `json:"inamount"  xorm:"'INAMOUNT'"`                      // 今日入金金额(包括三方入金)
+	Outamount         float64 `json:"outamount"  xorm:"'OUTAMOUNT'"`                    // 今日出金金额(包括三方出金)
+	Paycharge         float64 `json:"paycharge"  xorm:"'PAYCHARGE'"`                    // 今日手续费支出
+	Closepl           float64 `json:"closepl"  xorm:"'CLOSEPL'"`                        // 今日平仓盈亏
+	Positionprofit    float64 `json:"positionprofit"  xorm:"'POSITIONPROFIT'"`          // 结算盈亏
+}
+
+// TableName is HEDGE_OUTTAACCOUNT
+func (Hedgeouttaaccount) TableName() string {
+	return "HEDGE_OUTTAACCOUNT"
+}
+
 // Logintaaccount 登录账户资金权限表 - 自营会员
 type Logintaaccount struct {
 	Loginid    int64     `json:"loginid"  xorm:"'LOGINID'" binding:"required"`     // 登录账号ID
@@ -1027,3 +1050,17 @@ func GetSysteMmanagerByLoginCode(loginCode string) (*Systemmanager, error) {
 
 	return &tmp[0], nil
 }
+
+// GetHedgeOutTaAccount 母账户资金账户获取对冲外部资金账户信息
+func GetHedgeOutTaAccount(accountID int) (*Hedgeouttaaccount, error) {
+	var rst Hedgeouttaaccount
+	has, err := db.GetEngine().Where("ACCOUNTID = ?", accountID).Get(&rst)
+	if err != nil {
+		return nil, err
+	}
+	if !has {
+		return nil, nil
+	}
+
+	return &rst, nil
+}

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff