u
This commit is contained in:
@@ -69,6 +69,13 @@ export function buildClientStep2(authCode, config) {
|
|||||||
* security: []
|
* security: []
|
||||||
* x-markdown: pos/client.md
|
* x-markdown: pos/client.md
|
||||||
* parameters:
|
* parameters:
|
||||||
|
* - in: header
|
||||||
|
* name: version
|
||||||
|
* required: false
|
||||||
|
* schema:
|
||||||
|
* type: string
|
||||||
|
* description: POS client software version (e.g. 2.0.0.5)
|
||||||
|
* example: "2.0.0.5"
|
||||||
* - in: query
|
* - in: query
|
||||||
* name: authCode
|
* name: authCode
|
||||||
* required: true
|
* required: true
|
||||||
@@ -167,13 +174,14 @@ export async function handleClient(req, res) {
|
|||||||
const token = terminal.token;
|
const token = terminal.token;
|
||||||
const strToken = String(token || crypto.randomBytes(16).toString('hex')).trim();
|
const strToken = String(token || crypto.randomBytes(16).toString('hex')).trim();
|
||||||
const pairedAt = serverTimestamp();
|
const pairedAt = serverTimestamp();
|
||||||
const clientversion = req.query.clientversion || req.query.version || req.query.clientVersion || null;
|
const rawVersion = req.headers.version || req.headers.clientversion || req.query.clientversion || req.query.version || req.query.clientVersion || null;
|
||||||
|
const clientversion = rawVersion ? String(rawVersion).trim() : null;
|
||||||
|
|
||||||
await db.pair(terminal.id, {
|
await db.pair(terminal.id, {
|
||||||
token: strToken,
|
token: strToken,
|
||||||
clientserial: name,
|
clientserial: name,
|
||||||
pairedAt,
|
pairedAt,
|
||||||
clientversion: clientversion ? String(clientversion).trim() : null,
|
clientversion,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (terminal.companyId) {
|
if (terminal.companyId) {
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import * as db from '../../db/posterminal.js';
|
import * as db from '../../db/posterminal.js';
|
||||||
|
import { emit } from '../../api/sse.js';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @openapi
|
* @openapi
|
||||||
@@ -19,6 +20,13 @@ import * as db from '../../db/posterminal.js';
|
|||||||
* type: string
|
* type: string
|
||||||
* description: POS device authToken obtained during pairing (`Bearer <token>` or `<token>`)
|
* description: POS device authToken obtained during pairing (`Bearer <token>` or `<token>`)
|
||||||
* example: "Bearer c30099b66ec1fcb9ccd05795423c94e8"
|
* example: "Bearer c30099b66ec1fcb9ccd05795423c94e8"
|
||||||
|
* - in: header
|
||||||
|
* name: version
|
||||||
|
* required: false
|
||||||
|
* schema:
|
||||||
|
* type: string
|
||||||
|
* description: POS client software version reported by the device
|
||||||
|
* example: "2.0.0.5"
|
||||||
* - in: query
|
* - in: query
|
||||||
* name: lastChangedProduct
|
* name: lastChangedProduct
|
||||||
* required: false
|
* required: false
|
||||||
@@ -121,6 +129,23 @@ import * as db from '../../db/posterminal.js';
|
|||||||
export async function handleInit(req, res) {
|
export async function handleInit(req, res) {
|
||||||
const posterminalId = req.posterminal.id;
|
const posterminalId = req.posterminal.id;
|
||||||
|
|
||||||
|
const rawVersion = req.headers.version || req.headers.clientversion;
|
||||||
|
const incomingVersion = rawVersion ? String(rawVersion).trim() : '';
|
||||||
|
const currentVersion = req.posterminal.clientversion ? String(req.posterminal.clientversion).trim() : '';
|
||||||
|
|
||||||
|
const updateVersionPromise = (incomingVersion && incomingVersion !== currentVersion)
|
||||||
|
? db.setClientversion(posterminalId, incomingVersion)
|
||||||
|
.then(() => {
|
||||||
|
req.posterminal.clientversion = incomingVersion;
|
||||||
|
if (req.posterminal.companyId) {
|
||||||
|
emit('posterminal', { companyId: req.posterminal.companyId });
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(`Failed to update posterminal ${posterminalId} version:`, err);
|
||||||
|
})
|
||||||
|
: null;
|
||||||
|
|
||||||
const productCursor = Number(req.query.lastChangedProduct) || 0;
|
const productCursor = Number(req.query.lastChangedProduct) || 0;
|
||||||
const categoryCursor = Number(req.query.lastChangedCategory) || 0;
|
const categoryCursor = Number(req.query.lastChangedCategory) || 0;
|
||||||
const customerCursor = Number(req.query.lastChangedCustomer) || 0;
|
const customerCursor = Number(req.query.lastChangedCustomer) || 0;
|
||||||
@@ -145,6 +170,7 @@ export async function handleInit(req, res) {
|
|||||||
db.getCompositeProductCount({ posterminalId, cursor: compositeProductCursor }),
|
db.getCompositeProductCount({ posterminalId, cursor: compositeProductCursor }),
|
||||||
db.getDeletedEntityCount({ posterminalId, cursor: deletedEntityCursor }),
|
db.getDeletedEntityCount({ posterminalId, cursor: deletedEntityCursor }),
|
||||||
db.getMaxOrderIdCount({ posterminalId }),
|
db.getMaxOrderIdCount({ posterminalId }),
|
||||||
|
updateVersionPromise,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return res.status(200).json({
|
return res.status(200).json({
|
||||||
|
|||||||
Reference in New Issue
Block a user