Mall4j商城系统可以将企业的资源进行有效的整合,让商家的布局更加广泛、配套更加完善、管理更加成熟。另外,mall4j商城系统可以帮助企业集合各个渠道的资源,充分利用资源和渠道来提升商城的销量。还有多种营销功能:团购、秒杀、会员积分、优惠券、满减满折等营销玩法,把消费变成了一种“游戏”,有趣,有效果。
Mall4j商城系统功能亮点:1、系统具备高效的管理功能:商品管理、会员管理、订单管理、统计管理、支付管理、门店管理、库存管理等管理功能;2、灵活多样的营销赋能模式:满减、团购、秒杀、分销、积分、O2O、优惠券、套餐、赠品等营销方式;3、多终端适配:支持PC、H5、小程序、APP(android、IOS)。
Mall4j商城系统技术亮点:
SOA会通过ESB来作为系统和服务之间的通信桥梁,ESB本身还提供服务地址的管理、不同系统之间的协议转化和数据格式转化等等。消费者不需要关心目标的服务位置,实现了服务消费者和服务生产者的高度解耦,SOA可以消除信息孤岛并实现共享业务重用。
B2C商城系统【品牌电商】单用户商城系统,统一后台管理、多终端覆盖
B2B2C商城系统【平台电商】多用户商城系统,自营+多商家入驻电商平台
S2B2C商城系统【供应链】融合供应链、为供应商、经销商、零售商赋能
O2O商城系统【新零售】线上线下融合,助力传统零食企业转型与发展
电商平台【PC端、可视化】可视化编辑,完善购物体验及商品数据分析
商城小程序【小程序】轻应用,体验优质,快速抢占移动电商市场
商城APP【UNIAPP】IOS、Android双APP,聚拢用户购物更便捷
社交电商【移动电商】融合拼团、会员分销等多种前沿社交营销模式
积分商城【留存复购】结合会员体系、打造积分运营体系,引老留新
跨境电商【海外】海外支付,多语言切换,为企业提供跨境方案
Mall4j商城系统复杂,涉及的技术组件多,我们准备用OpenGauss替换MySQL5.7,改动的的东西涉及项目依赖文件、配置文件、解析文件,尤其数据库的内核能力以及对应用框架的兼容程度非常重要,假设开发者要大费周章大面积的改动,或者要动jar包的配置,估计OpenGauss替换MySQL5.7的计划就要搁浅或者放弃了。这不仅仅是一个MySQL5.7往openGauss3.0数据迁移的事,还是业务应用系统往新的数据库适应环境的事,openGauss3.0必须要输出给力,除了能够替代MySQL5.7,迁移成本也必须低,运维成本也低。
代码结构
[root@enmoedu1yami-b2b2c]#tree-L1.├──CHANGELOG.md├──compile.sh├──db├──doc├──docker-compose.yml├──LICENSE├──log├──mall4m├──mall4uni├──mall4v├──pom.xml├──README.md├──screenshot├──yami-shop-admin商城后端接口服务管理系统,数据库操作有关├──yami-shop-api商城前端接口调用系统,数据库操作有关├──yami-shop-bean├──yami-shop-commonpom.xml含有mysql的调用├──yami-shop-quartz├──yami-shop-security├──yami-shop-service└──yami-shop-syssrc/main/resources/mapper/SysMenuMapper.xml数据库操作有关15directories,6filespom.xml/opt/projects/yami-b2b2c/yami-shop-common目录,pom.xml内容如下,需要注释
改成
/opt/projects/yami-b2b2c/yami-shop-api/src/main/resources/logback/logback-prod.xml
里面确定唯一的PROJECT_PATH
/opt/projects/yami-b2b2c/yami-shop-admin/src/main/resources/里面有两个文件application-dev.yml和application-prod.yml
/opt/projects/yami-b2b2c/yami-shop-api/src/main/resources里面有两个文件application-dev.yml和application-prod.yml
把原来的注释,新的JDBC连接串如下
url:jdbc:postgresql://XXXXXX:15400/mytestusername:henleypassword:XXXXdriver-class-name:org.postgresql.Driver编译打包准备对代码进行编译打包,只需要在主代码下运行以下命令,这边主代码路径是/opt/projects/yami-b2b2c,当前目录下执行
mvncleanpackage-DskipTests成功执行后如下所示
自动在下面两处地方生成jar包,一个是商城后台接口,一个是商城前端接口
/opt/projects/yami-b2b2c/yami-shop-admin/target/yami-shop-admin-0.0.1-SNAPSHOT.jar
/opt/projects/yami-b2b2c/yami-shop-api/target/yami-shop-api-0.0.1-SNAPSHOT.jar
开发调试以开发的模式运行以下两个后端服务,可以获取DEBUG日志
-Dspring.profiles.active=dev意味着用开发模式运行-Dspring.profiles.active=prod意味着用生产模式运行
nohupjava-jar-Dspring.profiles.active=dev“/opt/projects/yami-b2b2c/yami-shop-admin/target/yami-shop-admin-0.0.1-SNAPSHOT.jar”>“/opt/projects/yami-b2b2c/yami-shop-admin/target/log/yami-shop-admin-console.log”&
nohupjava-jar-Dspring.profiles.active=dev“/opt/projects/yami-b2b2c/yami-shop-api/target/yami-shop-api-0.0.1-SNAPSHOT.jar”>“/opt/projects/yami-b2b2c/yami-shop-api/target/log/yami-shop-api-console.log”&
查看控制台日志输出
tail-f${PROJECT_PATH}/log/admin.log
tail-f${PROJECT_PATH}/log/api.log
启动后端服务管理平台
启动前端页面管理[root@enmoedu1mall4v-master]#npmrundev
一共有56个表
blob改成byteatinyint(2)改成smallintsmallint(10)改成smallintint(10)改成intbigint(10)改成bigintdouble(12,2)改成doubleprecisiondatetime改成date
openGauss的数据索引与MySQL的不一样
createindexIDX_QRTZ_J_REQ_RECOVERYonqrtz_job_details(SCHED_NAME,REQUESTS_RECOVERY);createindexIDX_QRTZ_J_GRPonqrtz_job_details(SCHED_NAME,JOB_GROUP);数据注释openGauss的数据注释与MySQL的不一样
openGauss要支持uuid,可以通过FUNCTION,下面定义sys_guid的FUNCTION
mytest=#\sfsys_guidCREATEORREPLACEFUNCTIONpg_catalog.sys_guid()RETURNScharactervaryingLANGUAGEsqlNOTFENCEDNOTSHIPPABLEAS$function$selectupper(md5(random()::text||clock_timestamp()::text))$function$;mytest=#selectsys_guid();sys_guid----------------------------------72F965C6E7FC0F5D547787E969D5596F(1row)mytest=#selectsys_guid();sys_guid----------------------------------3FBC1EC7357AC11BA0B06F4D116E051A(1row)mybatis的SQL表达XML由于openGauss语法对符号不识别,要把的特殊符号都去掉/opt/projects/yami-b2b2c/yami-shop-sys/src/main/resources/mapper/SysMenuMapper.xml
SysMenuMapper.xml把``的特殊符号都去掉。
举例一个增加会员的涉及的逻辑操作
点击管理员列表,再单击新增,会触发数据库新增数据,直接转发请求到后端服务yami-shop-admin
查看后端服务日志tailf/opt/projects/yami-b2b2c/yami-shop-admin/target/log/yami-shop-admin-console.log
openGauss=#\cmytest;Non-SSLconnection(SSLconnectionisrecommendedwhenrequiringhigh-security)Youarenowconnectedtodatabase"mytest"asuser"omm".mytest=#GRANTALLPRIVILEGESONTABLEtz_sys_userTOhenley;继续查看yami-shop-admin-console.log,报错变成
ERROR:nullvalueCausedby:org.postgresql.util.PSQLException:ERROR:nullvalueincolumn"id"violatesnot-nullconstraintDetail:Failingrowcontains(null,3,1).atorg.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2553)atorg.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2285)atorg.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:323)atorg.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:481)atorg.postgresql.jdbc.PgStatement.execute(PgStatement.java:401)atERROR:nullvalue原因是自增ID的问题,通过以下方法实现自增ID。
归纳一下OpenGauss3替换MySQL5.7涉及Mall4j商城系统代码需要修改的地方