REAPI/app/merchant/controller/Merchant.php

433 lines
15 KiB
PHP
Raw 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\merchant\controller;
use think\admin\Controller;
use app\merchant\service\MerchantLogService;
use app\merchant\service\MerchantService;
use app\merchant\service\OrderService;
/**
* 商户管理
* Class Merchant
* @package app\merchant\controller
*/
class Merchant extends Controller
{
/**
* 绑定数据表
* @var string
*/
public $table = 'MerchantList';
/**
* 商户列表
* @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,ip_white');
// 加载对应数据列表
$this->type = input('type', 'all');
$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 _index_page_filter(array &$data)
{
$order = OrderService::instance();
foreach ($data as $k => $v) {
$data[$k]['order_yes'] = $order->getOrderTotal($v['id'], 2);
$data[$k]['order_no'] = $order->getOrderTotal($v['id'], 3);
/*
$where['mid'] = $v['id'];
$where['account_type'] = 1;
$where['type'] = 1;
$data[$k]['account_chongzhi_total'] = sprintf("%.2f", $this->app->db->name('MerchantAccountLog')->where($where)->sum('num'));
$where['account_type'] = 2;
$where['type'] = 6;
$xin = $this->app->db->name('MerchantAccountLog')->where($where)->find();
$data[$k]['credit_cash'] = 0.00;
if ($xin) {
$data[$k]['credit_total'] = sprintf("%.2f", $this->app->db->name('MerchantAccountLog')->where($where)->sum('num'));
}*/
if ($data[$k]['credit_total'] > 0) {
/*
$where['mid'] = $v['id'];
$where['account_type'] = 2;
$where['type'] = 1;
$result['credit_zonghuikuan'] = $this->app->db->name('MerchantAccountLog')->where($where)->sum('num');
$where['type'] = 2;
$result['credit_zonghuifu'] = $this->app->db->name('MerchantAccountLog')->where($where)->sum('num');
$result['credit_zonghuikuan'] -= $result['credit_zonghuifu'];
$where['type'] = 3;
$result['credit_kou'] = $this->app->db->name('MerchantAccountLog')->where($where)->sum('num');
$where['type'] = 4;
$result['credit_huifu'] = $this->app->db->name('MerchantAccountLog')->where($where)->sum('num');
$data[$k]['credit_huikuan'] = sprintf("%.2f", $result['credit_kou'] - $result['credit_huifu'] - $result['credit_zonghuikuan']);
*/
$data[$k]['credit_huikuan'] = $v['credit_total'] - $v['credit_surplus'];
} else {
$data[$k]['credit_huikuan'] = '0.00';
}
if ($data[$k]['account_surplus'] < 0) {
//$data[$k]['account_baitiao'] += $data[$k]['account_surplus'];
//$data[$k]['account_surplus'] = 0;
}
}
}
/**
* 表单数据处理
* @param array $data
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
protected function _form_filter(&$data)
{
$this->channel = $this->app->db->name('ChannelList')->where(['is_deleted' => 0])->order('sort desc,id desc')->select();
if ($this->request->isPost()) {
if (isset($data['cids']) && $data['cids']) {
$data['cids'] = implode(',', $data['cids']);
} else {
$data['cids'] = '';
}
if (isset($data['id']) && $data['id'] > 0) {
unset($data['username']);
} else {
if (empty($data['name'])) $this->error('商户名称不能为空!');
/*
if (empty($data['username'])) $this->error('登陆账号不能为空!');
$where = ['username' => $data['username'], 'is_deleted' => 0];
if ($this->app->db->name($this->table)->where($where)->count() > 0) {
$this->error("登陆账号{$data['username']}已经存在!");
}
$data['password'] = md5($data['username']);
*/
}
// print_r($data);die;
} else {
if (isset($data['cids']) && $data['cids'] && is_string($data['cids'])) {
$data['cids'] = explode(',', $data['cids']);
} else {
$data['cids'] = array();
}
}
}
protected function _form_result($id, $data)
{
$info = $this->app->db->name($this->table)->where(['id' => $id])->find();
if ($info && !$info['appid']) {
$key = MerchantService::instance()->resetApi(1);
$data = array(
'appid' => $key['appid'],
'appsecret' => $key['appsecret'],
);
$this->app->db->name($this->table)->where(array('id' => $id))->update($data);
}
/*
$where['id'] = $id;
$info = $this->app->db->name($this->table)->where($where)->find();
MerchantService::instance()->get($info['appid'], false);
*/
}
/**
* 账户充值
* @auth true
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function recharge()
{
$this->_applyFormToken();
$mid = input('id');
$shouxin = MerchantLogService::instance()->checkShouxin($mid);
if ($this->request->isGet()) {
# 验证当前账户是否有授信
if ($shouxin) {
$this->account_type = array('2'=>'授信账户', '1'=>'余额账户');
} else {
$this->account_type = array('1'=>'余额账户', '2' => '授信账户');
}
$this->verify = false;
$this->_form($this->table, 'recharge');
} else {
$data = $this->_vali([
'account_type.require' => '账户类型不能为空!',
'mid.require' => '商户ID不能为空',
'type.require' => '类型不能为空!',
'num.require' => '金额不能为空!',
'desc.require' => '描述不能为空!',
]);
if ($data['account_type'] == 1 && $data['type'] == 6) {
$this->error('无效操作,请选择授信账户!');
}
if ($data['account_type'] == 1 && $data['type'] == -6) {
$this->error('无效操作,请选择授信账户!');
}
if ($data['account_type'] == 2 && $data['type'] == 1 && !$shouxin) {
$this->error('无效操作,请先增加授信额度!');
}
//$account = MerchantLogService::instance()->countAccount($data['type'], $data['num'], $data['mid'], $data['account_type']);
//if ($data['type'] == 2 && $data['account_type'] == 1 && $data['num'] > $account['account_surplus']) $this->error('账户余额不足!');
if ($data['num'] < 1) $this->error('金额不能小于1元');
if ($data['type'] == -6) {
$data['type'] = 6;
$data['num'] = $data['num'] * -1;
}
if (MerchantLogService::instance()->add($data['mid'], $data['num'], $data['account_type'],$data['type'],$data['desc']) !== false) {
/*
$info = MerchantService::instance()->getInfo($data['mid']);
MerchantService::instance()->get($info['appid'], false);
MerchantService::instance()->get($data['mid'], false);
*/
$this->success('操作成功!', '');
} else {
$this->error('操作失败,请稍候再试!');
}
}
}
/**
* 重置商户秘钥
* @auth true
* @throws \think\db\exception\DbException
*/
public function resetapi()
{
//$this->_applyFormToken();
if ($this->request->isPost()) {
$key = MerchantService::instance()->resetApi(1);
$data = $this->_vali([
'id.require' => '商户ID不能为空',
'appid' => $key['appid'],
'appsecret' => $key['appsecret'],
]);
if (data_save($this->table, $data , 'id')) {
# 重写缓存
MerchantService::instance()->get($key['appid'], false);
MerchantService::instance()->get($data['id'], false);
$this->success('秘钥重置成功,请通知商户使用新秘钥!', '');
} else {
$this->error('秘钥重置失败,请稍候再试!');
}
}
$this->_save($this->table);
}
/**
* 修改当前商户密码
* @login true
* @auth true
* @param integer $id
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function pass($id = 0)
{
$this->_applyFormToken();
if ($this->app->request->isGet()) {
$this->verify = false;
$this->_form($this->table, 'pass', 'id', [], ['id' => $id]);
} else {
$data = $this->_vali([
'username.require' => '登录用户账号不能为空!',
'password.require' => '登录密码不能为空!',
'repassword.require' => '重复密码不能为空!',
//'oldpassword.require' => '旧的密码不能为空!',
'password.confirm:repassword' => '两次输入的密码不一致!',
]);
$where = ['username' => $data['username'], 'is_deleted' => 0];
if ($this->app->db->name($this->table)->where($where)->whereRaw('id != ' . $id)->count() > 0) {
$this->error("登陆账号{$data['username']}已经存在!");
}
$user = $this->app->db->name($this->table)->where(['id' => $id])->find();
/*
if (md5($data['oldpassword']) !== $user['password']) {
$this->error('旧密码验证失败,请重新输入!');
}
*/
if (data_save($this->table, ['id' => $user['id'], 'username' => $data['username'], 'show_pwd' => $data['password'], 'password' => md5($data['password'])])) {
$this->success('密码修改成功!', '');
} else {
$this->error('密码修改失败,请稍候再试!');
}
}
}
/**
* 商户信息查看
* @login true
* @auth true
* @param integer $id
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
*/
public function info()
{
$this->_applyFormToken();
$id = input('id');
$this->host = sysconf('api_host');
$this->doc = sysconf('system_api_host');
$this->shanghu_host = sysconf('system_shanghu_host');
$this->_form($this->table, 'info', 'id', [], ['id' => $id]);
}
/**
* 修改商户状态
* @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 otherstate()
{
//$this->_applyFormToken();
$this->_save($this->table, $this->_vali([
'other_status.in:0,1' => '状态值范围异常!',
'other_status.require' => '状态值不能为空!',
]));
}
/**
* 删除商户
* @auth true
* @throws \think\db\exception\DbException
*/
public function remove()
{
$this->_applyFormToken();
$this->_delete($this->table);
}
/**
* 修改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 = MerchantService::instance()->update_ipWhite($id,$ip_white);
if($up_ipWhite == '添加防火墙错误'){
$this->error('添加防火墙ip错误请联系技术何时');
}else{
$this->success('IP白名单修改成功', '');
}
}
}
}