TTimeRuleController.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package com.szwl.controller;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  7. import com.gexin.fastjson.JSON;
  8. import com.szwl.constant.ResponseCodesEnum;
  9. import com.szwl.model.bo.R;
  10. import com.szwl.model.bo.ResponseModel;
  11. import com.szwl.model.dto.TimeRuleVo;
  12. import com.szwl.model.entity.TAd;
  13. import com.szwl.model.entity.TAdmin;
  14. import com.szwl.model.entity.TEquipment;
  15. import com.szwl.model.entity.TTimeRule;
  16. import com.szwl.model.utils.PushUtils;
  17. import com.szwl.service.TAdService;
  18. import com.szwl.service.TAdminService;
  19. import com.szwl.service.TEquipmentService;
  20. import com.szwl.service.TTimeRuleService;
  21. import io.swagger.annotations.ApiOperation;
  22. import org.apache.commons.lang.StringUtils;
  23. import org.springframework.beans.factory.annotation.Autowired;
  24. import org.springframework.web.bind.annotation.*;
  25. import java.util.ArrayList;
  26. import java.util.Arrays;
  27. import java.util.Date;
  28. import java.util.List;
  29. /**
  30. * <p>
  31. * 广告规则 前端控制器
  32. * </p>
  33. *
  34. * @author wuhs
  35. * @since 2022-07-05
  36. */
  37. @RestController
  38. @RequestMapping("/tTimeRule")
  39. public class TTimeRuleController {
  40. @Autowired
  41. TAdService adService;
  42. @Autowired
  43. TAdminService adminService;
  44. @Autowired
  45. TTimeRuleService timeRuleService;
  46. @Autowired
  47. TEquipmentService equipmentService;
  48. private static final String[] times = {"0-1", "1-2", "2-3", "3-4", "4-5", "5-6", "6-7", "7-8",
  49. "8-9", "9-10", "10-11", "11-12", "12-13", "13-14", "14-15", "15-16", "16-17", "17-18", "18-19", "19-20"
  50. , "20-21", "21-22", "22-23", "23-24"};
  51. @GetMapping("/pageTimeRule")
  52. public ResponseModel<IPage<?>> pageTimeRule(long current, long size ) {
  53. LambdaQueryWrapper<TTimeRule> query = Wrappers.lambdaQuery();
  54. query.orderByDesc(TTimeRule::getCreateDate);
  55. Page<TTimeRule> page = new Page<>(current, size, true);
  56. IPage<TTimeRule> iPage = timeRuleService.page(page, query);
  57. return R.ok(iPage);
  58. }
  59. @ApiOperation(value = "添加")
  60. @PostMapping("/add")
  61. public ResponseModel<?> add(@RequestBody TTimeRule timeRule) {
  62. if(StringUtils.isEmpty(timeRule.getName())&&StringUtils.isEmpty(timeRule.getRule())){
  63. return R.fail(ResponseCodesEnum.A0001);
  64. }
  65. timeRule.setCreateDate(new Date());
  66. timeRule.setModifyDate(new Date());
  67. timeRule.setType("1");
  68. timeRuleService.save(timeRule);
  69. return R.ok(timeRule,"添加成功");
  70. }
  71. @ApiOperation(value = "修改")
  72. @PostMapping("/update")
  73. public ResponseModel<?> update(@RequestBody TTimeRule timeRule) {
  74. if(StringUtils.isEmpty(timeRule.getName())&&StringUtils.isEmpty(timeRule.getRule())){
  75. return R.fail(ResponseCodesEnum.A0001);
  76. }
  77. TTimeRule oldTimeRule = timeRuleService.getById(timeRule.getId());
  78. oldTimeRule.setName(timeRule.getName());
  79. oldTimeRule.setRule(timeRule.getRule());
  80. oldTimeRule.setUserNames(timeRule.getUserNames());
  81. oldTimeRule.setModifyDate(new Date());
  82. timeRuleService.updateById(oldTimeRule);
  83. return R.ok(oldTimeRule,"修改成功");
  84. }
  85. @GetMapping("/getList")
  86. public ResponseModel<?> getList(String name) {
  87. LambdaQueryWrapper<TTimeRule> query = Wrappers.lambdaQuery();
  88. if(StringUtils.isNotEmpty(name)){
  89. query.eq(TTimeRule::getName,name);
  90. }
  91. query.orderByDesc(TTimeRule::getCreateDate);
  92. List<TTimeRule> list = timeRuleService.list(query);
  93. return R.ok(list);
  94. }
  95. @GetMapping("/getAdListByTimeRule")
  96. public ResponseModel<?> getAdListByTimeRule(String id) {
  97. List<TAd> adList = new ArrayList<>();
  98. TTimeRule timeRule = timeRuleService.getById(id);
  99. if(StringUtils.isEmpty(timeRule.getType())){
  100. List<TimeRuleVo> timeRuleVos = JSON.parseArray(timeRule.getRule(), TimeRuleVo.class);
  101. for(TimeRuleVo timeRuleVo:timeRuleVos){
  102. List<String> ads = timeRuleVo.getAd();
  103. for (String aid:ads){
  104. TAd ad = adService.getById(aid);
  105. if(ad!=null&&ad.getId()!=null){
  106. adList.add(ad);
  107. }
  108. }
  109. break;
  110. }
  111. }else if(timeRule.getType().equals("1")){
  112. String rule = timeRule.getRule();
  113. rule= rule.substring(1, rule.length() - 1);
  114. List<String> result = Arrays.asList(rule.split(","));
  115. for (String aid:result){
  116. TAd ad = adService.getById(aid);
  117. if(ad!=null&&ad.getId()!=null){
  118. adList.add(ad);
  119. }
  120. }
  121. }
  122. return R.ok(adList);
  123. }
  124. @GetMapping("/updateEquimentpTimeRule")
  125. public ResponseModel<?> updateEquimentpTimeRule(String equipmentId,String timeRuleId) {
  126. TEquipment equipment = equipmentService.getById(equipmentId);
  127. if(equipment!=null&&equipment.getId()!=null){
  128. equipment.setTimeRuleId(Long.valueOf(timeRuleId));
  129. equipmentService.updateById(equipment);
  130. equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", timeRuleId + "").toString());
  131. }
  132. return R.ok();
  133. }
  134. /**
  135. * 获取时间规则
  136. *
  137. * @param id 规则id
  138. * @return
  139. */
  140. @GetMapping(value = "/getOne")
  141. @ResponseBody
  142. public ResponseModel<?> getOne(Long id) {
  143. if(id==null){
  144. return R.fail(ResponseCodesEnum.A0001);
  145. }
  146. TTimeRule timeRule = timeRuleService.getById(id);
  147. return R.ok(timeRule);
  148. }
  149. /**
  150. * 删除时间规则
  151. *
  152. * @param
  153. * @return
  154. */
  155. @GetMapping(value = "/deletes")
  156. @ResponseBody
  157. public ResponseModel<?> deletes(int[] ids) {
  158. if(ids==null){
  159. return R.fail(ResponseCodesEnum.A0001);
  160. }
  161. if(ids.length>0){
  162. for(int i=0;i<ids.length;i++){
  163. timeRuleService.removeById(ids[i]);
  164. }
  165. }
  166. return R.ok(null,"删除成功");
  167. }
  168. /**
  169. * 推送时间规则广告id
  170. *
  171. * @param id 规则id
  172. * @return
  173. */
  174. @GetMapping(value = "/pullTimeRule")
  175. @ResponseBody
  176. public ResponseModel<?> pullTimeRule(Long id) {
  177. LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
  178. query.eq(TEquipment::getTimeRuleId,id);
  179. List<TEquipment> list = equipmentService.list(query);
  180. //查询出用这个广告规则的设备
  181. for (TEquipment equipment : list) {
  182. equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", id + "").toString());
  183. // PushUtils.push(equipment.getGtClientId(), "", "", PushUtils.buildJson("pushTimeRule", id + "").toString());
  184. }
  185. TTimeRule timeRule = timeRuleService.getById(id);
  186. if(StringUtils.isNotEmpty(timeRule.getUserNames())){
  187. String[] nameUsers = timeRule.getUserNames().split(",");
  188. if(nameUsers.length>0){
  189. for(int i=0;i<nameUsers.length;i++){
  190. LambdaQueryWrapper<TAdmin> query1 = Wrappers.lambdaQuery();
  191. query1.eq(TAdmin::getUsername,nameUsers[i]);
  192. List<TAdmin> list1 = adminService.list(query1);
  193. if(list1.size()>0){
  194. for(TAdmin admin:list1){
  195. LambdaQueryWrapper<TEquipment> query2 = Wrappers.lambdaQuery();
  196. query2.eq(TEquipment::getAdminId,admin.getId());
  197. List<TEquipment> list2 = equipmentService.list(query2);
  198. for(TEquipment equipment:list2){
  199. equipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("pushTimeRule", id + "").toString());
  200. }
  201. }
  202. }
  203. }
  204. }
  205. }
  206. return R.ok(null,"推送成功");
  207. }
  208. }