2021-07-16 23:22:22 +08:00

588 lines
21 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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');
}
}