UserController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. <?php
  2. namespace backend\controllers;
  3. use backend\models\AuthArea;
  4. use common\models\CompanyApply;
  5. use common\models\User;
  6. use common\models\UserCompany;
  7. use common\library\LMUploadFile;
  8. use common\models\UserHouse;
  9. use Yii;
  10. use yii\data\Pagination;
  11. use yii\filters\AccessControl;
  12. use yii\web\UploadedFile;
  13. /**
  14. * 用户列表管理
  15. * @package backend\controllers
  16. */
  17. class UserController extends BaseController
  18. {
  19. public $layout = 'iframe';
  20. const PAGESIZE =20;
  21. public function behaviors()
  22. {
  23. return [
  24. 'access' => [
  25. 'class' => AccessControl::className(),
  26. 'rules' => [
  27. [
  28. 'actions' => [],
  29. 'allow' => true,
  30. 'roles' => ['@'],
  31. ],
  32. ],
  33. ],
  34. ];
  35. }
  36. // public function actionIndex()
  37. // {
  38. //
  39. // return $this->render('index');
  40. // }
  41. // /**
  42. // * 装修用户待审核列表
  43. // * @return string
  44. // */
  45. // public function actionAuditlist(){
  46. // $datas = User::find()->where(['state'=>User::USER_STATE_WAIT])->andWhere(['status'=>User::STATUS_ACTIVE])->andWhere(['role'=>User::USER_ROLE_DECORATE]);
  47. // $pages=new Pagination(["totalCount"=>$datas->count(),"pageSize"=>self::PAGESIZE]);
  48. // $datas=$datas->offset($pages->offset)->limit($pages->limit)->all();
  49. // return $this->render('auditlist',['datas'=>$datas,'pages'=>$pages]);
  50. // }
  51. // /**
  52. // * 用户审核操作
  53. // * @return string
  54. // */
  55. // public function actionUseraudit(){
  56. // $result = ['sign'=>1,'msg'=>'ok'];
  57. // $id = Yii::$app->request->post('id');
  58. // $conduct = Yii::$app->request->post('conduct');
  59. // $user = User::find()->where('id=:id and state!=:state',[':id'=>$id,':state'=>User::USER_STATE_THROUGH])->one();
  60. // if(!empty($user)){
  61. // if($conduct == 'agree'){
  62. // $user->state = User::USER_STATE_THROUGH;
  63. // $user->updated_at = time();
  64. //
  65. // if($user->validate() && $user->save()){
  66. //
  67. // $result = ['sign'=>1,'msg'=>'操作成功'];
  68. // return json_encode($result);
  69. // }else{
  70. // var_dump($user->getErrors());exit;
  71. // }
  72. // }else{
  73. // $user->state = User::USER_STATE_REJECT;
  74. // $user->updated_at = time();
  75. // if($user->validate() && $user->save()){
  76. // $result = ['sign'=>1,'msg'=>'操作成功'];
  77. // return json_encode($result);
  78. // }
  79. // }
  80. // }
  81. // $result = ['sign'=>0,'msg'=>'操作失败'];
  82. // return json_encode($result);
  83. // }
  84. /**
  85. * 普通用户列表
  86. * @return string
  87. */
  88. public function actionUserlist(){
  89. $datas = User::find()->where(['state'=>User::USER_STATE_THROUGH])->andWhere(['status'=>User::STATUS_ACTIVE])->andWhere(['role'=>User::USER_ROLE_COMMON]);
  90. // $datas = $datas->joinWith('userinfo');
  91. $pages=new Pagination(["totalCount"=>$datas->count(),"pageSize"=>self::PAGESIZE]);
  92. $datas=$datas->offset($pages->offset)->limit($pages->limit)->all();
  93. return $this->render('userlist',['datas'=>$datas,'pages'=>$pages]);
  94. }
  95. /**
  96. * 装修公司列表
  97. * @return string
  98. */
  99. public function actionDecoratelist(){
  100. $member = Yii::$app->request->get('member');
  101. $datas = UserCompany::find()->where(['u.state'=>User::USER_STATE_THROUGH])->andWhere(['u.role'=>User::USER_ROLE_DECORATE])->select('uc.* ,u.id as user_id,u.username,u.status')->from('{{%user_company}} uc')->leftJoin(['u'=>'{{%user}}'],'uc.uid=u.id');
  102. $name = Yii::$app->request->get('name');
  103. if(!empty($name)){
  104. $datas->andWhere('u.username like :name OR uc.company like :name ',[':name'=>"%$name%"]);
  105. }
  106. if($member>-1){
  107. $datas->andWhere('uc.member=:member',[':member'=>$member]);
  108. }
  109. $citys = AuthArea::queryAuth();
  110. if($citys=='all')
  111. $datas;
  112. elseif (!empty($citys))
  113. $datas->andWhere("uc.city in ({$citys})");
  114. else
  115. $datas->andWhere("uc.city = -1");
  116. $pages=new Pagination(["totalCount"=>$datas->count(),"pageSize"=>self::PAGESIZE]);
  117. $datas=$datas->orderBy(['uc.id'=>SORT_DESC])->offset($pages->offset)->limit($pages->limit)->asArray()->all();
  118. return $this->render('decoratelist',['datas'=>$datas,'pages'=>$pages,'member'=>$member,'name'=>$name]);
  119. }
  120. /**
  121. * 修改装修公司
  122. * @return string
  123. */
  124. public function actionEdit(){
  125. $id = Yii::$app->request->post('id');
  126. $member = Yii::$app->request->post('member');
  127. $model = UserCompany::find()->where('id=:id',['id'=>$id])->one();
  128. $model->member = $member;
  129. $model->updated_at = time();
  130. if($model->validate()&&$model->save()){
  131. $result=['sign'=>1,'msg'=>'修改成功'];
  132. }else{
  133. $result=['sign'=>4000,'msg'=>'会员变动失败'];
  134. }
  135. return json_encode($result);
  136. }
  137. /**
  138. * 上传公司logo
  139. */
  140. public function actionLogoimgurl()
  141. {
  142. if (Yii::$app->request->isPost) {
  143. $picture_form = new LMUploadFile();
  144. $picture_form->imageFile = UploadedFile::getInstance($picture_form, 'imageFile');
  145. if ($picture_form->upload('logo_picture',false,160,160)) {
  146. return "<script language='JavaScript'>window.parent.callback('上传成功!',1,'" . $picture_form->filepath . "');</script>";
  147. } else {
  148. if(isset($picture_form->getErrors()['imageFile'][0])){
  149. $error = $picture_form->getErrors()['imageFile'][0];
  150. }else{
  151. $error = '图片上传失败';
  152. }
  153. return "<script language='JavaScript'>window.parent.callback('上传失败!',0,'" . $error . "');</script>";
  154. }
  155. }
  156. }
  157. /**
  158. * 检查用户名
  159. */
  160. public function actionCheckname()
  161. {
  162. $username = Yii::$app->request->post('username');
  163. $model = User::find()->where('username=:username',[':username'=>$username])->one();
  164. if(!empty($model)){
  165. return json_encode('该账号已存在');
  166. }
  167. return json_encode('该账号可用');
  168. }
  169. /**
  170. * 检查email
  171. */
  172. public function actionCheckemail()
  173. {
  174. $email = Yii::$app->request->post('email');
  175. $model = User::find()->where('email=:email',[':email'=>$email])->one();
  176. if(!empty($model)){
  177. return json_encode('该email已存在');
  178. }
  179. return json_encode('该email可用');
  180. }
  181. /**
  182. * 检查电话
  183. */
  184. public function actionChecktel()
  185. {
  186. $tel = Yii::$app->request->post('tel');
  187. $model = UserCompany::find()->where('tel=:tel',[':tel'=>$tel])->one();
  188. if(!empty($model)){
  189. return json_encode('该号码已存在');
  190. }
  191. return json_encode('该号码可用');
  192. }
  193. /**
  194. * 添加装修公司
  195. */
  196. public function actionAdd_decorate()
  197. {
  198. if(Yii::$app->request->isPost){
  199. $username = Yii::$app->request->post('username');
  200. $company = Yii::$app->request->post('company');
  201. $member = Yii::$app->request->post('member');
  202. $logo = Yii::$app->request->post('logo');
  203. $licence = Yii::$app->request->post('licence');
  204. $age = Yii::$app->request->post('age');
  205. $level = Yii::$app->request->post('level');
  206. $tel = Yii::$app->request->post('tel');
  207. $email = Yii::$app->request->post('email');
  208. $province = Yii::$app->request->post('province');
  209. $city = Yii::$app->request->post('city');
  210. $district = Yii::$app->request->post('district');
  211. $address = Yii::$app->request->post('address');
  212. $introduction = Yii::$app->request->post('introduction');
  213. $pwd = Yii::$app->request->post('pwd');
  214. $pwd_again = Yii::$app->request->post('pwd_again');
  215. $vip_start = Yii::$app->request->post('vip_start');
  216. $vip_end = Yii::$app->request->post('vip_end');
  217. $picture_form = new LMUploadFile();
  218. if(!empty($company)&&!empty($username)&&!empty($pwd)&&isset($member)){
  219. $model = User::find()->where('username=:username',[':username'=>$username])->one();
  220. if(empty($model)){
  221. $model = new User();
  222. $usercompany = new UserCompany();
  223. if($pwd==$pwd_again){
  224. $hash_password = Yii::$app->security->generatePasswordHash($pwd);
  225. $model->password_hash = $hash_password;
  226. $model->generateAuthKey();
  227. $model->username = $username;
  228. //$model->tel = $tel;
  229. $model->email = $email;
  230. $model->created_at = time();
  231. $model->updated_at = time();
  232. $model->status = User::STATUS_ACTIVE;
  233. $model->state = User::USER_STATE_THROUGH;
  234. $model->role = User::USER_ROLE_DECORATE;
  235. if($model->validate() ){
  236. $transaction = Yii::$app->db->beginTransaction();
  237. if($model->save()) {
  238. $usercompany->uid = $model->id;
  239. $usercompany->member = $member;
  240. $usercompany->logo = $logo;
  241. $usercompany->company = $company;
  242. $usercompany->updated_at = time();
  243. $usercompany->age = $age;
  244. $usercompany->licence = $licence;
  245. $usercompany->level = $level;
  246. $usercompany->created_at = time();
  247. $usercompany->province = $province;
  248. $usercompany->city = $city;
  249. $usercompany->tel = $tel;
  250. $usercompany->district = $district;
  251. $usercompany->address = $address;
  252. $usercompany->introduction = $introduction;
  253. if($member == UserCompany::ISMEMBER)
  254. {
  255. if(!empty($vip_start)){
  256. $usercompany->vip_start = strtotime($vip_start);}
  257. if(!empty($vip_end)){
  258. $usercompany->vip_end = strtotime($vip_end);}
  259. }
  260. if ($usercompany->validate() && $usercompany->save()) {
  261. $transaction->commit();
  262. Yii::$app->getSession()->setFlash('success', '添加成功!');
  263. $this->redirect(['user/decoratelist']);
  264. }else{
  265. var_dump($usercompany->getErrors());exit;
  266. $transaction->rollBack();
  267. Yii::$app->getSession()->setFlash('error', '添加失败');
  268. return $this->render('adddecorate',["picture_form" => $picture_form]);
  269. }
  270. }else{
  271. var_dump($model->getErrors());exit;
  272. $transaction->rollBack();
  273. Yii::$app->getSession()->setFlash('error', '添加失败');
  274. return $this->render('adddecorate',["picture_form" => $picture_form]);
  275. }
  276. }else{
  277. var_dump($model->getErrors());exit;
  278. Yii::$app->getSession()->setFlash('error', '添加失败');
  279. return $this->render('adddecorate',["picture_form" => $picture_form]);
  280. }
  281. }else{
  282. Yii::$app->getSession()->setFlash('error', '确认密码不相同');
  283. return $this->render('adddecorate',["picture_form" => $picture_form]);
  284. }
  285. }else{
  286. Yii::$app->getSession()->setFlash('error', '该号码已经注册!');
  287. return $this->render('adddecorate',["picture_form" => $picture_form]);
  288. }
  289. }else{
  290. Yii::$app->getSession()->setFlash('error', '输入不能空!');
  291. return $this->render('adddecorate',["picture_form" => $picture_form]);
  292. }
  293. }
  294. $picture_form = new LMUploadFile();
  295. return $this->render('adddecorate',["picture_form" => $picture_form]);
  296. }
  297. /**
  298. * 删除用户
  299. */
  300. public function actionDel_company()
  301. {
  302. $result=['sign'=>1,'msg'=>'ok'];
  303. $id = Yii::$app->request->post('id');
  304. $model = User::find()->where('id=:id',[':id'=>$id])->one();
  305. if(!empty($model)){
  306. $model->status = User::STATUS_DELETED;
  307. $model->updated_at = time();
  308. if($model->validate() && $model->save()){
  309. $result=['sign'=>1,'msg'=>'ok'];
  310. }else{
  311. // var_dump($model->getErrors());exit;
  312. $result=['sign'=>0,'msg'=>'error'];
  313. }
  314. }else{
  315. $result=['sign'=>0,'msg'=>'找不到该规格'];
  316. }
  317. return json_encode($result);
  318. }
  319. /**
  320. * 用户房屋列表
  321. * @return string
  322. */
  323. public function actionHouse(){
  324. $datas = UserHouse::find()->orderBy('updated_at DESC');
  325. $pages=new Pagination(["totalCount"=>$datas->count(),"pageSize"=>self::PAGESIZE]);
  326. $datas=$datas->offset($pages->offset)->limit($pages->limit)->all();
  327. return $this->render('houselist',['datas'=>$datas,'pages'=>$pages]);
  328. }
  329. /**
  330. * 删除用户房屋
  331. */
  332. public function actionDel_house()
  333. {
  334. $result=['sign'=>1,'msg'=>'ok'];
  335. $id = Yii::$app->request->post('id');
  336. //$model = UserHouse::find()->where('uid=:id',[':id'=>$id])->one();
  337. $model = UserHouse::findOne($id)->delete();
  338. if(!empty($model)){
  339. // $model->status = User::STATUS_DELETED;
  340. // $model->updated_at = time();
  341. // if($model->validate() && $model->save()){
  342. $result=['sign'=>1,'msg'=>'ok'];
  343. // }else{
  344. // $result=['sign'=>0,'msg'=>'error'];
  345. // }
  346. }else{
  347. $result=['sign'=>0,'msg'=>'error'];
  348. }
  349. return json_encode($result);
  350. }
  351. /**
  352. * 装修公司意向申请列表
  353. * @return string
  354. */
  355. public function actionCompanylist(){
  356. $datas = CompanyApply::find()->orderBy("created_at DESC");
  357. $pages=new Pagination(["totalCount"=>$datas->count(),"pageSize"=>self::PAGESIZE]);
  358. $datas=$datas->offset($pages->offset)->limit($pages->limit)->all();
  359. return $this->render('companylist',['datas'=>$datas,'pages'=>$pages]);
  360. }
  361. /**
  362. * 重置装修公司密码
  363. */
  364. public function actionReset()
  365. {
  366. $result=['sign'=>1,'msg'=>'ok'];
  367. $id = Yii::$app->request->post('id');
  368. //$model = UserHouse::find()->where('uid=:id',[':id'=>$id])->one();
  369. $model = User::find()->where(['id'=>$id])->one();
  370. if(!empty($model)){
  371. $pwd = '123456';
  372. $hash_password = Yii::$app->security->generatePasswordHash($pwd);
  373. $model->password_hash = $hash_password;
  374. $model->updated_at = time();
  375. if($model->validate() && $model->save()){
  376. $result=['sign'=>1,'msg'=>'重置密码成功'];
  377. }else{
  378. $result=['sign'=>0,'msg'=>'重置密码失败'];
  379. }
  380. }else{
  381. $result=['sign'=>0,'msg'=>'找不到该用户'];
  382. }
  383. return json_encode($result);
  384. }
  385. }