request->post('level/d', 0); $list['used'] = $codeUserModel->where('user_id', $this->auth->id)->where('level', $level)->where('status', CodeNoModel::STATUS_USED)->field('id,code_no')->select(); $list['normal'] = $codeUserModel->where('user_id', $this->auth->id)->where('level', $level)->where('status', CodeNoModel::STATUS_NORMAL)->field('id,code_no')->select(); $this->success('ok', $list); } /* * 激活 */ public function activate(CodeNoModel $codeNoModel, CodeUserLogModel $codeUserLogModel) { $params = $this->request->post(); $validate = \think\Loader::validate('CodeNo'); if(!$validate->scene('add')->check($params)) $this->error($validate->getError()); //激活码是否存在 $row = $codeNoModel->where('code_no', $params['code_no'])->where('status', CodeNoModel::STATUS_NORMAL)->find(); if(!$row) $this->error('激活码不存在或已被使用'); //判断用户是否是自己激活自己 if($row->user_id == $this->auth->id) $this->error('不能使用激活自己'); //不能重复激活相同等级 if($codeUserLogModel::where('user_id', $this->auth->id)->where('level', $row->level)->count()) $this->error('不能重复激活相同等级'); Db::startTrans(); try { //发放激活礼包 CodenoLogic::setActivate($this->auth->id, $this->auth->parent_id, $row->level, $params['code_no']); $row->status = CodeNoModel::STATUS_USED; $row->save(); // 提交事务 Db::commit(); } catch (Exception $e) { // 回滚事务 Db::rollback(); $this->error($e->getMessage()); } $this->success('ok'); } //生成激活码 public function generate(CodeUserModel $codeUserModel, CodeNoModel $codeNoModel) { $params = $this->request->post(); $validate = \think\Loader::validate('CodeNo'); if(!$validate->scene('gen')->check($params)) $this->error($validate->getError()); //判断等级是否存在 $key = CodeUserModel::$LevelKey[$params['level']]; if(!isset($key)) $this->error('等级不存在'); //判断等级剩余激活数量 $row = $codeUserModel::where('user_id', $this->auth->id)->find(); if(empty($row->{'level_'.$key})) $this->error('等级'.$key.'剩余激活数量不足'); Db::startTrans(); try { //添加激活码 $codeNoModel::setActivate($this->auth->id, $params['level']); //扣除激活剩余数量 $row->{'level_'.$key}--; $row->save(); // 提交事务 Db::commit(); } catch (Exception $e) { // 回滚事务 Db::rollback(); $this->error($e->getMessage()); } $this->success('ok'); } //剩余激活数量 public function remaining(CodeUserModel $codeUserModel) { $row = $codeUserModel::where('user_id', $this->auth->id)->find(); $this->success('ok', $row); } //统计直推等级人数 public function count(CodeUserLogModel $codeUserLogModel) { $count = $codeUserLogModel::where('parent_id', '=',$this->auth->id) ->field('level,count(*) as num') ->group('level') ->having('level >0') ->select(); $this->success('ok', $count); } }