package com.ks.push.controller.admin; import com.google.gson.*; import com.ks.push.dao.BPushAppInfoDao; import com.ks.push.exception.BPushTaskException; import com.ks.push.manager.PushExcuteResultManager; import com.ks.push.pojo.DO.BPushAppInfo; import com.ks.push.pojo.DO.BPushTask; import com.ks.push.pojo.DO.BPushTaskExcuteResult; import com.ks.push.pojo.DO.PushPlatform; import com.ks.push.pojo.Query.BPushTaskQuery; import com.ks.push.service.BPushTaskService; import com.ks.push.utils.PushTaskStateUtil; import com.ks.push.vo.BPushTaskFilterVO; import com.ks.push.vo.BPushTaskVO; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @Controller @RequestMapping("/admin/api/pushtask") public class AdminPushTaskController { @Resource private BPushTaskService bPushTaskService; @Resource private PushExcuteResultManager pushExcuteResultManager; @ResponseBody @RequestMapping("list") public String list(String appCode, Integer state, String key, int page, int limit) { BPushTaskQuery query = new BPushTaskQuery(); query.appCode = appCode; query.state = state; query.messageTitle = key; query.sortList= Arrays.asList(new Sort.Order[]{new Sort.Order(Sort.Direction.DESC,"createTime")}); List list = bPushTaskService.list(query, page, limit); List voList = new ArrayList<>(); for (BPushTask task : list) { BPushTaskVO vo = new BPushTaskVO(); vo.setAppCode(task.getAppCode()); vo.setTitle(task.getMessage().getTitle()); vo.setContent(task.getMessage().getContent()); vo.setState(PushTaskStateUtil.getStateDesc(task.getState())); vo.setStateDesc(task.getStateDesc()); vo.setTaskId(task.getId()); vo.setCreateTime(task.getCreateTime()); vo.setUpdateTime(task.getUpdateTime()); List operateStateList = new ArrayList<>(); List operatorlist = PushTaskStateUtil.getTaskOperates(task.getState()); for (BPushTaskVO.Operator operator : BPushTaskVO.Operator.values()) { BPushTaskVO.OperateState os = new BPushTaskVO.OperateState(); os.setName(operator.getName()); os.setOperator(operator); os.setValid(operatorlist.contains(operator)); operateStateList.add(os); } vo.setOperateStates(operateStateList); voList.add(vo); } long count = bPushTaskService.count(query); JSONObject data = new JSONObject(); Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer() { @Override public JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { return date == null ? new JsonPrimitive("") : new JsonPrimitive(TimeUtil.getGernalTime(date.getTime(), "yyyy.MM.dd HH:mm")); } }).create(); data.put("list", gson.toJson(voList)); data.put("count", count); return JsonUtil.loadTrueResult(data); } @ResponseBody @RequestMapping("updateState") public String updateState(String id, BPushTaskVO.Operator operator) { BPushTask task = bPushTaskService.getTask(id); if (task == null) { return JsonUtil.loadFalseResult("推送任务不存在"); } try { if (operator == BPushTaskVO.Operator.pausePush) { bPushTaskService.pausePush(id); } else if (operator == BPushTaskVO.Operator.cancelPush) { bPushTaskService.cancelPush(id); } else if (operator == BPushTaskVO.Operator.startPush) { bPushTaskService.startPush(id); } else if (operator == BPushTaskVO.Operator.reStartPush) { bPushTaskService.reStartPush(id); } } catch (BPushTaskException e) { e.printStackTrace(); return JsonUtil.loadFalseResult(e.getMessage()); } catch (Exception e) { e.printStackTrace(); return JsonUtil.loadFalseResult(e.getMessage()); } return JsonUtil.loadTrueResult(""); } /** * 获取推送条件 * * @param id * @return */ @ResponseBody @RequestMapping("getPushFilter") public String getPushFilter(String id) { BPushTask task = bPushTaskService.getTask(id); if (task == null) { return JsonUtil.loadFalseResult("推送任务不存在"); } Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer() { @Override public JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { return date == null ? new JsonPrimitive("") : new JsonPrimitive(TimeUtil.getGernalTime(date.getTime(), "yyyy.MM.dd HH:mm")); } }).create(); BPushTaskFilterVO vo = BPushTaskFilterVO.create(task.getFilter()); return JsonUtil.loadTrueResult(gson.toJson(vo)); } /** * 获取推送结果 * * @param id * @return */ @ResponseBody @RequestMapping("getPushResult") public String getPushResult(String id) { BPushTask task = bPushTaskService.getTask(id); if (task == null) { return JsonUtil.loadFalseResult("推送任务不存在"); } List list = pushExcuteResultManager.listByTaskId(task.getId()); Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer() { @Override public JsonElement serialize(Date date, Type type, JsonSerializationContext jsonSerializationContext) { return date == null ? new JsonPrimitive("") : new JsonPrimitive(TimeUtil.getGernalTime(date.getTime(), "yyyy.MM.dd HH:mm")); } }).registerTypeAdapter(PushPlatform.class, new JsonSerializer() { @Override public JsonElement serialize(PushPlatform platform, Type type, JsonSerializationContext jsonSerializationContext) { return platform == null ? new JsonPrimitive("") : new JsonPrimitive(platform.getName()); } }).create(); return JsonUtil.loadTrueResult(gson.toJson(list)); } }