Moqui是一个很适合用来开发CRM、ERP的框架,用XML来写程序也大大降低开发难度,看看其自带的PopCommerce和PopRestStore例子,照猫画虎,开发起来不算费力。只是感觉其将页面展示与逻辑控制放在一起的写法很不好。好在它也可以用来提供REST接口,最近用Moqui框架开发了一个电商的Rest后台,供小程序和前端网站使用。记录一点经验。
创建目录
在runtime/component下建一个目录,用来放自己的内容。就用Shop命名吧,在该目录下建立以下子目录:
- data,用来放demo和setup的data。可以把PopRestStore下的复制过来改就是了,artifactName就是接口的名字。比如命名为shop,则访问路径是:http://localhost:8080/rest/s1/shop;
<entity-facade-xml type="seed-initial">
<!-- ecommerce authz/permission for ALL users -->
<moqui.security.ArtifactGroup artifactGroupId="SHOP_API" description="Shop (via root screen)"/>
<moqui.security.ArtifactGroupMember artifactGroupId="SHOP_API" artifactTypeEnumId="AT_REST_PATH"
inheritAuthz="Y" artifactName="/shop"/>
<moqui.security.ArtifactAuthz artifactAuthzId="SHOP_API_ALL" userGroupId="ALL_USERS" artifactGroupId="SHOP_API"
authzTypeEnumId="AUTHZT_ALWAYS" authzActionEnumId="AUTHZA_ALL"/>
</entity-facade-xml>
- entity,如果需要新建自己的表,就需要建立此目录;
- service,放一个shop.rest.xml的文件,可以把PopRestStore下的复制过来改就是了。下面再建 一个子目录,命名为shop。以下是shop.rest.xml中Store部分,注意service name里开头的shop指service下的shop目录,如果要发布到linux或BSD之类的服务器上,注意大小写要保持一致。访问路径分别是: http://localhost:8080/rest/s1/shop/store/index 和http://localhost:8080/rest/s1/shop/store/products,有点长。 分别提供store的首页目录、产品目录,也就是电商常用到的。有require-authentication=“anonymous-view”,这些路径就可公开访问,无须登录。如果是购物车、用户中心之类要登录 的页面,不放这句就行;
<!-- Store Services -->
<resource name="store" require-authentication="anonymous-view">
<resource name="index">
<method type="get">
<service name="shop.StoreServices.get#StoreIndex"/>
</method>
</resource>
<resource name="products">
<method type="get">
<service name="shop.StoreServices.get#StoreProducts"/>
</method>
</resource>
</resource>
写Service
按Moqui的数据模型,一个后台可以管多家公司(party),一家公司可以建多个店铺(store)。登录后台,用PopERP建立一个公司party,再建立store,store可以有ProductStoreCategory,下面包含不同的目录,用storeCategoryTypeEnumId来区分。我们使用其已有的类型即可:
- PsctHomePage表示首页目录种类,下面包含滚屏目录、推荐产品、新产品、特色产品、热卖产品、折扣产品等目录。
- PsctBrowseRoot表示产品目录,下面包含不同的目录与子目录。
去applications/tools/entities下filter输入Enumeration,再点查找,new value,增加两个目录类型(productCategoryTypeEnumId),Enum ID分别输