From f62fc5be2b38c5452f0311dd0bb5b57a03bae64f Mon Sep 17 00:00:00 2001 From: dialYun <1552333077@qq.com> Date: Wed, 22 Jan 2025 13:29:19 +0000 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=B5=8B=E8=AF=95=E7=94=A8?= =?UTF-8?q?=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dialYun <1552333077@qq.com> --- .../io/nop/auth/service/mapping/ItemData.java | 43 +++++++++++ .../mapping/MappingCrudBizInitializer.java | 77 +++++++++++++++++++ .../mapping/MappingDynamicCrudBizModel.java | 42 ++++++++++ .../service/mapping/TestRequestMethod.java | 38 +++++++++ .../_vfs/nop/auth/beans/app-test.beans.xml | 2 + 5 files changed, 202 insertions(+) create mode 100644 nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/ItemData.java create mode 100644 nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingCrudBizInitializer.java create mode 100644 nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingDynamicCrudBizModel.java create mode 100644 nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/TestRequestMethod.java diff --git a/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/ItemData.java b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/ItemData.java new file mode 100644 index 000000000..80f597879 --- /dev/null +++ b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/ItemData.java @@ -0,0 +1,43 @@ +package io.nop.auth.service.mapping; + +import io.nop.api.core.annotations.data.DataBean; +import io.nop.api.core.annotations.graphql.GraphQLReturn; +import io.nop.auth.service.biz.DemoRequest; +import io.nop.orm.support.DynamicOrmEntity; +import java.util.ArrayList; +import java.util.List; + +@DataBean +public class ItemData { + + private Long totalNum = 0L; + +// private List rows = new ArrayList<>(); +// +// public List getRows() { +// return rows; +// } +// +// public void setRows(List rows) { +// this.rows = rows; +// } + + private List rows = new ArrayList<>(); + +// @GraphQLReturn(bizObjName = "NopAuthUserEx") + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public Long getTotalNum() { + return totalNum; + } + + public void setTotalNum(Long totalNum) { + this.totalNum = totalNum; + } +} diff --git a/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingCrudBizInitializer.java b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingCrudBizInitializer.java new file mode 100644 index 000000000..e81e4bda2 --- /dev/null +++ b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingCrudBizInitializer.java @@ -0,0 +1,77 @@ +package io.nop.auth.service.mapping; + +import io.nop.api.core.convert.ConvertHelper; +import io.nop.biz.BizConstants; +import io.nop.biz.api.IBizObjectManager; +import io.nop.biz.decorator.IActionDecoratorCollector; +import io.nop.biz.impl.BizObjectBuildHelper; +import io.nop.dao.api.IDaoProvider; +import io.nop.dao.txn.ITransactionTemplate; +import io.nop.graphql.core.biz.IBizObjectQueryProcessorBuilder; +import io.nop.graphql.core.biz.IGraphQLBizInitializer; +import io.nop.graphql.core.biz.IGraphQLBizObject; +import io.nop.graphql.core.reflection.GraphQLBizModel; +import io.nop.graphql.core.reflection.ReflectionBizModelBuilder; +import io.nop.graphql.core.schema.TypeRegistry; +import jakarta.inject.Inject; +import java.util.List; +import java.util.Set; + +public class MappingCrudBizInitializer implements IGraphQLBizInitializer { + + private IDaoProvider daoProvider; + private ITransactionTemplate transactionTemplate; + + private IBizObjectManager bizObjectManager; + + private List collectors; + + @Inject + public void setDaoProvider(IDaoProvider daoProvider) { + this.daoProvider = daoProvider; + } + + @Inject + public void setBizObjectManager(IBizObjectManager bizObjectManager) { + this.bizObjectManager = bizObjectManager; + } + + @Inject + public void setTransactionTemplate(ITransactionTemplate transactionTemplate) { + this.transactionTemplate = transactionTemplate; + } + + public void setDecoratorCollectors(List collectors) { + this.collectors = collectors; + } + + private MappingDynamicCrudBizModel newBizModelBean(IGraphQLBizObject bizObj) { + MappingDynamicCrudBizModel biz = new MappingDynamicCrudBizModel(); + biz.setBizObjName(bizObj.getBizObjName()); + biz.setEntityName(bizObj.getEntityName()); + biz.setDaoProvider(daoProvider); + biz.setTransactionTemplate(transactionTemplate); + biz.setBizObjectManager(bizObjectManager); + return biz; + } + + @Override + public int order() { + return NORMAL_PRIORITY - 99; + } + + @Override + public void initialize(IGraphQLBizObject bizObj, + IBizObjectQueryProcessorBuilder queryProcessorBuilder, + TypeRegistry typeRegistry) { + Set base = ConvertHelper.toCsvSet(bizObj.getExtAttribute(BizConstants.GRAPHQL_BASE_NAME)); + if (base != null && base.contains(BizConstants.BASE_CRUD)) { + MappingDynamicCrudBizModel bean = newBizModelBean(bizObj); + GraphQLBizModel bizModel = ReflectionBizModelBuilder.INSTANCE.build(bean, typeRegistry); + + BizObjectBuildHelper.addDefaultAction(bizObj, bizModel, collectors); + System.out.println("MappingCrudBizInitializer initialize"); + } + } + +} diff --git a/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingDynamicCrudBizModel.java b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingDynamicCrudBizModel.java new file mode 100644 index 000000000..6bcda8954 --- /dev/null +++ b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/MappingDynamicCrudBizModel.java @@ -0,0 +1,42 @@ +package io.nop.auth.service.mapping; + +import io.nop.api.core.annotations.biz.BizModel; +import io.nop.api.core.annotations.biz.BizQuery; +import io.nop.api.core.beans.FieldSelectionBean; +import io.nop.auth.dao.entity.NopAuthUser; +import io.nop.auth.service.biz.DemoRequest; +import io.nop.biz.crud.CrudBizModel; +import io.nop.dao.api.DaoProvider; +import io.nop.orm.dao.IOrmEntityDao; +import io.nop.orm.model.IEntityModel; +import io.nop.orm.support.DynamicOrmEntity; +import java.util.ArrayList; +import java.util.List; + +@BizModel("") +public class MappingDynamicCrudBizModel extends CrudBizModel { + + @BizQuery +// @GraphQLReturn(bizObjName = BIZ_OBJ_NAME_THIS_OBJ) + public List atListItem(FieldSelectionBean fieldSelectionBean) { + + List list = new ArrayList<>(); + ItemData itemData = new ItemData(); + itemData.setTotalNum(1L); + +// DemoRequest demoRequest = new DemoRequest(); +// demoRequest.setUserId("1"); +// demoRequest.setUserName("demo"); +// itemData.getRows().add(demoRequest); + + IEntityModel entityModel = + ((IOrmEntityDao) daoFor(NopAuthUser.class)).getEntityModel(); + + DynamicOrmEntity dynamicOrmEntity = new DynamicOrmEntity(entityModel); + dynamicOrmEntity.prop_set("id", "111111"); + itemData.getRows().add(dynamicOrmEntity); + + list.add(itemData); + return list; + } +} diff --git a/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/TestRequestMethod.java b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/TestRequestMethod.java new file mode 100644 index 000000000..e0f531cd2 --- /dev/null +++ b/nop-auth/nop-auth-service/src/test/java/io/nop/auth/service/mapping/TestRequestMethod.java @@ -0,0 +1,38 @@ +package io.nop.auth.service.mapping; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +import io.nop.api.core.annotations.autotest.EnableSnapshot; +import io.nop.api.core.beans.ApiRequest; +import io.nop.api.core.beans.ApiResponse; +import io.nop.api.core.beans.graphql.GraphQLRequestBean; +import io.nop.api.core.beans.graphql.GraphQLResponseBean; +import io.nop.autotest.junit.JunitAutoTestCase; +import io.nop.biz.service.BizActionInvoker; +import io.nop.core.model.selection.FieldSelectionBeanParser; +import io.nop.graphql.core.IGraphQLExecutionContext; +import io.nop.graphql.core.engine.IGraphQLEngine; +import jakarta.inject.Inject; +import java.util.Map; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + + +@Disabled +public class TestRequestMethod extends JunitAutoTestCase { + + @Inject + IGraphQLEngine graphQLEngine; + + @EnableSnapshot + @Test + public void testFindListItem() { + ApiRequest> requestData = new ApiRequest<>(); + requestData.setSelection(new FieldSelectionBeanParser().parseFromText(null, "totalNum, rows{userId}")); + + IGraphQLExecutionContext context = + graphQLEngine.newRpcContext(null, "NopAuthUserEx__atListItem", requestData); + ApiResponse apiResponse = graphQLEngine.executeRpc(context); + assertTrue(apiResponse.isOk()); + } +} \ No newline at end of file diff --git a/nop-auth/nop-auth-service/src/test/resources/_vfs/nop/auth/beans/app-test.beans.xml b/nop-auth/nop-auth-service/src/test/resources/_vfs/nop/auth/beans/app-test.beans.xml index 947d675eb..6278d3b66 100644 --- a/nop-auth/nop-auth-service/src/test/resources/_vfs/nop/auth/beans/app-test.beans.xml +++ b/nop-auth/nop-auth-service/src/test/resources/_vfs/nop/auth/beans/app-test.beans.xml @@ -10,4 +10,6 @@ + + \ No newline at end of file -- Gitee