123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace app\store\model\card;
- use app\common\model\card\GenRealRiceCards as GenRealRiceCardsModel;
- use think\facade\Db;
- /**
- * 米卡面额模型
- * @package app\common\model
- */
- class GenRealRiceCards extends GenRealRiceCardsModel
- {
- protected $name = 'gen_real_rice_cards';
- /**
- * 生成兑换码
- * @param $data
- * @return bool
- */
- public function addCodes($data){
- $bathLength = 2000;
- $m = new self();
- $new = ['rice_card_id'=>$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;
- }
- }
|