TaBuildingDynamicServiceImpl.java 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. package com.huiju.estateagents.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.baomidou.mybatisplus.core.metadata.IPage;
  4. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  5. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  6. import com.huiju.estateagents.base.ResponseBean;
  7. import com.huiju.estateagents.common.CommConstant;
  8. import com.huiju.estateagents.entity.TaActivityDynamicEnlist;
  9. import com.huiju.estateagents.entity.TaBuilding;
  10. import com.huiju.estateagents.entity.TaBuildingDynamic;
  11. import com.huiju.estateagents.entity.TaPerson;
  12. import com.huiju.estateagents.mapper.TaActivityDynamicEnlistMapper;
  13. import com.huiju.estateagents.mapper.TaBuildingDynamicMapper;
  14. import com.huiju.estateagents.mapper.TaBuildingMapper;
  15. import com.huiju.estateagents.mapper.TaPersonMapper;
  16. import com.huiju.estateagents.service.ITaBuildingDynamicService;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.propertyeditors.CustomDateEditor;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.web.bind.ServletRequestDataBinder;
  21. import javax.servlet.http.HttpServletRequest;
  22. import java.text.DateFormat;
  23. import java.text.SimpleDateFormat;
  24. import java.time.Instant;
  25. import java.time.LocalDateTime;
  26. import java.time.ZoneId;
  27. import java.time.ZoneOffset;
  28. import java.util.Date;
  29. import java.util.HashMap;
  30. import java.util.List;
  31. /**
  32. * <p>
  33. * 项目动态表 服务实现类
  34. * </p>
  35. *
  36. * @author jobob
  37. * @since 2019-03-21
  38. */
  39. @Service
  40. public class TaBuildingDynamicServiceImpl extends ServiceImpl<TaBuildingDynamicMapper, TaBuildingDynamic> implements ITaBuildingDynamicService {
  41. @Autowired
  42. private TaBuildingDynamicMapper buildingDynamicMapper;
  43. @Autowired
  44. private TaBuildingMapper buildingMapper;
  45. @Autowired
  46. private TaActivityDynamicEnlistMapper taActivityDynamicEnlistMapper;
  47. @Autowired
  48. private TaPersonMapper taPersonMapper;
  49. protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception {
  50. DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  51. CustomDateEditor editor = new CustomDateEditor(df, true);//true表示允许为空,false反之
  52. binder.registerCustomEditor(Date.class, editor);
  53. }
  54. @Override
  55. public ResponseBean iBuildingDynamicList(Integer pageNum, Integer pageSize, String name, String buildingId) {
  56. Page<TaBuildingDynamic> page = new Page<>();
  57. page.setSize(pageSize == null ? 10 : pageSize);
  58. page.setCurrent(pageNum == null ? 1 : pageNum);
  59. IPage<TaBuildingDynamic> buildingDynamic = buildingDynamicMapper.buildingDynamicList(page, name, buildingId);
  60. List<TaBuildingDynamic> buildingDynamicList=buildingDynamic.getRecords();
  61. HashMap hashMap= new HashMap<>();
  62. hashMap.put("list",buildingDynamicList);
  63. hashMap.put("total",buildingDynamic.getTotal());
  64. hashMap.put("pageNum",buildingDynamic.getCurrent());
  65. hashMap.put("pageSize",buildingDynamic.getSize());
  66. return ResponseBean.success(hashMap);
  67. }
  68. @Override
  69. public ResponseBean iBuildingDynamicSelectId(String id) {
  70. TaBuildingDynamic buildingDynamicList= buildingDynamicMapper.iBuildingDynamicSelectId(id);
  71. return ResponseBean.success(buildingDynamicList);
  72. }
  73. @Override
  74. public ResponseBean getWxBuildingDynamiceList(Integer pageNum, Integer pageSize,Integer buildingId,String openid) {
  75. Page<TaBuildingDynamic> page = new Page<>();
  76. page.setCurrent(pageNum);
  77. page.setSize(pageSize);
  78. QueryWrapper<TaBuildingDynamic> buildingDynamicQueryWrapper = new QueryWrapper<>();
  79. buildingDynamicQueryWrapper.eq("building_id", buildingId);
  80. buildingDynamicQueryWrapper.eq("status", "1");
  81. buildingDynamicQueryWrapper.orderByDesc("create_date");
  82. IPage<TaBuildingDynamic> buildingDynamicIPage = buildingDynamicMapper.selectPage(page, buildingDynamicQueryWrapper);
  83. List<TaBuildingDynamic> records = buildingDynamicIPage.getRecords();
  84. // 判断换当前列表活动状态—1:进行中(展示活动报名截止时间),2:未开始(展示活动报名时间),3:结束(不展示)
  85. for (TaBuildingDynamic taBuildingDynamic:records){
  86. QueryWrapper<TaActivityDynamicEnlist> activityDynamicEnlist = new QueryWrapper<>();
  87. TaPerson taPerson = taPersonMapper.selectByIdPerson(openid);
  88. if (null == taPerson){
  89. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  90. }
  91. activityDynamicEnlist.eq("phone", taPerson.getPhone());
  92. TaActivityDynamicEnlist taActivityDynamicEnlistPhone= taActivityDynamicEnlistMapper.selectOne(activityDynamicEnlist);
  93. if (null == taActivityDynamicEnlistPhone){
  94. taBuildingDynamic.setIsSing("1");
  95. }
  96. // 获取当前时间状态
  97. taBuildingDynamic= timeCondition(taBuildingDynamic);
  98. }
  99. HashMap<String, Object> map = new HashMap<>();
  100. map.put("list", records);
  101. map.put("total", buildingDynamicIPage.getTotal());
  102. map.put("pageNum", buildingDynamicIPage.getCurrent());
  103. map.put("pageSize", buildingDynamicIPage.getSize());
  104. return ResponseBean.success(map);
  105. }
  106. @Override
  107. public ResponseBean getWxBuildingDynamiceInfo(String dynamicId,Integer buildingId,String openid) {
  108. QueryWrapper<TaBuildingDynamic> buildingDynamicQueryWrapper = new QueryWrapper<>();
  109. buildingDynamicQueryWrapper.eq("dynamic_id", dynamicId);
  110. buildingDynamicQueryWrapper.eq("status",1);
  111. TaBuildingDynamic tabuildingDynamic = buildingDynamicMapper.selectOne(buildingDynamicQueryWrapper);
  112. // 当前阅读量加1
  113. buildingDynamicMapper.updateById( tabuildingDynamic.setSaveNum(tabuildingDynamic.getSaveNum()+1));
  114. TaBuildingDynamic buildingDynamic = buildingDynamicMapper.selectOne(buildingDynamicQueryWrapper);
  115. TaPerson taPerson = taPersonMapper.selectByIdPerson(openid);
  116. if (null == taPerson){
  117. return ResponseBean.error("验证当前人员信息失败", ResponseBean.ERROR_UNAVAILABLE);
  118. }
  119. // 查询是否报名
  120. QueryWrapper<TaActivityDynamicEnlist> activityDynamicEnlist = new QueryWrapper<>();
  121. activityDynamicEnlist.eq("phone", taPerson.getPhone());
  122. TaActivityDynamicEnlist taActivityDynamicEnlistPhone= taActivityDynamicEnlistMapper.selectOne(activityDynamicEnlist);
  123. if (null == taActivityDynamicEnlistPhone){
  124. buildingDynamic.setIsSing("1");
  125. }
  126. // 获取报名总数
  127. QueryWrapper<TaActivityDynamicEnlist> taActivityDynamicEnlist = new QueryWrapper<>();
  128. taActivityDynamicEnlist.eq("dynamic_id", dynamicId);
  129. taActivityDynamicEnlist.eq("building_id",buildingId);
  130. int applyCount= taActivityDynamicEnlistMapper.selectCount(taActivityDynamicEnlist);
  131. buildingDynamic.setCount(applyCount);
  132. // 获取当前时间状态
  133. buildingDynamic = timeCondition(buildingDynamic);
  134. return ResponseBean.success(buildingDynamic);
  135. }
  136. @Override
  137. public ResponseBean buildingDynamicAdd(HashMap map) {
  138. TaBuildingDynamic buildingDynamic= new TaBuildingDynamic();
  139. Date time = (Date)map.get("publishDate");
  140. Instant instant = time.toInstant();
  141. ZoneId zoneId = ZoneId.systemDefault();
  142. LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
  143. // buildingDynamic.setDynamicId(idGen.nextId()+"");
  144. buildingDynamic.setBuildingId(map.get("buildingId")+"");
  145. buildingDynamic.setImgUrl((String) map.get("imgUrl"));
  146. buildingDynamic.setDesc(map.get("desc")+"");
  147. buildingDynamic.setUrl(map.get("url")+"");
  148. buildingDynamic.setTitle(map.get("title")+"");
  149. buildingDynamic.setPublishDate(localDateTime);
  150. buildingDynamic.setStatus(1);
  151. buildingDynamic.setCreateDate(LocalDateTime.now());
  152. buildingDynamicMapper.insertBuildingDynamic(buildingDynamic);
  153. return ResponseBean.success("成功");
  154. }
  155. @Override
  156. public ResponseBean buildingDynamicDelete(String id) {
  157. TaBuildingDynamic buildingDynamic= new TaBuildingDynamic();
  158. buildingDynamic.setDynamicId(id);
  159. buildingDynamic.setStatus(-1);
  160. QueryWrapper<TaBuildingDynamic> buildingDynamicQueryWrapper = new QueryWrapper<>();
  161. buildingDynamicQueryWrapper.eq("dynamic_id", id);
  162. buildingDynamicMapper.update(buildingDynamic,buildingDynamicQueryWrapper);
  163. return ResponseBean.success("成功");
  164. }
  165. @Override
  166. public ResponseBean buildingDynamicUpdate(HashMap<Object, Object> map) {
  167. TaBuildingDynamic buildingDynamic= new TaBuildingDynamic();
  168. Date time = (Date)map.get("publishDate");
  169. Instant instant = time.toInstant();
  170. ZoneId zoneId = ZoneId.systemDefault();
  171. LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
  172. buildingDynamic.setDynamicId(map.get("dynamicId")+"");
  173. buildingDynamic.setBuildingId(map.get("buildingId")+"");
  174. buildingDynamic.setImgUrl((String) map.get("imgUrl"));
  175. buildingDynamic.setDesc(map.get("desc")+"");
  176. buildingDynamic.setUrl(map.get("url")+"");
  177. buildingDynamic.setTitle(map.get("title")+"");
  178. buildingDynamic.setPublishDate(localDateTime);
  179. buildingDynamic.setStatus(1);
  180. buildingDynamic.setCreateDate(LocalDateTime.now());
  181. buildingDynamicMapper.buildingDynamicUpdate(buildingDynamic);
  182. return ResponseBean.success("成功");
  183. }
  184. @Override
  185. public ResponseBean taActivityDynamicEnlistAdd(TaActivityDynamicEnlist taActivityDynamicEnlist) {
  186. // 查询当前活动属于哪个楼盘
  187. TaBuildingDynamic taBuildingDynamic= buildingDynamicMapper.iBuildingDynamicSelectId(taActivityDynamicEnlist.getDynamicId());
  188. taActivityDynamicEnlist.setCreateDate(LocalDateTime.now())
  189. .setBuildingId(taBuildingDynamic.getDynamicId());
  190. int state = taActivityDynamicEnlistMapper.insert(taActivityDynamicEnlist);
  191. return ResponseBean.success(state);
  192. }
  193. /**
  194. * 根据报名开始时间和结束时间判断当前图标状态
  195. */
  196. private TaBuildingDynamic timeCondition(TaBuildingDynamic taBuildingDynamic){
  197. Long currentTime = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
  198. if (null == taBuildingDynamic.getEnlistEnd () && null == taBuildingDynamic.getEnlistStart()){
  199. return taBuildingDynamic;
  200. }
  201. // 报名截止时间
  202. Long enlistEnd = taBuildingDynamic.getEnlistEnd ().toInstant(ZoneOffset.of("+8")).toEpochMilli();
  203. // 报名开始时间
  204. Long enlistStart = taBuildingDynamic.getEnlistStart().toInstant(ZoneOffset.of("+8")).toEpochMilli();
  205. // (1:进行中)当前时间小于报名截止时间,并且报名状态为1
  206. if ("1".equals(taBuildingDynamic.getIsEnlist()) && currentTime <= enlistEnd ) {
  207. taBuildingDynamic.setActivityCondition(CommConstant.ACTIVITY_CONDITION_ONE);
  208. }
  209. //(2:未开始)当前时间是否小于报名时间,并且报名状态为1
  210. if (!"1".equals(taBuildingDynamic.getIsEnlist()) && currentTime <= enlistStart){
  211. taBuildingDynamic.setActivityCondition(CommConstant.ACTIVITY_CONDITION_TWO);
  212. }
  213. //(3:结束)当前时间大于报名结束时间,并且报名状态为1
  214. if ("1".equals(taBuildingDynamic.getIsEnlist()) && currentTime >= enlistEnd){
  215. taBuildingDynamic.setActivityCondition(CommConstant.ACTIVITY_CONDITION_ONE_THREE);
  216. }
  217. return taBuildingDynamic;
  218. }
  219. }