www.lightcourse.com/app/home/controller/Predeposit.php

427 lines
16 KiB
PHP

<?php
/**
* 预存款管理
*/
namespace app\home\controller;
use think\facade\View;
use think\facade\Db;
use think\facade\Lang;
/**
* ============================================================================
* 联课教育商城系统
* ============================================================================
* 版权所有 2022 刻羽互动科技有限公司,并保留所有权利。
* 网站地址: http://www.o1h.cn
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
* 不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* 控制器
*/
class Predeposit extends BaseMember {
public function initialize() {
parent::initialize();
Lang::load(base_path() . 'home/lang/'.config('lang.default_lang').'/predeposit.lang.php');
}
/**
* 充值添加
*/
public function recharge_add() {
if (!request()->isPost()) {
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('recharge_add');
return View::fetch($this->template_dir . 'pd_recharge_add');
} else {
$pdr_amount = abs(floatval(input('post.pdr_amount')));
if ($pdr_amount <= 0) {
$this->error(lang('predeposit_recharge_add_pricemin_error'));
}
$predeposit_model = model('predeposit');
$data = array();
$data['pdr_sn'] = $pay_sn = makePaySn(session('member_id'));
$data['pdr_member_id'] = session('member_id');
$data['pdr_member_name'] = session('member_name');
$data['pdr_amount'] = $pdr_amount;
$data['pdr_addtime'] = TIMESTAMP;
$insert = $predeposit_model->addPdRecharge($data);
if ($insert) {
//转向到商城支付页面
$this->redirect(url('Buy/pd_pay', ['pay_sn' => $pay_sn]));
}
}
}
/**
* 平台充值卡
*/
public function rechargecard_add() {
if (!request()->isPost()) {
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('rechargecard_add');
return View::fetch($this->template_dir . 'rechargecard_add');
return;
} else {
$sn = (string) input('post.rc_sn');
if (!$sn || strlen($sn) > 50) {
$this->error(lang('platform_recharge_card_number_cannot_empty'));
exit;
}
try {
$res=model('predeposit')->addRechargecard($sn, $this->member_info);
if($res['message']){
$this->error($res['message']);
}
} catch (Exception $e) {
$this->error($e->getMessage());
}
$this->success(lang('platform_recharge_card_successfully_used'), url('Predeposit/rcb_log_list'));
}
}
/**
* 充值列表
*/
public function index() {
$condition = array();
$condition[] = array('pdr_member_id','=',session('member_id'));
$pdr_sn = input('pdr_sn');
if (!empty($pdr_sn)) {
$condition[] = array('pdr_sn','=',$pdr_sn);
}
$predeposit_model = model('predeposit');
$predeposit_list = $predeposit_model->getPdRechargeList($condition, 10, '*', 'pdr_id desc');
View::assign('predeposit_list', $predeposit_list);
View::assign('show_page', $predeposit_model->page_info->render());
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('recharge_list');
return View::fetch($this->template_dir . 'pd_recharge_list');
}
/**
* 查看充值详细
*
*/
public function recharge_show() {
$pdr_id = intval(input('param.id'));
if ($pdr_id <= 0) {
$this->error(lang('param_error'));
}
$predeposit_model = model('predeposit');
$condition = array();
$condition[] = array('pdr_member_id','=',session('member_id'));
$condition[] = array('pdr_id','=',$pdr_id);
$condition[] = array('pdr_payment_state','=',1);
$info = $predeposit_model->getPdRechargeInfo($condition);
if (!$info) {
$this->error(lang('predeposit_record_error'));
}
View::assign('info', $info);
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('recharge_show');
return View::fetch($this->template_dir . 'recharge_show');
}
/**
* 删除充值记录
*
*/
public function recharge_del() {
$pdr_id = intval(input('param.id'));
if ($pdr_id <= 0) {
ds_json_encode(10001,lang('predeposit_parameter_error'));
}
$predeposit_model = model('predeposit');
$condition = array();
$condition[] = array('pdr_member_id','=',session('member_id'));
$condition[] = array('pdr_id','=',$pdr_id);
$condition[] = array('pdr_payment_state','=',0);
$result = $predeposit_model->delPdRecharge($condition);
if ($result) {
ds_json_encode(10000,lang('ds_common_del_succ'));
} else {
ds_json_encode(10001,lang('ds_common_del_fail'));
}
}
/**
* 预存款变更日志
*/
public function pd_log_list() {
$condition = array();
$condition[] = array('lg_member_id','=',session('member_id'));
$predeposit_model = model('predeposit');
$predeposit_list = $predeposit_model->getPdLogList($condition, 10, '*', 'lg_id desc');
View::assign('show_page', $predeposit_model->page_info->render());
View::assign('predeposit_list', $predeposit_list);
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('loglist');
return View::fetch($this->template_dir . 'pd_log_list');
}
/**
* 充值卡余额变更日志
*/
public function rcb_log_list() {
$rcblog_model = model('rcblog');
$rcblog_list = $rcblog_model->getRechargecardBalanceLogList(array('member_id' => session('member_id')), 10, 'rcblog_id desc');
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('rcb_log_list');
View::assign('show_page', $rcblog_model->page_info->render());
View::assign('rcblog_list', $rcblog_list);
return View::fetch($this->template_dir . 'rcb_log_list');
}
/**
* 申请提现
*/
public function pd_cash_add() {
if (request()->isPost()) {
$pdc_amount=abs(floatval(input('post.pdc_amount')));
$memberbank_id = intval(input('param.memberbank_id'));
if($memberbank_id>0){
$memberbank = model('memberbank')->getMemberbankInfo(array('member_id' => session('member_id'), 'memberbank_id' => $memberbank_id));
if(empty($memberbank)){
ds_json_encode(10001,lang('param_error'));
}
$pdc_bank_type=$memberbank['memberbank_type'];
$pdc_bank_name = $memberbank['memberbank_type']=='alipay'?lang('pay_method_alipay'):$memberbank['memberbank_name'];
$pdc_bank_no = $memberbank['memberbank_no'];
$pdc_bank_user = $memberbank['memberbank_truename'];
}elseif($memberbank_id==-1){//使用微信
$member_wxinfo= unserialize($this->member_info['member_wxinfo']);
if(!empty($member_wxinfo) && is_array($member_wxinfo) && isset($member_wxinfo['member_wxopenid']) && $member_wxinfo['member_wxopenid']){
$pdc_bank_type = 'weixin';
$pdc_bank_name = lang('pay_method_wechat');
$pdc_bank_no = $member_wxinfo['member_wxopenid'];
$pdc_bank_user = $member_wxinfo['nickname'];
}else{
ds_json_encode(10001,lang('param_error'));
}
}else{
ds_json_encode(10001,lang('param_error'));
}
$data=[
'pdc_amount' =>$pdc_amount,
'pdc_bank_type' =>$pdc_bank_type,
'pdc_bank_name' =>$pdc_bank_name,
'pdc_bank_no' =>$pdc_bank_no,
'pdc_bank_user' =>$pdc_bank_user,
'password' =>input('post.password')
];
$predeposit_validate = ds_validate('predeposit');
if (!$predeposit_validate->scene('pd_cash_add')->check($data)) {
ds_json_encode(10001,$predeposit_validate->getError());
}
$predeposit_model = model('predeposit');
$member_model = model('member');
$member_info = $member_model->getMemberInfoByID(session('member_id'));
//验证支付密码
if (md5(input('post.password')) != $member_info['member_paypwd']) {
ds_json_encode(10001,lang('payment_password_error'));
}
//验证金额是否足够
if (floatval($member_info['available_predeposit']) < $pdc_amount) {
ds_json_encode(10001,lang('predeposit_cash_shortprice_error'));
}
//是否超过提现周期
$condition = array();
$condition[] = array('pdc_member_id','=',$this->member_info['member_id']);
$condition[] = array('pdc_payment_state','in',[0, 1]);
$condition[] = array('pdc_addtime','>',TIMESTAMP - intval(config('ds_config.member_withdraw_cycle')) * 86400);
$last_withdraw = $predeposit_model->getPdcashInfo($condition);
if ($last_withdraw) {
ds_json_encode(10001, lang('predeposit_last_withdraw_time_error') . date('Y-m-d', $last_withdraw['member_withdraw_cycle']));
}
//是否不小于最低提现金额
if ($pdc_amount < floatval(config('ds_config.member_withdraw_min'))) {
ds_json_encode(10001, lang('predeposit_withdraw_min') . config('ds_config.member_withdraw_min') . lang('ds_yuan'));
}
//是否不超过最高提现金额
if ($pdc_amount > floatval(config('ds_config.member_withdraw_max'))) {
ds_json_encode(10001, lang('predeposit_withdraw_max') . config('ds_config.store_withdraw_max') . lang('ds_yuan'));
}
try {
Db::startTrans();
$pdc_sn = makePaySn(session('member_id'));
$data = array();
$data['pdc_sn'] = $pdc_sn;
$data['pdc_member_id'] = session('member_id');
$data['pdc_member_name'] = session('member_name');
$data['pdc_bank_type'] = $pdc_bank_type;
$data['pdc_amount'] = $pdc_amount;
$data['pdc_bank_name'] = $pdc_bank_name;
$data['pdc_bank_no'] = $pdc_bank_no;
$data['pdc_bank_user'] = $pdc_bank_user;
$data['pdc_addtime'] = TIMESTAMP;
$data['pdc_payment_state'] = 0;
$insert = $predeposit_model->addPdcash($data);
if (!$insert) {
ds_json_encode(10001,lang('predeposit_cash_add_fail'));
}
//冻结可用预存款
$data = array();
$data['member_id'] = $member_info['member_id'];
$data['member_name'] = $member_info['member_name'];
$data['amount'] = $pdc_amount;
$data['order_sn'] = $pdc_sn;
$predeposit_model->changePd('cash_apply', $data);
Db::commit();
ds_json_encode(10000,lang('predeposit_cash_add_success'));
} catch (Exception $e) {
Db::rollback();
ds_json_encode(10001,$e->getMessage());
}
}
}
/**
* 提现列表
*/
public function pd_cash_list() {
$condition = array();
$condition[] = array('pdc_member_id','=',session('member_id'));
$sn_search = input('post.sn_search');
if (!empty($sn_search)) {
$condition[] = array('pdc_sn','=',$sn_search);
}
$paystate_search = input('post.paystate_search');
if (isset($paystate_search)) {
$condition[] = array('pdc_payment_state','=',intval($paystate_search));
}
$pdcash_list = Db::name('pdcash')->where($condition)->order('pdc_id desc')->paginate();
View::assign('pdcash_list', $pdcash_list);
View::assign('show_page', $pdcash_list->render());
/* 设置买家当前菜单 */
$this->setMemberCurMenu('predeposit');
/* 设置买家当前栏目 */
$this->setMemberCurItem('cashlist');
return View::fetch($this->template_dir . 'pd_cash_list');
}
/**
* 提现记录详细
*/
public function pd_cash_info() {
$pdc_id = intval(input('param.id'));
if ($pdc_id <= 0) {
$this->error(lang('param_error'), 'home/predeposit/pd_cash_list');
}
$predeposit_model = model('predeposit');
$condition = array();
$condition[] = array('pdc_member_id','=',session('member_id'));
$condition[] = array('pdc_id','=',$pdc_id);
$info = $predeposit_model->getPdcashInfo($condition);
if (empty($info)) {
$this->error(lang('predeposit_record_error'), 'home/predeposit/pd_cash_list');
}
$this->setMemberCurItem('cashinfo');
$this->setMemberCurMenu('predeposit');
View::assign('info', $info);
return View::fetch($this->template_dir . 'pd_cash_info');
}
/**
* 栏目菜单
*/
function getMemberItemList() {
$item_list = array(
array(
'name' => 'loglist',
'text' => lang('detail_list'),
'url' => url('Predeposit/pd_log_list'),
),
array(
'name' => 'recharge_list',
'text' => lang('prepaid_phone_list'),
'url' => url('Predeposit/index'),
),
array(
'name' => 'cashlist',
'text' => lang('withdrawal_list'),
'url' => url('Predeposit/pd_cash_list'),
),
array(
'name' => 'rcb_log_list',
'text' => lang('balance_recharge_card'),
'url' => url('Predeposit/rcb_log_list'),
),
);
if (request()->action() == 'rechargeinfo') {
$item_list[] = array(
'name' => 'rechargeinfo',
'text' => lang('ds_member_path_predeposit_rechargeinfo'),
'url' => url('Predeposit/rechargeinfo'),
);
}
if (request()->action() == 'recharge_add') {
$item_list[] = array(
'name' => 'recharge_add',
'text' => lang('predeposit_online_recharge'),
'url' => url('Predeposit/recharge_add'),
);
}
if (request()->action() == 'rechargecard_add') {
$item_list[] = array(
'name' => 'rechargecard_add',
'text' => lang('predeposit_recharge_card_recharge'),
'url' => url('Predeposit/rechargecard_add'),
);
}
if (request()->action() == 'cashadd') {
$item_list[] = array(
'name' => 'cashadd',
'text' => lang('ds_member_path_predeposit_cashadd'),
'url' => url('Predeposit/cashadd'),
);
}
if (request()->action() == 'cashinfo') {
$item_list[] = array(
'name' => 'cashinfo',
'text' => lang('ds_member_path_predeposit_cashinfo'),
'url' => url('Predeposit/cashinfo'),
);
}
return $item_list;
}
}