update
This commit is contained in:
parent
f0bba2a4c1
commit
b98f273ed7
@ -37,29 +37,36 @@ class Admin extends BaseController
|
||||
if (empty($username) || empty($password)) {
|
||||
return ErrorResponse::createError(ErrorCode::ERROR_PARAM_REQUIRED, '请提交正确的参数');
|
||||
}
|
||||
usleep(500000);
|
||||
// usleep(500000);
|
||||
$user = AdminInfo::where('username', $username)->find();
|
||||
|
||||
if (empty($user) || $user->isEmpty()) {
|
||||
return ErrorResponse::createError(ErrorCode::ERROR_ADMIN_LOGIN_PWD, '用户名或者密码错误(1)');
|
||||
}
|
||||
if ($user->password != md5($username . $password . $user->salt)) {
|
||||
if (!$this->passwordIsCorrect($user,$password)) {
|
||||
return ErrorResponse::createError(ErrorCode::ERROR_ADMIN_LOGIN_PWD, '用户名或者密码错误(2)');;
|
||||
}
|
||||
$data = $user->getPartData(['id', 'username', 'email', 'avatar', 'last_login', 'sex']);
|
||||
$user->save(['last_login' => time()]);
|
||||
// 登录的token
|
||||
$token = AdminService::createAdminToken($user);
|
||||
// return \json(['code'=>1,'message'=>'asdfasdf','data'=>$token]);
|
||||
$data['token'] = $token->token;
|
||||
return Json::create($data);
|
||||
}
|
||||
|
||||
public function updatePwd()
|
||||
{
|
||||
usleep(10000);
|
||||
$originPwd = $this->request->post('origin');
|
||||
$newPwd = $this->request->post('new_pwd');
|
||||
$newPwd2 = $this->request->post('new_pwd2');
|
||||
|
||||
if ($originPwd == $newPwd) {
|
||||
return ErrorResponse::createError(
|
||||
ErrorCode::ADMIN_PWD_EQUAL, '新密码和原始密码一致'
|
||||
);
|
||||
}
|
||||
if ($newPwd != $newPwd2) {
|
||||
return ErrorResponse::createError(
|
||||
ErrorCode::ERROR_ADMIN_LOGIN_PWD, '输入密码不一致'
|
||||
@ -73,16 +80,21 @@ class Admin extends BaseController
|
||||
}
|
||||
$salt = StringUtil::generateRandom(6);
|
||||
$admin->save([
|
||||
'password' => StringUtil::getEncryptPassword($originPwd, $salt),
|
||||
'password' => StringUtil::getEncryptPassword($newPwd, $salt),
|
||||
'salt' => $salt
|
||||
]);
|
||||
return \json(['code' => 0]);
|
||||
return SuccessResponse::create();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 验证密码是否正确
|
||||
* @param AdminInfo $admin
|
||||
* @param string $originPwd
|
||||
* @return bool
|
||||
*/
|
||||
private function passwordIsCorrect(AdminInfo $admin, string $originPwd)
|
||||
{
|
||||
return $admin->password == md5($originPwd . $admin->salt);
|
||||
return $admin->password == StringUtil::getEncryptPassword($originPwd, $admin->salt);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -124,34 +136,48 @@ class Admin extends BaseController
|
||||
{
|
||||
$resultType = $this->request->get('resultType');
|
||||
if ($resultType == null) $resultType = EvaluationService::ResultAll;
|
||||
|
||||
list($page, $size) = $this->getPageParam();
|
||||
$searchName = $this->request->get('name');
|
||||
|
||||
$data = EvaluationService::search(
|
||||
intval($resultType),
|
||||
$this->request->get('name'),
|
||||
$searchName,
|
||||
$this->request->get('sort', EvaluationService::SortByTime),
|
||||
$page, $size
|
||||
);
|
||||
return SuccessResponse::create($data->toArray());
|
||||
$data = $data->toArray();
|
||||
$data['allCount'] = EvaluationService::allCount();
|
||||
return SuccessResponse::create($data);
|
||||
}
|
||||
|
||||
public function downloadEvaluation()
|
||||
{
|
||||
//no limit
|
||||
@@set_time_limit(0);
|
||||
$resultType = $this->request->get('resultType');
|
||||
if ($resultType == null) $resultType = EvaluationService::ResultAll;
|
||||
list($page, $size) = $this->getPageParam();
|
||||
|
||||
$searchName = $this->request->get('name');
|
||||
if ($this->request->get('dataCount') == 'all') { // download all data 有点危险有
|
||||
// 查询所有数据 所以重置所有查询条件
|
||||
$resultType = EvaluationService::ResultAll;
|
||||
$searchName = null;
|
||||
}
|
||||
|
||||
$data = EvaluationService::search(
|
||||
intval($resultType),
|
||||
$this->request->get('name'),
|
||||
$searchName,
|
||||
$this->request->get('sort', EvaluationService::SortByTime),
|
||||
$page, $size);
|
||||
$page, $size, true);
|
||||
|
||||
|
||||
$dataType = $this->request->post('type');
|
||||
$downLoadFields = $this->request->get('fields');
|
||||
|
||||
$excel = new Spreadsheet();
|
||||
$sheet = $excel->getActiveSheet();
|
||||
$rowNumber = 1;
|
||||
|
||||
$titles = [
|
||||
'A' => ['text' => '自评时间', 'key' => 'create_time'],
|
||||
'B' => ['text' => '姓名', 'key' => 'realname'],
|
||||
@ -164,28 +190,54 @@ class Admin extends BaseController
|
||||
'I' => ['text' => '性别', 'key' => 'gender'],
|
||||
'J' => ['text' => '年龄', 'key' => 'age']
|
||||
];
|
||||
$fields = explode(',', 'A,B,C,D,E,F,G.H');
|
||||
foreach ($fields as $f) {
|
||||
$sheet->setCellValue($f . $rowNumber, $titles[$f]);
|
||||
$fields = explode(',', 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T');
|
||||
$titles = [
|
||||
'create_time' => '自评时间',
|
||||
'realname' => '姓名',
|
||||
'headache' => '头痛症状',
|
||||
'gastrointestinal' => '胃肠道症状',
|
||||
'tired' => '劳累或疲劳',
|
||||
'dizzy' => '头晕或眩晕',
|
||||
'score' => '总分',
|
||||
'resultType' => '评估结果',
|
||||
'gender' => '性别',
|
||||
'age' => '年龄',
|
||||
'height' => '年龄',
|
||||
'weight' => '体重',
|
||||
'address' => '久居地',
|
||||
'smoke' => '抽烟量',
|
||||
'drink' => '饮酒量',
|
||||
'is_first_to_tibet' => '首次进藏',
|
||||
'medical_history' => '既往病史',
|
||||
'result' => '评估结果'
|
||||
];
|
||||
|
||||
foreach ($downLoadFields as $index => $f) {
|
||||
$sheet->setCellValue($fields[$index] . $rowNumber,
|
||||
$titles[$f]);
|
||||
}
|
||||
foreach ($data->dataList as $item) {
|
||||
$rowNumber++;
|
||||
foreach ($fields as $f) {
|
||||
$sheet->setCellValue($f . $rowNumber, $item[$f]);
|
||||
foreach ($downLoadFields as $index => $f) {
|
||||
$sheet->setCellValue($fields[$index] . $rowNumber, $item[$f]);
|
||||
}
|
||||
}
|
||||
|
||||
$dataType = $this->request->get('format');
|
||||
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
||||
$filename = urlencode("评估记录_") . date('mdHi');
|
||||
$writer = new Csv($excel);
|
||||
if ($dataType == 'xlsx') {
|
||||
if ($dataType == 'csv') {
|
||||
$filename .= '.csv';
|
||||
} else {
|
||||
$writer = new Xlsx($excel);
|
||||
$filename .= '.xlsx';
|
||||
} else {
|
||||
$filename .= '.csv';
|
||||
}
|
||||
header('Content-Disposition: attachment;filename=' . $filename);
|
||||
$writer->save('php://output');
|
||||
|
||||
$sheet->disconnectCells();
|
||||
unset($sheet);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -9,8 +9,11 @@
|
||||
namespace app\middleware;
|
||||
|
||||
|
||||
use app\controller\Admin;
|
||||
use app\service\AdminService;
|
||||
use app\util\ErrorCode;
|
||||
use app\util\ErrorResponse;
|
||||
use think\facade\Config;
|
||||
use think\Request;
|
||||
|
||||
class AdminApiCheck
|
||||
@ -19,13 +22,20 @@ class AdminApiCheck
|
||||
public function handle(Request $request, \Closure $next)
|
||||
{
|
||||
$token = $request->param('token');//'wxaffadsf31Dfaf93';
|
||||
$loginExpired = Config::get("app.admin.expired", 1800);
|
||||
|
||||
if (empty($token)) {
|
||||
return ErrorResponse::createError(
|
||||
ErrorCode::ERROR_OPENID_REQUIRED, '缺失参数token'
|
||||
);
|
||||
}
|
||||
|
||||
$token = AdminService::queryToken($token,$loginExpired);
|
||||
if(empty($token)){
|
||||
return ErrorResponse::createError(
|
||||
ErrorCode::USER_NOT_LOGIN, 'user token not exists or not login'
|
||||
);
|
||||
}
|
||||
AdminService::updateToken($token,$loginExpired);
|
||||
//对于 admin -> token
|
||||
//对于 user -> open_id
|
||||
$response = $next($request);
|
||||
|
@ -40,8 +40,28 @@ class AdminService
|
||||
if (empty($token)) {
|
||||
return AdminToken::create($data);
|
||||
}
|
||||
$data['updated_at'] = date('Y-m-d H:i:s', time());
|
||||
return AdminToken::update($data, ['admin_id' => $adminInfo->id]);
|
||||
// $data['updated_at'] = date('Y-m-d H:i:s', time());
|
||||
|
||||
$token->db()
|
||||
->where('admin_id',$token->admin_id)
|
||||
->where('device_type',$token->device_type)
|
||||
->where('token',$token->token)
|
||||
->update($data);
|
||||
return AdminToken::find($data['token']);
|
||||
}
|
||||
}
|
||||
|
||||
public static function queryToken(string $token, int $expired = 1800)
|
||||
{
|
||||
return AdminToken::where('token', $token)
|
||||
->where('expired_at', '>', date('Y-m-d H:i:s', time()))->find();
|
||||
}
|
||||
|
||||
public static function updateToken(string $token, int $expired = 1800)
|
||||
{
|
||||
return AdminToken::update(
|
||||
['expired_at' => date('Y-m-d H:i:s', time() + $expired)],
|
||||
['token' => $token]
|
||||
);
|
||||
}
|
||||
}
|
@ -96,8 +96,20 @@ class EvaluationService
|
||||
const SortByTime = 'create_time';
|
||||
const SortByScore = 'score';
|
||||
|
||||
/**
|
||||
* @param int $result
|
||||
* @param string|null $username
|
||||
* @param string|null $sort
|
||||
* @param int $page
|
||||
* @param int $pageSize
|
||||
* @param null $fieldAll
|
||||
* @return ListCountData
|
||||
* @throws \think\db\exception\DataNotFoundException
|
||||
* @throws \think\db\exception\ModelNotFoundException
|
||||
* @throws \think\exception\DbException
|
||||
*/
|
||||
public static function search(int $result = self::ResultAll, string $username = null,
|
||||
string $sort = null, $page = 1, $pageSize = 20)
|
||||
string $sort = null, $page = 1, $pageSize = 20,$fieldAll = null)
|
||||
{
|
||||
if (empty($sort) || !in_array($sort, [self::SortByTime, self::SortByScore])) {
|
||||
$sort = self::SortByTime;
|
||||
@ -129,11 +141,18 @@ class EvaluationService
|
||||
if ($username) { // 名字模糊查询
|
||||
$model->whereLike('realname', "%{$username}%");
|
||||
}
|
||||
$dataArray = $model->limit(($page - 1) & $pageSize, $pageSize) // 分页
|
||||
->order('e.' . $sort, 'desc') // 排序
|
||||
->field('d.realname,e.*') // 查询字段
|
||||
if($pageSize > 0){
|
||||
$model->limit(($page - 1) * $pageSize, $pageSize); // 分页
|
||||
}
|
||||
$searchField = 'd.realname,e.*';
|
||||
if($fieldAll){
|
||||
// $searchField .= 'd.address,d.gender,d.age,d.height,d.weight,d.smoke,d.drink,d.is_first_to_tibet,d.medical_history';
|
||||
$searchField = 'd.*,e.*';
|
||||
}
|
||||
$dataArray = $model->order('e.' . $sort, 'desc') // 排序
|
||||
->field($searchField) // 查询字段
|
||||
->select()->toArray(); // 获取结果
|
||||
$count = $evaluation->count(); // 查询总页数
|
||||
$count = $model->limit(0,1)->count(); // 查询总页数
|
||||
|
||||
foreach ($dataArray as $k => $v) {
|
||||
$dataArray[$k] = array_merge($v, self::parseAdminEvaluation($v));
|
||||
@ -143,6 +162,11 @@ class EvaluationService
|
||||
// return EvaluationHistory
|
||||
}
|
||||
|
||||
public static function allCount()
|
||||
{
|
||||
return EvaluationHistory::count();
|
||||
}
|
||||
|
||||
private static function parseAdminEvaluation($item)
|
||||
{
|
||||
|
||||
|
@ -15,6 +15,7 @@ use app\util\ErrorCode;
|
||||
use app\util\ListCountData;
|
||||
use app\util\WechatUtil;
|
||||
use think\facade\Config;
|
||||
use think\facade\Log;
|
||||
|
||||
class UserService
|
||||
{
|
||||
@ -22,7 +23,8 @@ class UserService
|
||||
|
||||
|
||||
public static function search(
|
||||
int $isFirst = -1, int $gender = -1, int $province = -1, int $city = -1, string $name = null, int $page = 1, int $pageSize = 20
|
||||
int $isFirst = -1, int $gender = -1, int $province = -1,
|
||||
int $city = -1, string $name = null, int $page = 1, int $pageSize = 20
|
||||
)
|
||||
{
|
||||
$userDetail = new UserDetail();
|
||||
@ -51,15 +53,17 @@ class UserService
|
||||
//, ['name' => ""]
|
||||
$model->where("(u.nickname LIKE '%{$name}%' OR d.realname LIKE '%{$name}%')");
|
||||
}
|
||||
|
||||
$dataArray = $model->limit(($page - 1) & $pageSize, $pageSize)// 分页
|
||||
->field('u.nickname,u.open_id,u.avatarUrl,d.*')// 查询字段
|
||||
->select()->toArray(); // 获取结果
|
||||
$count = $userInfo->count(); // 查询总数
|
||||
$dataArray = $model->limit(($page - 1) * $pageSize, $pageSize)// 分页
|
||||
->field('u.nickname,u.open_id,u.avatarUrl,d.*')// 查询字段
|
||||
->select()->toArray(); // 获取结果
|
||||
$count = $model->limit(0,1)->count(); // 查询总数
|
||||
self::parseArray($dataArray);
|
||||
|
||||
return ListCountData::Create($count, $dataArray);
|
||||
}
|
||||
public function getSearchModel(){
|
||||
|
||||
}
|
||||
|
||||
private static function parseArray(&$dataArray)
|
||||
{
|
||||
@ -74,10 +78,10 @@ class UserService
|
||||
}
|
||||
}
|
||||
|
||||
private static function getDataFromArray(array $datas, array $keys)
|
||||
private static function getDataFromArray(array $data, array $keys)
|
||||
{
|
||||
foreach ($keys as $key => $v) {
|
||||
$keys[$key] = $datas[$v];
|
||||
$keys[$key] = $data[$v];
|
||||
}
|
||||
return $keys;
|
||||
}
|
||||
@ -108,7 +112,7 @@ class UserService
|
||||
if (empty($detail)) {
|
||||
$detail = UserDetail::create($data);
|
||||
} else {
|
||||
$detail = UserDetail::update($data, ['uid' => $userInfo->id]);
|
||||
$detail = UserDetail::update($data, ['uid' => $userInfo->id]);
|
||||
}
|
||||
return $detail;
|
||||
}
|
||||
|
@ -10,6 +10,10 @@ namespace app\util;
|
||||
|
||||
class ErrorCode
|
||||
{
|
||||
/**
|
||||
* 用户没有登录
|
||||
*/
|
||||
const USER_NOT_LOGIN = 401;
|
||||
/**
|
||||
* 参数不足
|
||||
*/
|
||||
@ -31,6 +35,7 @@ class ErrorCode
|
||||
* 原始密码不正确
|
||||
*/
|
||||
const ERROR_ADMIN_PWD_ERROR = 21010;
|
||||
const ADMIN_PWD_EQUAL = 21011;
|
||||
/**
|
||||
* 输入的密码不一致
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user