$data['riceCardId'],'amount'=>$data['amount'],'sale_channel'=>$data['saleChannel']]; //起始卡号 $codeM = new RealRiceCardList(); $cardNum = intval($codeM->alias('rr')->leftJoin('rice_card rc','rr.rice_card_id=rc.id') ->where('rc.type',$data['type']) ->max('card_number')); $cardNum = $data['type']==3?(($cardNum == 0)?600000000:$cardNum):(($cardNum == 0)?700000000:$cardNum); $riceCardM = new RiceCard(); $riceCard = $riceCardM->where('id',$data['riceCardId'])->find()->toArray(); //dd($riceCard['type']); Db::startTrans(); try{ $res = $m->create($new); $id = $res->id??0; $remainAmount = $data['amount']; $times = ceil($remainAmount/$bathLength); if ($riceCard['type'] == 2){//电子现金卡要2开头的八位数字 for($i=0;$i<$times;$i++){ $codes = []; if ($remainAmount >= $bathLength){ $redeemCodes = gen_number8($bathLength,'2'); for($j=0;$j<$bathLength;$j++){ $codes[] = ['rice_card_id'=>$data['riceCardId'],'gen_real_rice_card_id'=>$id,'card_number'=>$redeemCodes[$j],'redeem_code'=>$redeemCodes[$j]]; } $codeM->addBatch($codes); } if ($remainAmount > 0 && $remainAmount<$bathLength){ $redeemCodes = gen_number8($bathLength,'2'); for($j=0;$j<$remainAmount;$j++){ $codes[] = ['rice_card_id'=>$data['riceCardId'],'gen_real_rice_card_id'=>$id,'card_number'=>$redeemCodes[$j],'redeem_code'=>$redeemCodes[$j]]; } $codeM->addBatch($codes); } $remainAmount -= $bathLength; } }else{ $st = $riceCard['type'] == 3?'5':'7'; for($i=0;$i<$times;$i++){ $codes = []; if ($remainAmount >= $bathLength){ //$redeemCodes = gen_rand8($bathLength); $redeemCodes = gen_number8($bathLength,$st); for($j=0;$j<$bathLength;$j++){ $codes[] = ['rice_card_id'=>$data['riceCardId'],'gen_real_rice_card_id'=>$id,'card_number'=>++$cardNum,'redeem_code'=>$redeemCodes[$j]]; } $codeM->addBatch($codes); } if ($remainAmount > 0 && $remainAmount<$bathLength){ //$redeemCodes = gen_rand8($remainAmount); $redeemCodes = gen_number8($bathLength,$st); for($j=0;$j<$remainAmount;$j++){ $codes[] = ['rice_card_id'=>$data['riceCardId'],'gen_real_rice_card_id'=>$id,'card_number'=>++$cardNum,'redeem_code'=>$redeemCodes[$j]]; } $codeM->addBatch($codes); } $remainAmount -= $bathLength; } } Db::commit(); }catch (\Exception $e) { // 回滚事务 Db::rollback(); log_record(__METHOD__.$e->getMessage(),'error'); return false; } return true; } public function getAllList($params){ $filter = $this->getQueryFilter($params); $m = $this->alias('gc')->leftJoin('rice_card rc','gc.rice_card_id=rc.id'); if (count($filter)){ $m = $m->where($filter); } return $m->field('gc.id,gc.rice_card_id,gc.amount,gc.sale_channel,gc.create_time,rc.type,rc.name,rc.expire_day,rc.describe') ->order('gc.id','desc')->paginate(15); } //查询 public function getQueryFilter($param){ $filter = []; if(isset($param['name']) && $param['name']){ $filter[] = ['rc.name','like','%'.$param['name'].'%']; } if(isset($param['type']) && $param['type'] > 0){ $filter[] = ['rc.type','=',$param['type']]; } // 创建时间 if (!empty($param['createTime'])) { $times = between_time($param['createTime']); $filter[] = ['gc.create_time', '>=', $times['start_time']]; $filter[] = ['gc.create_time', '<', $times['end_time'] + 86400]; } return $filter; } }