云快充、铁塔、公牛、华为、永联、中电联等充电桩协议支持
目前分账为系统记录、代理商申请提现(微信自动打款或线下打款),需要空中分账的客户对接三方支付渠道。以上报价为市场报价,不含售后服务,安装好后源码交付,请尊重劳动者的开发成果,请勿对外售卖。充值模式: 平台充值,全平台使用,消费分账。微信小程序+PC后台 16000/套。移动管理(站长入口) 8000/套。购买源码后请自行找技术维护二开。按电费服务费比例分成。
·
如何对接汽车充电桩协议,我这里给出思路,Java使用netty、php使用swoole等,可以实现自定义协议,首先监听服务端口,对充电桩的数据解析,来一条数据,解析后,处理,回复设备一条数据。这里给出JAVA版的部分示例代码:
package org.jeecg.charge.server;
import io.netty.bootstrap.ServerBootstrap;
import io.netty.channel.*;
import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioServerSocketChannel;
import io.netty.handler.codec.*;
import io.netty.handler.logging.LogLevel;
import io.netty.handler.logging.LoggingHandler;
import io.netty.handler.timeout.IdleStateHandler;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.charge.protocol.ChargeByteToMessageDecoder;
import org.jeecg.charge.protocol.ChargeMessageToByteEncoder;
import org.jeecg.charge.server.handler.CloseHandler;
import org.jeecg.charge.server.handler.LongTimeNoReadHandler;
import org.jeecg.charge.server.strategy.ChargeOperatorFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;
@Slf4j
@Component
public class CarChargeServer {
private ServerBootstrap bootstrap;
@Autowired
private ChargeOperatorFactory factory;
@PostConstruct
public void init() {
log.info("初始化汽车充电netty服务器!");
EventLoopGroup bossGroup = new NioEventLoopGroup(), workerGroup = new NioEventLoopGroup();
//创建服务端启动引导类
bootstrap = new ServerBootstrap();
bootstrap
.group(bossGroup, workerGroup) //指定事件循环组
.channel(NioServerSocketChannel.class) //指定为NIO的ServerSocketChannel
.childHandler(new ChannelInitializer<SocketChannel>() {
@Override
protected void initChannel(SocketChannel channel) {
//获取流水线,当我们需要处理客户端的数据时,实际上是像流水线一样在处理,这个流水线上可以有很多Handler
channel.pipeline()
.addLast(new LengthFieldBasedFrameDecoder(512, 1, 1, 2, 0))
.addLast(new LoggingHandler(LogLevel.INFO))
.addLast(new ChargeMessageToByteEncoder())
.addLast(new ChargeByteToMessageDecoder())
.addLast(new IdleStateHandler(20, 0, 0, TimeUnit.SECONDS))
.addLast(new LongTimeNoReadHandler())
.addLast(new ChannelInboundHandlerAdapter() {
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) { //ctx是上下文,msg是收到的消息,默认以ByteBuf形式
String s = msg.toString();
log.info("charge equipment request msg : {}", s);
String type = s.substring(10, 12);
log.info("charge equipment request type : {}", type);
factory.getBaseChargeStrategy(type).execute(ctx, s);
}
}).addLast(new CloseHandler());
}
});
//最后绑定端口,启动
bootstrap.bind(1999);
}
}
给出PHP版服务代码:
<?php
namespace cgcore\command;
use Channel\Server;
use GatewayWorker\BusinessWorker;
use GatewayWorker\Register;
use think\console\Command;
use think\console\Input;
use think\console\input\Argument;
use think\console\input\Option;
use think\console\Output;
use Workerman\Worker;
class Bullc extends Command
{
/**
* @var array
*/
protected $config = [];
/**
* @var Worker
*/
protected $registerWorkerServer;
/**
* @var Server
*/
protected $gatewayWorkerServer;
/**
* @var Server
*/
protected $businessWorkerServer;
/**
* @var Input
*/
public $input;
/**
* @var Output
*/
public $output;
protected function configure()
{
// 指令配置
$this->setName('bullc')
->addArgument('status', Argument::REQUIRED, 'start/stop/reload/status/connections')
->addOption('d', null, Option::VALUE_NONE, 'daemon(守护进程)方式启动')
->setDescription('start/stop/restart gatewayworker');
}
protected function init(Input $input, Output $output)
{
ini_set('default_socket_timeout', -1);
global $argv;
$argv[1] = $input->getArgument('status') ?: 'start';
if ($input->hasOption('d')) {
$argv[2] = '-d';
} else {
unset($argv[2]);
}
$gatewayworker = \think\Config::get('gatewayworker');
$this->config = $gatewayworker['bullc'];
}
protected function execute(Input $input, Output $output)
{
$this->init($input, $output);
$this->bindHandle();
try {
Worker::$pidFile = RUNTIME_PATH . 'bullc.pid';
Worker::$logFile = RUNTIME_PATH . 'bullc.log';
Worker::runAll();
} catch (\Exception $e) {
$output->warning($e->getMessage());
}
}
protected function bindHandle()
{
if (is_null($this->registerWorkerServer)) {
$this->registerWorkerServer = new Register('text://' . $this->config['registerAddress']);
$this->registerWorkerServer->name = isset($this->config['name']) ? ($this->config['name'] . 'Register') : 'bullcRegister';
}
if (is_null($this->gatewayWorkerServer)) {
$gateway = new \GatewayWorker\Gateway("{$this->config['protocol']}://" . config('site.bullc_server_port'));
// gateway名称,status方便查看
$gateway->name = isset($this->config['name']) ? ($this->config['name'] . 'Gateway') : 'bullcAppGateway';
// gateway进程数
$gateway->count = $this->config['serverCount'] ?? 4;
// 本机ip,分布式部署时使用内网ip
$gateway->lanIp = '127.0.0.1';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = $this->config['startPort'];
// 服务注册地址
$gateway->registerAddress = $this->config['registerAddress'];
// 心跳间隔
$gateway->pingInterval = 30;
$gateway->pingNotResponseLimit = 5;
//心跳数据
// $gateway->pingData = '{"type":"ping"}';
$this->gatewayWorkerServer = $gateway;
}
if (is_null($this->businessWorkerServer)) {
// bussinessWorker 进程
$worker = new BusinessWorker();
$worker->eventHandler = $this->config['eventHandler'];
// worker名称
$worker->name = isset($this->config['name']) ? ($this->config['name'] . 'BusinessWorker') : 'bullcAppBusinessWorker';
// bussinessWorker进程数量
$worker->count = $this->config['serverCount'] ?? 4;
// 服务注册地址
$worker->registerAddress = $this->config['registerAddress'];
$this->businessWorkerServer = $worker;
}
}
}
| 模块 | 功能简介 | 功能说明 | |||||||
| 会员 | 会员管理 | 会员列表 | 会员列表中可批量发放优惠券、发充值点卡、发刮刮卡、群发短信。会员与小程序绑定 | ||||||
| 内部车辆列表 | 系统会员录入的车辆、VIN、车牌号等 | ||||||||
| CEC车辆列表 | CEC引流平台充电的车辆、VIN、车牌号等 | ||||||||
| SVIP开通记录 | SVIP开通记录,SVIP分为体验月卡、月卡、季卡、年卡 | ||||||||
| 占位订单 | 占位订单 | 充电未及时驶离产生占位费用,支付后才能下次充电 | |||||||
| 团队管理 | 团队管理 | 团队钱包、团队钱包流水、团队充电记录 | |||||||
| 电站 | 电站管理 | CEC电站列表 | CEC引流平台拉取的电站列表 | ||||||
| 我方电站列表 | 平台录入的电站,可设置电站参数、营销参数、活动、CEC配置等 | ||||||||
| 站长管理 | 站长管理 | 站长与前台会员一对一列表,用于记录每个电站的充电数据 | |||||||
| 加盟申请 | 前台提交的加盟申请,可通过或驳回。通过会将申请人设置为站长。如需站长前台添加电站设备,请在会员管理编辑权限 | ||||||||
| 设备 | 本地设备 | 本地设备 | 平台站长投放的电站设备,可批量添加和设置参数 | ||||||
| CEC设备 | CEC设备 | CEC平台拉下来的设备 | |||||||
| 营销 | 优惠券 | 优惠券列表 | 会员券、满减券、折扣券、定额券、购买券、积分兑换券 | ||||||
| 用户优惠券 | 用户领取优惠券、用户购买优惠券、用户兑换优惠券 | ||||||||
| 购买优惠券 | 购买优惠券订单 | ||||||||
| 刮刮卡 | 刮刮卡模板 | 刮刮卡为万能卡券,用于线下充电营销 | |||||||
| 刮刮卡列表 | 刮刮卡为万能卡券,用于线下充电营销 | ||||||||
| 周充月充 | 周充月充 | 周充月充达标奖励现金或积分商品。达标自动发放。关联的数据为手机号。涉及三种来源的充电订单 | |||||||
| 积分商城 | 商品管理 | 兑换限制、会员专属 | |||||||
| 兑换订单 | 兑换可发货 | ||||||||
| 充值点卡 | 点卡管理 | 发放给用户的充值点卡可直接凭卡密在小程序上充值 | |||||||
| 购买点卡 | 设置点卡面额和购买价格,如果点卡有库存即可即买即充。这部分消费不能开票 | ||||||||
| 财务 | 发票 | 开票记录 | 可开票可红冲,对接的诺诺发票 | ||||||
| 开票项目 | 分为数据库列表中自动统计的数据、手动开票的项目 | ||||||||
| 退款 | 退款 | 在规定时间内上架有限库存的商品,用户参与抢购,超出时间或库存为0时秒杀结束 | |||||||
| 提现 | 提现 | 微信V3提现,可线上审核线下打款,用于站长服务费分账金额提现 | |||||||
| 积分兑换现金 | 积分兑换现金 | 获得的积分可在指定时间提现到零钱 | |||||||
| 分账 | 分账 | 对每笔充电订单的服务费定时分账给站长和其他分账管理员 | |||||||
| 积分日志 | 积分日志 | 积分流水账 | |||||||
| 余额日志 | 余额日志 | 余额流水账,包括充值账户、赠送账户、点卡充值账户 | |||||||
| 余额充值 | 余额充值 | 余额充值可设置充值赠送优惠,分为两个账户:线上充值余额账户、赠送余额账户 | |||||||
| 平台管理 | 小程序管理 | 小程序管理 | 可设置小程序基本参数、支付信心、证书等 | ||||||
| 道闸管理 | 道闸管理 | 支持主动通知和道闸查询两种方式获取停车优惠信息 | |||||||
| 平台广告 | 平台广告 | 支持小程序Banner广告 | |||||||
| 互联互通 | CEC平台 | CEC平台 | 设置CEC平台代码标识 | ||||||
| CEC配置 | CEC配置 | 对不同平台不同运营商不同配置 | |||||||
| CEC日志 | CEC日志 | CEC请求日志 | |||||||
| 数据统计 | 数据统计 | 充电统计 | 30天、按周、按月、按年统计充电订单金额、订单数量、充电电量走势 | ||||||
| 运能数据 | 统计单枪运能 | ||||||||
| SVIP统计 | 30天、按周、按月、按年统计充值金额走势 | ||||||||
| 用户统计 | 30天、按周、按月、按年统计用户注册数量走势 | ||||||||
| 充值统计 | 30天、按周、按月、按年统计用户充值金额走势 | ||||||||
| 系统设置 | 系统配置 | 常规配置 | 站点信息、系统参数、会员设置、充值套餐、SVIP套餐、诺诺发票、积分配置、点卡配置、周充月充配置 | ||||||
| 其他配置 | 其他基础配置 | ||||||||
| 计费策略 | 计费策略 | 计费策略列表,添加分为标准固定费率和分时计费灵活费率 | |||||||
| 计费规划 | 定时设置生效计费策略 | ||||||||
| 评价模板 | 评价模板 | 可添加编辑评价模板 | |||||||
| 权限控制 | 身份管理 | 添加后台管理的身份及权限 | |||||||
| 管理员列表 | 添加及管理后台管理员的账号信息 | ||||||||
| 权限规则 | 管理后台的菜单等规则 | ||||||||
| 页面设置 | 广告位 | 首页、积分商城也顶部轮播、金刚区数据 | |||||||
| 前端页面 | 前端页面基础数据录入 | ||||||||
| 消息日志 | 消息日志 | 系统报错信息、CEC接口请求日志、后台操作日志 | |||||||
微信小程序搜索:河南玉阳软件科技
充值模式: 平台充值,全平台使用,消费分账
-
系统代理(合伙)模式:
-
按电费服务费比例分成
-
目前分账为系统记录、代理商申请提现(微信自动打款或线下打款),需要空中分账的客户对接三方支付渠道
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)