SinglePageServiceImpl.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. package com.caimei.www.service.page.impl;
  2. import com.caimei.www.mapper.SinglePageDao;
  3. import com.caimei.www.pojo.JsonModel;
  4. import com.caimei.www.pojo.page.ImageLink;
  5. import com.caimei.www.pojo.page.PageContent;
  6. import com.caimei.www.pojo.page.PageFloor;
  7. import com.caimei.www.service.page.SinglePageService;
  8. import com.caimei.www.utils.ImageUtil;
  9. import com.github.pagehelper.PageHelper;
  10. import com.github.pagehelper.PageInfo;
  11. import lombok.extern.slf4j.Slf4j;
  12. import org.springframework.beans.factory.annotation.Value;
  13. import org.springframework.http.HttpHeaders;
  14. import org.springframework.http.MediaType;
  15. import org.springframework.http.ZeroCopyHttpOutputMessage;
  16. import org.springframework.http.server.reactive.ServerHttpResponse;
  17. import org.springframework.stereotype.Service;
  18. import org.springframework.util.CollectionUtils;
  19. import org.springframework.util.StringUtils;
  20. import reactor.core.publisher.Mono;
  21. import javax.annotation.Resource;
  22. import java.io.File;
  23. import java.io.UnsupportedEncodingException;
  24. import java.net.URLEncoder;
  25. import java.text.SimpleDateFormat;
  26. import java.util.List;
  27. /**
  28. * Description
  29. *
  30. * @author : Charles
  31. * @date : 2020/7/20
  32. */
  33. @Slf4j
  34. @Service
  35. public class SinglePageServiceImpl implements SinglePageService {
  36. @Resource
  37. private SinglePageDao singlePageDao;
  38. @Value("${caimei.wwwDomain}")
  39. private String domain;
  40. /**
  41. * 自由页面
  42. *
  43. * @param id
  44. */
  45. @Override
  46. public PageContent getFreePageById(Integer id) {
  47. if (id == null) {
  48. return null;
  49. }
  50. PageContent pageContent = singlePageDao.getFreePageById(id);
  51. String mobileContent = singlePageDao.findMobileContent(id);
  52. if (StringUtils.isEmpty(mobileContent)) {
  53. pageContent.setMobileContent(pageContent.getContent());
  54. } else {
  55. pageContent.setMobileContent(mobileContent);
  56. }
  57. return pageContent;
  58. }
  59. /**
  60. * 二级页面
  61. *
  62. * @param id
  63. */
  64. @Override
  65. public PageContent getTopicPageById(Integer id) {
  66. if (id == null) {
  67. return null;
  68. }
  69. return singlePageDao.getTopicPageById(id);
  70. }
  71. /**
  72. * 采美直播
  73. */
  74. @Override
  75. public PageContent getLivePageData() {
  76. return singlePageDao.getLivePageData();
  77. }
  78. /**
  79. * 二级专题数据
  80. *
  81. * @param id
  82. */
  83. @Override
  84. public JsonModel<List<PageFloor>> getTopicDataById(Integer id) {
  85. if (id == null) {
  86. return JsonModel.error("参数异常", null);
  87. }
  88. List<PageFloor> pageFloors = singlePageDao.getFloorByPageId(id);
  89. if (!CollectionUtils.isEmpty(pageFloors)) {
  90. pageFloors.forEach(floor -> {
  91. List<ImageLink> floorData = singlePageDao.getDataByFloorId(floor.getId());
  92. if (!CollectionUtils.isEmpty(floorData)) {
  93. floorData.forEach(data -> {
  94. data.setImage(ImageUtil.getImageURL("actType", data.getImage(), 0, domain));
  95. });
  96. }
  97. floor.setFloorData(floorData);
  98. });
  99. }
  100. return JsonModel.success(pageFloors);
  101. }
  102. /**
  103. * 专题活动列表数据
  104. *
  105. * @param pageNum
  106. * @param pageSize
  107. */
  108. @Override
  109. public JsonModel<PageInfo<ImageLink>> gePromotionsList(int pageNum, int pageSize) {
  110. PageHelper.startPage(pageNum, pageSize);
  111. List<ImageLink> promotionsList = singlePageDao.getPromotionsList();
  112. if (!CollectionUtils.isEmpty(promotionsList)) {
  113. long currentTime = System.currentTimeMillis();
  114. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  115. promotionsList.forEach(item -> {
  116. //已结束
  117. item.setStatus(3);
  118. String format = "";
  119. if (null != item.getBeginTime() && null != item.getEndTime() && (item.getEndTime().getTime() > item.getBeginTime().getTime()) && (item.getBeginTime().getTime() > currentTime)) {
  120. //即将开始: 活动开始时间小于当前时间
  121. item.setStatus(1);
  122. format = sdf.format(item.getBeginTime()) + "~" + sdf.format(item.getEndTime());
  123. }
  124. if (null != item.getBeginTime() && null != item.getEndTime() && (item.getEndTime().getTime() > currentTime) && (item.getBeginTime().getTime() < currentTime)) {
  125. //进行中: 当前时间小于活动开始,小于活动结束时间
  126. item.setStatus(2);
  127. format = sdf.format(item.getBeginTime()) + "~" + sdf.format(item.getEndTime());
  128. }
  129. item.setDetail(format);
  130. });
  131. }
  132. PageInfo<ImageLink> pageInfo = new PageInfo(promotionsList);
  133. return JsonModel.success(pageInfo);
  134. }
  135. /**
  136. * 品牌招商表格下载
  137. *
  138. * @param response
  139. */
  140. @Override
  141. public Mono<Void> downloadByWriteWith(ServerHttpResponse response) throws UnsupportedEncodingException {
  142. ZeroCopyHttpOutputMessage zeroCopyResponse = (ZeroCopyHttpOutputMessage) response;
  143. response.getHeaders().set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLEncoder.encode("采美365网国际品牌招商资料填写表.xls", "UTF-8"));
  144. response.getHeaders().setContentType(MediaType.APPLICATION_OCTET_STREAM);
  145. String templateFile = "/mnt/newdatadrive/data/custom/www-export-template/investment_template.xlsx";
  146. File file = new File(templateFile);
  147. return zeroCopyResponse.writeWith(file, 0, file.length());
  148. }
  149. /**
  150. * 获取讲师列表
  151. */
  152. @Override
  153. public JsonModel<List<ImageLink>> getLiveTeachers() {
  154. List<ImageLink> teacherList = singlePageDao.getLiveTeachers();
  155. return JsonModel.success(teacherList);
  156. }
  157. }