package com.szwl.controller; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.gexin.fastjson.JSON; import com.szwl.constant.ResponseCodesEnum; import com.szwl.model.bo.R; import com.szwl.model.bo.ResponseModel; import com.szwl.model.dto.TimeRuleVo; import com.szwl.model.entity.TAd; import com.szwl.model.entity.TAdmin; import com.szwl.model.entity.TEquipment; import com.szwl.model.entity.TTimeRule; import com.szwl.model.utils.PushUtils; import com.szwl.service.TAdService; import com.szwl.service.TAdminService; import com.szwl.service.TEquipmentService; import com.szwl.service.TTimeRuleService; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; /** *

* 广告规则 前端控制器 *

* * @author wuhs * @since 2022-07-05 */ @RestController @RequestMapping("/tTimeRule") public class TTimeRuleController { @Autowired TAdService adService; @Autowired TAdminService adminService; @Autowired TTimeRuleService timeRuleService; @Autowired TEquipmentService 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"}; @GetMapping("/pageTimeRule") public ResponseModel> pageTimeRule(long current, long size ) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.orderByDesc(TTimeRule::getCreateDate); Page page = new Page<>(current, size, true); IPage iPage = timeRuleService.page(page, query); return R.ok(iPage); } @ApiOperation(value = "添加") @PostMapping("/add") public ResponseModel add(@RequestBody TTimeRule timeRule) { if(StringUtils.isEmpty(timeRule.getName())&&StringUtils.isEmpty(timeRule.getRule())){ return R.fail(ResponseCodesEnum.A0001); } timeRule.setCreateDate(new Date()); timeRule.setModifyDate(new Date()); timeRule.setType("1"); timeRuleService.save(timeRule); return R.ok(timeRule,"添加成功"); } @ApiOperation(value = "修改") @PostMapping("/update") public ResponseModel update(@RequestBody TTimeRule timeRule) { if(StringUtils.isEmpty(timeRule.getName())&&StringUtils.isEmpty(timeRule.getRule())){ return R.fail(ResponseCodesEnum.A0001); } TTimeRule oldTimeRule = timeRuleService.getById(timeRule.getId()); oldTimeRule.setName(timeRule.getName()); oldTimeRule.setRule(timeRule.getRule()); oldTimeRule.setUserNames(timeRule.getUserNames()); oldTimeRule.setModifyDate(new Date()); timeRuleService.updateById(oldTimeRule); return R.ok(oldTimeRule,"修改成功"); } @GetMapping("/getList") public ResponseModel getList(String name) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); if(StringUtils.isNotEmpty(name)){ query.eq(TTimeRule::getName,name); } query.orderByDesc(TTimeRule::getCreateDate); List list = timeRuleService.list(query); return R.ok(list); } @GetMapping("/getAdListByTimeRule") public ResponseModel getAdListByTimeRule(String id) { List adList = new ArrayList<>(); TTimeRule timeRule = timeRuleService.getById(id); if(StringUtils.isEmpty(timeRule.getType())){ List timeRuleVos = JSON.parseArray(timeRule.getRule(), TimeRuleVo.class); for(TimeRuleVo timeRuleVo:timeRuleVos){ List ads = timeRuleVo.getAd(); for (String aid:ads){ TAd ad = adService.getById(aid); if(ad!=null&&ad.getId()!=null){ adList.add(ad); } } break; } }else if(timeRule.getType().equals("1")){ String rule = timeRule.getRule(); rule= rule.substring(1, rule.length() - 1); List result = Arrays.asList(rule.split(",")); for (String aid:result){ TAd ad = adService.getById(aid); if(ad!=null&&ad.getId()!=null){ adList.add(ad); } } } return R.ok(adList); } @GetMapping("/updateEquimentpTimeRule") public ResponseModel updateEquimentpTimeRule(String equipmentId,String timeRuleId) { TEquipment equipment = equipmentService.getById(equipmentId); if(equipment!=null&&equipment.getId()!=null){ equipment.setTimeRuleId(Long.valueOf(timeRuleId)); equipmentService.updateById(equipment); equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", timeRuleId + "").toString()); } return R.ok(); } /** * 获取时间规则 * * @param id 规则id * @return */ @GetMapping(value = "/getOne") @ResponseBody public ResponseModel getOne(Long id) { if(id==null){ return R.fail(ResponseCodesEnum.A0001); } TTimeRule timeRule = timeRuleService.getById(id); return R.ok(timeRule); } /** * 删除时间规则 * * @param * @return */ @GetMapping(value = "/deletes") @ResponseBody public ResponseModel deletes(int[] ids) { if(ids==null){ return R.fail(ResponseCodesEnum.A0001); } if(ids.length>0){ for(int i=0;i pullTimeRule(Long id) { LambdaQueryWrapper query = Wrappers.lambdaQuery(); query.eq(TEquipment::getTimeRuleId,id); List list = equipmentService.list(query); //查询出用这个广告规则的设备 for (TEquipment equipment : list) { equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", id + "").toString()); // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("pushTimeRule", id + "").toString()); } TTimeRule timeRule = timeRuleService.getById(id); if(StringUtils.isNotEmpty(timeRule.getUserNames())){ String[] nameUsers = timeRule.getUserNames().split(","); if(nameUsers.length>0){ for(int i=0;i query1 = Wrappers.lambdaQuery(); query1.eq(TAdmin::getUsername,nameUsers[i]); List list1 = adminService.list(query1); if(list1.size()>0){ for(TAdmin admin:list1){ LambdaQueryWrapper query2 = Wrappers.lambdaQuery(); query2.eq(TEquipment::getAdminId,admin.getId()); List list2 = equipmentService.list(query2); for(TEquipment equipment:list2){ equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", id + "").toString()); } } } } } } return R.ok(null,"推送成功"); } }