package com.xiaopeng.operation.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.operation.dto.XpAgreementDTO;
import com.xiaopeng.operation.mapper.XpAgreementMapper;
import com.xiaopeng.api.model.operation.XpAgreement;
import com.xiaopeng.operation.service.XpAgreementService;
import com.xiaopeng.operation.vo.XpAgreementVo;
import org.springframework.stereotype.Service;
import java.util.*;
/**
*
* 协议设置 服务实现类
*
*
* @author liu
* @since 2026-02-03
*/
@Service
public class XpAgreementServiceImpl extends ServiceImpl implements XpAgreementService {
@Override
public XpAgreementVo getContentByType(Integer type) {
XpAgreement xpAgreement = this.getOne(new LambdaQueryWrapper().eq(XpAgreement::getContentType,type));
if (xpAgreement != null) {
XpAgreementVo xpAgreementVo = new XpAgreementVo();
xpAgreementVo.setId(xpAgreement.getId());
xpAgreementVo.setContent(xpAgreement.getContent());
xpAgreementVo.setType(xpAgreement.getContentType());
xpAgreementVo.setVersion(xpAgreement.getVersion());
return xpAgreementVo;
}
return null;
}
@Override
public List getContentByTypeAll() {
List list = this.list(new LambdaQueryWrapper().in(XpAgreement::getContentType, Arrays.asList(1,2,3,4)));
List xpAgreementVos = new ArrayList<>();
for (XpAgreement xpAgreement : list) {
XpAgreementVo xpAgreementVo = new XpAgreementVo();
xpAgreementVo.setId(xpAgreement.getId());
xpAgreementVo.setContent(xpAgreement.getContent());
xpAgreementVo.setType(xpAgreement.getContentType());
xpAgreementVo.setVersion(xpAgreement.getVersion());
xpAgreementVos.add(xpAgreementVo);
}
return xpAgreementVos;
}
/**
* 根据类型获取配置
* @param type
* @return
*/
@Override
public XpAgreement getAgreementContent(Integer type) {
return this.lambdaQuery().eq(XpAgreement::getContentType, type).last("limit 1").one();
}
@Override
public void saveAgreement(XpAgreementDTO dto) {
//根据类型查询协议
Optional opt = this.lambdaQuery().eq(XpAgreement::getContentType, dto.getContentType()).last("limit 1").oneOpt();
//如果存在则更新,不存在则新增
if (opt.isPresent()) {
XpAgreement xpAgreement = opt.get();
xpAgreement.setContent(dto.getContent());
updateById(xpAgreement);
} else {
XpAgreement xpAgreement = BeanUtil.copyProperties(dto, XpAgreement.class);
this.save(xpAgreement);
}
}
}