🏛️ HONGIKINGAN CMS хөгжүүлэгчийн гарын авлага

Хувилбар 202506 | Шинэчилсэн 2025-06-12
🌐 Хэл сонгох: 🇰🇷 한국어 🇲🇳 Монгол 🇺🇸 English

4-1. 🏗️ Үндсэн функц үндсэн бүтэц

4.1 Төслийн эх кодын бүтэц

HONGIKINGAN CMS нь хоёр гол модулиас бүрдэнэ.

🔧4.1.1 BO (humanframe.backoffice)

Админ хэсэг болон үндсэн системийн ажиллагаа, хуваарь зэрэг мета өгөгдлийг удирдах төсөл. CMS-ийн үндсэн админ функц болон системийн үйл ажиллагаанд шаардлагатай элементүүд байх бөгөөд хөгжүүлэгч шууд засварлах боломжтой.

Үндсэн багцын бүтэц

🎯aop.aspect

Админ AOP хэрэгжүүлэлт, админ самбарын эрх шалгах, админ лог хадгалах, хэрэглэгчийн самбарын эрх шалгах болон тохиргоо харах

  • admin: Админтай холбоотой AOP (AdminBbsAspect, AdminLogAspect, AdminPrivacyAspect гэх мэт)
  • web: Хэрэглэгчтэй холбоотой AOP (UsrChkAuthBeforeAspect, UsrChkPermNttBeforeAspect гэх мэт)

🔧common

Нийтлэг функц тодорхойлолт - нийтлэг кодын зураглал, DB кодын админ ялгаж системийн үйл ажиллагааны үед бүртгэл өөрчлөх шаардлагагүй код өгөгдлийг цуглуулсан бөгөөд аль болох засварлахгүй байх, засварлах үед анхаарал шаардлагатай

🎮controller

Spring контроллер классуудын цуглуулга, системийн үйл ажиллагаа болон CMS суурьтай програмын контроллер

📁 Багц 📋 Тайлбар
ajaxAJAX хүсэлт боловсруулах контроллер
bannerБаннер удирдлагын контроллер
bbsСамбар удирдлагын контроллер
cmНийтлэг удирдлагын контроллер
cntntsКонтент удирдлагын контроллер
commНийтлэг контроллер
dashboardХяналтын самбарын контроллер
fnctФункцтэй холбоотой контроллер
frontФронтэнд холбоотой контроллер
indexИндекс хуудасны контроллер
loginНэвтрэх холбоотой контроллер
mberГишүүн удирдлагын контроллер
mediaМедиа удирдлагын контроллер
metadataМета өгөгдөл удирдлагын контроллер
mngУдирдлагын функцийн контроллер
oauthOAuth баталгаажуулалт холбоотой контроллер
pblcateНийтлэл холбоотой контроллер
popupПопап удирдлагын контроллер
privacyХувийн мэдээлэл удирдлагын контроллер
siteСайт удирдлагын контроллер
statsСтатистик удирдлагын контроллер

🗄️dao

Data Access Object цуглуулга, төрөл бүрийн DAO

🛡️interceptor

Админ Interceptor хэрэгжүүлэлт, админ нэвтрэх шалгалт, URI параметр шалгалт гэх мэт

scheduler

Системийн хуваарь удирдлага, мини самбарын JSON өгөгдөл үүсгэх, цэсийн статистик өгөгдөл үүсгэх

⚙️service

Spring сервис болон хэрэгжүүлэлт классууд

  • impl: Сервис хэрэгжүүлэлт классууд

👤session

Админ болон хэрэглэгчийн Session классууд

🏷️tld.button

JSP Tag Library зэрэг таг классууд

🔧util

Төрөл бүрийн утилит классууд

👁️view

RssViewer класс

📦vo

Value Object классууд

🌐4.1.2 WEB (humanframe.web)

CMS-ийн хэрэглэгчийн хэсгийн Java классууд болон Frontend Presentation (дэлгэцийн нөөц, хэрэглэгчийн контент боловсруулалт)-д зориулсан төрөл бүрийн нөөц (jsp, xml, js, css гэх мэт)-ээс бүрдэнэ. Голчлон, CMS-ийн үндсэн функц биш нэмэлт функцийн бүх програмын эх код (Java class, jsp, xml гэх мэт) энэ төсөлд багтана.

Үндсэн багцын бүтэц

🔧common

Нийтлэг функц тодорхойлолт - нийтлэг кодын зураглал, нийтлэг тогтмол гэх мэт

🎮controller

Spring контроллер классуудын цуглуулга, нэмэлт хөгжүүлэлтийн програмын контроллер

  • admin: Админ функцийн контроллер
  • front: Фронтэнд контроллер

🗄️dao

Data Access Object цуглуулга, төрөл бүрийн DAO

🔍filter

XSSWebFilter, MberLoginFilter гэх мэт

🛡️interceptor

Хэрэглэгчийн URIInterceptor хэрэгжүүлэлт, дамжуулсан URI шалгалт болон URI-д тохирсон цэсийн мэдээлэл холбох

🔐security

Шифрлэлт холбоотой классууд

⚙️service

Spring сервис болон хэрэгжүүлэлт классууд

  • impl: Сервис хэрэгжүүлэлт классууд

📦vo

Value Object классууд

4.2 Нөөцийн бүтэц

4.2.1 Spring Context тохиргооны файл

HONGIKINGAN CMS нь олон төрлийн Spring Context тохиргооны файлаар дамжуулан системийн үйл ажиллагааг тодорхойлдог.

🔧

context-backoffice.xml

Админ хэрэглэгчийн сэшн bean тодорхойлолт

🔐

context-crypto.xml

Шифрлэлт bean тодорхойлолт

🗄️

context-datasource.xml

Өгөгдлийн сан холболтын тохиргоо

🗺️

context-mapper.xml

MyBatis маппер тохиргоо

⚙️

context-properties.xml

Системийн шинж чанарын тохиргоо

context-scheduler.xml

Хуваарь bean тодорхойлолт, мини самбар, цэсийн статистик

🔄

context-transaction.xml

Гүйлгээний удирдлагын тохиргоо

📋

human-resource.xml

Нөөц холбоотой тохиргоо

4.2.2 Веб апп-ын бүтэц

Веб аппликейшн нь дараах үндсэн лавлахуудаас бүрдэнэ:

🔧common

Нийтлэг нөөц

📊data

Өгөгдлийн файл

🏛️humanframe

CMS-ийн үндсэн нөөц

  • admin: Админ хуудасны нөөц
  • theme: Хэрэглэгчийн загварын нөөц
  • global: Нийтлэг нөөц

📄json

JSON өгөгдлийн файл

✏️webeditor

Веб засварлагчийн нөөц

webeditorplus

Өргөтгөсөн веб засварлагчийн нөөц

⚙️WEB-INF

Веб аппликейшний тохиргоо болон классын файл

  • jsp: JSP файл
  • config: Тохиргооны файл
  • tld: Таг номын сангийн тодорхойлолтын файл

4.3 Хэрэглэгчийн удирдлага

4.3.1 Баталгаажуулалт болон эрхийн удирдлага

HONGIKINGAN CMS нь хэрэглэгчийн баталгаажуулалт болон эрхийн удирдлагад зориулж Spring Security болон өөрөө хөгжүүлсэн эрхийн удирдлагын системийг хамтад ашигладаг.

Үндсэн функц

Эрхийн удирдлагын бүтэц

👤
Хэрэглэгч/Админ
👥
Эрхийн бүлэг
🎯
Цэс/Функц

Үндсэн класс

Эрх шалгах AOP код (бодит код)
// [Кодын байршил] humanframe.backoffice.aop.aspect.admin.AdminBbsAspect
@Aspect
@Order(1)
@Component
public class AdminBbsAspect {

    // Админ эрх шалгах
    @Pointcut("execution(* humanframe.backoffice..AdminBbsType*Controller.form(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.list(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.view(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.action(..))"
            + "|| execution(* humanframe.backoffice..AdminBbsType*Controller.answer(..))")
    private void checkAdminBbsAuth() {}

    @Before(value = "checkAdminBbsAuth()")
    private void beforeCheckAdminBbsAuth(
            JoinPoint joinPoint)throws Exception {
        // ... дунд хэсэг орхигдсон (эрх шалгах логик) ...
    }
}

4.3.2 Сэшний удирдлага

HONGIKINGAN CMS нь хэрэглэгч болон админ сэшнийг тусад нь удирдаж, сэшний хугацаа дуусах, зэрэг нэвтрэх хяналт зэрэг функцийг өгдөг.

Үндсэн функц

Үндсэн класс

Сэшний удирдлагын код (бодит код)
// [Кодын байршил] humanframe.backoffice.session.MngrSession
public class MngrSession implements Serializable {
    private static final long serialVersionUID = 1L;
    
    private String mngrId;
    private String mngrNm;
    private String authorTy;
    private String[] siteNos;
    private String[] siteMenus;//for cntnts
    private String[] fnctNos;//for fnct
    private String[] bbsNos;//for bbs
    
    // Сэшний мэдээлэл тохируулах болон харах арга
    // ...
}

4.3.3 Хэрэглэгчийн мэдээллийн удирдлага

Хэрэглэгчийн мэдээллийн удирдлага нь гишүүнчлэл, мэдээлэл засах, гарах зэрэг функцийг агуулна.

Үндсэн функц

Үндсэн класс

4.4 Контентийн удирдлага

4.4.1 Цэсний удирдлага

HONGIKINGAN CMS нь вебсайтын цэсний бүтцийг үр ашигтай удирдах боломжийг олгодог.

Үндсэн функц

Үндсэн класс

Цэс удирдлагын дэлгэц

Админ хуудасны "CMS удирдлага > Цэс удирдлага" цэснээс цэсний бүтцийг модны хэлбэрээр удирдах боломжтой.

4.4.2 Сайт/Цэс тараах систем

HONGIKINGAN CMS нь админ хуудас дээрх сайт болон цэсний өөрчлөлт хэрэглэгчийн хуудсанд шууд тусгагдахгүй, харин 'тараалт (Publication)' үйл явцаар дамжуулан тусгагддаг бүтэцтэй. Энэ нь админ өөрчлөлтийг хянаж, баталгаажуулсны дараа бодит хэрэглэгчийн хуудсанд хэрэглэх боломжийг олгодог аюулгүй байдлын арга юм.

Хүснэгтийн харилцаа

🔧
TN_SITE

TN_PBLCATE_SITE
📋
TN_SITE_MENU

TN_PBLCATE_SITE_MENU
  1. TN_SITE ↔ TN_PBLCATE_SITE
    • TN_SITE: Админ засварладаг сайтын мэдээллийн хүснэгт
    • TN_PBLCATE_SITE: Тараасны дараа хэрэглэгчид бодитоор харагдах сайтын мэдээллийн хүснэгт
  2. TN_SITE_MENU ↔ TN_PBLCATE_SITE_MENU
    • TN_SITE_MENU: Админ засварладаг цэсний мэдээллийн хүснэгт
    • TN_PBLCATE_SITE_MENU: Тараасны дараа хэрэглэгчид бодитоор харагдах цэсний мэдээллийн хүснэгт

Тараах үйл явц

✏️ Мэдээлэл засах

Админ TN_SITE эсвэл TN_SITE_MENU хүснэгтийн мэдээллийг засварладаг.

🚀 Тараалт гүйцэтгэх

Админ 'тараалт' функцийг ажиллуулдаг.

📋 Мэдээлэл хуулах

Систем засварласан мэдээллийг TN_PBLCATE_SITE эсвэл TN_PBLCATE_SITE_MENU хүснэгтэд хуулдаг.

🌐 Хэрэглэгчийн хуудсанд тусгах

Хэрэглэгчийн хуудас нь TN_PBLCATE_SITE болон TN_PBLCATE_SITE_MENU хүснэгтийн мэдээлэлд үндэслэн сайт болон цэсийг харуулдаг.

Тараах системийн давуу тал

🛡️

Тогтвортой байдал

Админы өөрчлөлт шалгалтгүйгээр шууд хэрэглэгчийн хуудсанд тусгагдахгүй тул тогтвортой үйлчилгээ үзүүлэх боломжтой.

Шалгалт

Админ өөрчлөлтийг тараахаас өмнө хангалттай хянаж болно.

📦

Багц хэрэглэх

Олон өөрчлөлтийг нэг дор тараах боломжтой тул сайтын бүтэц өөрчлөх үед тууштай байдлыг хадгалж чадна.

🔄

Буцаах боломж

Асуудал гарвал өмнөх төлөвт буцаах нь хялбар.

4.4.3 Самбарын удирдлага

Төрөл бүрийн самбар үүсгэж удирдах боломжийг олгодог.

Самбарын төрөл

📋 Төрөл 📝 Тайлбар
Type 1Ерөнхий самбар
Type 2Хариулт бүхий самбар
Type 3Зургийн самбар
Type 4Видео самбар
Type 5Q&A самбар
Type 6FAQ самбар
Type 7Хуваарийн самбар
Type 8Холбоосын самбар

Үндсэн функц

Үндсэн класс

Самбар тохиргооны кодын хэсэг (бодит код)
// [Кодын байршил] humanframe.backoffice.service.BbsSettingService
@SuppressWarnings("rawtypes")
public interface BbsSettingService {
    
    /**
     * Самбарын жагсаалтыг харах.
     * 
     * @param listVO хайлтын нөхцөл
     * @return самбарын жагсаалт
     */
    public HumanListVO boardListVo(HumanListVO listVO) throws Exception;
    
    /**
     * Самбарын мэдээллийг харах.
     * 
     * @param bbsNo самбарын дугаар
     * @return самбарын мэдээлэл
     */
    public BbsSettingVO retrieveBoardSetting(int bbsNo) throws Exception;
    
    // ... бусад арга
}

4.4.4 Контентийн удирдлага

Хуудас бүрдүүлэх контентийг удирдах боломжийг олгодог.

Үндсэн функц

Үндсэн класс

4.5 Файл болон медиа удирдлага

4.5.1 Файл оруулах/татах

HONGIKINGAN CMS нь төрөл бүрийн файлын оруулах болон татахыг аюулгүй боловсруулах функцийг олгодог.

Үндсэн функц

Файл оруулах боловсруулалтын урсгал

📤
Клиентийн хүсэлт
🔄
MultipartResolver
Файлын хүчинтэй байдал шалгах
💾
Файл хадгалах
🗄️
Мета өгөгдөл DB-д хадгалах

Үндсэн класс

Файлын нэр шалгах код (бодит код)
// FileUtil классын хэсэг
/** Файлын нэрийн зөв эсэх шалгах **/
public static boolean isValidFileName(String fileName) {
    // Үсэг, тоо, монгол, хятад, япон үсэг, хаалт, дөрвөлжин хаалт, бүдүүн хаалт, зураас, доогуур зураас, цэг, хоосон зайг зөвшөөрч
    // Windows-д файлын нэрэнд ашиглах боломжгүй тэмдэгт (\ / : * ? " < > |)-ийг хасан тогтмол илэрхийлэл
    final String FILE_NAME_PATTERN = "^[\w\-.()\[\]{} 가-힣一-鿿぀-ゟ゠-ヿ]+$";
    final Pattern pattern = Pattern.compile(FILE_NAME_PATTERN);
    if (fileName == null || fileName.trim().isEmpty()) {
        return false;
    }
    Matcher matcher = pattern.matcher(fileName);
    return matcher.matches();
}

4.5.2 Зураг боловсруулах

Зургийн файлд зориулсан тусгай боловсруулалтын функцийг олгодог.

Үндсэн функц

Үндсэн класс

Зураг боловсруулах код (бодит код)

FileServiceImpl классын хэсэг (жижиг зураг үүсгэх)

public void creatFileInfo(
        Map<String, MultipartFile> fileMap
        , int upperNo
        , String srvcId
        , Map<String,Object> reqMap) throws Exception {
    // ... (дунд хэсэг орхигдсон)
    for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
        try {
            if ((EgovStringUtil.equals("jpg", fileExtsn)
                    || EgovStringUtil.equals("gif", fileExtsn)
                    || EgovStringUtil.equals("png", fileExtsn)
                    || EgovStringUtil.equals("bmp", fileExtsn))) {
                Thumbnails.of(tempFile).size(StaticValues.SMALL_THUMB_SIZE_X, StaticValues.SMALL_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.SMALL_THUMB_PREFIX+"_"+ newFileName)));
                Thumbnails.of(tempFile).size(StaticValues.MEDIUM_THUMB_SIZE_X, StaticValues.MEDIUM_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.MEDIUM_THUMB_PREFIX+"_"+ newFileName)));
                Thumbnails.of(tempFile).size(StaticValues.LARGE_THUMB_SIZE_X, StaticValues.LARGE_THUMB_SIZE_Y)
                        .toFile(new File(WebUtil.filePathReplaceAll(filePath + "/"+ srvcId +"/" + toDay + "/" + StaticValues.LARGE_THUMB_PREFIX+"_"+ newFileName)));
            }
        }
        // ... (дунд хэсэг орхигдсон)
    }
    // ... (дунд хэсэг орхигдсон)
}

4.5.3 Медиа удирдлага

Зураг, видео зэрэг төрөл бүрийн медиа файлыг удирдах функцийг олгодог.

Үндсэн функц

Үндсэн класс