Skip to content

Commit ab75765

Browse files
committed
sql modify; history search
1 parent 606b150 commit ab75765

File tree

6 files changed

+87
-49
lines changed

6 files changed

+87
-49
lines changed

src/controllers/StockController.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,14 @@ class StockController {
6565
// }
6666

6767
async pages1(ctx: Context) {
68-
const { page = 1, pageSize = 10, code, name, market, block } = ctx.query
69-
const [list, total] = await StockService.pages(page, pageSize, code, name, market, block)
70-
ctx.Pages({ list, total })
68+
const { page = 1, pageSize = 10, code, name, market, block, noPage } = ctx.query
69+
if(!!noPage) {
70+
const list= await StockService.getStockList(code, pageSize)
71+
ctx.Json({ data: list })
72+
} else {
73+
const [list, total] = await StockService.pages(page, pageSize, code, name, market, block)
74+
ctx.Pages({ list, total })
75+
}
7176
}
7277

7378
async pages(delta = 0, size = 10) {

src/controllers/StockHistoryController.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,11 @@ class SharesController {
147147
}
148148

149149
async pages(ctx: Context) {
150-
const { code, page = 1, pageSize = 10 } = ctx.query
150+
const { id: stockId, page = 1, pageSize = 10 } = ctx.query
151151
// if(!code) {
152152
// throw new Error('code参数缺失')
153153
// }
154-
const [list, total] = await StockHistoryService.pages(Number(page), Number(pageSize), code)
154+
const [list, total] = await StockHistoryService.pages(Number(page), Number(pageSize), stockId)
155155
ctx.Pages({list, total})
156156
}
157157

src/daos/StockDao.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,13 @@ class StockDao {
1414
return stock
1515
}
1616

17+
async getById(id: number) {
18+
const stock = await getSharesRepository(Stock).findOne(id, {
19+
select: ['id', 'code', 'name']
20+
})
21+
return stock
22+
}
23+
1724
async getByIds(ids: number[]) {
1825
const stocks = await getSharesRepository(Stock).findByIds(ids, {
1926
select: ['id', 'code', 'name']
@@ -26,6 +33,20 @@ class StockDao {
2633
return stock
2734
}
2835

36+
async getStockList(value: string, pageSize = 10) {
37+
const list = await getSharesRepository(Stock).find({
38+
where: [
39+
{ code: Like(`%${value}%`) },
40+
{ name: Like(`%${value}%`) }
41+
],
42+
order: {
43+
code: 'DESC'
44+
},
45+
take: pageSize
46+
})
47+
return list
48+
}
49+
2950
async pages(offset = 1, size = 10, code?: string, name?: string, market?: EMarket, block?: EBLock) {
3051
const where: FindConditions<Stock> = {}
3152
if(code) {

src/daos/StockHistoryDao.ts

Lines changed: 30 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -20,44 +20,36 @@ class StockHistoryDao {
2020
}
2121

2222
async pages(offset = 1, size = 10, stockId?: number): Promise<[StockHistory[], number]> {
23-
let sqlList = `Select
24-
id,
25-
stockId,
26-
volume,
27-
open,
28-
high,
29-
low,
30-
close,
31-
chg,
32-
percent,
33-
turnoverrate,
34-
amount,
35-
pe,
36-
pb,
37-
ps,
38-
pcf,
39-
market_capital From stock_history_new sh`
40-
let sqlTotal = `Select count(sh.id) total From stock_history_new sh`
41-
42-
const parameters = []
43-
44-
if(stockId) {
45-
const whereAnd = `
46-
And sh.stockId = ?
47-
`
48-
sqlList += whereAnd
49-
sqlTotal += whereAnd
50-
parameters.push(stockId)
51-
}
52-
sqlList += `
53-
Order By sh.timestamp Desc
54-
Limit ?,?;`
55-
56-
parameters.push((offset > 0 ? (offset - 1) : 0) * size, size)
57-
58-
const list = await getSharesManager().query(sqlList, parameters)
59-
const totalRow = await getSharesManager().query(sqlTotal, parameters)
60-
return [list, totalRow[0].total]
23+
const [list, total] = await getSharesRepository(History).findAndCount({
24+
select: [
25+
'id',
26+
'stockId',
27+
'volume',
28+
'open',
29+
'high',
30+
'low',
31+
'close',
32+
'chg',
33+
'percent',
34+
'turnoverrate',
35+
'amount',
36+
'pe',
37+
'pb',
38+
'ps',
39+
'pcf',
40+
'market_capital',
41+
'timestamp'
42+
],
43+
where: {
44+
stockId: Equal(stockId)
45+
},
46+
order: {
47+
timestamp: 'DESC'
48+
},
49+
skip: (offset > 0 ? (offset - 1) : 0) * size,
50+
take: size
51+
})
52+
return [list as StockHistory[], total]
6153
}
6254
}
6355

src/services/StockHistoryService.ts

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,22 @@ class StockHistoryService {
1414
return lastestTrade
1515
}
1616

17-
async pages(offset = 1, size = 10, code: string): Promise<[StockHistory[], number]> {
18-
// const stock = await StockService.getByCode(code)
19-
// if(stock) {
17+
async pages(offset = 1, size = 10, stockId: number): Promise<[StockHistory[], number]> {
18+
if(stockId) {
19+
const stock = await StockService.getById(stockId)
20+
const [list, total] = await StockHistoryDao.pages(offset, size, stockId)
21+
return [
22+
list.map(item => {
23+
item.tradeAt = formatDate(+item.timestamp, DateFormat.Date)
24+
item.name = stock.name
25+
item.code = stock.code
26+
return item
27+
}),
28+
total
29+
]
30+
} else {
2031
const [list, total] = await StockHistoryDao.pages(offset, size)
32+
// set code,name; format timestamp
2133
const ids = list.map(item => item.stockId).reduce<number[]>((pre, cur) => {
2234
if(!pre.includes(cur)) {
2335
pre.push(cur)
@@ -38,9 +50,7 @@ class StockHistoryService {
3850
}),
3951
total
4052
]
41-
// } else {
42-
// return [[], 0]
43-
// }
53+
}
4454
}
4555
}
4656

src/services/StockService.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ import StockHistoryDao from '../daos/StockHistoryDao'
77

88
class StockService {
99

10+
async getById(id: number) {
11+
const stock = await StockDao.getById(id);
12+
return stock
13+
}
14+
1015
async getByIds(ids: number[]) {
1116
const stocks = await StockDao.getByIds(ids);
1217
return stocks
@@ -26,6 +31,11 @@ class StockService {
2631
return stock
2732
}
2833

34+
async getStockList(value: string, pageSize = 10) {
35+
const list = await StockDao.getStockList(value)
36+
return list
37+
}
38+
2939
async pages(offset = 1, size = 10, code?: string, name?: string, market?: EMarket, block?: EBLock) {
3040
const pages = await StockDao.pages(offset, size, code, name, market, block);
3141
return pages

0 commit comments

Comments
 (0)