UserVisitsDaoImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.happy.dao.impl;
  2. import com.happy.Model.BookingLog;
  3. import com.happy.Model.UserVisits;
  4. import com.happy.Until.DateUtil;
  5. import com.happy.Until.Enum.OrderEnum;
  6. import com.happy.Until.Func;
  7. import com.happy.Until.TimeExchange;
  8. import com.happy.Until.UUIDUtil;
  9. import com.happy.dao.BookingLogDao;
  10. import com.happy.dao.UserVisitsDao;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  13. import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
  14. import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
  15. import org.springframework.stereotype.Repository;
  16. import java.util.ArrayList;
  17. import java.util.Date;
  18. import java.util.List;
  19. import java.util.Map;
  20. @Repository("UserVisitsDao")
  21. public class UserVisitsDaoImpl implements UserVisitsDao {
  22. @Autowired
  23. private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
  24. public NamedParameterJdbcTemplate getNamedParameterJdbcTemplate() {
  25. return namedParameterJdbcTemplate;
  26. }
  27. public void setNamedParameterJdbcTemplate(
  28. NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
  29. this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
  30. }
  31. @Override
  32. public int insert(UserVisits userVisits) {
  33. String sql = "insert into `user_visits`(id,userid,create_time,type,remark) " +
  34. "values(:id,:userid,:create_time,:type,:remark) ";
  35. MapSqlParameterSource sps = new MapSqlParameterSource();
  36. if(userVisits.getId()==0){
  37. sps.addValue("id", UUIDUtil.generateID());
  38. }else{
  39. sps.addValue("id", userVisits.getId());
  40. }
  41. sps.addValue("userid", userVisits.getUserid());
  42. sps.addValue("create_time", UUIDUtil.getNewDate());
  43. sps.addValue("type", userVisits.getType());
  44. sps.addValue("remark", userVisits.getRemark());
  45. int num = 0;
  46. try{
  47. num = namedParameterJdbcTemplate.update(sql, sps);
  48. }
  49. catch(Exception e){
  50. e.printStackTrace();
  51. }
  52. return num;
  53. }
  54. @Override
  55. public int add(String userId) {
  56. UserVisits userVisits = new UserVisits();
  57. userVisits.setUserid(userId);
  58. userVisits.setType(OrderEnum.用户访问量.name());
  59. return this.insert(userVisits);
  60. }
  61. @Override
  62. public UserVisits queryTodayUserVisits() {
  63. String todaysta = DateUtil.parseDateToStr(new Date(), DateUtil.Time_Formatter_Day) + " 00:00:00 ";
  64. String todayend = DateUtil.parseDateToStr(new Date(), DateUtil.Time_Formatter_Day) + " 23:59:59 ";
  65. String yesstar = TimeExchange.getYesturday() + " 00:00:00 ";
  66. String yesend = TimeExchange.getYesturday() + " 23:59:59 ";
  67. String sql = " select todayCount,yesterdayCount, (todayCount-yesterdayCount) as compare from ( " +
  68. "(select COUNT(*) as todayCount from user_visits where 1=1 AND create_time >= '" + todaysta+ "' and create_time < '" + todayend+ "' ) as today, " +
  69. "(select COUNT(*) as yesterdayCount from user_visits where 1=1 AND create_time >= '" + yesstar+ "' and create_time < '" + yesend+ "') as yesterday )";
  70. MapSqlParameterSource sps = new MapSqlParameterSource();
  71. Map map = namedParameterJdbcTemplate.queryForMap(sql,sps);
  72. UserVisits info = new UserVisits();
  73. info.putAll(map);
  74. return info;
  75. }
  76. @Override
  77. public List queryVisitsBySql(String sql)
  78. {
  79. String sqlQuery = "select a.day,IFNULL(b.visitNumber,0) visitNumber from ( " +
  80. " SELECT DATE_ADD(DATE_FORMAT(NOW(),'%Y-%m-%d'), INTERVAL seq DAY) AS day " +
  81. " FROM ( " +
  82. " SELECT -1 seq UNION ALL SELECT -2 UNION ALL SELECT -3 UNION ALL SELECT -4 UNION ALL " +
  83. " SELECT -5 UNION ALL SELECT -6 UNION ALL SELECT -7 UNION ALL SELECT -8 UNION ALL SELECT -9 UNION ALL SELECT -10 UNION ALL " +
  84. " SELECT -11 UNION ALL SELECT -12 UNION ALL SELECT -13 UNION ALL SELECT -14 UNION ALL SELECT -15 UNION ALL SELECT -16 UNION ALL " +
  85. " SELECT -17 UNION ALL SELECT -18 UNION ALL SELECT -19 UNION ALL SELECT -20 UNION ALL SELECT -21 UNION ALL SELECT -22 UNION ALL " +
  86. " SELECT -23 UNION ALL SELECT -24 UNION ALL SELECT -25 UNION ALL SELECT -26 UNION ALL SELECT -27 UNION ALL SELECT -28 UNION ALL " +
  87. " SELECT -29 UNION ALL SELECT -30 UNION ALL " +
  88. " SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL " +
  89. " SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL " +
  90. " SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL " +
  91. " SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL " +
  92. " SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL " +
  93. " SELECT 29 UNION ALL SELECT 30 " +
  94. " ) t where " +
  95. sql +
  96. " ) a " +
  97. " left join (select DATE_FORMAT(create_time,'%Y-%m-%d') day,count(1) visitNumber from user_visits group by DATE_FORMAT(create_time,'%Y-%m-%d')) b on a.day=b.day\n " +
  98. " ORDER BY day ";
  99. return namedParameterJdbcTemplate.queryForList(sqlQuery,new MapSqlParameterSource());
  100. }
  101. @Override
  102. public List queryVisitsByDiyTime(String startTime, String endTime)
  103. {
  104. int dayCount = DateUtil.getDayDiff(startTime,endTime);
  105. if (dayCount <= 0)
  106. throw new RuntimeException("请输入正确的时间区间");
  107. StringBuffer positiveStr = new StringBuffer(); // 负
  108. StringBuffer negativeStr = new StringBuffer(); // 正
  109. for (int i = 0; i < dayCount; i++) {
  110. if (i == 0) {
  111. negativeStr.append(" SELECT "+i+" seq ");
  112. continue;
  113. }
  114. negativeStr.append(" UNION ALL SELECT " + i);
  115. positiveStr.append(" UNION ALL SELECT -" + i);
  116. }
  117. String sqlQuery = "select a.day,IFNULL(b.visitNumber,0) visitNumber from ( " +
  118. " SELECT DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) AS day " +
  119. " FROM ( " + negativeStr.toString() + positiveStr.toString() +
  120. // " SELECT -1 seq UNION ALL SELECT -2 UNION ALL SELECT -3 UNION ALL SELECT -4 UNION ALL " +
  121. // " SELECT -5 UNION ALL SELECT -6 UNION ALL SELECT -7 UNION ALL SELECT -8 UNION ALL SELECT -9 UNION ALL SELECT -10 UNION ALL " +
  122. // " SELECT -11 UNION ALL SELECT -12 UNION ALL SELECT -13 UNION ALL SELECT -14 UNION ALL SELECT -15 UNION ALL SELECT -16 UNION ALL " +
  123. // " SELECT -17 UNION ALL SELECT -18 UNION ALL SELECT -19 UNION ALL SELECT -20 UNION ALL SELECT -21 UNION ALL SELECT -22 UNION ALL " +
  124. // " SELECT -23 UNION ALL SELECT -24 UNION ALL SELECT -25 UNION ALL SELECT -26 UNION ALL SELECT -27 UNION ALL SELECT -28 UNION ALL " +
  125. // " SELECT -29 UNION ALL SELECT -30 UNION ALL " +
  126. // " SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL " +
  127. // " SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL " +
  128. // " SELECT 11 UNION ALL SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL SELECT 15 UNION ALL SELECT 16 UNION ALL " +
  129. // " SELECT 17 UNION ALL SELECT 18 UNION ALL SELECT 19 UNION ALL SELECT 20 UNION ALL SELECT 21 UNION ALL SELECT 22 UNION ALL " +
  130. // " SELECT 23 UNION ALL SELECT 24 UNION ALL SELECT 25 UNION ALL SELECT 26 UNION ALL SELECT 27 UNION ALL SELECT 28 UNION ALL " +
  131. // " SELECT 29 UNION ALL SELECT 30 " +
  132. " ) t where " +
  133. " DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) >= DATE_FORMAT('"+ startTime +"','%Y-%m-%d')"+
  134. " AND DATE_ADD(DATE_FORMAT('"+startTime+"','%Y-%m-%d'), INTERVAL seq DAY) <= DATE_FORMAT('"+ endTime +"','%Y-%m-%d')"+
  135. " ) a " +
  136. " left join (select DATE_FORMAT(create_time,'%Y-%m-%d') day,count(1) visitNumber from user_visits group by DATE_FORMAT(create_time,'%Y-%m-%d')) b on a.day=b.day " +
  137. " ORDER BY day ";
  138. return namedParameterJdbcTemplate.queryForList(sqlQuery,new MapSqlParameterSource());
  139. }
  140. }