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<BPushTask> list = bPushTaskService.list(query, page, limit);
|
List<BPushTaskVO> 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<BPushTaskVO.OperateState> operateStateList = new ArrayList<>();
|
List<BPushTaskVO.Operator> 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<Date>() {
|
@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<Date>() {
|
@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<BPushTaskExcuteResult> list = pushExcuteResultManager.listByTaskId(task.getId());
|
Gson gson = new GsonBuilder().registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
|
@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<PushPlatform>() {
|
@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));
|
}
|
|
|
}
|