首页图文历史版本保存修改

This commit is contained in:
yf001217 2026-06-24 17:33:43 +08:00
parent 10533bdd7f
commit ead7236990
4 changed files with 52 additions and 27 deletions

View File

@ -52,6 +52,11 @@ public class AdvertisementListVO {
*/
private List<AdvertisementItemVO> items;
/**
* 版本号
*/
private String version;
public List<AdvertisementItemVO> getItems(){
if (StrUtil.isBlank(content)){
return null;

View File

@ -51,6 +51,11 @@ public class Advertisement implements Serializable {
*/
private String content;
/**
* 版本号
*/
private String version;
/**
* 是否启用
*/

View File

@ -11,13 +11,14 @@ import com.nflg.wms.common.pojo.vo.AdvertisementItemVO;
import com.nflg.wms.common.pojo.vo.AdvertisementListVO;
import com.nflg.wms.common.pojo.vo.AdvertisementVO;
import com.nflg.wms.common.util.UserUtil;
import com.nflg.wms.common.util.VUtil;
import com.nflg.wms.repository.entity.Advertisement;
import com.nflg.wms.repository.mapper.AdvertisementMapper;
import com.nflg.wms.repository.service.IAdvertisementService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects;
/**
@ -43,33 +44,30 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
}
@Override
@Transactional(rollbackFor = Exception.class)
public void save(AdvertisementSaveRequest request) {
if (Objects.isNull(request.getId())) {
VUtil.trueThrowBusinessError(lambdaQuery().eq(Advertisement::getType, request.getType())
LocalDateTime now = LocalDateTime.now();
String userName = UserUtil.getUserName();
String version = generateNextVersion(request.getType(), request.getPosition());
lambdaUpdate()
.set(Advertisement::getEnable, false)
.set(Advertisement::getUpdateBy, userName)
.set(Advertisement::getUpdateTime, now)
.eq(Advertisement::getType, request.getType())
.eq(Advertisement::getPosition, request.getPosition())
.exists())
.throwMessage("已存在相同位置的广告");
.update();
Advertisement ad = new Advertisement()
.setType(request.getType())
.setPosition(request.getPosition())
.setInterval(request.getInterval())
.setContent(JSONUtil.toJsonStr(request.getItems()))
.setEnable(request.getEnable())
.setCreateBy(UserUtil.getUserName())
.setCreateTime(LocalDateTime.now());
.setVersion(version)
.setEnable(true)
.setCreateBy(userName)
.setCreateTime(now);
save(ad);
} else {
Advertisement ad = new Advertisement()
.setId(request.getId())
.setType(request.getType())
.setPosition(request.getPosition())
.setInterval(request.getInterval())
.setContent(JSONUtil.toJsonStr(request.getItems()))
.setEnable(request.getEnable())
.setUpdateBy(UserUtil.getUserName())
.setUpdateTime(LocalDateTime.now());
updateById(ad);
}
}
@Override
@ -86,4 +84,19 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
.in(Advertisement::getId, request.getIds())
.update();
}
private String generateNextVersion(Long type, Long position) {
List<Advertisement> advertisements = lambdaQuery()
.select(Advertisement::getVersion)
.eq(Advertisement::getType, type)
.eq(Advertisement::getPosition, position)
.list();
int maxVersion = advertisements.stream()
.map(Advertisement::getVersion)
.filter(Objects::nonNull)
.mapToInt(version -> Integer.parseInt(version.substring(1)))
.max()
.orElse(0);
return "v" + (maxVersion + 1);
}
}

View File

@ -8,6 +8,8 @@
INNER JOIN dictionary_item di1 ON ad.type = di1.id
INNER JOIN dictionary_item di2 ON ad.position = di2.id
where di1.code = #{type} AND di2.code=#{position} and ad.enable
ORDER BY CAST(SUBSTRING(ad.version, 2) AS UNSIGNED) DESC
LIMIT 1
</select>
<select id="getList" resultType="com.nflg.wms.common.pojo.vo.AdvertisementListVO">