package com.norteksoft.product.api.impl; import java.util.Date; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import com.norteksoft.bs.holiday.service.HolidayManager; import com.norteksoft.bs.options.entity.Internation; import com.norteksoft.product.api.entity.Option; import com.norteksoft.product.api.entity.OptionGroup; import com.norteksoft.product.api.utils.BeanUtil; import com.norteksoft.bs.options.service.InternationManager; import com.norteksoft.bs.options.service.OptionGroupManager; import com.norteksoft.bs.signature.service.SignatureManager; import com.norteksoft.product.api.SettingService; import com.norteksoft.product.orm.Page; import com.norteksoft.product.util.ContextUtils; import com.norteksoft.product.util.MemCachedUtils; import com.norteksoft.product.web.struts2.Struts2Utils; @Service public class SettingServiceImpl implements SettingService{ @Autowired private OptionGroupManager optionGroupManager; @Autowired private HolidayManager holidayManager; @Autowired private InternationManager internationManager; @Autowired private SignatureManager signatureManager; public String getOptionGroupDefaultValue(String optionGroupCode) { Assert.notNull(optionGroupCode, "optionGroupCode选项组编号不能为null"); com.norteksoft.bs.options.entity.Option option = optionGroupManager.getDefaultOptionByOptionGroupCode(optionGroupCode); return option.getValue(); } public String getOptionGroupDefaultValue(Long optionGroupId) { Assert.notNull(optionGroupId, "optionGroupId选项组id不能为null"); com.norteksoft.bs.options.entity.Option option = optionGroupManager.getDefaultOptionByOptionGroupCode(optionGroupId); return option.getValue(); } /** * 查询所有的选项组 */ public List<OptionGroup> getOptionGroups() { return BeanUtil.turnToModelOptionGroupList(optionGroupManager.getOptionGroups()); } /** * 根据选项组查询选项 */ public List<Option> getOptionsByGroup(Long optionGroupId) { return BeanUtil.turnToModelOptionList(optionGroupManager.getOptionsByGroup(optionGroupId)); } public OptionGroup getOptionGroupByCode(String code) { return BeanUtil.turnToModelOptionGroup(optionGroupManager.getOptionGroupByCode(code)); } public OptionGroup getOptionGroupByName(String name) { return BeanUtil.turnToModelOptionGroup(optionGroupManager.getOptionGroupByName(name)); } public List<Option> getOptionsByGroupCode(String code) { return BeanUtil.turnToModelOptionList(optionGroupManager.getOptionsByGroupCode(code)); } public List<Option> getOptionsByGroupName(String name) { return BeanUtil.turnToModelOptionList(optionGroupManager.getOptionsByGroupName(name)); } public Map<String, List<Date>> getHolidaySettingDays(Date startDate, Date endDate){ return holidayManager.getHolidaySettingDays(startDate, endDate); } public String getInternationOptionValue(String code) { HttpServletRequest requrest=Struts2Utils.getRequest(); String language = "zh"; if(requrest==null){//定时等没有Struts环境中时,直接去数据库中取 String defaultLanguage = getOptionGroupDefaultValue("internation"); if(StringUtils.isNotEmpty(defaultLanguage))language = defaultLanguage; Object obj=MemCachedUtils.get(ContextUtils.getCompanyId()+"_"+code); if(obj==null)return code; return getMemcachedInternationOptionValue(code,language); } if(requrest.getLocale().getLanguage()==null)return code; language = requrest.getLocale().getLanguage(); if(ContextUtils.getCompanyId()==null)return code; return getMemcachedInternationOptionValue(code,language); } @SuppressWarnings("unchecked") private String getMemcachedInternationOptionValue(String code,String language){ Object obj=MemCachedUtils.get(ContextUtils.getCompanyId()+"_"+code); if(obj==null)return code; Map<String,String> interOpts=(Map<String,String>)obj; if(interOpts==null)return code; String interOpt=interOpts.get(language); if(StringUtils.isNotEmpty(interOpt))return interOpt; return code; } public void getInternations(Page<Internation> internations) { internationManager.getInternations(internations); } public Long getSignIdByUserName(String userName) { return signatureManager.getSignIdByUserName(userName); } }