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

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

4-2. ⚡ Үндсэн функц дээд функц

4.6 Статистик болон лог

4.6.1 Холболтын статистик (Google, сонголт)

Google Analytics (GA4) ашиглан сайтын зочлогчдын талаар олон төрлийн статистик мэдээллийг цуглуулж, дүн шинжилгээ хийх функцийг үзүүлдэг.

Үндсэн функц

Статистик өгөгдөл цуглуулах арга

⚙️ Google Analytics тохиргоо

Админ хуудсаар дамжуулан Google Analytics тохируулах

📊 Хяналтын самбар визуалчлах

Хяналтын самбараар дамжуулан визуалчлах

Үндсэн класс

Google Analytics тохиргоо (бодит код)

[Кодын байршил] /WEB-INF/jsp/theme/developers/layout/base_layout.jsp хуудасны хэсэг

<c:if test="${!empty curSiteVO.googleKey }">
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=${curSiteVO.googleKey}"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', '${curSiteVO.googleKey}');
</script>
</c:if>

4.6.2 Цэс статистик

Сайтын цэсийн зочлогчдын тоо, хуудас үзэлт зэрэг статистик мэдээллийг үзүүлдэг.

Үндсэн функц

Статистик өгөгдөл цуглуулах арга

📝 Лог бүртгэх

Хэрэглэгч холбогдох үед лог бүртгэх

⏰ Хуваарь ажиллуулах

Статистик өгөгдөл үүсгэх хуваарь ажиллуулах

📊 Визуалчлах

Цэс статистик цэсээр дамжуулан визуалчлах

Үндсэн класс

Цэс статистик хуваарийн кодын хэсэг (бодит код)

[Кодын байршил] humanframe.backoffice.scheduler.statsMenuSchedulerBatch

@Service("statsMenuScheduling")
public class statsMenuSchedulerBatch {

    @Resource(name="statsMenuService")
    private StatsMenuService statsMenuService;

    public void statsMenuMonth() throws Exception{
        
        String day = getYesterdayYmd();

        StatsMenuVO statsMenuVO = new StatsMenuVO();
        statsMenuVO.setStatsYyyy(day.substring(0,4));
        statsMenuVO.setStatsMm(day.substring(4,6));

        statsMenuService.deleteStatsMenuMonth(statsMenuVO);
        int result = statsMenuService.createStatsMenuMonth(statsMenuVO);
    }
}

4.6.3 Лог удирдлага

Системийн лог болон хэрэглэгчийн үйл ажиллагааны логийг удирдах функцийг үзүүлдэг.

Үндсэн функц

Үндсэн класс

Лог бүртгэх AOP код (бодит код)

[Кодын байршил] humanframe.backoffice.aop.aspect.admin.AdminLogAspect

@Aspect
@Order(2)
@Component
public class AdminLogAspect {

    @Resource(name = "mngLogService")
    private MngLogService mngLogService;

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

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

4.7 Хуваарь

4.7.1 Багц ажлын тохиргоо

Тогтмол ажиллуулах шаардлагатай ажлыг тохируулж удирдах функцийг үзүүлдэг.

Үндсэн функц

Хуваарийн тохиргооны кодын хэсэг (бодит код)

[Кодын байршил] humanframe/spring/context-scheduler.xml

<bean id="bbsCreateTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="bbsCreateJob" />
    <property name="cronExpression" value="0 */10 * * * ?" />
</bean>
<bean id="statsMenuYearTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="statsMenuYearCreateJob" />
    <property name="cronExpression" value="0 0 0 1 1 ?" />
</bean>
<bean id="statsMenuMonthTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
    <property name="jobDetail" ref="statsMenuMonthCreateJob" />
    <property name="cronExpression" value="0 0 0 1 * ?" />
</bean>

4.7.2 Тогтмол ажлын удирдлага

HONGIKINGAN CMS-д үндсэн байдлаар өгдөг тогтмол ажлуудыг удирддаг.

Үндсэн ажил

Үндсэн класс

Хуваарийн кодын хэсэг (бодит код)

[Кодын байршил] humanframe.backoffice.scheduler.BbsSchedulerBatch

public class BbsSchedulerBatch extends HumanAbstractController {

    @Resource(name="bbsMiniService")
    private BbsMiniService bbsMiniService;
    
    /**
     * Мини самбарын JSON өгөгдөл үүсгэх
     */
    public void bbsCreate() throws Exception {
        int result = 0;
        List<Map<String, Object>> bbsMiniAllList = bbsMiniService.selectMiniListAll();

        if(!bbsMiniAllList.isEmpty()) {
            // JSON файл үүсгэх
        }
        Map<String, Object> resultObjectMap = new HashMap<String, Object>();
        resultObjectMap.put("count", result);
        logger.info("##### Json " +result+ "ширхэг үүсгэх дууссан");
        logger.info("##### Json Create End");
    }
}

4.8 Серверийн орчин болон системийн функц

4.8.1 Хөгжүүлэлтийн серверийн орчин

HONGIKINGAN CMS нь дараах серверийн орчинд ажилладаг:

🌐

WAS

Apache Tomcat-9.0.80

JDK

OpenJDK-1.8.0.252

4.8.2 Үндсэн системийн функц

HONGIKINGAN CMS нь дараах үндсэн системийн функцийг үзүүлдэг:

🔐Шифрлэлт

  • AES256, SHA-256 алгоритм дэмжих
  • Хувийн мэдээлэл болон нууц үг шифрлэх

Хуваарь

  • Quartz суурьтай хуваарь
  • context-scheduler.xml-д тохируулах

📧Мэйл функц

  • SMTP суурьтай мэйл илгээх
  • Загвар суурьтай мэйлийн агуулга бүрдүүлэх

📊Excel оруулах/татах

  • Apache POI номын сан ашиглах
  • Их хэмжээний өгөгдөл боловсруулах дэмжих
  • JSP Excel татах (HTML хүснэгтийн арга) хольж ашиглах

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

  • Олон файл оруулах
  • Файлын төрөл болон хэмжээ хязгаарлах
  • Татах эрхийн удирдлага

✏️Веб засварлагч

  • SMART, KUKUDOCS, EDITORPLUS дэмжих
  • Зураг оруулах болон удирдах функц

🎨Бүдүүвч

  • Apache Tiles (хувилбар 3.0.5) суурьтай бүдүүвчийн удирдлага
  • Загвар суурьтай хуудас бүрдүүлэх

4.9 Утилит класс

HONGIKINGAN CMS нь төрөл бүрийн утилит классыг өгч хөгжүүлэлтийн хялбар байдлыг нэмэгдүүлдэг.

Үндсэн утилит класс

📁FileUtil

Файл бичих/унших боловсруулалт, файлын өргөтгөл шалгах

FileUtil классын ашиглах жишээ
String fileString = FileUtil.readFile(filePath);

🔧HumanComUtil

Нийтлэг утилит, Bean объект шууд авах

HumanBbsUtil классын ашиглах жишээ
MngrSiteService mngrSiteService = (MngrSiteService)HumanComUtil.getBean("mngrSiteService");

🔐HumanCryptoUtil

Шифрлэх/тайлах функц, ARIA+Base64 алгоритм дэмжих

HumanCryptoUtil классын ашиглах жишээ
String encryptedText = HumanCryptoUtil.encrypt(plainText);
String plainText = HumanCryptoUtil.decrypt(encryptedText);

🌐HumanHttpUtil

HTTP хүсэлт/хариулт боловсруулалт, REST API дуудах

HumanHttpUtil классын ашиглах жишээ
String response = HumanHttpUtil.getHttpForm(url, paramMap);

📧HumanMailUtil

Мэйл илгээх функц, загвар суурьтай мэйлийн агуулга бүрдүүлэх

HumanMailUtil классын ашиглах жишээ
HumanMailUtil.sendMail(from, to, subject, content);

🔍HumanReqUtil

HTTP хүсэлт дүн шинжилгээний утилит, бодит клиентийн IP хаяг гаргах

HumanReqUtil классын ашиглах жишээ
String ip = HumanReqUtil.getIp(request);

📝HumanStringUtil

Мөр боловсруулалт, кодчилол хөрвүүлэх

HumanStringUtil классын ашиглах жишээ
String stringDate = HumanStringUtil.convertDateFormat(date, "yyyy-MM-dd" );

🔗HumanUriUtil

Сайтын мэдээлэл/цэсний мэдээлэлд үндэслэн Uri үүсгэх

HumanUriUtil классын ашиглах жишээ
String formUri = HumanUriUtil.getCurrUri(curSite, curMenu);

👤LoginManager

Нэвтрэх сэшний удирдлага

LoginManager классын ашиглах жишээ
LoginManager loginManager = LoginManager.getInstance();
loginManager.setSession(session, mngrVO.getMngrId());

4.10 Tag Library

HONGIKINGAN CMS нь төрөл бүрийн таг номын санг өгч JSP хуудас хөгжүүлэхэд хялбар болгодог.

common/taglibs.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="f" %>
<%@ taglib uri="/WEB-INF/tld/double-submit" prefix="double-submit"  %>
<%@ taglib uri="/WEB-INF/tld/cms.tld" prefix="cms" 	 %>
<%@ taglib uri="/WEB-INF/tld/cms-function.tld" prefix="cmsFn" %>
<%@ taglib uri="/WEB-INF/tld/cms-button.tld" prefix="cmsBtn" %>
<%@ taglib uri="/WEB-INF/tld/cms-button2.tld" prefix="cmsBtn2" %>

Үндсэн таг номын сан

🏷️cms.tld

Үндсэн CMS таг, хуудаслалт, CCL холбоотой таг

cms.tld ашиглах жишээ
<cms:paging listVO="${listVO}"
                    firstIcon="<i class='fa fa-angle-double-left'></i>"
                    prevIcon="<i class='fa fa-angle-left'></i>"
                    nextIcon="<i class='fa fa-angle-right'></i>"
                    lastIcon="<i class='fa fa-angle-double-right'></i>"
                    cssClass="pagination pull-right"/>

🔘cms-button.tld

Самбарын товч холбоотой таг, эрхээр товчны харуулалт хянах

cms-button.tld ашиглах жишээ
<cmsBtn:list admin="true" cssClass="btn btn-default">Жагсаалт</cmsBtn:list>

🔘cms-button2.tld

Админ ерөнхий товч холбоотой таг, эрхээр товчны харуулалт хянах

cms-button2.tld ашиглах жишээ
<cmsBtn2:btn btnTy="save" path="${curPath}" mngrSession="${mngrSession }" >Хадгалах</cmsBtn2:btn>

⚙️cms-function.tld

Утилит функц, мөр боловсруулалт, огноо боловсруулалт гэх мэт

cms-function.tld ашиглах жишээ
${cmsFn:convertDate(item.value, 'yyyy.MM.dd') }

🛡️double-submit.tld

Давхар илгээх сэргийлэх таг, сэшн суурьтай токен удирдлага, CSRF сэргийлэх, олон форм дэмжих

double-submit.tld ашиглах жишээ
<button type="submit" class="btn btn-primary hidden-xs">Данс хүсэх</button>
<double-submit:preventer/>

4.11 Админ хуудасны үндсэн функц тус бүрийн холбоотой эх код

HONGIKINGAN CMS-ийн админ хуудас нь төрөл бүрийн функцийг үзүүлдэг бөгөөд функц тус бүрийн холбоотой эх кодыг ойлгох нь чухал юм. Энэ хэсэгт админ хуудасны үндсэн функц тус бүрийн холбоотой эх кодын бүтцийг тайлбарлана.

4.11.1 Нэвтрэх болон баталгаажуулалт холбоотой эх код

Админ нэвтрэх болон баталгаажуулалт холбоотой эх код нь дараах байдалтай.

Үндсэн класс

Ангилал Классын нэр Тайлбар
Контроллер humanframe.backoffice.controller.login.AdminLoginController Нэвтрэх контроллер
Утилит humanframe.backoffice.util.LoginManager Нэвтрэх удирдлагын утилит
Интерсептор humanframe.backoffice.interceptor.CMSAdminInterceptor Админ интерсептор
Сэшн humanframe.backoffice.session.MngrSession Админ сэшн

Үндсэн JSP файл

🔄

Баталгаажуулалтын боловсруулалтын урсгал

Нэвтрэх хүсэлт → AdminLoginController → LoginManager → баталгаажуулалт боловсруулах → MngrSession үүсгэх → үндсэн хуудас шилжих

4.11.2 Цэс удирдлага холбоотой эх код

Админ цэс удирдлагын функц холбоотой эх код нь дараах байдалтай.

Үндсэн класс

Ангилал Классын нэр
Контроллер humanframe.backoffice.controller.mng.AdminMngMenuController
Сервис humanframe.backoffice.service.impl.MngMenuServiceImpl
DAO humanframe.backoffice.dao.MngMenuDAO
VO humanframe.backoffice.vo.MngMenuVO

Үндсэн файл

4.11.3 Самбар удирдлага холбоотой эх код

Самбар удирдлагын функц холбоотой эх код нь дараах байдалтай.

Үндсэн контроллер

Контроллер Тайлбар
AdminBbsController Самбар удирдлага
AdminBbsSettingController Самбар тохиргоо
AdminBbsType1Controller Ерөнхий самбар
AdminBbsType2Controller Хариулт бүхий самбар
AdminBbsType3Controller Зургийн самбар
AdminBbsType4Controller Видео самбар
AdminBbsType5Controller Q&A самбар
AdminBbsType6Controller FAQ самбар
AdminBbsType7Controller Хуваарийн самбар
AdminBbsType8Controller Холбоосын самбар

Үндсэн сервис болон DAO

Үндсэн файл

4.11.4 Гишүүн удирдлага холбоотой эх код

👥Үндсэн класс

  • Контроллер: humanframe.backoffice.controller.mber.AdminMberController
  • Сервис: humanframe.backoffice.service.impl.MberServiceImpl
  • DAO: humanframe.backoffice.dao.MberDAO
  • VO: humanframe.backoffice.vo.MberVO

Үндсэн файл

  • JSP: /WEB-INF/jsp/admin/mber/list.jsp, form.jsp, view.jsp
  • SQL маппер: human-mber.xml

4.11.5 Контент удирдлага холбоотой эх код

📄Үндсэн класс

  • Контроллер: humanframe.backoffice.controller.cntnts.AdminCntntsController
  • Сервис: humanframe.backoffice.service.impl.CntntsServiceImpl
  • DAO: humanframe.backoffice.dao.CntntsDAO
  • VO: humanframe.backoffice.vo.CntntsVO

Үндсэн файл

  • JSP: /WEB-INF/jsp/admin/cntnts/list.jsp, form.jsp, view.jsp
  • SQL маппер: human-cntnts.xml, human-cntnts-hist.xml

4.11.6 Баннер удирдлага холбоотой эх код

🎯Үндсэн класс

  • Контроллер: humanframe.backoffice.controller.banner.AdminBannerController
  • Сервис: humanframe.backoffice.service.impl.BannerServiceImpl
  • DAO: humanframe.backoffice.dao.BannerDAO
  • VO: humanframe.backoffice.vo.BannerVO

Үндсэн файл

  • JSP: /WEB-INF/jsp/admin/banner/list.jsp, form.jsp, view.jsp
  • SQL маппер: human-banner.xml

4.11.7 Попап удирдлага холбоотой эх код

🪟Үндсэн класс

  • Контроллер: humanframe.backoffice.controller.popup.AdminPopupController
  • Сервис: humanframe.backoffice.service.impl.PopupServiceImpl
  • DAO: humanframe.backoffice.dao.PopupDAO
  • VO: humanframe.backoffice.vo.PopupVO

Үндсэн файл

  • JSP: /WEB-INF/jsp/admin/popup/list.jsp, form.jsp, view.jsp
  • SQL маппер: human-popup.xml

4.11.8 Цэс статистик удирдлага холбоотой эх код

📊Үндсэн класс

  • Контроллер: humanframe.backoffice.controller.stats.AdminStatsMenuController
  • Сервис: humanframe.backoffice.service.impl.StatsMenuServiceImpl
  • DAO: humanframe.backoffice.dao.StatsMenuDAO
  • VO: humanframe.backoffice.vo.StatsMenuVO
  • Хуваарь: humanframe.backoffice.scheduler.statsMenuSchedulerBatch

Үндсэн файл

  • JSP: /WEB-INF/jsp/admin/stats/menu/list.jsp, excel.jsp
  • SQL маппер: human-stats_menu.xml

4.11.9 Систем удирдлага холбоотой эх код

Систем удирдлагын функц холбоотой эх код нь дараах байдалтай.

Үндсэн контроллер

Контроллер Тайлбар
AdminCodeController Код удирдлага
AdminMngrController Админ удирдлага
AdminMngAuthorController Эрх удирдлага
AdminMngMenuController Системийн цэс удирдлага

Үндсэн сервис

Үндсэн файл