Browse Source

本地保留登录用户数据

shanmulinxi 2 years ago
parent
commit
03d1dd2874

+ 1 - 8
app/src/main/java/com/sunwin/visitorapp/BaseApplication.java

@@ -36,14 +36,7 @@ public class BaseApplication extends Application {
 
         CacheUtil.init(this);
 
-        List<UserManagerModel> userManagerModelList = DatabaseManager.getInstance().getQueryAll(UserManagerModel.class);
-        if(userManagerModelList.isEmpty()){
-            UserManagerModel userManagerModel = new UserManagerModel();
-            userManagerModel.name = "admin";
-            userManagerModel.account = "admin";
-            userManagerModel.password = "123456";
-            DatabaseManager.getInstance().insertNew(userManagerModel);
-        }
+        UserManagerModel.EmptyInit();
 //        OrmDBHelper.init(this);
 //        PresentationManager.checkAndShow(this);
     }

+ 0 - 1
app/src/main/java/com/sunwin/visitorapp/SplashActivity.java

@@ -58,7 +58,6 @@ public class SplashActivity extends AppCompatActivity {
         authApi = new AuthApi();
         initData();
         myHandler.sendEmptyMessageDelayed(0, 500);
-
         PullDataService.enqueueWork(this, new Intent());
     }
 

+ 21 - 0
app/src/main/java/com/sunwin/visitorapp/activity/HomeAc.java

@@ -79,14 +79,27 @@ public class HomeAc extends BaseActivity implements View.OnClickListener, RegTyp
         Intent intent = null;
         switch (view.getId()) {
             case R.id.MenuItemRecord://记录
+
+                if(!RunDataManage.CanVisitorRecord()) {
+                    ToastUtils.showToast(R.string.no_permission);
+                    return;
+                }
                 startActivity(new Intent(mContext, VisitLogActivity.class));
                 break;
             case R.id.MenuItemSign://签到
+                if(!RunDataManage.CanVisitorSignIn()) {
+                    ToastUtils.showToast(R.string.no_permission);
+                    return;
+                }
                 showHome(false);
                 updateTitle("访客签到");
                 replaceFragment(VisitSignFragment.newInstance(1));
                 break;
             case R.id.MenuItemRegister://登记
+                if(!RunDataManage.CanVisitorRegister()) {
+                    ToastUtils.showToast(R.string.no_permission);
+                    return;
+                }
                 showHome(false);
                 updateTitle("访客登记");
                 replaceFragment(RegTypeFragment.newInstance(this));
@@ -95,11 +108,19 @@ public class HomeAc extends BaseActivity implements View.OnClickListener, RegTyp
 //                startActivity(intent);
                 break;
             case R.id.MenuItemLeave://签离
+                if(!RunDataManage.CanVisitorSignOut()) {
+                    ToastUtils.showToast(R.string.no_permission);
+                    return;
+                }
                 showHome(false);
                 updateTitle("访客签离");
                 replaceFragment(VisitSignFragment.newInstance(2));
                 break;
             case R.id.MenuItemCheck://核验
+                if(!RunDataManage.CanVisitorCheck()) {
+                    ToastUtils.showToast(R.string.no_permission);
+                    return;
+                }
                 ToastUtils.showToast("开发中...");
                 break;
             case R.id.ImageSetting:

+ 25 - 2
app/src/main/java/com/sunwin/visitorapp/db/UserManagerModel.java

@@ -5,15 +5,38 @@ import com.litesuits.orm.db.annotation.PrimaryKey;
 import com.litesuits.orm.db.annotation.Table;
 import com.litesuits.orm.db.enums.AssignType;
 
+import java.util.List;
+
 @Table("UserManager")
 public class UserManagerModel {
 
+    public static void EmptyInit(){
+        List<UserManagerModel> userManagerModelList = DatabaseManager.getInstance().getQueryAll(UserManagerModel.class);
+        if(userManagerModelList.isEmpty()){
+            RoleModel roleModel = new RoleModel();
+            roleModel.name = "admin";
+            roleModel.p_visitor_register = true;
+            roleModel.p_visitor_check = true;
+            roleModel.p_visitor_sign_out = true;
+            roleModel.p_visitor_sign_in = true;
+            roleModel.p_visitor_record = true;
+            roleModel.p_black_user = true;
+            long roleId=  DatabaseManager.getInstance().insertNew(roleModel);
+            UserManagerModel userManagerModel = new UserManagerModel();
+            userManagerModel.name = "admin";
+            userManagerModel.account = "admin";
+            userManagerModel.password = "123456";
+            userManagerModel.role_id = roleId;
+            DatabaseManager.getInstance().insertNew(userManagerModel);
+        }
+    }
+
     public static final String Key_account = "account";
 
     public static final String Key_password = "password";
     // 指定自增,每个对象需要有一个主键
     @PrimaryKey(AssignType.AUTO_INCREMENT)
-    private long id;
+    public long id;
 
     @Column(Key_account)
     public String account;
@@ -25,7 +48,7 @@ public class UserManagerModel {
 
     public int status = 1;
 
-    public int role_id;
+    public long role_id;
 
     public long last_login_time;
 

+ 4 - 0
app/src/main/java/com/sunwin/visitorapp/fragment/RoleManageFr.java

@@ -29,6 +29,7 @@ import com.sunwin.visitorapp.db.BlackUserModel;
 import com.sunwin.visitorapp.db.DatabaseManager;
 import com.sunwin.visitorapp.db.RoleModel;
 import com.sunwin.visitorapp.db.UserManagerModel;
+import com.sunwin.visitorapp.manage.RunDataManage;
 import com.sunwin.visitorapp.utils.FileUtil;
 import com.sunwin.visitorapp.utils.ToastUtils;
 
@@ -127,6 +128,9 @@ public class RoleManageFr extends Fragment {
             model.p_visitor_sign_in = CheckVisitorSignIn.isChecked();
             model.p_visitor_sign_out = CheckVisitorSignOut.isChecked();
             DatabaseManager.getInstance().save(model);
+            if(RunDataManage.GetLoginRole()!=null&&RunDataManage.GetLoginRole().id==model.id){
+                RunDataManage.RefreshLoginUser();
+            }
             refreshData();
             dialog.dismiss();
         });

+ 6 - 2
app/src/main/java/com/sunwin/visitorapp/fragment/UserManageFr.java

@@ -36,6 +36,7 @@ import com.sunwin.visitorapp.adapter.BaseViewHolder;
 import com.sunwin.visitorapp.db.DatabaseManager;
 import com.sunwin.visitorapp.db.RoleModel;
 import com.sunwin.visitorapp.db.UserManagerModel;
+import com.sunwin.visitorapp.manage.RunDataManage;
 import com.sunwin.visitorapp.utils.GsonUtil;
 import com.sunwin.visitorapp.utils.TimeUtils;
 import com.sunwin.visitorapp.utils.ToastUtils;
@@ -229,14 +230,17 @@ public class UserManageFr extends Fragment {
             model.account = EditAccount.getText().toString().trim();
             model.name = EditName.getText().toString().trim();
             model.password = EditPassword.getText().toString().trim();
-            if( TextRole.getTag()!=null)model.role_id = (int) TextRole.getTag();
+            if( TextRole.getTag()!=null)model.role_id = (long) TextRole.getTag();
             if( TextStatus.getTag()!=null)model.status = (int) TextStatus.getTag();
             if( TextValidTime.getTag()!=null)model.valid_time = (long) TextValidTime.getTag();
 
 //            model.status = TextView.getSelectedItemPosition();
 //            model.valid_time = TextValidTime.getText().toString().trim();
             Timber.e(GsonUtil.toJson(model));
-            DatabaseManager.getInstance().insert(model);
+            DatabaseManager.getInstance().save(model);
+            if(RunDataManage.GetLoginUser()!=null&&RunDataManage.GetLoginUser().id==model.id){
+                RunDataManage.RefreshLoginUser();
+            }
             refreshData();
             dialog.dismiss();
         });

+ 51 - 1
app/src/main/java/com/sunwin/visitorapp/manage/RunDataManage.java

@@ -1,19 +1,69 @@
 package com.sunwin.visitorapp.manage;
 
+import com.sunwin.visitorapp.db.DatabaseManager;
+import com.sunwin.visitorapp.db.RoleModel;
 import com.sunwin.visitorapp.db.UserManagerModel;
 import com.sunwin.visitorapp.model.UserModel;
+import com.sunwin.visitorapp.utils.GsonUtil;
+import com.sunwin.visitorapp.utils.SharePrefenceUtils;
 
 public class RunDataManage {
+    private static  String Key_loginUser = "Key_loginUser";
     private static UserManagerModel loginUser;
+    private static RoleModel roleModel;
 
 
+    public static void RefreshLoginUser(){
 
+        roleModel = null;
+        if(loginUser==null)return;
+        loginUser = DatabaseManager.getInstance().getQueryById(UserManagerModel.class,loginUser.id);
+    }
     public static void SetLoginUser(UserManagerModel loginUser){
-
+        SharePrefenceUtils.putString(Key_loginUser,GsonUtil.toJson(loginUser));
+        RunDataManage.loginUser = loginUser;
     }
 
     public static UserManagerModel GetLoginUser(){
+        if(loginUser==null){
+            String value = SharePrefenceUtils.getString(Key_loginUser,null);
+            loginUser = GsonUtil.getObject(value,UserManagerModel.class);
+        }
         return loginUser;
     }
 
+
+    public static synchronized RoleModel GetLoginRole(){
+        if(GetLoginUser()==null)return roleModel;
+        if(roleModel == null){
+            roleModel = DatabaseManager.getInstance().getQueryById(RoleModel.class,GetLoginUser().role_id);
+        }
+        return roleModel;
+    }
+
+    public static boolean CanVisitorCheck(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_visitor_check;
+    }
+    public static boolean CanBlackList(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_black_user;
+    }
+    public static boolean CanVisitorRecord(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_visitor_record;
+    }
+    public static boolean CanVisitorSignIn(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_visitor_sign_in;
+    }
+    public static boolean CanVisitorSignOut(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_visitor_sign_out;
+    }
+    public static boolean CanVisitorRegister(){
+        if(GetLoginRole()==null)return false;
+        return GetLoginRole().p_visitor_register;
+    }
+
 }

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -9,4 +9,5 @@
     <string name="have_readed_id_card">身份证已经读取完成,请收回身份证</string>
     <string name="veriface_hint">请正对屏幕</string>
     <string name="usb_unauthorized">usb未授权</string>
+    <string name="no_permission">无权限</string>
 </resources>