From cc045787ca0da3a51c495824b6ff299d82c96f1c Mon Sep 17 00:00:00 2001
From: tsf <460834639@qq.com>
Date: Fri, 14 Jun 2024 17:58:50 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E7=89=88=E5=90=8E=E5=8F=B0?=
=?UTF-8?q?=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
application/admin/controller/Card.php | 200 +++++++++-
application/admin/controller/Device.php | 207 ++++++++++
application/admin/controller/Login.php | 16 +-
.../admin/view/appversion/app_add.html | 90 ++---
application/admin/view/card/card_add.html | 218 +++++++++++
application/admin/view/card/card_edit.html | 232 +++++++++++
application/admin/view/card/index.html | 360 ++++++++++++++++++
application/admin/view/device/device_add.html | 223 +++++++++++
.../admin/view/device/device_edit.html | 238 ++++++++++++
application/admin/view/device/index.html | 360 ++++++++++++++++++
application/admin/view/index/index.html | 50 +--
application/admin/view/login/login.html | 6 +-
.../admin/view/member/member_list.html | 2 +-
application/admin/view/member/user_list.html | 6 +-
application/app/controller/Card.php | 54 +--
application/app/controller/Cardparts.php | 20 +-
application/app/controller/Index.php | 51 ++-
application/app/controller/Login.php | 2 +-
application/route.php | 19 +
public/card/1_1718264230.jpg | Bin 0 -> 25803 bytes
public/device/TYP999ASDFGTR56_1718357969.jpg | Bin 0 -> 29143 bytes
21 files changed, 2202 insertions(+), 152 deletions(-)
create mode 100644 application/admin/controller/Device.php
create mode 100644 application/admin/view/card/card_add.html
create mode 100644 application/admin/view/card/card_edit.html
create mode 100644 application/admin/view/card/index.html
create mode 100644 application/admin/view/device/device_add.html
create mode 100644 application/admin/view/device/device_edit.html
create mode 100644 application/admin/view/device/index.html
create mode 100644 public/card/1_1718264230.jpg
create mode 100644 public/device/TYP999ASDFGTR56_1718357969.jpg
diff --git a/application/admin/controller/Card.php b/application/admin/controller/Card.php
index 90ec5bf..f5bb5a6 100644
--- a/application/admin/controller/Card.php
+++ b/application/admin/controller/Card.php
@@ -8,8 +8,202 @@ use app\bj\controller\Common;
use think\Log;
use \think\Validate;
-class Card extends Controller{
- public function demo(){
- echo '你好';
+class Card extends Base{
+ protected $page_num = 10;
+ protected $file_max = 1024*1024*5;//xxxMB
+ public function index($page = 1){
+ $data = input();
+ $pd = true;
+ $parameter = [];
+ // $parameter['is_del'] = 0;
+ if(array_key_exists('tt', $data)){
+ $page = $data['page_num'];
+ unset($data['page_num']);
+ unset($data['tt']);
+ $pd = false;
+ // if($data['status_num'] === "0" || $data['status_num'] === "1"){
+ // $parameter['is_del'] = $data['status_num'];
+ // }
+
+ // if($data['tel']){
+ // $parameter['tel'] = $data['tel'];
+ // }
+ // if($data['email']){
+ // $parameter['email'] = $data['email'];
+ // }
+ // if($data['s_time']){
+ // $parameter['create_time'] = ['>=',$data['s_time']];
+ // }
+ // if($data['e_time']){
+ // $parameter['create_time'] = ['<=',$data['e_time']];
+ // }
+ }
+ $num = Db::table('app_card_data')->where($parameter)->count();
+ $result = Db::table('app_card_data')->where($parameter)->order('is_del,id desc')->page($page,$this->page_num)->select();
+ if(!$pd){
+ $result['num'] = $num;
+ $result['data'] = $result;
+ return $this->msg(0,'success',$result);
+ }
+ $this->assign([
+ 'result' => $result,
+ 'num' => $num,
+ ]);
+ return $this->fetch();
+ }
+ public function card_add(){
+ return $this->fetch();
+ }
+ public function card_add_action(){
+ $file = request()->file('upload_file_app');
+ $data = request()->param();
+ $num = Db::table('app_card_data')->where(['name'=>$data['card_name']])->count();
+
+ if($num > 0){
+ return $this->msg(10001,'卡片已存在');
+ }
+ if($file){
+ // 移动到框架应用根目录/public/uploads/ 目录下
+ $file_name_new = $data['card_name'].'_'.time().'.'.$data['file_extension'];
+ $info = $file->validate(['size'=>$this->file_max,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'card',$file_name_new);
+ if($info){
+ $result = Db::table('app_card_data')->insert([
+ 'name'=>$data['card_name'],
+ 'content'=>$data['content'],
+ 'create_time'=>date('Y-m-d H:i:s'),
+ 'pic'=>'http://tc.pcxbc.com/card/'.$file_name_new,
+ 'page_url_record'=>$data['page_url_record'],
+ 'page_url_report'=>$data['page_url_report'],
+ 'page_url_bluetooth'=>$data['page_url_bluetooth'],
+
+ ]);
+ if($result){
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ // 成功上传后 获取上传信息
+ // 输出 jpg
+ // echo $info->getExtension();
+ // // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getSaveName();
+ // // 输出 42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getFilename();
+ }else{
+ // 上传失败获取错误信息
+ return $this->msg(10001, $file->getError());
+ // echo $file->getError();
+ }
+ }else{
+ return $this->msg(10001, '文件缺失');
+ }
+
+ }
+ public function card_edit(){
+ $data = input();
+
+ $result = Db::table('app_card_data')->where(['id'=>$data['id']])->find();
+ // dump($result);
+ // die;
+ $this->assign([
+ 'result' => $result
+ ]);
+ return $this->fetch();
+ }
+ public function card_edit_action(){
+ $file = request()->file('upload_file_app');
+ $data = request()->param();
+ $check_data = Db::table('app_card_data')->where(['id'=>$data['id']])->find();
+ // dump($check_data);
+ // dump($data);
+ // die;
+ if(!$check_data){
+ return $this->msg(10001,'修改数据不存在');
+ }
+ if($file){
+ // 移动到框架应用根目录/public/uploads/ 目录下
+ $file_name_new = $data['card_name'].'_'.time().'.'.$data['file_extension'];
+ $info = $file->validate(['size'=>$this->file_max,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'card',$file_name_new);
+ if($info){
+ $result = Db::table('app_card_data')->where(['id'=>$data['id']])->update([
+ 'name'=>$data['card_name'],
+ 'content'=>$data['content'],
+ 'pic'=>'http://tc.pcxbc.com/card/'.$file_name_new,
+ 'page_url_record'=>$data['page_url_record'],
+ 'page_url_report'=>$data['page_url_report'],
+ 'page_url_bluetooth'=>$data['page_url_bluetooth'],
+
+ ]);
+
+ if($result){
+ $file_name = basename($check_data['pic']);
+ $filePath = ROOT_PATH . 'public' . DS . 'card' . DS . $file_name; // ROOT_PATH 是框架定义的根目录路径常量
+ if (file_exists($filePath)) {
+ if (unlink($filePath)) {
+ // 删除成功
+ // echo '文件删除成功!';
+ } else {
+ // 删除失败
+ // echo '文件删除失败!';
+ }
+ } else {
+ // 文件不存在
+ // echo '文件不存在!';
+ }
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ // 成功上传后 获取上传信息
+ // 输出 jpg
+ // echo $info->getExtension();
+ // // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getSaveName();
+ // // 输出 42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getFilename();
+ }else{
+ // 上传失败获取错误信息
+ return $this->msg(10001, $file->getError());
+ // echo $file->getError();
+ }
+ }else{
+ $result = Db::table('app_card_data')->where(['id'=>$data['id']])->update([
+ 'name'=>$data['card_name'],
+ 'content'=>$data['content'],
+ 'page_url_record'=>$data['page_url_record'],
+ 'page_url_report'=>$data['page_url_report'],
+ 'page_url_bluetooth'=>$data['page_url_bluetooth'],
+ ]);
+
+ if($result){
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ }
+
+ }
+
+ public function card_del(){
+ $data = input();
+ if(is_array($data['id'])){
+ $data['id'] = implode(',',$data['id']);
+ $result = Db::table('app_card_data')->where("id in (".$data['id'].")")->update(['is_del'=>$data['is_del']]);
+ }else{
+ $result = Db::table('app_card_data')->where(['id'=>$data['id']])->update(['is_del'=>$data['is_del']]);
+ }
+
+ if($result){
+ return $this->msg(0,'success');
+ }else{
+ return $this->msg(10001,'success');
+ }
+
+ // $num = Db::table('app_version_log')->where(['id'=>$data['id']])->update(['is_del'=>1]);
+ // if($num){
+ // return $this->msg([]);
+ // }else{
+ // return $this->msg(10002);
+ // }
}
}
\ No newline at end of file
diff --git a/application/admin/controller/Device.php b/application/admin/controller/Device.php
new file mode 100644
index 0000000..54afd02
--- /dev/null
+++ b/application/admin/controller/Device.php
@@ -0,0 +1,207 @@
+=',$data['s_time']];
+ // }
+ // if($data['e_time']){
+ // $parameter['create_time'] = ['<=',$data['e_time']];
+ // }
+ }
+ $num = Db::table('app_device_data')->where($parameter)->count();
+ $result = Db::table('app_device_data')->where($parameter)->order('is_del,id desc')->page($page,$this->page_num)->select();
+ if(!$pd){
+ $result['num'] = $num;
+ $result['data'] = $result;
+ return $this->msg(0,'success',$result);
+ }
+ $this->assign([
+ 'result' => $result,
+ 'num' => $num,
+ ]);
+ return $this->fetch();
+ }
+ public function device_add(){
+ return $this->fetch();
+ }
+ public function device_add_action(){
+ $file = request()->file('upload_file_app');
+ $data = request()->param();
+ $num = Db::table('app_device_data')->where(['name'=>$data['device_name'],'bluetooth_type'=>$data['bluetooth_type'],'device_model'=>$data['device_model']])->count();
+ if($num > 0){
+ return $this->msg(10001,'设备已存在');
+ }
+ if($file){
+ // 移动到框架应用根目录/public/uploads/ 目录下
+ $file_name_new = $data['device_model'].$data['bluetooth_type'].'_'.time().'.'.$data['file_extension'];
+ $info = $file->validate(['size'=>$this->file_max,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'device',$file_name_new);
+ if($info){
+ $result = Db::table('app_device_data')->insert([
+ 'name'=>$data['device_name'],
+ 'content'=>$data['content'],
+ 'create_time'=>date('Y-m-d H:i:s'),
+ 'pic'=>'http://tc.pcxbc.com/device/'.$file_name_new,
+ 'bluetooth_type'=>$data['bluetooth_type'],
+ 'device_model'=>$data['device_model'],
+ 'page_measure'=>$data['page_measure'],
+
+ ]);
+ if($result){
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ // 成功上传后 获取上传信息
+ // 输出 jpg
+ // echo $info->getExtension();
+ // // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getSaveName();
+ // // 输出 42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getFilename();
+ }else{
+ // 上传失败获取错误信息
+ return $this->msg(10001, $file->getError());
+ // echo $file->getError();
+ }
+ }else{
+ return $this->msg(10001, '文件缺失');
+ }
+
+ }
+ public function device_edit(){
+ $data = input();
+
+ $result = Db::table('app_device_data')->where(['id'=>$data['id']])->find();
+ // dump($result);
+ // die;
+ $this->assign([
+ 'result' => $result
+ ]);
+ return $this->fetch();
+ }
+ public function device_edit_action(){
+ $file = request()->file('upload_file_app');
+ $data = request()->param();
+ $check_data = Db::table('app_device_data')->where(['id'=>$data['id']])->find();
+ // dump($check_data);
+ // dump($data);
+ // die;
+ if(!$check_data){
+ return $this->msg(10001,'修改数据不存在');
+ }
+ if($file){
+ // 移动到框架应用根目录/public/uploads/ 目录下
+ $file_name_new = $data['device_model'].$data['bluetooth_type'].'_'.time().'.'.$data['file_extension'];
+ $info = $file->validate(['size'=>$this->file_max,'ext'=>'jpg,png,gif'])->move(ROOT_PATH . 'public' . DS . 'device',$file_name_new);
+ if($info){
+ $result = Db::table('app_device_data')->where(['id'=>$data['id']])->update([
+ 'name'=>$data['device_name'],
+ 'content'=>$data['content'],
+ 'pic'=>'http://tc.pcxbc.com/device/'.$file_name_new,
+ 'bluetooth_type'=>$data['bluetooth_type'],
+ 'device_model'=>$data['device_model'],
+ 'page_measure'=>$data['page_measure'],
+ ]);
+
+ if($result){
+ $file_name = basename($check_data['pic']);
+ $filePath = ROOT_PATH . 'public' . DS . 'device' . DS . $file_name; // ROOT_PATH 是框架定义的根目录路径常量
+ if (file_exists($filePath)) {
+ if (unlink($filePath)) {
+ // 删除成功
+ // echo '文件删除成功!';
+ } else {
+ // 删除失败
+ // echo '文件删除失败!';
+ }
+ } else {
+ // 文件不存在
+ // echo '文件不存在!';
+ }
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ // 成功上传后 获取上传信息
+ // 输出 jpg
+ // echo $info->getExtension();
+ // // 输出 20160820/42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getSaveName();
+ // // 输出 42a79759f284b767dfcb2a0197904287.jpg
+ // echo $info->getFilename();
+ }else{
+ // 上传失败获取错误信息
+ return $this->msg(10001, $file->getError());
+ // echo $file->getError();
+ }
+ }else{
+ $result = Db::table('app_device_data')->where(['id'=>$data['id']])->update([
+ 'name'=>$data['device_name'],
+ 'content'=>$data['content'],
+ 'bluetooth_type'=>$data['bluetooth_type'],
+ 'device_model'=>$data['device_model'],
+ 'page_measure'=>$data['page_measure'],
+ ]);
+
+ if($result){
+ return $this->msg([]);
+ }else{
+ return $this->msg(10002);
+ }
+ }
+
+ }
+
+ public function device_del(){
+ $data = input();
+ if(is_array($data['id'])){
+ $data['id'] = implode(',',$data['id']);
+ $result = Db::table('app_device_data')->where("id in (".$data['id'].")")->update(['is_del'=>$data['is_del']]);
+ }else{
+ $result = Db::table('app_device_data')->where(['id'=>$data['id']])->update(['is_del'=>$data['is_del']]);
+ }
+
+ if($result){
+ return $this->msg(0,'success');
+ }else{
+ return $this->msg(10001,'success');
+ }
+
+ // $num = Db::table('app_version_log')->where(['id'=>$data['id']])->update(['is_del'=>1]);
+ // if($num){
+ // return $this->msg([]);
+ // }else{
+ // return $this->msg(10002);
+ // }
+ }
+}
\ No newline at end of file
diff --git a/application/admin/controller/Login.php b/application/admin/controller/Login.php
index dcadaa4..c10ed9d 100644
--- a/application/admin/controller/Login.php
+++ b/application/admin/controller/Login.php
@@ -19,15 +19,23 @@ class Login extends Controller{
public function login_action(){
$data = input();
- $key_word1='教育';
- $key_word2='体测';
+ // $key_word1='教育';
+ // $key_word2='体测';
// $data['name'] = md5($key_word1.$data['name'].$key_word2)
+ // dump($data);
+ // die;
+ $result = Db::table('admin_user')->where(['user_name'=>$data['username'],'pass_word'=>$data['password']])->count();
- if($data['name'] == 'a' && md5($key_word1.$data['password'].$key_word2) == '871365cc2db43a8f2c7544798b36ed78'){
- return $this->msg(10000,'success');
+ if($result>0){
+ return $this->msg(0,'success');
}else{
return $this->msg(10001,'error');
}
+ // if($data['name'] == 'a' && md5($key_word1.$data['password'].$key_word2) == '871365cc2db43a8f2c7544798b36ed78'){
+ // return $this->msg(10000,'success');
+ // }else{
+ // return $this->msg(10001,'error');
+ // }
}
diff --git a/application/admin/view/appversion/app_add.html b/application/admin/view/appversion/app_add.html
index 2356295..6316f1f 100644
--- a/application/admin/view/appversion/app_add.html
+++ b/application/admin/view/appversion/app_add.html
@@ -56,9 +56,9 @@
@@ -105,54 +105,54 @@
}
});
- $('#add').click(function(){
+ function add_data(){
+ if(pd === false){
+ return
+ }
var formdata = new FormData();
formdata.append('apk',$('#upload_file_app')[0].files[0])
formdata.append('file_name',$('#file_name').val())
formdata.append('version_num','V'+$('#version_num').val())
formdata.append('version_num_original',$('#version_num').val())
formdata.append('content',$('#content').val())
- // return
- if(pd){
- load()
- pd = false
- console.log('进来了')
- $.ajax({
- url:"/appversion/app_add_action", //请求的url地址
- contentType:false,
- processData:false,
- async:true,//请求是否异步,默认为异步,这也是ajax重要特性
- data:formdata, //参数值
- type:"POST", //请求方式
- success:function(req){
- c_load()
- pd = true
- if(req.code == 0){
- layer.alert("增加成功", {icon: 6},function() {
- //关闭当前frame
- xadmin.close();
- // 可以对父窗口进行刷新
- xadmin.father_reload();
- });
- }else{
- layer.alert("增加失败", {icon: 6},function() {
- //关闭当前frame
- xadmin.close();
- // 可以对父窗口进行刷新
- xadmin.father_reload();
- });
- }
- //请求成功时处理
-
- console.log(req)
- },
- error:function(){
- //请求出错处理
- pd = true
+ load()
+ pd = false
+ console.log('进来了')
+ $.ajax({
+ url:"/appversion/app_add_action", //请求的url地址
+ contentType:false,
+ processData:false,
+ async:true,//请求是否异步,默认为异步,这也是ajax重要特性
+ data:formdata, //参数值
+ type:"POST", //请求方式
+ success:function(req){
+ c_load()
+ pd = true
+ if(req.code == 0){
+ layer.alert("增加成功", {icon: 6},function() {
+ //关闭当前frame
+ xadmin.close();
+ // 可以对父窗口进行刷新
+ xadmin.father_reload();
+ });
+ }else{
+ layer.alert("增加失败"+req.msg, {icon: 6},function() {
+ //关闭当前frame
+ xadmin.close();
+ // 可以对父窗口进行刷新
+ xadmin.father_reload();
+ });
}
- });
- }
- })
+ //请求成功时处理
+
+ console.log(req)
+ },
+ error:function(){
+ //请求出错处理
+ pd = true
+ }
+ });
+ }
layui.use(['form', 'layer','jquery'],function() {
@@ -185,6 +185,8 @@
//监听提交
form.on('submit(add)',function(data) {
//发异步,把数据提交给php
+ console.log(5689);
+ add_data()
return false;
});
diff --git a/application/admin/view/card/card_add.html b/application/admin/view/card/card_add.html
new file mode 100644
index 0000000..7de2f3d
--- /dev/null
+++ b/application/admin/view/card/card_add.html
@@ -0,0 +1,218 @@
+
+
+
+
+
+ app版本管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/card/card_edit.html b/application/admin/view/card/card_edit.html
new file mode 100644
index 0000000..d448a5c
--- /dev/null
+++ b/application/admin/view/card/card_edit.html
@@ -0,0 +1,232 @@
+
+
+
+
+
+ app版本管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/card/index.html b/application/admin/view/card/index.html
new file mode 100644
index 0000000..a50c68b
--- /dev/null
+++ b/application/admin/view/card/index.html
@@ -0,0 +1,360 @@
+
+
+
+
+ 所有卡片管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/device/device_add.html b/application/admin/view/device/device_add.html
new file mode 100644
index 0000000..05dbb72
--- /dev/null
+++ b/application/admin/view/device/device_add.html
@@ -0,0 +1,223 @@
+
+
+
+
+
+ 设备管理_add
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/device/device_edit.html b/application/admin/view/device/device_edit.html
new file mode 100644
index 0000000..d80b175
--- /dev/null
+++ b/application/admin/view/device/device_edit.html
@@ -0,0 +1,238 @@
+
+
+
+
+
+ 设备管理_edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/device/index.html b/application/admin/view/device/index.html
new file mode 100644
index 0000000..9f20b3c
--- /dev/null
+++ b/application/admin/view/device/index.html
@@ -0,0 +1,360 @@
+
+
+
+
+ 所有设备管理
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/application/admin/view/index/index.html b/application/admin/view/index/index.html
index 8362e03..affc984 100644
--- a/application/admin/view/index/index.html
+++ b/application/admin/view/index/index.html
@@ -52,14 +52,12 @@
-
+
+
+
+
+
+
diff --git a/application/admin/view/login/login.html b/application/admin/view/login/login.html
index b3f98cf..330faa7 100644
--- a/application/admin/view/login/login.html
+++ b/application/admin/view/login/login.html
@@ -46,15 +46,15 @@
url:"/admin/login_action", //请求的url地址
dataType:"json", //返回格式为json
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
- data:{"name":data.field.username,"password":data.field.password}, //参数值
+ data:{"username":data.field.username,"password":data.field.password}, //参数值
type:"POST", //请求方式
success:function(req){
//请求成功时处理
- if(req.code == 10000){
+ if(req.code == 0){
layer.msg('登录成功,准备跳转',function(){
location.href='/admin/index'
- });
+ },500);
}else{
layer.msg('登录失败',function(){
pd = true
diff --git a/application/admin/view/member/member_list.html b/application/admin/view/member/member_list.html
index 6dd9d20..f4a9eba 100644
--- a/application/admin/view/member/member_list.html
+++ b/application/admin/view/member/member_list.html
@@ -66,7 +66,7 @@
|
- ID |
+ 账号ID |
唯一token |
手机 |
邮箱 |
diff --git a/application/admin/view/member/user_list.html b/application/admin/view/member/user_list.html
index 4532186..6689ebb 100644
--- a/application/admin/view/member/user_list.html
+++ b/application/admin/view/member/user_list.html
@@ -40,7 +40,7 @@
-->
-
+
@@ -74,8 +74,8 @@
|
- ID |
- Aan_ID |
+ 角色ID |
+ 账号ID |
昵称 |
生日 |
性别 |
diff --git a/application/app/controller/Card.php b/application/app/controller/Card.php
index 6989e33..f810b6b 100644
--- a/application/app/controller/Card.php
+++ b/application/app/controller/Card.php
@@ -14,48 +14,44 @@ use app\app\controller\Skip;
class Card extends Base{
protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6'];
- // protected $db_name = ['2'=>'app_card_body_data','6'=>'app_card_skip_data'];
- // protected $db_content = [
- // '2'=>'height as v1,weight as v2,bmi as v3',
- // '6'=>'jump_num as v1,jump_time as v2,jump_kcal as v3'
- // ];
+
protected $age_limit = 16;
protected $unit_symbol = ['score'=>'分','height'=>'CM','weight'=>'公斤','bmi'=>'','fat_r'=>'%','fat_w'=>'kg','muscle'=>'%','muscleval'=>'kg','water'=>'kg','bone'=>'kg','protein'=>'%','proteinval'=>'kg','kcal'=>'kcal','visceral'=>'','sfr'=>'%',];
protected $unit_name = ['score'=>'身体得分','height'=>'身高','weight'=>'体重','bmi'=>'BMI','fat_r'=>'脂肪率','fat_w'=>'脂肪量','muscle'=>'肌肉率','muscleval'=>'肌肉量','water'=>'水分','bone'=>'骨重','protein'=>'蛋白率','proteinval'=>'蛋白量','kcal'=>'基础代谢','visceral'=>'内脏指数','sfr'=>'皮下脂肪','body_level'=>'肥胖等级','body_type'=>'身体类型'];
protected $bhw_list = [
'bmi'=>[
- ['min_val'=>'0','max_val'=>'','text'=>'消瘦','color'=>'#ffda69'],
- ['min_val'=>'','max_val'=>'','text'=>'正常','color'=>'#5ad06d'],
- ['min_val'=>'','max_val'=>'','text'=>'偏重','color'=>'#ffab00'],
- ['min_val'=>'','max_val'=>'50','text'=>'肥胖','color'=>'#ff5656'],
+ ['min_val'=>'0','max_val'=>'','text'=>'消瘦','color'=>'#FF5656'],
+ ['min_val'=>'','max_val'=>'','text'=>'正常','color'=>'#FFAB00'],
+ ['min_val'=>'','max_val'=>'','text'=>'偏重','color'=>'#5AD06D'],
+ ['min_val'=>'','max_val'=>'50','text'=>'肥胖','color'=>'#6492F6'],
],
'height'=>[
['min_val'=>'0','max_val'=>'','text'=>'矮','color'=>'#ff5656'],
['min_val'=>'','max_val'=>'','text'=>'偏矮','color'=>'#ffab00'],
- ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5ad06d'],
+ ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5AD06D'],
['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#6492f6'],
['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#3967d6'],
],
'weight'=>[
['min_val'=>'0','max_val'=>'','text'=>'低','color'=>'#ff5656'],
['min_val'=>'','max_val'=>'','text'=>'偏低','color'=>'#ffab00'],
- ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5ad06d'],
- ['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#ffab00'],
- ['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#ff5656'],
+ ['min_val'=>'','max_val'=>'','text'=>'标准','color'=>'#5AD06D'],
+ ['min_val'=>'','max_val'=>'','text'=>'偏高','color'=>'#6492F6'],
+ ['min_val'=>'','max_val'=>'','text'=>'高','color'=>'#3967D6'],
]
];
protected $standard_color = [
- 'fat_r'=>['偏低'=>'#FFAB00','标准'=>'#5AD06D','偏高'=>'#6492F6','高'=>'#3967D6'],
- 'fat_w'=>['偏低'=>'#FFAB00','标准'=>'#5AD06D','偏高'=>'#6492F6','高'=>'#3967D6'],
- 'muscle'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'muscleval'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'water'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'proteinval'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'bone'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'protein'=>['不足'=>'#FF5656','标准'=>'#5AD06D','优'=>'#3967D6'],
- 'kcal'=>['偏低'=>'#FF5656','优'=>'#3967D6'],
- 'visceral'=>['标准'=>'#5AD06D','警惕'=>'#FFAB00','危险'=>'#FF5656'],
- 'sfr'=>['不足'=>'#FF5656','标准'=>'#5AD06D','偏高'=>'#6492F6'],
+ 'fat_r'=>['偏低'=>'#FF5656','标准'=>'#FFAB00','偏高'=>'#5AD06D','高'=>'#6492F6'],
+ 'fat_w'=>['偏低'=>'#FF5656','标准'=>'#FFAB00','偏高'=>'#5AD06D','高'=>'#6492F6'],
+ 'muscle'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'muscleval'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'water'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'proteinval'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'bone'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'protein'=>['不足'=>'#FF5656','标准'=>'#FFAB00','优'=>'#5AD06D'],
+ 'kcal'=>['偏低'=>'#FF5656','优'=>'#5ad06d'],
+ 'visceral'=>['标准'=>'#5AD06D','警惕'=>'#6492F6','危险'=>'#3967D6'],
+ 'sfr'=>['不足'=>'#FF5656','标准'=>'#FFAB00','偏高'=>'#5AD06D'],
];
protected $result_end_data_mould = [
'name'=>'',
@@ -79,7 +75,7 @@ class Card extends Base{
// 详细卡片信息
// $data = ['id'=>'2']
- public function card_data_detailed($data=['aud_id'=>'26','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
+ public function card_data_detailed($data=['aud_id'=>'58','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
if(count(input('post.')) > 0){
$data = input('post.');
}
@@ -87,6 +83,7 @@ class Card extends Base{
if(!array_key_exists('aud_id', $data) || !array_key_exists('token', $data)){
return $this->msg(10001);
}
+ // cache($data['token'], time());
if($this->token_time_validate($data['token']) === false){
return $this->msg(20001);
}
@@ -116,7 +113,7 @@ class Card extends Base{
// 手动记录
// $data = ['id'=>'2','time'=>'1991-04-20 10:10:10','height'=>'15.1','weight'=>'75.1']
- public function card_manual_recording($data = ['aud_id'=>'61','time'=>'2024-06-06 10:10:15','height'=>'175','weight'=>'68','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
+ public function card_manual_recording($data = ['aud_id'=>'58','time'=>'2024-06-06 10:10:15','height'=>'175','weight'=>'68','token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
if(count(input('post.')) > 0){
$data = input('post.');
}else{
@@ -431,10 +428,11 @@ class Card extends Base{
$result_data['adc'] = array_key_exists('impedance', $data)?$data['impedance']:550;
$calculate_body_formula = new Calculatebody();
$get_body_value = $calculate_body_formula->calculate_body_data_result($result_data);
+ // dump($get_body_value);
$get_body_value['gender'] = $user_data['gender'];
$get_body_value['birthday'] = $user_data['birthday'];
$get_body_value = $this->hwb_standard($get_body_value);
- // dump($get_body_value);
+
// dump($get_body_value['脂肪率']);
// dump(implode(',',$get_body_value['脂肪率']));
// die;
@@ -489,6 +487,7 @@ class Card extends Base{
$linshi_data = [];
$month_num = $this->calculateAgeInMonthsWithPrecision($data['birthday'])*100;
+ // dump($month_num);
$gender_val = $data['gender'];
if($data['age'] < $this->age_limit){
foreach ($data as $key => $value) {
@@ -559,6 +558,7 @@ class Card extends Base{
$data['BMI2'] = $data['身高'].',无,无';
}
// dump($data);
+ // die;
return $data;
// dump($data);
}
diff --git a/application/app/controller/Cardparts.php b/application/app/controller/Cardparts.php
index d402970..ab9703f 100644
--- a/application/app/controller/Cardparts.php
+++ b/application/app/controller/Cardparts.php
@@ -12,7 +12,7 @@ use app\app\controller\Skip;
class Cardparts extends Base{
- protected $color = ['#FF5656','#FF5656','#5AD06D','#6492F6','#3967D6'];
+ protected $color = ['#FF5656','#FFAB00','#5AD06D','#6492F6','#3967D6'];
protected $parameter_aggregate_top = [
'weight'=>'反映和衡量一个人健康状况的重要标志之一',
'height'=>'人体纵向部分的长度,源于人体的纵向生长,受遗传因素的影响较大',
@@ -149,14 +149,14 @@ class Cardparts extends Base{
// 内脏指数
protected $visceral = [
'man'=>[
- ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#ff5656'],
- ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#ffab00'],
- ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'],
+ ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#5AD06D'],
+ ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#6492F6'],
+ ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#3967D6'],
],
'woman'=>[
- ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#ff5656'],
- ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#ffab00'],
- ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#5ad06d'],
+ ['min_val'=>'0','max_val'=>'9','text'=>'标准','color'=>'#5AD06D'],
+ ['min_val'=>'9','max_val'=>'14','text'=>'警惕','color'=>'#6492F6'],
+ ['min_val'=>'14','max_val'=>'50','text'=>'危险','color'=>'#3967D6'],
]
];
// 皮下脂肪
@@ -181,7 +181,8 @@ class Cardparts extends Base{
// 除 bcdiv(,,20)
// 计算部分内容的横线标准以及说明文字
public function conversion_interval($data){
-
+ // dump($data);
+ // die;
// $data['gender'] = $data['gender']==2?'woman':'man';
$gender = $data['gender']==2?'woman':'man';
$age = $data['age']['value'];
@@ -203,6 +204,7 @@ class Cardparts extends Base{
$temporary_arr['record_time'] = $date_temporary->format('Y年m月d日 H:i:s');
// dump($data);
// dump($temporary_arr);
+ // die;
// 处理格式(顶部)
foreach ($this->parameter_aggregate_top as $key => $value) {
$data[$key]['key_name'] = $key;
@@ -220,6 +222,8 @@ class Cardparts extends Base{
array_push($temporary_arr['bottom_list'],$data[$key]);
}
+ // dump($temporary_arr);
+ // die;
// 处理顶部list
foreach ($temporary_arr['top_list'] as $key => $value) {
if(count($temporary_arr['top_list'][$key]['list']) > 0){
diff --git a/application/app/controller/Index.php b/application/app/controller/Index.php
index 985dc3b..c3cd070 100644
--- a/application/app/controller/Index.php
+++ b/application/app/controller/Index.php
@@ -90,9 +90,9 @@ class Index extends Base{
if(!is_array($verify_result)){
return $this->msg(10001,$verify_result);
}
- $result = Db::table('app_user_data')->insert($verify_result);
+ $result = Db::table('app_user_data')->insertGetId($verify_result);
if($result){
- return $this->msg([]);
+ return $this->msg(['aud_id'=>$result]);
}else{
return $this->msg(10002);
}
@@ -176,7 +176,7 @@ class Index extends Base{
}
// 获取指定用户详细信息
- public function get_user_data_information($data = ['aud_id'=>26,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
+ public function get_user_data_information($data = ['aud_id'=>58,'token'=>'0dafb98a10995c98b5a33b7d59d986ca']){
if(count(input('post.')) > 0){
$data = input('post.');
}
@@ -247,15 +247,15 @@ class Index extends Base{
}
unset($user_card_list['ROW_NUMBER']);
$user_card_list['card_order'] = explode(',',$user_card_list['card_order']);
- $all_card_list = Db::table('app_card_data')->field('id,name')->select();
+ $all_card_list = Db::table('app_card_data')->field('id,name,pic')->select();
// dump($user_card_list);
// dump($all_card_list);
$result = ['user'=>[],'all'=>[]];
foreach ($all_card_list as $key => $value) {
if(in_array($value['id'],$user_card_list['card_order'])){
- $result['user'][array_search($value['id'], $user_card_list['card_order'])] = ['id'=>$value['id'],'name'=>$value['name']];
+ $result['user'][array_search($value['id'], $user_card_list['card_order'])] = ['id'=>$value['id'],'name'=>$value['name'],'pic'=>$value['pic']];
}else{
- array_push($result['all'],['id'=>$value['id'],'name'=>$value['name']]);
+ array_push($result['all'],['id'=>$value['id'],'name'=>$value['name'],'pic'=>$value['pic']]);
}
}
ksort($result['user']);
@@ -315,6 +315,18 @@ class Index extends Base{
}
}
+ // 获取卡片路径及卡片数组处理start
+ $card_all_data = Db::table('app_card_data')->field('id,page_url_record,page_url_report,page_url_bluetooth')->select();
+ $card_all_data_result = [];
+ foreach ($card_all_data as $key => $value) {
+ $card_all_data_result[$value['id']] = [
+ 'page_url_record'=>$value['page_url_record'],
+ 'page_url_report'=>$value['page_url_report'],
+ 'page_url_bluetooth'=>$value['page_url_bluetooth']
+ ];
+ }
+ // 获取卡片路径及卡片数组处理end
+
// dump($db_arr);
// die;
// 添加目标体重于当前体重差数据
@@ -342,6 +354,9 @@ class Index extends Base{
$temporary_arr['record_time'] = '';
$temporary_arr['card_name'] = $this->card_data[$value][0];
$temporary_arr['card_key'] = $this->card_data[$value][1];
+ $temporary_arr['page_url_record'] = $card_all_data_result[$value]['page_url_record'];
+ $temporary_arr['page_url_report'] = $card_all_data_result[$value]['page_url_report'];
+ $temporary_arr['page_url_bluetooth'] = $card_all_data_result[$value]['page_url_bluetooth'];
$temporary_arr['inside_data'] = [];
foreach ($this->card_data[$value][2] as $k => $v) {
array_push($temporary_arr['inside_data'],[
@@ -363,6 +378,9 @@ class Index extends Base{
$temporary_arr['acd_id'] = $value;
$temporary_arr['card_name'] = $this->card_data[$value][0];
$temporary_arr['card_key'] = $this->card_data[$value][1];
+ $temporary_arr['page_url_record'] = $card_all_data_result[$value]['page_url_record'];
+ $temporary_arr['page_url_report'] = $card_all_data_result[$value]['page_url_report'];
+ $temporary_arr['page_url_bluetooth'] = $card_all_data_result[$value]['page_url_bluetooth'];
$temporary_arr['inside_data'] = [];
if(array_key_exists($value,$db_arr)){
$temporary_arr['id'] = $db_arr[$value]['id'];
@@ -403,27 +421,6 @@ class Index extends Base{
}
array_push($result,$temporary_arr);
-
- // $temporary_arr['acd_id'] = $value['acd_id'];
- // $temporary_arr['record_time'] = $value['record_time'];
- // $temporary_arr['card_name'] = $this->card_data[$value['acd_id']][0];
- // $temporary_arr['card_key'] = $this->card_data[$value['acd_id']][1];
- // $temporary_arr['inside_data'] = [];
- // if(array_key_exists($value['acd_id'],$this->card_data)){
-
- // foreach ($this->card_data[$value['acd_id']][2] as $k => $v) {
- // $tem_arr_2 = explode(',', $db_arr[$key][$k."_data"]);
- // array_push($temporary_arr['inside_data'],[
- // 'key'=>$k,
- // 'name'=>$v[0],
- // 'value'=>$tem_arr_2[0],
- // 'unit'=>$v[1]!='无'?$v[1]:'',
- // 'standard'=>$tem_arr_2[1]!='无'?$tem_arr_2[1]:'',
- // 'color'=>$tem_arr_2[2]!='无'?$tem_arr_2[2]:''
- // ]);
- // }
- // }
- // array_push($result,$temporary_arr);
}
}
return [$result,$target_current];
diff --git a/application/app/controller/Login.php b/application/app/controller/Login.php
index 75ac8f3..9d3fd44 100644
--- a/application/app/controller/Login.php
+++ b/application/app/controller/Login.php
@@ -304,7 +304,7 @@ class Login extends Base{
public function check_code($data = 18530934717 , $code = 123456){
// 默认验证码正确
- // return true;
+ return true;
// dump($data);
// dump(cache($data));
// die;
diff --git a/application/route.php b/application/route.php
index c52e4c2..8f1c9b3 100644
--- a/application/route.php
+++ b/application/route.php
@@ -28,6 +28,25 @@ Route::post('/admin/login_action', 'admin/login/login_action');
Route::any('/admin/index', 'admin/index/index');
Route::any('/admin/welcome', 'admin/index/welcome');
+// APP账号角色管理
+Route::any('/member/member_list', 'admin/member/member_list');
+Route::any('/member/user_list', 'admin/member/user_list');
+
+// 卡片管理
+Route::any('/card/index', 'admin/card/index');
+Route::any('/card/card_add', 'admin/card/card_add');
+Route::any('/card/card_add_action', 'admin/card/card_add_action');
+Route::any('/card/card_edit', 'admin/card/card_edit');
+Route::any('/card/card_edit_action', 'admin/card/card_edit_action');
+Route::any('/card/card_del', 'admin/card/card_del');
+// Route::any('/appversion/app_add_action', 'admin/appversion/app_add_action');
+// 设备管理
+Route::any('/device/index', 'admin/device/index');
+Route::any('/device/device_add', 'admin/device/device_add');
+Route::any('/device/device_add_action', 'admin/device/device_add_action');
+Route::any('/device/device_edit', 'admin/device/device_edit');
+Route::any('/device/device_edit_action', 'admin/device/device_edit_action');
+Route::any('/device/device_del', 'admin/device/device_del');
// APP版本管理
Route::any('/appversion/index', 'admin/appversion/index');
Route::any('/appversion/app_add', 'admin/appversion/app_add');
diff --git a/public/card/1_1718264230.jpg b/public/card/1_1718264230.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..cac00d1fbce24bdd45dc039940a180132d1bc28f
GIT binary patch
literal 25803
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