数据表样例
后端思路
一、获取所有数据(服务实现类中方法)
(分两次,第一次默认表数据以及被覆盖的,第二次纯自定义的数据)
public List<HashMap> getList(Integer 所属人id) {
//初始化结果列表
List<HashMap> resList = new ArrayList<>();
//获取所有的【默认表】数据
QueryWrapper<默认表实体类> defQueryWrapper = new QueryWrapper<>();
defQueryWrapper .exists("SELECT * FROM `默认表表名`");
for (默认表实体类 def(默认表实体类别名): 默认表服务类.list(defQueryWrapper )) {
HashMap hashMap = new HashMap();
//banner
String banner = def.getBanner();
//默认表id
Integer defId = def.getId();
//自定义表id
Integer cusId = null;
//如果所属人id不为空
if (所属人id != null) {
QueryWrapper<自定义表实体类> cusQueryWrapper = new QueryWrapper<>();
cusQueryWrapper.eq("外键默认表id", def.getId());
cusQueryWrapper.eq("所属人id",所属人id);
自定义表实体类 cus (自定义表实体类别名)= 自定义表服务类.getOne(newRotationChartQueryWrapper);
if (cus != null) {
cusId = cus.getId();
banner = cus.getBanner();
}
}
hashMap.put("defId ", defId );
hashMap.put("cusId ", cusId );
hashMap.put("banner", banner);
resList.add(hashMap);
}
//获取所有的【自定义表】数据
HashMap hashMap = new HashMap();
hashMap.put("外键默认表id", 0);
QueryWrapper<自定义表实体类> cusQueryWrapper = new QueryWrapper<>();
cusQueryWrapper.eq("外键默认表id", def.getId());
cusQueryWrapper.eq("所属人id",所属人id);
自定义表实体类 cus(自定义表实体类别名)= 自定义表服务类.getOne(cusQueryWrapper);
if (cus!= null) {
hashMap.put("cusId ", cusId.getId());
hashMap.put("banner", cusId.getBanner());
}
resList.add(hashMap);
return resList;
}
二、新增或编辑数据(服务实现类中方法)
public boolean saveOrUpdate(自定义表实体 cus(自定义表实体别名)) {
//如果有id就是编辑
if (cus.getId() != null) {
return 自定义表服务类.updateById(cus);
//没有id就是新增
} else {
//如果为0就是新增自定义,
//相反就是覆盖默认需要查重,默认只有几个,所以不会新增
if (cus.getRotationChartId() != 0) {
//查重,不可以重复新增自定义
QueryWrapper<自定义表实体> cusQueryWrapper = new QueryWrapper<>();
cusQueryWrapper .eq("外键默认表id", cus.默认表id());
cusQueryWrapper .eq("所属人id", cus.所属人id());
if (自定义表服务类.getOne(cusQueryWrapper ) != null) {
return false;
}
}
return 自定义表服务类.save(cus);
}
}
三、删除(服务实现类中方法)
删除后,新增的(外键默认表id为0的数据)就会彻底删除
修改的(外键默认表id不为0的数据)就会展示默认表的banner数据
public boolean deleteOrSetDeafult(Integer[] ids) {
//Arrays.asList(ids)数组转为集合
return 自定义表服务类.removeByIds(Arrays.asList(ids));
}
前端思路
一、列表根据数据结构获取
二、修改或保存传值
先判断选定要修改的这一行数据是自定义表数据(自定义表id=null)还是默认表(自定义表id=N)数据
-
自定义表(自定义表id!=null) 主id=自定义表的id
-
继续判断该数据是修改默认(不为0)还是自增(0)
- 修改默认传值
- id=主id
- banner
- 自增传值
- id=主id
- 外键默认表id=0
- banner
- 修改默认传值
-
-
默认表(自定义表id=null) 主id=默认表id,直接传值:
-
不传id(这里其实是在自定义表新增)
-
banner
-
外键默认表id=主id
-
三、删除(恢复默认数据)
后端接口:https://172.xxx.xx.xx:端口号/deletOrSetDef/{ids}
传数组就好, {ids}=1,2,3