From 626d711cb15896055c13fe344eb7fcc824589715 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 19 十二月 2019 15:38:42 +0800
Subject: [PATCH] 帮助中心

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java |  143 +++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 123 insertions(+), 20 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java
index 26f04ff..df529b8 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpClassServiceImpl.java
@@ -2,20 +2,33 @@
 
 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
@@ -24,6 +37,9 @@
 	@Resource
 	private HelpClassMapper helpClassMapper;
 
+	@Resource
+	private AdActivityVersionControlService adActivityVersionControlService;
+	
 	@Override
 	public int deleteByPrimaryKeyBatch(List<Long> list) {
 		return helpClassMapper.deleteByPrimaryKeyBatch(list);
@@ -35,32 +51,71 @@
 	}
 	
 	@Override
-	public void save(HelpClass helpClass) throws HelpClassException {
-		if (helpClass == null) {
+	public void save(HelpClass record, MultipartFile file) throws HelpClassException, Exception{
+		if (record == null)
 			throw new HelpClassException(1, "鍙傛暟涓嶈兘涓虹┖");
-		}
 		
-		if (helpClass.getId() == null) {
-			
-			String name = helpClass.getName();
-			if (StringUtil.isNullOrEmpty(name)) {
-				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));
 			}
 			
-			// 榛樿涓嶆樉绀�
-			helpClass.setShowState(0);
-			
-			// 鎺掑簭-鏈熬
+			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();
-			helpClass.setSort(maxOrder + 1);
-			
-			helpClass.setCreateTime(new Date());
-			helpClass.setUpdateTime(new Date());
-			helpClassMapper.insertSelective(helpClass);
-			
+			record.setSort(maxOrder + 1);
+			record.setCreateTime(new Date());
+			helpClassMapper.insertSelective(record);
 		} else {
-			helpClass.setUpdateTime(new Date());
-			helpClassMapper.updateByPrimaryKeySelective(helpClass);
+			// 淇敼
+			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);
 		}
 	}
 	
@@ -180,4 +235,52 @@
 	}
 	
 	
+	@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());
+			}
+		}
+	}
+
+	
 }

--
Gitblit v1.8.0