| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- namespace App\Service\Wx;
- use App\Model\Employee;
- use App\Model\WxEmployee;
- use App\Service\LoginService;
- class WxEmployeeService extends Service
- {
- public function setUser($data){
- if(empty($data['code'])) return [false, '用户登录凭证(code)不能为空'];
- $code = $data['code'];
- $service = new WxService();
- list($status,$openid) = $service->getOpenid($code);
- if(!$status) return [false,$openid];
- $user = WxEmployee::where('openid',$openid)->where('appid',$service->appid)->first();
- if(empty($user)) {
- $user = new WxEmployee();
- $user->mobile = '';
- $user->openid = $openid;
- $user->appid = $service->appid;
- $user->save();
- $state = 0;
- }else{
- $state = 1;
- if(empty($user->mobile)){
- $state = 0;
- }else{
- $bool = Employee::where('del_time',0)
- ->where('mobile',$user->mobile)
- ->where('is_wx_admin', Employee::IS_WX_ADMIN_ONE)
- ->exists();
- if(! $bool) $state = 0;
- }
- }
- return [true,['openid'=>$openid, 'state'=> $state]];
- }
- public function setMobile($data){
- if(empty($data['code'])) return [false, '用户登录凭证(code)不能为空'];
- if(empty($data['openid'])) return [false, 'openID不能为空'];
- $code = $data['code'];
- $openid = $data['openid'];
- $service = new WxService();
- list($status,$mobile) = $service->getMobile($code);
- if(!$status) return [false,$mobile];
- $user = WxEmployee::where('openid',$openid)->where('appid',$service->appid)->first();
- if(empty($user)) return [false,'openID在系统中暂无记录'];
- $user->mobile = $mobile;
- $user->save();
- return [true, ['mobile' => $mobile]];
- }
- public static function checkWxUser($userId){
- $res = Employee::where('id', $userId)
- ->where('del_time',0)
- ->first();
- if(empty($res)) return [false, '该系统账号不存在'];
- $res = $res->toArray();
- if(! $res['is_wx_admin']) return [false, '该系统账号不允许登录微信小程序'];
- return [true, $res];
- }
- public function getSystemMenuList($data){
- if(empty($data['openid'])) return [false,'openid不能为空!'];
- $employee = WxEmployee::where('openid',$data['openid'])->first();
- if(empty($employee)) return [false,'未找到用户信息'];
- $employee = $employee->toArray();
- list($status, $msg) = $this->fillEmployeeData($employee);
- if(! $status) return [false, $msg];
- //获取人员所有的所有的顶级菜单
- $sysMenu = (new LoginService())->getPersonRoleForSysMenuList($employee['id']);
- if(empty($sysMenu)) return [false, '账户未设置菜单功能'];
- return [true, $sysMenu];
- }
- // 根据微信小程序表记录的手机号,查找唯一对应的账号且账号允许登录微信小程序后台,最后更新到微信小程序表中
- public function fillEmployeeData(&$employee){
- if (empty($employee['employee_id'])) {
- //找到对应的账号
- $emp = Employee::where('del_time',0)
- ->where('mobile',$employee['mobile'])
- ->where('is_wx_admin', Employee::IS_WX_ADMIN_ONE)
- ->select('id')
- ->first();
- if(empty($emp)) return [false, '用户手机信息未匹配到系统账号'];
- $emp = $emp->toArray();
- $employee['employee_id'] = $emp['id'];
- //更新到微信小程序中
- WxEmployee::where('id',$employee['id'])->update(['employee_id' => $emp['id']]);
- }
- return [true, ''];
- }
- }
|