package com.yeshi.fanli.service.impl.user; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.user.UserCustomSettingsMapper; import com.yeshi.fanli.entity.bus.user.UserCustomSettings; import com.yeshi.fanli.entity.bus.user.UserCustomSettings.UserSettingTypeEnum; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.exception.user.UserCustomSettingsException; import com.yeshi.fanli.service.inter.user.UserCustomSettingsService; import com.yeshi.fanli.vo.user.UserSettingsVO; @Service public class UserCustomSettingsServiceImpl implements UserCustomSettingsService { @Resource private UserCustomSettingsMapper userCustomSettingsMapper; @Override public void saveModuleState(Long uid, String type, Integer state) throws UserCustomSettingsException{ if (uid == null || type == null || state == null || state > 1 || state < 0) { throw new UserCustomSettingsException(1, "传递参数不正确"); } UserSettingTypeEnum mineTypeNum = null; if (type.equals(UserSettingTypeEnum.cancelNotice.name())) { mineTypeNum = UserSettingTypeEnum.cancelNotice; } else if (type.equals(UserSettingTypeEnum.noNewsRedDot.name())) { mineTypeNum = UserSettingTypeEnum.noNewsRedDot; } else if (type.equals(UserSettingTypeEnum.noBonusCount.name())) { mineTypeNum = UserSettingTypeEnum.noBonusCount; } else if (type.equals(UserSettingTypeEnum.noShareRecordAndStorage.name())) { mineTypeNum = UserSettingTypeEnum.noShareRecordAndStorage; } else if (type.equals(UserSettingTypeEnum.noInvitationBonus.name())) { mineTypeNum = UserSettingTypeEnum.noInvitationBonus; } else { throw new UserCustomSettingsException(1, "参数类型不匹配"); } UserCustomSettings settings = userCustomSettingsMapper.getSettingsByUidAndType(uid, type); if (settings != null) { // 更新 UserCustomSettings record = new UserCustomSettings(); record.setId(settings.getId()); record.setState(state); record.setUpdateTime(new Date()); userCustomSettingsMapper.updateByPrimaryKeySelective(record); } else { // 插入 settings = new UserCustomSettings(); settings.setState(state); settings.setType(mineTypeNum); settings.setUserInfo(new UserInfo(uid)); settings.setUpdateTime(new Date()); settings.setCreateTime(new Date()); userCustomSettingsMapper.insertSelective(settings); } } @Override public List getSettingsByUid(Long uid) throws UserCustomSettingsException{ if (uid == null) { throw new UserCustomSettingsException(1, "uid不能为空"); } return userCustomSettingsMapper.getSettingsByUid(uid); } @Override public UserCustomSettings getSettingsByUidAndType(Long uid, String type) throws UserCustomSettingsException{ if (uid == null || type == null || type.trim().length() == 0 ) { throw new UserCustomSettingsException(1, "传递的参数不能为空"); } return userCustomSettingsMapper.getSettingsByUidAndType(uid, type); } @Override public UserSettingsVO getMySettings(Long uid) throws UserCustomSettingsException{ UserSettingsVO userSettingsVO = new UserSettingsVO(); List list = getSettingsByUid(uid); if (list != null && list.size() > 0) { for (UserCustomSettings userCustomSettings: list) { Integer state = userCustomSettings.getState(); if (state == null) { continue; } UserSettingTypeEnum typeEnum = userCustomSettings.getType(); if (typeEnum.equals(UserSettingTypeEnum.cancelNotice) ) { userSettingsVO.setCancelNotice(state); } else if (typeEnum.equals(UserSettingTypeEnum.noNewsRedDot)){ userSettingsVO.setNoNewsRedDot(state); } else if (typeEnum.equals(UserSettingTypeEnum.noBonusCount)){ userSettingsVO.setNoBonusCount(state); } else if (typeEnum.equals(UserSettingTypeEnum.noShareRecordAndStorage)){ userSettingsVO.setNoShareRecordAndStorage(state); } else if (typeEnum.equals(UserSettingTypeEnum.noInvitationBonus)){ userSettingsVO.setNoInvitationBonus(state); } } } return userSettingsVO; } @Override public List getCancelNoticeUsers(){ return userCustomSettingsMapper.getUserID(UserSettingTypeEnum.cancelNotice.name()); } @Override public boolean validateCancelNoticeByUid(Long uid){ boolean ispush = true; UserCustomSettings settings = userCustomSettingsMapper.getSettingsByUidAndType(uid, UserSettingTypeEnum.cancelNotice.name()); if (settings != null && settings.getState() != null && settings.getState() == 1) { ispush = false; } return ispush; } }