CompanyMaterController.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <?php
  2. /**
  3. * 建材商
  4. */
  5. namespace api\modules\v1\controllers;
  6. use api\libs\WxBizDecrypt;
  7. use api\models\Common;
  8. use common\library\ZM_Geohash;
  9. use common\models\Area;
  10. use common\models\ImageSource;
  11. use common\models\MaterType;
  12. use common\models\UserMater;
  13. use yii\rest\ActiveController;
  14. use common\library\Apireturn;
  15. use yii\helpers\ArrayHelper;
  16. use yii\filters\auth\QueryParamAuth;
  17. use yii;
  18. class CompanyMaterController extends ActiveController
  19. {
  20. public $modelClass = 'common\models';
  21. public function behaviors()
  22. {
  23. return ArrayHelper::merge(parent::behaviors(), [
  24. 'authenticator' => [
  25. 'class' => QueryParamAuth::className(),
  26. 'tokenParam' => "token",//access-token修改为token
  27. 'optional' => [//不需要认证方法名 array
  28. 'share','get-openid'
  29. ],
  30. ]
  31. ]);
  32. }
  33. /**
  34. * 判断是否已经创建信息
  35. * @return array
  36. */
  37. public function actionExist()
  38. {
  39. $model = UserMater::find()->select('company')->where(['uid'=>Yii::$app->user->id])->one();
  40. if(empty($model))
  41. {
  42. return Apireturn::sent(1,'success',200,0);
  43. }else{
  44. if(empty($model->company))
  45. return Apireturn::sent(1,'success',200,0);
  46. else
  47. return Apireturn::sent(1,'success',200,1);
  48. }
  49. }
  50. /**
  51. * 创建名片
  52. */
  53. public function actionAdd()
  54. {
  55. $model = UserMater::find()->where(['uid'=>Yii::$app->user->id])->one();
  56. if(empty($model))
  57. {
  58. $model = new UserMater();
  59. $model->uid = Yii::$app->user->id;
  60. $model->c_time = time();
  61. $model->member = UserMater::MEMBER_NO;
  62. }
  63. if(empty($model))
  64. return Apireturn::sent(0,'操作错误,请联系管理员',200);
  65. $post = Yii::$app->request->post();
  66. if(empty($post['backpic']))
  67. return Apireturn::sent(0,'请上传门面照',200);
  68. if(empty($post['company']))
  69. return Apireturn::sent(0,'请输入企业名称',200);
  70. if(empty($post['age']))
  71. return Apireturn::sent(0,'请输入经营年限',200);
  72. if(!is_numeric($post['age']))
  73. return Apireturn::sent(0,'输入值限纯数字',200);
  74. if(empty($post['type_id']))
  75. return Apireturn::sent(0,'请选择建材类型',200);
  76. if(empty($post['position']))
  77. return Apireturn::sent(0,'请输入职位',200);
  78. if(empty($post['tel']))
  79. return Apireturn::sent(0,'请输入联系号码',200);
  80. if(!Common::is_tel($post['tel']))
  81. return Apireturn::sent(0,'请输入有效手机号',200);
  82. if(empty($post['province']))
  83. return Apireturn::sent(0,'请选择省份',200);
  84. if(empty($post['city']))
  85. return Apireturn::sent(0,'请选择市',200);
  86. if(empty($post['area']))
  87. return Apireturn::sent(0,'请选择区',200);
  88. if(empty($post['address']))
  89. return Apireturn::sent(0,'请输入详细地址',200);
  90. if(empty($post['intro']))
  91. return Apireturn::sent(0,'请输入企业简介',200);
  92. if(empty($post['latitude']) || empty($post['longitude']))
  93. return Apireturn::sent(0,'缺少经纬度',200);
  94. $model->backpic = Yii::$app->request->post('backpic');
  95. $model->company = Yii::$app->request->post('company');
  96. $model->type_id = Yii::$app->request->post('type_id');
  97. $model->name = Yii::$app->request->post('name');
  98. $model->age = Yii::$app->request->post('age');
  99. $model->position = Yii::$app->request->post('position');
  100. $model->tel = Yii::$app->request->post('tel');
  101. $model->qq = Yii::$app->request->post('qq');
  102. $model->wechat = Yii::$app->request->post('wechat');
  103. $model->latitude = Yii::$app->request->post('latitude');
  104. $model->longitude = Yii::$app->request->post('longitude');
  105. $geohash = new ZM_Geohash();
  106. $geohash->init_codingMap();
  107. $model->hashcode =$geohash->encode($model->latitude,$model->longitude);
  108. $model->province = Yii::$app->request->post('province');
  109. $model->city = Yii::$app->request->post('city');
  110. $model->area = Yii::$app->request->post('area');
  111. $model->address = Yii::$app->request->post('address');
  112. $model->intro = Yii::$app->request->post('intro');
  113. $model->u_time = time();
  114. if($model->save()){
  115. $imgs = Yii::$app->request->post('imgs');
  116. $imgs =json_decode($imgs,true);//用户预约的项目
  117. if(!empty($imgs))
  118. {
  119. foreach ($imgs as $img_val)
  120. {
  121. $image = new ImageSource();
  122. $image->type = ImageSource::TYPE_MATER_GOOD;
  123. $image->topid = Yii::$app->user->id;
  124. $image->pic = $img_val;
  125. $image->created_at = time();
  126. $image->updated_at = time();
  127. $image->status = ImageSource::STATUS_YES;
  128. $image->save();
  129. }
  130. }
  131. return Apireturn::sent(1,'创建成功',200);
  132. }
  133. else{
  134. return Apireturn::sent(0,'创建失败',200);
  135. }
  136. }
  137. /**
  138. * 修改名片
  139. */
  140. public function actionEdit()
  141. {
  142. $model = UserMater::find()->where(['uid'=>Yii::$app->user->id])->one();
  143. if(empty($model))
  144. return Apireturn::sent(0,'未创建名片',200);
  145. $post = Yii::$app->request->post();
  146. if(empty($post['backpic']))
  147. return Apireturn::sent(0,'请上传门面照',200);
  148. if(empty($post['company']))
  149. return Apireturn::sent(0,'请输入企业名称',200);
  150. if(empty($post['age']))
  151. return Apireturn::sent(0,'请输入经营年限',200);
  152. if(!is_numeric($post['age']))
  153. return Apireturn::sent(0,'输入值限纯数字',200);
  154. if(empty($post['type_id']))
  155. return Apireturn::sent(0,'请选择建材类型',200);
  156. if(empty($post['position']))
  157. return Apireturn::sent(0,'请输入职位',200);
  158. if(empty($post['tel']))
  159. return Apireturn::sent(0,'请输入联系号码',200);
  160. if(!Common::is_tel($post['tel']))
  161. return Apireturn::sent(0,'请输入有效手机号',200);
  162. if(empty($post['province']))
  163. return Apireturn::sent(0,'请选择省份',200);
  164. if(empty($post['city']))
  165. return Apireturn::sent(0,'请选择市',200);
  166. if(empty($post['area']))
  167. return Apireturn::sent(0,'请选择区',200);
  168. if(empty($post['address']))
  169. return Apireturn::sent(0,'请输入详细地址',200);
  170. if(empty($post['intro']))
  171. return Apireturn::sent(0,'请输入企业简介',200);
  172. if(empty($post['latitude']) || empty($post['longitude']))
  173. return Apireturn::sent(0,'缺少经纬度',200);
  174. $model->backpic = Yii::$app->request->post('backpic');
  175. $model->company = Yii::$app->request->post('company');
  176. $model->type_id = Yii::$app->request->post('type_id');
  177. $model->name = Yii::$app->request->post('name');
  178. $model->age = Yii::$app->request->post('age');
  179. $model->position = Yii::$app->request->post('position');
  180. $model->tel = Yii::$app->request->post('tel');
  181. $model->qq = Yii::$app->request->post('qq');
  182. $model->wechat = Yii::$app->request->post('wechat');
  183. $model->latitude = Yii::$app->request->post('latitude');
  184. $model->longitude = Yii::$app->request->post('longitude');
  185. $geohash = new ZM_Geohash();
  186. $geohash->init_codingMap();
  187. $model->hashcode =$geohash->encode($model->latitude,$model->longitude);
  188. $model->province = Yii::$app->request->post('province');
  189. $model->city = Yii::$app->request->post('city');
  190. $model->area = Yii::$app->request->post('area');
  191. $model->address = Yii::$app->request->post('address');
  192. $model->intro = Yii::$app->request->post('intro');
  193. $model->u_time = time();
  194. if($model->save()){
  195. $imgs = Yii::$app->request->post('imgs');
  196. $imgs =json_decode($imgs,true);//用户预约的项目
  197. if(!empty($imgs))
  198. {
  199. $images = ImageSource::find()->select('id,pic')->where(['topid'=>Yii::$app->user->id,'status'=>ImageSource::STATUS_YES,'type'=>ImageSource::TYPE_MATER_GOOD])->all();
  200. if(empty($images))
  201. {
  202. foreach ($imgs as $img_val)
  203. {
  204. $image = new ImageSource();
  205. $image->type = ImageSource::TYPE_MATER_GOOD;
  206. $image->topid = Yii::$app->user->id;
  207. $image->pic = $img_val;
  208. $image->created_at = time();
  209. $image->updated_at = time();
  210. $image->status = ImageSource::STATUS_YES;
  211. $image->save();
  212. }
  213. }else{
  214. $temp_imgs = array();
  215. foreach ($images as $images_val)
  216. {
  217. if(!in_array($images_val->pic,$imgs))//不存在
  218. {
  219. $data_image = ImageSource::find()->where(['id'=>$images_val->id])->one();
  220. $data_image->status = ImageSource::STATUS_NO;
  221. $data_image->save();
  222. }
  223. $temp_imgs[] = $images_val->pic;
  224. }
  225. foreach ($imgs as $imgs_val)
  226. {
  227. if(!in_array($imgs_val,$temp_imgs))
  228. {
  229. $image = new ImageSource();
  230. $image->type = ImageSource::TYPE_MATER_GOOD;
  231. $image->topid = Yii::$app->user->id;
  232. $image->pic = $imgs_val;
  233. $image->created_at = time();
  234. $image->updated_at = time();
  235. $image->status = ImageSource::STATUS_YES;
  236. $image->save();
  237. }
  238. }
  239. }
  240. }else{
  241. if(ImageSource::find()->where(['topid'=>Yii::$app->user->id,'status'=>ImageSource::STATUS_YES,'type'=>ImageSource::TYPE_MATER_GOOD])->count()>0)
  242. Yii::$app->db->createCommand()->update("{{%image}}",['status'=>ImageSource::STATUS_NO],'topid = :topid AND status = :status AND type = :type',[':topid'=>Yii::$app->user->id,':status'=>ImageSource::STATUS_YES,':type'=>ImageSource::TYPE_MATER_GOOD])->execute();
  243. }
  244. return Apireturn::sent(1,'修改成功',200);
  245. }
  246. else{
  247. return Apireturn::sent(0,'修改失败',200);
  248. }
  249. }
  250. /**
  251. * 查看名片
  252. */
  253. public function actionInfo()
  254. {
  255. $data = UserMater::findBySql("SELECT a.backpic,a.company,a.name,a.age,a.position,a.tel,a.qq,a.wechat,a.latitude,a.longitude,a.address,a.intro,a.type_id,b.name as type_name,a.province,a.city,a.area FROM {{%user_mater}} a LEFT JOIN {{%mater_type}} b ON a.type_id = b.id WHERE a.uid = :uid",[':uid'=>Yii::$app->user->id])->asArray()->one();
  256. if(!empty($data)){
  257. $data['imgs'] = array();
  258. $imgs = ImageSource::find()->where(['topid'=>Yii::$app->user->id,'status'=>ImageSource::STATUS_YES,'type'=>ImageSource::TYPE_MATER_GOOD])->select('pic')->orderBy("created_at ASC")->all();
  259. if(!empty($imgs)){
  260. foreach ($imgs as $key => $val)
  261. {
  262. $data['imgs'][] = $val->pic;
  263. }
  264. }
  265. $data['province_name'] = !empty($data['province']) ? Area::queryCity($data['province']) : "";
  266. $data['city_name'] = !empty($data['city']) ? Area::queryCity($data['city']) : "";
  267. $data['area_name'] = !empty($data['area']) ? Area::queryCity($data['area']) : "";
  268. return Apireturn::sent(1,'success',200,$data);
  269. }else{
  270. return Apireturn::sent(0,'还没创建名片',200);
  271. }
  272. }
  273. /**
  274. * 生成名片
  275. */
  276. public function actionShare()
  277. {
  278. $uid = Yii::$app->request->get('uid');
  279. $data = UserMater::findBySql("SELECT a.uid,a.backpic,a.company,a.name,a.age,a.position,a.tel,a.qq,a.wechat,a.latitude,a.longitude,a.address,a.intro,b.name as type_name FROM {{%user_mater}} a LEFT JOIN {{%mater_type}} b ON a.type_id = b.id WHERE a.uid = :uid",[':uid'=>$uid])->asArray()->one();
  280. if(!empty($data))
  281. $data['imgs'] = ImageSource::find()->where(['topid' =>$data['uid'], 'status' => ImageSource::STATUS_YES,'type'=>ImageSource::TYPE_MATER_GOOD])->select('pic')->orderBy("created_at ASC")->all();
  282. else
  283. return Apireturn::sent(0,'找不到该记录',200);
  284. return Apireturn::sent(1,'success',200,$data);
  285. }
  286. /**
  287. * 建材商分类
  288. * @return array
  289. */
  290. public function actionTypes()
  291. {
  292. $list = MaterType::find()->select('id,name')->where(['status'=>MaterType::STATUS_YES])->orderBy("sort ASC,id DESC")->asArray()->all();
  293. return Apireturn::sent(1,'success',200,$list);
  294. }
  295. /**
  296. * 获取uid
  297. */
  298. public function actionGetUid()
  299. {
  300. return Apireturn::sent(1,'success',200,Yii::$app->user->id);
  301. }
  302. /***
  303. * 获得openid
  304. * @return array
  305. */
  306. public function actionGetOpenid()
  307. {
  308. $code =\Yii::$app->request->post('code');
  309. header('content-type:application/json; charset=UTF-8;');
  310. if(empty($code))
  311. return Apireturn::sent(0,'NO CODE',200);
  312. $data = '';
  313. WxBizDecrypt::$appid = Yii::$app->params['wechatapi']['appidCompany'];
  314. WxBizDecrypt::$appSecret =Yii::$app->params['wechatapi']['secretCompany'];
  315. $result = WxBizDecrypt::getSessionkey($code,$data);
  316. if($result == WxBizDecrypt::$OK){
  317. $dataObj = json_decode($data);
  318. return Apireturn::sent(1,'success',200,array('openid'=>$dataObj->openid));
  319. }else{
  320. return Apireturn::sent(0,'获取用户信息出错',200);
  321. }
  322. }
  323. }