2019-09-06 23:53:10 +08:00

116 lines
3.5 KiB
PHP
Executable File

<?php
namespace wstmart\admin\model;
use think\Db;
/**
* ============================================================================
* 微信用户业务处理
*/
class WxUsers extends Base{
/**
* 分页
*/
public function pageQuery(){
$key = input('get.key');
$where = [];
if($key!='')$where['userName'] = ['like','%'.$key.'%'];
return $this->where($where)->order('subscribeTime desc,userId desc')->paginate(input('post.limit/d'))->toArray();
}
/**
* 获取指定对象
*/
public function getById($id){
return $this->where(['userId'=>$id])->find();
}
/**
* 与微信用户管理同步
*/
public function synchroWx(){
$this->where('userId>0')->delete();
$wx = WXAdmin();
$data = $wx->wxUserGet();
if(isset($data['errcode'])){
if($data['errcode']!=0)return WSTReturn('与微信同步失败,请清除缓存重试');
}
if(isset($data['data']) && count($data['data']['openid'])>0){
$dataList = [];
foreach($data['data']['openid'] as $key=>$v){
$datas = [];
$datas['openId'] = $v;
$datas['userFill'] = -1;
$dataList[] = $datas;
}
$this->insertAll($dataList);
return WSTReturn("".$data['total']."个用户需同步", 1,$dataList);
}
}
public function wxLoad(){
$openId = input('post.id');
$wx = WXAdmin();
$userInfo = $wx->wxUserInfo($openId);
if(isset($userInfo['errcode'])){
if($userInfo['errcode']!=0)return WSTReturn('与微信同步失败,请清除缓存重试');
}
$data = [];
$data['userName'] = $userInfo['nickname'];
$data['userSex'] = $userInfo['sex'];
$data['userAreas'] = $userInfo['country'].$userInfo['province'].$userInfo['city'];
$data['userPhoto'] = $userInfo['headimgurl'];
$data['userRemark'] = $userInfo['remark'];
$data['subscribeTime'] = date('Y-m-d H:i:s',$userInfo['subscribe_time']);
$data['groupId'] = $userInfo['groupid'];
$data['openId'] = $userInfo['openid'];
$data['userFill'] = 1;
$result = $this->update($data,['openId'=>$openId,'userFill'=>-1]);
if(false !== $result){
return WSTReturn("", 1);
}else{
return WSTReturn($this->getError(),-1);
}
}
/**
* 编辑
*/
public function edit(){
$userId = input('post.id/d');
$data = input('post.');
WSTUnset($data,'userId,userName,userSex,userAreas,userPhoto,subscribeTime,groupId,openId');
$result = $this->allowField(true)->save($data,['userId'=>$userId]);
if(false !== $result){
$info = $this->getById($userId);
$wdata = [];
$wdata["openid"] = $info["openId"];
$wdata["remark"] = $info["userRemark"];
$wdata = json_encode($wdata,JSON_UNESCAPED_UNICODE);
$wx = WXAdmin();
$data = $wx->wxUpdateremark($wdata);
return WSTReturn("修改成功", 1);
}else{
return WSTReturn($this->getError(),-1);
}
}
/**
* 写入unionId
*/
public function recodeUnionId(){
$m = new \wstmart\common\model\Users;
// 取出已关联微信的账号
$rs = $m->field('userId,wxOpenId')->where(['wxOpenId'=>['<>','']])->where("isNull(wxUnionId)")->select();
if(empty($rs))return WSTReturn('无需写入unionId');
// 写入UnionId
$wx = WXAdmin();
$update = [];
foreach($rs as $k=>$v){
$data = $wx->wxUserInfo($v['wxOpenId']);
$item = ['userId'=>$v['userId'],'wxUnionId'=>$data['unionid']];
array_push($update, $item);
}
$flag = $m->saveAll($update);
if($flag!==false)return WSTReturn('unionId写入完成',1);
return WSTReturn($this->getError(),-1);
}
}