'电子卡', 2=>'实体卡']; const DIG_CARD = 1; CONST ENTITY_CARD = 2; const COUPON_CATEGORY = [1=>'兑换卡', 2=>'储值卡']; protected $name = 'coupon_card'; protected $append = ['coupon_type_text','coupon_category_text']; public function getCouponTypeTextAttr(){ return self::COUPON_TYPE[$this->coupon_type]??''; } public function getCouponCategoryTextAttr(){ return self::COUPON_CATEGORY[$this->coupon_category]??''; } /** * 米卡列表 * @param string $dataType 订单类型 * @param array $param * @return mixed */ public function getAllList(array $param = []) { // 检索查询条件 $filter = $this->getQueryFilter($param); // 获取数据列表 $query = $this->with([])->where($filter) ->alias('card') ->field('card.*'); $list = $query->order(['card.id' => 'desc'])->paginate(15); foreach($list as $row){ $goodsku = GoodsSkuModel::where('goods_sku_id',$row->good_sku_id)->where('goods_id',$row->good_id)->find(); $goods = GoodsModel::field('goods_name')->where("goods_id",$row->good_id)->find(); $row->sku_name = $goodsku->goods_props[0]['value']['name']??''; $row->good_name = $goods->goods_name??''; } return $list; } //查询 public function getQueryFilter($param){ return $param; } // //生成卡券 // public function autocreate($id,$create_num = 1){ // $card = Couponcard::where('id',$id)->find(); // if($card&&$card->good_id&&$card->good_num>0&&$card->coupon_category>0&&$card->coupon_type){ // for($i=0;$i<$create_num;$i++){ // $data['coupon_card_id'] =$card->id; // $data['coupon_card_name'] =$card->name; // } // // $data[''] // } // } //生成随机数 public function randSecrets($num){ $num = $num + 1000; $arr = []; for($i=0;$i<$num;$i++){ $arr[] = mt_rand(10000000,99999999); } return array_unique($arr); } //批量添加 主要是生成去重复,及查询是否数据库中已存在 public function addCard($id,$num){ $card = Couponcard::where('id',$id)->find(); $start_no = $card->coupon_type.$card->coupon_category.'00000000'; $end_no = $card->coupon_type.$card->coupon_category.'99999999'; $max_start_no = Usercoupon::where('coupon_no','>=', $start_no)->where("coupon_no","<",$end_no)->max("coupon_no"); if(empty($max_start_no)){ $start_no = intval($start_no); }else{ $start_no = intval($max_start_no); } $data =[]; $now = Date("Y-m-d H:i:s",time()); $randArray = $this->randSecrets($num); $coupon_code =[]; $secrets = UsercouponModel::whereIn('coupon_code',$randArray)->select(); foreach($secrets as $s){ $coupon_code[] = $s->coupon_code; } $avaiableArray = array_diff($randArray,$coupon_code); $createNum = $num>count($avaiableArray)?count($avaiableArray):$num; $avaiableArray = array_values($avaiableArray); $card_name = $card['name']??''; for($i=1;$i<$createNum+1;$i++){ $row['coupon_card_id'] = $id; $row['coupon_card_name'] = $card_name; $row['coupon_no'] = $start_no+$i; $row['coupon_code'] = $avaiableArray[$i]; $row['coupon_type'] = $card->coupon_type; $row['coupon_category'] = $card->coupon_category; $row['good_num'] = $card->good_num; $row['good_id'] = $card->good_id; $row['good_sku_id'] = $card->good_sku_id; $row['created_at'] = $now; $row['avaiable_good_num'] = $card->good_num; $data[] = $row; } $model = new UsercouponModel; $model->saveAll($data); } }