|
|
@@ -0,0 +1,204 @@
|
|
|
+package org.dromara.product.service.impl;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.dromara.common.core.exception.ServiceException;
|
|
|
+import org.dromara.common.core.utils.MapstructUtils;
|
|
|
+import org.dromara.common.core.utils.StringUtils;
|
|
|
+import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
|
+import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
+import org.dromara.system.api.RemoteUserService;
|
|
|
+import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.dromara.product.domain.bo.ProuctPptSchemeBo;
|
|
|
+import org.dromara.product.domain.vo.ProuctPptSchemeVo;
|
|
|
+import org.dromara.product.domain.ProuctPptScheme;
|
|
|
+import org.dromara.product.mapper.ProuctPptSchemeMapper;
|
|
|
+import org.dromara.product.service.IProuctPptSchemeService;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Collection;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * PPT 方案主Service业务层处理
|
|
|
+ *
|
|
|
+ * @author LionLi
|
|
|
+ * @date 2026-04-26
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Service
|
|
|
+public class ProuctPptSchemeServiceImpl extends ServiceImpl<ProuctPptSchemeMapper, ProuctPptScheme> implements IProuctPptSchemeService {
|
|
|
+
|
|
|
+ private final ProuctPptSchemeMapper baseMapper;
|
|
|
+
|
|
|
+ @DubboReference
|
|
|
+ private RemoteUserService remoteUserService;
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询PPT 方案主
|
|
|
+ *
|
|
|
+ * @param id 主键
|
|
|
+ * @return PPT 方案主
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public ProuctPptSchemeVo queryById(Long id){
|
|
|
+ return baseMapper.selectVoById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分页查询PPT 方案主列表
|
|
|
+ *
|
|
|
+ * @param bo 查询条件
|
|
|
+ * @param pageQuery 分页参数
|
|
|
+ * @return PPT 方案主分页列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public TableDataInfo<ProuctPptSchemeVo> queryPageList(ProuctPptSchemeBo bo, PageQuery pageQuery) {
|
|
|
+ LambdaQueryWrapper<ProuctPptScheme> lqw = buildQueryWrapper(bo);
|
|
|
+ Page<ProuctPptSchemeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
|
|
+ return TableDataInfo.build(result);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询符合条件的PPT 方案主列表
|
|
|
+ *
|
|
|
+ * @param bo 查询条件
|
|
|
+ * @return PPT 方案主列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<ProuctPptSchemeVo> queryList(ProuctPptSchemeBo bo) {
|
|
|
+ LambdaQueryWrapper<ProuctPptScheme> lqw = buildQueryWrapper(bo);
|
|
|
+ return baseMapper.selectVoList(lqw);
|
|
|
+ }
|
|
|
+
|
|
|
+ private LambdaQueryWrapper<ProuctPptScheme> buildQueryWrapper(ProuctPptSchemeBo bo) {
|
|
|
+ Map<String, Object> params = bo.getParams();
|
|
|
+ LambdaQueryWrapper<ProuctPptScheme> lqw = Wrappers.lambdaQuery();
|
|
|
+ lqw.orderByAsc(ProuctPptScheme::getId);
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getName()), ProuctPptScheme::getName, bo.getName());
|
|
|
+ lqw.eq(bo.getTemplateId() != null, ProuctPptScheme::getTemplateId, bo.getTemplateId());
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getTplName()), ProuctPptScheme::getTplName, bo.getTplName());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplCover()), ProuctPptScheme::getTplCover, bo.getTplCover());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplCoverLogo()), ProuctPptScheme::getTplCoverLogo, bo.getTplCoverLogo());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplContentLogo()), ProuctPptScheme::getTplContentLogo, bo.getTplContentLogo());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplThemeColor()), ProuctPptScheme::getTplThemeColor, bo.getTplThemeColor());
|
|
|
+ lqw.eq(bo.getTplItemsPerPage() != null, ProuctPptScheme::getTplItemsPerPage, bo.getTplItemsPerPage());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplCoverTitle()), ProuctPptScheme::getTplCoverTitle, bo.getTplCoverTitle());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplCoverSubTitle()), ProuctPptScheme::getTplCoverSubTitle, bo.getTplCoverSubTitle());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplValidity()), ProuctPptScheme::getTplValidity, bo.getTplValidity());
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getTplBrandName()), ProuctPptScheme::getTplBrandName, bo.getTplBrandName());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplBrandSlogan()), ProuctPptScheme::getTplBrandSlogan, bo.getTplBrandSlogan());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplWebsite()), ProuctPptScheme::getTplWebsite, bo.getTplWebsite());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplPhone()), ProuctPptScheme::getTplPhone, bo.getTplPhone());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getTplContentTitle()), ProuctPptScheme::getTplContentTitle, bo.getTplContentTitle());
|
|
|
+ lqw.eq(bo.getOwnerId() != null, ProuctPptScheme::getOwnerId, bo.getOwnerId());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getIsPublic()), ProuctPptScheme::getIsPublic, bo.getIsPublic());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getIsShared()), ProuctPptScheme::getIsShared, bo.getIsShared());
|
|
|
+ lqw.eq(bo.getSourceSchemeId() != null, ProuctPptScheme::getSourceSchemeId, bo.getSourceSchemeId());
|
|
|
+ lqw.eq(bo.getSharerId() != null, ProuctPptScheme::getSharerId, bo.getSharerId());
|
|
|
+ lqw.like(StringUtils.isNotBlank(bo.getSharerName()), ProuctPptScheme::getSharerName, bo.getSharerName());
|
|
|
+ lqw.eq(bo.getShareTime() != null, ProuctPptScheme::getShareTime, bo.getShareTime());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ProuctPptScheme::getStatus, bo.getStatus());
|
|
|
+ lqw.eq(StringUtils.isNotBlank(bo.getPlatformCode()), ProuctPptScheme::getPlatformCode, bo.getPlatformCode());
|
|
|
+ lqw.eq(ObjectUtil.isNotEmpty(bo.getCreateBy()), ProuctPptScheme::getCreateBy, bo.getCreateBy());
|
|
|
+ return lqw;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增PPT 方案主
|
|
|
+ *
|
|
|
+ * @param bo PPT 方案主
|
|
|
+ * @return 是否新增成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean insertByBo(ProuctPptSchemeBo bo) {
|
|
|
+ ProuctPptScheme add = MapstructUtils.convert(bo, ProuctPptScheme.class);
|
|
|
+ validEntityBeforeSave(add);
|
|
|
+ add.setOwnerId(LoginHelper.getUserId());
|
|
|
+ boolean flag = baseMapper.insert(add) > 0;
|
|
|
+ if (flag) {
|
|
|
+ bo.setId(add.getId());
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 修改PPT 方案主
|
|
|
+ *
|
|
|
+ * @param bo PPT 方案主
|
|
|
+ * @return 是否修改成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean updateByBo(ProuctPptSchemeBo bo) {
|
|
|
+ ProuctPptScheme update = MapstructUtils.convert(bo, ProuctPptScheme.class);
|
|
|
+ validEntityBeforeSave(update);
|
|
|
+ return baseMapper.updateById(update) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 保存前的数据校验
|
|
|
+ */
|
|
|
+ private void validEntityBeforeSave(ProuctPptScheme entity){
|
|
|
+ //TODO 做一些数据校验,如唯一约束
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 校验并批量删除PPT 方案主信息
|
|
|
+ *
|
|
|
+ * @param ids 待删除的主键集合
|
|
|
+ * @param isValid 是否进行有效性校验
|
|
|
+ * @return 是否删除成功
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
|
|
+ if(isValid){
|
|
|
+ //TODO 做一些业务上的校验,判断是否需要校验
|
|
|
+ }
|
|
|
+ return baseMapper.deleteByIds(ids) > 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分享方案
|
|
|
+ *
|
|
|
+
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void share(ProuctPptSchemeBo bo) {
|
|
|
+ if (ObjectUtil.isEmpty(bo.getUserIds())) {
|
|
|
+ throw new ServiceException("请选择用户");
|
|
|
+ }
|
|
|
+ //查询用户
|
|
|
+ List<RemoteUserVo> userVos = remoteUserService.selectListByIds(bo.getUserIds());
|
|
|
+ //获取方案信息
|
|
|
+ ProuctPptSchemeVo prouctPptSchemeVo = baseMapper.selectVoById(bo.getId());
|
|
|
+ if (ObjectUtil.isEmpty(prouctPptSchemeVo)) {
|
|
|
+ throw new ServiceException("方案不存在");
|
|
|
+ }
|
|
|
+ List<ProuctPptScheme> prouctPptSchemes = userVos.stream().map(userVo -> {
|
|
|
+ ProuctPptScheme prouctPptScheme = BeanUtil.toBean(prouctPptSchemeVo, ProuctPptScheme.class);
|
|
|
+ prouctPptScheme.setId(null);
|
|
|
+ prouctPptScheme.setSharerId(LoginHelper.getUserId());
|
|
|
+ prouctPptScheme.setSharerName(LoginHelper.getLoginUser().getNickname());
|
|
|
+ prouctPptScheme.setShareTime(DateUtil.date());
|
|
|
+ prouctPptScheme.setIsShared("1");
|
|
|
+ prouctPptScheme.setOwnerId(userVo.getUserId());
|
|
|
+ return prouctPptScheme;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ baseMapper.insertBatch(prouctPptSchemes);
|
|
|
+ }
|
|
|
+}
|