2023默认数据不作修改,进行假修改(添加新表数据)覆盖默认表,再作为数据展示,并且支持自定义新增

数据表样例

后端思路

一、获取所有数据(服务实现类中方法)

(分两次,第一次默认表数据以及被覆盖的,第二次纯自定义的数据)

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)数据
  1. 自定义表(自定义表id!=null)      主id=自定义表的id
    1. 继续判断该数据是修改默认(不为0)还是自增(0)
      1. 修改默认传值
        1. id=主id
        2. banner
      2. 自增传值
        1. id=主id
        2. 外键默认表id=0
        3. banner
  2. 默认表(自定义表id=null)        主id=默认表id,直接传值:
    1. 不传id(这里其实是在自定义表新增)
    2. banner
    3. 外键默认表id=主id

三、删除(恢复默认数据) 

后端接口:https://172.xxx.xx.xx:端口号/deletOrSetDef/{ids}

  传数组就好, {ids}=1,2,3

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

假客套

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值