diff --git a/app/libs/processor.jar b/app/libs/processor.jar index adae491..ceefe7e 100644 Binary files a/app/libs/processor.jar and b/app/libs/processor.jar differ diff --git a/app/src/main/java/com/shunzhi/parent/AppConfig.java b/app/src/main/java/com/shunzhi/parent/AppConfig.java index cd91d07..8c0cb05 100644 --- a/app/src/main/java/com/shunzhi/parent/AppConfig.java +++ b/app/src/main/java/com/shunzhi/parent/AppConfig.java @@ -39,17 +39,17 @@ public class AppConfig { public static String APP_IS_START = "app_is_start"; //测试 - public static String BASE_URL="http://60.190.202.57:1000/"; - public static String BASE_URL_ORDER="http://60.190.202.57:8101/"; - public static String BASE_URL_FILE="http://60.190.202.57:8196"; - public static String BASE_URL_VOTE = "http://60.190.202.57:8812/"; +// public static String BASE_URL="http://60.190.202.57:1000/"; +// public static String BASE_URL_ORDER="http://60.190.202.57:8101/"; +// public static String BASE_URL_FILE="http://60.190.202.57:8196"; +// public static String BASE_URL_VOTE = "http://60.190.202.57:8812/"; //正式 -// public static String BASE_URL = "http://campus.myjxt.com/"; -// public static String BASE_URL_ORDER = "http://parent.myjxt.com/"; -// public static String BASE_URL_FILE = "http://manage.myjxt.com"; -// public static String BASE_URL_VOTE = "www.sxspy.net/"; + public static String BASE_URL = "http://campus.myjxt.com/"; + public static String BASE_URL_ORDER = "http://parent.myjxt.com/"; + public static String BASE_URL_FILE = "http://manage.myjxt.com"; + public static String BASE_URL_VOTE = "www.sxspy.net/"; // public static final String url_version = BASE_URL + "api/Common/AppVersion?appType=3"; diff --git a/app/src/main/java/com/shunzhi/parent/db/DBHelper.java b/app/src/main/java/com/shunzhi/parent/db/DBHelper.java new file mode 100644 index 0000000..7fa7938 --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/db/DBHelper.java @@ -0,0 +1,43 @@ +package com.shunzhi.parent.db; + +import android.content.Context; +import android.database.DatabaseErrorHandler; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; + +/** + * Created by ToaHanDong on 2018/4/23. + */ + +public class DBHelper extends SQLiteOpenHelper { + + public final int VERSION=1; + + public DBHelper(Context context, String name) { + super(context, name, null, 2); + } + + public DBHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) { + super(context, name, factory, version, errorHandler); + } + + @Override + public void onCreate(SQLiteDatabase sqLiteDatabase) { + DBMessageController.createSongTable(sqLiteDatabase); + } + /** + * + * @param sqLiteDatabase 数据库对象 + * @param i 数据库旧版本 + * @param i1 数据库新版本 + */ + @Override + public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { + if (i1==2){ + sqLiteDatabase.execSQL(DBMessageController.TEMP_SQL);//先把原来的表重命名 + sqLiteDatabase.execSQL(DBMessageController.sqlVersion2);//创建新表 + sqLiteDatabase.execSQL(DBMessageController.COPY_SQL);//导入数据 + sqLiteDatabase.execSQL(DBMessageController.DROP_SQL);//删除备份的数据库 + } + } +} diff --git a/app/src/main/java/com/shunzhi/parent/db/DBMessageController.java b/app/src/main/java/com/shunzhi/parent/db/DBMessageController.java new file mode 100644 index 0000000..586f49f --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/db/DBMessageController.java @@ -0,0 +1,146 @@ +package com.shunzhi.parent.db; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by ToaHanDong on 2018/4/23. + */ + +public class DBMessageController { + + public static DBMessageController dbMessageController = null; + + public static DBMessageController getInstance(Context context) { + + if (null == dbMessageController) { + synchronized (DBMessageController.class) { + if (null == dbMessageController) + dbMessageController = new DBMessageController(context, false); + } + } + return dbMessageController; + } + + + private Context context; + private SQLiteDatabase database; + + public static final String DATABASE = "message.db"; + + public static final String TABLE_MESSAGE = "message";//表名 + public static final String TABLE_TEMP="temp";//备份的表 + + public static String TEMP_SQL= "alter table "+TABLE_MESSAGE+" rename to "+TABLE_TEMP; + public static String COPY_SQL="insert into "+TABLE_MESSAGE+" select * ,' ' from "+TABLE_TEMP; + public static String DROP_SQL="drop table "+TABLE_TEMP; + + public static String sqlVersion2="create table if not exists " + DBMessageController.TABLE_MESSAGE + "(" + + DBMessageController.MESSAGE_ID + " integer primary key autoincrement," + + DBMessageController.MESSAGE_TITLE + " text unique," + + DBMessageController.MESSAGE_MSGID + " text," + + DBMessageController.MESSAGE_USERID + " text," + + DBMessageController.MESSAGE_TYPE + " integer," + + DBMessageController.MESSAGE_DATE+" text,"+ + DBMessageController.MESSAGE_ISREAD + " text)"; + + public static final String MESSAGE_ID = "_id"; //主键 + public static final String MESSAGE_TITLE = "title"; //内容 + public static final String MESSAGE_USERID = "userid"; //用户的唯一标识 + public static final String MESSAGE_TYPE = "type"; //消息类型 + public static final String MESSAGE_ISREAD = "isread";//判断消息是否为已读 + public static final String MESSAGE_MSGID = "msgid";//判断消息是否为已读 + public static final String MESSAGE_DATE="date";//日期 + + static void createSongTable(SQLiteDatabase db) { + String sql = "create table if not exists " + DBMessageController.TABLE_MESSAGE + "(" + + DBMessageController.MESSAGE_ID + " integer primary key autoincrement," + + DBMessageController.MESSAGE_TITLE + " text unique," + + DBMessageController.MESSAGE_MSGID + " text," + + DBMessageController.MESSAGE_USERID + " text," + + DBMessageController.MESSAGE_TYPE + " integer," + + DBMessageController.MESSAGE_ISREAD + " text)"; + db.execSQL(sql); + } + + /** + * 在使用结束时应调用{@link #()}关闭数据库连接 + */ + public DBMessageController(Context context, boolean writable) { + DBHelper helper = new DBHelper(context, DATABASE); + if (writable) { + this.database = helper.getWritableDatabase(); + } else { + this.database = helper.getReadableDatabase(); + } + this.context = context; + } + + public void close() { + if (database.isOpen()) { + database.close(); + } + } + + public long addMessages(Messages messages) { + + ContentValues contentValues = new ContentValues(); + contentValues.put(DBMessageController.MESSAGE_TITLE, messages.title); + contentValues.put(DBMessageController.MESSAGE_TYPE, messages.type); + contentValues.put(DBMessageController.MESSAGE_USERID, messages.userid); + contentValues.put(DBMessageController.MESSAGE_ISREAD, messages.isRead); + contentValues.put(DBMessageController.MESSAGE_MSGID, messages.msgId); + contentValues.put(DBMessageController.MESSAGE_DATE,messages.date); + return database.insert(DBMessageController.TABLE_MESSAGE, null, contentValues); + } + + + public int getMessagesCounts(String type) { + String sql = "select * from " + TABLE_MESSAGE + "where type = ?"; + Cursor cursor = database.rawQuery(sql, new String[]{type}); + return cursor.getCount(); + } + + public int getMessagesCountsAllNoRead() { + String sql = "select * from " + TABLE_MESSAGE + " where isRead = ?"; + Cursor cursor = database.rawQuery(sql, new String[]{"false"}); + return cursor.getCount(); + } + + public void setMeaasgesRead() { + + ContentValues contentValues = new ContentValues(); + contentValues.put(MESSAGE_ISREAD, "true"); + + String whereClause="isRead = ?"; + + String[] whereArgs = new String[]{"false"}; + + database.update(TABLE_MESSAGE, contentValues, whereClause, whereArgs); + + + } + + public List getAllMessages() { + + String sql = "select * from " + TABLE_MESSAGE; + + Cursor cursor = database.rawQuery(sql, null); + + List messagesList = new ArrayList<>(); + + while (cursor.moveToNext()) { + Messages messages = new Messages(); + messages.type = cursor.getInt(cursor.getColumnIndex(MESSAGE_TYPE)); + messages.title = cursor.getString(cursor.getColumnIndex(MESSAGE_TITLE)); + messages.date=cursor.getString(cursor.getColumnIndex(MESSAGE_DATE)); + messagesList.add(messages); + } + return messagesList; + } +} diff --git a/app/src/main/java/com/shunzhi/parent/db/Messages.java b/app/src/main/java/com/shunzhi/parent/db/Messages.java new file mode 100644 index 0000000..c735f90 --- /dev/null +++ b/app/src/main/java/com/shunzhi/parent/db/Messages.java @@ -0,0 +1,33 @@ +package com.shunzhi.parent.db; + +/** + * Created by ToaHanDong on 2018/4/23. + */ + +public class Messages { + + public int id; + + public String title; + + public String userid; + + public int type;//0:作业 1:考勤 2:请假 + + public String msgId; + + public String isRead;//标识是否已读 + + public String date;//收到通知消息的事件 + + @Override + public String toString() { + return "Messages{" + + "id=" + id + + ", title='" + title + '\'' + + ", userid='" + userid + '\'' + + ", type='" + type + '\'' + + ", msgId='" + msgId + '\'' + + '}'; + } +} diff --git a/app/src/main/java/com/shunzhi/parent/manager/MessageManager.java b/app/src/main/java/com/shunzhi/parent/manager/MessageManager.java index d6b6840..91bd356 100644 --- a/app/src/main/java/com/shunzhi/parent/manager/MessageManager.java +++ b/app/src/main/java/com/shunzhi/parent/manager/MessageManager.java @@ -19,6 +19,7 @@ import com.netease.nimlib.sdk.auth.LoginInfo; import com.netease.nimlib.sdk.msg.MsgServiceObserve; import com.netease.nimlib.sdk.msg.model.CustomNotification; import com.netease.nimlib.sdk.msg.model.IMMessage; +import com.share.mvpsdk.utils.DateUtils; import com.share.mvpsdk.utils.ToastUtils; import com.shunzhi.parent.AppConfig; import com.shunzhi.parent.AppContext; @@ -27,6 +28,8 @@ import com.shunzhi.parent.bean.NIMLoginResultBean; import com.shunzhi.parent.bean.message.PHMessage; import com.shunzhi.parent.bean.message.PHMessageDao; import com.shunzhi.parent.bean.message.PHMessageSession; +import com.shunzhi.parent.db.DBMessageController; +import com.shunzhi.parent.db.Messages; import com.shunzhi.parent.ui.MainActivity; import com.shunzhi.parent.ui.activity.LoginAndRegistActivity; import com.shunzhi.parent.ui.service.BadgeIntentService; @@ -61,14 +64,14 @@ public class MessageManager { private Observer> messageObserver = new Observer>() { @Override public void onEvent(List imMessages) { - Log.d("77777","IMMessage="+imMessages.toString()); +// Log.d("77777", "IMMessage=" + imMessages.toString()); onMessageReceive(imMessages); } }; private Observer customNotificationObserver = new Observer() { @Override public void onEvent(CustomNotification customNotification) { - Log.d("77777","customNotification="+customNotification.getContent()); +// Log.d("77777", "customNotification=" + customNotification.getContent()); onCustomNotificationReceive(customNotification); } }; @@ -107,6 +110,38 @@ public class MessageManager { String uuid = json.optString("msgId"); Timber.d("onCustomNotificationReceive%s", "json=" + json.toString()); if ("homework".equals(type)) { + Messages messages = new Messages(); + messages.msgId = uuid; + messages.title = json.optString("title"); + messages.type = 0; + messages.userid = json.optString("userid"); + messages.isRead="false"; + messages.date= DateUtils.dateFormat(new Date(),"yyyy年MM月dd日"); + notifyNotification(uuid, DBMessageController.getInstance(AppContext.getContext()).addMessages(messages), "收到一条作业通知"); + } else if ("attend".equals(type)) { + Messages messages = new Messages(); + messages.msgId = uuid; + messages.title = json.optString("title"); + messages.type = 1; + messages.userid = json.optString("userid"); + messages.isRead="false"; + messages.date= DateUtils.dateFormat(new Date(),"yyyy年MM月dd日"); + notifyNotification(uuid, DBMessageController.getInstance(AppContext.getContext()).addMessages(messages), "收到一条考勤通知"); + } + } catch (JSONException e) { + e.printStackTrace(); + } + } + + /*private void onCustomNotificationReceive(CustomNotification customNotification) { + Timber.d("sss-==" + customNotification.getContent()); + try { + JSONObject json = new JSONObject(customNotification.getContent()); + Timber.d("sss-==" + json.toString()); + String type = json.optString("type"); + String uuid = json.optString("msgId"); + Timber.d("onCustomNotificationReceive%s", "json=" + json.toString()); + if ("homework".equals(type)) { PHMessageSession session = PHMessageSession.findAndCreateSession(PHMessageSession.sessionType_homework, true); session.setSessionName("作业通知"); session.setDate(new Date(customNotification.getTime())); @@ -144,13 +179,14 @@ public class MessageManager { } catch (JSONException e) { e.printStackTrace(); } - } + }*/ public void notifyNotification(String uuid, long msgLongId, String text) { if (!isNotiNotification) { - return; +// return; } - int notificationCount = (int) PHMessage.findUnreadNotificationCount();//XSTMessage.findUnreadNotificationCount(); +// int notificationCount = (int) PHMessage.findUnreadNotificationCount();//XSTMessage.findUnreadNotificationCount(); + int notificationCount=DBMessageController.getInstance(AppContext.getContext()).getMessagesCountsAllNoRead(); boolean setBadgerSuccessful = ShortcutBadger.applyCount(AppContext.getInstance(), notificationCount); Timber.i("----== notificationCount : %s ,setBadgerSuccessful : %s", notificationCount, setBadgerSuccessful); if (!setBadgerSuccessful) { diff --git a/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java b/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java index 1c2bafd..050b9ca 100644 --- a/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java +++ b/app/src/main/java/com/shunzhi/parent/presenter/loginandregister/LoginAndRegisterPresenter.java @@ -157,6 +157,7 @@ public class LoginAndRegisterPresenter extends LoginAndRegisterContract.LoginPre mRxManager.register(mIModel.getUserInfo(mobile, school_id, captcha).subscribe(new Consumer() { @Override public void accept(UserInfo userInfo) throws Exception { + Log.d("77777","userInfo="+userInfo); if (userInfo != null) { CurrentBean currentBean = userInfo.getData(); AppConfig.getAppConfig(AppContext.getInstance()).set(AppConfig.LOGIN_NAME, currentBean.getMobile()); diff --git a/app/src/main/java/com/shunzhi/parent/ui/activity/message/MesageActivity.java b/app/src/main/java/com/shunzhi/parent/ui/activity/message/MesageActivity.java index 445c3a1..1b5f418 100644 --- a/app/src/main/java/com/shunzhi/parent/ui/activity/message/MesageActivity.java +++ b/app/src/main/java/com/shunzhi/parent/ui/activity/message/MesageActivity.java @@ -1,8 +1,13 @@ package com.shunzhi.parent.ui.activity.message; +import android.graphics.Color; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.text.SpannableString; +import android.text.Spanned; +import android.text.SpannedString; +import android.text.style.ForegroundColorSpan; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -16,6 +21,8 @@ import com.share.mvpsdk.utils.DateUtils; import com.shunzhi.parent.AppContext; import com.shunzhi.parent.R; import com.shunzhi.parent.bean.message.PHMessage; +import com.shunzhi.parent.db.DBMessageController; +import com.shunzhi.parent.db.Messages; import java.util.ArrayList; import java.util.List; @@ -26,9 +33,9 @@ public class MesageActivity extends BaseCompatActivity implements View.OnClickLi ImageView iv_back; - MEssageAdapter mEssageAdapter=null; + MEssageAdapter mEssageAdapter = null; - List phMessages=new ArrayList<>(); + List phMessages = new ArrayList<>(); @Override protected void initView(Bundle savedInstanceState) { @@ -49,11 +56,11 @@ public class MesageActivity extends BaseCompatActivity implements View.OnClickLi private void initAdapter() { - if (null==mEssageAdapter)mEssageAdapter=new MEssageAdapter(); - if (null==recyclerView.getAdapter())recyclerView.setAdapter(mEssageAdapter); + if (null == mEssageAdapter) mEssageAdapter = new MEssageAdapter(); + if (null == recyclerView.getAdapter()) recyclerView.setAdapter(mEssageAdapter); - - phMessages= AppContext.getInstance().getDaoSession().getPHMessageDao().loadAll(); +// phMessages= AppContext.getInstance().getDaoSession().getPHMessageDao().loadAll(); + phMessages = DBMessageController.getInstance(this).getAllMessages(); mEssageAdapter.addAll(phMessages); recyclerView.setAdapter(mEssageAdapter); @@ -73,8 +80,7 @@ public class MesageActivity extends BaseCompatActivity implements View.OnClickLi } } - - private class MEssageAdapter extends BaseRecyclerViewAdapter { + private class MEssageAdapter extends BaseRecyclerViewAdapter { @Override public void onAttachedToRecyclerView(RecyclerView recyclerView) { @@ -93,28 +99,45 @@ public class MesageActivity extends BaseCompatActivity implements View.OnClickLi return messageViewHolder; } - private class MessageViewHolder extends BaseRecyclerViewHolder { + private class MessageViewHolder extends BaseRecyclerViewHolder { - TextView tvMessageContent, tvDate; + TextView tvMessageContent, tvDate, tvLookDetail; List dateString = new ArrayList<>(); + String indexDate = ""; public MessageViewHolder(View itemView) { super(itemView); tvMessageContent = itemView.findViewById(R.id.tvMessageContent); tvDate = itemView.findViewById(R.id.tvDate); + tvLookDetail = itemView.findViewById(R.id.tvLookDetail); } @Override - public void onBindViewHolder(PHMessage object, int position) { - tvMessageContent.setText(object.getMessageText()); - String date = DateUtils.date2str(object.getDate(), "yyyyMMDD"); - if (!dateString.contains(date)) { - dateString.add(date); - tvDate.setText(date); + public void onBindViewHolder(Messages object, int position) { + + String typeName = ""; + if (object.type == 0) typeName = "作业通知:"; + else if (object.type == 1) typeName = "考勤通知:"; + else if (object.type == 2) tvLookDetail.setVisibility(View.VISIBLE); + typeName += object.title; + SpannableString spannableString = new SpannableString(typeName); + ForegroundColorSpan colorSpan = new ForegroundColorSpan(Color.parseColor("#ff0000")); + spannableString.setSpan(colorSpan, 0, 5, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + tvMessageContent.setText(spannableString); + if (indexDate.equals(object.date)) tvDate.setVisibility(View.GONE); + else { + indexDate = object.date; tvDate.setVisibility(View.VISIBLE); - }else { - tvDate.setVisibility(View.GONE); } + if (object.date.equals("false")) tvDate.setText(""); + else tvDate.setText(object.date); + tvLookDetail.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //查看请假详情 + + } + }); } } diff --git a/app/src/main/java/com/shunzhi/parent/ui/fragment/MineFragment.java b/app/src/main/java/com/shunzhi/parent/ui/fragment/MineFragment.java index 5cc4ff2..7f09177 100644 --- a/app/src/main/java/com/shunzhi/parent/ui/fragment/MineFragment.java +++ b/app/src/main/java/com/shunzhi/parent/ui/fragment/MineFragment.java @@ -23,6 +23,7 @@ import com.shunzhi.parent.R; import com.shunzhi.parent.bean.message.PHMessage; import com.shunzhi.parent.contract.loginandregister.LoginAndRegisterContract; import com.shunzhi.parent.contract.mine.MineContract; +import com.shunzhi.parent.db.DBMessageController; import com.shunzhi.parent.manager.MessageManager; import com.shunzhi.parent.manager.UpdateManager; import com.shunzhi.parent.presenter.mine.MinePresenter; @@ -92,7 +93,7 @@ public class MineFragment extends BaseMVPCompatFragment + android:layout_marginTop="@dimen/size_dp_10" + android:orientation="vertical"> + android:text="" + android:textColor="@color/textColor" + android:textSize="@dimen/size_dp_16" /> + + + - + + + android:gravity="right" + android:paddingRight="@dimen/size_dp_15" + android:paddingTop="@dimen/size_dp_5" + android:paddingBottom="@dimen/size_dp_5" + android:layout_height="wrap_content" + android:layout_gravity="right" + android:text="点击查看" + android:textColor="@color/xueqing_blue" + android:textSize="@dimen/size_dp_16" /> + + + + + \ No newline at end of file diff --git a/mvpsdk/src/main/java/com/share/mvpsdk/utils/DBUtils.java b/mvpsdk/src/main/java/com/share/mvpsdk/utils/DBUtils.java index ccae847..5eac922 100644 --- a/mvpsdk/src/main/java/com/share/mvpsdk/utils/DBUtils.java +++ b/mvpsdk/src/main/java/com/share/mvpsdk/utils/DBUtils.java @@ -17,7 +17,8 @@ import com.share.mvpsdk.config.DBConfig; */ public class DBUtils { public static final String CREATE_TABLE_IF_NOT_EXISTS = "create table if not exists %s " + - "(id integer primary key autoincrement,key text unique,is_read integer)"; + "(id integer primary key autoincrement,title text unique,image text)"; + private static DBUtils sDBUtis; private SQLiteDatabase mSQLiteDatabase; @@ -79,6 +80,10 @@ public class DBUtils { return isRead; } + public void insert(String table,String key,String value){ + + } + public class DBHelper extends SQLiteOpenHelper { public DBHelper(Context context, String name) { diff --git a/mvpsdk/src/main/java/com/share/mvpsdk/utils/DateUtils.java b/mvpsdk/src/main/java/com/share/mvpsdk/utils/DateUtils.java index 2cbfd94..37d2d03 100644 --- a/mvpsdk/src/main/java/com/share/mvpsdk/utils/DateUtils.java +++ b/mvpsdk/src/main/java/com/share/mvpsdk/utils/DateUtils.java @@ -69,6 +69,11 @@ public class DateUtils { return date.split(PATTERN_SPLIT)[0]; } + public static String dateFormat(Date date,String fomart){ + SimpleDateFormat simpleDateFormat=new SimpleDateFormat(fomart); + return simpleDateFormat.format(date); + } + /** * 原有日期上累加月 * -- libgit2 0.21.0