package com.ks.push.controller.admin; import com.google.gson.*; import com.ks.push.dao.BPushAppInfoDao; import com.ks.push.dao.BPushPlatformAppInfoDao; import com.ks.push.manager.BPushPlatformAppInfoManager; import com.ks.push.pojo.DO.BPushAppInfo; import com.ks.push.pojo.DO.BPushPlatformAppInfo; import com.ks.push.pojo.DO.PushPlatform; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.RequestBody; 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 javax.validation.Valid; import java.lang.reflect.Type; import java.util.Date; import java.util.List; @Controller @RequestMapping("/admin/api/pushplatform-app") public class AdminPushPlatformAppController { @Resource private BPushPlatformAppInfoManager bPushPlatformAppInfoManager; @Resource private BPushPlatformAppInfoDao bPushPlatformAppInfoDao; @ResponseBody @RequestMapping("list") public String list(String key, String appCode, int page, int limit) { Query query = new Query(); query.skip((page - 1) * limit); query.limit(limit); if (appCode != null) { query.addCriteria(Criteria.where("appCode").is(appCode)); } List list = bPushPlatformAppInfoDao.findList(query); long count = bPushPlatformAppInfoDao.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")); } }).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(); data.put("list", gson.toJson(list)); data.put("count", count); return JsonUtil.loadTrueResult(data); } @ResponseBody @RequestMapping("delete") public String delete(String ids) { JSONArray array = JSONArray.fromObject(ids); for (int i = 0; i < array.size(); i++) { Query query = new Query(); query.addCriteria(Criteria.where("id").is(array.optString(i))); bPushPlatformAppInfoDao.delete(query); } return JsonUtil.loadTrueResult(""); } @ResponseBody @RequestMapping("update") public String update(@RequestBody BPushPlatformAppInfo app, HttpSession session) { if (app.getId() == null) { return JsonUtil.loadFalseResult("ID不能为空"); } bPushPlatformAppInfoDao.updateSelective(app); return JsonUtil.loadTrueResult(""); } @ResponseBody @RequestMapping("add") public String add(@RequestBody @Valid BPushPlatformAppInfo app, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return JsonUtil.loadFalseResult(bindingResult.getFieldError().getDefaultMessage()); } if (app.getAppCode() == null) { return JsonUtil.loadFalseResult("appCode不能为空"); } BPushPlatformAppInfo appInfo = bPushPlatformAppInfoManager.selectByAppCodeAndPlatform(app.getAppCode(), app.getPlatform()); if (appInfo != null) { return JsonUtil.loadFalseResult("推送平台信息已存在"); } if (app.getCreateTime() == null) { app.setCreateTime(new Date()); } app.setId(BPushPlatformAppInfo.createId(app.getAppCode(), app.getPlatform())); bPushPlatformAppInfoDao.save(app); return JsonUtil.loadTrueResult(""); } }