package space.anyi.serve.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import space.anyi.serve.entity.meta.Meta; import space.anyi.serve.service.MetaService; import space.anyi.serve.mapper.MetaMapper; import org.springframework.stereotype.Service; /** * @author yangyi * @description 针对表【meta(元数据表,用于存储键值对形式的配置或扩展属性)】的数据库操作Service实现 * @createDate 2026-06-14 14:33:39 */ @Service public class MetaServiceImpl extends ServiceImpl implements MetaService{ public static final Logger log = LoggerFactory.getLogger(MetaServiceImpl.class); public final ObjectMapper objectMapper; public MetaServiceImpl(ObjectMapper objectMapper) { this.objectMapper = objectMapper; } @Override public Boolean updateMeta(String key, Meta meta) { try { //UpdateWrapper updateWrapper = new UpdateWrapper().eq("key", key).set("value", objectMapper.writeValueAsString(meta.getValue())); //return update(updateWrapper); return getBaseMapper().updateValueByKey(key, objectMapper.writeValueAsString(meta.getValue())); } catch (JsonProcessingException e) { log.error("网站元素对象序列化为JSON失败",e); e.printStackTrace(); throw new RuntimeException(e); } } @Override public Boolean updateMetaValue(String key, Object value) { try { String json = objectMapper.writeValueAsString(value); UpdateWrapper updateWrapper = new UpdateWrapper() .eq("key", key) .set("value", json); return update(updateWrapper); } catch (JsonProcessingException e) { log.error("序列化JSON失败", e); throw new RuntimeException(e); } } @Override public Meta getMeta(String key) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper() .eq(Meta::getKey, key); return getOne(queryWrapper); } }