You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.2 KiB
100 lines
3.2 KiB
package data
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/go-xorm/xorm"
|
|
"matchmaking-system/internal/data/tradedeal/share"
|
|
"matchmaking-system/internal/pkg/flags"
|
|
"matchmaking-system/internal/pkg/logging/applogger"
|
|
"matchmaking-system/internal/pkg/logging/common"
|
|
models "matchmaking-system/internal/pkg/model"
|
|
"matchmaking-system/internal/pkg/setting"
|
|
)
|
|
|
|
// UpdateBotStockBlockTrade
|
|
//
|
|
// @Description: 更新大宗交易订单(美股|泰股|马股|印尼股|印度股|新加坡股|港股|英股|法股|德股)
|
|
// @param session
|
|
// @param code
|
|
// @param codeOld
|
|
// @return error
|
|
func (uo *userOrderRepo) UpdateBotStockBlockTrade(session *xorm.Session, code, codeOld string) error {
|
|
var userStockBlkTrade []models.BotStockBlockTrade
|
|
if err := session.Table(flags.BotStockBlockTrade).Where("stock_id =?", codeOld).Find(&userStockBlkTrade); err != nil {
|
|
return err
|
|
}
|
|
for _, value := range userStockBlkTrade {
|
|
value.StockId = code
|
|
// 1、更新订单信息
|
|
inCheck, err := session.Table(flags.BotStockBlockTrade).Where("trade_id =?", value.TradeId).Update(&value)
|
|
if err != nil || inCheck <= 0 {
|
|
continue
|
|
}
|
|
// 2、处理缓存订单
|
|
orderMap, err := Reds.HGet(context.Background(), setting.AdminShareBlkSubscribe, value.OrderId).Result()
|
|
if err != nil {
|
|
continue
|
|
}
|
|
var entrustJson share.ShareBlkTallyCache
|
|
if err = json.Unmarshal([]byte(orderMap), &entrustJson); err != nil {
|
|
continue
|
|
}
|
|
var entrust *share.ShareBlkTallyCache
|
|
entrust = &entrustJson
|
|
if entrust == nil {
|
|
continue
|
|
}
|
|
entrust.Symbol = code
|
|
entrust.Order.StockId = code
|
|
// 3、处理挂单|持仓|用户订阅|管理员订阅缓存数据
|
|
switch value.Status {
|
|
case 0: // 挂单
|
|
if err = share.ShareBklHashUserOrder(Reds, setting.MarketShareBlkEntrust, entrust); err != nil {
|
|
continue
|
|
}
|
|
case 1: // 持仓
|
|
if err = share.ShareBklHashUserOrder(Reds, setting.MarketShareBlkPosition, entrust); err != nil {
|
|
continue
|
|
}
|
|
default:
|
|
continue
|
|
}
|
|
// 更新用户订阅缓存
|
|
cacheKey := fmt.Sprintf("%v-%v", setting.ShareBlkSubscribe, entrust.UserId)
|
|
if err = share.ShareBklHashUserOrder(Reds, cacheKey, entrust); err != nil {
|
|
continue
|
|
}
|
|
// 更新管理员订阅缓存
|
|
if err = share.ShareBklHashUserOrder(Reds, setting.AdminShareBlkSubscribe, entrust); err != nil {
|
|
continue
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// UpdateBotUserStockBlockLog
|
|
//
|
|
// @Description: 更新大宗交易日志表(美股|泰股|马股|印尼股|印度股|新加坡股|港股|英股|法股|德股)
|
|
// @param session
|
|
// @param code
|
|
// @param codeOld
|
|
// @return error
|
|
func (uo *userOrderRepo) UpdateBotUserStockBlockLog(session *xorm.Session, code, codeOld string) error {
|
|
var userStockBlkLog []models.BotUserStockBlockLog
|
|
if err := session.Table(flags.BotUserStockBlockLog).Where("stock_id =?", codeOld).Find(&userStockBlkLog); err != nil {
|
|
return err
|
|
}
|
|
for _, value := range userStockBlkLog {
|
|
value.StockId = code
|
|
inCheck, err := session.Table(flags.BotUserStockBlockLog).Where("id =?", value.Id).Update(&value)
|
|
if err != nil || inCheck <= 0 {
|
|
applogger.Error("%v UpdateBotUserStockBlockLog BotUserStockBlockLog err:%v", common.ErrSharePre, err)
|
|
continue
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|