admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java
@@ -1,286 +1,310 @@
package com.yeshi.fanli.service.impl.help;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.fanli.dao.mybatis.help.HelpClassMapper;
import com.yeshi.fanli.entity.AppVersionInfo;
import com.yeshi.fanli.entity.bus.help.HelpClass;
import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl;
import com.yeshi.fanli.entity.bus.homemodule.FloatAD;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType;
import com.yeshi.fanli.exception.banner.SwiperPictureException;
import com.yeshi.fanli.exception.config.HelpClassException;
import com.yeshi.fanli.exception.homemodule.FloatADException;
import com.yeshi.fanli.service.inter.help.HelpClassService;
import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
import com.yeshi.fanli.util.StringUtil;
@Service
public class HelpClassServiceImpl implements HelpClassService {
   @Resource
   private HelpClassMapper helpClassMapper;
   @Resource
   private AdActivityVersionControlService adActivityVersionControlService;
   @Override
   public int deleteByPrimaryKeyBatch(List<Long> list) {
      return helpClassMapper.deleteByPrimaryKeyBatch(list);
   }
   @Override
   public HelpClass selectByPrimaryKey(Long id) {
      return helpClassMapper.selectByPrimaryKey(id);
   }
   @Override
   public void save(HelpClass record, MultipartFile file) throws HelpClassException, Exception{
      if (record == null)
         throw new HelpClassException(1, "参数不能为空");
      String name = record.getName();
      if (StringUtil.isNullOrEmpty(name))
         throw new HelpClassException(1, "名称不能为空");
      try {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
         String startTime_str = record.getStartTime_str();
         if (startTime_str != null && startTime_str.trim().length() > 0) {
            startTime_str = startTime_str.replaceAll("T", " ");
            record.setStartTime(format.parse(startTime_str));
         }
         String endTime_str = record.getEndTime_str();
         if (endTime_str != null && endTime_str.trim().length() > 0) {
            endTime_str = endTime_str.replaceAll("T", " ");
            record.setEndTime(format.parse(endTime_str));
         }
      } catch (ParseException e) {
         e.printStackTrace();
      }
      // 图片上传
      String picture = null;
      if (file != null) {
         InputStream inputStream = file.getInputStream();
         String contentType = file.getContentType();
         String type = contentType.substring(contentType.indexOf("/") + 1);
         String filePath ="/img/HelpClass/" + UUID.randomUUID().toString().replace("-", "") + "." + type;
         picture = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      }
      Integer showState = record.getShowState();
      if (showState == null)
         record.setShowState(0);
      record.setUpdateTime(new Date());
      if (record.getId() == null) {
         int maxOrder = helpClassMapper.getMaxOrder();
         record.setSort(maxOrder + 1);
         record.setCreateTime(new Date());
         helpClassMapper.insertSelective(record);
      } else {
         // 修改
         HelpClass resultObj = helpClassMapper.selectByPrimaryKey(record.getId());
         if (resultObj == null)
            throw new FloatADException(1, "修改内容已不存在");
         if (picture != null && picture.trim().length() > 0) {
            String pictureOld = resultObj.getPicture();
            if (pictureOld != null && pictureOld.trim().length() > 0) {
               COSManager.getInstance().deleteFile(pictureOld);
            }
            // 存储新图
            record.setPicture(picture);
         } else {
            record.setPicture(resultObj.getPicture());
         }
         record.setSort(resultObj.getSort());
         record.setCreateTime(resultObj.getCreateTime());
         helpClassMapper.updateByPrimaryKey(record);
      }
   }
   @Override
   public int updateShowState(Long id) throws HelpClassException {
      if (id == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      Integer showState = helpClass.getShowState();
      if (showState == null || showState == 0) {
         showState = 1;
      } else {
         showState = 0;
      }
      HelpClass help = new HelpClass();
      help.setId(id);
      help.setShowState(showState);
      help.setUpdateTime(new Date());
      helpClassMapper.updateByPrimaryKeySelective(help);
      return showState;
   }
   @Override
   public void updateSort(Integer moveType, Long id) throws HelpClassException {
      if (id == null || moveType == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      HelpClass changeObjct = helpClassMapper.getChangeOrder(moveType, helpClass.getSort());
      if (changeObjct == null) {
         throw new HelpClassException(1, "已经是最边缘位置");
      } else {
         Integer changeSort = changeObjct.getSort();
         // 交换排序序号
         changeObjct.setSort(helpClass.getSort());
         helpClassMapper.updateByPrimaryKeySelective(changeObjct);
         helpClass.setSort(changeSort);
         helpClassMapper.updateByPrimaryKeySelective(helpClass);
      }
   }
   @Override
   public void uploadPic(MultipartFile file, Long id) throws HelpClassException, IOException {
      if (id == null || file == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      InputStream inputStream = file.getInputStream();
      String contentType = file.getContentType();
      String type = contentType.substring(contentType.indexOf("/") + 1);
      String filePath ="/img/HelpClass/" + UUID.randomUUID().toString().replace("-", "") + "." + type;
      /*  修改图片时,先删除已存在图片  */
      String picture = helpClass.getPicture();
      if (!StringUtil.isNullOrEmpty(picture)) {
         COSManager.getInstance().deleteFile(picture);
      }
      String fileUrl = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      /*  更新数据库信息  */
      if (!StringUtil.isNullOrEmpty(fileUrl)) {
         helpClass.setUpdateTime(new Date());
         helpClass.setPicture(fileUrl);
         helpClassMapper.updateByPrimaryKeySelective(helpClass);
      }
   }
   @Override
   public List<HelpClass> query(int start, int count, String key, Integer state)
         throws HelpClassException {
      return helpClassMapper.listQuery(start, count, key, state);
   }
   @Override
   public long countQuery(String key, Integer state) {
      return helpClassMapper.countQuery(key, state);
   }
   @Override
   public List<HelpClass> getClassByState(Integer state) throws HelpClassException {
      return helpClassMapper.getClassByState(state);
   }
   @Override
   public List<HelpClass> getProvidedClass() throws HelpClassException {
      return helpClassMapper.getProvidedClass();
   }
   @Transactional(rollbackFor = Exception.class)
   @Override
   public void setVersions(Long id, List<Long> versions) throws HelpClassException {
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "此信息不存在,请刷新重试");
      }
      Set<Long> oldSet = new HashSet<>();
      List<AdActivityVersionControl> versionList = adActivityVersionControlService
            .listByTypeAndSourceId(AdActivityType.helpClass, 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.helpClass, 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.helpClass);
         control.setVersion(new AppVersionInfo(versionId));
         try {
            adActivityVersionControlService.addVersionControl(control);
         } catch (Exception e) {
            throw new HelpClassException(2, e.getMessage());
         }
      }
   }
}
package com.yeshi.fanli.service.impl.help;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import javax.annotation.Resource;
import com.yeshi.fanli.entity.SystemEnum;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.fanli.dao.mybatis.help.HelpClassMapper;
import com.yeshi.fanli.entity.AppVersionInfo;
import com.yeshi.fanli.entity.bus.help.HelpClass;
import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl;
import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType;
import com.yeshi.fanli.exception.config.HelpClassException;
import com.yeshi.fanli.service.inter.help.HelpClassService;
import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
@Service
public class HelpClassServiceImpl implements HelpClassService {
   @Resource
   private HelpClassMapper helpClassMapper;
   @Resource
   private AdActivityVersionControlService adActivityVersionControlService;
   @Override
   public int deleteByPrimaryKeyBatch(List<Long> list) {
      return helpClassMapper.deleteByPrimaryKeyBatch(list);
   }
   @Override
   public HelpClass selectByPrimaryKey(Long id) {
      return helpClassMapper.selectByPrimaryKey(id);
   }
   @Override
   public void save(HelpClass record, MultipartFile file) throws HelpClassException, Exception{
      if (record == null)
         throw new HelpClassException(1, "参数不能为空");
      String name = record.getName();
      if (StringUtil.isNullOrEmpty(name))
         throw new HelpClassException(1, "名称不能为空");
      try {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
         String startTime_str = record.getStartTime_str();
         if (startTime_str != null && startTime_str.trim().length() > 0) {
            startTime_str = startTime_str.replaceAll("T", " ");
            record.setStartTime(format.parse(startTime_str));
         }
         String endTime_str = record.getEndTime_str();
         if (endTime_str != null && endTime_str.trim().length() > 0) {
            endTime_str = endTime_str.replaceAll("T", " ");
            record.setEndTime(format.parse(endTime_str));
         }
      } catch (ParseException e) {
         e.printStackTrace();
      }
      // 图片上传
      String picture = null;
      if (file != null) {
         InputStream inputStream = file.getInputStream();
         String contentType = file.getContentType();
         String type = contentType.substring(contentType.indexOf("/") + 1);
         String filePath =FilePathEnum.helpClass.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type;
         picture = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      }
      Integer showState = record.getShowState();
      if (showState == null)
         record.setShowState(0);
      record.setUpdateTime(new Date());
      if (record.getId() == null) {
         int maxOrder = helpClassMapper.getMaxOrder();
         record.setSort(maxOrder + 1);
         record.setPicture(picture);
         record.setCreateTime(new Date());
         helpClassMapper.insertSelective(record);
      } else {
         // 修改
         HelpClass resultObj = helpClassMapper.selectByPrimaryKey(record.getId());
         if (resultObj == null)
            throw new HelpClassException(1, "修改内容已不存在");
         if (picture != null && picture.trim().length() > 0) {
            String pictureOld = resultObj.getPicture();
            if (pictureOld != null && pictureOld.trim().length() > 0) {
               COSManager.getInstance().deleteFile(pictureOld);
            }
            // 存储新图
            record.setPicture(picture);
         } else {
            record.setPicture(resultObj.getPicture());
         }
         record.setSort(resultObj.getSort());
         record.setCreateTime(resultObj.getCreateTime());
         helpClassMapper.updateByPrimaryKey(record);
      }
   }
   @Override
   public void switchState(Long id) throws HelpClassException {
      if (id == null) {
         throw new HelpClassException(1, "请传递正确参数");
      }
      HelpClass resultObj = helpClassMapper.selectByPrimaryKey(id);
      if (resultObj == null) {
         throw new HelpClassException(1, "此内容已不存在");
      }
      Integer state = resultObj.getShowState();
      if (state == null || state == 0) {
         state = 1;
      } else {
         state = 0;
      }
      HelpClass updateObj = new HelpClass();
      updateObj.setId(id);
      updateObj.setShowState(state);
      helpClassMapper.updateByPrimaryKeySelective(updateObj);
   }
   @Override
   public int updateShowState(Long id) throws HelpClassException {
      if (id == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      Integer showState = helpClass.getShowState();
      if (showState == null || showState == 0) {
         showState = 1;
      } else {
         showState = 0;
      }
      HelpClass help = new HelpClass();
      help.setId(id);
      help.setShowState(showState);
      help.setUpdateTime(new Date());
      helpClassMapper.updateByPrimaryKeySelective(help);
      return showState;
   }
   @Override
   public void updateSort(Integer moveType, Long id, SystemEnum system) throws HelpClassException {
      if (id == null || moveType == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      HelpClass changeObjct = helpClassMapper.getChangeOrder(moveType, helpClass.getSort(),system);
      if (changeObjct == null) {
         throw new HelpClassException(1, "已经是最边缘位置");
      } else {
         Integer changeSort = changeObjct.getSort();
         // 交换排序序号
         changeObjct.setSort(helpClass.getSort());
         helpClassMapper.updateByPrimaryKeySelective(changeObjct);
         helpClass.setSort(changeSort);
         helpClassMapper.updateByPrimaryKeySelective(helpClass);
      }
   }
   @Override
   public void uploadPic(MultipartFile file, Long id) throws HelpClassException, IOException {
      if (id == null || file == null) {
         throw new HelpClassException(1, "传递参数不能为空");
      }
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "更新数据已不存在");
      }
      InputStream inputStream = file.getInputStream();
      String contentType = file.getContentType();
      String type = contentType.substring(contentType.indexOf("/") + 1);
      String filePath =FilePathEnum.helpClass.getPath()+ UUID.randomUUID().toString().replace("-", "") + "." + type;
      /*  修改图片时,先删除已存在图片  */
      String picture = helpClass.getPicture();
      if (!StringUtil.isNullOrEmpty(picture)) {
         COSManager.getInstance().deleteFile(picture);
      }
      String fileUrl = COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      /*  更新数据库信息  */
      if (!StringUtil.isNullOrEmpty(fileUrl)) {
         helpClass.setUpdateTime(new Date());
         helpClass.setPicture(fileUrl);
         helpClassMapper.updateByPrimaryKeySelective(helpClass);
      }
   }
   @Override
   public List<HelpClass> query(int start, int count, String key, Integer state, SystemEnum system)
         throws HelpClassException {
      return helpClassMapper.listQuery(start, count, key, state,system);
   }
   @Override
   public long countQuery(String key, Integer state, SystemEnum system) {
      return helpClassMapper.countQuery(key, state,system);
   }
   @Override
   public List<HelpClass> getClassByState(Integer state, SystemEnum system) throws HelpClassException {
      return helpClassMapper.getClassByState(state,system);
   }
   @Override
   public List<HelpClass> getProvidedClass(SystemEnum system) throws HelpClassException {
      return helpClassMapper.getProvidedClass(system);
   }
   @Transactional(rollbackFor = Exception.class)
   @Override
   public void setVersions(Long id, List<Long> versions) throws HelpClassException {
      HelpClass helpClass = helpClassMapper.selectByPrimaryKey(id);
      if (helpClass == null) {
         throw new HelpClassException(1, "此信息不存在,请刷新重试");
      }
      Set<Long> oldSet = new HashSet<>();
      List<AdActivityVersionControl> versionList = adActivityVersionControlService
            .listByTypeAndSourceId(AdActivityType.helpClass, 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.helpClass, 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.helpClass);
         control.setVersion(new AppVersionInfo(versionId));
         try {
            adActivityVersionControlService.addVersionControl(control);
         } catch (Exception e) {
            throw new HelpClassException(2, e.getMessage());
         }
      }
   }
}