package com.yeshi.fanli.controller.admin; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.bus.clazz.GoodsSubClass; import com.yeshi.fanli.service.inter.goods.GoodsSubClassService; import com.yeshi.fanli.service.inter.lable.LabelClassService; import com.yeshi.fanli.util.StringUtil; @Controller @RequestMapping("admin/new/api/v1/goodsSubClass") public class GoodsSubClassAdminController { @Resource private GoodsSubClassService goodsSubClassService; @Resource private LabelClassService labelClassService; /** * 添加类别 * * @param callback * @param goodsSubClass * @param request * @param out */ @RequestMapping(value = "saveAdd", method = RequestMethod.POST) public void saveAdd(String callback, Long pid, Integer type, GoodsSubClass goodsSubClass, HttpServletRequest request, PrintWriter out) { try { String name = goodsSubClass.getName(); if (StringUtil.isNullOrEmpty(name)) { out.print(JsonUtil.loadFalseResult("类别名称不能为空")); return; } if (pid == null) { out.print(JsonUtil.loadFalseResult("上级id为空")); return; } if (type == null) { out.print(JsonUtil.loadFalseResult("等级不能为空")); return; } if (type > 5) { out.print(JsonUtil.loadFalseResult("等级不能超过五级")); return; } String key = goodsSubClass.getKey(); if (StringUtil.isNullOrEmpty(key)) { goodsSubClass.setKey(name.trim()); } // 默认停用 goodsSubClass.setState(0); if (request instanceof MultipartHttpServletRequest) { int result; List files = ((MultipartHttpServletRequest) request).getFiles("file"); goodsSubClass.setAndroidClick(0L); goodsSubClass.setIosClick(0L); goodsSubClass.setLevel(type); goodsSubClass.setCreatetime(new Date()); goodsSubClass.setUpdatetime(new Date()); // 搜索条件:有券、在售价20-200、牛皮癣轻微 goodsSubClass.setSearchJson("{\"quan\":1,\"endPrice\":220,\"includeGoodRate\":true}"); if (type == 2) { goodsSubClass.setRootClass(new GoodsClass(pid)); int weight = goodsSubClassService.getMaxWeightByRootId(pid); goodsSubClass.setWeight(weight + 1); } else { goodsSubClass.setParent(new GoodsSubClass(pid)); int weight = goodsSubClassService.getMaxWeightByPid(pid); goodsSubClass.setWeight(weight + 1); } if (files != null && files.size() > 0) { // 图片文件上传 result = goodsSubClassService.save(goodsSubClass, files.get(0)); } else { // 无图保存 result = goodsSubClassService.save(goodsSubClass, null); } if (result == 1) { out.print(JsonUtil.loadTrueResult("保存成功")); } else { out.print(JsonUtil.loadFalseResult("保存失败")); } } else { out.print(JsonUtil.loadFalseResult("请传递正确的参数")); } } catch (Exception e) { out.print(JsonUtil.loadFalseResult("操作异常")); e.printStackTrace(); } } /** * 保存修改信息 * * @param callback * @param goodsSubClass * @param out */ @RequestMapping(value = "saveModify") public void saveModify(String callback, GoodsSubClass goodsSubClass, PrintWriter out) { try { Long id = goodsSubClass.getId(); if (id == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该类别")); return; } GoodsSubClass resultObj = goodsSubClassService.selectByPrimaryKey(id); if (resultObj == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该类别")); return; } GoodsSubClass subClass = new GoodsSubClass(); String name = goodsSubClass.getName(); if (!StringUtil.isNullOrEmpty(name)) { subClass.setName(name); } // 关键词可以为空 subClass.setKey(goodsSubClass.getKey()); subClass.setId(id); subClass.setUpdatetime(new Date()); subClass.setAndroidClick(resultObj.getAndroidClick()); subClass.setIosClick(resultObj.getIosClick()); goodsSubClassService.updateByPrimaryKeySelective(subClass); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改成功")); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("修改失败")); e.printStackTrace(); } } /** * 批量删除 * * @param callback * @param ids * @param out */ @RequestMapping(value = "deleteBatch") public void deleteBatch(String callback, String ids, PrintWriter out) { Gson gson = new Gson(); try { List recordIds = gson.fromJson(ids, new TypeToken>() {}.getType()); if (recordIds == null || recordIds.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("请选择需删除数据"))); } else { goodsSubClassService.deleteByPrimaryKeyBatch(recordIds); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("删除成功"))); } } catch (Exception e) { // TODO Auto-generated catch block out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("操作异常"))); e.printStackTrace(); } } /** * 上传/修改 图片 * * @param callback * @param file * @param request * @param out * @param response */ @RequestMapping(value = "uploadPicture") public void uploadPicture(Long id, @RequestParam("file") CommonsMultipartFile file, PrintWriter out) { if (file == null) { out.print(JsonUtil.loadFalseResult("图片文件不能为空")); return; } try { GoodsSubClass goodsSubClass = goodsSubClassService.selectByPrimaryKey(id); if (goodsSubClass == null) { out.print(JsonUtil.loadFalseResult("该类别不存在或已被删除")); return; } int result = goodsSubClassService.uploadPicture(goodsSubClass, file); if (result == 1) { out.print(JsonUtil.loadTrueResult("上传成功")); } else { out.print(JsonUtil.loadFalseResult("上传失败")); } } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadFalseResult("操作异常")); } } /** * 删除图片 * * @param callback * @param file * @param out * @param response */ @RequestMapping(value = "removePicture") public void removePicture(String callback, Long id, PrintWriter out) { try { GoodsSubClass goodsSubClass = goodsSubClassService.selectByPrimaryKey(id); if (goodsSubClass == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("该类别不存在或已被删除"))); return; } int result = goodsSubClassService.removePicture(goodsSubClass); if (result == -2) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("该类别无图片可供操作"))); } else if (result == 1) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("图片删除成功"))); } else { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("图片删除成功,数据更新失败"))); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("操作异常"))); } } /** * 查询一级下的所有二级类别 * * @param callback * @param rootId * @param out */ @RequestMapping(value = "querySub") public void querySub(String callback, Long pid, Integer type,PrintWriter out) { try { if (pid == null) { out.print(JsonUtil.loadFalseResult("上级id为空")); return; } if (type == null) { out.print(JsonUtil.loadFalseResult("等级不能为空")); return; } Integer state = null; List goodsSubClassList = new ArrayList(); if (type == 2) { goodsSubClassList = goodsSubClassService.queryByRootId(pid, state); } else { goodsSubClassList = goodsSubClassService.queryByPid(pid, state); } if (goodsSubClassList == null || goodsSubClassList.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无数据"))); return; } for (GoodsSubClass goodsSubClass:goodsSubClassList) { Long iosClick = goodsSubClass.getIosClick(); Long androidClick = goodsSubClass.getAndroidClick(); if (iosClick != null && androidClick != null) { goodsSubClass.setCountClick(iosClick+androidClick); } else if(androidClick != null) { goodsSubClass.setCountClick(androidClick); } else if(iosClick != null) { goodsSubClass.setCountClick(iosClick); } else{ goodsSubClass.setCountClick(0l); } int countlabel = labelClassService.getCountQueryBySubClassId(goodsSubClass.getId()); goodsSubClass.setCountlabel(countlabel); } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create(); JSONObject data = new JSONObject(); data.put("subClassList", gson.toJson(goodsSubClassList)); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("操作异常"))); } } /** * 查找二级下的其他级分类 * * @param callback * @param out */ @RequestMapping(value = "queryOverSecond") public void queryOverSecond(String callback, Long pid, PrintWriter out) { try { Integer state = null; List goodsSubClassList = goodsSubClassService.queryByPid(pid, state); if (goodsSubClassList == null || goodsSubClassList.size() == 0) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("暂无数据"))); return; } GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.serializeNulls(); // 重点 Gson gson = gsonBuilder.setDateFormat("yyyy/MM/dd HH:mm:ss").create(); JSONObject data = new JSONObject(); data.put("subClassList", gson.toJson(goodsSubClassList)); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } catch (Exception e) { e.printStackTrace(); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("操作异常"))); } } /** * 修改排序 * * @param callback * @param goodsClass * @param out */ @RequestMapping(value = "saveOrder") public void saveOrder(String callback, Long id, Integer type, Integer moveType, PrintWriter out) { try { if (moveType == null || (!moveType.equals(1) && !moveType.equals(-1))) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("传递的类型不正确")); return; } GoodsSubClass resultObj = goodsSubClassService.selectByPrimaryKey(id); if (resultObj == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该类别")); return; } int resultWeight = resultObj.getWeight(); List list = null; if (type == 2) { GoodsClass rootClass = resultObj.getRootClass(); list= goodsSubClassService.queryByRootIdAndWeight(rootClass.getId(), moveType, resultWeight); } else { GoodsSubClass parent = resultObj.getParent(); list = goodsSubClassService.queryByPidAndWeight(parent.getId(), moveType, resultWeight); } if (list != null && list.size() > 0) { GoodsSubClass changeObj = list.get(0); // 交换排序序号 resultObj.setWeight(changeObj.getWeight()); changeObj.setWeight(resultWeight); changeObj.setUpdatetime(new Date()); goodsSubClassService.updateByPrimaryKey(changeObj); } resultObj.setUpdatetime(new Date()); goodsSubClassService.updateByPrimaryKey(resultObj); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功")); } catch (Exception e) { e.printStackTrace(); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); } } /** * 修改排序 * * @param callback * @param goodsClass * @param out */ @RequestMapping(value = "saveState") public void saveState(String callback, Long id, PrintWriter out) { try { if (id == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该类别")); return; } GoodsSubClass resultObj = goodsSubClassService.selectByPrimaryKey(id); if (resultObj == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("不存在该类别")); return; } Integer state = resultObj.getState(); if (state.equals(1) || state == 1) { state = 0; } else { state = 1; } resultObj.setState(state); resultObj.setUpdatetime(new Date()); goodsSubClassService.updateByPrimaryKeySelective(resultObj); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(state)); } catch (Exception e) { e.printStackTrace(); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("操作异常")); } } }