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

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 List<AdvertisementItemVO> items;
/**
* 版本号
*/
private String version;
public List<AdvertisementItemVO> getItems(){ public List<AdvertisementItemVO> getItems(){
if (StrUtil.isBlank(content)){ if (StrUtil.isBlank(content)){
return null; return null;

View File

@ -51,6 +51,11 @@ public class Advertisement implements Serializable {
*/ */
private String content; 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.AdvertisementListVO;
import com.nflg.wms.common.pojo.vo.AdvertisementVO; import com.nflg.wms.common.pojo.vo.AdvertisementVO;
import com.nflg.wms.common.util.UserUtil; 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.entity.Advertisement;
import com.nflg.wms.repository.mapper.AdvertisementMapper; import com.nflg.wms.repository.mapper.AdvertisementMapper;
import com.nflg.wms.repository.service.IAdvertisementService; import com.nflg.wms.repository.service.IAdvertisementService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
@ -43,33 +44,30 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
} }
@Override @Override
@Transactional(rollbackFor = Exception.class)
public void save(AdvertisementSaveRequest request) { public void save(AdvertisementSaveRequest request) {
if (Objects.isNull(request.getId())) { LocalDateTime now = LocalDateTime.now();
VUtil.trueThrowBusinessError(lambdaQuery().eq(Advertisement::getType, request.getType()) 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()) .eq(Advertisement::getPosition, request.getPosition())
.exists()) .update();
.throwMessage("已存在相同位置的广告");
Advertisement ad = new Advertisement() Advertisement ad = new Advertisement()
.setType(request.getType()) .setType(request.getType())
.setPosition(request.getPosition()) .setPosition(request.getPosition())
.setInterval(request.getInterval()) .setInterval(request.getInterval())
.setContent(JSONUtil.toJsonStr(request.getItems())) .setContent(JSONUtil.toJsonStr(request.getItems()))
.setEnable(request.getEnable()) .setVersion(version)
.setCreateBy(UserUtil.getUserName()) .setEnable(true)
.setCreateTime(LocalDateTime.now()); .setCreateBy(userName)
.setCreateTime(now);
save(ad); 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 @Override
@ -86,4 +84,19 @@ public class AdvertisementServiceImpl extends ServiceImpl<AdvertisementMapper, A
.in(Advertisement::getId, request.getIds()) .in(Advertisement::getId, request.getIds())
.update(); .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 di1 ON ad.type = di1.id
INNER JOIN dictionary_item di2 ON ad.position = di2.id INNER JOIN dictionary_item di2 ON ad.position = di2.id
where di1.code = #{type} AND di2.code=#{position} and ad.enable 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>
<select id="getList" resultType="com.nflg.wms.common.pojo.vo.AdvertisementListVO"> <select id="getList" resultType="com.nflg.wms.common.pojo.vo.AdvertisementListVO">