123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237 |
- <?php
- namespace common\models;
- class Enroll extends Common
- {
-
- public $stateArr = [
- 1 => '失败',
- 2 => '成功',
- ];
- public $equipmentArr = [
- 1 => '移动端',
- 2 => 'PC',
- ];
- public function rules()
- {
- return [
- [['mobile', 'name', 'intention_house', 'intention_city', 'budget', 'intention_housetype', 'hid', 'source', 'equipment'], 'trim'],
- ['mobile', 'match', 'pattern' => '/^1[23456789]\d{9}$/', 'message' => '请输入正确的手机号码'],
- ['name', 'string', 'max' => 5, 'min' => 2],
- [['intention_house', 'intention_city', 'budget', 'intention_housetype'], 'string', 'max' => 100],
- ['equipment', 'in', 'range' => [1, 2], 'message' => '设备来源错误'],
- ['hid', 'number'],
- ['hid', 'default', 'value' => 0],
- ['send_email', 'string'],
- ['ip', 'default', 'value' => \Yii::$app->request->userIP],
- ['source', 'in', 'range' => array_flip((new \common\models\EnrollSource())->TypeColumn(2)), 'on' => 'pcadd'],
- ['source', 'in', 'range' => array_flip((new \common\models\EnrollSource())->TypeColumn(1)), 'on' => 'madd'],
- ];
- }
- public function attributeLabels()
- {
- return [
- 'mobile' => '手机号码',
- 'intention_house' => '意向楼盘',
- 'intention_city' => '意向区域',
- 'intention_housetype' => '意向户型',
- 'budget' => '预算',
- 'name' => '姓名',
- 'equipment' => '设备',
- 'source' => '来源',
- ];
- }
- public function Authenticator($input)
- {
- $this->load($input, '');
- if ($this->validate()) return $this;
- return $this->errors;
- }
- public function FindById($id)
- {
- return self::findOne($id);
- }
- public function FindByIds()
- {
- $query = self::find();
- $query->select(['pfg_enroll.*', 'pfg_house.name as house_name', 'pfg_category_city.city_name', 'pfg_email.email']);
- $query->andwhere(['pfg_enroll.id' => $this->id]);
- $query->andwhere(['pfg_enroll.del' => $this->setDel]);
- $query->leftJoin('pfg_house', 'pfg_enroll.hid = pfg_house.id');
- $query->leftJoin('pfg_category_city', 'pfg_house.city = pfg_category_city.id or pfg_enroll.b_city = pfg_category_city.id');
- $query->leftJoin('pfg_email', 'pfg_house.city = pfg_email.city');
- return $query->asArray()->one();
- }
- public function getList($page)
- {
- $query = self::find();
- $query->select(['pfg_enroll.*', 'pfg_house.name as house_name', 'pfg_category_city.city_name', 'pfg_house.city as house_city']);
- $query->andwhere(['pfg_enroll.del' => $this->setDel]);
- if (!empty($page['equipment'])) {
- $query->andWhere(['pfg_enroll.equipment' => $page['equipment']]);
- }
- if (!empty($page['hid'])) {
- $query->andWhere(['pfg_enroll.id' => $page['hid']]);
- }
- if (!empty($page['state'])) {
- $query->andWhere(['pfg_enroll.state' => $page['state']]);
- }
- if (isset($page['source_id']) && !empty($page['source_id'])) {
- $sou = explode('-', $page['source_id']);
- $query->andWhere(['pfg_enroll.equipment' => $sou[1]]);
- $query->andWhere(['pfg_enroll.source' => $sou[0]]);
- }
- if (isset($page['source_mobile']) && !empty($page['source_mobile'])) {
- $sou = explode('-', $page['source_mobile']);
- $query->andWhere(['pfg_enroll.equipment' => $sou[1]]);
- $query->andWhere(['pfg_enroll.source' => $sou[0]]);
- }
- if (!empty($page['start_time'])) {
- $start_time = strtotime($page['start_time'] . ' 00:00:00');
- if (!empty($page['end_time'])) {
- $end_time = strtotime($page['end_time'] . ' 23:59:59');
- } else {
- $end_time = $_SERVER['REQUEST_TIME'];
- }
- $query->andWhere(['>=', 'pfg_enroll.create_at', $start_time]);
- $query->andWhere(['<=', 'pfg_enroll.create_at', $end_time]);
- }
- $query->leftJoin('pfg_house', 'pfg_enroll.hid = pfg_house.id');
- $query->leftJoin('pfg_category_city', 'pfg_house.city = pfg_category_city.id or pfg_enroll.b_city = pfg_category_city.id');
- $arr = [];
- if (!empty($page['accurate']) && $page['accurate'] == 1) {
- $query->groupBy(['pfg_enroll.mobile']);
- }
- if (!empty($page['page'])) {
- $count = clone $query;
- $arr['total'] = $count->count();
- $query->offset = ($page['page'] - 1) * $page['limit'];
- $query->limit = $page['limit'];
- } else {
- $query->limit = 20;
- }
- $arr['data'] = $query->orderBy(['pfg_enroll.create_at' => SORT_DESC])->asArray()->all();
- return $arr;
- }
- public function Total($page)
- {
- $query = self::find();
- $query->where(['pfg_enroll.del' => $this->setDel]);
- if (!empty($page['equipment'])) {
- $query->andWhere(['pfg_enroll.equipment' => $page['equipment']]);
- }
- if (isset($page['source_id']) && !empty($page['source_id'])) {
- $sou = explode('-', $page['source_id']);
- $query->andWhere(['pfg_enroll.equipment' => $sou[1]]);
- $query->andWhere(['pfg_enroll.source' => $sou[0]]);
- }
- if (!empty($page['start_time'])) {
- $start_time = strtotime($page['start_time'] . ' 00:00:00');
- if (!empty($page['end_time'])) {
- $end_time = strtotime($page['end_time'] . ' 23:59:59');
- } else {
- $end_time = $_SERVER['REQUEST_TIME'];
- }
- $query->andWhere(['>=', 'pfg_enroll.create_at', $start_time]);
- $query->andWhere(['<=', 'pfg_enroll.create_at', $end_time]);
- }
- $query->leftJoin('pfg_house', 'pfg_enroll.hid = pfg_house.id and pfg_enroll.hid != 0');
- $query->leftJoin('pfg_category_city', 'pfg_house.city = pfg_category_city.id and pfg_enroll.hid != 0');
- return $query->count();
- }
- public function SendEmail($page)
- {
- $query = self::find();
- $query->select(['pfg_enroll.*', 'pfg_house.name as house_name', 'pfg_category_city.city_name', 'pfg_email.email']);
- $query->andWhere(['pfg_enroll.del' => $this->setDel]);
- if (!empty($page['id'])) {
- $query->andWhere(['IN', 'pfg_enroll.id', $page['id']]);
- }
- $query->leftJoin('pfg_house', 'pfg_enroll.hid = pfg_house.id');
- $query->leftJoin('pfg_category_city', 'pfg_house.city = pfg_category_city.id or pfg_enroll.b_city = pfg_category_city.id');
- $query->leftJoin('pfg_email', 'pfg_house.city = pfg_email.city');
- $query->orderBy(['pfg_enroll.create_at' => SORT_DESC]);
- return $query->asArray()->all();
- }
- }
|