Files
2020-08-06 15:26:41 +08:00

258 lines
8.1 KiB
PHP
Raw Permalink 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
// +------------------------------------------------+
// |http://www.cjango.com |
// +------------------------------------------------+
// | 修复BUG不是一朝一夕的事情等我喝醉了再说吧 |
// +------------------------------------------------+
// | Author: 小陈叔叔 <Jason.Chen> |
// +------------------------------------------------+
namespace app\system\controller;
use app\common\model\Member as MemberModel;
use app\common\model\MemberList as MemberListModel;
use app\common\model\MemberSet as MemberSetModel;
use app\common\model\Team as TeamModel;
use app\common\service\Member as MemberService;
use think\Request;
class Member extends _Init
{
public function index($type = '', $mobile = '', $start_date = '', $end_date = '', $empty_vip = '', $empty_agent = '', $nickname = '')
{
$model = new MemberModel();
$model->alias('Member');
$model = $model->hasWhere('info');
$map = [
'Member.status' => ['egt', 0],
'Member.id' => ['gt', 1],
];
if ($type) {
switch ($type) {
case 'all':
break;
case 'user':
$map['Member.username'] = '';
break;
case 'member':
$map['Member.username'] = ['neq', ''];
$map['MemberInfo.is_fee'] = 0;
$map['MemberInfo.is_agent'] = 0;
break;
case 'vip':
$map['MemberInfo.is_fee'] = 1;
break;
case 'agent':
$map['MemberInfo.is_agent'] = 1;
break;
}
}
if ($mobile) {
$map['MemberInfo.mobile'] = $mobile;
}
if (is_numeric($empty_vip)) {
$map['Member.empty_vip'] = $empty_vip;
}
if (is_numeric($empty_agent)) {
$map['Member.empty_agent'] = $empty_agent;
}
if ($start_date && $end_date) {
$map['create_time'] = ['between time', [$start_date, date('Y-m-d H:i:s', strtotime('+1 day', strtotime($end_date)) - 1)]];
} elseif ($start_date) {
$map['create_time'] = ['> time', $start_date];
} elseif ($end_date) {
$map['create_time'] = ['< time', date('Y-m-d H:i:s', strtotime('+1 day', strtotime($end_date)) - 1)];
}
if ($nickname) {
$map['MemberInfo.nickname'] = ['like', "%" . $nickname . '%'];
}
$this->list = $model->where($map)->order('Member.create_time desc')->paginate();
return $this->fetch();
}
/**
* 添加用户
* @param Request $request 用户的信息 username password
*/
public function add(Request $request)
{
if (IS_POST) {
$username = $request->post('username');
$password = $request->post('password');
$result = MemberService::register($username, $password);
return $this->back($result);
} else {
return $this->fetch();
}
}
/**
* 设置用户状态
* @param [type] $uid 用户id
* @param [type] $status 要设置的状态 true false 正常 禁用
* @return [type] [description]
*/
public function status($uid, $status)
{
$result = MemberService::status($uid, $status);
return $this->back($result);
}
/**
* 重置密码
* @param [type] $uid 用户id
* @return [type] [description]
*/
public function password(Request $request, $uid)
{
if (IS_POST) {
$password = $request->post('password');
$result = MemberService::updatePassword($uid, $password);
return $this->back($result);
} else {
$this->info = MemberModel::get($uid);
return $this->fetch();
}
}
public function junior($pid)
{
$this->list = MemberListModel::where('uid', $pid)->paginate();
return $this->fetch();
}
//设置vip/代理商
public function set($uid, $type)
{
if (IS_POST) {
$data = $this->request->post();
$res = MemberService::memberSet($uid, $data['time'], $type, $data['team_id']);
if ($res === true) {
return $this->success('操作成功');
} else {
return $this->error($res);
}
} else {
$this->team = TeamModel::where('status', 1)->select();
$this->member = MemberModel::get($uid);
return $this->fetch();
}
}
/**
* 空点记录
* @param string $mobile [description]
* @param string $start_date [description]
* @param string $end_date [description]
* @param string $empty_vip [description]
* @param string $empty_agent [description]
* @return [type] [description]
*/
public function member_empty($type = '', $start_date = '', $end_date = '')
{
$model = new MemberSetModel();
$map = [];
if ($type) {
$map['type'] = $type;
}
if ($start_date && $end_date) {
$map['create_time'] = ['between time', [$start_date, date('Y-m-d H:i:s', strtotime('+1 day', strtotime($end_date)) - 1)]];
} elseif ($start_date) {
$map['create_time'] = ['> time', $start_date];
} elseif ($end_date) {
$map['create_time'] = ['< time', date('Y-m-d H:i:s', strtotime('+1 day', strtotime($end_date)) - 1)];
}
$this->list = $model->where($map)->order('create_time desc')->paginate();
return $this->fetch();
}
//推荐网络
public function recommend($uid = UID)
{
if (!is_numeric($uid)) {
$uid = MemberModel::where('username', $uid)->value('id');
}
$this->list = MemberService::recommend($uid);
return $this->fetch('');
}
public function set_parent($id)
{
if (IS_POST) {
$data = $this->request->post();
$res = MemberService::setParent($data);
return $this->back($res);
} else {
$this->info = MemberModel::get($id);
return $this->fetch();
}
}
public function del_parent($myuid)
{
$userinfo = MemberModel::get($myuid); //新推荐人
if ($userinfo) {
if ($userinfo['pid']) {
if ($userinfo->save(['pid' => ''])) {
// SysLogs::create(UID, 'edit_member_pid', ['data' => $userinfo]);
return $this->success('解绑推荐人成功。');
} else {
return $this->error('解绑失败。');
}
} else {
return $this->error('推荐人不存在。');
}
} else {
return $this->error('用户不存在。');
}
}
public function change_parent($mobile, $myuid)
{
$userinfo = MemberModel::where('username', $mobile)->find(); //新推荐人
$myinfo = MemberModel::where('id', $myuid)->find(); //当前用户 新推荐人id = 当前用户id 当前用户pid = 新推荐人id 新推荐人pid = 当前用户id
if ($userinfo) {
if ($userinfo['id'] == $myuid || $myinfo['pid'] == $userinfo['id']) {
return $this->error('新上级不能是本人或与当前推荐人一致');
}
$pid = $userinfo['pid'];
while ($pid > 0) {
if ($pid == $myuid) {
return $this->error('用户已是您的下级,不能再设置为上级');
}
$pid = self::find_parent($pid);
};
$data = ['id' => $userinfo->id, 'mobile' => $userinfo->username, 'nickname' => $userinfo->info->nickname];
return $this->success('', '', $data);
} else {
return $this->error('您输入手机号的用户不存在,请重新输入。');
}
}
public function find_parent($pid)
{
return MemberModel::where('id', $pid)->value('pid');
}
}