Couponcard.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <?php
  2. namespace app\common\model\coupon;
  3. use app\common\library\helper;
  4. use think\facade\Db;
  5. use app\common\model\coupon\Usercoupon as UsercouponModel;
  6. use app\common\model\BaseModel;
  7. use app\common\model\GoodsSku as GoodsSkuModel;
  8. use app\common\model\Goods as GoodsModel;
  9. /**
  10. * 优惠卡模型 已废弃
  11. * @package app\common\model
  12. */
  13. class Couponcard extends BaseModel
  14. {
  15. const COUPON_TYPE = [ 1=>'电子卡', 2=>'实体卡'];
  16. const DIG_CARD = 1;
  17. CONST ENTITY_CARD = 2;
  18. const COUPON_CATEGORY = [1=>'兑换卡', 2=>'储值卡'];
  19. protected $name = 'coupon_card';
  20. protected $append = ['coupon_type_text','coupon_category_text'];
  21. public function getCouponTypeTextAttr(){
  22. return self::COUPON_TYPE[$this->coupon_type]??'';
  23. }
  24. public function getCouponCategoryTextAttr(){
  25. return self::COUPON_CATEGORY[$this->coupon_category]??'';
  26. }
  27. /**
  28. * 米卡列表
  29. * @param string $dataType 订单类型
  30. * @param array $param
  31. * @return mixed
  32. */
  33. public function getAllList(array $param = [])
  34. {
  35. // 检索查询条件
  36. $filter = $this->getQueryFilter($param);
  37. // 获取数据列表
  38. $query = $this->with([])->where($filter)
  39. ->alias('card')
  40. ->field('card.*');
  41. $list = $query->order(['card.id' => 'desc'])->paginate(15);
  42. foreach($list as $row){
  43. $goodsku = GoodsSkuModel::where('goods_sku_id',$row->good_sku_id)->where('goods_id',$row->good_id)->find();
  44. $goods = GoodsModel::field('goods_name')->where("goods_id",$row->good_id)->find();
  45. $row->sku_name = $goodsku->goods_props[0]['value']['name']??'';
  46. $row->good_name = $goods->goods_name??'';
  47. }
  48. return $list;
  49. }
  50. //查询
  51. public function getQueryFilter($param){
  52. return $param;
  53. }
  54. // //生成卡券
  55. // public function autocreate($id,$create_num = 1){
  56. // $card = Couponcard::where('id',$id)->find();
  57. // if($card&&$card->good_id&&$card->good_num>0&&$card->coupon_category>0&&$card->coupon_type){
  58. // for($i=0;$i<$create_num;$i++){
  59. // $data['coupon_card_id'] =$card->id;
  60. // $data['coupon_card_name'] =$card->name;
  61. // }
  62. // // $data['']
  63. // }
  64. // }
  65. //生成随机数
  66. public function randSecrets($num){
  67. $num = $num + 1000;
  68. $arr = [];
  69. for($i=0;$i<$num;$i++){
  70. $arr[] = mt_rand(10000000,99999999);
  71. }
  72. return array_unique($arr);
  73. }
  74. //批量添加 主要是生成去重复,及查询是否数据库中已存在
  75. public function addCard($id,$num){
  76. $card = Couponcard::where('id',$id)->find();
  77. $start_no = $card->coupon_type.$card->coupon_category.'00000000';
  78. $end_no = $card->coupon_type.$card->coupon_category.'99999999';
  79. $max_start_no = Usercoupon::where('coupon_no','>=', $start_no)->where("coupon_no","<",$end_no)->max("coupon_no");
  80. if(empty($max_start_no)){
  81. $start_no = intval($start_no);
  82. }else{
  83. $start_no = intval($max_start_no);
  84. }
  85. $data =[];
  86. $now = Date("Y-m-d H:i:s",time());
  87. $randArray = $this->randSecrets($num);
  88. $coupon_code =[];
  89. $secrets = UsercouponModel::whereIn('coupon_code',$randArray)->select();
  90. foreach($secrets as $s){
  91. $coupon_code[] = $s->coupon_code;
  92. }
  93. $avaiableArray = array_diff($randArray,$coupon_code);
  94. $createNum = $num>count($avaiableArray)?count($avaiableArray):$num;
  95. $avaiableArray = array_values($avaiableArray);
  96. $card_name = $card['name']??'';
  97. for($i=1;$i<$createNum+1;$i++){
  98. $row['coupon_card_id'] = $id;
  99. $row['coupon_card_name'] = $card_name;
  100. $row['coupon_no'] = $start_no+$i;
  101. $row['coupon_code'] = $avaiableArray[$i];
  102. $row['coupon_type'] = $card->coupon_type;
  103. $row['coupon_category'] = $card->coupon_category;
  104. $row['good_num'] = $card->good_num;
  105. $row['good_id'] = $card->good_id;
  106. $row['good_sku_id'] = $card->good_sku_id;
  107. $row['created_at'] = $now;
  108. $row['avaiable_good_num'] = $card->good_num;
  109. $data[] = $row;
  110. }
  111. $model = new UsercouponModel;
  112. $model->saveAll($data);
  113. }
  114. }