Search in sources :

Example 1 with I18nMessage

use of com.hccake.ballcat.common.i18n.I18nMessage in project ballcat by ballcat-projects.

the class CustomI18nMessageProvider method getI18nMessage.

@Override
public I18nMessage getI18nMessage(String code, Locale locale) {
    String languageTag = locale.toLanguageTag();
    // 缓存 key
    String cacheKey = getCacheKey(code, languageTag);
    I18nMessage i18nMessage = cache.get(cacheKey);
    // 如果缓存没有,则查询数据库(这里数据库查询其实也加了 redis 缓存)
    if (i18nMessage == null) {
        I18nData i18nData = i18nDataService.getByCodeAndLanguageTag(code, languageTag);
        if (i18nData != null) {
            i18nMessage = converterToI18nMessage(i18nData);
            // 错峰过期
            int timeout = RandomUtil.randomInt(MIN_TIMEOUT, MAX_TIMEOUT);
            cache.put(cacheKey, i18nMessage, timeout);
        }
    }
    return i18nMessage;
}
Also used : I18nMessage(com.hccake.ballcat.common.i18n.I18nMessage) I18nData(com.hccake.ballcat.i18n.model.entity.I18nData)

Example 2 with I18nMessage

use of com.hccake.ballcat.common.i18n.I18nMessage in project ballcat by ballcat-projects.

the class SysMenuServiceImpl method create.

@Override
@Transactional(rollbackFor = Exception.class)
public boolean create(SysMenuCreateDTO sysMenuCreateDTO) {
    SysMenu sysMenu = SysMenuConverter.INSTANCE.createDtoToPo(sysMenuCreateDTO);
    Integer menuId = sysMenu.getId();
    SysMenu existingMenu = baseMapper.selectById(menuId);
    if (existingMenu != null) {
        String errorMessage = String.format("ID [%s] 已被菜单 [%s] 使用,请更换其他菜单ID", menuId, existingMenu.getTitle());
        throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), errorMessage);
    }
    boolean saveSuccess = SqlHelper.retBool(baseMapper.insert(sysMenu));
    Assert.isTrue(saveSuccess, () -> {
        log.error("[create] 创建菜单失败,sysMenuCreateDTO: {}", sysMenuCreateDTO);
        return new BusinessException(BaseResultCode.UPDATE_DATABASE_ERROR.getCode(), "创建菜单失败");
    });
    // 多语言保存事件发布
    List<I18nMessage> i18nMessages = sysMenuCreateDTO.getI18nMessages();
    if (CollectionUtil.isNotEmpty(i18nMessages)) {
        eventPublisher.publishEvent(new I18nMessageCreateEvent(i18nMessages));
    }
    return saveSuccess;
}
Also used : BusinessException(com.hccake.ballcat.common.core.exception.BusinessException) SysMenu(com.hccake.ballcat.system.model.entity.SysMenu) I18nMessage(com.hccake.ballcat.common.i18n.I18nMessage) I18nMessageCreateEvent(com.hccake.ballcat.common.i18n.I18nMessageCreateEvent) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with I18nMessage

use of com.hccake.ballcat.common.i18n.I18nMessage in project ballcat by ballcat-projects.

the class CustomI18nMessageProvider method converterToI18nMessage.

/**
 * 转换 i18nData to I18nMessage
 * @param i18nData 数据库存储对象
 * @return I18nMessage
 */
private I18nMessage converterToI18nMessage(I18nData i18nData) {
    I18nMessage i18nMessage = new I18nMessage();
    i18nMessage.setMessage(i18nData.getMessage());
    i18nMessage.setCode(i18nData.getCode());
    i18nMessage.setLanguageTag(i18nData.getLanguageTag());
    return i18nMessage;
}
Also used : I18nMessage(com.hccake.ballcat.common.i18n.I18nMessage)

Aggregations

I18nMessage (com.hccake.ballcat.common.i18n.I18nMessage)3 BusinessException (com.hccake.ballcat.common.core.exception.BusinessException)1 I18nMessageCreateEvent (com.hccake.ballcat.common.i18n.I18nMessageCreateEvent)1 I18nData (com.hccake.ballcat.i18n.model.entity.I18nData)1 SysMenu (com.hccake.ballcat.system.model.entity.SysMenu)1 Transactional (org.springframework.transaction.annotation.Transactional)1