MobileController.php 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. <?php
  2. namespace app\api\controller;
  3. use app\common\controller\UserApi;
  4. use app\common\library\MobileConstant;
  5. use app\common\model\Area;
  6. use app\common\model\Mobile;
  7. use think\db\Query;
  8. /**
  9. * 靓号管理
  10. */
  11. class MobileController extends UserApi
  12. {
  13. protected $noNeedLogin = "*";
  14. protected $noNeedRight = '*';
  15. /**
  16. * 列表
  17. * @ApiMethod (POST)
  18. * @ApiParams (name="search_type",description="fuzzy模糊,precise精准")
  19. * @ApiParams (name="search_last",description="0,1是否搜索尾部")
  20. * @ApiParams (name="city_id",description="地区id")
  21. * @ApiParams (name="keyword",description="搜索内容,模糊就是字符串,精准就是数组")
  22. * @ApiParams (name="sort",description="price_asc价格从低到高,price_desc价格从高到低")
  23. * @ApiParams (name="network",description="网络")
  24. * @ApiParams (name="price_min",description="价格最低数字")
  25. * @ApiParams (name="price_max",description="价格最高数字")
  26. * @ApiParams (name="exclude_num",description="排除数字")
  27. * @ApiParams (name="num_max",description="数字较多,传数字")
  28. * @ApiParams (name="rule_position",description="规律位置,middle中间,tail尾部")
  29. * @ApiParams (name="rule_name",description="规律名,设计图字母变小写传过来")
  30. * @ApiParams (name="limit",description="limit")
  31. * @ApiParams (name="page",description="page")
  32. * @ApiReturnParams (name=id,description=id)
  33. * @ApiReturnParams (name=logo,description=缩略图)
  34. * @ApiReturnParams (name=name,description=号码名称)
  35. * @ApiReturnParams (name=no,description=手机号)
  36. * @ApiReturnParams (name=type,description=1靓号2流量卡)
  37. * @ApiReturnParams (name=network,description=运营商)
  38. * @ApiReturnParams (name=city,description=城市)
  39. * @ApiReturnParams (name=privince,description=省份)
  40. * @ApiReturnParams (name=amount,description=售价)
  41. * @ApiReturnParams (name=amount_original,description=原价)
  42. * @ApiReturnParams (name=amount_exists,description=含话费)
  43. * @ApiReturnParams (name=amount_base,description=售价)
  44. * @ApiReturnParams (name=amount_charge,description=预充)
  45. * @ApiReturnParams (name=summary,description=简介)
  46. * @ApiReturnParams (name=saled,description=是否已出售)
  47. * @ApiReturnParams (name=is_activity,description=是否特价号)
  48. * @ApiReturnParams (name=activity_time_end,description=特价过期时间null永不过期)
  49. * @ApiReturnParams (name="info.free_app",description=免流APP列表)
  50. * @ApiReturnParams (name="info.describe",description="套餐说明|资费详情")
  51. * @ApiReturnParams (name="info.content",description="详细内容|注意事项")
  52. * @ApiReturnParams (name="info.flow_year",description="每年流量(G)")
  53. * @ApiReturnParams (name="info.fee",description="资费")
  54. * @ApiReturnParams (name="info.fee_unit",description="资费单位月还是年")
  55. * @ApiReturnParams (name="info.first_month_free",description="首月是否免月租")
  56. * @ApiReturnParams (name="info.discount_title",description="简要优惠介绍")
  57. */
  58. public function list(){
  59. $model=Mobile::show();
  60. $data=input();
  61. $this->validate($data,[
  62. 'keyword'=>['max:11'],
  63. 'num_max'=>['integer','between:0,9'],
  64. 'rule_position'=>['in:middle,tail'],
  65. ]);
  66. if(!empty($data['search_type']) && !empty($data['keyword'])){
  67. if($data['search_type']=='fuzzy'){
  68. if(isset($data['search_last']) && $data['search_last']==1){
  69. $no=str_pad($data['keyword'],11,'-',STR_PAD_LEFT);
  70. for ($i=1;$i<=11;$i++){
  71. if(substr($no,$i-1,1)=='-'){
  72. continue;
  73. }
  74. $model->where("filter_no_pos_{$i}",substr($no,$i-1,1));
  75. }
  76. }else {
  77. $model->where('no', 'like', "%{$data['keyword']}%");
  78. }
  79. }elseif ($data['search_type']=='precise'){
  80. foreach ($data['keyword'] as $k=>$v){
  81. $pos=$k+1;
  82. if($pos==1||is_null($v))continue;
  83. $model->where("filter_no_pos_{$pos}",$v);
  84. }
  85. }
  86. }
  87. if(!empty($data['city_id'])){
  88. $model->where('city_id',$data['city_id']);
  89. }
  90. if(!empty($data['sort'])){
  91. if($data['sort']=='price_asc'){
  92. $model->order('amount','asc');
  93. }elseif($data['sort']=='price_desc'){
  94. $model->order('amount','desc');
  95. }
  96. }else{
  97. $model->order('top_time','desc')->order('create_time','desc');
  98. }
  99. if(!empty($data['network'])){
  100. $model->where('network',$data['network']);
  101. }
  102. if(!empty($data['price_min']) && is_numeric($data['price_min'])){
  103. $model->where('amount','>=',$data['price_min']);
  104. }
  105. if(!empty($data['price_max']) && is_numeric($data['price_max'])){
  106. $model->where('amount','>=',$data['price_max']);
  107. }
  108. if(!empty($data['exclude_num'])){
  109. $model->whereNotLike('no',"%{$data['exclude_num']}%");
  110. }
  111. if(!empty($data['num_max'])){
  112. $model->where("filter_num_{$data['num_max']}",'>',3);
  113. }
  114. $rules=[
  115. 'aaa'=>['middle'=>'filter_middle_3a','tail'=>'filter_tail_3a'],
  116. 'aaaa'=>['middle'=>'filter_middle_4a','tail'=>'filter_tail_4a'],
  117. 'aaaaa'=>['middle'=>'filter_middle_5a','tail'=>'filter_tail_5a'],
  118. '6a'=>['middle'=>'filter_middle_6a','tail'=>'filter_tail_6a'],
  119. '7a'=>['middle'=>'filter_middle_7a','tail'=>'filter_tail_7a'],
  120. '8a'=>['middle'=>'filter_middle_8a','tail'=>'filter_tail_8a'],
  121. 'abc'=>['middle'=>'filter_middle_abc','tail'=>'filter_tail_abc'],
  122. 'abcd'=>['middle'=>'filter_middle_abcd','tail'=>'filter_tail_abcd'],
  123. 'abcde'=>['middle'=>'filter_middle_abcde','tail'=>'filter_tail_abcde'],
  124. 'abcdef'=>['middle'=>'filter_middle_abcdef','tail'=>'filter_tail_abcdef'],
  125. 'aaab'=>['middle'=>'filter_middle_3ab','tail'=>'filter_tail_3ab'],
  126. 'aaaab'=>['middle'=>'filter_middle_4ab','tail'=>'filter_tail_4ab'],
  127. 'aaaaab'=>['middle'=>'filter_middle_5ab','tail'=>'filter_tail_5ab'],
  128. ];
  129. if(!empty($data['rule_name'])){
  130. if (!isset($rules[$data['rule_name']])) {
  131. $this->error('规律规则有误');
  132. }
  133. $rule=$rules[$data['rule_name']];
  134. if(!empty($data['rule_position'])) {
  135. $model->where($rule[$data['rule_position']], 1);
  136. }else{
  137. $model->where(function (Query $query)use ($rule){
  138. $query->where($rule['middle'],1)->whereOr($rule['tail'],1);
  139. });
  140. }
  141. }
  142. //dd($model->buildSql());
  143. $list=$model->paginate(input('limit',15));
  144. $this->success('',$list);
  145. }
  146. /**
  147. * 网络列表
  148. */
  149. public function network(){
  150. $works=array_column(MobileConstant::getNetwork(),'name');
  151. $this->success('',$works);
  152. }
  153. }