mirror of
				https://gitee.com/technical-laohu/mpay.git
				synced 2025-11-04 16:53:44 +08:00 
			
		
		
		
	更新码钱、小Y经营等插件
This commit is contained in:
		@@ -22,6 +22,12 @@
 | 
			
		||||
 | 
			
		||||
这样,只要账户、密码没有问题,就不存在监听掉线的情况,也就非常稳定了。
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
目前已支持的收款平台:收钱吧、码钱、小Y经营、数字门店等。
 | 
			
		||||
 | 
			
		||||
正在开发的收款平台:拉卡拉、云闪付盛意旺
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#### 软件架构
 | 
			
		||||
 | 
			
		||||
项目采用 THINKPHP8 + layui 2.9 + PearAdmin后台UI 开发
 | 
			
		||||
 
 | 
			
		||||
@@ -14,5 +14,6 @@ class BaseModel extends Model
 | 
			
		||||
{
 | 
			
		||||
    use SoftDelete;
 | 
			
		||||
    protected $deleteTime = 'delete_time';
 | 
			
		||||
    protected $autoWriteTimestamp = 'timestamp';
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										44
									
								
								app/controller/api/ConsoleController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								app/controller/api/ConsoleController.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace app\controller\api;
 | 
			
		||||
 | 
			
		||||
use think\Request;
 | 
			
		||||
use app\model\Order;
 | 
			
		||||
 | 
			
		||||
class ConsoleController
 | 
			
		||||
{
 | 
			
		||||
    public function orderinfo(Request $request)
 | 
			
		||||
    {
 | 
			
		||||
        $date = (int)$request->get('time') ?: 0;
 | 
			
		||||
        $time = match ($date) {
 | 
			
		||||
            0 => [date('Y') . '-01-01 00:00:00', date('Y-m-d 23:59:59')],
 | 
			
		||||
            1 => [date('Y-m-d H:i:s', strtotime('-30 days')), date('Y-m-d 23:59:59')],
 | 
			
		||||
            2 => [date('Y-m-d H:i:s', strtotime('-6 months')), date('Y-m-d 23:59:59')],
 | 
			
		||||
            3 => [date('Y-m-d H:i:s', strtotime('-1 year')), date('Y-m-d 23:59:59')],
 | 
			
		||||
            default => []
 | 
			
		||||
        };
 | 
			
		||||
        if (!$time) {
 | 
			
		||||
            return json(['code' => 400, 'msg' => '参数错误']);
 | 
			
		||||
        }
 | 
			
		||||
        $orders = Order::whereBetweenTime('create_time', $time[0], $time[1])->where('state', 1)->field('id,type,really_price')->select();
 | 
			
		||||
        $data = [
 | 
			
		||||
            'ordernum' => count($orders),
 | 
			
		||||
            'totalmoney' => \number_format(array_sum(array_column($orders->toArray(), 'really_price')), 2),
 | 
			
		||||
            'wxpay' => [
 | 
			
		||||
                'num' => count($orders->where('type', 'wxpay')),
 | 
			
		||||
                'money' => \number_format(array_sum(array_column($orders->where('type', 'wxpay')->toArray(), 'really_price')), 2)
 | 
			
		||||
            ],
 | 
			
		||||
            'alipay' => [
 | 
			
		||||
                'num' => count($orders->where('type', 'alipay')),
 | 
			
		||||
                'money' => \number_format(array_sum(array_column($orders->where('type', 'alipay')->toArray(), 'really_price')), 2)
 | 
			
		||||
            ],
 | 
			
		||||
            'unionpay' => [
 | 
			
		||||
                'num' => count($orders->where('type', 'unionpay')),
 | 
			
		||||
                'money' => \number_format(array_sum(array_column($orders->where('type', 'unionpay')->toArray(), 'really_price')), 2)
 | 
			
		||||
            ]
 | 
			
		||||
        ];
 | 
			
		||||
        return json($data);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -53,7 +53,8 @@ class PayManageController extends BaseController
 | 
			
		||||
    {
 | 
			
		||||
        $ids = $this->request->post('ids');
 | 
			
		||||
        $res = PayAccount::destroy($ids);
 | 
			
		||||
        if ($res) {
 | 
			
		||||
        $res2 = PayChannel::destroy($ids);
 | 
			
		||||
        if ($res && $res2) {
 | 
			
		||||
            return \json(\backMsg(0, '已删除'));
 | 
			
		||||
        } else {
 | 
			
		||||
            return \json(\backMsg(1, '失败'));
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								extend/payclient/payclient.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								extend/payclient/payclient.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								public/component/payClient.zip
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/component/payClient.zip
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										3
									
								
								public/test.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								public/test.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
echo '测试用例';
 | 
			
		||||
@@ -252,11 +252,11 @@
 | 
			
		||||
									<div id="app" class="layui-card-body">
 | 
			
		||||
										<div class="layui-row order-total">
 | 
			
		||||
											<div class="layui-col-xs6">
 | 
			
		||||
												<p>1433</p>
 | 
			
		||||
												<p>{{ data.ordernum }}</p>
 | 
			
		||||
												<p>总订单(笔)</p>
 | 
			
		||||
											</div>
 | 
			
		||||
											<div class="layui-col-xs6">
 | 
			
		||||
												<p>12900</p>
 | 
			
		||||
												<p>{{ data.totalmoney }}</p>
 | 
			
		||||
												<p>总金额(元)</p>
 | 
			
		||||
											</div>
 | 
			
		||||
										</div>
 | 
			
		||||
@@ -276,8 +276,8 @@
 | 
			
		||||
														<p>全渠道统计</p>
 | 
			
		||||
													</div>
 | 
			
		||||
												</div>
 | 
			
		||||
												<div><strong @click="add(100)">{{ data.ordernum }}</strong> 笔</div>
 | 
			
		||||
												<div><strong>{{ data.totalmoney }}</strong> 元</div>
 | 
			
		||||
												<div><strong>{{ data.wxpay.num }}</strong> 笔</div>
 | 
			
		||||
												<div><strong>{{ data.wxpay.money }}</strong> 元</div>
 | 
			
		||||
											</div>
 | 
			
		||||
											<div class="layui-col-xs12 order-channel">
 | 
			
		||||
												<div class="info-channel">
 | 
			
		||||
@@ -294,8 +294,8 @@
 | 
			
		||||
														<p>全渠道统计</p>
 | 
			
		||||
													</div>
 | 
			
		||||
												</div>
 | 
			
		||||
												<div><strong>50</strong> 笔</div>
 | 
			
		||||
												<div><strong>490</strong> 元</div>
 | 
			
		||||
												<div><strong>{{ data.alipay.num }}</strong> 笔</div>
 | 
			
		||||
												<div><strong>{{ data.alipay.money }}</strong> 元</div>
 | 
			
		||||
											</div>
 | 
			
		||||
											<div class="layui-col-xs12 order-channel">
 | 
			
		||||
												<div class="info-channel">
 | 
			
		||||
@@ -321,8 +321,8 @@
 | 
			
		||||
														<p>全渠道统计</p>
 | 
			
		||||
													</div>
 | 
			
		||||
												</div>
 | 
			
		||||
												<div><strong>31</strong> 笔</div>
 | 
			
		||||
												<div><strong>68</strong> 元</div>
 | 
			
		||||
												<div><strong>{{ data.unionpay.num }}</strong> 笔</div>
 | 
			
		||||
												<div><strong>{{ data.unionpay.money }}</strong> 元</div>
 | 
			
		||||
											</div>
 | 
			
		||||
										</div>
 | 
			
		||||
									</div>
 | 
			
		||||
@@ -428,19 +428,24 @@
 | 
			
		||||
				elem: '#order-data',
 | 
			
		||||
				data: [{
 | 
			
		||||
					title: '今年',
 | 
			
		||||
					id: 'this-year',
 | 
			
		||||
					id: 0,
 | 
			
		||||
				}, {
 | 
			
		||||
					title: '近30天',
 | 
			
		||||
					id: 'near-30days',
 | 
			
		||||
					id: 1,
 | 
			
		||||
				}, {
 | 
			
		||||
					title: '近半年',
 | 
			
		||||
					id: 'near-halfyear',
 | 
			
		||||
					id: 2,
 | 
			
		||||
				}, {
 | 
			
		||||
					title: '近一年',
 | 
			
		||||
					id: 'near-year',
 | 
			
		||||
					id: 3,
 | 
			
		||||
				}],
 | 
			
		||||
				click: function (obj) {
 | 
			
		||||
					this.elem.find('span').text(obj.title);
 | 
			
		||||
					(async () => {
 | 
			
		||||
						const data = await fetch(`/api/Console/orderinfo?time=${obj.id}`).then(res => res.json());
 | 
			
		||||
						const updateOrderInfo = new CustomEvent("updateOrderInfo", { detail: data });
 | 
			
		||||
						window.dispatchEvent(updateOrderInfo);
 | 
			
		||||
					})()
 | 
			
		||||
				}
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
@@ -459,7 +464,7 @@
 | 
			
		||||
				cols: cols,
 | 
			
		||||
				skin: 'line',
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			// 折线图
 | 
			
		||||
			var echartsRecords = echarts.init(document.getElementById('echarts-records'), 'walden');
 | 
			
		||||
			const colorList = ["#9E87FF", '#73DDFF', '#fe9a8b', '#F56948', '#9E87FF']
 | 
			
		||||
			var option = {
 | 
			
		||||
@@ -556,14 +561,15 @@
 | 
			
		||||
 | 
			
		||||
		createApp({
 | 
			
		||||
			setup() {
 | 
			
		||||
				const data = ref({ ordernum: 100, totalmoney: 1500 });
 | 
			
		||||
				function add(num) {
 | 
			
		||||
					data.value.ordernum += num;
 | 
			
		||||
				}
 | 
			
		||||
				return {
 | 
			
		||||
					data,
 | 
			
		||||
					add
 | 
			
		||||
				}
 | 
			
		||||
				const data = ref({ ordernum: 0, totalmoney: 0, wxpay: { num: 0, money: 0 }, alipay: { num: 0, money: 0 }, unionpay: { num: 0, money: 0 } });
 | 
			
		||||
				(async () => {
 | 
			
		||||
					const info = await fetch(`/api/Console/orderinfo?time=0`).then(res => res.json());
 | 
			
		||||
					data.value = info;
 | 
			
		||||
				})()
 | 
			
		||||
				window.addEventListener("updateOrderInfo", (event) => {
 | 
			
		||||
					data.value = event.detail;
 | 
			
		||||
				});
 | 
			
		||||
				return { data }
 | 
			
		||||
			}
 | 
			
		||||
		}).mount('#app')
 | 
			
		||||
	</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -245,7 +245,7 @@
 | 
			
		||||
				}
 | 
			
		||||
				const rec_info = await res.json();
 | 
			
		||||
				if (rec_info.code === 0) {
 | 
			
		||||
					layer.msg(rec_info.msg, { icon: 1, time: 1200 }, () => { table.reload('orders-table') });
 | 
			
		||||
					layer.msg(rec_info.msg, { icon: 1, time: 1200 }, () => { table.reload('account-table') });
 | 
			
		||||
				} else {
 | 
			
		||||
					layer.msg(rec_info.msg, { icon: 2, time: 1200 });
 | 
			
		||||
				}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user