package com.caimei.www.service.impl; import com.caimei.www.mapper.SinglePageDao; import com.caimei.www.pojo.JsonModel; import com.caimei.www.pojo.content.ImageLink; import com.caimei.www.pojo.content.PageContent; import com.caimei.www.pojo.content.PageFloor; import com.caimei.www.service.SinglePageService; import com.caimei.www.utils.ImageUtil; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ZeroCopyHttpOutputMessage; import org.springframework.http.server.reactive.ServerHttpResponse; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import reactor.core.publisher.Mono; import javax.annotation.Resource; import java.io.*; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.List; /** * Description * * @author : Charles * @date : 2020/7/20 */ @Service public class SinglePageServiceImpl implements SinglePageService { @Resource private SinglePageDao singlePageDao; @Value("${caimei.wwwDomain}") private String domain; /** * 自由页面 * * @param id */ @Override public PageContent getFreePageById(Integer id) { return singlePageDao.getFreePageById(id); } /** * 二级页面 * * @param id */ @Override public PageContent getTopicPageById(Integer id) { return singlePageDao.getTopicPageById(id); } /** * 二级专题数据 * * @param id */ @Override public JsonModel> getTopicDataById(Integer id) { List pageFloors = singlePageDao.getFloorByPageId(id); if (!CollectionUtils.isEmpty(pageFloors)) { pageFloors.forEach(floor -> { List floorData = singlePageDao.getDataByFloorId(floor.getId()); if (!CollectionUtils.isEmpty(floorData)) { floorData.forEach(data -> { data.setImage(ImageUtil.getImageURL("actType", data.getImage(), 0, domain)); }); } floor.setFloorData(floorData); }); } return JsonModel.success(pageFloors); } /** * 专题活动列表数据 * * @param pageNum * @param pageSize */ @Override public JsonModel> gePromotionsList(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List promotionsList = singlePageDao.getPromotionsList(); if (!CollectionUtils.isEmpty(promotionsList)) { long currentTime = System.currentTimeMillis(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); promotionsList.forEach(item -> { if(null != item.getBeginTime() && null != item.getEndTime() && (item.getEndTime().getTime() > item.getBeginTime().getTime() ) && (item.getBeginTime().getTime() > currentTime)){ //即将开始: 活动开始时间小于当前时间 item.setStatus(1); } if(null != item.getBeginTime() && null != item.getEndTime() && (item.getEndTime().getTime() > currentTime ) && (item.getBeginTime().getTime() < currentTime)) { //进行中: 当前时间小于活动开始,小于活动结束时间 item.setStatus(2); } if(null != item.getBeginTime() && null != item.getEndTime() && (currentTime > item.getEndTime().getTime()) && (item.getEndTime().getTime() > item.getBeginTime().getTime())) { //已结束: 活动结束时间小于结束时间 item.setStatus(3); } String format = sdf.format(item.getBeginTime())+"~"+sdf.format(item.getEndTime()); item.setDetail(format); }); } PageInfo pageInfo = new PageInfo(promotionsList); return JsonModel.success(pageInfo); } /** * 品牌招商表格下载 * * @param response */ @Override public Mono downloadByWriteWith(ServerHttpResponse response) throws UnsupportedEncodingException { ZeroCopyHttpOutputMessage zeroCopyResponse = (ZeroCopyHttpOutputMessage) response; response.getHeaders().set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode("采美365网国际品牌招商资料填写表.xls", "UTF-8")); response.getHeaders().setContentType(MediaType.APPLICATION_OCTET_STREAM); String templateFile = "/mnt/newdatadrive/data/custom/www-export-template/investment_template.xlsx"; File file = new File(templateFile); return zeroCopyResponse.writeWith(file, 0, file.length()); } }