package cn.jcenterhome.service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.jcenterhome.dao.DataBaseDao;
import cn.jcenterhome.util.BeanFactory;
import cn.jcenterhome.util.Common;
import cn.jcenterhome.util.JavaCenterHome;
public class StatService {
private DataBaseDao dataBaseDao = (DataBaseDao) BeanFactory.getBean("dataBaseDao");
public boolean blogReplyNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> blogList = dataBaseDao.executeQuery("SELECT blogid, replynum FROM "
+ JavaCenterHome.getTableName("blog") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : blogList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("comment")
+ " WHERE id='" + value.get("blogid") + "' AND idtype='blogid'");
if (count != (Integer) value.get("replynum")) {
updates.put((Integer) value.get("blogid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("blog") + " SET replynum="
+ num + " WHERE blogid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean spaceFriendNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> spaceList = dataBaseDao.executeQuery("SELECT uid, friendnum FROM "
+ JavaCenterHome.getTableName("space") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : spaceList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("friend")
+ " WHERE uid='" + value.get("uid") + "' AND status='1'");
if (count != (Integer) value.get("friendnum")) {
updates.put((Integer) value.get("uid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET friendnum="
+ num + " WHERE uid IN(" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean spaceFriendStat(int start, int perpage) {
boolean next = false;
List<Map<String, Object>> spacefieldList = dataBaseDao.executeQuery("SELECT uid, friend FROM "
+ JavaCenterHome.getTableName("spacefield") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : spacefieldList) {
next = true;
List<String> fuids = dataBaseDao.executeQuery("SELECT fuid FROM "
+ JavaCenterHome.getTableName("friend") + " WHERE uid='" + value.get("uid")
+ "' AND status='1'", 1);
String friend = Common.implode(fuids, ",");
if (!friend.equals(value.get("friend"))) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("spacefield")
+ " SET friend='" + friend + "' WHERE uid='" + value.get("uid") + "'");
}
}
return next;
}
public boolean mtagMemberNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> mtagList = dataBaseDao.executeQuery("SELECT tagid, membernum FROM "
+ JavaCenterHome.getTableName("mtag") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : mtagList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM "
+ JavaCenterHome.getTableName("tagspace") + " WHERE tagid='" + value.get("tagid") + "'");
if (count != (Integer) value.get("membernum")) {
updates.put((Integer) value.get("tagid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("mtag") + " SET membernum="
+ num + " WHERE tagid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean mtagThreadNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> mtagList = dataBaseDao.executeQuery("SELECT tagid, threadnum FROM "
+ JavaCenterHome.getTableName("mtag") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : mtagList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("thread")
+ " WHERE tagid='" + value.get("tagid") + "'");
if (count != (Integer) value.get("threadnum")) {
updates.put((Integer) value.get("tagid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("mtag") + " SET threadnum="
+ num + " WHERE tagid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean mtagPostNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> mtagList = dataBaseDao.executeQuery("SELECT tagid, postnum FROM "
+ JavaCenterHome.getTableName("mtag") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : mtagList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("post")
+ " WHERE tagid='" + value.get("tagid") + "' AND isthread='0'");
if (count != (Integer) value.get("postnum")) {
updates.put((Integer) value.get("tagid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("mtag") + " SET postnum=" + num
+ " WHERE tagid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean threadReplyNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> threadList = dataBaseDao.executeQuery("SELECT tid, replynum FROM "
+ JavaCenterHome.getTableName("thread") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : threadList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("post")
+ " WHERE tid='" + value.get("tid") + "' AND isthread='0'");
if (count != (Integer) value.get("replynum")) {
updates.put((Integer) value.get("tid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("thread") + " SET replynum="
+ num + " WHERE tid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean albumPicNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> albumList = dataBaseDao.executeQuery("SELECT albumid, picnum FROM "
+ JavaCenterHome.getTableName("album") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : albumList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("pic")
+ " WHERE albumid='" + value.get("albumid") + "'");
if (count != (Integer) value.get("picnum")) {
updates.put((Integer) value.get("albumid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("album") + " SET picnum=" + num
+ " WHERE albumid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
public boolean tagBlogNumStat(int start, int perpage) {
boolean next = false;
Map<Integer, Integer> updates = new HashMap<Integer, Integer>();
List<Map<String, Object>> tagList = dataBaseDao.executeQuery("SELECT tagid, blognum FROM "
+ JavaCenterHome.getTableName("tag") + " LIMIT " + start + "," + perpage);
for (Map<String, Object> value : tagList) {
next = true;
int count = dataBaseDao.findRows("SELECT COUNT(*) FROM " + JavaCenterHome.getTableName("tagblog")
+ " WHERE tagid='" + value.get("tagid") + "'");
if (count != (Integer) value.get("blognum")) {
updates.put((Integer) value.get("tagid"), count);
}
}
if (updates.size() == 0) {
return next;
}
Object[] nums = Common.reNum(updates);
List<Integer> num0 = (List<Integer>) nums[0];
Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1];
for (Integer num : num0) {
dataBaseDao.executeUpdate("UPDATE " + JavaCenterHome.getTableName("tag") + " SET blognum=" + num
+ " WHERE tagid IN (" + Common.sImplode(num1.get(num)) + ")");
}
return next;
}
}