TAudioServiceImpl.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. package com.sckj.warn.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.github.yulichang.query.MPJQueryWrapper;
  4. import com.baomidou.mybatisplus.core.metadata.IPage;
  5. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  6. import com.sckj.common.TapholeAdminThreadLocal;
  7. import com.sckj.common.core.AjaxResult;
  8. import com.sckj.common.validate.commons.PageValidate;
  9. import com.sckj.warn.service.ITAudioService;
  10. import com.sckj.warn.validate.TAudioCreateValidate;
  11. import com.sckj.warn.validate.TAudioUpdateValidate;
  12. import com.sckj.warn.validate.TAudioSearchValidate;
  13. import com.sckj.warn.vo.TAudioListedVo;
  14. import com.sckj.warn.vo.TAudioDetailVo;
  15. import com.sckj.common.config.GlobalConfig;
  16. import com.sckj.common.core.PageResult;
  17. import com.sckj.warn.entity.TAudio;
  18. import com.sckj.warn.mapper.TAudioMapper;
  19. import com.sckj.common.util.ListUtils;
  20. import com.sckj.common.util.TimeUtils;
  21. import com.sckj.common.util.UrlUtils;
  22. import org.springframework.beans.BeanUtils;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.util.Assert;
  25. import org.springframework.util.CollectionUtils;
  26. import javax.annotation.Resource;
  27. import java.text.SimpleDateFormat;
  28. import java.util.*;
  29. /**
  30. * 音频实现类
  31. * @author zhanghao
  32. */
  33. @Service
  34. public class TAudioServiceImpl implements ITAudioService {
  35. @Resource
  36. TAudioMapper tAudioMapper;
  37. /**
  38. * 音频列表
  39. *
  40. * @author zhanghao
  41. * @param pageValidate 分页参数
  42. * @param searchValidate 搜索参数
  43. * @return PageResult<TAudioListedVo>
  44. */
  45. @Override
  46. public PageResult<TAudioListedVo> list(PageValidate pageValidate, TAudioSearchValidate searchValidate) {
  47. Integer page = pageValidate.getPageNo();
  48. Integer limit = pageValidate.getPageSize();
  49. QueryWrapper<TAudio> queryWrapper = new QueryWrapper<>();
  50. queryWrapper.eq("del_flag", "1");
  51. queryWrapper.orderByDesc("id");
  52. tAudioMapper.setSearch(queryWrapper, searchValidate, new String[]{
  53. "=:createBy@create_by:str",
  54. "=:updateBy@update_by:str",
  55. "like:name:str",
  56. "=:exceptionType@exception_type:str",
  57. "=:exceptionLevel@exception_level:str",
  58. "=:path:str",
  59. "=:status:str",
  60. });
  61. IPage<TAudio> iPage = tAudioMapper.selectPage(new Page<>(page, limit), queryWrapper);
  62. List<TAudioListedVo> list = new LinkedList<>();
  63. for(TAudio item : iPage.getRecords()) {
  64. TAudioListedVo vo = new TAudioListedVo();
  65. BeanUtils.copyProperties(item, vo);
  66. vo.setPath("http://localhost:28080/api/uploads/" + vo.getPath());
  67. vo.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getCreateTime()));
  68. if (item.getUpdateTime() != null){
  69. vo.setUpdateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(item.getUpdateTime()));
  70. }
  71. list.add(vo);
  72. }
  73. return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list);
  74. }
  75. /**
  76. * 音频详情
  77. *
  78. * @author zhanghao
  79. * @param id 主键参数
  80. * @return TAudio
  81. */
  82. @Override
  83. public TAudioDetailVo detail(Integer id) {
  84. TAudio model = tAudioMapper.selectOne(
  85. new QueryWrapper<TAudio>()
  86. .eq("id", id)
  87. .eq("del_flag", "1")
  88. .last("limit 1"));
  89. Assert.notNull(model, "数据不存在");
  90. TAudioDetailVo vo = new TAudioDetailVo();
  91. BeanUtils.copyProperties(model, vo);
  92. return vo;
  93. }
  94. /**
  95. * 音频新增
  96. *
  97. * @author zhanghao
  98. * @param createValidate 参数
  99. */
  100. @Override
  101. public void add(TAudioCreateValidate createValidate) {
  102. TAudio model = new TAudio();
  103. model.setCreateTime(new Date(System.currentTimeMillis()));
  104. model.setCreateBy(String.valueOf(TapholeAdminThreadLocal.getAdminUsername()));
  105. model.setName(createValidate.getName());
  106. model.setPath(createValidate.getPath());
  107. model.setDuration(createValidate.getDuration());
  108. model.setExceptionType(createValidate.getExceptionType());
  109. model.setExceptionLevel(createValidate.getExceptionLevel());
  110. //默认新增的音频初始状态为停用
  111. model.setStatus("0");
  112. tAudioMapper.insert(model);
  113. }
  114. /**
  115. * 音频编辑
  116. *
  117. * @author zhanghao
  118. * @param updateValidate 参数
  119. */
  120. @Override
  121. public int edit(TAudioUpdateValidate updateValidate) {
  122. TAudio model = tAudioMapper.selectOne(
  123. new QueryWrapper<TAudio>()
  124. .eq("id", updateValidate.getId()).eq("del_flag", "1")
  125. .last("limit 1"));
  126. if (model == null){
  127. return 0;
  128. }
  129. model.setUpdateTime(new Date(System.currentTimeMillis()));
  130. model.setUpdateBy(String.valueOf(TapholeAdminThreadLocal.getAdminUsername()));
  131. model.setName(updateValidate.getName());
  132. model.setPath(updateValidate.getPath());
  133. model.setDuration(updateValidate.getDuration());
  134. model.setExceptionType(updateValidate.getExceptionType());
  135. model.setExceptionLevel(updateValidate.getExceptionLevel());
  136. tAudioMapper.updateById(model);
  137. return 1;
  138. }
  139. /**
  140. * 音频音频启用状态修改
  141. *
  142. * @author zhanghao
  143. * @param updateValidate 参数
  144. */
  145. @Override
  146. public AjaxResult<Object> status(TAudioUpdateValidate updateValidate) {
  147. TAudio model = tAudioMapper.selectOne(
  148. new QueryWrapper<TAudio>()
  149. .eq("id", updateValidate.getId()).eq("del_flag", "1")
  150. .last("limit 1"));
  151. if (model == null){
  152. return AjaxResult.failed("未找到该音频");
  153. }
  154. /*如果将要修改的状态值和原来的值不同,且修改音频状态为启用*/
  155. if (!model.getStatus().equals(updateValidate.getStatus()) && updateValidate.getStatus().equals("1")){
  156. //首先查找是否存在同异常类型同危害程度的已启用音频
  157. TAudio tAudio = tAudioMapper.selectOne(
  158. new QueryWrapper<TAudio>()
  159. .eq("exception_type", updateValidate.getExceptionType())
  160. .eq("exception_level", updateValidate.getExceptionLevel())
  161. .eq("status", "1")
  162. .last("limit 1"));
  163. //存在冲突
  164. if (tAudio != null){
  165. return AjaxResult.failed("存在已启用的同类音频,禁止修改");
  166. }
  167. }
  168. /*未修改音频状态或停用音频或不存在启用状态冲突*/
  169. model.setUpdateTime(new Date(System.currentTimeMillis()));
  170. model.setUpdateBy(String.valueOf(TapholeAdminThreadLocal.getAdminUsername()));
  171. model.setStatus(updateValidate.getStatus());
  172. tAudioMapper.updateById(model);
  173. return AjaxResult.success();
  174. }
  175. /**
  176. * 音频删除
  177. *
  178. * @author zhanghao
  179. * @param id 主键ID
  180. */
  181. @Override
  182. public void del(Integer id) {
  183. TAudio model = tAudioMapper.selectOne(
  184. new QueryWrapper<TAudio>()
  185. .eq("id", id)
  186. .last("limit 1"));
  187. Assert.notNull(model, "数据不存在!");
  188. model.setDelFlag("0");
  189. tAudioMapper.updateById(model);
  190. }
  191. /**
  192. * 音频地址查询
  193. *
  194. * @author zhanghao
  195. * @param id 主键ID
  196. */
  197. public String searchPath(Long id){
  198. TAudio model = tAudioMapper.selectOne(
  199. new QueryWrapper<TAudio>()
  200. .eq("id", id).eq("del_flag", "1")
  201. .last("limit 1"));
  202. Assert.notNull(model, "数据不存在!");
  203. return model.getPath();
  204. }
  205. /**
  206. * 音频批量删除
  207. *
  208. * @author zhanghao
  209. * @param ids 主键数组
  210. */
  211. @Override
  212. public AjaxResult<Object> del_ex(List<Long> ids) {
  213. List<TAudio> models = tAudioMapper.selectList(
  214. new QueryWrapper<TAudio>()
  215. .in("id", ids));
  216. if (CollectionUtils.isEmpty(models)){
  217. return AjaxResult.failed("数据不存在");
  218. }
  219. TAudio model = new TAudio();
  220. model.setDelFlag("0");
  221. tAudioMapper.update(model, new QueryWrapper<TAudio>().in("id", ids));
  222. return AjaxResult.success();
  223. }
  224. }