123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- namespace app\api\controller;
- use app\common\controller\UserApi;
- use app\common\library\MobileConstant;
- use app\common\model\Area;
- use app\common\model\Mobile;
- use think\db\Query;
- /**
- * 靓号管理
- */
- class MobileController extends UserApi
- {
- protected $noNeedLogin = "*";
- protected $noNeedRight = '*';
- /**
- * 列表
- * @ApiMethod (POST)
- * @ApiParams (name="search_type",description="fuzzy模糊,precise精准")
- * @ApiParams (name="search_last",description="0,1是否搜索尾部")
- * @ApiParams (name="city_id",description="地区id")
- * @ApiParams (name="keyword",description="搜索内容,模糊就是字符串,精准就是数组")
- * @ApiParams (name="sort",description="price_asc价格从低到高,price_desc价格从高到低")
- * @ApiParams (name="network",description="网络")
- * @ApiParams (name="price_min",description="价格最低数字")
- * @ApiParams (name="price_max",description="价格最高数字")
- * @ApiParams (name="exclude_num",description="排除数字")
- * @ApiParams (name="num_max",description="数字较多,传数字")
- * @ApiParams (name="rule_position",description="规律位置,middle中间,tail尾部")
- * @ApiParams (name="rule_name",description="规律名,设计图字母变小写传过来")
- * @ApiParams (name="limit",description="limit")
- * @ApiParams (name="page",description="page")
- * @ApiReturnParams (name=id,description=id)
- * @ApiReturnParams (name=logo,description=缩略图)
- * @ApiReturnParams (name=name,description=号码名称)
- * @ApiReturnParams (name=no,description=手机号)
- * @ApiReturnParams (name=type,description=1靓号2流量卡)
- * @ApiReturnParams (name=network,description=运营商)
- * @ApiReturnParams (name=city,description=城市)
- * @ApiReturnParams (name=privince,description=省份)
- * @ApiReturnParams (name=amount,description=售价)
- * @ApiReturnParams (name=amount_original,description=原价)
- * @ApiReturnParams (name=amount_exists,description=含话费)
- * @ApiReturnParams (name=amount_base,description=售价)
- * @ApiReturnParams (name=amount_charge,description=预充)
- * @ApiReturnParams (name=summary,description=简介)
- * @ApiReturnParams (name=saled,description=是否已出售)
- * @ApiReturnParams (name=is_activity,description=是否特价号)
- * @ApiReturnParams (name=activity_time_end,description=特价过期时间null永不过期)
- * @ApiReturnParams (name="info.free_app",description=免流APP列表)
- * @ApiReturnParams (name="info.describe",description="套餐说明|资费详情")
- * @ApiReturnParams (name="info.content",description="详细内容|注意事项")
- * @ApiReturnParams (name="info.flow_year",description="每年流量(G)")
- * @ApiReturnParams (name="info.fee",description="资费")
- * @ApiReturnParams (name="info.fee_unit",description="资费单位月还是年")
- * @ApiReturnParams (name="info.first_month_free",description="首月是否免月租")
- * @ApiReturnParams (name="info.discount_title",description="简要优惠介绍")
- */
- public function list(){
- $model=Mobile::show();
- $data=input();
- $this->validate($data,[
- 'keyword'=>['max:11'],
- 'num_max'=>['integer','between:0,9'],
- 'rule_position'=>['in:middle,tail'],
- ]);
- if(!empty($data['search_type']) && !empty($data['keyword'])){
- if($data['search_type']=='fuzzy'){
- if(isset($data['search_last']) && $data['search_last']==1){
- $no=str_pad($data['keyword'],11,'-',STR_PAD_LEFT);
- for ($i=1;$i<=11;$i++){
- if(substr($no,$i-1,1)=='-'){
- continue;
- }
- $model->where("filter_no_pos_{$i}",substr($no,$i-1,1));
- }
- }else {
- $model->where('no', 'like', "%{$data['keyword']}%");
- }
- }elseif ($data['search_type']=='precise'){
- foreach ($data['keyword'] as $k=>$v){
- $pos=$k+1;
- if($pos==1||is_null($v))continue;
- $model->where("filter_no_pos_{$pos}",$v);
- }
- }
- }
- if(!empty($data['city_id'])){
- $model->where('city_id',$data['city_id']);
- }
- if(!empty($data['sort'])){
- if($data['sort']=='price_asc'){
- $model->order('amount','asc');
- }elseif($data['sort']=='price_desc'){
- $model->order('amount','desc');
- }
- }else{
- $model->order('top_time','desc')->order('create_time','desc');
- }
- if(!empty($data['network'])){
- $model->where('network',$data['network']);
- }
- if(!empty($data['price_min']) && is_numeric($data['price_min'])){
- $model->where('amount','>=',$data['price_min']);
- }
- if(!empty($data['price_max']) && is_numeric($data['price_max'])){
- $model->where('amount','>=',$data['price_max']);
- }
- if(!empty($data['exclude_num'])){
- $model->whereNotLike('no',"%{$data['exclude_num']}%");
- }
- if(!empty($data['num_max'])){
- $model->where("filter_num_{$data['num_max']}",'>',3);
- }
- $rules=[
- 'aaa'=>['middle'=>'filter_middle_3a','tail'=>'filter_tail_3a'],
- 'aaaa'=>['middle'=>'filter_middle_4a','tail'=>'filter_tail_4a'],
- 'aaaaa'=>['middle'=>'filter_middle_5a','tail'=>'filter_tail_5a'],
- '6a'=>['middle'=>'filter_middle_6a','tail'=>'filter_tail_6a'],
- '7a'=>['middle'=>'filter_middle_7a','tail'=>'filter_tail_7a'],
- '8a'=>['middle'=>'filter_middle_8a','tail'=>'filter_tail_8a'],
- 'abc'=>['middle'=>'filter_middle_abc','tail'=>'filter_tail_abc'],
- 'abcd'=>['middle'=>'filter_middle_abcd','tail'=>'filter_tail_abcd'],
- 'abcde'=>['middle'=>'filter_middle_abcde','tail'=>'filter_tail_abcde'],
- 'abcdef'=>['middle'=>'filter_middle_abcdef','tail'=>'filter_tail_abcdef'],
- 'aaab'=>['middle'=>'filter_middle_3ab','tail'=>'filter_tail_3ab'],
- 'aaaab'=>['middle'=>'filter_middle_4ab','tail'=>'filter_tail_4ab'],
- 'aaaaab'=>['middle'=>'filter_middle_5ab','tail'=>'filter_tail_5ab'],
- ];
- if(!empty($data['rule_name'])){
- if (!isset($rules[$data['rule_name']])) {
- $this->error('规律规则有误');
- }
- $rule=$rules[$data['rule_name']];
- if(!empty($data['rule_position'])) {
- $model->where($rule[$data['rule_position']], 1);
- }else{
- $model->where(function (Query $query)use ($rule){
- $query->where($rule['middle'],1)->whereOr($rule['tail'],1);
- });
- }
- }
- //dd($model->buildSql());
- $list=$model->paginate(input('limit',15));
- $this->success('',$list);
- }
- /**
- * 网络列表
- */
- public function network(){
- $works=array_column(MobileConstant::getNetwork(),'name');
- $this->success('',$works);
- }
- }
|