package cn.jcenterhome.web.action.admin; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.TreeMap; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import cn.jcenterhome.util.Common; import cn.jcenterhome.util.JavaCenterHome; import cn.jcenterhome.util.Serializer; import cn.jcenterhome.web.action.BaseAction; public class MagicAction extends BaseAction { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { if (!Common.checkPerm(request, response, "managemagic")) { return cpMessage(request, mapping, "cp_no_authority_management_operation"); } String view = request.getParameter("view"); view = "disabled".equals(view) ? view : "enabled"; request.setAttribute("view", view); request.setAttribute("actives_" + view, " class='active'"); try { if (submitCheck(request, "editsubmit")) { String custom = null; String customName = request.getParameter("customName"); if (customName != null) { String customValue = request.getParameter("custom_" + customName); if (!Common.empty(customValue)) { Map<String, String> customs = new HashMap<String, String>(); customs.put(customName, customValue); custom = Serializer.serialize(customs); } } String description = Common.getStr(request.getParameter("description"), 0, true, true, false, 0, 0, request, response); StringBuilder setSql = new StringBuilder(); setSql.append("description='" + description + "',"); setSql.append("charge='" + Common.range(request.getParameter("charge"), 65535, 0) + "',"); setSql.append("forbiddengid='" + Common.implode(request.getParameterValues("forbiddengid"), ",") + "',"); setSql.append("experience='" + Common.range(request.getParameter("experience"), 65535, 0) + "',"); setSql .append("provideperoid='" + Common.intval(request.getParameter("provideperoid")) + "',"); setSql.append("providecount='" + Common.range(request.getParameter("providecount"), 65535, 0) + "',"); setSql.append("useperoid='" + Common.intval(request.getParameter("useperoid")) + "',"); setSql.append("usecount='" + Common.range(request.getParameter("usecount"), 65535, 0) + "',"); setSql.append("displayorder='" + Common.intval(request.getParameter("displayorder")) + "',"); setSql.append("close='" + (Common.intval(request.getParameter("close")) != 0 ? 1 : 0) + "',"); setSql.append("custom='" + (custom == null ? "" : custom) + "'"); String mid = request.getParameter("mid"); String sql = "UPDATE " + JavaCenterHome.getTableName("magic") + " SET " + setSql + " WHERE mid='" + mid + "'"; dataBaseService.executeUpdate(sql); int storage = Common.intval(request.getParameter("storage")); sql = "UPDATE " + JavaCenterHome.getTableName("magicstore") + " SET storage='" + storage + "' WHERE mid='" + mid + "'"; dataBaseService.executeUpdate(sql); cacheService.magic_cache(); return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=magic&view=" + view, 2); } else if (submitCheck(request, "ordersubmit")) { String[] mids = request.getParameterValues("mid"); if (mids != null) { Map<String, Integer> orders = new HashMap<String, Integer>(); Map<String, Integer> charges = new HashMap<String, Integer>(); String sql = "SELECT mid, charge, displayorder FROM " + JavaCenterHome.getTableName("magic") + " WHERE close=0"; List<Map<String, Object>> magics = dataBaseService.executeQuery(sql); for (Map<String, Object> magic : magics) { orders.put((String) magic.get("mid"), (Integer) magic.get("displayorder")); charges.put((String) magic.get("mid"), (Integer) magic.get("charge")); } int orderVal = 0, chargeVal = 0; for (String mid : mids) { orderVal = (int) Common.range(request.getParameter("displayorder_" + mid), 65535, 0); chargeVal = (int) Common.range(request.getParameter("charge_" + mid), 65535, 0); if (orderVal != orders.get(mid) || chargeVal != charges.get(mid)) { sql = "UPDATE " + JavaCenterHome.getTableName("magic") + " SET displayorder=" + orderVal + ",charge=" + chargeVal + " WHERE mid='" + mid + "'"; dataBaseService.executeUpdate(sql); } } } return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=magic&view=" + view, 2); } } catch (Exception e) { return showMessage(request, response, e.getMessage()); } if ("edit".equals(request.getParameter("op"))) { String mid = request.getParameter("mid"); String sql = "SELECT m.*,ms.storage FROM " + JavaCenterHome.getTableName("magic") + " m LEFT JOIN " + JavaCenterHome.getTableName("magicstore") + " ms ON m.mid=ms.mid WHERE m.mid='" + mid + "'"; List<Map<String, Object>> magics = dataBaseService.executeQuery(sql); if (magics.isEmpty()) { return cpMessage(request, mapping, "magic_does_not_exist"); } Map<String, Object> magic = magics.get(0); sql = "SELECT gid,grouptitle,system FROM " + JavaCenterHome.getTableName("usergroup"); List<Map<String, Object>> query = dataBaseService.executeQuery(sql); Map<Object, Map<Integer, String>> userGroups = new LinkedHashMap<Object, Map<Integer, String>>(); userGroups.put(-1, null); userGroups.put(1, null); userGroups.put(0, null); for (Map<String, Object> value : query) { Map<Integer, String> userGroup = userGroups.get(value.get("system")); if (userGroup == null) { userGroup = new HashMap<Integer, String>(); userGroups.put(value.get("system"), userGroup); } userGroup.put((Integer) value.get("gid"), (String) value.get("grouptitle")); } request.setAttribute("userGroups", userGroups); magic.put("forbiddengid", ((String) magic.get("forbiddengid")).split(",")); magic.put("custom", Serializer.unserialize((String) magic.get("custom"), false)); request.setAttribute("magic", magic); request.setAttribute("custom", getCustom(mid)); } else { int close = "disabled".equals(view) ? 1 : 0; String sql = "SELECT mid,name,description,charge,displayorder FROM " + JavaCenterHome.getTableName("magic") + " WHERE close=" + close + " ORDER BY displayorder"; List<Map<String, Object>> magics = dataBaseService.executeQuery(sql); request.setAttribute("magics", magics); } return mapping.findForward("magic"); } private Map<String, Object> getCustom(String mid) { Map<String, Object> custom = new HashMap<String, Object>(); Map<Integer, String> option = new TreeMap<Integer, String>(); if ("invisible".equals(mid)) { option.put(86400, "24Сʱ"); option.put(259200, "3��"); option.put(432000, "5��"); option.put(604800, "7��"); initCustom(custom, "����ʱ��", "effectivetime", "24Сʱ", option); } else if ("superstar".equals(mid)) { option.put(86400, "24Сʱ"); option.put(259200, "3��"); option.put(432000, "5��"); option.put(604800, "7��"); initCustom(custom, "����ʱ��", "effectivetime", "7��", option); } else if ("friendnum".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); option.put(100, "100"); initCustom(custom, "���Ӻ�����", "addnum", "10", option); } else if ("attachsize".equals(mid)) { option.put(5, "5M"); option.put(10, "10M"); option.put(20, "20M"); option.put(50, "50M"); option.put(100, "100M"); initCustom(custom, "��������", "addsize", "10M", option); } else if ("visit".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); initCustom(custom, "���ʺ�����", "maxvisit", "10", option); } else if ("gift".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); option.put(100, "100"); option.put(999, "����"); initCustom(custom, "ÿ�ݻ������ֵ", "maxchunk", "20", option); } else if ("viewmagic".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); option.put(999, "����"); initCustom(custom, "���鿴��", "maxview", "10", option); } else if ("viewvisitor".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); initCustom(custom, "���鿴��", "maxview", "10", option); } else if ("detector".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); initCustom(custom, "���̽����", "maxdetect", "10", option); } else if ("call".equals(mid)) { option.put(5, "5"); option.put(10, "10"); option.put(20, "20"); option.put(50, "50"); initCustom(custom, "��������", "maxcall", "10", option); } return custom; } private void initCustom(Map<String, Object> custom, String title, String name, String desc, Map<Integer, String> option) { custom.put("title", title); custom.put("name", name); custom.put("desc", desc); custom.put("option", option); } }