join('__USERS__ u','a.userId=u.userId') ->where($where) ->field('u.loginName,u.userPhone,a.*') ->order('status ASC,createTime ASC') ->paginate(input('limit/d')) ->toArray(); return $rs; } /**个体认证操作 * @param int $isPersonal 是否是个体认证 * @return array * @throws \think\Exception * @throws \think\exception\PDOException */ public function authAction($isPersonal=1){ $data = input('post.'); $id = $data['id']; if(1 == $data['status']){ unset($data['reasonsForRefusal']); } $field = '*'; $user_data = []; if(1 == $isPersonal){ $field = 'userId,householdName trueName,userPhone'; $user_data['authType'] = 1; $m = Db::name('auth_personal a'); }else{ $user_data['authType'] = 2; $field = 'userId,trueName,userPhone'; $m = Db::name('auth_company a'); } $where['id'] = $id; $authInfo = $m->where($where)->field($field)->find(); if(!$authInfo){ return WSTReturn('认证不存在'); }else{ if(1 == $data['status']) { $user_data['userPhone'] = $authInfo['userPhone']; $user_data['trueName'] = $authInfo['trueName']; $user_data['userName'] = $authInfo['trueName']; }else{ $user_data['authType'] = 0; } Db::name('users')->where(['userId' => $authInfo['userId']])->update($user_data); } $data['updateTime'] = time(); $rs = $m->where($where)->update($data); if(false !== $rs){ return WSTReturn('操作成功',1); } return WSTReturn('操作失败,请重试',-1); } /** * 获取申请列表 */ public function getUserUpdateList(){ $where=[]; $loginName = input('post.loginName'); if($loginName) $where['u.loginName|u.userPhone'] = $loginName; $rs = Db::name('user_update d') ->join('__USERS__ u','d.userId=u.userId') ->join('__SHOPS__ s','d.shopId=s.shopId') ->where($where) ->field('u.loginName,u.userPhone,u.trueName,s.userName,s.phone,s.shopName,s.provinceId,s.cityId,s.countyId,s.townId,s.villageId,d.userId,d.shopId,d.id,d.applyLevel,d.confirmImg,d.shopImg,d.status,d.reasonsForRefusal,d.createTime,d.updateTime') ->order('status ASC,createTime ASC') ->paginate(input('limit/d')) ->toArray(); $m = Model('common/Position'); foreach ($rs['Rows'] as &$v) { $m->initData(1); $v['province'] = $m->getAreaName($v['provinceId']); $m->initData(2); $v['city'] = $m->getAreaName($v['cityId']); $m->initData(3); $v['county'] = $m->getAreaName($v['countyId']); $m->initData(4); $v['town'] = $m->getAreaName($v['townId']); $m->initData(5); $v['village'] = $m->getAreaName($v['villageId']); } return $rs; } /** * 申请操作 */ public function setUserUpdate(){ $data = input('post.'); $id = $data['id']; $applyInfo = Db::name('user_update')->where(['id'=>$id])->field('userId,shopId,applyLevel')->find(); if(!$applyInfo){ return WSTReturn('此数据不存在'); } $applyLevel = $applyInfo['applyLevel']; if(!in_array($applyLevel,[2,3,4])) return WSTReturn('请正确输入等级!'); if(1 == $data['status']){ unset($data['reasonsForRefusal']); //店铺位置信息 $shopInfo = Model('common/shops')->getFieldsById($applyInfo['shopId'],'provinceId,cityId,countyId,townId,villageId'); $shopInfo = $shopInfo->toArray(); //检查是否已有代理 $applyArea=''; switch ($applyLevel) { case 2: $applyArea = 'countyId'; break; case 3: $applyArea = 'townId'; break; case 4: $applyArea = 'villageId'; break; } if(Db::name('user_update')->where(['status'=>1,'applyLevel'=>$applyLevel,$applyArea=>$shopInfo[$applyArea]])->value('id')){ return WSTReturn('当前区域代理已存在'); } $data = array_merge($data,$shopInfo); } Db::startTrans(); try{ $data['updateTime'] = time(); if(1 == $data['status']){ //升级会员等级,没啥用了,留着吧 $userInfo = getUserInfo(['userId'=>$applyInfo['userId']],'userLevel'); if($applyLevel > $userInfo['userLevel']){ Db::name('users')->where(['userId'=>$applyInfo['userId']])->update(['userLevel'=>$applyLevel]); } } if(false !== Db::name('user_update')->where(['id'=>$id])->update($data)){ Db::commit(); return WSTReturn('操作成功',1); } }catch (\Exception $e) { Db::rollback();errLog($e); } return WSTReturn('操作失败',-1); } /** * 分页 */ public function pageQuery(){ /******************** 查询 ************************/ $where = []; $where['u.dataFlag'] = 1; $lName = input('loginName1'); $phone = input('loginPhone'); $email = input('loginEmail'); $uType = input('userType'); $uStatus = input('userStatus1'); $sort = input('sort'); if(!empty($lName)) $where['loginName|s.shopName'] = ['like',"%$lName%"]; if(!empty($phone)) $where['userPhone'] = ['like',"%$phone%"]; if(!empty($email)) $where['userEmail'] = ['like',"%$email%"]; if(is_numeric($uType)) $where['userType'] = ['=',"$uType"]; if(is_numeric($uStatus)) $where['userStatus'] = ['=',"$uStatus"]; $order = 'u.userId desc'; if($sort){ //$sort = str_replace('.',' ',$sort); //$order = $sort; } /********************* 取数据 *************************/ $rs = $this->alias('u')->join('__SHOPS__ s','u.userId=s.userId and s.dataFlag=1','left')->join('__USER_TREES__ t','u.userId=t.uid','left')->where($where) ->field(['u.userId','u.regConfirmImg','loginName','u.userName','userType','userPhone','userEmail','userECT','userScore','u.createTime','u.productNum','u.couponsNum','u.wangNum','userStatus','lastTime','s.shopId','userMoney','u.lockMoney','t.pid']) ->order($order) ->group('u.userId') ->paginate(input('limit/d')) ->toArray(); $m = Model('Table'); foreach ($rs['Rows'] as &$v) { if($v['pid']){ $m->setTable('users'); $v['pName'] = $m->getField(['userId'=>$v['pid']],'loginName'); }else{ $v['pName'] = ''; } $m->setTable('user_vouchers_summary'); $sInfo = $m->getInfo(['userId'=>$v['userId']],'expectedProductNum,expectedCouponsNum'); $v['expectedProductNum'] = (float)$sInfo['expectedProductNum']; $v['expectedCouponsNum'] = (float)$sInfo['expectedCouponsNum']; $r = WSTUserRank($v['userScore']); $v['rank'] = $r['rankName']; } return $rs; } public function getById($id){ return $this->get(['userId'=>$id]); } /** * 新增 */ public function add(){ $data = input('post.'); $data['createTime'] = date('Y-m-d H:i:s'); $data["loginSecret"] = rand(1000,9999); $data['loginPwd'] = md5($data['loginPwd'].$data['loginSecret']); WSTUnset($data,'userId,userType,userScore,userTotalScore,lastIP,lastTime,userMoney,lockMoney,dataFlag,rechargeMoney'); Db::startTrans(); try{ $result = $this->validate('Users.add')->allowField(true)->save($data); $id = $this->userId; if(false !== $result){ hook("adminAfterAddUser",["userId"=>$id]); WSTUseImages(1, $id, $data['userPhoto']); Db::commit(); return WSTReturn("新增成功", 1); } }catch (\Exception $e) { Db::rollback();errLog($e); return WSTReturn('新增失败',-1); } } /** * 编辑 */ public function edit(){ $Id = (int)input('post.userId'); $data = input('post.'); $u = $this->where('userId',$Id)->field('loginSecret')->find(); if(empty($u))return WSTReturn('无效的用户'); //判断是否需要修改密码 if(empty($data['loginPwd'])){ unset($data['loginPwd']); }else{ //修改联盟登录密码 $password = $data['loginPwd']; $data['loginPwd'] = md5($data['loginPwd'].$u['loginSecret']); } Db::startTrans(); try{ if(isset($data['userPhoto'])){ WSTUseImages(1, $Id, $data['userPhoto'], 'users', 'userPhoto'); } WSTUnset($data,'loginName,createTime,userId,userType,userScore,userTotalScore,lastIP,lastTime,userMoney,lockMoney,dataFlag,rechargeMoney'); $result = $this->allowField(true)->save($data,['userId'=>$Id]); if(false !== $result){ // 同步修改联盟密码 // if(!empty($password)){ // Db::table('rd_users')->where(['shop_id'=>$Id])->setField('password',md5($password)); // } hook("adminAfterEditUser",["userId"=>$Id]); Db::commit(); return WSTReturn("编辑成功", 1); } }catch (\Exception $e) { Db::rollback();errLog($e); return WSTReturn('编辑失败',-1); } } /** * 查看会员定返数据 */ public function viewUserDayData(){ } /** * 充值 */ public function recharge(){ $userId = (int)input('post.userId'); $loginName = input('post.loginName'); $rechargeCurrency = input('post.rechargeCurrency');//充值币种,1为ECT $rechargeType = (int)input('post.rechargeType');//1充值0扣除 $rechargeNum = (float)input('post.rechargeNum'); if($rechargeNum <=0){ return WSTReturn('请正确输入充值数量!'); } $rechargeNames = ['0'=>'扣除','1'=>'充值']; if(!$rechargeCurrency) return WSTReturn('请正确输入币种!'); if(!$userId) $userId = $this->where('loginName',$loginName)->value('userId'); if(!$userId) return WSTReturn('未找到此会员'); Db::startTrans(); try{ switch ($rechargeCurrency) { case 1://预获产品券 Model('common/UserVouchers')->insertVouchersNotice($userId,0,$rechargeNum,0,'系统'.$rechargeNames[$rechargeType],$rechargeType); break; case 2://预获优惠券 Model('common/UserVouchers')->insertVouchersNotice($userId,0,0,$rechargeNum,'系统'.$rechargeNames[$rechargeType],$rechargeType); break; case 3://产品券 case 4://优惠券 case 5://旺旺券 $rechargeCurrency-=2; Model('common/LogMoneys')->addMoneyLog(0,$userId,0,2,'系统'.$rechargeNames[$rechargeType],$rechargeType,$rechargeNum,'system',$rechargeCurrency); break; default: break; } Db::commit(); return WSTReturn("操作成功", 1); }catch (\Exception $e) { Db::rollback();errLog($e); return WSTReturn('操作失败',-1); } // if($userId){ // $u = $this->where('userId',$userId)->field('userId,loginSecret,userECT')->find(); // }else{ // $u = $this->where('loginName',$loginName)->field('userId,loginSecret,userECT')->find(); // } // if(empty($u))return WSTReturn('无效的用户'); // $userId = $u['userId']; // if($rechargeType == 2){//扣除 // if($rechargeCurrency == 1){ // if($u['userECT'] < $rechargeNum ){ // return WSTReturn('余额不足以扣除!当前余额:'.$u['userECT']); // } // } // } // Db::startTrans(); // try{ // if($rechargeCurrency == 1){//ECT // if($rechargeType == 1){//充值 // ectLog($userId,$rechargeNum,10,'',['userECT'=>['exp','userECT+'.$rechargeNum]],1); // }else{ // ectLog($userId,$rechargeNum,10,'',['userECT'=>['exp','userECT-'.$rechargeNum]],2); // } // } // Db::commit(); // return WSTReturn("操作成功", 1); // }catch (\Exception $e) { // Db::rollback();errLog($e); // return WSTReturn('操作失败',-1); // } } /** * 删除 */ public function del(){ $id = (int)input('post.id'); if($id==1){ return WSTReturn('无法删除自营店铺账号',-1); } Db::startTrans(); try{ $data = []; $data['dataFlag'] = -1; $result = $this->update($data,['userId'=>$id]); if(false !== $result){ //删除店铺信息 model('shops')->delByUserId($id); hook("adminAfterDelUser",["userId"=>$id]); WSTUnuseImage('users','userPhoto',$id); Db::commit(); return WSTReturn("删除成功", 1); } }catch (\Exception $e) { Db::rollback();errLog($e); return WSTReturn('删除失败',-1); } } /** * 是否启用 */ public function changeUserStatus($id, $status){ Db::startTrans(); try{ $this->update(['userStatus'=>(int)$status],['userId'=>(int)$id]); if(0 == $status){ $lockTime =(int)input('post.lockTime'); $lockReason =input('post.lockReason'); Db::name('user_lock')->insert(['userId'=>$id,'lockTime'=>$lockTime,'lockReason'=>$lockReason,'createTime'=>time()]); $this->update(['userStatus'=>(int)$status],['userId'=>(int)$id]); } Db::commit(); return WSTReturn("操作成功",1); }catch (\Exception $e) { //dump($e); Db::rollback();errLog($e); } return WSTReturn("操作失败,请刷新后再重试"); } /** * 根据用户名查找用户 */ public function getByName($name){ return $this->field(['userId','loginName'])->where(['loginName'=>['like',"%$name%"]])->select(); } /** * 获取所有用户id */ public function getAllUserId() { return $this->where('dataFlag',1)->column('userId'); } /** * 重置支付密码 */ public function resetPayPwd(){ $Id = (int)input('post.userId'); $loginSecret = $this->where('userId',$Id)->value('loginSecret'); // 重置支付密码为6个6 $payPwd = md5('666666'.$loginSecret); $result = $this->where('userId',$Id)->setField('payPwd',$payPwd); if(false !== $result){ return WSTReturn("重置成功", 1); }else{ return WSTReturn($this->getError(),-1); } } /** * 根据用户账号查找用户信息 */ public function getUserByKey(){ $key = input('key'); $user = $this->where(['loginName|userPhone|userEmail'=>['=',$key],'dataFlag'=>1])->find(); if(empty($user))return WSTReturn('找不到用户',-1); $shop = model('shops')->where(['userId'=>$user->userId,'dataFlag'=>1])->find(); if(!empty($shop))return WSTReturn('该用户已存在关联的店铺信息',-1); return WSTReturn('',1,['loginName'=>$user->loginName,'userId'=>$user->userId]); } /** * 导出订单 --林莉 */ public function toExport(){ $name="会员管理表"; $where = []; $where['u.dataFlag'] = 1; $lName = input('loginName1'); $phone = input('loginPhone'); $email = input('loginEmail'); $uType = input('userType'); $uStatus = input('userStatus1'); $sort = input('sort'); if(!empty($lName)) $where['loginName|s.shopName'] = ['like',"%$lName%"]; if(!empty($phone)) $where['userPhone'] = ['like',"%$phone%"]; if(!empty($email)) $where['userEmail'] = ['like',"%$email%"]; if(is_numeric($uType)) $where['userType'] = ['=',"$uType"]; if(is_numeric($uStatus)) $where['userStatus'] = ['=',"$uStatus"]; $order = 'u.userId desc'; /********************* 取数据 *************************/ $page = db('users')->alias('u')->join('__SHOPS__ s','u.userId=s.userId and s.dataFlag=1','left')->where($where) ->field(['u.userId','loginName','userName','userType','userPhone','userEmail','userECT','userScore','u.createTime','userStatus','lastTime','s.shopId','userMoney','u.lockMoney']) ->order($order) ->select(); foreach ($page as $key => $v) { $r = WSTUserRank($v['userScore']); $page[$key]['rank'] = $r['rankName']; } Loader::import('phpexcel.PHPExcel.IOFactory'); $objPHPExcel = new \PHPExcel(); // 设置excel文档的属性 $objPHPExcel->getProperties()->setCreator("heyuanhui")//创建人 ->setLastModifiedBy("heyuanhui")//最后修改人 ->setTitle($name)//标题 ->setSubject($name)//题目 ->setDescription($name)//描述 ->setKeywords("会员")//关键字 ->setCategory("Test result file");//种类 // 开始操作excel表 $objPHPExcel->setActiveSheetIndex(0); // 设置工作薄名称 $objPHPExcel->getActiveSheet()->setTitle(iconv('gbk', 'utf-8', 'Sheet')); // 设置默认字体和大小 $objPHPExcel->getDefaultStyle()->getFont()->setName(iconv('gbk', 'utf-8', '')); $objPHPExcel->getDefaultStyle()->getFont()->setSize(11); $styleArray = array( 'font' => array( 'bold' => true, 'color'=>array( 'argb' => 'ffffffff', ) ), 'borders' => array ( 'outline' => array ( 'style' => \PHPExcel_Style_Border::BORDER_THIN, //设置border样式 'color' => array ('argb' => 'FF000000'), //设置border颜色 ) ) ); //设置宽 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(20); $objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15); $objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('K')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('L')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('M')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('N')->setWidth(12); $objPHPExcel->getActiveSheet()->getColumnDimension('O')->setWidth(8); $objPHPExcel->getActiveSheet()->getColumnDimension('P')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('Q')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('R')->setWidth(25); $objPHPExcel->getActiveSheet()->getColumnDimension('S')->setWidth(35); $objPHPExcel->getActiveSheet()->getColumnDimension('T')->setWidth(25); $objPHPExcel->getActiveSheet()->getStyle('A1:T1')->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID); $objPHPExcel->getActiveSheet()->getStyle('A1:T1')->getFill()->getStartColor()->setARGB('333399'); $objPHPExcel->getActiveSheet() ->setCellValue('A1', '账号') ->setCellValue('B1', '用户名') ->setCellValue('C1', '手机号码') ->setCellValue('D1', '电子邮箱') ->setCellValue('E1', '可用金额') ->setCellValue('F1', '冻结金额') ->setCellValue('G1', '积分') ->setCellValue('H1', 'ECT') ->setCellValue('I1', '等级') ->setCellValue('J1', '注册时间') ->setCellValue('K1', '状态'); $objPHPExcel->getActiveSheet()->getStyle('A1:R1')->applyFromArray($styleArray); for ($row = 0; $row < count($page); $row++){ $i = $row+2; $objPHPExcel->getActiveSheet() ->setCellValue('A'.$i, $page[$row]['loginName']) ->setCellValue('B'.$i, $page[$row]['userName']) ->setCellValue('C'.$i, $page[$row]['userPhone']) ->setCellValue('D'.$i, $page[$row]['userEmail']) ->setCellValue('E'.$i, $page[$row]['userMoney']) ->setCellValue('F'.$i, $page[$row]['lockMoney']) ->setCellValue('G'.$i, $page[$row]['userScore']) ->setCellValue('H'.$i, $page[$row]['userECT']) ->setCellValue('I'.$i, $page[$row]['rank']) ->setCellValue('J'.$i, $page[$row]['createTime']) ->setCellValue('K'.$i, $page[$row]['userStatus']); } //输出EXCEL格式 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); // 从浏览器直接输出$filename header('Content-Type:application/csv;charset=UTF-8'); header("Pragma: public"); header("Expires: 0"); header("Cache-Control:must-revalidate, post-check=0, pre-check=0"); header("Content-Type:application/force-download"); header("Content-Type:application/vnd.ms-excel;"); header("Content-Type:application/octet-stream"); header("Content-Type:application/download"); header('Content-Disposition: attachment;filename="'.$name.'.xls"'); header("Content-Transfer-Encoding:binary"); $objWriter->save('php://output'); } }