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,"推送成功");
}
}