package cn.jcenterhome.service; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import cn.jcenterhome.util.BeanFactory; import cn.jcenterhome.util.Common; import cn.jcenterhome.util.FileHelper; import cn.jcenterhome.util.FtpUtil; import cn.jcenterhome.util.JavaCenterHome; public class AdminDeleteService { private DataBaseService dataBaseService = (DataBaseService) BeanFactory.getBean("dataBaseService"); public boolean deleteBlogs(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object blogIds) { boolean allowmanage = Common.checkPerm(request, response, "manageblog"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> blogList = dataBaseService .executeQuery("SELECT blogid, uid FROM " + JavaCenterHome.getTableName("blog") + " WHERE blogid IN (" + Common.sImplode(blogIds) + ")"); List<Map<String, Object>> blogs = new ArrayList<Map<String, Object>>(); for (Map<String, Object> value : blogList) { int uid = (Integer) value.get("uid"); if (allowmanage || supe_uid == uid) { blogs.add(value); if (!managebatch && supe_uid != uid) { delnum++; } } } if (blogs.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("delblog", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Integer> newBlogIds = new ArrayList<Integer>(); for (Map<String, Object> value : blogs) { int blogid = (Integer) value.get("blogid"); int uid = (Integer) value.get("uid"); newBlogIds.add(blogid); if (allowmanage && supe_uid != uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } List<String> tags = dataBaseService.executeQuery("SELECT tagid FROM " + JavaCenterHome.getTableName("tagblog") + " WHERE blogid=" + blogid, 1); if (tags.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("tag") + " SET blognum=blognum-1 WHERE tagid IN (" + Common.sImplode(tags) + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tagblog") + " WHERE blogid=" + blogid); } } String ids = Common.sImplode(newBlogIds); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blog") + " WHERE blogid IN (" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blogfield") + " WHERE blogid IN (" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE id IN (" + ids + ") AND idtype='blogid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + ids + ") AND idtype='blog'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + ids + ") AND idtype='blogid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("clickuser") + " WHERE id IN (" + ids + ") AND idtype='blogid'"); return true; } public boolean deleteAlbums(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object albumIds) { boolean allowmanage = Common.checkPerm(request, response, "managealbum"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Object> newids = new ArrayList<Object>(); List<Map<String, Object>> albums = dataBaseService.executeQuery("SELECT albumid, uid FROM " + JavaCenterHome.getTableName("album") + " WHERE albumid IN (" + Common.sImplode(albumIds) + ")"); for (Map<String, Object> album : albums) { int uid = (Integer) album.get("uid"); if (allowmanage || supe_uid == uid) { newids.add(album.get("albumid")); if (!managebatch && supe_uid != uid) { delnum++; } } } if (newids.isEmpty() || (!managebatch && delnum > 1)) { return false; } String ids = Common.sImplode(newids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("album") + " WHERE albumid IN (" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + ids + ") AND idtype='albumid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + ids + ") AND idtype='albumid'"); List<Map<String, Object>> pics = dataBaseService .executeQuery("SELECT uid, size, filepath, thumb, remote FROM " + JavaCenterHome.getTableName("pic") + " WHERE albumid IN (" + ids + ")"); if (pics.size() > 0) { Map<String, Integer> reward = Common.getReward("delimage", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); for (Map<String, Object> pic : pics) { int uid = (Integer) pic.get("uid"); StringBuffer setsql = new StringBuffer(); if (allowmanage && uid != supe_uid) { setsql.append(credit > 0 ? (",credit=credit-" + credit) : ""); setsql.append(experience > 0 ? (",experience=experience-" + experience) : ""); } dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET attachsize=attachsize-" + pic.get("size") + " " + setsql + " WHERE uid=" + uid); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("pic") + " WHERE albumid IN (" + ids + ")"); deletePicFiles(request, response, pics); } return true; } public boolean deletePics(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object picIds) { boolean allowmanage = Common.checkPerm(request, response, "managealbum"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Object> newIds = new ArrayList<Object>(); List<Map<String, Object>> pics = new ArrayList<Map<String, Object>>(); Map<Integer, Integer[]> albums = new HashMap<Integer, Integer[]>(); Map<Integer, Integer[]> spaces = new HashMap<Integer, Integer[]>(); List<Map<String, Object>> picList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("pic") + " WHERE picid IN (" + Common.sImplode(picIds) + ")"); for (Map<String, Object> pic : picList) { int uid = (Integer) pic.get("uid"); if (allowmanage || uid == supe_uid) { pics.add(pic); newIds.add(pic.get("picid")); int albumId = (Integer) pic.get("albumid"); if (albumId > 0) { Integer[] album = albums.get(albumId); if (album == null) { album = new Integer[] {uid, 1}; } else { album[0] = uid; album[1]++; } albums.put(albumId, album); } if (uid != supe_uid) { if (!managebatch) { delnum++; } } int size = (Integer) pic.get("size"); Integer[] space = spaces.get(uid); if (space == null) { space = new Integer[] {size, 1}; } else { space[0] += size; space[1]++; } spaces.put(uid, space); } } if (pics.isEmpty() || (!managebatch && delnum > 1)) { return false; } if (spaces.size() > 0) { Map<String, Integer> reward = Common.getReward("delimage", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); Set<Integer> uids = spaces.keySet(); for (Integer uid : uids) { Integer[] space = spaces.get(uid); StringBuffer setsql = new StringBuffer(); if (allowmanage) { if (credit != 0) { setsql.append(" ,credit=credit-" + (space[1] * credit)); } if (experience != 0) { setsql.append(" ,experience=experience-" + (space[1] * experience)); } } dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET attachsize=attachsize-" + space[0] + setsql + " WHERE uid=" + uid); } } if (newIds.size() > 0) { String ids = Common.sImplode(newIds); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("pic") + " WHERE picid IN (" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE id IN (" + ids + ") AND idtype='picid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + ids + ") AND idtype='picid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + ids + ") AND idtype='picid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("clickuser") + " WHERE id IN (" + ids + ") AND idtype='picid'"); } if (albums.size() > 0) { Set<Integer> albumIds = albums.keySet(); for (Integer albumId : albumIds) { Integer[] album = albums.get(albumId); String thePic = getAlbumPic(album[0], albumId); dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("album") + " SET pic='" + thePic + "', picnum=picnum-" + album[1] + " WHERE albumid=" + albumId); } } if (pics.size() > 0) { deletePicFiles(request, response, pics); } return true; } public boolean deleteProfilefield(HttpServletRequest request, HttpServletResponse response, Object fieldids) { if (!Common.checkPerm(request, response, "manageprofilefield")) { } Object[] fieldidArray; if (fieldids instanceof Set) { fieldidArray = ((Set) fieldids).toArray(); } else if (fieldids instanceof List) { fieldidArray = ((List) fieldids).toArray(); } else if (fieldids instanceof Object[]) { fieldidArray = (Object[]) fieldids; } else { return false; } StringBuilder sql = new StringBuilder("DELETE FROM " + JavaCenterHome.getTableName("profilefield") + " WHERE fieldid IN (" + Common.sImplode(fieldidArray) + ")"); dataBaseService.execute(sql.toString()); sql.delete(0, sql.length()); sql.append("ALTER TABLE " + JavaCenterHome.getTableName("spacefield") + " DROP `field_"); int tempLen = sql.length(); sql.append("`"); for (Object ob : fieldidArray) { sql.insert(tempLen, String.valueOf(ob)); dataBaseService.execute(sql.toString()); sql.delete(tempLen, sql.length() - 1); } return true; } public boolean deleteComments(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object cids) { boolean allowmanage = Common.checkPerm(request, response, "managecomment"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> dels = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> comments = dataBaseService .executeQuery("SELECT cid, uid, id, idtype, authorid FROM " + JavaCenterHome.getTableName("comment") + " WHERE cid IN (" + Common.sImplode(cids) + ")"); for (Map<String, Object> comment : comments) { int authorId = (Integer) comment.get("authorid"); if (allowmanage || authorId == supe_uid || (Integer) comment.get("uid") == supe_uid) { dels.add(comment); if (!managebatch && authorId != supe_uid) { delnum++; } } } if (dels.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("delcomment", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Object> newcids = new ArrayList<Object>(); Map<Integer, Integer> blognums = new HashMap<Integer, Integer>(); for (Map<String, Object> value : dels) { newcids.add(value.get("cid")); if ("blogid".equals(value.get("idtype"))) { int id = (Integer) value.get("id"); Integer blogNum = blognums.get(id); if (blogNum == null) { blogNum = 0; } blognums.put(id, blogNum + 1); } int authorId = (Integer) value.get("authorid"); if (allowmanage && authorId != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=" + experience + " WHERE uid=" + authorId); } } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE cid IN (" + Common.sImplode(newcids) + ")"); if (blognums.size() > 0) { Object[] nums = Common.reNum(blognums); List<Integer> num0 = (List<Integer>) nums[0]; Map<Integer, List<Integer>> num1 = (Map<Integer, List<Integer>>) nums[1]; for (Integer num : num0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("blog") + " SET replynum=replynum-" + num + " WHERE blogid IN (" + Common.sImplode(num1.get(num)) + ")"); } } return true; } public List<Map<String, Object>> deleteThreads(HttpServletRequest request, HttpServletResponse response, int supe_uid, int tagId, Object tids) throws Exception { boolean allowmanage = Common.checkPerm(request, response, "managethread"); boolean ismanager = allowmanage; boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; StringBuffer wheresql = new StringBuffer(); if (!allowmanage && tagId > 0) { Map<String, Object> mtag = Common.getMtag(request, response, supe_uid, tagId); if ((Integer) mtag.get("grade") >= 8) { allowmanage = true; managebatch = true; wheresql.append(" AND tagid=" + tagId); } } List<Map<String, Object>> delthreads = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT tid, uid FROM " + JavaCenterHome.getTableName("thread") + " WHERE tid IN(" + Common.sImplode(tids) + ") " + wheresql); for (Map<String, Object> value : threadList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { delthreads.add(value); if (!managebatch && uid != supe_uid) { delnum++; } } } if (delthreads.isEmpty() || (!managebatch && delnum > 1)) { return null; } Map<String, Integer> reward = Common.getReward("delthread", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Object> newids = new ArrayList<Object>(); for (Map<String, Object> value : delthreads) { int uid = (Integer) value.get("uid"); newids.add(value.get("tid")); value.put("isthread", 1); if (ismanager && uid != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } } String ids = Common.sImplode(newids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("thread") + " WHERE tid IN(" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("post") + " WHERE tid IN(" + ids + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN(" + ids + ") AND idtype='tid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN(" + ids + ") AND idtype='tid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("clickuser") + " WHERE id IN(" + ids + ") AND idtype='tid'"); return delthreads; } public List<Map<String, Object>> deletePosts(HttpServletRequest request, HttpServletResponse response, int supe_uid, int tagId, Object pids) throws Exception { boolean allowmanage = Common.checkPerm(request, response, "managethread"); boolean ismanager = allowmanage; boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; StringBuffer wheresql = new StringBuffer(); if (!allowmanage && tagId > 0) { Map<String, Object> mtag = Common.getMtag(request, response, supe_uid, tagId); if ((Integer) mtag.get("grade") >= 8) { allowmanage = true; managebatch = true; wheresql.append(" AND tagid=" + tagId); } } List<Map<String, Object>> posts = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> postList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("post") + " WHERE pid IN (" + Common.sImplode(pids) + ") " + wheresql + " ORDER BY isthread DESC"); for (Map<String, Object> value : postList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { posts.add(value); if (!managebatch && uid != supe_uid) { delnum++; } } } if (posts.isEmpty() || !managebatch && delnum > 1) { return null; } Map<String, Integer> reward = Common.getReward("delcomment", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Integer> tids = new ArrayList<Integer>(); List<Object> newids = new ArrayList<Object>(); List<Map<String, Object>> delPosts = new ArrayList<Map<String, Object>>(); Map<Integer, Integer> postNums = new HashMap<Integer, Integer>(); for (Map<String, Object> value : posts) { int tid = (Integer) value.get("tid"); if ((Integer) value.get("isthread") > 0) { tids.add(tid); } else { if (!tids.contains(tid)) { int uid = (Integer) value.get("uid"); newids.add(value.get("pid")); delPosts.add(value); Integer postNum = postNums.get(tid); if (postNum == null) { postNum = 0; } postNums.put(tid, postNum + 1); if (ismanager && uid != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } } } } List<Map<String, Object>> delThreads = null; if (tids.size() > 0) { delThreads = deleteThreads(request, response, supe_uid, tagId, tids); } if (delPosts.isEmpty()) { return delThreads; } Object[] nums = Common.reNum(postNums); List<Integer> pnum0 = (List<Integer>) nums[0]; Map<Integer, List<Integer>> pnum1 = (Map<Integer, List<Integer>>) nums[1]; for (Integer pnum : pnum0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("thread") + " SET replynum=replynum-" + pnum + " WHERE tid IN (" + Common.sImplode(pnum1.get(pnum)) + ")"); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("post") + " WHERE pid IN (" + Common.sImplode(newids) + ")"); return delPosts; } public boolean deleteDoings(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object ids) { boolean allowmanage = Common.checkPerm(request, response, "managedoing"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> doings = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> doingList = dataBaseService.executeQuery("SELECT doid, uid FROM " + JavaCenterHome.getTableName("doing") + " WHERE doid IN (" + Common.sImplode(ids) + ")"); for (Map<String, Object> value : doingList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { doings.add(value); if (!managebatch && uid != supe_uid) { delnum++; } } } if (doings.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("deldoing", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Object> newdoids = new ArrayList<Object>(); for (Map<String, Object> value : doings) { int uid = (Integer) value.get("uid"); newdoids.add(value.get("doid")); if (allowmanage && uid != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } } String newIds = Common.sImplode(newdoids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("doing") + " WHERE doid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("docomment") + " WHERE doid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + newIds + ") AND idtype='doid'"); return true; } public boolean deleteShares(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object sids) { boolean allowmanage = Common.checkPerm(request, response, "manageshare"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> shares = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> shareList = dataBaseService.executeQuery("SELECT sid, uid FROM " + JavaCenterHome.getTableName("share") + " WHERE sid IN (" + Common.sImplode(sids) + ")"); for (Map<String, Object> value : shareList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { shares.add(value); if (!managebatch && uid != supe_uid) { delnum++; } } } if (shares.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("delshare", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Object> newSids = new ArrayList<Object>(); for (Map<String, Object> value : shares) { int uid = (Integer) value.get("uid"); newSids.add(value.get("sid")); if (allowmanage && uid != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } } String newIds = Common.sImplode(newSids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("share") + " WHERE sid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE id IN (" + newIds + ") AND idtype='sid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + newIds + ") AND idtype='sid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + newIds + ") AND idtype='sid'"); return true; } public boolean deletePolls(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object pids) { boolean allowmanage = Common.checkPerm(request, response, "managepoll"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> polls = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> pollList = dataBaseService.executeQuery("SELECT pid, uid, credit FROM " + JavaCenterHome.getTableName("poll") + " WHERE pid IN (" + Common.sImplode(pids) + ")"); for (Map<String, Object> poll : pollList) { int uid = (Integer) poll.get("uid"); if (allowmanage || uid == supe_uid) { polls.add(poll); if (!managebatch && uid != supe_uid) { delnum++; } } } if (polls.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("delpoll", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); List<Object> newPids = new ArrayList<Object>(); for (Map<String, Object> poll : polls) { int uid = (Integer) poll.get("uid"); newPids.add(poll.get("pid")); if (allowmanage && uid != supe_uid) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } int pollCredit = (Integer) poll.get("credit"); if (pollCredit > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit+" + pollCredit + " WHERE uid=" + uid); } } String newIds = Common.sImplode(newPids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("poll") + " WHERE pid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("pollfield") + " WHERE pid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("polloption") + " WHERE pid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("polluser") + " WHERE pid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE id IN (" + newIds + ") AND idtype='pid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + newIds + ") AND idtype='pid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + newIds + ") AND idtype='pid'"); return true; } public boolean deleteTags(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object tagIds) { if (!Common.checkPerm(request, response, "managetag")) { return false; } String newIds = Common.sImplode(tagIds); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tagblog") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tag") + " WHERE tagid IN (" + newIds + ")"); return true; } public boolean deleteMtag(HttpServletRequest request, HttpServletResponse response, Object tagIds) { if (!Common.checkPerm(request, response, "manageprofield") && !Common.checkPerm(request, response, "managemtag")) { return false; } String sql = "SELECT tagid FROM " + JavaCenterHome.getTableName("mtag") + " WHERE tagid IN (" + Common.sImplode(tagIds) + ")"; List<String> newTagIds = dataBaseService.executeQuery(sql, 1); if (newTagIds.isEmpty()) { return false; } String newIds = Common.sImplode(newTagIds); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tagspace") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("mtag") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("thread") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("post") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("mtaginvite") + " WHERE tagid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + newIds + ") AND idtype='tagid'"); return true; } public boolean deleteEvents(HttpServletRequest request, HttpServletResponse response, Map<String, Object> sGlobal, Object eventIds) { int supe_uid = (Integer) sGlobal.get("supe_uid"); boolean allowmanage = Common.checkPerm(request, response, "manageevent"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> events = new ArrayList<Map<String, Object>>(); List<Map<String, Object>> eventList = dataBaseService.executeQuery("SELECT eventid, uid, title FROM " + JavaCenterHome.getTableName("event") + " WHERE eventid IN (" + Common.sImplode(eventIds) + ")"); for (Map<String, Object> value : eventList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { events.add(value); if (!managebatch && uid != supe_uid) { delnum++; } } } if (events.isEmpty() || (!managebatch && delnum > 1)) { return false; } Map<String, Integer> reward = Common.getReward("delpoll", false, 0, "", true, request, response); int credit = reward.get("credit"); int experience = reward.get("experience"); String supe_username = (String) sGlobal.get("supe_username"); int timestamp = (Integer) sGlobal.get("timestamp"); List<Object> newEvenTids = new ArrayList<Object>(); List<Integer> note_ids = new ArrayList<Integer>(); List<String> note_inserts = new ArrayList<String>(); for (Map<String, Object> value : events) { int uid = (Integer) value.get("uid"); newEvenTids.add(value.get("eventid")); if (uid != supe_uid) { if (allowmanage) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET credit=credit-" + credit + ", experience=experience-" + experience + " WHERE uid=" + uid); } note_ids.add(uid); String note_msg = Common.getMessage(request, "cp_event_set_delete", (String) value .get("title")); note_inserts.add("('" + uid + "', 'event', '1', '" + supe_uid + "', '" + supe_username + "', '" + Common.addSlashes(note_msg) + "', '" + timestamp + "')"); } } String newIds = Common.sImplode(newEvenTids); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("event") + " WHERE eventid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("eventpic") + " WHERE eventid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("eventinvite") + " WHERE eventid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("userevent") + " WHERE eventid IN (" + newIds + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE id IN (" + newIds + ") AND idtype='eventid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE id IN (" + newIds + ") AND idtype='eventid'"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id IN (" + newIds + ") AND idtype='eventid'"); if (note_inserts.size() > 0) { dataBaseService.executeUpdate("INSERT INTO " + JavaCenterHome.getTableName("notification") + " (uid, type, new, authorid, author,note, dateline) VALUES " + Common.implode(note_inserts, ",")); dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("space") + " SET notenum=notenum+1 WHERE uid IN (" + Common.sImplode(note_ids) + ")"); } return true; } public boolean deleteSpace(HttpServletRequest request, HttpServletResponse response, int uid, boolean force) throws Exception { Map<String, Object> sGlobal = (Map<String, Object>) request.getAttribute("sGlobal"); Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig"); int supe_uid = (Integer) sGlobal.get("supe_uid"); String supe_username = (String) sGlobal.get("supe_username"); int timestamp = (Integer) sGlobal.get("timestamp"); boolean allowmanage = Common.checkPerm(request, response, "managedelspace"); Map<String, Object> delspace = null; List<Map<String, Object>> spaceList = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("space") + " WHERE uid=" + uid); for (Map<String, Object> value : spaceList) { if (force || allowmanage && uid != supe_uid) { delspace = value; if (!force) { dataBaseService.executeUpdate("REPLACE INTO " + JavaCenterHome.getTableName("spacelog") + " (uid,username,opuid,opusername,flag,dateline) VALUES (" + uid + ",'" + Common.sAddSlashes(value.get("username")) + "'," + supe_uid + ",'" + supe_username + "',-1," + timestamp + ")"); } } } if (delspace == null) { return false; } Map<String, Object> member = (Map<String, Object>) sGlobal.get("member"); if(member!=null){ Map<String, Object> usergroup = Common.getCacheDate(request, response, "/data/cache/usergroup_" + member.get("groupid") + ".jsp", "usergroup" + member.get("groupid")); usergroup.put("managebatch", 1); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("space") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("spacefield") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE uid=" + uid + " OR (id=" + uid + " AND idtype='uid')"); List<String> doids = dataBaseService.executeQuery("SELECT doid FROM " + JavaCenterHome.getTableName("doing") + " WHERE uid=" + uid, 1); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("doing") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("docomment") + " WHERE doid IN (" + Common.sImplode(doids) + ") OR uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("share") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("album") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("creditlog") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("notification") + " WHERE (uid=" + uid + " OR authorid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("poke") + " WHERE (uid=" + uid + " OR fromuid=" + uid + ")"); List<String> pollIds = dataBaseService.executeQuery("SELECT pid FROM " + JavaCenterHome.getTableName("poll") + " WHERE uid=" + uid, 1); deletePolls(request, response, supe_uid, pollIds); pollIds = dataBaseService.executeQuery("SELECT pid FROM " + JavaCenterHome.getTableName("polluser") + " WHERE uid=" + uid, 1); if (pollIds.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("poll") + " SET voternum=voternum-1 WHERE pid IN (" + Common.sImplode(pollIds) + ")"); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("polluser") + " WHERE uid=" + uid); List<String> eventIds = dataBaseService.executeQuery("SELECT eventid FROM " + JavaCenterHome.getTableName("event") + " WHERE uid = " + uid, 1); deleteEvents(request, response, sGlobal, eventIds); List<Integer> ids = new ArrayList<Integer>(); List<Integer> ids1 = new ArrayList<Integer>(); List<Integer> ids2 = new ArrayList<Integer>(); List<Map<String, Object>> userEvent = dataBaseService.executeQuery("SELECT eventid,status FROM " + JavaCenterHome.getTableName("userevent") + " WHERE uid = " + uid); for (Map<String, Object> value : userEvent) { int status = (Integer) value.get("status"); int eventId = (Integer) value.get("eventid"); if (status == 1) { ids1.add(eventId); } else if (status > 1) { ids2.add(eventId); } ids.add(eventId); } if (ids1.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("event") + " SET follownum = follownum - 1 WHERE eventid IN (" + Common.sImplode(ids1) + ")"); } if (ids2.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("event") + " SET membernum = membernum - 1 WHERE eventid IN (" + Common.sImplode(ids2) + ")"); } if (ids.size() > 0) { dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("userevent") + " WHERE eventid IN (" + Common.sImplode(ids) + ") AND uid = " + uid); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("eventinvite") + " WHERE uid = " + uid + " OR touid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("eventpic") + " WHERE uid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("usermagic") + " WHERE uid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("magicinlog") + " WHERE uid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("magicuselog") + " WHERE uid = " + uid); List<Map<String, Object>> pics = dataBaseService.executeQuery("SELECT filepath,thumb,remote FROM " + JavaCenterHome.getTableName("pic") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("pic") + " WHERE uid = " + uid); List<String> blogIds = dataBaseService.executeQuery("SELECT blogid FROM " + JavaCenterHome.getTableName("blog") + " WHERE uid=" + uid, 1); for (String blogId : blogIds) { List<String> tagIds = dataBaseService.executeQuery("SELECT DISTINCT tagid FROM " + JavaCenterHome.getTableName("tagblog") + " WHERE blogid=" + blogId, 1); if (tagIds.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("tag") + " SET blognum=blognum-1 WHERE tagid IN (" + Common.sImplode(tagIds) + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tagblog") + " WHERE blogid = " + blogId); } } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blog") + " WHERE uid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blogfield") + " WHERE uid = " + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("comment") + " WHERE (uid=" + uid + " OR authorid=" + uid + " OR (id=" + uid + " AND idtype='uid'))"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("visitor") + " WHERE (uid=" + uid + " OR vuid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("usertask") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("class") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("friend") + " WHERE (uid=" + uid + " OR fuid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("member") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("clickuser") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("blacklist") + " WHERE (uid=" + uid + " OR buid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("invite") + " WHERE (uid=" + uid + " OR fuid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("mailcron") + ", " + JavaCenterHome.getTableName("mailqueue") + " USING " + JavaCenterHome.getTableName("mailcron") + ", " + JavaCenterHome.getTableName("mailqueue") + " WHERE " + JavaCenterHome.getTableName("mailcron") + ".touid=" + uid + " AND " + JavaCenterHome.getTableName("mailcron") + ".cid=" + JavaCenterHome.getTableName("mailqueue") + ".cid"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("myinvite") + " WHERE (touid=" + uid + " OR fromuid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("userapp") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("userappfield") + " WHERE uid=" + uid); List<Integer> temp = null; Map<Integer, List<Integer>> tids = new HashMap<Integer, List<Integer>>(); List<Map<String, Object>> threadList = dataBaseService.executeQuery("SELECT tid, tagid FROM " + JavaCenterHome.getTableName("thread") + " WHERE uid=" + uid); for (Map<String, Object> value : threadList) { int tid = (Integer) value.get("tid"); int tagid = (Integer) value.get("tagid"); temp = tids.get(tagid); if (temp == null) { temp = new ArrayList<Integer>(); tids.put(tagid, temp); } temp.add(tid); } Set<Integer> tagIds = tids.keySet(); for (Integer tagId : tagIds) { deleteThreads(request, response, supe_uid, tagId, tids.get(tagId)); } Map<Integer, List<Integer>> pids = new HashMap<Integer, List<Integer>>(); List<Map<String, Object>> postList = dataBaseService.executeQuery("SELECT pid, tagid FROM " + JavaCenterHome.getTableName("post") + " WHERE uid=" + uid); for (Map<String, Object> value : postList) { int pid = (Integer) value.get("pid"); int tagid = (Integer) value.get("tagid"); temp = pids.get(tagid); if (temp == null) { temp = new ArrayList<Integer>(); pids.put(tagid, temp); } temp.add(pid); } tagIds = pids.keySet(); for (Integer tagId : tagIds) { deleteThreads(request, response, supe_uid, tagId, pids.get(tagId)); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("thread") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("post") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("session") + " WHERE uid=" + uid); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("show") + " WHERE uid=" + uid); List<String> mTagIds = dataBaseService.executeQuery("SELECT DISTINCT tagid FROM " + JavaCenterHome.getTableName("tagspace") + " WHERE uid=" + uid, 1); if (mTagIds.size() > 0) { dataBaseService.executeUpdate("UPDATE " + JavaCenterHome.getTableName("mtag") + " SET membernum=membernum-1 WHERE tagid IN (" + Common.sImplode(mTagIds) + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("tagspace") + " WHERE uid=" + uid); } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("mtaginvite") + " WHERE (uid=" + uid + " OR fromuid=" + uid + ")"); dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("report") + " WHERE id=" + uid + " AND idtype='uid'"); if (!Common.empty(sConfig.get("my_status"))) { dataBaseService .executeUpdate("REPLACE INTO " + JavaCenterHome.getTableName("userlog") + " (uid,action,dateline) VALUES (" + uid + ",'delete'," + sGlobal.get("timestamp") + ")"); } deletePicFiles(request, response, pics); return true; } public boolean deleteFeeds(HttpServletRequest request, HttpServletResponse response, int supe_uid, Object feedIds) { boolean allowmanage = Common.checkPerm(request, response, "managefeed"); boolean managebatch = Common.checkPerm(request, response, "managebatch"); int delnum = 0; List<Map<String, Object>> feedList = dataBaseService .executeQuery("SELECT feedid, uid FROM " + JavaCenterHome.getTableName("feed") + " WHERE feedid IN (" + Common.sImplode(feedIds) + ")"); List<Object> newFeedIds = new ArrayList<Object>(); for (Map<String, Object> value : feedList) { int uid = (Integer) value.get("uid"); if (allowmanage || uid == supe_uid) { newFeedIds.add(value.get("feedid")); if (!managebatch && uid != supe_uid) { delnum++; } } } if (newFeedIds.isEmpty() || (!managebatch && delnum > 1)) { return false; } dataBaseService.executeUpdate("DELETE FROM " + JavaCenterHome.getTableName("feed") + " WHERE feedid IN (" + Common.sImplode(newFeedIds) + ")"); return true; } private void deletePicFiles(HttpServletRequest request, HttpServletResponse response, List<Map<String, Object>> pics) { String jchRoot = JavaCenterHome.jchRoot; String attachDir = JavaCenterHome.jchConfig.get("attachDir"); List<Map<String, Object>> remotes = new ArrayList<Map<String, Object>>(); for (Map<String, Object> pic : pics) { if ((Integer) pic.get("remote") > 0) { remotes.add(pic); } else { String filePath = jchRoot + attachDir + "/" + pic.get("filepath"); File file = new File(filePath); if (file.exists() && !file.delete()) { FileHelper.writeLog(request, "PIC", "Delete pic file '" + filePath + "' error."); } if ((Integer) pic.get("thumb") > 0) { filePath = filePath + ".thumb.jpg"; file = new File(filePath); if (file.exists() && !file.delete()) { FileHelper.writeLog(request, "PIC", "Delete pic file '" + filePath + "' error."); } } } } if (remotes.size() > 0) { Common.getCacheDate(request, response, "/data/cache/cache_setting.jsp", "globalSetting"); FtpUtil ftpUtil = new FtpUtil(); int ftpconn = ftpUtil.sftp_connect(request); for (Map<String, Object> pic : remotes) { String filePath = (String) pic.get("filepath"); if (ftpconn > 0) { if (!ftpUtil.sftp_delete(request, filePath)) { FileHelper.writeLog(request, "FTP", "Delete pic file '" + filePath + "' error."); } if ((Integer) pic.get("thumb") > 0 && !ftpUtil.sftp_delete(request, filePath + ".thumb.jpg")) { FileHelper.writeLog(request, "FTP", "Delete pic file '" + filePath + ".thumb.jpg' error."); } } else { FileHelper.writeLog(request, "FTP", "Delete pic file '" + filePath + "' error."); if ((Integer) pic.get("thumb") > 0) { FileHelper.writeLog(request, "FTP", "Delete pic file '" + filePath + ".thumb.jpg' error."); } } } ftpUtil.sftp_close(); } } private String getAlbumPic(int uid, int albumId) { List<Map<String, Object>> albumPics = dataBaseService.executeQuery("SELECT filepath, thumb FROM " + JavaCenterHome.getTableName("pic") + " WHERE albumid=" + albumId + " AND uid=" + uid + " ORDER BY thumb DESC, dateline DESC LIMIT 0,1"); if (albumPics.size() > 0) { Map<String, Object> albumPic = albumPics.get(0); return albumPic.get("filepath") + ((Integer) albumPic.get("thumb") > 0 ? ".thumb.jpg" : ""); } else { return ""; } } public boolean deletetopics(HttpServletRequest request, HttpServletResponse response, Map<String, Object> sGlobal, Object ids) { List<Integer> newids = null; boolean managetopic = Common.checkPerm(request, response, "managetopic"); List<Map<String, Object>> query = dataBaseService.executeQuery("SELECT * FROM " + JavaCenterHome.getTableName("topic") + " WHERE topicid IN (" + Common.sImplode(ids) + ")"); for (Map<String, Object> value : query) { if (managetopic || value.get("uid").equals(sGlobal.get("supe_uid"))) { if (newids == null) { newids = new ArrayList<Integer>(); } newids.add((Integer) value.get("topicid")); } } if (newids != null) { dataBaseService.execute("DELETE FROM " + JavaCenterHome.getTableName("topic") + " WHERE topicid IN (" + Common.sImplode(newids) + ")"); return true; } else { return false; } } }