经营阅读网站需要怎么做,下载百度免费版,陕西金顶建设公司网站,it运维需要学哪些知识灵感来自于一项重复的工作#xff0c;下图中#xff0c;这类禁用启用、审核通过不通过、设计成是什么状态否什么状态的场景很多。每一个都需要单独提供接口。重复工作还蛮大的。于是#xff0c;基于该组件类捕获组件跳转写了这款通用接口。省时省力。 代码如下#xff1a;…灵感来自于一项重复的工作下图中这类禁用启用、审核通过不通过、设计成是什么状态否什么状态的场景很多。每一个都需要单独提供接口。重复工作还蛮大的。于是基于该组件类捕获组件跳转写了这款通用接口。省时省力。 代码如下
/** 文件名称: 类UnifyBatchUpdateEndpoint* 文件描述:* 创建人: simple_zeng* 创建时间: 2024/6/8*/
RestController
public class UnifyBatchUpdateEndpoint implements InterestedClassAware {Autowiredprivate SqlScriptExecutor sqlScriptExecutor;// 实体类名对应tableIdprivate static MapString, UnifyBatch BUCKET new HashMap();RequestMapping(/unify/status)public JsonResult unifyBatchUpdate(RequestBody UnifyBatchUpdate unifyBatchUpdate) {ListString ids unifyBatchUpdate.getIds();if (ZYListUtils.isEmptyList(ids)) {throw new LocalException(请至少选择一条数据);}Integer status unifyBatchUpdate.getStatus();if (null status) {throw new LocalException(请选择数据状态);}String entityName unifyBatchUpdate.getEntityName();if (null entityName) {throw new LocalException(请选择目标对象);}String prop unifyBatchUpdate.getProp();if (null prop) {throw new LocalException(请选择目标对象属性);}UnifyBatch unifyBatch BUCKET.get(entityName.toLowerCase());if (null unifyBatch) {throw new LocalException(不能识别的状态类型);}String tableName unifyBatch.getTableName(); // 表名String keyColumnName unifyBatch.getKeyColumnName(); // 主键字段名String column unifyBatch.getColumn(prop); // 状态字段名String idInWhere ZYWrapperHelper.toIn(ids); // id条件String sqlTemplate update %s set %s%s where %s in %s; // update sys_user set is_using1 where id in (1)String sql String.format(sqlTemplate, tableName, column, status, keyColumnName, idInWhere);sqlScriptExecutor.executeUpdateScript(sql);return JsonResult.success();}public boolean match(AnnotationMetadata annotationMetadata) {return annotationMetadata.hasAnnotation(TableName.class.getName());}Overridepublic void setClasses(SetClass? classes) {for (Class? aClass : classes) {TableName tableName aClass.getAnnotation(TableName.class);if (null tableName) {continue;}String simpleName aClass.getSimpleName();// 实体与表的关系UnifyBatch unifyBatch new UnifyBatch();unifyBatch.setTableName(tableName.value());Field[] fields ZYReflectUtils.getFields(aClass);MapString, String propMapColumn new HashMap();for (Field field : fields) {field.setAccessible(true);Class? type field.getType();// 主键TableId tableId field.getAnnotation(TableId.class);if (null ! tableId) {unifyBatch.setKeyColumnName(tableId.value());}// 只处理int类型的状态值修改if (!Integer.class.isAssignableFrom(type)) {continue;}// 字段TableField tableField field.getAnnotation(TableField.class);if (null ! tableField) {propMapColumn.put(field.getName().toLowerCase(), tableField.value());}}unifyBatch.setPropMapColumn(propMapColumn);if (!unifyBatch.empty()) {BUCKET.put(simpleName.toLowerCase(), unifyBatch);}}}
}Data
public class UnifyBatchUpdate implements Serializable {private ListString ids;private String entityName;private String prop;private Integer status;
}Data
public class UnifyBatch {private String tableName;private String keyColumnName;private MapString, String propMapColumn;public String getColumn(String prop) {return null ! propMapColumn ? propMapColumn.get(prop.toLowerCase()) : null;}public boolean empty() {if (ZYStrUtils.isNull(tableName)) {return true;}if (ZYStrUtils.isNull(keyColumnName)) {return true;}if (null propMapColumn || propMapColumn.isEmpty()) {return true;}return false;}
}调用示例后端不用写任何代码只需要告诉前端调哪个实体类和某个属性即可。岂不美哉。
POST http://localhost:{{port}}/unify/status
Content-Type: application/json
Authorization: {{auth_token}}
u-login-areaId: {{areaId}}{entityName: User,prop: isUsing,status: 1,ids: [1,1790218983664807938,1790219261998821377]
}