初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

774
app/model/member/Withdraw.php Executable file
View File

@@ -0,0 +1,774 @@
<?php
/**
* Niushop商城系统 - 团队十年电商经验汇集巨献!
* =========================================================
* Copy right 2019-2029 杭州牛之云科技有限公司, 保留所有权利。
* ----------------------------------------------
* 官方网址: https://www.niushop.com
* =========================================================
*/
namespace app\model\member;
use app\model\BaseModel;
use app\model\message\Message;
use app\model\message\Sms;
use app\model\shop\ShopAcceptMessage;
use app\model\system\Config as ConfigModel;
use app\model\system\Pay;
use app\model\system\PayTransfer;
use app\model\system\Stat;
use think\facade\Cache;
use addon\memberwithdraw\model\Withdraw as MemberWithdraw;
use addon\wechat\model\Message as WechatMessage;
use addon\weapp\model\Message as WeappMessage;
use think\facade\Db;
/**
* 会员提现
*/
class Withdraw extends BaseModel
{
const STATUS_WAIT_AUDIT = 0;//待审核
const STATUS_WAIT_TRANSFER = 1;//待转账
const STATUS_SUCCESS = 2;//已转账
const STATUS_IN_PROCESS = 3;//转账中
const STATUS_FAIL = -2;//转账失败
const STATUS_REFUSE = -1;//已拒绝
public $status = array (
self::STATUS_WAIT_AUDIT => '待审核',
self::STATUS_WAIT_TRANSFER => '待转账',
self::STATUS_SUCCESS => '已转账',
self::STATUS_IN_PROCESS => '转账中',
self::STATUS_FAIL => '转账失败',
self::STATUS_REFUSE => '已拒绝',
);
/**************************************************************************** 会员提现设置 *************************************************************/
/**
* 会员提现设置
* @param $data
* @param $is_use
* @param int $site_id
* @param string $app_module
* @return array
*/
public function setConfig($data, $is_use, $site_id = 0, $app_module = 'shop')
{
$config = new ConfigModel();
$res = $config->setConfig($data, '会员提现设置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'MEMBER_WITHDRAW_CONFIG' ] ]);
return $res;
}
/**
* 会员提现设置
* @param int $site_id
* @param string $app_module
* @return array
*/
public function getConfig($site_id = 0, $app_module = 'shop')
{
$config = new ConfigModel();
$res = $config->getConfig([ [ 'site_id', '=', $site_id ], [ 'app_module', '=', $app_module ], [ 'config_key', '=', 'MEMBER_WITHDRAW_CONFIG' ] ]);
if (empty($res[ 'data' ][ 'value' ])) {
$res[ 'data' ][ 'value' ] = [
'is_auto_audit' => 0,
'rate' => 0,
'transfer_type' => '',
'is_auto_transfer' => 0,
'min' => 0,
'max' => 0,
];
}
return $res;
}
/**************************************************************************** 会员提现设置 *************************************************************/
/**
* 申请提现
* @param $data
* @param int $site_id
* @param string $app_module
* @return array
*/
public function apply($data, $site_id = 0, $app_module = 'shop')
{
$config_result = $this->getConfig($site_id, $app_module);
$config = $config_result[ "data" ][ 'value' ];
if ($config_result[ "data" ][ "is_use" ] == 0)
return $this->error([], "提现未开启");
$withdraw_no = $this->createWithdrawNo();
$apply_money = round($data[ "apply_money" ], 2);
if ($apply_money < $config[ "min" ])
return $this->error([], "申请提现金额不能小于最低提现额度" . $config[ "min" ]);
if ($apply_money > $config[ 'max' ]) return $this->error([], "申请提现金额不能大于最高提现额度" . $config[ "max" ]);
$member_id = $data[ "member_id" ];
$member_model = new Member();
$member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $member_id ] ], "balance_money,headimg,wx_openid,username,mobile,weapp_openid,nickname");
$member_info = $member_info_result[ "data" ];
if (empty($member_info))
return $this->error([], "MEMBER_NOT_EXIST");
$balance_money = $member_info[ "balance_money" ];
if ($apply_money > $balance_money)
return $this->error([], "申请提现金额不能大于会员可提现金额");
$transfer_type = $data[ "transfer_type" ];
$transfer_type_list = $this->getTransferType($site_id, $app_module);
$transfer_type_name = $transfer_type_list[ $transfer_type ] ?? '';
if (empty($transfer_type_name))
return $this->error([], "不支持的提现方式");
model('member_withdraw')->startTrans();
try {
$rate = $config[ "rate" ];
$bank_name = "";
$account_number = "";
$applet_type = 0;
switch ( $transfer_type ) {
case "bank":
$bank_name = $data[ "bank_name" ];
$account_number = $data[ "account_number" ];
break;
case "alipay":
$bank_name = '';
$account_number = $data[ "account_number" ];
break;
case "wechatpay":
$bank_name = '';
if (empty($member_info[ "wx_openid" ]) && empty($member_info[ "weapp_openid" ])) {
return $this->error('', '请绑定微信或更换提现账户');
}
if ($data['app_type'] != 'weapp') {
$account_number = $member_info[ "wx_openid" ];
$applet_type = 0; // 公众号
} else {
$account_number = $member_info[ "weapp_openid" ];
$applet_type = 1; // 小程序
}
break;
}
$service_money = round($apply_money * $rate / 100, 2);//手续费
$money = $apply_money - $service_money;
$data = array (
"site_id" => $site_id,
"withdraw_no" => $withdraw_no,
"member_name" => $member_info[ "username" ] == '' ? $member_info[ "mobile" ] : $member_info[ "username" ],
"member_id" => $data[ "member_id" ],
"transfer_type" => $data[ "transfer_type" ],
"transfer_type_name" => $transfer_type_name,
"apply_money" => $apply_money,
"service_money" => $service_money,
"rate" => $rate,
"money" => $money,
"apply_time" => time(),
"status" => self::STATUS_WAIT_AUDIT,
"status_name" => $this->status[self::STATUS_WAIT_AUDIT],
"member_headimg" => $member_info[ "headimg" ],
"realname" => $data[ "realname" ],
"bank_name" => $bank_name,
"account_number" => $account_number,
"mobile" => $data[ "mobile" ],
"applet_type" => $applet_type
);
//减少现金余额
$member_account = new MemberAccount();
$account_res = $member_account->addMemberAccount($site_id, $member_id, 'balance_money', -$apply_money, 'withdraw', '会员提现', '会员提现扣除');
if ($account_res[ 'code' ] < 0) {
model('member_withdraw')->rollback();
return $account_res;
}
//增加提现中余额
model("member")->setInc([ [ "member_id", "=", $member_id ] ], "balance_withdraw_apply", $apply_money);
$result = model("member_withdraw")->add($data);
//添加转账记录
$pay_transfer_model = new PayTransfer();
$info = model('member_withdraw')->getInfo([['id', '=', $result]]);
$pay_transfer_model->add([
"real_name" => $info[ "realname" ],
"amount" => $info[ "money" ],
"desc" => "会员提现" . $info[ "memo" ],
"transfer_type" => $info[ "transfer_type" ],
"account_number" => $info[ "account_number" ],
"site_id" => $info[ "site_id" ],
"is_weapp" => $info[ "applet_type" ],
"member_id" => $info[ 'member_id' ],
'from_type' => 'member_withdraw',
"relate_tag" => $info['id'],
]);
//是否启用自动通过审核(必须是微信)
if ($config[ "is_auto_audit" ] == 0) {
$this->agree([ [ "id", "=", $result ], [ 'site_id', '=', $site_id ] ]);
}
model('member_withdraw')->commit();
//申请提现发送消息
$data[ 'keywords' ] = 'USER_WITHDRAWAL_APPLY';
$data[ 'member_name' ] = $member_info[ 'nickname' ];
$message_model = new Message();
$message_model->sendMessage($data);
return $this->success();
} catch (\Exception $e) {
model('member_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 同意提现申请
* @param $condition
* @return array
*/
public function agree($condition)
{
$check_condition = array_column($condition, 2, 0);
$site_id = $check_condition[ 'site_id' ];
$app_module = $check_condition[ 'app_module' ] ?? 'shop';
if (empty($site_id)) {
return $this->error(-1, '参数错误');
}
$info = model("member_withdraw")->getInfo($condition);
if (empty($info))
return $this->error();
$config_result = $this->getConfig($site_id, $app_module);
$config = $config_result[ "data" ];
model('member_withdraw')->startTrans();
try {
$data = array (
"status" => self::STATUS_WAIT_TRANSFER,
"status_name" => $this->status[self::STATUS_WAIT_TRANSFER],
"audit_time" => time(),
);
$result = model("member_withdraw")->update($data, $condition);
//是否启用自动转账(必须是微信或支付宝)
if ($config[ "value" ][ "is_auto_transfer" ] == 1) {
$member_withdraw_model = new MemberWithdraw();
$member_withdraw_model->transfer($info[ "id" ]);
/*if ($transfer_res['code'] == 0) {
//提现成功发送消息
$info['keywords'] = 'USER_WITHDRAWAL_SUCCESS';
$message_model = new Message();
$res = $message_model->sendMessage($info);
}*/
}
model('member_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('member_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 拒绝提现申请
* @param $condition
* @param $param
* @return array
*/
public function refuse($condition, $param)
{
$info = model("member_withdraw")->getInfo($condition, "status,site_id,transfer_type,member_id,apply_money");
if (empty($info)){
return $this->error(null, '提现信息有误');
}
if (!in_array($info['status'], [self::STATUS_WAIT_AUDIT, self::STATUS_WAIT_TRANSFER])){
return $this->error(null, '提现状态有误');
}
model('member_withdraw')->startTrans();
try {
$data = array (
"status" => self::STATUS_REFUSE,
"status_name" => $this->status[self::STATUS_REFUSE],
"refuse_reason" => $param[ "refuse_reason" ],
"audit_time" => time(),
);
$result = model("member_withdraw")->update($data, $condition);
//增加现金余额
$member_account = new MemberAccount();
$account_res = $member_account->addMemberAccount($info[ 'site_id' ], $info[ 'member_id' ], 'balance_money', $info[ "apply_money" ], 'withdraw', '会员提现申请未通过', '提现申请未通过返还');
if ($account_res[ 'code' ] != 0) {
model('member_withdraw')->rollback();
return $account_res;
}
//减少提现中余额
model("member")->setDec([ [ "member_id", "=", $info[ "member_id" ] ] ], "balance_withdraw_apply", $info[ "apply_money" ]);
model('member_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('member_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 提现转账完成
* @param array $param
* @return array
*/
public function transferFinish($param = [])
{
$condition = [
[ 'id', '=', $param[ 'id' ] ],
[ 'site_id', '=', $param[ 'site_id' ] ],
[ 'status', 'in', [self::STATUS_WAIT_TRANSFER, self::STATUS_IN_PROCESS] ],
];
$info = model("member_withdraw")->getInfo($condition);
if (empty($info)) return $this->error();
$payment_time = time();
model('member_withdraw')->startTrans();
try {
$data = [
'status' => self::STATUS_SUCCESS,
'status_name' => $this->status[self::STATUS_SUCCESS],
'payment_time' => $payment_time,
'certificate' => $param[ 'certificate' ] ?? '',
'certificate_remark' => $param[ 'certificate_remark' ] ?? ''
];
$result = model("member_withdraw")->update($data, $condition);
//增加已提现余额
model("member")->setInc([ [ "member_id", "=", $info[ "member_id" ] ] ], "balance_withdraw", $info[ "apply_money" ]);
//减少提现中余额
model("member")->setDec([ [ "member_id", "=", $info[ "member_id" ] ] ], "balance_withdraw_apply", $info[ "apply_money" ]);
model('member_withdraw')->commit();
$member_info = model("member")->getInfo([ [ "member_id", "=", $info[ "member_id" ] ] ], 'nickname');
//提现成功发送消息
$info[ 'keywords' ] = 'USER_WITHDRAWAL_SUCCESS';
$info[ 'payment_time' ] = $payment_time;
$info[ 'member_name' ] = $member_info[ 'nickname' ];
$message_model = new Message();
$message_model->sendMessage($info);
$stat_model = new Stat();
$stat_model->switchStat([ 'type' => 'member_withdraw', 'data' => [ 'site_id' => $info[ 'site_id' ], 'id' => $info[ 'id' ] ] ]);
return $this->success();
} catch (\Exception $e) {
model('member_withdraw')->rollback();
return $this->error('', $e->getMessage());
}
}
/**
* 转账失败
* @param $param
* @return array
*/
public function transferFail($param)
{
$id = $param['id'];
$site_id = $param['site_id'];
$fail_reason = $param['fail_reason'];
$condition = [
[ 'id', '=', $id ],
[ 'site_id', '=', $site_id ],
[ 'status', 'in', [self::STATUS_WAIT_TRANSFER, self::STATUS_IN_PROCESS] ],
];
$info = model("member_withdraw")->getInfo($condition);
if (empty($info)) return $this->error(null, '提现信息有误');
model('member_withdraw')->startTrans();
try {
$data = [
'status' => self::STATUS_FAIL,
'status_name' => $this->status[self::STATUS_FAIL],
'fail_reason' => $fail_reason,
];
model("member_withdraw")->update($data, $condition);
//减少提现中余额
model("member")->setDec([ [ "member_id", "=", $info[ "member_id" ] ] ], "balance_withdraw_apply", $info[ "apply_money" ]);
//减少现金余额
$member_account = new MemberAccount();
$account_res = $member_account->addMemberAccount($site_id, $info[ "member_id" ], 'balance_money', $info[ "apply_money" ], 'withdraw_fail', $id, '会员提现失败退回');
if ($account_res[ 'code' ] < 0) {
model('member_withdraw')->rollback();
return $account_res;
}
model('member_withdraw')->commit();
return $this->success();
} catch (\Exception $e) {
model('member_withdraw')->rollback();
return $this->error(['file' => $e->getFile(), 'line' => $e->getLine(), 'message' => $e->getMessage()], $e->getMessage());
}
}
/**
* 转账中
* @param $param
* @return array
*/
public function transferInProcess($param)
{
$id = $param['id'];
$site_id = $param['site_id'];
$condition = [
[ 'id', '=', $id ],
[ 'site_id', '=', $site_id ],
[ 'status', '=', self::STATUS_WAIT_TRANSFER ]
];
$info = model("member_withdraw")->getInfo($condition);
if (empty($info)) return $this->error(null, '提现信息有误');
model("member_withdraw")->update([
'status' => self::STATUS_IN_PROCESS,
'status_name' => $this->status[self::STATUS_IN_PROCESS],
], [['id', '=', $id]]);
return $this->success();
}
/**
* @param $condition
* @param string $field
* @return array
*/
public function getMemberWithdrawInfo($condition, $field = "*")
{
$info = model('member_withdraw')->getInfo($condition, $field);
return $this->success($info);
}
/**
* 提现详情
* @param $condition
* @return array
*/
public function getMemberWithdrawDetail($condition)
{
$info = model('member_withdraw')->getInfo($condition, "*");
return $this->success($info);
}
/**
* 提现单数
* @param $condition
* @return array
*/
public function getMemberWithdrawCount($condition)
{
$count = model('member_withdraw')->getCount($condition, "id");
return $this->success($count);
}
/**
* 提现总和
* @param $condition
* @param string $field
* @return array
*/
public function getMemberWithdrawSum($condition, $field = 'apply_money')
{
$count = model('member_withdraw')->getSum($condition, $field);
return $this->success($count);
}
/**
* 获取会员提现分页列表
* @param array $condition
* @param int $page
* @param int $page_size
* @param string $order
* @param string $field
* @param string $alias
* @param string $join
* @return array
*/
public function getMemberWithdrawPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = '', $field = '*',$alias='',$join='')
{
$list = model('member_withdraw')->pageList($condition, $field, $order, $page, $page_size, $alias, $join, '');
return $this->success($list);
}
/**
* 获取会员提现列表
* @param array $where
* @param bool $field
* @param string $order
* @param string $alias
* @param array $join
* @param string $group
* @param null $limit
* @return array
*/
public function getMemberWithdrawList($where = [], $field = true, $order = '', $alias = 'a', $join = [], $group = '', $limit = null)
{
$res = model('member_withdraw')->getList($where, $field, $order, $alias, $join, $group, $limit);
return $this->success($res);
}
/**
* 提现流水号
*/
private function createWithdrawNo()
{
$cache = Cache::get("member_withdraw_no" . time());
if (empty($cache)) {
Cache::set("niutk" . time(), 1000);
$cache = Cache::get("member_withdraw_no" . time());
} else {
$cache = $cache + 1;
Cache::set("member_withdraw_no" . time(), $cache);
}
$no = date('Ymdhis', time()) . rand(1000, 9999) . $cache;
return $no;
}
/**
* 转账方式
* @param int $site_id
* @param string $app_module
* @return array
*/
public function getTransferType($site_id = 0, $app_module = 'shop')
{
$pay_model = new Pay();
$transfer_type_list = $pay_model->getTransferType($site_id);
$config_result = $this->getConfig($site_id, $app_module);
$config = $config_result[ "data" ][ 'value' ];
$data = [];
$support_type = explode(",", $config[ "transfer_type" ]);
foreach ($transfer_type_list as $k => $v) {
if (in_array($k, $support_type)) {
$data[ $k ] = $v;
}
}
return $data;
}
/**
* 会员提现成功通知
* @param $data
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function messageUserWithdrawalSuccess($data)
{
//发送短信
$sms_model = new Sms();
$var_parse = array (
'username' => $data[ "member_name" ],//会员名
'money' => $data[ 'apply_money' ]
);
$data[ "sms_account" ] = $data[ "mobile" ];//手机号
$data[ "var_parse" ] = $var_parse;
$sms_model->sendMessage($data);
$member_model = new Member();
$member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $data[ "member_id" ] ] ]);
$member_info = $member_info_result[ "data" ];
//绑定微信公众号才发送
if (!empty($member_info) && !empty($member_info[ "wx_openid" ])) {
$wechat_model = new WechatMessage();
$data[ "openid" ] = $member_info[ "wx_openid" ];
$data[ "template_data" ] = [
'amount1' => $data[ 'apply_money' ], // 提现金额
'time3' => time_to_date($data[ 'payment_time' ]), // 提现日期
];
$data[ "page" ] = "";
$wechat_model->sendMessage($data);
}
//发送订阅消息
if (!empty($member_info) && !empty($member_info[ "weapp_openid" ])) {
$weapp_model = new WeappMessage();
$data[ "openid" ] = $member_info[ "weapp_openid" ];
$data[ "template_data" ] = [
'amount6' => [
'value' => $data[ 'apply_money' ]
],
'date3' => [
'value' => time_to_date(time())
]
];
$data[ "page" ] = "";
$weapp_model->sendMessage($data);
}
}
/**
* 会员提现失败通知
* @param $data
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function messageUserWithdrawalError($data)
{
//发送短信
$sms_model = new Sms();
$var_parse = array (
'username' => $data[ "member_name" ],//会员名
'money' => $data[ 'apply_money' ]
);
$data[ "sms_account" ] = $data[ "mobile" ];//手机号
$data[ "var_parse" ] = $var_parse;
$sms_model->sendMessage($data);
$member_model = new Member();
$member_info_result = $member_model->getMemberInfo([ [ "member_id", "=", $data[ "member_id" ] ] ]);
$member_info = $member_info_result[ "data" ];
//绑定微信公众号才发送
if (!empty($member_info) && !empty($member_info[ "wx_openid" ])) {
$wechat_model = new WechatMessage();
$data[ "openid" ] = $member_info[ "wx_openid" ];
$data[ "template_data" ] = [
'keyword1' => time_to_date($data[ 'create_time' ]),
'keyword2' => '审核失败',
'keyword3' => '会员申请提现',
'keyword4' => $data[ 'apply_money' ],
];
$data[ "page" ] = "";
$wechat_model->sendMessage($data);
}
//发送订阅消息
if (!empty($member_info) && !empty($member_info[ "weapp_openid" ])) {
$weapp_model = new WeappMessage();
$data[ "openid" ] = $member_info[ "weapp_openid" ];
$data[ "template_data" ] = [
'amount3' => [
'value' => $data[ 'apply_money' ]
],
'phrase4' => [
'value' => '审核失败'
],
'date2' => [
'value' => time_to_date(time())
]
];
$data[ "page" ] = "";
$weapp_model->sendMessage($data);
}
}
/**
* 会员申请提现通知,卖家通知
* @param $data
* @throws \GuzzleHttp\Exception\GuzzleException
*/
public function messageUserWithdrawalApply($data)
{
//发送短信
$sms_model = new Sms();
$var_parse = array (
"username" => replaceSpecialChar($data[ "member_name" ]),//会员名
"money" => $data[ "apply_money" ],//退款申请金额
);
// $site_id = $data['site_id'];
// $shop_info = model("shop")->getInfo([["site_id", "=", $site_id]], "mobile,email");
// $message_data["sms_account"] = $shop_info["mobile"];//手机号
$data[ "var_parse" ] = $var_parse;
$shop_accept_message_model = new ShopAcceptMessage();
$list = $shop_accept_message_model->getShopAcceptMessageList()[ 'data' ];
if (!empty($list)) {
foreach ($list as $v) {
$message_data = $data;
$message_data[ "sms_account" ] = $v[ "mobile" ];//手机号
$sms_model->sendMessage($message_data);
if ($v[ 'wx_openid' ] != "") {
$wechat_model = new WechatMessage();
$data[ "openid" ] = $v[ 'wx_openid' ];
$data[ "template_data" ] = [
'thing3' => replaceSpecialChar($data[ "member_name" ]), // 客户名称
'amount6' => $data[ "apply_money" ], // 提现金额
'time8' => time_to_date($data[ 'apply_time' ]) // 提现时间
];
$data[ "page" ] = "";
$wechat_model->sendMessage($data);
}
}
}
}
public function exportWithdraw($condition, $order)
{
try {
$file_name = date('Y年m月d日-余额提现', time()) . '.csv';
// $file_name = date('YmdHis').'.csv';//csv文件名
//通过分批次执行数据导出(防止内存超出配置设置的)
set_time_limit(0);
ini_set('memory_limit', '256M');
//设置header头
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $file_name . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
//打开php数据输入缓冲区
$fp = fopen('php://output', 'a');
// fwrite($fp, chr(0xEF).chr(0xBB).chr(0xBF)); // 添加 BOM
$heade = [ '会员账号', '提现方式', '申请提现金额', '提现手续费', '实际转账金额', '提现状态', '申请时间', '银行名称', '收款账号', '真实姓名', '手机号' ];
//将数据编码转换成GBK格式
mb_convert_variables('GBK', 'UTF-8', $heade);
//将数据格式化为CSV格式并写入到output流中
fputcsv($fp, $heade);
//写入第一行表头
Db::name('member_withdraw')->where($condition)->order($order)->chunk(500, function($item_list) use ($fp) {
//写入导出信息
foreach ($item_list as $k => $item_v) {
$temp_data = [
$item_v[ 'member_name' ] . "\t",
$item_v[ 'transfer_type_name' ] . "\t",
(float) $item_v[ 'apply_money' ] . "\t",
(float) $item_v[ 'service_money' ] . "\t",
(float) $item_v[ 'money' ] . "\t",
$item_v[ 'status_name' ] . "\t",
time_to_date($item_v[ 'apply_time' ]) . "\t",
$item_v[ 'bank_name' ] . "\t",
$item_v[ 'account_number' ] . "\t",
$item_v[ 'realname' ] . "\t",
$item_v[ 'mobile' ] . "\t",
];
mb_convert_variables('GBK', 'UTF-8', $temp_data);
fputcsv($fp, $temp_data);
//将已经存储到csv中的变量数据销毁释放内存
unset($item_v);
}
unset($item_list);
});
//关闭句柄
fclose($fp);
die;
} catch (\Exception $e) {
return $this->error([], $e->getMessage() . $e->getFile() . $e->getLine());
}
}
}