model = $model; } public function SystemHandleBox () { Db::startTrans(); try { $this->recordBoxAppointToMiddle(); Db::commit(); }catch (\Exception $e){ Db::rollback(); Db::name('failed_jobs')->save(['connection'=>'redis', 'queue'=>'aa', 'payload'=>'aa', 'failed_at'=>sr_getcurtime(time()), 'attempts'=>2, 'exception'=>$e->getMessage()]); return false; } $redis = new \think\cache\driver\Redis(); $redis->connect('127.0.0.1', 6379); $redis->set('has_handle_mapping',0); return true; } protected function recordBoxAppointToMiddle($input, $output){ $list = Db::name('box_record')->where('status', 1)->select()->toArray(); $mid_arrs = []; $r_ids = []; $cur_time = sr_getcurtime(time()); foreach ($list as $key=>$val){ $total_goodsbox = $val['box10'] + $val['box20'] + $val['box30'] + $val['box40']; $r_goodsids = ''; // 如果有空盒 if ($val['num'] > $total_goodsbox){ for ($i=0;$i < $val['num']-$total_goodsbox;$i++){ $mid_arrs[] = [ 'h_sn'=>createdHandleOrderSn(), 'uid'=>$val['uid'], 'rid'=>$val['id'], 'goods_id'=>0, 'create_time'=>$cur_time, 'box_type'=>0, 'goods_price'=>0, 'pay_type'=>$val['pay_type'] ]; } } // if (1 == 1){ // sr_throw(); // } // 其他盒子 $box_arrs = [10, 20, 30, 40]; foreach ($box_arrs as $key1=>$val1){ $key_string = strval('box'.$val1); $box_goodsnum = $val[$key_string]; $model = new ShopGoodsModel(); $goods_arr = $model ->where('box_type', $val1) ->where('goods_type', 2) ->field('goods_id,box_type,goods_img,price,goods_name') ->page(1, 20) ->select(); // ->select(); // sr_throw(json_encode($goods_arr)); if ($box_goodsnum > 0){ // 如果后期要调整 取值 直接 排序 goods_arr for ($i = 0; $i < $box_goodsnum;$i++){ $rand_num = mt_rand(0, count($goods_arr)-1); $goods = $goods_arr[$rand_num]; $mid_arrs[] = [ 'h_sn'=>createdHandleOrderSn(), 'uid'=>$val['uid'], 'rid'=>$val['id'], 'goods_id'=>$goods['goods_id'], 'create_time'=>$cur_time, 'box_type'=>$val1, 'goods_price'=>$goods['price'], 'pay_type'=>$val['pay_type'] ]; $r_goodsids .= ((empty($r_goodsids)?'':',').$goods['goods_id']); } } } Db::name('box_record')->where('id', $val['id'])->save([ 'status'=>2, 'goods_ids'=>$r_goodsids ]); } $model = new BoxMidHandleModel(); $model->insertAll($mid_arrs); } }