添加协议管理
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
package org.jiayunet.controller;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.jiayunet.pojo.po.Agreement;
|
||||||
|
import org.jiayunet.service.AgreementService;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议接口
|
||||||
|
*
|
||||||
|
* @author zk
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/public/agreement")
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class AgreementController {
|
||||||
|
|
||||||
|
private final AgreementService agreementService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据协议码查询最新启用版本的协议
|
||||||
|
*/
|
||||||
|
@GetMapping
|
||||||
|
public Agreement getByCode(@RequestParam String code) {
|
||||||
|
return agreementService.getByCode(code);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
package org.jiayunet.mapper;
|
||||||
|
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.jiayunet.pojo.po.Agreement;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议Mapper
|
||||||
|
*
|
||||||
|
* @author zk
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface AgreementMapper extends CommonMapper<Agreement> {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package org.jiayunet.pojo.po;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议表
|
||||||
|
*
|
||||||
|
* @author zk
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@TableName(value = "bg_agreement")
|
||||||
|
public class Agreement {
|
||||||
|
|
||||||
|
@TableId(type = IdType.ASSIGN_ID)
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议码,唯一标识一类协议,如 user_service / privacy_policy
|
||||||
|
*/
|
||||||
|
private String agreementCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改版本,每次修改+1,查询按此字段倒序
|
||||||
|
*/
|
||||||
|
private Integer version;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议名称
|
||||||
|
*/
|
||||||
|
private String agreementName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议内容(富文本)
|
||||||
|
*/
|
||||||
|
private String content;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 状态 1=启用 0=禁用
|
||||||
|
*/
|
||||||
|
private Integer status;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private Instant createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改时间
|
||||||
|
*/
|
||||||
|
private Instant updateTime;
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
package org.jiayunet.pojo.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议列表VO
|
||||||
|
*
|
||||||
|
* @author zk
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
public class AgreementListVo {
|
||||||
|
/** 主键ID */
|
||||||
|
private Long id;
|
||||||
|
/** 协议码 */
|
||||||
|
private String agreementCode;
|
||||||
|
/** 修改版本 */
|
||||||
|
private Integer version;
|
||||||
|
/** 协议名称 */
|
||||||
|
private String agreementName;
|
||||||
|
}
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
package org.jiayunet.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jiayunet.mapper.AgreementMapper;
|
||||||
|
import org.jiayunet.pojo.po.Agreement;
|
||||||
|
import org.jiayunet.pojo.vo.AgreementListVo;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议服务
|
||||||
|
* <p>主要功能:协议查询、创建/编辑(版本递增)</p>
|
||||||
|
* <p>使用表:bg_agreement(协议存储)</p>
|
||||||
|
*
|
||||||
|
* @author zk
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Service
|
||||||
|
public class AgreementService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private AgreementMapper agreementMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据协议码查询最新启用版本
|
||||||
|
* <p>按version倒序取第一条,status=1</p>
|
||||||
|
*/
|
||||||
|
public Agreement getByCode(String code) {
|
||||||
|
return agreementMapper.selectOne(new LambdaQueryWrapper<Agreement>().eq(Agreement::getAgreementCode, code).eq(Agreement::getStatus, 1).orderByDesc(Agreement::getVersion).last("LIMIT 1"));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 协议列表
|
||||||
|
* <p>返回所有协议,按version倒序,仅返回id、code、version、name</p>
|
||||||
|
*/
|
||||||
|
public List<AgreementListVo> list() {
|
||||||
|
List<Agreement> agreements = agreementMapper.selectList(new LambdaQueryWrapper<Agreement>().orderByDesc(Agreement::getVersion));
|
||||||
|
return agreements.stream().map(a -> {
|
||||||
|
AgreementListVo vo = new AgreementListVo();
|
||||||
|
vo.setId(a.getId());
|
||||||
|
vo.setAgreementCode(a.getAgreementCode());
|
||||||
|
vo.setVersion(a.getVersion());
|
||||||
|
vo.setAgreementName(a.getAgreementName());
|
||||||
|
return vo;
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建/编辑协议
|
||||||
|
* <p>1. 查询该code下最大版本 2. 不存在则创建(version=1),存在则新增记录(version=max+1)</p>
|
||||||
|
*/
|
||||||
|
public void saveOrUpdate(String agreementCode, String agreementName, String content) {
|
||||||
|
Agreement latest = agreementMapper.selectOne(new LambdaQueryWrapper<Agreement>().eq(Agreement::getAgreementCode, agreementCode).orderByDesc(Agreement::getVersion).last("LIMIT 1"));
|
||||||
|
|
||||||
|
Agreement agreement = new Agreement();
|
||||||
|
agreement.setAgreementCode(agreementCode);
|
||||||
|
agreement.setAgreementName(agreementName);
|
||||||
|
agreement.setContent(content);
|
||||||
|
agreement.setStatus(1);
|
||||||
|
|
||||||
|
if (latest == null) {
|
||||||
|
agreement.setVersion(1);
|
||||||
|
} else {
|
||||||
|
agreement.setVersion(latest.getVersion() + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
agreementMapper.insert(agreement);
|
||||||
|
log.info("协议保存成功 code:{} version:{}", agreementCode, agreement.getVersion());
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user