| | |
| | | package com.yeshi.fanli.service.impl.help;
|
| | |
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.HashSet;
|
| | | import java.util.List;
|
| | | import java.util.Set;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.cache.annotation.Cacheable;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.yeshi.fanli.dao.mybatis.help.AppPageNotificationMapper;
|
| | | import com.yeshi.fanli.entity.AppVersionInfo;
|
| | | import com.yeshi.fanli.entity.bus.help.AppPageNotification;
|
| | | import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl;
|
| | | import com.yeshi.fanli.entity.bus.homemodule.FloatAD;
|
| | | import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType;
|
| | | import com.yeshi.fanli.entity.common.JumpDetailV2;
|
| | | import com.yeshi.fanli.exception.banner.SwiperPictureException;
|
| | | import com.yeshi.fanli.service.inter.config.AppVersionService;
|
| | | import com.yeshi.fanli.service.inter.help.AppPageNotificationService;
|
| | | import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
|
| | | @Service
|
| | | public class AppPageNotificationServiceImpl implements AppPageNotificationService {
|
| | |
|
| | | @Resource
|
| | | private AppPageNotificationMapper appPageNotificationMapper;
|
| | |
|
| | | @Resource
|
| | | private AppVersionService appVersionService;
|
| | |
|
| | | @Resource
|
| | | private AdActivityVersionControlService adActivityVersionControlService;
|
| | |
|
| | | @Override
|
| | | public AppPageNotification getAppPageNotificationByType(String type) {
|
| | |
|
| | | return appPageNotificationMapper.selectByType(type);
|
| | | }
|
| | |
|
| | | @Cacheable(value = "configCache", key = "'getValidNotificationByTypeCache-'+#type+'-'+ #platform+'-'+#versionCode")
|
| | | @Override
|
| | | public AppPageNotification getValidNotificationByTypeCache(String type, String platform, Integer versionCode) {
|
| | | List<AppPageNotification> recordList = appPageNotificationMapper.listValidByType(type);
|
| | | if (recordList == null || recordList.size() == 0)
|
| | | return null;
|
| | |
|
| | | // 过滤版本
|
| | | AppVersionInfo app = appVersionService.getClientVersion(platform, versionCode);
|
| | | if (app == null) {
|
| | | return null;
|
| | | }
|
| | | List<Long> versionIdList = new ArrayList<>();
|
| | | versionIdList.add(app.getId());
|
| | |
|
| | | List<Long> sourceIdList = new ArrayList<>();
|
| | | for (AppPageNotification an : recordList)
|
| | | sourceIdList.add(an.getId());
|
| | | Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList,
|
| | | AdActivityType.notification, versionIdList);
|
| | | if (sourceIds == null || sourceIds.size() == 0)
|
| | | return null;
|
| | | long sourceId = sourceIds.iterator().next();
|
| | |
|
| | | for (AppPageNotification record : recordList) {
|
| | | if (record.getId().longValue() == sourceId)
|
| | | return record;
|
| | | }
|
| | | return null;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void addAppPageNotification(AppPageNotification apn) throws Exception {
|
| | | if (apn == null)
|
| | | return;
|
| | | if (apn.getType() == null)
|
| | | throw new Exception("类型为空");
|
| | | AppPageNotification old = getAppPageNotificationByType(apn.getType().name());
|
| | |
|
| | | if (old != null)
|
| | | throw new Exception("已存在改类型");
|
| | |
|
| | | apn.setCreateTime(new Date());
|
| | | apn.setUpdateTime(new Date());
|
| | | apn.setMd5(StringUtil.Md5(apn.getType().name() + "#" + apn.getContent() + "#" + apn.getContentUrl()));
|
| | | appPageNotificationMapper.insertSelective(apn);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void insertSelective(AppPageNotification record) {
|
| | | appPageNotificationMapper.insertSelective(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void updateByPrimaryKey(AppPageNotification record) {
|
| | | appPageNotificationMapper.updateByPrimaryKey(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void updateByPrimaryKeySelective(AppPageNotification record) {
|
| | | appPageNotificationMapper.updateByPrimaryKeySelective(record);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public AppPageNotification selectByPrimaryKey(Long id) {
|
| | | return appPageNotificationMapper.selectByPrimaryKey(id);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int deleteBatchByPrimaryKey(List<Long> list) {
|
| | | return appPageNotificationMapper.deleteBatchByPrimaryKey(list);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<AppPageNotification> listQuery(long start, int count, String key, Integer show, Integer canClose) {
|
| | | return appPageNotificationMapper.listQuery(start, count, key, show, canClose);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public long countQuery(String key, Integer show, Integer canClose) {
|
| | | return appPageNotificationMapper.countQuery(key, show, canClose);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void setVersions(Long id, List<Long> versions) throws Exception {
|
| | | AppPageNotification record = appPageNotificationMapper.selectByPrimaryKey(id);
|
| | | if (record == null) {
|
| | | throw new Exception("专题不存在");
|
| | | }
|
| | |
|
| | | Set<Long> oldSet = new HashSet<>();
|
| | |
|
| | | List<AdActivityVersionControl> versionList = adActivityVersionControlService
|
| | | .listByTypeAndSourceId(AdActivityType.notification, id);
|
| | | if (versionList != null) {
|
| | | for (AdActivityVersionControl control : versionList)
|
| | | oldSet.add(control.getVersion().getId());
|
| | | }
|
| | |
|
| | | Set<Long> newSet = new HashSet<>();
|
| | | for (Long version : versions) {
|
| | | newSet.add(version);
|
| | | }
|
| | |
|
| | | Set<Long> delSet = new HashSet<>();
|
| | | delSet.addAll(oldSet);
|
| | | delSet.removeAll(newSet);
|
| | | for (Long versionId : delSet) {
|
| | | adActivityVersionControlService.deleteBySourceAndVersion(id, AdActivityType.notification, versionId);
|
| | | }
|
| | |
|
| | | Set<Long> addSet = new HashSet<>();
|
| | | addSet.addAll(newSet);
|
| | | addSet.removeAll(oldSet);
|
| | | // 添加映射
|
| | | for (Long versionId : addSet) {
|
| | | AdActivityVersionControl control = new AdActivityVersionControl();
|
| | | control.setCreateTime(new Date());
|
| | | control.setSourceId(id);
|
| | | control.setType(AdActivityType.notification);
|
| | | control.setVersion(new AppVersionInfo(versionId));
|
| | | try {
|
| | | adActivityVersionControlService.addVersionControl(control);
|
| | | } catch (Exception e) {
|
| | | throw new SwiperPictureException(2, e.getMessage());
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.service.impl.help; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Set; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import com.yeshi.fanli.dao.mybatis.help.AppPageNotificationMapper; |
| | | import com.yeshi.fanli.entity.AppVersionInfo; |
| | | import com.yeshi.fanli.entity.bus.help.AppPageNotification; |
| | | import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl; |
| | | import com.yeshi.fanli.entity.bus.homemodule.FloatAD; |
| | | import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType; |
| | | import com.yeshi.fanli.entity.common.JumpDetailV2; |
| | | import com.yeshi.fanli.exception.banner.SwiperPictureException; |
| | | import com.yeshi.fanli.service.inter.config.AppVersionService; |
| | | import com.yeshi.fanli.service.inter.help.AppPageNotificationService; |
| | | import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | |
| | | @Service |
| | | public class AppPageNotificationServiceImpl implements AppPageNotificationService { |
| | | |
| | | @Resource |
| | | private AppPageNotificationMapper appPageNotificationMapper; |
| | | |
| | | @Resource |
| | | private AppVersionService appVersionService; |
| | | |
| | | @Resource |
| | | private AdActivityVersionControlService adActivityVersionControlService; |
| | | |
| | | @Override |
| | | public AppPageNotification getAppPageNotificationByType(String type, SystemEnum system) { |
| | | |
| | | return appPageNotificationMapper.selectByType(type,system); |
| | | } |
| | | |
| | | @Cacheable(value = "configCache", key = "'getValidNotificationByTypeCache-'+#type+'-'+ #platform+'-'+#versionCode+'-'+#system") |
| | | @Override |
| | | public AppPageNotification getValidNotificationByTypeCache(String type, String platform, Integer versionCode, SystemEnum system) { |
| | | List<AppPageNotification> recordList = appPageNotificationMapper.listValidByType(type,system); |
| | | if (recordList == null || recordList.size() == 0) |
| | | return null; |
| | | |
| | | // 过滤版本 |
| | | AppVersionInfo app = appVersionService.getClientVersion(platform, versionCode,system); |
| | | if (app == null) { |
| | | return null; |
| | | } |
| | | List<Long> versionIdList = new ArrayList<>(); |
| | | versionIdList.add(app.getId()); |
| | | |
| | | List<Long> sourceIdList = new ArrayList<>(); |
| | | for (AppPageNotification an : recordList) |
| | | sourceIdList.add(an.getId()); |
| | | Set<Long> sourceIds = adActivityVersionControlService.filterSourceIdByVersion(sourceIdList, |
| | | AdActivityType.notification, versionIdList); |
| | | if (sourceIds == null || sourceIds.size() == 0) |
| | | return null; |
| | | long sourceId = sourceIds.iterator().next(); |
| | | |
| | | for (AppPageNotification record : recordList) { |
| | | if (record.getId().longValue() == sourceId) |
| | | return record; |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public void addAppPageNotification(AppPageNotification apn) throws Exception { |
| | | if (apn == null) |
| | | return; |
| | | if (apn.getType() == null) |
| | | throw new Exception("类型为空"); |
| | | AppPageNotification old = getAppPageNotificationByType(apn.getType().name(),apn.getSystem()); |
| | | |
| | | if (old != null) |
| | | throw new Exception("已存在改类型"); |
| | | |
| | | apn.setCreateTime(new Date()); |
| | | apn.setUpdateTime(new Date()); |
| | | apn.setMd5(StringUtil.Md5(apn.getType().name() + "#" + apn.getContent() + "#" + apn.getContentUrl())); |
| | | appPageNotificationMapper.insertSelective(apn); |
| | | } |
| | | |
| | | @Override |
| | | public void insertSelective(AppPageNotification record) { |
| | | appPageNotificationMapper.insertSelective(record); |
| | | } |
| | | |
| | | @Override |
| | | public void updateByPrimaryKey(AppPageNotification record) { |
| | | appPageNotificationMapper.updateByPrimaryKey(record); |
| | | } |
| | | |
| | | @Override |
| | | public void updateByPrimaryKeySelective(AppPageNotification record) { |
| | | appPageNotificationMapper.updateByPrimaryKeySelective(record); |
| | | } |
| | | |
| | | @Override |
| | | public AppPageNotification selectByPrimaryKey(Long id) { |
| | | return appPageNotificationMapper.selectByPrimaryKey(id); |
| | | } |
| | | |
| | | @Override |
| | | public int deleteBatchByPrimaryKey(List<Long> list) { |
| | | return appPageNotificationMapper.deleteBatchByPrimaryKey(list); |
| | | } |
| | | |
| | | @Override |
| | | public List<AppPageNotification> listQuery(long start, int count, String key, Integer show, Integer canClose, SystemEnum system) { |
| | | return appPageNotificationMapper.listQuery(start, count, key, show, canClose,system); |
| | | } |
| | | |
| | | @Override |
| | | public long countQuery(String key, Integer show, Integer canClose, SystemEnum system) { |
| | | return appPageNotificationMapper.countQuery(key, show, canClose,system); |
| | | } |
| | | |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @Override |
| | | public void setVersions(Long id, List<Long> versions) throws Exception { |
| | | AppPageNotification record = appPageNotificationMapper.selectByPrimaryKey(id); |
| | | if (record == null) { |
| | | throw new Exception("专题不存在"); |
| | | } |
| | | |
| | | Set<Long> oldSet = new HashSet<>(); |
| | | |
| | | List<AdActivityVersionControl> versionList = adActivityVersionControlService |
| | | .listByTypeAndSourceId(AdActivityType.notification, id); |
| | | if (versionList != null) { |
| | | for (AdActivityVersionControl control : versionList) |
| | | oldSet.add(control.getVersion().getId()); |
| | | } |
| | | |
| | | Set<Long> newSet = new HashSet<>(); |
| | | for (Long version : versions) { |
| | | newSet.add(version); |
| | | } |
| | | |
| | | Set<Long> delSet = new HashSet<>(); |
| | | delSet.addAll(oldSet); |
| | | delSet.removeAll(newSet); |
| | | for (Long versionId : delSet) { |
| | | adActivityVersionControlService.deleteBySourceAndVersion(id, AdActivityType.notification, versionId); |
| | | } |
| | | |
| | | Set<Long> addSet = new HashSet<>(); |
| | | addSet.addAll(newSet); |
| | | addSet.removeAll(oldSet); |
| | | // 添加映射 |
| | | for (Long versionId : addSet) { |
| | | AdActivityVersionControl control = new AdActivityVersionControl(); |
| | | control.setCreateTime(new Date()); |
| | | control.setSourceId(id); |
| | | control.setType(AdActivityType.notification); |
| | | control.setVersion(new AppVersionInfo(versionId)); |
| | | try { |
| | | adActivityVersionControlService.addVersionControl(control); |
| | | } catch (Exception e) { |
| | | throw new SwiperPictureException(2, e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |