This commit is contained in:
2026-07-20 18:04:10 +08:00 Unverified
parent a30477bb58
commit 67863e7ebf
16 changed files with 211 additions and 57 deletions
+23 -9
View File
@@ -57,7 +57,7 @@ function buildSeedOperations(state) {
const nullable = value => value == null || value === '' ? null : value;
add(
'UPDATE schema_metadata SET schema_version = 14, app_version = ?, self_registration_enabled = ?, created_at = ? WHERE id = 1',
'UPDATE schema_metadata SET schema_version = 15, app_version = ?, self_registration_enabled = ?, created_at = ? WHERE id = 1',
Number(state.meta?.version || 1), state.settings?.selfRegistrationEnabled ? 1 : 0,
state.meta?.createdAt || new Date().toISOString()
);
@@ -147,11 +147,12 @@ function buildSeedOperations(state) {
for (const registration of state.registrations) {
add(
`INSERT INTO registrations (
id, user_id, exam_id, status, payment_status, created_at, reviewed_at, review_note,
id, user_id, exam_id, status, payment_status, paid_at, paid_by, created_at, reviewed_at, review_note,
registration_number, number_rule_id
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
registration.id, registration.userId, registration.examId, registration.status,
registration.paymentStatus, registration.createdAt, nullable(registration.reviewedAt), nullable(registration.reviewNote),
registration.paymentStatus, nullable(registration.paidAt), nullable(registration.paidBy), registration.createdAt,
nullable(registration.reviewedAt), nullable(registration.reviewNote),
nullable(registration.registrationNumber), nullable(registration.numberRuleId)
);
for (const subjectId of registration.subjectIds) {
@@ -546,6 +547,8 @@ function stateFromRows(rows) {
subjectIds: registrationSubjects.get(row.id) || [],
status: row.status,
paymentStatus: row.payment_status,
paidAt: row.paid_at || null,
paidBy: row.paid_by || null,
createdAt: row.created_at,
reviewedAt: row.reviewed_at,
reviewNote: row.review_note || '',
@@ -957,11 +960,12 @@ function createRepository({ client, location, read, transaction, close }) {
async createRegistration(registration, instance, action) {
const operations = [operation(
`INSERT INTO registrations (
id, user_id, exam_id, status, payment_status, created_at, reviewed_at, review_note,
id, user_id, exam_id, status, payment_status, paid_at, paid_by, created_at, reviewed_at, review_note,
registration_number, number_rule_id
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
registration.id, registration.userId, registration.examId, registration.status,
registration.paymentStatus, registration.createdAt, optional(registration.reviewedAt), optional(registration.reviewNote),
registration.paymentStatus, optional(registration.paidAt), optional(registration.paidBy), registration.createdAt,
optional(registration.reviewedAt), optional(registration.reviewNote),
optional(registration.registrationNumber), optional(registration.numberRuleId)
)];
for (const subjectId of registration.subjectIds) {
@@ -992,6 +996,15 @@ function createRepository({ client, location, read, transaction, close }) {
auditOperation(log)
]);
},
async updateRegistrationPayment(registration, log) {
await transaction([
operation(
'UPDATE registrations SET payment_status = ?, paid_at = ?, paid_by = ? WHERE id = ?',
registration.paymentStatus, optional(registration.paidAt), optional(registration.paidBy), registration.id
),
auditOperation(log)
]);
},
async processWorkflow(instance, action, business, log) {
const operations = [
operation(
@@ -1012,9 +1025,10 @@ function createRepository({ client, location, read, transaction, close }) {
} else if (instance.businessType === 'registration_review') {
operations.push(operation(
`UPDATE registrations SET
status = ?, payment_status = ?, reviewed_at = ?, review_note = ?,
status = ?, payment_status = ?, paid_at = ?, paid_by = ?, reviewed_at = ?, review_note = ?,
registration_number = ?, number_rule_id = ? WHERE id = ?`,
business.status, business.paymentStatus, optional(business.reviewedAt), optional(business.reviewNote),
business.status, business.paymentStatus, optional(business.paidAt), optional(business.paidBy),
optional(business.reviewedAt), optional(business.reviewNote),
optional(business.registrationNumber), optional(business.numberRuleId), business.id
));
} else if (instance.businessType === 'center_change') {