# 共享设备OEM系统 **Repository Path**: hryc/share-device-oem ## Basic Information - **Project Name**: 共享设备OEM系统 - **Description**: 共享设备租借系统,使用微服务框架,以添加服务器方式扩展,配合Nginx,Redis,Zookeeper理论支持百万级设备,已支持共享充电宝,酒店便捷线充,共享充电插座,便捷储能电池等设备,并提供商城功能 - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: http://www.judaozhineng.com - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 10 - **Created**: 2025-01-07 - **Last Updated**: 2025-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 共享设备OEM系统 #### 介绍 共享设备租借系统,Java语言开发,使用微服务框架,以添加服务器方式扩展,配合Nginx,Redis,Zookeeper理论支持百万级设备,已支持共享充电宝,酒店便捷线充,共享充电插座,便捷储能电池等设备,并提供商城功能。\ 程序支持多个小程序和多个支付商号同时使用。 #### 软件架构 整个项目按对外提供服务的不同分成不同的微服务,将设备类型和租借操作进行抽象化,可以方便的扩展新的设备租借,\ 代码在包的结构上,按抽象层一个包,共享充电宝等每个业务类型各一个包,总业务层一个包。\ 代码大体分三层,数据访问层:dao,业务层:services,展示层:controllers #### 业务平台入口 会员租借端入口:微信小程序和支付宝小程序 \ 代理手机端入口:微信公众号 \ 代理后台管理入口:PC网页 \ 总后台管理入口:PC网页 #### 安装教程 1. 依赖Mysql,Radis,Zookeeper,kafka这四个服务 2. 支持MQTT和阿里云物联网,TCP协议,如果使用MQTT需要安装Mosquitto 3. Mysql目前支持5.0版本,高级版本可能存在不可预知问题 3. 依赖开源[common-code](https://gitee.com/hryc/common-code)作为工具包使用 4. 依赖开源[servlet-code](https://gitee.com/hryc/servlet-code)作为HTTP访问管理 5. 依赖开源[jdbc-code](https://gitee.com/hryc/jdbc-code)作为数据库访问服务 如果你在安装配置上遇到问题,请发Issues联系我,我会编写相关的安装配置教程 #### 程序启动说明 所有对外提供服务的项目是基于Jetty容器开发,Jetty是嵌入到程序里的,因此使用Main方法进行启动。 \ 例如:h5-mng后台管理程序使用com.gzhryc.shared_device.h5.mng.Main类启动 如果使用Maven打包后可以用以下方式进行启动: ``` java -jar ./h5-mng-jar-with-dependencies.jar ../config ``` ../config里包含info.properties和jdbc.properties等配置文件 #### 各个包说明 shared-device-base-code 程序基础包,定义所有公用的类 \ shared-device-iot-code 设备IOT包,用于定义设备通信协议和通信方式,支持MQTT,TCP等 \ shared-device-member-code 会员相关开发包(小程序用户),主要是和"商城"这种耦合性低的业务共用一个会员体系 \ shared-device-user-code 用户相关开发包(代理用户),主要是和"商城"这种耦合性低的业务共用一个用户体系 shared-device-bxscn-code 便携式储能设备租借业务 (电车电池开柜租借业务)\ shared-device-cdb-code 共享充电宝租借业务 \ shared-device-cdcz-code 充电插座租借业务 \ shared-device-pcl-code 便携式(密码)线租借业务 \ shared-device-oem-code 业务综合处理包 h5-agent-mng 后台HTML代理端管理,PC端入口,代理使用手机号+密码登陆(对外提供服务) \ h5-agent 手机HTML代理端管理,使用微信公众号做入口(对外提供服务) \ h5-mng 系统总后台管理,PC端入口(对外提供服务) \ micro-app-api 小程序API服务(对外提供服务) \ micro-iot-server 设备IOT服务,用于和设备通信(对外提供服务) \ micro-queue-handler 延迟执行服务,接收Kafka消息进行处理和定时处理(对外提供服务) market-base-code 商城基础包,定义商城公用的类 \ market-cloud-code 云商城代码包,包含商品购买订单等业务处理 \ market-supplier-code 商品供货商代码包 \ micro-market-cloud-api 云商城小程序API服务(对外提供服务) \ agent-judao 手机HTML代理的VUE代码 \ ali-applet-oem 支付宝小程序代码 \ wx-applet-oem 微信小程序代码 #### 关于数据库 系统会自动创建库表,你只需要配置好jdbc.properties。保证数据库用户有权限创建库和表,最好的方式是创建一个空库,\ 启动h5-mng程序,系统会自动创建各个表,需要注意的是info.properties配置,你需要配置开放哪些功能。只有开启相关模块,这个模块的表才会自动创建 \ //商城模块 \ market.enable=true \ //共享充电宝 \ cdb.enable=true \ //充电插座 \ cdcz.enable=true \ //便携式储能充电 (电动车电池开柜租借)\ bxscn.enable=true \ //密码充电线 \ pcl.enable=true 其中比较特殊的是商城模块,因为比较独立,你需要配置jdbc_market.properties文件,创建一个独立的商城数据库 #### 关于后台UI 后台使用layui这个UI框架,layui使用NodeJS进行打包,在控制台里访问ui目录并使用gulp命令进行打包,打包后的代码会覆盖webapp目录,在实际使用时是使用webapp目录里的代码。\ h5-mng服务使用后台UI,配置文件info.properties里h5_mng.webapp指向UI代码目录,在开发时指向ui目录,在实际部署时指向webapp目录 \ h5-agent-mng服务使用后台UI,配置文件info.properties里h5_agent_mng.webapp指向UI代码目录,在开发时指向ui目录,在实际部署时指向webapp目录 #### 关于图片等静态资源访问 项目分两种不同资源访问方式,一种是远程资源服务,另一种是本地资源访问 \ 1. 远程资源服务这个目前没有开源,如果项目遇到资源问题可以发Issues给我,在info.propertis配置中请忽略resDomain相关词汇的配置 2. 本地资源访问需要在info.propertis中配置以下两个信息 \ localRes=true \ localResPath=/ localRes代表是否启用本地资源,启用后所有资源访问和图片上传都使用本地接口 \ localResPath代表静态资源的存储目录,目录中必须包含assets目录,assets目录中的静态资源已经加入到代码库中 #### 关于后台菜单配置 在h5-mng的info.properties配置文件添加下面两个参数: \ def_loginName=admin \ def_loginPwd=123456 \ 这两个参数代表后台默认的登陆账号,是系统管理员权限,参数值你可以自定义 在启动h5-mng后程序会自动添加菜单,角色和该账号。第一次启动需要等待一些时间写入数据库 \ 相关菜单信息你可以在h5-mng代码包的resources目录里查看 \ menu_config.xml 文件代表公共的菜单 \ menu目录下的xml文件代表各个业务的相关菜单,这部分菜单根据info.properties配置有选择的添加 \ role_config.xml 文件代表系统管理员角色的菜单配置,默认会添加所有菜单 \ #### 关于业务配置信息 业务配置使用动态表进行保存,根据配置类的属性通过反射自动保存(可以添加类的属性来扩展配置) 保存的方式具体查看表对应的类com.gzhryc.dictionary.dao.db.ConfigInfo \ 方便的获取和保存各种业务配置的类:com.gzhryc.shared_device.oem.code.ConfigUtils \ 支付账号配置相关表对应的类:com.gzhryc.shared_device.common.payment.dao.db.WXPayConfig 和 com.gzhryc.shared_device.common.payment.dao.db.AlipayConfig \ 提现配置相关表对应的类:com.gzhryc.shared_device.oem.h5.mng.controllers.config.payment_account_group \ 提现具体配置是通过类转JSON字符串保存在数据库中,JSON对应的类:com.gzhryc.shared_device.common.payment.dao.models.CashWithdrawalConfig \ 其它的配置请查看h5-mng程序的配置管理页面控制器包:com.gzhryc.shared_device.oem.h5.mng.controllers.config #### 关于代理手机端 代理商手机端以功能模块的方式进行扩展,目前支持的功能模块已保存在代码库的doucment目录里,部署程序后可以在功能模块中导入func_model.xlsx文件 #### 关于地区信息 项目分两种不同地区数据管理,一种是远程数据服务,另一种是本地数据管理 \ 1. 远程数据服务只能获取不提供管理服务,其数据来源于微信的地区数据。 2. 本地数据管理需要在info.propertis中配置:localCountryArea=true \ 重启h5-mng程序会添加地区管理菜单,并默认添加中国信息。 \ 登陆后,在地区管理页面的中国地区中导入document目录country_area.xlsx文件 \ 地区数据会初始化到内存中以方便快速访问,因为没有提供热修改功能,修改地区信息需要重启程序生效。 #### 关于测试租借归还流程 你需要注册微信小程序或支付宝小程序,发布小程序后在小程序后台配置扫码路径,你就可以通过扫描进入租借页面。\ wx-applet-oem 目录是微信小程序代码 \ ali-applet-oem 目录是支付宝小程序 \ 你需要注册微信支付或支付宝支付,后台配置好相关信息。\ 你需要一台可以联网可租借的设备,你可以在这个【[淘宝商城](https://maochong.tmall.com)】购买设备,项目已经支持该公司的设备协议。\ 你需要部署好项目,安装免费开源的MQTT服务(Mosquitto),配置Mosquitto的连接账号和密码,将项目生成的设备序列号,服务器IP,Mosquitto连接的账号和密码告诉设备售卖家,让设备配置连接到自己的MQTT服务器 #### 关于安全 系统使用最基础的账号密码机制,手机验证机制,接口点击频率控制,HTTP的User-Agent检查保证安全。目前没有明显的安全问题。后面程序会逐步加强安全机制。\ 关于其它网络攻击建议使用云服务商提供的防攻击保护。\ 如果你发现安全问题或有好的安全保护机制,请使用Issues联系我。 #### 关于定制开发和问题修复 如果你发现有什么问题可以发Issues给我,我会尽快修复。 \ 你有好的想法也可以发Issues给我。\ 如果有新设备想进行对接,也可以发Issuce给我。