1. 订单列表添加平台流水号查询

2. 修临订单查询功能异常问题
3. 优化订单数据表结构
This commit is contained in:
技术老胡 2025-03-31 12:21:00 +08:00
parent 2cd473019b
commit a3d15ee7e2
3 changed files with 71 additions and 66 deletions

View File

@ -240,6 +240,7 @@ EOT;
`create_time` datetime DEFAULT CURRENT_TIMESTAMP, `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`close_time` datetime DEFAULT NULL, `close_time` datetime DEFAULT NULL,
`pay_time` datetime DEFAULT NULL, `pay_time` datetime DEFAULT NULL,
`platform` varchar(15) NOT NULL DEFAULT '',
`platform_order` varchar(255) NOT NULL DEFAULT '', `platform_order` varchar(255) NOT NULL DEFAULT '',
`aid` int(11) NOT NULL DEFAULT 0, `aid` int(11) NOT NULL DEFAULT 0,
`cid` int(11) NOT NULL DEFAULT 0, `cid` int(11) NOT NULL DEFAULT 0,

View File

@ -70,41 +70,32 @@ class Order extends BaseModel
public static function serchOrders($query) public static function serchOrders($query)
{ {
$select = []; $select = [];
$_select = []; $allow_field = ['id', 'order_id', 'pid', 'type', 'out_trade_no', 'name', 'really_price', 'money', 'state', 'create_time_start', 'create_time_end', 'close_time', 'pay_time', 'platform', 'platform_order', 'aid', 'cid',];
$allow_field = ['id', 'order_id', 'pid', 'type', 'out_trade_no', 'notify_url', 'return_url', 'name', 'really_price', 'money', 'clientip', 'device', 'state', 'create_time_start', 'create_time_end', 'close_time', 'pay_time', 'platform', 'platform_order', 'aid', 'cid',];
foreach ($query as $key => $value) { foreach ($query as $key => $value) {
if (in_array($key, $allow_field) && isset($value)) { if (in_array($key, $allow_field) && isset($value)) {
if ($key === 'name') { if ($key === 'name') {
$select[] = ['Order.' . $key, 'like', '%' . $value . '%']; $select[] = [$key, 'like', '%' . $value . '%'];
continue; continue;
} }
if ($key === 'create_time_start') { if ($key === 'create_time_start') {
$select[] = ['Order.' . 'create_time', '>', $value]; $select[] = ['create_time', '>', $value];
continue; continue;
} }
if ($key === 'create_time_end') { if ($key === 'create_time_end') {
$select[] = ['Order.' . 'create_time', '<', $value]; $select[] = ['create_time', '<', $value];
continue; continue;
} }
if ($key === 'platform') { $select[] = [$key, '=', $value];
$_select['platform'] = $value;
continue;
}
$select[] = ['Order.' . $key, '=', $value];
} }
} }
return self::with('payAccount') return self::where($select);
->hasWhere('payAccount', function ($query) use ($_select) {
$query->where($_select);
})
->where($select);
} }
// 查询订单详细 // 查询订单详细
public static function showOrderDetail($id) public static function showOrderDetail($id)
{ {
$order = self::find($id); $order = self::find($id);
$a_list = PayAccount::find($order->aid); $a_list = PayAccount::withTrashed()->find($order->aid);
$c_list = PayChannel::find($order->cid); $c_list = PayChannel::withTrashed()->find($order->cid);
if (!$order) { if (!$order) {
return []; return [];
} }

View File

@ -39,9 +39,10 @@
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
<label class="layui-form-label">用户ID</label> <label class="layui-form-label">平台流水号</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" name="pid" autocomplete="off" class="layui-input" placeholder="请输入"> <input type="text" name="platform_order" autocomplete="off" class="layui-input"
placeholder="请输入">
</div> </div>
</div> </div>
<div class="layui-inline"> <div class="layui-inline">
@ -126,6 +127,15 @@
<i class="icon pear-icon pear-icon-history"></i> <i class="icon pear-icon pear-icon-history"></i>
清空过期 清空过期
</button> </button>
</script>
<script type="text/html" id="platformTpl">
<div>
{{#
let platforms = JSON.parse(sessionStorage.getItem('platforms')) || {};
let platformName = platforms[d.platform] || '已卸载';
return `${platformName} [${d.aid}:${d.cid}]`;
}}
</div>
</script> </script>
<script src="/component/layui/layui.js"></script> <script src="/component/layui/layui.js"></script>
<script src="/component/pear/pear.js"></script> <script src="/component/pear/pear.js"></script>
@ -203,13 +213,16 @@
(async () => { (async () => {
const data = await fetch('/api/Plugin/pluginOption').then(res => res.json()); const data = await fetch('/api/Plugin/pluginOption').then(res => res.json());
let option_str = `<option value="">收款平台</option>`; let option_str = `<option value="">收款平台</option>`;
let platforms = {};
data.forEach(val => { data.forEach(val => {
option_str += `<option value="${val.platform}">${val.name}</option>`; option_str += `<option value="${val.platform}">${val.name}</option>`;
platforms[val.platform] = val.name;
}); });
const select = document.querySelector('select[name="platform"]'); const select = document.querySelector('select[name="platform"]');
select.innerHTML = option_str; select.innerHTML = option_str;
form.render('select'); form.render('select');
})() // 会话存储
sessionStorage.setItem('platforms', JSON.stringify(platforms));
// 表格列参数 // 表格列参数
let cols = [[ let cols = [[
{ type: 'checkbox' }, { type: 'checkbox' },
@ -222,7 +235,7 @@
{ title: '支付状态', field: 'state', align: 'center', minWidth: 85, templet: '<div>{{# if(d.state==1){return`<span class="layui-badge layui-bg-green">成功</span>`}else{if(new Date(d.close_time)>new Date("<?php echo $servertime ?>")){return`<span class="layui-badge layui-bg-orange">等待</span>`}else{return`<span class="layui-badge layui-bg-gray">过期</span>`} } }}</div>' }, { title: '支付状态', field: 'state', align: 'center', minWidth: 85, templet: '<div>{{# if(d.state==1){return`<span class="layui-badge layui-bg-green">成功</span>`}else{if(new Date(d.close_time)>new Date("<?php echo $servertime ?>")){return`<span class="layui-badge layui-bg-orange">等待</span>`}else{return`<span class="layui-badge layui-bg-gray">过期</span>`} } }}</div>' },
{ title: '支付时间', field: 'pay_time', align: 'center', minWidth: 160, templet: '<div>{{= d.pay_time == d.create_time ? "- -" : d.pay_time}}</div>' }, { title: '支付时间', field: 'pay_time', align: 'center', minWidth: 160, templet: '<div>{{= d.pay_time == d.create_time ? "- -" : d.pay_time}}</div>' },
{ title: '支付平台', field: 'type', align: 'center', width: 120, templet: '<div>{{# if(d.type=="wxpay"){return`<div class="paytype"><img src="/static/img/wxpay.ico"width="15"><span>微信支付</span></div>`}if(d.type=="alipay"){return`<div class="paytype"><img src="/static/img/alipay.ico"width="15"><span>支付宝</span></div>`}if(d.type=="unionpay"){return`<div class="paytype"><img src="/static/img/unionpay.ico"width="15"><span>云闪付</span></div>`} }}</div>' }, { title: '支付平台', field: 'type', align: 'center', width: 120, templet: '<div>{{# if(d.type=="wxpay"){return`<div class="paytype"><img src="/static/img/wxpay.ico"width="15"><span>微信支付</span></div>`}if(d.type=="alipay"){return`<div class="paytype"><img src="/static/img/alipay.ico"width="15"><span>支付宝</span></div>`}if(d.type=="unionpay"){return`<div class="paytype"><img src="/static/img/unionpay.ico"width="15"><span>云闪付</span></div>`} }}</div>' },
{ title: '收款平台[账号:终端]', field: 'platform', align: 'center', minWidth: 160, templet: '<div>{{# return`${d.payAccount.platform} [${d.aid}:${d.cid}]` }}</div>' }, { title: '收款平台[账号:终端]', field: 'platform', align: 'center', minWidth: 160, templet: '#platformTpl' },
{ title: '操作', align: 'center', width: 120, fixed: 'right', templet: '<div><strong><a href="javascript:;" data-id="{{= d.id }}" class="layui-font-green {{= d.state==1 ? "orderSet-paid" : "orderSet-paying" }}">设置</a></strong></div>' } { title: '操作', align: 'center', width: 120, fixed: 'right', templet: '<div><strong><a href="javascript:;" data-id="{{= d.id }}" class="layui-font-green {{= d.state==1 ? "orderSet-paid" : "orderSet-paying" }}">设置</a></strong></div>' }
]] ]]
// 表格渲染 // 表格渲染
@ -256,7 +269,7 @@
}); });
}, },
}); });
})()
// 事件处理 // 事件处理
// 表格单元格事件 // 表格单元格事件