4-2. ⚡ Үндсэн функц дээд функц
4.6 Статистик болон лог
4.6.1 Холболтын статистик (Google, сонголт)
Google Analytics (GA4) ашиглан сайтын зочлогчдын талаар олон төрлийн статистик мэдээллийг цуглуулж, дүн шинжилгээ хийх функцийг үзүүлдэг.
Үндсэн функц
- Өдөр/сар/гариг/цагийн бүсээр зочлогчдын статистик
- Сайт/цэсээр зочлолтын статистик
- Хөтөч/үйлдлийн систем статистик
Статистик өгөгдөл цуглуулах арга
⚙️ Google Analytics тохиргоо
Админ хуудсаар дамжуулан Google Analytics тохируулах
📊 Хяналтын самбар визуалчлах
Хяналтын самбараар дамжуулан визуалчлах
Үндсэн класс
humanframe.backoffice.controller.stats.AdminStatsController: Google статистик удирдлагын контроллерhumanframe.core.service.GoogleAnalyticsService: Google статистик удирдлагын сервис
[Кодын байршил] /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 Цэс статистик
Сайтын цэсийн зочлогчдын тоо, хуудас үзэлт зэрэг статистик мэдээллийг үзүүлдэг.
Үндсэн функц
- Жил/сар/өдрөөр хугацааны дагуу цэс зочлолтын статистик
- График болон Excel татах
Статистик өгөгдөл цуглуулах арга
📝 Лог бүртгэх
Хэрэглэгч холбогдох үед лог бүртгэх
⏰ Хуваарь ажиллуулах
Статистик өгөгдөл үүсгэх хуваарь ажиллуулах
📊 Визуалчлах
Цэс статистик цэсээр дамжуулан визуалчлах
Үндсэн класс
humanframe.backoffice.controller.stats.AdminStatsMenuController: Цэс статистик удирдлагын контроллерhumanframe.backoffice.service.StatsMenuService: Цэс статистик удирдлагын сервисhumanframe.backoffice.dao.StatsMenuDAO: Цэс статистик удирдлагын DAOhumanframe.backoffice.scheduler.statsMenuSchedulerBatch: Цэс статистик өгөгдөл үүсгэх хуваарь
[Кодын байршил] 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 Лог удирдлага
Системийн лог болон хэрэглэгчийн үйл ажиллагааны логийг удирдах функцийг үзүүлдэг.
Үндсэн функц
- Системийн лог удирдлага
- Хэрэглэгчийн үйл ажиллагааны лог удирдлага
- Алдааны лог удирдлага
- Аюулгүй байдлын лог удирдлага
- Лог хайлт болон шүүлтүүр
Үндсэн класс
humanframe.backoffice.aop.aspect.admin.AdminLogAspect: Лог бүртгэх AOPhumanframe.backoffice.controller.mng.AdminMngrController: Лог удирдлагын контроллерhumanframe.backoffice.service.MngLogService: Лог удирдлагын сервисhumanframe.backoffice.dao.MngLogDAO: Лог удирдлагын DAO
[Кодын байршил] 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-д үндсэн байдлаар өгдөг тогтмол ажлуудыг удирддаг.
Үндсэн ажил
- Цэс статистик өгөгдөл үүсгэх
- Мини самбарын JSON өгөгдөл үүсгэх
Үндсэн класс
humanframe.backoffice.scheduler.statsMenuSchedulerBatch: Цэс статистик үүсгэхhumanframe.backoffice.scheduler.BbsSchedulerBatch: Мини самбар холбоотой багц ажил
[Кодын байршил] 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
Файл бичих/унших боловсруулалт, файлын өргөтгөл шалгах
String fileString = FileUtil.readFile(filePath);
HumanComUtil
Нийтлэг утилит, Bean объект шууд авах
MngrSiteService mngrSiteService = (MngrSiteService)HumanComUtil.getBean("mngrSiteService");
HumanCryptoUtil
Шифрлэх/тайлах функц, ARIA+Base64 алгоритм дэмжих
String encryptedText = HumanCryptoUtil.encrypt(plainText);
String plainText = HumanCryptoUtil.decrypt(encryptedText);
HumanHttpUtil
HTTP хүсэлт/хариулт боловсруулалт, REST API дуудах
String response = HumanHttpUtil.getHttpForm(url, paramMap);
HumanMailUtil
Мэйл илгээх функц, загвар суурьтай мэйлийн агуулга бүрдүүлэх
HumanMailUtil.sendMail(from, to, subject, content);
HumanReqUtil
HTTP хүсэлт дүн шинжилгээний утилит, бодит клиентийн IP хаяг гаргах
String ip = HumanReqUtil.getIp(request);
HumanStringUtil
Мөр боловсруулалт, кодчилол хөрвүүлэх
String stringDate = HumanStringUtil.convertDateFormat(date, "yyyy-MM-dd" );
HumanUriUtil
Сайтын мэдээлэл/цэсний мэдээлэлд үндэслэн Uri үүсгэх
String formUri = HumanUriUtil.getCurrUri(curSite, curMenu);
LoginManager
Нэвтрэх сэшний удирдлага
LoginManager loginManager = LoginManager.getInstance();
loginManager.setSession(session, mngrVO.getMngrId());
4.10 Tag Library
HONGIKINGAN CMS нь төрөл бүрийн таг номын санг өгч 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: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
Самбарын товч холбоотой таг, эрхээр товчны харуулалт хянах
<cmsBtn:list admin="true" cssClass="btn btn-default">Жагсаалт</cmsBtn:list>
cms-button2.tld
Админ ерөнхий товч холбоотой таг, эрхээр товчны харуулалт хянах
<cmsBtn2:btn btnTy="save" path="${curPath}" mngrSession="${mngrSession }" >Хадгалах</cmsBtn2:btn>
cms-function.tld
Утилит функц, мөр боловсруулалт, огноо боловсруулалт гэх мэт
${cmsFn:convertDate(item.value, 'yyyy.MM.dd') }
double-submit.tld
Давхар илгээх сэргийлэх таг, сэшн суурьтай токен удирдлага, CSRF сэргийлэх, олон форм дэмжих
<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 файл
/WEB-INF/jsp/admin/login/login.jsp: Нэвтрэх хуудас/WEB-INF/jsp/admin/login/mngrReqForm.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 |
Үндсэн файл
- JSP:
/WEB-INF/jsp/admin/site/menu/form.jsp(цэс бүртгэх/засах форм) - JSP:
/WEB-INF/jsp/admin/site/menu/popup(цэс холбоотой попап лавлах) - SQL маппер:
human-mng-menu.xml
4.11.3 Самбар удирдлага холбоотой эх код
Самбар удирдлагын функц холбоотой эх код нь дараах байдалтай.
Үндсэн контроллер
| Контроллер | Тайлбар |
|---|---|
AdminBbsController |
Самбар удирдлага |
AdminBbsSettingController |
Самбар тохиргоо |
AdminBbsType1Controller |
Ерөнхий самбар |
AdminBbsType2Controller |
Хариулт бүхий самбар |
AdminBbsType3Controller |
Зургийн самбар |
AdminBbsType4Controller |
Видео самбар |
AdminBbsType5Controller |
Q&A самбар |
AdminBbsType6Controller |
FAQ самбар |
AdminBbsType7Controller |
Хуваарийн самбар |
AdminBbsType8Controller |
Холбоосын самбар |
Үндсэн сервис болон DAO
- Сервис:
BbsSettingServiceImpl,BbsTypeServiceImpl - DAO:
BbsSettingDAO,BbsTypeDAO - VO:
BbsSettingVO,BbsTypeVO,BbsType1VO
Үндсэн файл
- JSP:
/WEB-INF/jsp/admin/bbs/list.jsp(самбарын жагсаалт) - JSP:
/WEB-INF/jsp/admin/bbs/setting_form.jsp(самбар бүртгэх/засах форм) - JSP:
/WEB-INF/jsp/admin/bbs/type1/list.jsp(ерөнхий самбарын жагсаалт) - SQL маппер:
human-bbs-st.xml,human-bbs-type.xml,human-bbs-type1.xml
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 |
Системийн цэс удирдлага |
Үндсэн сервис
CodeServiceImpl: Код удирдлагын сервисMngrServiceImpl: Админ удирдлагын сервисMngAuthorServiceImpl: Эрх удирдлагын сервисMngMenuServiceImpl: Системийн цэс удирдлагын сервис
Үндсэн файл
- JSP:
/WEB-INF/jsp/admin/mng/code/form.jsp(код удирдлага) - JSP:
/WEB-INF/jsp/admin/mng/mngr/list.jsp(админ жагсаалт) - JSP:
/WEB-INF/jsp/admin/mng/author/list.jsp(эрхийн жагсаалт) - JSP:
/WEB-INF/jsp/admin/mng/menu/form.jsp(системийн цэсний жагсаалт) - SQL маппер:
human-code.xml,human-mngr.xml,human-mng-author.xml,human-mng-menu.xml