zhouhao vor 8 Jahren
Ursprung
Commit
d1b4f676ff

+ 50 - 0
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/SimpleCrudController.java

@@ -0,0 +1,50 @@
+/*
+ *
+ *  * Copyright 2016 http://www.hswebframework.org
+ *  *
+ *  * Licensed under the Apache License, Version 2.0 (the "License");
+ *  * you may not use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.
+ *
+ */
+
+package org.hswebframework.web.controller;
+
+import org.hswebframework.web.commons.entity.Entity;
+import org.hswebframework.web.service.CrudService;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * 通用增删改查控制器
+ *
+ * @author zhouhao
+ * @see QueryController
+ * @see CreateController
+ * @see UpdateController
+ * @see DeleteController
+ * @see CrudService
+ * @since 3.0
+ */
+public interface SimpleCrudController<E, PK, Q extends Entity>
+        extends QueryController<E, PK, Q>
+        , UpdateController<E, PK, E>
+        , CreateController<E, PK, E>
+        , DeleteController<PK> {
+
+    @SuppressWarnings("unchecked")
+    CrudService<E, PK> getService();
+
+    @Override
+    default E modelToEntity(E model, E entity) {
+        // model = entity
+        return model;
+    }
+}

+ 63 - 0
hsweb-commons/hsweb-commons-controller/src/main/java/org/hswebframework/web/controller/SimpleGenericEntityController.java

@@ -0,0 +1,63 @@
+/*
+ *
+ *  * Copyright 2016 http://www.hswebframework.org
+ *  *
+ *  * Licensed under the Apache License, Version 2.0 (the "License");
+ *  * you may not use this file except in compliance with the License.
+ *  * You may obtain a copy of the License at
+ *  *
+ *  *     http://www.apache.org/licenses/LICENSE-2.0
+ *  *
+ *  * Unless required by applicable law or agreed to in writing, software
+ *  * distributed under the License is distributed on an "AS IS" BASIS,
+ *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  * See the License for the specific language governing permissions and
+ *  * limitations under the License.
+ *
+ */
+
+package org.hswebframework.web.controller;
+
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.hswebframework.web.authorization.Permission;
+import org.hswebframework.web.authorization.annotation.Authorize;
+import org.hswebframework.web.commons.entity.Entity;
+import org.hswebframework.web.commons.entity.GenericEntity;
+import org.hswebframework.web.controller.message.ResponseMessage;
+import org.hswebframework.web.logging.AccessLogger;
+import org.hswebframework.web.service.CrudService;
+import org.springframework.web.bind.annotation.PatchMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * 通用实体的增删改查控制器
+ *
+ * @author zhouhao
+ * @see GenericEntity
+ * @see CrudController
+ * @see CrudService
+ */
+public interface SimpleGenericEntityController<E extends GenericEntity<PK>, PK, Q extends Entity>
+        extends SimpleCrudController<E, PK, Q> {
+
+    CrudService<E, PK> getService();
+
+    @Authorize(action = {Permission.ACTION_UPDATE, Permission.ACTION_ADD})
+    @PatchMapping(path = "/{id}")
+    @AccessLogger("{save_or_update}")
+    @ApiOperation("根据ID修改数据,如果数据不存在则新增一条数据")
+    @ApiResponses({
+            @ApiResponse(code = 200, message = "修改(新增)成功,返回数据ID"),
+            @ApiResponse(code = 401, message = "未授权"),
+            @ApiResponse(code = 403, message = "无权限"),
+            @ApiResponse(code = 409, message = "存在重复的资源")
+    })
+    default ResponseMessage<PK> saveOrUpdate(@PathVariable PK id, @RequestBody E data) {
+        data.setId(id);
+        return ResponseMessage.ok(getService().saveOrUpdate(data));
+    }
+
+}

+ 0 - 3
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/GenericService.java

@@ -19,10 +19,8 @@
 package org.hswebframework.web.service;
 
 import org.hswebframework.web.dao.CrudDao;
-import org.springframework.transaction.annotation.Transactional;
 
 /**
- * TODO 完成注释
  *
  * @author zhouhao
  * @see DefaultDSLQueryService
@@ -37,6 +35,5 @@ public interface GenericService<E, PK> extends
         DefaultDSLDeleteService<PK>,
         CrudService<E, PK> {
     @Override
-    @Transactional
     CrudDao<E, PK> getDao();
 }

+ 0 - 21
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/dsl/DSLQuery.java

@@ -1,21 +0,0 @@
-package org.hswebframework.web.service.dsl;
-
-
-import org.hswebframework.web.commons.entity.Entity;
-
-import java.util.List;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface DSLQuery<PO> extends Entity {
-    List<PO> list();
-
-    List<PO> list(int pageIndex, int pageSize);
-
-    PO single();
-
-    int count();
-}

+ 0 - 57
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/dsl/FieldCondition.java

@@ -1,57 +0,0 @@
-package org.hswebframework.web.service.dsl;
-
-
-import java.util.Collection;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public interface FieldCondition<PO, R extends DSLQuery<PO>> {
-
-    R accept(String termType, Object value);
-
-    R is(Object value);
-
-    R like(Object value);
-
-    R like$(Object value);
-
-    R $like(Object value);
-
-    R $like$(Object value);
-
-    R notLike(Object value);
-
-    R gt(Object value);
-
-    R lt(Object value);
-
-    R gte(Object value);
-
-    R lte(Object value);
-
-    R in(Object value);
-
-    R in(Object... values);
-
-    R in(Collection values);
-
-    R notIn(Object value);
-
-    R isEmpty();
-
-    R notEmpty();
-
-    R isNull();
-
-    R notNull();
-
-    R not(Object value);
-
-    R between(Object between, Object and);
-
-    R notBetween(Object between, Object and);
-
-}

+ 0 - 46
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/dsl/SimpleDSLQuery.java

@@ -1,46 +0,0 @@
-package org.hswebframework.web.service.dsl;
-
-import org.hsweb.ezorm.core.dsl.Query;
-import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-import org.hswebframework.web.service.DefaultQueryByEntityService;
-
-import java.util.List;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleDSLQuery<PO> implements DSLQuery<PO> {
-    protected Query<PO, QueryParamEntity> query = Query.empty(new QueryParamEntity());
-
-    public SimpleDSLQuery(DefaultQueryByEntityService<PO> service) {
-        query.setListExecutor(service::select);
-        query.setTotalExecutor(service::count);
-        query.setSingleExecutor(service::selectSingle);
-    }
-
-    public Query<PO, QueryParamEntity> dynamic() {
-        return query;
-    }
-
-    @Override
-    public List<PO> list() {
-        return query.list();
-    }
-
-    @Override
-    public List<PO> list(int pageIndex, int pageSize) {
-        return query.list(pageIndex, pageSize);
-    }
-
-    @Override
-    public PO single() {
-        return query.single();
-    }
-
-    @Override
-    public int count() {
-        return query.total();
-    }
-}

+ 0 - 155
hsweb-commons/hsweb-commons-service/hsweb-commons-service-simple/src/main/java/org/hswebframework/web/service/dsl/SimpleFieldCondition.java

@@ -1,155 +0,0 @@
-package org.hswebframework.web.service.dsl;
-
-import org.hsweb.ezorm.core.dsl.Query;
-import org.hswebframework.web.commons.entity.param.QueryParamEntity;
-
-import java.util.Collection;
-
-/**
- * TODO 完成注释
- *
- * @author zhouhao
- */
-public class SimpleFieldCondition<PO, R extends DSLQuery<PO>> implements FieldCondition<PO, R> {
-    Query<PO, QueryParamEntity> query;
-    R                           proxy;
-    String                      filed;
-
-    public SimpleFieldCondition(Query<PO, QueryParamEntity> query, R proxy, String filed) {
-        this.query = query;
-        this.proxy = proxy;
-        this.filed = filed;
-    }
-
-    @Override
-    public R accept(String termType, Object value) {
-        query.accept(filed, termType, value);
-        return proxy;
-    }
-
-    @Override
-    public R is(Object value) {
-        query.is(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R like(Object value) {
-        query.like(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R like$(Object value) {
-        query.like$(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R $like(Object value) {
-        query.$like(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R $like$(Object value) {
-        query.$like$(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R notLike(Object value) {
-        query.notLike(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R gt(Object value) {
-        query.gt(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R lt(Object value) {
-        query.lt(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R gte(Object value) {
-        query.gte(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R lte(Object value) {
-        query.lte(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R in(Object value) {
-        query.in(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R in(Object... values) {
-        query.in(filed, values);
-        return proxy;
-    }
-
-    @Override
-    public R in(Collection values) {
-        query.in(filed, values);
-        return proxy;
-    }
-
-    @Override
-    public R notIn(Object value) {
-        query.is(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R isEmpty() {
-        query.isEmpty(filed);
-        return proxy;
-    }
-
-    @Override
-    public R notEmpty() {
-        query.notEmpty(filed);
-        return proxy;
-    }
-
-    @Override
-    public R isNull() {
-        query.isNull(filed);
-        return proxy;
-    }
-
-    @Override
-    public R notNull() {
-        query.notNull(filed);
-        return proxy;
-    }
-
-    @Override
-    public R not(Object value) {
-        query.not(filed, value);
-        return proxy;
-    }
-
-    @Override
-    public R between(Object between, Object and) {
-        query.between(filed, between, and);
-        return proxy;
-    }
-
-    @Override
-    public R notBetween(Object between, Object and) {
-        query.notBetween(filed, between, and);
-        return proxy;
-    }
-}

+ 2 - 1
hsweb-system/hsweb-system-menu/hsweb-system-menu-controller/src/main/java/org/hswebframework/web/controller/menu/MenuController.java

@@ -27,6 +27,7 @@ import org.hswebframework.web.authorization.annotation.Authorize;
 import org.hswebframework.web.commons.entity.TreeSupportEntity;
 import org.hswebframework.web.commons.entity.param.QueryParamEntity;
 import org.hswebframework.web.controller.GenericEntityController;
+import org.hswebframework.web.controller.SimpleGenericEntityController;
 import org.hswebframework.web.controller.message.ResponseMessage;
 import org.hswebframework.web.entity.menu.MenuEntity;
 import org.hswebframework.web.logging.AccessLogger;
@@ -53,7 +54,7 @@ import static org.hswebframework.web.controller.message.ResponseMessage.ok;
 @Authorize(permission = "menu")
 @AccessLogger("菜单")
 @Api(value = "menu-manager", description = "系统菜单管理")
-public class MenuController implements GenericEntityController<MenuEntity, String, QueryParamEntity, MenuEntity> {
+public class MenuController implements SimpleGenericEntityController<MenuEntity, String, QueryParamEntity> {
 
     private MenuService menuService;