|
|
@@ -0,0 +1,129 @@
|
|
|
+package com.usky.meeting.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.usky.common.core.exception.BusinessException;
|
|
|
+import com.usky.common.security.utils.SecurityUtils;
|
|
|
+import com.usky.meeting.domain.MeetingDevice;
|
|
|
+import com.usky.meeting.domain.MeetingTemplate;
|
|
|
+import com.usky.meeting.mapper.MeetingDeviceMapper;
|
|
|
+import com.usky.meeting.mapper.MeetingTemplateMapper;
|
|
|
+import com.usky.meeting.service.MeetingTemplateService;
|
|
|
+import com.usky.common.mybatis.core.AbstractCrudService;
|
|
|
+import com.usky.system.model.LoginUser;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.security.Security;
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * <p>
|
|
|
+ * 会议屏模板表 服务实现类
|
|
|
+ * </p>
|
|
|
+ *
|
|
|
+ * @author fu
|
|
|
+ * @since 2025-11-18
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class MeetingTemplateServiceImpl extends AbstractCrudService<MeetingTemplateMapper, MeetingTemplate> implements MeetingTemplateService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private MeetingDeviceMapper meetingDeviceMapper;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void addAndUpdate(MeetingTemplate dto) {
|
|
|
+
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ if (loginUser == null || loginUser.getTenantId() == null) {
|
|
|
+ throw new BusinessException("未获取到登录用户!");
|
|
|
+ }
|
|
|
+ String username = loginUser.getUsername();
|
|
|
+ Integer tenantId = loginUser.getTenantId();
|
|
|
+ LocalDateTime now = LocalDateTime.now();
|
|
|
+
|
|
|
+ if (dto.getId() != null) {
|
|
|
+ dto.setUpdateTime(now);
|
|
|
+ dto.setUpdateBy(username);
|
|
|
+ this.updateById(dto);
|
|
|
+ } else {
|
|
|
+ MeetingTemplate tpl = new MeetingTemplate();
|
|
|
+ BeanUtils.copyProperties(dto, tpl);
|
|
|
+ tpl.setCreateTime(now);
|
|
|
+ tpl.setCreateBy(username);
|
|
|
+ tpl.setTenantId(tenantId);
|
|
|
+ this.save(tpl);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void deleteById(Long templateId) {
|
|
|
+ if (templateId == null) {
|
|
|
+ throw new BusinessException("会议模板ID不能为空!");
|
|
|
+ }
|
|
|
+ Integer tenantId = SecurityUtils.getTenantId();
|
|
|
+
|
|
|
+ LambdaQueryWrapper<MeetingTemplate> lambdaQuery = new LambdaQueryWrapper<MeetingTemplate>();
|
|
|
+ lambdaQuery.eq(MeetingTemplate::getId, templateId)
|
|
|
+ .eq(MeetingTemplate::getTenantId, tenantId);
|
|
|
+ Integer i = baseMapper.selectCount(lambdaQuery);
|
|
|
+ if (i == 0) {
|
|
|
+ throw new BusinessException("会议模板不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaUpdateWrapper<MeetingDevice> unwrap = new LambdaUpdateWrapper<>();
|
|
|
+ unwrap.eq(MeetingDevice::getTemplateId, templateId)
|
|
|
+ .eq(MeetingDevice::getTenantId, tenantId);
|
|
|
+ MeetingDevice updater = new MeetingDevice();
|
|
|
+ updater.setTemplateId(null);
|
|
|
+ meetingDeviceMapper.update(updater, unwrap);
|
|
|
+
|
|
|
+ LambdaQueryWrapper<MeetingTemplate> tplWrap = new LambdaQueryWrapper<>();
|
|
|
+ tplWrap.eq(MeetingTemplate::getId, templateId)
|
|
|
+ .eq(MeetingTemplate::getTenantId, tenantId);
|
|
|
+ remove(tplWrap);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<MeetingTemplate> templateList(String name, Integer type, String layout) {
|
|
|
+ LambdaQueryWrapper<MeetingTemplate> lambdaQuery = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQuery.eq(MeetingTemplate::getTenantId, SecurityUtils.getTenantId())
|
|
|
+ .like(StringUtils.isNotBlank(name), MeetingTemplate::getName, name)
|
|
|
+ .eq(type != null, MeetingTemplate::getType, type)
|
|
|
+ .eq(StringUtils.isNotBlank(layout), MeetingTemplate::getLayout, layout);
|
|
|
+ return baseMapper.selectList(lambdaQuery);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void batchPublishing(Integer templateId, List<String> deviceCodes) {
|
|
|
+ if (deviceCodes == null || deviceCodes.isEmpty()) {
|
|
|
+ throw new BusinessException("模板ID和设备编码不能为空!");
|
|
|
+ }
|
|
|
+ Integer tenantId = SecurityUtils.getTenantId();
|
|
|
+
|
|
|
+ LambdaQueryWrapper<MeetingTemplate> lambdaQuery = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQuery.eq(MeetingTemplate::getId, templateId)
|
|
|
+ .eq(MeetingTemplate::getTenantId, tenantId);
|
|
|
+ MeetingTemplate template = baseMapper.selectOne(lambdaQuery);
|
|
|
+ if (template == null) {
|
|
|
+ throw new BusinessException("模板不存在!");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaUpdateWrapper<MeetingDevice> unwrap = new LambdaUpdateWrapper<>();
|
|
|
+ unwrap.eq(MeetingDevice::getTenantId, tenantId)
|
|
|
+ .in(MeetingDevice::getDeviceCode, deviceCodes);
|
|
|
+ MeetingDevice updater = new MeetingDevice();
|
|
|
+ updater.setTemplateId(templateId);
|
|
|
+ meetingDeviceMapper.update(updater, unwrap);
|
|
|
+
|
|
|
+ baseMapper.delete(lambdaQuery);
|
|
|
+ }
|
|
|
+}
|