Files
qlg.tsgz.moe/hyhproject/admin/model/Users.php
2019-09-06 23:53:10 +08:00

588 lines
21 KiB
PHP
Executable File

<?php
namespace wstmart\admin\model;
use think\Db;
use think\Loader;
/**
* ============================================================================
* 会员业务处理
*/
class Users extends Base{
/**
* 个体认证审核列表
* @param int $isPersonal 是否是个体认证
* @return array
* @throws \think\exception\DbException
*/
public function getReview($isPersonal=1){
if(1 == $isPersonal){
$m = Db::name('auth_personal a');
}else{
$m = Db::name('auth_company a');
}
$where=[];
$loginName = input('post.loginName');
if($loginName) $where['u.loginName|u.userPhone'] = $loginName;
$rs = $m->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');
}
}