当前位置: 首页 > wzjs >正文

成都网站制作公司有哪些网络营销顾问是做什么的

成都网站制作公司有哪些,网络营销顾问是做什么的,dedecms 模版网站,dw做网站背景图片设置铺平前言 业务中常见需要修改表格某个字段的需求,传统的实现方式需要每个字段编写接口,存在重复开发,效率低的问题。可以设计个批量修改的接口,实现自定义修改需要的字段。 核心代码 入参 ApiModelProperty("主键")NotEm…

前言

业务中常见需要修改表格某个字段的需求,传统的实现方式需要每个字段编写接口,存在重复开发,效率低的问题。可以设计个批量修改的接口,实现自定义修改需要的字段。

核心代码

入参

    @ApiModelProperty("主键")@NotEmpty(message = "主键列表不能为空")private List<Long> ids;@ApiModelProperty("批量操作字段")@NotNull(message = "更新字段不能为null")private String updateFieldName;@ApiModelProperty("批量操作值")private Object updateFieldValue;@ApiModelProperty(value = "批量操作类型,update/clear/append")@NotNull(message = "批量操作类型不能为null")private String batchType;

枚举类

@Getter
@AllArgsConstructor
public enum BatchUpdateBatchTypeEnum {CLEAR("clear", "清除"),UPDATE("update", "修改"),APPEND("append", "追加"),;private String code;private String msg;//添加根据code获取枚举对象的方法public static BatchUpdateBatchTypeEnum getByCode(String code) {for (BatchUpdateBatchTypeEnum item : values()) {if (item.getCode().equals(code)) {return item;}}return null;}
}

修改方法

@Overridepublic void batchUpdate(BatchUpdateParam updateParam) throws NoSuchFieldException {BatchUpdateBatchTypeEnum batchTypeEnum = BatchUpdateBatchTypeEnum .getByCode(updateParam.getBatchType());if (batchTypeEnum == null) {throw new RuntimeException("批量操作类型错误");}Object value = updateParam.getUpdateFieldValue();boolean isList = false;if (value instanceof List) {isList = true;if (batchTypeEnum == BatchUpdateBatchTypeEnum .UPDATE) {value = JsonUtils.toJsonString(value);}} else if (batchTypeEnum == BatchUpdateBatchTypeEnum .APPEND) {//数据类型不是列表,不允许appendthrow new RuntimeException("数据类型不是列表,不允许append");}String fieldName = updateParam.getUpdateFieldName();//这里用的mybatisPlus的方法,如果没有的话使用反射也可以,主要是判断字段是否存在的ColumnCache columnCache = LambdaUtils.getColumnMap(IgShippingDemandDO.class).entrySet().stream().filter(e ->e.getKey().equalsIgnoreCase(fieldName)).map(Map.Entry::getValue).findAny().orElse(null);if (columnCache == null) {throw new RuntimeException("字段不存在");}if (batchTypeEnum == BatchUpdateBatchTypeEnum .CLEAR) {UpdateWrapper<UserDO> updateWrapper = new UpdateWrapper<UserDO>().in("id", updateParam.getIds()).set(columnCache.getColumn(), null);mapper.update(null, updateWrapper);} else {//update或者append校验参数类型是否都是list或者都不是if ((isList && UserDO.class.getDeclaredField(fieldName).getType() != List.class)|| (!isList && UserDO.class.getDeclaredField(fieldName).getType() == List.class)) {throw new RuntimeException("数据类型错误");}if (batchTypeEnum == BatchUpdateBatchTypeEnum .UPDATE) {UpdateWrapper<UserDO> updateWrapper = new UpdateWrapper<UserDO>().in("id", updateParam.getIds()).set(columnCache.getColumn(), value);mapper.update(null, updateWrapper);} else if (batchTypeEnum == BatchUpdateBatchTypeEnum .APPEND) {List<UserDO> userDOS = new ArrayList<>();//追加数据,如何实现for (Long batchId : updateParam.getIds()) {UserDO userDO = mapper.selectById(batchId);if (userDO == null) {continue;}//根据columnCache.getColumn()反射获取属性点值,并且将list的值合并进去,并且去重try {Field field = UserDO.class.getDeclaredField(fieldName);field.setAccessible(true); // 确保可以访问私有字段List<Object> list = getObjectList(field.get(userDO), value);UserDO userDOUpdate = new UserDO();userDOUpdate.setId(userDOUpdate.getId());//根据反射设置fieldName的值field.set(userDOUpdate, list);userDOS.add(userDOUpdate );} catch (Exception e) {throw new RuntimeException("字段错误");}}mapper.updateBatch(userDOS);}}}@Nullableprivate static List<Object> getObjectList(Object object, Object value) {if (object == null) {return  (List<Object>) value;}List<Object> list = (List<Object>)object;//将value的值合并进去,并且去重List<Object> valueList =  (List<Object>) value;for (Object o : valueList) {if (!list.contains(o)) {list.add(o);}}return list;}

前端界面

要更改的字段是列表的时候,可以追加的时候才展示追加字段值,不是列表的时候不展示

 

总结 

通过优化更改接口,只需要前段传入要更改的字段和值,即可实现表格任意字段的更改,减少了开发量,提高了开发效率。

http://www.dtcms.com/wzjs/388380.html

相关文章:

  • 做两个网站 之间超链接风云榜小说排行榜
  • 武汉公司 网站建设武汉百度开户代理
  • html个人网站策划书网络口碑营销名词解释
  • 建立网站第一步怎么做企业在线培训系统
  • 襄阳网站制作7月新闻大事件30条
  • 做网站 参考文献搭建一个网站平台需要多少钱
  • 做网站开发学什么软件市场营销推广方案模板
  • jsp网站建设项目实战电销系统软件排名
  • 有没有在线看片资源seo整站怎么优化
  • 手工做衣服的网站免费注册个人网站不花钱
  • 北京b2b网站开发东莞网站建设
  • wordpress站点用户注册西安网站建设制作
  • 微网站如何做微信支付宝支付免费接单平台
  • 淘客自己做网站百度网页版浏览器
  • 提高网站流量seo软件工具
  • 紧急通知网页升级记住我们商丘网站优化公司
  • 苏州市城乡建设档案馆网站临沂百度推广多少钱
  • 沈阳做网站的公司有哪些西安官网seo
  • 平面设计在线制作南宁白帽seo技术
  • 虎门做网站北京网络推广外包公司排行
  • 重庆市城乡建设与发展委员会网站google搜索引擎
  • 网站建设天津百度一下你就知道移动首页
  • 网站建设的实训周个人免费自助建站网站
  • 上海金融网站建设武汉seo诊断
  • 城市建设协会网站网络销售面试问题有哪些
  • 大连日语网站开发优化关键词有哪些方法
  • 广州市物联网应用示范项目seo点击软件
  • 500云空间网站互联网推广怎么做
  • 静态网站公用头部 调用标题ai智能营销系统
  • 西藏网站建设公司江阴企业网站制作