From e6d26466441636623aacfc120c4bf80eb47633ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E6=B4=AA=E9=BE=99?= <599179587@qq.com> Date: Mon, 10 Jul 2017 11:58:30 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E5=91=A8=E9=83=A8=E5=88=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 5 - .../java/com/ifish/bean/LiveRoomPageInfo.java | 29 ---- .../java/com/ifish/bean/Tbl_Factory_List.java | 125 ++++++++++++++++++ .../java/com/ifish/controller/LiveRoom.java | 4 +- .../java/com/ifish/helper/LiveRoomHelper.java | 113 +++------------- .../com/ifish/helper/LiveRoomHelperI.java | 2 +- .../ifish/mapper/Tbl_Live_Room_Mapper.java | 51 +++++-- src/main/java/com/ifish/util/RedisKey.java | 5 + 8 files changed, 197 insertions(+), 137 deletions(-) create mode 100644 src/main/java/com/ifish/bean/Tbl_Factory_List.java diff --git a/pom.xml b/pom.xml index 989defd..68dc3a4 100644 --- a/pom.xml +++ b/pom.xml @@ -148,11 +148,6 @@ - - org.slf4j - slf4j-log4j12 - 1.7.7 - log4j log4j diff --git a/src/main/java/com/ifish/bean/LiveRoomPageInfo.java b/src/main/java/com/ifish/bean/LiveRoomPageInfo.java index be768b4..a4687e1 100644 --- a/src/main/java/com/ifish/bean/LiveRoomPageInfo.java +++ b/src/main/java/com/ifish/bean/LiveRoomPageInfo.java @@ -48,12 +48,6 @@ public class LiveRoomPageInfo implements Serializable { private Integer pinglunNum; //点赞数量 private Integer zanNum; - //是否点过赞 - private String isZan; - //打赏金币数量 - private BigDecimal totalGoldValue; - //等级 - private Integer gradeNum; public Integer getRoomId() { return roomId; @@ -175,22 +169,6 @@ public class LiveRoomPageInfo implements Serializable { this.pinglunNum = pinglunNum; } - public String getIsZan() { - return isZan; - } - - public void setIsZan(String isZan) { - this.isZan = isZan; - } - - public Integer getGradeNum() { - return gradeNum; - } - - public void setGradeNum(Integer gradeNum) { - this.gradeNum = gradeNum; - } - public Integer getZanNum() { return zanNum; } @@ -199,11 +177,4 @@ public class LiveRoomPageInfo implements Serializable { this.zanNum = zanNum; } - public BigDecimal getTotalGoldValue() { - return totalGoldValue; - } - - public void setTotalGoldValue(BigDecimal totalGoldValue) { - this.totalGoldValue = totalGoldValue; - } } diff --git a/src/main/java/com/ifish/bean/Tbl_Factory_List.java b/src/main/java/com/ifish/bean/Tbl_Factory_List.java new file mode 100644 index 0000000..b03bf10 --- /dev/null +++ b/src/main/java/com/ifish/bean/Tbl_Factory_List.java @@ -0,0 +1,125 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.ifish.bean; + +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +/** + * 电子厂详情表(tbl_factory_list) + * + * @author bianj + * @version 1.0.0 2017-07-03 + */ +@Entity +@Table(name = "tbl_factory_list") +public class Tbl_Factory_List implements java.io.Serializable { + + /** + * 版本号 + */ + private static final long serialVersionUID = -8290320819344778436L; + + /** + * 电子厂代码 + */ + @Id + @Column(name = "factory_code", unique = true, nullable = false, length = 20) + private String factoryCode; + + /** + * 电子厂名称 + */ + @Column(name = "factory_name", nullable = false, length = 20) + private String factoryName; + + /** + * 创建时间 + */ + @Column(name = "create_time", nullable = true) + private Date createTime; + + /** + * 是否收税:1收、0不收 + */ + @Column(name = "is_tax", nullable = true, length = 1) + private String isTax; + + /** + * 获取电子厂代码 + * + * @return 电子厂代码 + */ + public String getFactoryCode() { + return this.factoryCode; + } + + /** + * 设置电子厂代码 + * + * @param factoryCode 电子厂代码 + */ + public void setFactoryCode(String factoryCode) { + this.factoryCode = factoryCode; + } + + /** + * 获取电子厂名称 + * + * @return 电子厂名称 + */ + public String getFactoryName() { + return this.factoryName; + } + + /** + * 设置电子厂名称 + * + * @param factoryName 电子厂名称 + */ + public void setFactoryName(String factoryName) { + this.factoryName = factoryName; + } + + /** + * 获取创建时间 + * + * @return 创建时间 + */ + public Date getCreateTime() { + return this.createTime; + } + + /** + * 设置创建时间 + * + * @param createTime 创建时间 + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + + /** + * 获取是否收税:1收、0不收 + * + * @return 是否收税 + */ + public String getIsTax() { + return this.isTax; + } + + /** + * 设置是否收税:1收、0不收 + * + * @param isTax 是否收税:1收、0不收 + */ + public void setIsTax(String isTax) { + this.isTax = isTax; + } +} diff --git a/src/main/java/com/ifish/controller/LiveRoom.java b/src/main/java/com/ifish/controller/LiveRoom.java index 3860fd5..74fdad5 100644 --- a/src/main/java/com/ifish/controller/LiveRoom.java +++ b/src/main/java/com/ifish/controller/LiveRoom.java @@ -97,9 +97,9 @@ public class LiveRoom { * @return */ @RequestMapping(value = "/liveRoom/v3/getLiveRooms.do", method = RequestMethod.GET) - public Object getLiveRooms(Integer firstResult, Integer pageSize, Integer userId, String orders) { + public Object getLiveRooms(Integer firstResult, Integer pageSize, String orders) { try { - return liveRoomHelperI.getLiveRooms(firstResult, pageSize, userId, orders); + return liveRoomHelperI.getLiveRooms(firstResult, pageSize, orders); } catch (Exception e) { } return IfishUtil.returnJson(ResultEnum.fail101.getKey(), ""); diff --git a/src/main/java/com/ifish/helper/LiveRoomHelper.java b/src/main/java/com/ifish/helper/LiveRoomHelper.java index 56b9c29..17bfd88 100644 --- a/src/main/java/com/ifish/helper/LiveRoomHelper.java +++ b/src/main/java/com/ifish/helper/LiveRoomHelper.java @@ -7,6 +7,7 @@ package com.ifish.helper; import com.ifish.Interceptor.IfishException; import com.ifish.bean.LiveRoomPageInfo; +import com.ifish.bean.PageResult; import com.ifish.bean.Tbl_Device_User; import com.ifish.bean.Tbl_Live_Message; import com.ifish.bean.Tbl_Live_Room; @@ -18,12 +19,10 @@ import com.ifish.util.RedisKey; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import static org.springframework.http.converter.json.Jackson2ObjectMapperBuilder.json; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @@ -327,103 +326,35 @@ public class LiveRoomHelper implements LiveRoomHelperI { * @return */ @Override - public Object getLiveRooms(Integer firstResult, Integer pageSize, Integer userId, String orders) { + public Object getLiveRooms(Integer firstResult, Integer pageSize, String orders) { + try { - if (firstResult != null && pageSize != null && userId != null) { + if (firstResult != null && pageSize != null) { Map returnMap = new HashMap(); - Map map = new HashMap(); - if (firstResult == 0) { - Tbl_User user = userHelperI.getUserById(userId); - if (user != null) { - //经度 - Double longitude = user.getLongitude(); - //纬度 - Double latitude = user.getLatitude(); - //距离用户最近的前5条记录 - List distanceList = tbl_Live_Room_Mapper.getLiveRoomListByLongLat(longitude, latitude); - for (LiveRoomPageInfo liveRoomInfo : distanceList) { - Integer roomId = liveRoomInfo.getRoomId(); - map.put(roomId, liveRoomInfo); - } - //获取用户最近浏览的5条记录 - List browseList = this.liveRoomDao.findByBrowse(userId); - for (LiveRoomPageInfo liveRoomInfo : browseList) { - Integer roomId = liveRoomInfo.getRoomId(); - map.put(roomId, liveRoomInfo); - } - //获取人气值最高的5条记录 - List popularityList = this.liveRoomDao.findByPopularityValue(); - for (LiveRoomPageInfo liveRoomInfo : popularityList) { - Integer roomId = liveRoomInfo.getRoomId(); - map.put(roomId, liveRoomInfo); - } - //去重条件 - orders = StringUtils.join(map.keySet().toArray(), ","); - //根据开播时间倒序排列 - Pagination page = this.liveRoomDao.findByTime(firstResult, pageSize, orders); - List timeList = page.getList(); - for (LiveRoomPageInfo liveRoomInfo : timeList) { - Integer roomId = liveRoomInfo.getRoomId(); - map.put(roomId, liveRoomInfo); - } - List list = new ArrayList(); - Long curTime = new Date().getTime(); - //计算活跃值 - for (LiveRoomPageInfo liveRoomInfo : map.values()) { - Long loginTime = liveRoomInfo.getLoginTime().getTime(); - //最近登录天数 - Integer days = (int) ((curTime - loginTime) / (1000 * 60 * 60 * 24)); - //小于一周 - if (days <= 7) { - liveRoomInfo.setLiveness("优"); - } //一周至半个月 - else if (days > 7 && days <= 15) { - liveRoomInfo.setLiveness("良"); - } //半个月至一个月 - else if (days > 15 && days <= 30) { - liveRoomInfo.setLiveness("中"); - } else { - liveRoomInfo.setLiveness("差"); - } - list.add(liveRoomInfo); - } - returnMap.put("orders", orders); - returnMap.put("total", page.getTotalCount()); - returnMap.put("liveRoomInfo", list); - return IfishUtil.toJson(ResultEnum.success.getKey(), returnMap); - } + List timeList = new ArrayList(); + if (orders.equals("renqi")) { + timeList = tbl_Live_Room_Mapper.getLiveRoomListByCreateTime(pageSize, firstResult); } else { - //根据开播时间倒序排列 - Pagination page = this.liveRoomDao.findByTime(firstResult, pageSize, orders); - List timeList = page.getList(); - Long curTime = new Date().getTime(); - //计算活跃值 - for (LiveRoomPageInfo liveRoomInfo : timeList) { - Long loginTime = liveRoomInfo.getLoginTime().getTime(); - //最近登录天数 - Integer days = (int) ((curTime - loginTime) / (1000 * 60 * 60 * 24)); - //小于一周 - if (days <= 7) { - liveRoomInfo.setLiveness("优"); - } //一周至半个月 - else if (days > 7 && days <= 15) { - liveRoomInfo.setLiveness("良"); - } //半个月至一个月 - else if (days > 15 && days <= 30) { - liveRoomInfo.setLiveness("中"); - } else { - liveRoomInfo.setLiveness("差"); - } - } - returnMap.put("orders", orders); - returnMap.put("total", page.getTotalCount()); - returnMap.put("liveRoomInfo", timeList); - return IfishUtil.toJson(ResultEnum.success.getKey(), returnMap); + timeList = tbl_Live_Room_Mapper.getLiveRoomListByCreateTime(pageSize, firstResult); } + Integer count = 0; + String key = RedisKey.LIVEROOM_COUNT_KEY; + String redisString = redisHelperI.getRedis(key); + if (StringUtils.isNotBlank(redisString)) { + count = Integer.parseInt(redisString); + } else { + count = tbl_Live_Room_Mapper.getLiveRoomListCount(); + redisHelperI.setRedis(key, count.toString()); + } + returnMap.put("orders", orders); + returnMap.put("total", count); + returnMap.put("liveRoomInfo", timeList); + return IfishUtil.toJson(ResultEnum.success.getKey(), returnMap); } return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); } catch (Exception e) { return IfishUtil.toJson(ResultEnum.fail101.getKey(), ""); } + } } diff --git a/src/main/java/com/ifish/helper/LiveRoomHelperI.java b/src/main/java/com/ifish/helper/LiveRoomHelperI.java index 2234d45..d2cf60e 100644 --- a/src/main/java/com/ifish/helper/LiveRoomHelperI.java +++ b/src/main/java/com/ifish/helper/LiveRoomHelperI.java @@ -58,5 +58,5 @@ public interface LiveRoomHelperI { * @param orders * @return */ - Object getLiveRooms(Integer firstResult, Integer pageSize, Integer userId, String orders); + Object getLiveRooms(Integer firstResult, Integer pageSize, String orders); } diff --git a/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java b/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java index c5ee5c7..df026b8 100644 --- a/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java +++ b/src/main/java/com/ifish/mapper/Tbl_Live_Room_Mapper.java @@ -97,16 +97,49 @@ public interface Tbl_Live_Room_Mapper { Tbl_Live_Room getTbl_Live_RoomById(@Param("roomid") Integer roomid); /** - * 根据经纬度获取直播间集合 + * 根据开播时间来查询直播间 + * + * @param pageSize + * @param FirstResult + * @return + */ + @Select("select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," + + "td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,\n" + + "(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays " + + "from tbl_user u " + + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " + + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " + + "where td.is_camera = '1' ORDER BY l.create_time DESC LIMIT ${first},${pagesize}") + List getLiveRoomListByCreateTime(@Param("pagesize") Integer pageSize, @Param("first") Integer FirstResult); + + /** + * 根据开播时间来查询直播间 + * + * @param pageSize + * @param FirstResult + * @return + */ + @Select("select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,l.create_time AS createTime," + + "td.camera_id AS cameraId,l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,\n" + + "(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays " + + "from tbl_user u " + + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " + + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " + + "where td.is_camera = '1' ORDER BY l.popularity_value DESC LIMIT ${first},${pagesize}") + List getLiveRoomListByRenqi(@Param("pagesize") Integer pageSize, @Param("first") Integer FirstResult); + + /** + * 查询所有直播间数量 * * @return */ - @Select("select l.room_id AS roomId,u.user_id AS userId,u.user_type AS userType,u.nick_name AS nickName,u.user_img AS userImg,u.login_time AS loginTime,c.camera_id AS cameraId," - + "l.room_name AS roomName,l.room_desc AS roomDesc,l.popularity_value AS popularityValue,(TO_DAYS(NOW())-TO_DAYS(l.create_time)) AS numberDays," - + "round(6378.138*2*asin(sqrt(pow(sin((${lat}*pi()/180-u.latitude*pi()/180)/2),2)+cos(${lat}*pi()/180)*cos(u.latitude*pi()/180)* pow(sin((${long}*pi()/180-u.longitude*pi()/180)/2),2)))*1000) AS distance " - + "from tbl_user u LEFT JOIN tbl_camera_user c ON u.user_id=c.user_id " - + "LEFT JOIN tbl_live_room l on c.user_id=l.user_id " - + "WHERE c.is_live=1 AND l.room_status=1 HAVING distance IS NOT NULL" - + " ORDER BY distance ASC LIMIT 5") - List getLiveRoomListByLongLat(@Param("long") Double longitude, @Param("lat") Double latitude); + @Select("select count(1) from tbl_user u " + + "LEFT JOIN tbl_device_user c ON u.user_id=c.user_id " + + "LEFT JOIN tbl_device td ON c.device_id = td.device_id " + + "LEFT JOIN tbl_live_room l ON u.user_id=l.user_id " + + "where td.is_camera = '1'") + Integer getLiveRoomListCount(); + } diff --git a/src/main/java/com/ifish/util/RedisKey.java b/src/main/java/com/ifish/util/RedisKey.java index 4035628..331f03a 100644 --- a/src/main/java/com/ifish/util/RedisKey.java +++ b/src/main/java/com/ifish/util/RedisKey.java @@ -66,6 +66,11 @@ public class RedisKey { */ public static final String LiveRoom_key = "liveroomE:"; + /** + * 直播间数量缓存前缀 + */ + public static final String LIVEROOM_COUNT_KEY = "liveroomcountE:"; + /** * 推送消息缓存前缀 */