This commit is contained in:
DESKTOP-1R2VSQH\Lenovo ThinkPad E490 2026-05-07 14:40:56 +07:00
parent fe1ebaa1cf
commit bd102a9609
2 changed files with 0 additions and 79 deletions

View file

@ -25,9 +25,6 @@ import { ProfileActposition } from "../entities/ProfileActposition";
import { RequestWithUser } from "../middlewares/user"; import { RequestWithUser } from "../middlewares/user";
import { escape } from "querystring"; import { escape } from "querystring";
const REDIS_HOST = process.env.REDIS_HOST;
const REDIS_PORT = process.env.REDIS_PORT;
@Route("api/v1/org/pos/act") @Route("api/v1/org/pos/act")
@Tags("PosMasterAct") @Tags("PosMasterAct")
@Security("bearerAuth") @Security("bearerAuth")
@ -40,23 +37,6 @@ export class PosMasterActController extends Controller {
private posMasterActRepository = AppDataSource.getRepository(PosMasterAct); private posMasterActRepository = AppDataSource.getRepository(PosMasterAct);
private posMasterRepository = AppDataSource.getRepository(PosMaster); private posMasterRepository = AppDataSource.getRepository(PosMaster);
private actpositionRepository = AppDataSource.getRepository(ProfileActposition); private actpositionRepository = AppDataSource.getRepository(ProfileActposition);
private redis = require("redis");
/**
* Helper function cache acting position
*/
private async invalidatePermissionCache(profileIds: string[]) {
const redisClient = await this.redis.createClient({
host: REDIS_HOST,
port: REDIS_PORT,
});
for (const profileId of profileIds) {
redisClient.del(`role_${profileId}_acting`);
redisClient.del(`role_${profileId}_normal`);
redisClient.del(`menu_${profileId}`);
}
}
/** /**
* API * API
@ -109,12 +89,6 @@ export class PosMasterActController extends Controller {
posMasterAct.createdAt = new Date(); posMasterAct.createdAt = new Date();
posMasterAct.lastUpdatedAt = new Date(); posMasterAct.lastUpdatedAt = new Date();
await this.posMasterActRepository.save(posMasterAct); await this.posMasterActRepository.save(posMasterAct);
// ลบ cache ของผู้ถูกรักษาการ (current_holder ของ posMasterChild)
if (posMasterChild.current_holderId) {
await this.invalidatePermissionCache([posMasterChild.current_holderId]);
}
return new HttpSuccess(posMasterAct); return new HttpSuccess(posMasterAct);
} }
@ -321,7 +295,6 @@ export class PosMasterActController extends Controller {
where: { where: {
id: id, id: id,
}, },
relations: ["posMasterChild"],
}); });
try { try {
result = await this.posMasterActRepository.delete({ id: id }); result = await this.posMasterActRepository.delete({ id: id });
@ -345,11 +318,6 @@ export class PosMasterActController extends Controller {
p.posMasterOrder = i + 1; p.posMasterOrder = i + 1;
await this.posMasterActRepository.save(p); await this.posMasterActRepository.save(p);
}); });
// ลบ cache ของผู้ถูกรักษาการ
if (posMasterAct.posMasterChild?.current_holderId) {
await this.invalidatePermissionCache([posMasterAct.posMasterChild.current_holderId]);
}
} }
return new HttpSuccess(); return new HttpSuccess();
} }
@ -800,9 +768,6 @@ export class PosMasterActController extends Controller {
throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรักษาการในตำแหน่งของหน่วยงานนี้"); throw new HttpError(HttpStatusCode.NOT_FOUND, "ไม่พบข้อมูลรักษาการในตำแหน่งของหน่วยงานนี้");
} }
// เก็บ profileIds ที่ได้รับผลกระทบเพื่อลบ cache
const affectedProfileIds: string[] = [];
await Promise.all( await Promise.all(
posMasterActs.map(async (posMasterAct) => { posMasterActs.map(async (posMasterAct) => {
const orgShortName = const orgShortName =
@ -817,8 +782,6 @@ export class PosMasterActController extends Controller {
const profileId = posMasterAct.posMasterChild?.current_holderId; const profileId = posMasterAct.posMasterChild?.current_holderId;
if (profileId) { if (profileId) {
affectedProfileIds.push(profileId);
const existingActivePositions = await this.actpositionRepository.find({ const existingActivePositions = await this.actpositionRepository.find({
select: [ select: [
"id", "id",
@ -871,11 +834,6 @@ export class PosMasterActController extends Controller {
}), }),
); );
// ลบ cache ของผู้ถูกรักษาการทั้งหมด
if (affectedProfileIds.length > 0) {
await this.invalidatePermissionCache(affectedProfileIds);
}
return new HttpSuccess(); return new HttpSuccess();
} }
} }

View file

@ -25,10 +25,6 @@ import HttpStatus from "../interfaces/http-status";
import HttpSuccess from "../interfaces/http-success"; import HttpSuccess from "../interfaces/http-success";
import permission from "../interfaces/permission"; import permission from "../interfaces/permission";
import { setLogDataDiff } from "../interfaces/utils"; import { setLogDataDiff } from "../interfaces/utils";
const REDIS_HOST = process.env.REDIS_HOST;
const REDIS_PORT = process.env.REDIS_PORT;
@Route("api/v1/org/profile/actposition") @Route("api/v1/org/profile/actposition")
@Tags("ProfileActposition") @Tags("ProfileActposition")
@Security("bearerAuth") @Security("bearerAuth")
@ -36,23 +32,6 @@ export class ProfileActpositionController extends Controller {
private profileRepo = AppDataSource.getRepository(Profile); private profileRepo = AppDataSource.getRepository(Profile);
private profileActpositionRepo = AppDataSource.getRepository(ProfileActposition); private profileActpositionRepo = AppDataSource.getRepository(ProfileActposition);
private profileActpositionHistoryRepo = AppDataSource.getRepository(ProfileActpositionHistory); private profileActpositionHistoryRepo = AppDataSource.getRepository(ProfileActpositionHistory);
private redis = require("redis");
/**
* Helper function cache acting position
*/
private async invalidatePermissionCache(profileIds: string[]) {
const redisClient = await this.redis.createClient({
host: REDIS_HOST,
port: REDIS_PORT,
});
for (const profileId of profileIds) {
redisClient.del(`role_${profileId}_acting`);
redisClient.del(`role_${profileId}_normal`);
redisClient.del(`menu_${profileId}`);
}
}
@Get("user") @Get("user")
public async detailProfileActpositionUser(@Request() request: { user: Record<string, any> }) { public async detailProfileActpositionUser(@Request() request: { user: Record<string, any> }) {
@ -182,10 +161,6 @@ export class ProfileActpositionController extends Controller {
history.profileActpositionId = data.id; history.profileActpositionId = data.id;
await this.profileActpositionHistoryRepo.save(history, { data: req }); await this.profileActpositionHistoryRepo.save(history, { data: req });
//setLogDataDiff(req, { before, after: history }); //setLogDataDiff(req, { before, after: history });
// ลบ cache เมื่อสร้าง acting position ใหม่
await this.invalidatePermissionCache([body.profileId]);
return new HttpSuccess(data.id); return new HttpSuccess(data.id);
} }
@ -223,9 +198,6 @@ export class ProfileActpositionController extends Controller {
// setLogDataDiff(req, { before: before_null, after: history }), // setLogDataDiff(req, { before: before_null, after: history }),
]); ]);
// ลบ cache เมื่อแก้ไข acting position
await this.invalidatePermissionCache([record.profileId]);
return new HttpSuccess(); return new HttpSuccess();
} }
@ -264,9 +236,6 @@ export class ProfileActpositionController extends Controller {
this.profileActpositionHistoryRepo.save(history, { data: req }), this.profileActpositionHistoryRepo.save(history, { data: req }),
]); ]);
// ลบ cache เมื่อ soft delete acting position
await this.invalidatePermissionCache([record.profileId]);
return new HttpSuccess(); return new HttpSuccess();
} }
@ -276,7 +245,6 @@ export class ProfileActpositionController extends Controller {
@Request() req: RequestWithUser, @Request() req: RequestWithUser,
) { ) {
const _record = await this.profileActpositionRepo.findOneBy({ id: actpositionId }); const _record = await this.profileActpositionRepo.findOneBy({ id: actpositionId });
const profileId = _record?.profileId;
if (_record) { if (_record) {
await new permission().PermissionOrgUserDelete( await new permission().PermissionOrgUserDelete(
req, req,
@ -293,11 +261,6 @@ export class ProfileActpositionController extends Controller {
if (result.affected == undefined || result.affected <= 0) if (result.affected == undefined || result.affected <= 0)
throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล"); throw new HttpError(HttpStatus.NOT_FOUND, "ไม่พบข้อมูล");
// ลบ cache เมื่อ delete acting position
if (profileId) {
await this.invalidatePermissionCache([profileId]);
}
return new HttpSuccess(); return new HttpSuccess();
} }
} }