mzeros 20a9af6fd0 feat(channel): 添加查询余额功能并优化相关服务
- 在 Channel 控制器中添加 queryBalance 方法,用于查询渠道余额
- 在 Core 控制器中添加 curl 方法,用于发起 HTTP 请求
- 新增 Feedov 服务类,实现飞之度商户自动提单功能- 更新 Meicheng 服务类,添加账户余额查询接口
- 在前端页面添加查询余额按钮和相关事件处理逻辑
2024-12-20 16:14:52 +08:00

299 lines
9.8 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// +----------------------------------------------------------------------
// | ThinkAdmin
// +----------------------------------------------------------------------
// | 版权所有 2014~2020 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
// +----------------------------------------------------------------------
// | 官方网站: https://thinkadmin.top
// +----------------------------------------------------------------------
// | 开源协议 ( https://mit-license.org )
// +----------------------------------------------------------------------
// | gitee 代码仓库https://gitee.com/zoujingli/ThinkAdmin
// | github 代码仓库https://github.com/zoujingli/ThinkAdmin
// +----------------------------------------------------------------------
namespace app\channel\controller;
use think\admin\Controller;
use app\channel\service\ChannelService;
use app\channel\service\ProductBaseService;
/**
* 渠道管理
* Class Channel
* @package app\channel\controller
*/
class Channel extends Controller
{
/**
* 绑定数据表
* @var string
*/
public $table = 'ChannelList';
/**
* 渠道列表
* @auth true
* @menu true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function index()
{
$this->title = '渠道列表';
$query = $this->_query($this->table);
$query->equal('status')->dateBetween('create_at');
$query->like('name,phone,contacts');
$query->where(['is_deleted' => 0]);
$query->order('status desc, id desc')->page();
}
/**
* 添加渠道
* @auth true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function add()
{
$this->_applyFormToken();
$this->_form($this->table, 'form');
}
/**
* 编辑渠道
* @auth true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function edit()
{
$this->_applyFormToken();
$this->_form($this->table, 'form');
}
/**
* 表单数据处理
* @param array $data
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
protected function _form_filter(&$data)
{
if ($this->request->isPost()) {
if (empty($data['name'])) $this->error('渠道名称不能为空!');
if (!isset($data['id'])) {
$data['channel_num']=uniqid('CH');
//if ($this->app->db->name($this->table)->where(['appid' => $data['appid'],'is_deleted' => 0])->find()) $this->error("APPID:{$data['appid']}已经存在!");
//if ($this->app->db->name($this->table)->where(['key' => $data['key'],'is_deleted' => 0])->find()) $this->error("KEY:{$data['key']}已经存在!");
}
}
}
protected function _form_result($id, $data)
{
ChannelService::instance()->get($id, false);
}
/**
* 修改渠道状态
* @auth true
* @throws \think\db\exception\DbException
*/
public function state()
{
$this->_applyFormToken();
$this->_save($this->table, $this->_vali([
'status.in:0,1' => '状态值范围异常!',
'status.require' => '状态值不能为空!',
]));
}
/**
* 删除渠道
* @auth true
* @throws \think\db\exception\DbException
*/
public function remove()
{
$this->_applyFormToken();
$this->_delete($this->table);
}
/**
* 关联产品
* @auth true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function setting()
{
if ($this->request->isGet()) {
$id = input('cid');
$this->vo = $this->app->db->name($this->table)->where(array('id' => $id))->find();
$this->title = '关联产品';
$w = array
(
'cid' => $id,
);
$channel_product = $this->app->db->name('channel_product')->where($w)->order('sort desc,id desc')->select()->toArray();
$relation = array();
if ($channel_product) {
foreach ($channel_product as $k => $v) {
$relation[$v['key']] = $v;
}
}
$w = array
(
'status' => 1,
);
$service = $this->app->db->name('service_info')->where($w)->select()->toArray();
$this->type = ProductBaseService::instance()->getType();
$this->service = $this->product = array();
foreach ($this->type as $k => $v) {
$this->service[$k] = array();
}
foreach ($service as $k => $v) {
$w['service_id'] = $v['id'];
$v['product'] = $this->app->db->name('service_product')->where($w)->select()->toArray();
if (isset($relation[$v['key']]) && $relation[$v['key']]) {
$v['select'] = 1;
$v['cash'] = $relation[$v['key']]['auto_value'];
$v['cash'] = explode(',', $v['cash']);
} else {
$v['select'] = 2;
$v['cash'] = array();
}
$this->service[$v['type']][] = $v;
}
$this->_form($this->table, 'setting');
} else {
$data = input();
$all = $this->app->db->name('channel_product')->where(array('cid' => $data['cid']))->select()->toArray();
$select = array();
if ($all) {
foreach ($all as $k => $v) {
$select[$v['key']] = $v;
}
}
$service =$data['service']? implode(',', $data['service']):'';
$service = $this->app->db->name('service_info')->whereRaw('id in('.$service.')')->select()->toArray();
if ($service) {
foreach ($service as $k => $v) {
$product = $this->app->db->name('service_product')->where(array('service_id' => $v['id'], 'status' => 1))->order('sort asc, status desc, id desc')->column('value');
$update = array();
$update['service_id'] = $v['id'];
$update['name'] = $v['name'];
$update['key'] = $v['key'];
$update['value'] = implode(',', $product);
$update['auto_value'] = '';
if (isset($data['product_' . $v['id']]) && $data['product_' . $v['id']]) {
$update['auto_value'] = implode(',', $data['product_' . $v['id']]);
}
if (isset($select[$v['key']]) && $select[$v['key']]) {
# 更新
$this->app->db->name('channel_product')->where(array('id' => $select[$v['key']]['id']))->update($update);
unset($select[$v['key']]);
} else {
# 插入
$update['cid'] = $data['cid'];
$this->app->db->name('channel_product')->insert($update);
}
}
}
if ($select) {
# 删除
foreach ($select as $k => $v) {
$this->app->db->name('channel_product')->where(array('id' => $v['id']))->delete();
}
}
$this->success('操作成功', '');
}
}
/**
* 修改ip白名单
* @login true
* @auth true
* @param integer $id
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function ipWhite($id = 0)
{
if ($this->app->request->isGet()) {
$this->_applyFormToken();
$this->verify = false;
// $this->pkeylist = OrderService::instance()->getProductKeyList(true);
$this->_form($this->table, 'ipWhite','id', [], ['id' => $id]);
} else {
$id = input('id');
$ip_white = input('ip_white');
$up_ipWhite = ChannelService::instance()->update_ipWhite($id,$ip_white);
if($up_ipWhite == '添加防火墙错误'){
$this->error('添加防火墙ip错误请联系技术何时');
}else{
$this->success('IP白名单修改成功', '');
}
}
}
/**
* 查询余额
* @login true
* @auth true
* @param integer $id
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function queryBalance($id = 0)
{
$id = input('cid');
$channelService = ChannelService::instance();
$day = input('day');
if (!$day) {
$day = date('Y-m-d', strtotime('-1 day'));
}
$account_data = $channelService->call('account', $id, $day);
// var_dump($account_data);die;
if ($account_data) {
$data = $account_data;
$data['balance'] = $account_data['account'];
$this->success('余额查询成功!', $data);
}else{
$this->error('余额查询失败!');
}
}
}