admin-api/app/jobs/store/platformCommission/GiveWeightValueJob.php

78 lines
3.4 KiB
PHP

<?php
namespace app\jobs\store\platformCommission;
use app\common\model\store\order\StoreOrder;
use app\common\model\store\order\StoreOrderProduct;
use app\common\model\store\platformCommission\WeightValue;
use app\common\model\store\platformCommission\WeightValueLog;
use app\common\repositories\store\platformCommission\WeightValueRepository;
use crmeb\interfaces\JobInterface;
use think\facade\Log;
/**
* Common: 下单赠送权重值
* Author: wu-hui
* Time: 2023/12/27 10:30
* Class GiveWeightValueJob
* @package app\jobs\store\platformCommission
*/
class GiveWeightValueJob implements JobInterface{
public function fire($job,$data){
try{
Log::info('下单赠送权重值 - 开始处理: '.var_export($data,1));
// 获取所有用户的持有信息
$userList = app()->make(WeightValueRepository::class)->getUserHoldList($data['uid']);
$orderIds = StoreOrder::where('group_order_id',$data['group_order_id'])->column('order_id');// 获取订单id
$productList = StoreOrderProduct::whereIn('order_id',$orderIds)
->field('order_product_id,order_id,product_id,(product_price + use_legumes_integral) as product_price')
->select()
->toArray();// 获取当前订单中所有商品
$updateData = [];
$insertLogData = [];
foreach($userList as $userInfo){
foreach($productList as $productInfo){
// 判断:当前用户是否存在修改记录中 不存在添加修改信息
if(empty($updateData[$userInfo['id']])){
$updateData[$userInfo['id']] = [
'id' => $userInfo['id'],
'quantity' => $userInfo['quantity'],
];
}
// 持有数量增加
$changeFront = (float)$updateData[$userInfo['id']]['quantity'];
$updateData[$userInfo['id']]['quantity'] = (float)$productInfo['product_price'] + $changeFront;
// 记录变更记录
$insertLogData[] = [
'uid' => $userInfo['uid'],
'brokerage_level' => $userInfo['brokerage_level'],
'product_id' => $productInfo['product_id'],
'order_id' => $productInfo['order_id'],
'order_product_id' => $productInfo['order_product_id'],
'change_type' => 1,
'change_quantity' => $productInfo['product_price'],
'change_front' => $changeFront,
'change_after' => (float)$updateData[$userInfo['id']]['quantity'],
'remark' => '下线购买商品赠送',
];
}
}
// 数据结果处理
if(count($insertLogData) > 0){
WeightValue::batchUpdate(array_values($updateData));
WeightValueLog::insertAll($insertLogData);
}
}
catch(\Exception $e){
$data['error_msg'] = $e->getMessage();
Log::info('下单赠送权重值 - 失败: '.var_export($data,1));
}
$job->delete();
}
public function failed($data){
Log::info('下单赠送权重值 - 失败(failed): '.var_export($data,1));
}
}