package com.cnd3b.restcontroller.customer.live; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.cnd3b.common.Controller; import com.cnd3b.common.data.Row; import com.cnd3b.common.data.Rows; import com.cnd3b.common.data.SQLFactory; import com.cnd3b.common.data.db.DataPool; import com.cnd3b.utility.polyv.Polyv; import p2.common.parse.A; import p2.pao.PaoRemote; import p2.pao.PaoSetRemote; import p2.util.P2Exception; import java.util.ArrayList; import java.util.HashMap; public class live extends Controller { public live(JSONObject content) { super(content); } /** * 获取频道分类列表 * * @return */ public String getLiveCategory() { Polyv polyv = new Polyv(); HashMap map = polyv.listCategory(); JSONArray array = new JSONArray(); for (int id : map.keySet()) { JSONObject object = new JSONObject(); object.put("categoryId", id); object.put("categoryName", map.get(id)); array.add(object); } return getSucReturnObject().setData(array).toString(); } /** * 直播列表查询 * * @return */ public String queryChannelList() { /** *排序条件设置 */ String[] sortfield = {"t1.createdate desc"}; String sort = getSort(sortfield, "t1.createdate desc"); /** * 过滤条件设置 */ StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and("); where.append("t1.channelname like'%").append(whereObject.getString("condition")).append("%' "); where.append("or t2.fagentname like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } if (whereObject.containsKey("categoryid") && !"".equals(whereObject.getString("categoryid"))) { where.append(" and("); where.append("t1.categoryid ='").append(whereObject.getString("categoryid")).append("' "); where.append(")"); } } SQLFactory costhead = new SQLFactory(this, "直播列表查询", pageSize, pageNumber, sort); costhead.addParameter("siteid", siteid); costhead.addParameter("tagentsid", tagentsid); costhead.addParameter_SQL("where", where); Rows rows = dbConnect.runSqlQuery(costhead.getSQL()); return getSucReturnObject().setDataByPaging(rows, sortfield).setFinalDo(DataPool.defaultdatalife, 1); } /** * 直播详情查询 * * @return */ public String queryChannelMain() { long tliveid = content.getLong("tliveid"); SQLFactory sqlFactory = new SQLFactory(this, "直播详情查询"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("tliveid", tliveid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setData(rows).toString(); } /** * 展会直播详情 * * @return */ public String getLiveInfo() throws P2Exception { SQLFactory sqlFactory = new SQLFactory(this, "展会直播详情"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("tagentsid", tagentsid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); if (rows.isEmpty()) { PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tliveapply", "siteid = '" + siteid + "' AND fissecret = 0 AND fstatus = '申请'"); if (paoSetRemote.isEmpty()) { return getErrReturnObject().setErrCode(3).setErrMsg("无直播间信息").toString(); } else { return getErrReturnObject().setErrCode(2).setErrMsg("直播申请中").toString(); } } else { return getSucReturnObject().setData(rows).toString(); } } /** * 展会直播数据统计(频道) * * @return */ public String getLiveDataCount() { String channelid = content.getString("channelid"); JSONObject resultObject = new JSONObject(); //观看次数(次) long viewCounts = getCount("观看次数", "num", channelid); resultObject.put("viewCounts", viewCounts); //观看时长(分钟) long viewDuration = getCount("观看时长", "num", channelid); resultObject.put("viewDuration", viewDuration); //观看人数(人) long viewers = getCount("观看人数", "num", channelid); resultObject.put("viewers", viewers); //人均观看次数(次) resultObject.put("viewCountsAvg", viewers == 0 ? 0 : viewCounts / viewers); //人均观看时长(分钟) resultObject.put("viewDurationAvg", viewers == 0 ? 0 : viewDuration / viewers); return getSucReturnObject().setData(resultObject).toString(); } /** * 直播数据统计(场次) * * @return * @throws P2Exception */ public String getLiveDataCountForSession() throws P2Exception { String sessionid = content.getString("sessionid"); int livepv = 0; int liveuv = 0; int duration = 0; PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tlive_sessiondata", "sessionid = '" + sessionid + "'"); if (!paoSetRemote.isEmpty()) { PaoRemote paoRemote = paoSetRemote.getPao(0); //人数 livepv = paoRemote.getInt("livepv"); //人次 liveuv = paoRemote.getInt("liveuv"); //时长 duration = paoRemote.getInt("duration") / 60; } JSONObject resultObject = new JSONObject(); resultObject.put("viewers", livepv); resultObject.put("viewCounts", liveuv); resultObject.put("viewDuration", duration); resultObject.put("viewCountsAvg", livepv == 0 ? 0 : liveuv / livepv); resultObject.put("viewDurationAvg", livepv == 0 ? 0 : duration / livepv); return getSucReturnObject().setData(resultObject).toString(); } /** * 直播用户观看列表 * * @return */ public String getLiveUserList() { String channelid = content.getString("channelid"); String sessionid = content.getString("sessionid"); SQLFactory sqlFactory = new SQLFactory(this, "直播用户观看列表", pageSize, pageNumber, "t1.createdtime"); sqlFactory.addParameter("channelid", channelid); sqlFactory.addParameter("sessionid", sessionid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 直播场次列表查询 * * @return */ public String getLiveSessionList() { String channelid = content.getString("channelid"); SQLFactory sqlFactory = new SQLFactory(this, "直播场次列表查询", pageSize, pageNumber, "createdate"); sqlFactory.addParameter("channelid", channelid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 私域直播详情 * * @return */ public String getSYLiveInfo() throws P2Exception { SQLFactory sqlFactory = new SQLFactory(this, "私域直播详情"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter("tagentsid", tagentsid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); if (rows.isEmpty()) { PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tliveapply", "siteid = '" + siteid + "' and tagentsid='" + tagentsid + "' AND fissecret = 1 AND fstatus = '申请'"); if (paoSetRemote.isEmpty()) { return getErrReturnObject().setErrCode(3).setErrMsg("无直播间信息").toString(); } else { return getErrReturnObject().setErrCode(2).setErrMsg("直播申请中").toString(); } } else { return getSucReturnObject().setData(rows).toString(); } } /** * 私域直播数据统计(频道) * * @return */ public String getSYLiveDataCount() { String channelid = content.getString("channelid"); JSONObject resultObject = new JSONObject(); //观看次数(次) long viewCounts = getCount("观看次数", "num", channelid); resultObject.put("viewCounts", viewCounts); //观看时长(分钟) long viewDuration = getCount("观看时长", "num", channelid); resultObject.put("viewDuration", viewDuration); //观看人数(人) long viewers = getCount("观看人数", "num", channelid); resultObject.put("viewers", viewers); //人均观看次数(次) resultObject.put("viewCountsAvg", viewers == 0 ? 0 : viewCounts / viewers); //人均观看时长(分钟) resultObject.put("viewDurationAvg", viewers == 0 ? 0 : viewDuration / viewers); return getSucReturnObject().setData(resultObject).toString(); } /** * 私域直播数据统计(场次) * * @return * @throws P2Exception */ public String getSYLiveDataCountForSession() throws P2Exception { String sessionid = content.getString("sessionid"); int livepv = 0; int liveuv = 0; int duration = 0; PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tlive_sessiondata", "sessionid = '" + sessionid + "'"); if (!paoSetRemote.isEmpty()) { PaoRemote paoRemote = paoSetRemote.getPao(0); //人数 livepv = paoRemote.getInt("livepv"); //人次 liveuv = paoRemote.getInt("liveuv"); //时长 duration = paoRemote.getInt("duration") / 60; } JSONObject resultObject = new JSONObject(); resultObject.put("viewers", livepv); resultObject.put("viewCounts", liveuv); resultObject.put("viewDuration", duration); resultObject.put("viewCountsAvg", livepv == 0 ? 0 : liveuv / livepv); resultObject.put("viewDurationAvg", livepv == 0 ? 0 : duration / livepv); return getSucReturnObject().setData(resultObject).toString(); } /** * 私域直播用户观看列表 * * @return */ public String getSYLiveUserList() { String channelid = content.getString("channelid"); String sessionid = content.getString("sessionid"); SQLFactory sqlFactory = new SQLFactory(this, "私域直播用户观看列表", pageSize, pageNumber, "t1.createdtime"); sqlFactory.addParameter("channelid", channelid); sqlFactory.addParameter("sessionid", sessionid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 私域直播申请 * * @return */ public String applySYLive() throws P2Exception { PaoSetRemote paoSetRemote = getP2ServerSystemPaoSet("tliveapply", "siteid = '" + siteid + "' and tagentsid='" + tagentsid + "' AND fissecret = 1 AND fstatus = '申请'"); if (paoSetRemote.isEmpty()) { PaoRemote paoRemote = paoSetRemote.addAtEnd(); paoRemote.setValue("CHANGEBY", username, 11L); paoRemote.setValue("CHANGEDATE", getDateTime_Str(), 11L); paoRemote.setValue("CREATEBY", username, 11L); paoRemote.setValue("CREATEDATE", getDateTime_Str(), 11L); paoRemote.setValue("FISSECRET", true, 11L); paoRemote.setValue("FSTATUS", "申请", 11L); paoRemote.setValue("FNOTES", "私域直播申请", 11L); paoRemote.setValue("SITEID", siteid); paoRemote.setValue("TAGENTSID", tagentsid); paoSetRemote.save(); return getSucReturnObject().setData("私域直播申请成功").toString(); } else { return getErrReturnObject().setErrMsg("私域直播已申请").toString(); } } /** * 私域直播场次列表查询 * * @return */ public String getSYLiveSessionList() { String channelid = content.getString("channelid"); SQLFactory sqlFactory = new SQLFactory(this, "私域直播场次列表查询", pageSize, pageNumber, "createdate"); sqlFactory.addParameter("channelid", channelid); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 获取数量 * * @param SQLMODELNAME SQL名称 * @param fieldname 取数据的字段名称 * @return */ public long getCount(String SQLMODELNAME, String fieldname, String channelid) { SQLFactory sqlFactory = new SQLFactory(this, SQLMODELNAME); sqlFactory.addParameter("channelid", channelid); Rows rows = sqlFactory.runSqlQuery(); return rows.isEmpty() ? 0 : rows.get(0).getLong(fieldname); } /** * 获取实时直播观看人数 */ public String getRealTimeViewers() { String channelid = content.getString("channelid"); String sql = "SELECT [count] FROM tlive_usercount WHERE [time]='" + getDateTime_Str() + "' AND channelid='" + channelid + "'"; Rows rows = dbConnect.runSqlQuery(sql); JSONObject resultObject = new JSONObject(); resultObject.put("count", rows.isEmpty() ? 0 : rows.get(0).getLong("count")); return getSucReturnObject().setData(resultObject).toString(); } /** * 获取实时观众列表 * * @return */ public String getRealTimeViewerList() { String channelid = content.getString("channelid"); Long lastmodified = getDateTime().getTime() / 1000- 5* 60; System.err.println(lastmodified); SQLFactory sqlFactory = new SQLFactory(this, "实时观众列表", pageSize, pageNumber, "t1.tlive_viewlogid DESC"); sqlFactory.addParameter("channelid", channelid); sqlFactory.addParameter("lastmodified", lastmodified * 1000); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 获取实时直播聊天列表 * * @return */ public String getRealTimeMessageList() { String channelid = content.getString("channelid"); Long time = getDateTime().getTime() - 1*60*1000; SQLFactory sqlFactory = new SQLFactory(this, "实时聊天列表", pageSize, pageNumber, "t1.tlive_usermessagid DESC"); sqlFactory.addParameter("channelid", channelid); sqlFactory.addParameter("time", time); Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL()); return getSucReturnObject().setDataByPaging(rows).preloading(1).toString(); } /** * 获取合作商直播列表(包括私域、展会) * * @return */ public String getCooperationAgentsLiveList() { //查询合作的商户id String sql = "SELECT tcooperationagentsid FROM tagents_cooperation WHERE tagentsid = '" + tagentsid + "' AND fstatus = '合作';"; Rows rows = dbConnect.runSqlQuery(sql); ArrayList tagentsidList = new ArrayList<>(); for (Row row : rows) { tagentsidList.add(row.getString("tcooperationagentsid")); } SQLFactory sqlFactory = new SQLFactory(this, "合作商直播列表"); sqlFactory.addParameter("siteid", siteid); sqlFactory.addParameter_in("tagentsidList", tagentsidList); Rows agentRows = dbConnect.runSqlQuery(sqlFactory.getSQL()); for(Row row:agentRows){ //观看次数(次) String channelid = row.getString("channelid"); //观看人数(人) long viewers = getCount("观看人数", "num", channelid); row.put("viewers", viewers); } return getSucReturnObject().setData(agentRows).toString(); } }