| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /**
- * 会员订单相关队列
- */
- namespace jobs;
- use app\common\model\BoxMidHandleModel;
- use app\common\model\ShopGoodsModel;
- use app\common\model\ShopOrderModel;
- use app\common\model\YgOrderModel;
- use think\facade\Db;
- use utils\Queue;
- class SystemMiddleOpenBox extends BaseJob
- {
- protected $model = null;
- public function __construct (BoxMidHandleModel $model)
- {
- $this->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);
- }
- }
|