Commit ea53db5f by LiuJunYi

会员退款

parent 387562b3
......@@ -2,7 +2,6 @@
namespace app\admin\controller;
use app\admin\controller\AuthBase;
use app\common\model\Orders;
use app\common\model\Refund;
use app\common\utils\WXSendMessage;
......@@ -29,8 +28,9 @@ class Order extends AuthBase
//搜索筛选
$status = input('get.status', '-1');
$id = input('get.id');
$start_time = input('get.start_time');
$end_time = input('get.end_time');
$start_time = input('get.start_time');
$type = input('get.type');
$condition = [];
......@@ -98,14 +98,14 @@ class Order extends AuthBase
//导出到excel之前数据处理
$mulit_arr = [];
$mulit_arr['data'] = [];
$cont = [['订单标题', '订单号','订单来源', '用户名', '电话', '微信号','地址','vip购买信息', '活动名称', '活动价格', '家庭组数', '大人数量', '孩子数量', '孩子年龄', '订单总价', '下单时间', '订单状态']];
$cont = [['订单标题', '订单号', '订单来源', '用户名', '电话', '微信号', '地址', 'vip购买信息', '活动名称', '活动价格', '家庭组数', '大人数量', '孩子数量', '孩子年龄', '订单总价', '下单时间', '订单状态']];
foreach ($order_list as $vo) {
$arr = [];
$arr[] = $vo['title'];
$arr[] = $vo['out_trade_no'];
$arr[] = $vo['type'] == 1 ? '活动报名' : '购买会员卡订单';
$nickname = json_encode($vo->user_info['nickname']);
$nickname = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/","*",$nickname);//替换成*
$nickname = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/", "*", $nickname);//替换成*
$nickname = json_decode($nickname);
$arr[] = $nickname;
$arr[] = $vo->user_info['phone'];
......@@ -294,7 +294,7 @@ class Order extends AuthBase
} else {
throw new Exception($result['return_msg']);
}
} catch (Exception $e) {
} catch (\Exception $e) {
Db::rollback();
return json(['code' => 1, 'msg' => $e->getMessage()]);
}
......@@ -332,4 +332,82 @@ class Order extends AuthBase
return ['code' => 1, 'msg' => '操作失败'];
}
}
//会员卡退款订单
public function cardOrderList()
{
$list = \app\common\model\Order::hasWhere('userInfo', function ($query) {
if (input('start_time') && input('end_time')) {
$query->where('order.created_at', 'between', [input('start_time'), input('end_time')]);
}
if (input('phone')) {
$query->where('phone', 'like', "%" . trim(input('phone')) . "%");
}
$query->where('type', 2)->where('status', 1);
})->paginate(15, false, [
'query' => $_GET
]);
return $this->fetch('', compact('list'));
}
public function cardRefund()
{
//退款
// //获取该订单
$order = \app\common\model\Order::get(['id' => input('id'), 'status' => 1]);
if (!$order) {
return json(['code' => 1, 'msg' => '退款异常,请刷新页面重试!']);
}
//查看是否超过退款金额
if ($order['total_fee'] > input('price')) {
return json(['code' => 1, 'msg' => '超过退款金额']);
}
Db::startTrans();
try {
//修改订单状态
$order->status = 3;
$order->is_refund = 3;
$order->save();//修改订单状态
//微信退款
$input = new \WxPayRefund();
$input->SetOut_trade_no($order['out_trade_no']);
$input->SetTotal_fee($order['total_fee'] * 100);
$input->SetRefund_fee(number_format(input('price'),2)* 100);
$config = new \WxPayConfig();
$input->SetOut_refund_no("sdkphp" . date("YmdHis"));
$input->SetOp_user_id($config->GetMerchantId());
$result = \WxPayApi::refund($config, $input);
if ($result['return_code'] == 'SUCCESS') {
Db::commit();
//发送消息模板
$openId = \app\common\model\User::get($order->uid)['openid'];
$template_id = config('wxapp.template_id_refund');
$page = config('wxapp.page');
$form_id = $order->prepay_id;
$param = [
$order->out_trade_no,
$order->title,
$order->total_fee,
date('Y-m-d H:i:s')
];
WXSendMessage::send_template_notice($openId, $template_id, $page, $form_id, $param);
return json(['code' => 0, 'msg' => '退款成功']);
} else {
throw new Exception($result['return_msg']);
}
} catch (\Exception $e) {
Db::rollback();
return json(['code' => 1, 'msg' => $e->getMessage()]);
}
}
}
......@@ -127,4 +127,16 @@ class User extends AuthBase
return json(['code'=>0,'msg'=>'修改成功']);
}
}
public function changeTime()
{
if(request()->isAjax()){
try{
\app\common\model\User::update(input('post.'));
}catch (Exception $e){
return json(['code'=>1,'msg'=>'修改失败']);
}
return json(['code'=>0,'msg'=>'修改成功']);
}
}
}
......@@ -59,6 +59,9 @@
<li <?php if(CONTROLLER_NAME == 'Order'&&ACTION_NAME=='index'){echo 'class="active"';}?>>
<a href="<?php echo url("@admin/Order/index")?>">订单列表</a>
</li>
<li <?php if(CONTROLLER_NAME == 'Order'&&ACTION_NAME=='cardorderlist'){echo 'class="active"';}?>>
<a href="<?php echo url("@admin/Order/cardOrderList")?>">会员卡退款</a>
</li>
<li <?php if(CONTROLLER_NAME == 'Order'&&ACTION_NAME=='refund'){echo 'class="active"';}?>>
<a href="<?php echo url("@admin/Order/refund")?>">退款审核</a>
</li>
......
......@@ -105,9 +105,7 @@
<td>{$vo.wx_number}</td>
<td>{$vo.address}</td>
<td>
{if condition="$vo.is_vip == 1"}
{$vo.vip_endtime}
{/if}
<input type="date" name="vip_endtime" value="{$vo.vip_endtime!='1970-01-01'?$vo.vip_endtime:''}" onchange="changeTime(this,'{$vo.id}')">
</td>
<td>
{$vo.ip}
......@@ -174,4 +172,11 @@
layer.msg(res.msg)
});
}
function changeTime(obj,id) {
let vip_endtime = $(obj).val();
$.post("{:url('changeTime')}", {id:id,vip_endtime: vip_endtime}, function (res) {
layer.msg(res.msg)
});
}
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment