版本管理(控制LDBA-APP 零点八零)

字典复用
This commit is contained in:
2024-04-02 14:27:06 +08:00
parent 1d93bc217c
commit 5f633fefb6
18 changed files with 586 additions and 60 deletions

View File

@@ -0,0 +1,60 @@
package cn.ysk.cashier.service;
import cn.ysk.cashier.dto.TbPlatformDictQueryCriteria;
import cn.ysk.cashier.dto.TbVersionDto;
import cn.ysk.cashier.dto.TbVersionQueryCriteria;
import cn.ysk.cashier.pojo.TbVersion;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @website https://eladmin.vip
* @description 服务接口
* @author ww
* @date 2024-03-29
**/
public interface TbVersionService {
/**
* 查询数据分页
* @param criteria 条件
* pageable 分页参数
* @return Map<String,Object>
*/
Map<String,Object> queryAllPage(TbVersionQueryCriteria criteria);
/**
* 查询所有数据不分页
* @param criteria 条件参数
* @return List<TbVersionDto>
*/
List<TbVersionDto> queryAll(TbVersionQueryCriteria criteria);
/**
* 根据ID查询
* @param id ID
* @return TbVersionDto
*/
TbVersionDto findById(Integer id);
/**
* 创建
* @param resources /
* @return TbVersionDto
*/
TbVersionDto create(TbVersion resources);
/**
* 编辑
* @param resources /
*/
void update(TbVersion resources);
/**
* 多选删除
* @param ids /
*/
void deleteAll(Integer[] ids);
}

View File

@@ -0,0 +1,108 @@
package cn.ysk.cashier.service.impl;
import cn.ysk.cashier.dto.TbVersionDto;
import cn.ysk.cashier.dto.TbVersionQueryCriteria;
import cn.ysk.cashier.exception.BadRequestException;
import cn.ysk.cashier.mapper.TbVersionMapper;
import cn.ysk.cashier.pojo.TbVersion;
import cn.ysk.cashier.repository.TbVersionRepository;
import cn.ysk.cashier.service.TbVersionService;
import cn.ysk.cashier.utils.PageUtil;
import cn.ysk.cashier.utils.QueryHelp;
import cn.ysk.cashier.utils.RedisUtils;
import cn.ysk.cashier.utils.ValidationUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.Instant;
import java.util.List;
import java.util.Map;
/**
* @author ww
* @website https://eladmin.vip
* @description 服务实现
* @date 2024-03-29
**/
@Service
@RequiredArgsConstructor
public class TbVersionServiceImpl implements TbVersionService {
private final TbVersionRepository tbVersionRepository;
private final TbVersionMapper tbVersionMapper;
private final RedisUtils redisUtils;
@Override
public Map<String, Object> queryAllPage(TbVersionQueryCriteria criteria) {
Pageable pageable = PageRequest.of(criteria.getPage(), criteria.getPageSize(), Sort.by("createdAt"));
Page<TbVersion> page = tbVersionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder), pageable);
return PageUtil.toPage(page.map(tbVersionMapper::toDto));
}
@Override
public List<TbVersionDto> queryAll(TbVersionQueryCriteria criteria) {
return tbVersionMapper.toDto(tbVersionRepository.findAll((root, criteriaQuery, criteriaBuilder) -> QueryHelp.getPredicate(root, criteria, criteriaBuilder)));
}
@Override
@Transactional
public TbVersionDto findById(Integer id) {
TbVersion tbVersion = tbVersionRepository.findById(id).orElseGet(TbVersion::new);
ValidationUtil.isNull(tbVersion.getId(), "TbVersion", "id", id);
return tbVersionMapper.toDto(tbVersion);
}
@Override
@Transactional(rollbackFor = Exception.class)
public TbVersionDto create(TbVersion resources) {
int exist = tbVersionRepository.isExist(resources.getSource(), resources.getType(), resources.getVersion());
if (exist > 0) {
throw new BadRequestException("该版本已存在。");
}
resources.setCreatedAt(Instant.now().toEpochMilli());
TbVersionDto dto = tbVersionMapper.toDto(tbVersionRepository.save(resources));
if (dto.getIsUp() == 1) {
//产品标识:型号:版本
//LDBL_APP_VERSION:ios:version 存在即需要强制更新
redisUtils.set5(dto.getSource() + "_VERSION:" + dto.getType() + ":" + dto.getVersion(), dto.getMessage());
}
return dto;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(TbVersion resources) {
TbVersion tbVersion = tbVersionRepository.findById(resources.getId()).orElseGet(TbVersion::new);
ValidationUtil.isNull(tbVersion.getId(), "TbVersion", "id", resources.getId());
redisUtils.del5(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion());
tbVersion.copy(resources);
tbVersion.setUpdatedAt(Instant.now().toEpochMilli());
tbVersionRepository.save(tbVersion);
if (resources.getIsUp() == 1) {
//产品标识:型号:版本
//LDBL_APP_VERSION:ios:version 存在即需要强制更新
redisUtils.set5(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion(), tbVersion.getMessage());
} else {
redisUtils.del5(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion());
}
}
@Override
public void deleteAll(Integer[] ids) {
for (Integer id : ids) {
TbVersion tbVersion = tbVersionRepository.findById(id).orElseGet(TbVersion::new);
ValidationUtil.isNull(tbVersion.getId(), "TbVersion", "id", id);
tbVersionRepository.deleteById(id);
if (tbVersion.getIsUp() == 1) {
redisUtils.del5(tbVersion.getSource() + "_VERSION:" + tbVersion.getType() + ":" + tbVersion.getVersion());
}
}
}
}