|
|
@@ -0,0 +1,145 @@
|
|
|
+package com.gubersail.admin.story.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.gubersail.admin.story.mapper.WeChatUserStoryMapper;
|
|
|
+import com.gubersail.admin.story.service.IWeChatUserStoryService;
|
|
|
+import com.gubersail.admin.util.PageHelperUtil;
|
|
|
+import com.gubersail.dealer.admin.api.story.dto.WeChatUserStoryDto;
|
|
|
+import com.gubersail.dealer.admin.api.story.entity.WeChatUserStory;
|
|
|
+import com.gubersail.dealer.admin.api.story.vo.WeChatUserStoryVo;
|
|
|
+import org.springblade.common.enums.NumberEnum;
|
|
|
+import org.springblade.core.mp.support.Condition;
|
|
|
+import org.springblade.core.mp.support.Query;
|
|
|
+import org.springblade.core.secure.BladeUser;
|
|
|
+import org.springblade.core.secure.utils.AuthUtil;
|
|
|
+import org.springblade.core.tool.api.R;
|
|
|
+import org.springblade.core.tool.utils.BeanUtil;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author Rain
|
|
|
+ */
|
|
|
+@Service
|
|
|
+public class WeChatUserStoryServiceImpl extends ServiceImpl<WeChatUserStoryMapper, WeChatUserStory> implements IWeChatUserStoryService {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<WeChatUserStoryDto> getList(WeChatUserStoryVo weChatUserStoryVo, Query query) {
|
|
|
+ IPage<WeChatUserStoryDto> dtoPage = new Page<>();
|
|
|
+ LambdaQueryWrapper<WeChatUserStory> searchQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ searchQueryWrapper.like(StringUtils.hasText(weChatUserStoryVo.getTitle()), WeChatUserStory::getTitle, weChatUserStoryVo.getTitle());
|
|
|
+ searchQueryWrapper.eq(Objects.nonNull(weChatUserStoryVo.getStatus()), WeChatUserStory::getStatus, weChatUserStoryVo.getStatus());
|
|
|
+ IPage<WeChatUserStory> weChatUserStoryPage = baseMapper.selectPage(Condition.getPage(query), searchQueryWrapper);
|
|
|
+ PageHelperUtil.getPageInfoDto(weChatUserStoryPage, dtoPage);
|
|
|
+ if (weChatUserStoryPage.getRecords().isEmpty()) {
|
|
|
+ return dtoPage;
|
|
|
+ }
|
|
|
+ dtoPage.setRecords(BeanUtil.copyProperties(weChatUserStoryPage.getRecords(), WeChatUserStoryDto.class));
|
|
|
+ return dtoPage;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public WeChatUserStoryDto getDetail(Long id) {
|
|
|
+ WeChatUserStory weChatUserStory = baseMapper.selectById(id);
|
|
|
+ if (ObjectUtils.isEmpty(weChatUserStory)) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ return BeanUtil.copyProperties(weChatUserStory, WeChatUserStoryDto.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R<Long> submit(WeChatUserStoryVo weChatUserStoryVo) {
|
|
|
+ BladeUser nowSubmitUser = AuthUtil.getUser();
|
|
|
+ Date nowDate = new Date();
|
|
|
+ WeChatUserStory weChatUserStory = BeanUtil.copyProperties(weChatUserStoryVo, WeChatUserStory.class);
|
|
|
+ if (ObjectUtils.isEmpty(weChatUserStory)) {
|
|
|
+ return R.fail("用户故事信息不完整,请重新填写");
|
|
|
+ }
|
|
|
+ weChatUserStory.setTenantId(nowSubmitUser.getTenantId());
|
|
|
+ int insertOrUpdateCount;
|
|
|
+ if (Objects.isNull(weChatUserStory.getId())) {
|
|
|
+ weChatUserStory.setCreateUser(nowSubmitUser.getUserId());
|
|
|
+ weChatUserStory.setCreateDept(Long.valueOf(nowSubmitUser.getDeptId()));
|
|
|
+ weChatUserStory.setCreateTime(nowDate);
|
|
|
+ insertOrUpdateCount = baseMapper.insert(weChatUserStory);
|
|
|
+ } else {
|
|
|
+ weChatUserStory.setUpdateUser(nowSubmitUser.getUserId());
|
|
|
+ weChatUserStory.setUpdateTime(nowDate);
|
|
|
+ weChatUserStory.setVersion(weChatUserStory.getVersion() + 1);
|
|
|
+ insertOrUpdateCount = baseMapper.update(weChatUserStory, new LambdaQueryWrapper<WeChatUserStory>()
|
|
|
+ .eq(WeChatUserStory::getId, weChatUserStory.getId()));
|
|
|
+ }
|
|
|
+ return insertOrUpdateCount > 0 ? R.data(weChatUserStory.getId()) : R.fail("操作失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R removeUserStoryByIds(List<Long> ids) {
|
|
|
+ if (CollectionUtils.isEmpty(ids)) {
|
|
|
+ return R.fail("请选择要删除的用户故事");
|
|
|
+ }
|
|
|
+ List<WeChatUserStory> weChatUserStories = baseMapper.selectBatchIds(ids);
|
|
|
+ WeChatUserStory published = weChatUserStories.stream().filter(weChatUserStory -> NumberEnum.ONE.number.equals(weChatUserStory.getStatus())).findFirst().orElse(null);
|
|
|
+ if (published != null) {
|
|
|
+ return R.fail("用户故事:" + published.getTitle() + "已发布,不能删除");
|
|
|
+ }
|
|
|
+ WeChatUserStory updateData = new WeChatUserStoryDto();
|
|
|
+ updateData.setIsDeleted(NumberEnum.ONE.number);
|
|
|
+ updateData.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ updateData.setUpdateTime(new Date());
|
|
|
+ int updateCount = baseMapper.update(updateData, new LambdaQueryWrapper<WeChatUserStory>().in(WeChatUserStory::getId, ids));
|
|
|
+ return R.status(updateCount > 0);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R publishStory(WeChatUserStoryVo weChatUserStoryVo) {
|
|
|
+ if (Objects.isNull(weChatUserStoryVo.getId())) {
|
|
|
+ return R.fail("请选择要发布的用户故事");
|
|
|
+ }
|
|
|
+ WeChatUserStory weChatUserStory = baseMapper.selectById(weChatUserStoryVo.getId());
|
|
|
+ if (ObjectUtils.isEmpty(weChatUserStory)) {
|
|
|
+ return R.fail("用户故事不存在或已被删除");
|
|
|
+ }
|
|
|
+ if (NumberEnum.ONE.number.equals(weChatUserStory.getStatus())) {
|
|
|
+ return R.success("用户故事已发布");
|
|
|
+ }
|
|
|
+ WeChatUserStory publishStoryData = new WeChatUserStoryDto();
|
|
|
+ publishStoryData.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ publishStoryData.setUpdateTime(new Date());
|
|
|
+ publishStoryData.setStatus(NumberEnum.ONE.number);
|
|
|
+ publishStoryData.setId(weChatUserStory.getId());
|
|
|
+ int updateCount = baseMapper.updateById(publishStoryData);
|
|
|
+ return R.status(updateCount > 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public R withdrawStory(WeChatUserStoryVo weChatUserStoryVo) {
|
|
|
+ if (Objects.isNull(weChatUserStoryVo.getId())) {
|
|
|
+ return R.fail("请选择要发布的用户故事");
|
|
|
+ }
|
|
|
+ WeChatUserStory weChatUserStory = baseMapper.selectById(weChatUserStoryVo.getId());
|
|
|
+ if (ObjectUtils.isEmpty(weChatUserStory)) {
|
|
|
+ return R.fail("用户故事不存在或已被删除");
|
|
|
+ }
|
|
|
+ if (NumberEnum.Zero.number.equals(weChatUserStory.getStatus())) {
|
|
|
+ return R.success("用户故事已撤销");
|
|
|
+ }
|
|
|
+ WeChatUserStory withdrawStoryData = new WeChatUserStoryDto();
|
|
|
+ withdrawStoryData.setUpdateUser(AuthUtil.getUserId());
|
|
|
+ withdrawStoryData.setUpdateTime(new Date());
|
|
|
+ withdrawStoryData.setStatus(NumberEnum.Zero.number);
|
|
|
+ withdrawStoryData.setId(weChatUserStory.getId());
|
|
|
+ int updateCount = baseMapper.updateById(withdrawStoryData);
|
|
|
+ return R.status(updateCount > 0);
|
|
|
+ }
|
|
|
+}
|