package cn.jcenterhome.web.action.admin;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
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.FileUploadUtil;
import cn.jcenterhome.util.JavaCenterHome;
import cn.jcenterhome.web.action.BaseAction;
public class GiftAction extends BaseAction {
@SuppressWarnings("unchecked")
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
if (!Common.checkPerm(request, response, "managegift")) {
return cpMessage(request, mapping, "cp_no_authority_management_operation");
}
String op = request.getParameter("op");
try {
FileUploadUtil req = new FileUploadUtil();
req.parse(request, JavaCenterHome.JCH_CHARSET);
if(submitCheck(request, req.getParameter("giftsubmit"), req.getParameter("formhash"))) {
int giftId = Common.intval(req.getParameter("giftid"));
int price = Common.intval(req.getParameter("price"));
String giftName = req.getParameter("giftname");
String tips = req.getParameter("tips");
String typeId = req.getParameter("category");
String iconPath = null;
if(Common.empty(giftName)){
return cpMessage(request, mapping, "cp_gift_name_can_not_be_empty");
}
if("defGift".equals(typeId)) {
iconPath = "image/gift/";
if(price > 0)
price = 0;
} else if("advGift".equals(typeId)) {
iconPath = "image/gift/advanced/";
if(price > 0)
price = 0;
} else {
if(price <= 0)
return showMessage(request, response, "gift_price_is_null");
iconPath = "image/gift/fees/";
typeId = req.getParameter("feecate");
}
Map<String, Object> setData = new HashMap<String, Object>();
FileItem item = req.getFileItem("icon");
int timestamp = Common.time();
if(item.getName().length() != 0) {
String iconExt = Common.fileext(item.getName()).toLowerCase();
String icon = iconPath+System.currentTimeMillis()+"_"
+Common.getRandStr(6, false)+"."+iconExt;
FileUploadUtil.write2file(item, new File(JavaCenterHome.jchRoot+icon));
setData.put("icon", icon);
}
setData.put("giftname", giftName);
setData.put("tips", tips);
setData.put("typeid", typeId);
setData.put("addtime", timestamp);
setData.put("price", price);
if(giftId > 0) {
Map<String, Object> whereData = new HashMap<String, Object>();
whereData.put("giftid", giftId);
dataBaseService.updateTable("gift", setData, whereData);
} else {
if(setData.get("icon") == null) {
return showMessage(request, response, "gift_icon_is_null");
}
setData.put("buycount", 0);
giftId = dataBaseService.insertTable("gift", setData, true, false);
}
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=gift", 1);
} else if(submitCheck(request, "giftdeletesubmit")) {
String giftId = request.getParameter("giftid");
String used = request.getParameter("used");
if(used != null) {
dataBaseService.executeUpdate("DELETE FROM "+JavaCenterHome.getTableName("giftreceived")
+" WHERE giftid='"+giftId+"'");
}
int ret = dataBaseService.executeUpdate("DELETE FROM "+JavaCenterHome.getTableName("gift")
+" WHERE giftid='"+giftId+"'");
if(ret != 0) {
String typeId = request.getParameter("typeid");
String icon = request.getParameter("icon");
File giftIcon = new File(JavaCenterHome.jchRoot+icon);
if(giftIcon.exists()) {
giftIcon.delete();
}
}
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=gift", 1);
} else if(submitCheck(request, "categorysubmit")) {
String[] typeIds = request.getParameterValues("typeid[]");
String[] typeNames = request.getParameterValues("typename[]");
String[] orders = request.getParameterValues("order[]");
for(int i = 0; i < typeIds.length; i++) {
Map<String, Object> setData = new HashMap<String, Object>();
Map<String, Object> whereData = new HashMap<String, Object>();
setData.put("typeid", typeIds[i]);
setData.put("typename", typeNames[i]);
setData.put("order", orders[i]);
whereData.put("typeid", typeIds[i]);
dataBaseService.updateTable("gifttype", setData, whereData);
}
List<String> insDatas = new ArrayList<String>();
for(int i = typeIds.length; i < typeNames.length; i++) {
if(typeNames[i].length() != 0) {
String data = "('"+Common.getRandStr(6, false)+i+"', '"+typeNames[i]+"', '"+Common.intval(orders[i])+"', '1')";
insDatas.add(data);
}
}
if(insDatas.size() > 0) {
dataBaseService.executeUpdate("INSERT INTO "+JavaCenterHome.getTableName("gifttype")
+" (typeid, typename, `order`, fee) VALUES "+Common.implode(insDatas, ","));
}
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=gift&view=category", 1);
} else if(submitCheck(request, "categorydeletesubmit")) {
String typeId = request.getParameter("typeid");
String used = request.getParameter("used");
if(used != null) {
List<String> giftIds = dataBaseService.executeQuery("SELECT giftid FROM "+JavaCenterHome.getTableName("gift")+" WHERE typeid='"+typeId+"'", 1);
dataBaseService.executeUpdate("DELETE FROM "+JavaCenterHome.getTableName("giftreceived")+" WHERE giftid IN ("+Common.sImplode(giftIds)+")");
dataBaseService.executeUpdate("DELETE FROM "+JavaCenterHome.getTableName("gift")+" WHERE typeid='"+typeId+"'");
}
dataBaseService.executeUpdate("DELETE FROM "+JavaCenterHome.getTableName("gifttype")+" WHERE typeid='"+typeId+"'");
return cpMessage(request, mapping, "do_success", "admincp.jsp?ac=gift&view=category", 1);
}
} catch(Exception e) {
return showMessage(request, response, e.getMessage());
}
List<Map<String, Object>> categories = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gifttype")+" ORDER BY fee, `order` ASC");
Map<String, Map> categoryMap = new LinkedHashMap<String, Map>();
for(Map<String, Object> cate : categories) {
categoryMap.put((String) cate.get("typeid"), cate);
}
if("edit".equals(op) || "delete".equals(op)) {
String typeId = request.getParameter("typeid");
if(typeId != null) {
List<Map<String, Object>> types = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gifttype")+" WHERE typeid='"+typeId+"'");
if(types.size() > 0) {
List<String> count = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("gift")+" WHERE typeid='"+typeId+"'", 1);
if(Common.intval(count.get(0)) > 0) {
request.setAttribute("used", true);
}
request.setAttribute("type", types.get(0));
}
} else {
String giftId = request.getParameter("giftid");
List<Map<String, Object>> gifts = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gift")+" WHERE giftid='"+giftId+"'");
if(gifts.size() > 0) {
request.setAttribute("gift", gifts.get(0));
}
if("delete".equals(op)) {
List<String> count = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("giftreceived")+" WHERE giftid="+giftId, 1);
if(Common.intval(count.get(0)) > 0) {
request.setAttribute("used", true);
}
}
}
} else {
if("category".equals(request.getParameter("view"))) {
request.setAttribute("categorysize", categories.size());
request.setAttribute("actives_category", " class=\"active\"");
} else {
int perpage = Common.intval(request.getParameter("perpage"));
if (!Common.in_array(new Integer[] { 20, 50, 100, 1000 }, perpage)) {
perpage = 20;
}
int page = Math.max(Common.intval(request.getParameter("page")), 1);
int start = (page - 1) * perpage;
Map<String, Object> sConfig = (Map<String, Object>) request.getAttribute("sConfig");
int maxPage = (Integer) sConfig.get("maxpage");
String result = Common.ckStart(start, perpage, maxPage);
if (result != null) {
return showMessage(request, response, result);
}
int count = 0;
List<String> countStr = dataBaseService.executeQuery("SELECT COUNT(*) FROM "+JavaCenterHome.getTableName("gift"), 1);
if(countStr.size() > 0) {
count = Common.intval(countStr.get(0));
}
List<Map<String, Object>> gifts = null;
if(count > 0) {
gifts = dataBaseService.executeQuery("SELECT * FROM "+JavaCenterHome.getTableName("gift")+" ORDER BY addtime DESC LIMIT "+start+","+perpage);
request.setAttribute("gifts", gifts);
}
request.setAttribute("actives_gift", " class=\"active\"");
request.setAttribute("multi", Common.multi(request, count, perpage, page, maxPage, "admincp.jsp?ac=gift", null, null));
}
}
request.setAttribute("categorymap", categoryMap);
return mapping.findForward("gift");
}
}