/* * * TimeRuleController * */ package com.hboxs.control.admin; import com.alibaba.fastjson.JSONArray; import com.gexin.fastjson.JSON; import com.hboxs.ViewObject.TimeRuleVo; import com.hboxs.common.Filter; import com.hboxs.common.Message; import com.hboxs.common.Pageable; import com.hboxs.common.utils.PushUtils; import com.hboxs.entity.AD; import com.hboxs.entity.Equipment; import com.hboxs.entity.TimeRule; import com.hboxs.service.ADService; import com.hboxs.service.EquipmentService; import com.hboxs.service.TimeRuleService; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import javax.annotation.Resource; import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.List; /** * Controller - 广告时间规则 */ @Controller("adminTimeRuleController") @RequestMapping("/asl-admin/timeRule") public class TimeRuleController extends BaseController { @Resource(name = "timeRuleServiceImpl") private TimeRuleService timeRuleService; @Resource(name = "aDServiceImpl") private ADService aDService; @Resource(name = "equipmentServiceImpl") private EquipmentService equipmentService; private static final String[] times = {"0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8", "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20" , "20-21", "21-22", "22-23", "23-24"}; /** * 添加 */ @RequestMapping(value = "/add", method = RequestMethod.GET) public String add(ModelMap model, HttpSession session) { List list = new ArrayList<>(); List adList = aDService.findAll(); for (int i = 0; i < times.length; i++) { TimeRuleVo timeRuleVo = new TimeRuleVo(); timeRuleVo.setName(""); timeRuleVo.setTime(times[i]); timeRuleVo.setAds(adList); list.add(timeRuleVo); } model.addAttribute("list", list); return "/admin/timeRule/add"; } /** * 保存 */ @RequestMapping(value = "/save", method = RequestMethod.POST) @ResponseBody public Message save(@RequestBody List timeRuleVos, RedirectAttributes redirectAttributes) { //获取广告名称 String name = timeRuleVos.get(0).getName(); String rule = JSONArray.toJSONString(timeRuleVos); /*String s = JsonUtil.objectToJson(timeRuleVos); System.out.println(s);*/ TimeRule timeRule = new TimeRule(); timeRule.setName(name); timeRule.setRule(rule); timeRuleService.save(timeRule); addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return SUCCESS_MESSAGE; } /** * 编辑 */ @RequestMapping(value = "/edit", method = RequestMethod.GET) public String edit(Long id, ModelMap model, HttpSession session) { List adList = aDService.findAll(); TimeRule timeRule = timeRuleService.find(id); model.addAttribute("timeRule", timeRule); String rule = timeRule.getRule(); //将json转换为list对象 List timeRuleVos = JSON.parseArray(rule, TimeRuleVo.class); model.addAttribute("timeRules", timeRuleVos); model.addAttribute("adList", adList); return "/admin/timeRule/edit"; } /** * 更新 */ @RequestMapping(value = "/update", method = RequestMethod.POST) @ResponseBody public Message update(@RequestBody List timeRuleVos, RedirectAttributes redirectAttributes) { Long id = timeRuleVos.get(0).getId(); String rule = JSONArray.toJSONString(timeRuleVos); TimeRule timeRule = timeRuleService.find(id); timeRule.setRule(rule); timeRule.setName(timeRuleVos.get(0).getName()); timeRuleService.update(timeRule); addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return SUCCESS_MESSAGE; } /** * 列表 */ @RequestMapping(value = "/list", method = RequestMethod.GET) public String list(Pageable pageable, ModelMap model) { model.addAttribute("page", timeRuleService.findPage(pageable)); return "/admin/timeRule/list"; } /** * 删除 */ @RequestMapping(value = "/delete", method = RequestMethod.POST) public @ResponseBody Message delete(Long[] ids) { for (int i = 0; i < ids.length; i++) { if (ids[i] == 1) { return Message.error("默认规则不能删"); } } timeRuleService.delete(ids); return SUCCESS_MESSAGE; } /** * 推送时间规则广告id * * @param id 规则id * @return */ @GetMapping(value = "/pullTimeRule") @ResponseBody public Message pullTimeRule(Long id, RedirectAttributes redirectAttributes) { //查询出用这个广告规则的设备 ArrayList filters = new ArrayList<>(); filters.add(Filter.eq("timeRuleId", id)); List list = equipmentService.findList(null, filters, null); for (Equipment equipment : list) { PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("pushTimeRule", id + "").toString()); } addFlashMessage(redirectAttributes, SUCCESS_MESSAGE); return SUCCESS_MESSAGE; } }