model = new UserModel(); } use Curd; /** * 会员列表 * @return mixed|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function index() { if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); if (($pid = $this->request->param('pid')) !== false && $pid) $where[] = ['pid', '=', $this->request->param('pid', '')]; $userLogic = new UserLogic(); $data = $userLogic->getList($page, $limit, $where, $this->sort, $this->user_map); return $data; } return $this->fetch(); } /** * 禁用用户 * @param $id */ public function forbid($id) { $user = $this->model->findOrEmpty($id); empty($user) && $this->error('数据不存在'); $user['status'] == 0 && $this->error('该用户已被禁用'); if ($this->model->where('id', $id)->save(['status' => 0])) $this->success('禁用成功'); else $this->error('禁用失败'); } /** * 启用用户 * @param $id */ public function enable($id) { $user = $this->model->findOrEmpty($id); empty($user) && $this->error('数据不存在'); $user['status'] == 1 && $this->error('该用户已启用'); if ($this->model->where('id', $id)->save(['status' => 1])) $this->success('启用成功'); else $this->error('启用失败'); } /** * 会员详情 * @param Request $request * @param UpgradeLog $upgradeLog * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function details(Request $request) { $id = $request->param('id'); $info = $this->model ->withJoin('userData', 'INNER') ->where('id', $id) ->find() ->toArray(); // $upgrade_log = $upgradeLog->where('uid', $id)->order('create_at', 'desc')->select(); // $this->assign('upgrade_log', $upgrade_log); $this->assign('info', $info); return $this->fetch(); } /** * 添加用户 * @return mixed */ public function add() { if ($this->request->isAjax()) { $post = $this->request->post(); $mobile = $this->model->where('mobile', $post['mobile'])->value('id'); $mobile && $this->error('该手机号码已被注册'); $invite = $this->model->where('code|px_code', $post['code'])->value('id'); !$invite && $this->error('邀请人不存在'); $this->model->startTrans(); try { $insert['mobile'] = $post['mobile']; $insert['reg_ip'] = $this->request->ip(); $insert['avatar'] = 'http://images.yxj.hongyun63.com/user/default_avatar.jpg'; $insert['code'] = create_invite_code(); $insert['px_code'] = create_invite_code(); $insert['user_type'] = 2; $rz_money = 1.5 + rand(0, 30) / 100; $this->model->save($insert); $uid = $this->model->id; $user_data = new UserData(); $user_data->save(['uid' => $uid, 'rz_money' => $rz_money]); // 保存用户关联信息 $this->bindRelation($post['code'], $uid); // 绑定关系 $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->error('添加用户失败'); } $this->success('添加成功'); } return $this->fetch(); } /** * 邀请页面 * @return mixed */ public function invite() { $admin = session('admin'); !$admin['user_id'] && $this->error('没有该权限'); $user = $this->model->findOrEmpty(['id' => $admin['user_id']]); empty($user) && $this->error('用户信息不存在'); $this->assign('user_id', encode($admin['user_id'])); return $this->fetch(); } /** * 兜底 * @return mixed */ public function doudi() { return 22; if ($this->request->isAjax()) { $post = $this->request->post(); $user = $this->model->findOrEmpty(['id' => $post['uid']]); empty($user) && $this->error('用户不存在'); $post['active'] <= 0 && $this->error('参数错误'); $path = trim_string($user['path'] . ',' . $user['id']); $path_explode = explode(',', $path); $insert = []; foreach ($path_explode as $value) { $insert[] = [ 'active' => $post['active'], 'uid' => $value, 'ip' => $this->request->ip(), 'user_admin' => session('?admin.username') ? session('admin.username') : '', 'from_uid' => $post['uid'], 'failure_at' => date('Y-m-d H:i:s', time() + 86400 * 30), ]; } $this->model->startTrans(); try { $this->model->whereIn('id', $path)->save(['active_set' => ['inc', $post['active']], 'total_number' => ['inc', $post['active']], 'total_number_real' => ['inc', $post['active']], 'total_active' => ['inc', $post['active']]]); ActiveSet::insertAll($insert); $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->error('失败'); } $this->success('成功'); } return $this->fetch(); } /** * 增加余额 * @return mixed */ public function editmoney() { if ($this->request->isPost()) { $post = $this->request->post(); $user = $this->model->findOrEmpty(['id' => $post['uid']]); $money = $post['money']; $type = $post['type']; empty($user) && $this->error('用户不存在'); $this->model->startTrans(); try { if ($type == 'more') { edit_user_money(7, $post['uid'], $money); } else { edit_user_money(8, $post['uid'], $money); } $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->error('失败' . $e->getMessage()); } $this->success('成功'); } return $this->fetch(); } /** * 增加余额 * @return mixed */ public function phoneset() { if ($this->request->isPost()) { $post = $this->request->post(); try { validate(PhoneSet::class)->check($post); } catch (ValidateException $e) { $this->error($e->getMessage()); } $user = $this->model->findOrEmpty(['id' => $post['id']]); $phone = $post['phone']; empty($user) && $this->error('用户不存在'); $userLogic = new UserLogic(); $result = $userLogic->modifyPhone($post['id'], $phone); if ($result !== true) { $this->error($result); } $this->success('成功'); } $user = $this->model->findOrEmpty(['id' => $this->request['id']]); $this->assign('info', $user); return $this->fetch('phoneset'); } /** * 等级设置 * @return mixed */ public function levelset() { if ($this->request->isPost()) { $post = $this->request->post(); $level = $post['level']; if ($level > 4) { $this->error('最高等级4级'); } $user = $this->model->findOrEmpty(['id' => $post['id']]); empty($user) && $this->error('用户不存在'); $level_type = 1; if ($level > $user['level']) { $level_type = 2; } $this->model->startTrans(); try { $this->model->where('id', $post['id'])->save(['level' => $level, 'level_type' => $level_type]); $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->error('失败' . $e->getMessage()); } $this->success('成功'); } $user = $this->model->findOrEmpty(['id' => $this->request['id']]); // $user_info = Db::name('user', $id)->find(); $this->assign('info', $user); return $this->fetch(); } /** * 末尾奖励 * @return mixed */ public function moweiscore() { if ($this->request->isPost()) { $post = $this->request->post(); $user = $this->model->findOrEmpty(['id' => $post['uid']]); $money = $post['money']; empty($user) && $this->error('用户不存在'); $this->model->startTrans(); try { edit_user_score(8, $post['uid'], $money); $this->model->commit(); } catch (\Exception $e) { $this->model->rollback(); $this->error('失败' . $e->getMessage()); } $this->success('成功'); } return $this->fetch(); } /** * 余额明细 * @param MoneyLog $model * @return mixed|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function moneyLog(UserMoneyModel $model) { if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); $where[] = ['uid', '=', $this->request->param('id', '')]; $count = $model ->where($where) ->count(); $type_conf = config('type.money'); $list = $model ->where($where) ->withAttr('type', function ($value, $data) use ($type_conf) { return $type_conf[$value]; }) ->withAttr('money', function ($value, $data) { if ($data['state'] == 2) $value = '-' . $value; return $value; }) ->page($page, $limit) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } /** * 查看上级 * @param Request $request * @param UpgradeLog $upgradeLog * @return mixed * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function lookpidlevel(Request $request) { if ($this->request->isAjax()) { // if (($pid = $this->request->param('pid')) !== false && $pid) // $where[] = ['pid', '=', $this->request->param('pid', '')]; $id = $this->request->param('id'); $path = Db::name('user')->where('id', $id)->value('path'); $arr = explode(',', $path); $ids = $arr; $ids = implode(',', $ids); $order = 'field(id,' . $ids . ')'; // return User::whereIn('id',$ids)->order(Db::raw($order))->select(); $where = array(); $where[] = ['uid', 'in', $arr]; sr_log($where); $count = $this->model ->withJoin('userData', 'INNER') ->where($where) ->count(); $list = $this->model ->withJoin('userData', 'INNER') ->where($where) ->order(Db::raw($order)) ->select(); $data = [ 'code' => 0, 'msg' => '成功', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } /** * 元宝明细 * @param CoinLog $model * @return mixed|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function coinLog(CoinLog $model) { if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); $where[] = ['uid', '=', $this->request->param('id', '')]; $count = $model ->where($where) ->count(); $type_conf = config('type.coin'); $list = $model ->where($where) ->withAttr('type', function ($value, $data) use ($type_conf) { return $type_conf[$value]; }) ->withAttr('coin', function ($value, $data) { if ($data['state'] == 2) $value = '-' . $value; return $value; }) ->page($page, $limit) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } /** * 积分明细 * @param ScoreLog $model * @return mixed|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function scoreLog(ScoreLogModel $model) { if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); $where[] = ['uid', '=', $this->request->param('id', '')]; $count = $model ->where($where) ->count(); $type_conf = config('type.score'); $list = $model ->where($where) ->withAttr('type', function ($value, $data) use ($type_conf) { return $type_conf[$value]; }) ->withAttr('score', function ($value, $data) { if ($data['state'] == 2) $value = '-' . $value; return $value; }) ->page($page, $limit) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } /** * 积分明细 * @param ActiveLog $model * @return mixed|\think\response\Json * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\DbException * @throws \think\db\exception\ModelNotFoundException */ public function activeLog(ActiveLog $model) { if ($this->request->isAjax()) { if (input('selectFields')) { return $this->selectList(); } list($page, $limit, $where) = $this->buildTableParames(); $where[] = ['uid', '=', $this->request->param('id', '')]; $count = $model ->where($where) ->count(); $type_conf = config('type.active'); $list = $model ->where($where) ->withAttr('type', function ($value, $data) use ($type_conf) { return $type_conf[$value]; }) ->withAttr('active', function ($value, $data) { if ($data['state'] == 2) $value = '-' . $value; return $value; }) ->page($page, $limit) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } /** * @NodeAnotation(title="导出") */ public function export() { list($page, $limit, $where) = $this->buildTableParames(); $tableName = $this->model->getName(); $tableName = CommonTool::humpToLine(lcfirst($tableName)); $prefix = config('database.connections.mysql.prefix'); $dbList = Db::query("show full columns from {$prefix}{$tableName}"); $header = []; foreach ($dbList as $vo) { $comment = !empty($vo['Comment']) ? $vo['Comment'] : $vo['Field']; if (!in_array($vo['Field'], $this->noExportFields)) { $header[] = [$comment, $vo['Field']]; } } $list = $this->model ->where($where) ->withJoin('userData', 'INNER') ->where($where) ->limit(100000) ->order('id', 'desc') ->select() ->toArray(); $fileName = time(); return Excel::exportData($list, $header, $fileName, 'xlsx'); } public function teamincome(Request $request) { if ($this->request->isAjax()) { // if (($pid = $this->request->param('pid')) !== false && $pid) // $where[] = ['pid', '=', $this->request->param('pid', '')]; $id = $this->request->param('id'); // $path = Db::name('user')->where('id', $id)->value('path'); $where = array(); $where[] = ['team_id', '=', $id]; $where[] = ['type', '=', 5]; $count = Db::name('userteam_log') // ->withJoin('user', 'INNER') ->where($where) ->count(); $list = Db::name('userteam_log') // ->withJoin('user', 'INNER') ->where($where) ->order($this->sort) ->select(); $data = [ 'code' => 0, 'msg' => '成功', 'count' => $count, 'data' => $list, ]; return json($data); } return $this->fetch(); } }