bztang-admin/app/backend/modules/order/controllers/ImitateCreateOrderControlle...

137 lines
3.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace app\backend\modules\order\controllers;
use app\common\components\BaseController;
use app\common\models\Goods;
use app\common\models\Member;
use app\frontend\modules\member\services\MemberCartService;
use app\frontend\modules\memberCart\MemberCartCollection;
/**
* Common: 模拟下单 模拟用户下单并且支付,数据为真实数据,慎用!!!
* Author: wu-hui
* Time: 2023/12/06 9:18
* Class ImitateCreateOrderController
* @package app\backend\modules\order\controllers
*/
class ImitateCreateOrderController extends BaseController{
public function useInlet(){
debug("暂停开发,暂不使用...");
// 获取要处理的列表
$list = $this->getList();
// 循环处理
foreach($list as $key => $createOrderInfo){
try{
echo "<hr />";
echo "开始处理第 {$key} 条数据:<br />UID-{$createOrderInfo['uid']}&nbsp;&nbsp;&nbsp;购买的{$createOrderInfo['total']}个&nbsp;&nbsp;&nbsp;{$createOrderInfo['goods_name']}";
// 模拟下单
$this->imitateCreateOrderOperate($createOrderInfo);
echo "<br />处理完成 - SUCCESS";
}catch(\Exception $e){
echo "<br />处理完成 - <span style='color: red;'>处理失败</span>".$e->getMessage();
}
}
debug("数据处理完成");
}
// 获取数据列表 - 调试数据
private function getList(){
// 获取用户信息
$userIds = Member::uniacid()->pluck('uid')->toArray();
// 获取商户信息
$goodsList = Goods::uniacid()->select(['id','title'])->get()->keyBy('id')->toArray();
$goodsIds = array_column($goodsList,'id');
// 生成数据
$list = [];
for($i = 1; $i <= 3 ; $i++){
$currentGoodsId = $goodsIds[array_rand($goodsIds)];
$currentUid = $userIds[array_rand($userIds)];
$list[] = [
'goods_name' => $goodsList[$currentGoodsId]['title'],
'goods_id' => $currentGoodsId,
'uid' => $currentUid,
'total' => rand(1,10),
'time' => time()
];
}
return $list;
}
// 模拟下单 暂停开发,暂不使用
private function imitateCreateOrderOperate($createOrderInfo){
// request()->goods = [
// 'goods_id' => $createOrderInfo['goods_id'],
// 'total' => $createOrderInfo['total'],
// 'option_id' => 0,
// ];
debug(request()->input());
//订单组
$trade = $this->getMemberCarts()->getTrade(Member::find($createOrderInfo['uid']));
$trade->generate();
$orderIds = $trade->orders->pluck('id')->implode(',');
//生成订单,触发事件
debug(['orderIds'=>$orderIds]);
}
/**
* @return static
*/
private function _getMemberCarts()
{
$goods_params = is_array(request()->input('goods')) ? request()->input('goods') : json_decode(request()->input('goods'), true);
debug([$goods_params]);
$memberCarts = collect($goods_params)->map(function ($memberCart) {
return MemberCartService::newMemberCart($memberCart);
});
return $memberCarts;
}
/**
* @return MemberCartCollection
* @throws \app\common\exceptions\AppException
*/
private function getMemberCarts()
{
if (!isset($this->memberCarts)) {
$memberCarts = new MemberCartCollection($this->_getMemberCarts());
$memberCarts->loadRelations();
$memberCarts->validate();
$this->memberCarts = $memberCarts;
}
return $this->memberCarts;
}
}