/*
java service 服务接口
*/
package tx.txservice.service;
import cn.hutool.core.convert.Convert;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageInfo;
import tx.txservice.enums.TxConstants;
import java.util.List;
public interface TemplateService<TDTO, TVO, TQUERY> extends IService<TDTO> {
default Long getTotal(List<?> pList)
/*****
* Author:狂客
* QQ:214109721
* @Description:获取信息总数
* @param pList 集合
* @return:信息总数
*****/
{
return new PageInfo(pList).getTotal();
}
//格式化查询对象返回QueryWrapper
private QueryWrapper<TDTO> getQueryWrapper(TQUERY pQuery);
//查询列表
private List<TDTO> getList(QueryWrapper<TDTO> queryWrapper);
//查询列表
public default List<TDTO> getList(TQUERY pQuery);
//DTO格式化
public TDTO formatDTO(TDTO pItem);
public default List<TDTO> formatDTO(List<TDTO> pList)
/*****
* Author:狂客
* QQ:214109721
* @Description:列表DTO格式化
* @param pList 集合
* @return:无
*****/
{
pList.forEach(vItem -> {
formatDTO(vItem);
});
return pList;
}
//DTO格式化
public TDTO formatDTO(TDTO pItem);
//列表格式化
public List<TVO> formatVO(List<TDTO> pList, Class<TVO> pClass);
//单条VO格式化
public default TVO formatVO(TDTO pItem, Class<TVO> pClass) {
return formatVO(Convert.convert(pClass, pItem));
}
//单条VO格式化
public TVO formatVO(TVO pItem);
//查询单条数据
public TDTO getOne(TQUERY pQuery);
//查询单条数据
private TDTO getOne(QueryWrapper<TDTO> pQuery);
//根据ID查询单条数据
public TDTO getOneById(Long pId);
//id解密
public Long idDecode(String pSid);
//id加密
public String idEncode(Long pId);
//删除
public void delete(String[] pSid);
//编辑
public void edit(TDTO pItem);
//添加
public void add(TDTO pItem);
}
/*
template service impl 服务实现类
*/
package tx.txservice.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.crypto.symmetric.AES;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import tx.txservice.service.TemplateService;
import java.util.List;
@Data
public class TemplateServiceImpl<TMAPPER, TDTO, TVO, TQUERY> extends ServiceImpl<TMAPPER, TDTO> implements TemplateService<TDTO, TVO,TQUERY> {
//前端更多
private Boolean frontMore;
//后端更多
private Boolean bgMore;
//加密类
@Autowired
private AES encodeAES;
//格式化查询对象返回QueryWrapper
@Override
private QueryWrapper<TDTO> getQueryWrapper(TQUERY pQuery)
{
throw new RuntimeException("getQueryWrapper 未初始化");
}
@Override
public List<TDTO> getList(TQUERY pQuery)
{
throw new RuntimeException("getList 1 未初始化");
QueryWrapper<TDTO> vQuery = new QueryWrapper<TDTO>();
return getList(vQuery);
}
@Override
private List<TDTO> getList(QueryWrapper<TDTO> queryWrapper) {
throw new RuntimeException("getList 2 未初始化");
}
@Override
public List<TVO> formatVO(List<TDTO> pList, Class<TVO> pClass)
/*****
* Author:狂客
* QQ:214109721
* @Description:列表VO格式化
* @param pList 集合
* @param pClass VO class
* @return:无
*****/
{
List<TVO> vList = Convert.toList(pClass, pList);
Boolean vFrontMore = frontMore;
Boolean vBgMore = bgMore;
vList.forEach(vItem -> {
frontMore = vFrontMore;
bgMore = vBgMore;
formatVO(vItem);
});
return vList;
}
//DTO格式化
public TDTO formatDTO(TDTO pItem)
{
throw new RuntimeException("formatDTO 未初始化");
return pItem;
}
@Override
public TVO formatVO(TVO pItem) {
throw new RuntimeException("formatVO 未初始化");
frontMore = false; //必须要写到自己代码formatVO最后里
bgMore = false;//必须要写到自己代码formatVO最后里
return null;
}
@Override
public TDTO getOne(TQUERY pQuery)
{
throw new RuntimeException("getOne 1 未初始化");
QueryWrapper<TDTO> vQuery = new QueryWrapper<TDTO>();
return getOne(vQuery);
}
@Override
public TDTO getOne(QueryWrapper<TDTO> pQuery) {
return formatDTO(super.getOne(pQuery));
}
@Override
public TDTO getOneById(Long pId) {
/*
建议这里通过 TQUERY 里设置个primaryId 来作为筛选条件 统一调用 getOne(QueryWrapper<TDTO> pQuery)
TQUERY vQuery = new TQUERY();
vQuery.setPrimaryId(1);
return getOne(vQuery);
*/
throw new RuntimeException("getOneById 未初始化");
return null;
}
@Override
public Long idDecode(String pSid) {
Long vId = new Long(encodeAES.decryptStr(pSid));
return vId;
}
@Override
public String idEncode(Long pId) {
return encodeAES.encryptHex(Convert.toStr(pId));
}
@Override
public void delete(String[] pSid) {
}
@Override
public void edit(TDTO pItem) {
}
@Override
public void add(TDTO pItem) {
}
}
/*
接口继承
*/
package tx.txservice.service;
import tx.txservice.domain.KuangKeDTO;
import tx.txservice.domain.vo.KuangKeVO;
import tx.txservice.domain.vo.KuangKeQuery;
public interface KuangKeService extends TemplateService<KuangKeDTO, KuangKeVO, KuangKeQuery> {
}
/*
实现类继承
*/
package tx.txservice.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tx.txservice.domain.KuangKeDTO;
import tx.txservice.domain.vo.KuangKeVO;
import tx.txservice.mapper.KuangKeMapper;
import tx.txservice.service.KuangKeService;
import tx.txservice.service.KuangKeQuery;
import java.util.List;
@Service
public class KuangKeServiceImpl extends TemplateServiceImpl<KuangKeMapper, KuangKeDTO, KuangKeVO, KuangKeQuery> implements KuangKeService {
@Autowired
private KuangKeMapper kuangKeMapper;
//格式化查询对象返回QueryWrapper
@Override
private QueryWrapper<KuangKeDTO> getQueryWrapper(KuangKeQuery pQuery)
{
QueryWrapper<KuangKeDTO> vQuery = new QueryWrapper<KuangKeDTO>();
if(pQuery.getIgnoreDel())
//忽略已删除数据
{
}
return vQuery;
}
@Override
public List<KuangKeDTO> getList(KuangKeQuery pQuery) {
QueryWrapper<KuangKeDTO> vQuery = getQueryWrapper(pQuery);
return getList(vQuery);
}
@Override
private List<KuangKeDTO> getList(QueryWrapper<KuangKeDTO> queryWrapper) {
List<KuangKeDTO> vList = list(queryWrapper);
for (KuangKeDTO vItem : vList) {
formatDTO(vItem);
}
return vList;
}
//DTO格式化
public TDTO formatDTO(TDTO pItem)
{
return pItem;
}
@Override
public KuangKeVO formatVO(KuangKeVO pItem)
/*****
* Author:狂客
* QQ:214109721
* @Description:VO格式化输出
* @param pItem 内容
* @return:新内容
*****/
{
/*开发自己代码 Begin*/
if(frontMore)
//前端获取更多
{
}
if(bgMore)
//后端获取更多
{
}
/*开发自己代码 End*/
frontMore = false; //必须要写到自己代码formatVO最后里
bgMore = false;//必须要写到自己代码formatVO最后里
return pItem;
}
@Override
private KuangKeDTO getOne(QueryWrapper<KuangKeDTO> pQuery)
/*****
* Author:狂客
* QQ:214109721
* @Description:获取单条内容
* @param pQuery 查询条件
* @return:内容
*****/
{
return formatDTO(super.getOne(pQuery));
}
@Override
publicKuangKeDTO getOne(KuangKeQuery pQuery) {
QueryWrapper<KuangKeDTO> vQuery = getQueryWrapper(pQuery);
return getOne(vQuery);
}
@Override
public KuangKeDTO getOneById(Long pId)
/*****
* Author:狂客
* QQ:214109721
* @Description:根据id获取单条内容
* @param pId id
* @return:内容
*****/
{
KuangKeQuery vQuery = new KuangKeQuery;
vQuery.setPrimaryId(pId);
return getOne(vQuery);
}
@Override
public void delete(String[] pSid) {
}
@Override
public void edit(KuangKeDTO pItem) {
}
@Override
public void add(KuangKeDTO pItem) {
}
}
/*
Mapper
*/
@Component
public interface KuangKeMapper extends BaseMapper<KuangKeDTO> {
}
/**
* TQUERY都需要继承这个类
**/
@Data
public class BaseQuery
{
//唯一id
private Long primaryId;
//忽略已删除
private Boolean ignoreDel;
}