commit
941f6b3c52
@ -0,0 +1,15 @@
|
|||||||
|
*.iml
|
||||||
|
.gradle
|
||||||
|
/local.properties
|
||||||
|
/.idea/caches
|
||||||
|
/.idea/libraries
|
||||||
|
/.idea/modules.xml
|
||||||
|
/.idea/workspace.xml
|
||||||
|
/.idea/navEditor.xml
|
||||||
|
/.idea/assetWizardSettings.xml
|
||||||
|
.DS_Store
|
||||||
|
/build
|
||||||
|
/captures
|
||||||
|
.externalNativeBuild
|
||||||
|
.cxx
|
||||||
|
local.properties
|
@ -0,0 +1,3 @@
|
|||||||
|
# Default ignored files
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<bytecodeTargetLevel target="11" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,611 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DBNavigator.Project.DataEditorManager">
|
||||||
|
<record-view-column-sorting-type value="BY_INDEX" />
|
||||||
|
<value-preview-text-wrapping value="true" />
|
||||||
|
<value-preview-pinned value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DataExportManager">
|
||||||
|
<export-instructions>
|
||||||
|
<create-header value="true" />
|
||||||
|
<friendly-headers value="false" />
|
||||||
|
<quote-values-containing-separator value="true" />
|
||||||
|
<quote-all-values value="false" />
|
||||||
|
<value-separator value="" />
|
||||||
|
<file-name value="" />
|
||||||
|
<file-location value="" />
|
||||||
|
<scope value="GLOBAL" />
|
||||||
|
<destination value="FILE" />
|
||||||
|
<format value="EXCEL" />
|
||||||
|
<charset value="GBK" />
|
||||||
|
<charset value="GBK" />
|
||||||
|
</export-instructions>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseBrowserManager">
|
||||||
|
<autoscroll-to-editor value="false" />
|
||||||
|
<autoscroll-from-editor value="true" />
|
||||||
|
<show-object-properties value="true" />
|
||||||
|
<loaded-nodes />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseConsoleManager">
|
||||||
|
<connection id="2b93b0b9-cb60-4d4b-9737-fa63f2265d4f">
|
||||||
|
<console name="Connection" type="STANDARD" schema="" session="Main"><![CDATA[select
|
||||||
|
ui._id,
|
||||||
|
ui."appKey",
|
||||||
|
ui.avatar,
|
||||||
|
ui."collegeName",
|
||||||
|
ui."createTime",
|
||||||
|
ui.email,
|
||||||
|
ui.gender,
|
||||||
|
ui.id,
|
||||||
|
ui."idNumber",
|
||||||
|
ui."inSchoolTime",
|
||||||
|
ui."lastUpdateTime",
|
||||||
|
ui.phone,
|
||||||
|
ui."realName",
|
||||||
|
ui."roleId",
|
||||||
|
ui."userName"
|
||||||
|
from
|
||||||
|
user_info ui;
|
||||||
|
insert into user_info (
|
||||||
|
_id,
|
||||||
|
"appKey",
|
||||||
|
avatar,
|
||||||
|
"collegeName",
|
||||||
|
"createTime",
|
||||||
|
email,
|
||||||
|
gender,
|
||||||
|
id,
|
||||||
|
"idNumber",
|
||||||
|
"inSchoolTime",
|
||||||
|
"lastUpdateTime",
|
||||||
|
phone,
|
||||||
|
"realName",
|
||||||
|
"roleId",
|
||||||
|
"userName")
|
||||||
|
values (
|
||||||
|
:_id,
|
||||||
|
:appKey,
|
||||||
|
:avatar,
|
||||||
|
:collegeName,
|
||||||
|
:createTime,
|
||||||
|
:email,
|
||||||
|
:gender,
|
||||||
|
:id,
|
||||||
|
:idNumber,
|
||||||
|
:inSchoolTime,
|
||||||
|
:lastUpdateTime,
|
||||||
|
:phone,
|
||||||
|
:realName,
|
||||||
|
:roleId,
|
||||||
|
:userName)
|
||||||
|
;]]></console>
|
||||||
|
</connection>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseFileManager">
|
||||||
|
<open-files />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatabaseSessionManager">
|
||||||
|
<connection id="2b93b0b9-cb60-4d4b-9737-fa63f2265d4f" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.DatasetFilterManager">
|
||||||
|
<filter-actions connection-id="2b93b0b9-cb60-4d4b-9737-fa63f2265d4f" dataset="main.user_info" active-filter-id="" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.EditorStateManager">
|
||||||
|
<last-used-providers />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ExecutionManager">
|
||||||
|
<retain-sticky-names value="false" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.MethodExecutionManager">
|
||||||
|
<method-browser />
|
||||||
|
<execution-history>
|
||||||
|
<group-entries value="true" />
|
||||||
|
<execution-inputs />
|
||||||
|
</execution-history>
|
||||||
|
<argument-values-cache />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectDependencyManager">
|
||||||
|
<last-used-dependency-type value="INCOMING" />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ObjectQuickFilterManager">
|
||||||
|
<last-used-operator value="EQUAL" />
|
||||||
|
<filters />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ParserDiagnosticsManager">
|
||||||
|
<diagnostics-history />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.ScriptExecutionManager" clear-outputs="true">
|
||||||
|
<recently-used-interfaces />
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.Settings">
|
||||||
|
<connections>
|
||||||
|
<connection id="2b93b0b9-cb60-4d4b-9737-fa63f2265d4f" active="true" signed="true">
|
||||||
|
<database>
|
||||||
|
<name value="Connection" />
|
||||||
|
<description value="User" />
|
||||||
|
<database-type value="SQLITE" />
|
||||||
|
<config-type value="BASIC" />
|
||||||
|
<database-version value="3.3" />
|
||||||
|
<driver-source value="BUILTIN" />
|
||||||
|
<driver-library value="" />
|
||||||
|
<driver value="" />
|
||||||
|
<url-type value="FILE" />
|
||||||
|
<host value="" />
|
||||||
|
<port value="" />
|
||||||
|
<database value="" />
|
||||||
|
<files>
|
||||||
|
<file path="E:\CourseDesign\androidDevelopment\code\final\S.T.Link\app\src\main\res\raws\userInfo.db" schema="main" />
|
||||||
|
</files>
|
||||||
|
<type value="NONE" />
|
||||||
|
<user value="" />
|
||||||
|
<deprecated-pwd value="" />
|
||||||
|
</database>
|
||||||
|
<properties>
|
||||||
|
<auto-commit value="false" />
|
||||||
|
</properties>
|
||||||
|
<ssh-settings>
|
||||||
|
<active value="false" />
|
||||||
|
<proxy-host value="" />
|
||||||
|
<proxy-port value="22" />
|
||||||
|
<proxy-user value="" />
|
||||||
|
<deprecated-proxy-pwd value="" />
|
||||||
|
<auth-type value="PASSWORD" />
|
||||||
|
<key-file value="" />
|
||||||
|
<key-passphrase value="" />
|
||||||
|
</ssh-settings>
|
||||||
|
<ssl-settings>
|
||||||
|
<active value="false" />
|
||||||
|
<certificate-authority-file value="" />
|
||||||
|
<client-certificate-file value="" />
|
||||||
|
<client-key-file value="" />
|
||||||
|
</ssl-settings>
|
||||||
|
<details>
|
||||||
|
<charset value="UTF-8" />
|
||||||
|
<session-management value="true" />
|
||||||
|
<ddl-file-binding value="true" />
|
||||||
|
<database-logging value="true" />
|
||||||
|
<connect-automatically value="true" />
|
||||||
|
<restore-workspace value="true" />
|
||||||
|
<restore-workspace-deep value="false" />
|
||||||
|
<environment-type value="default" />
|
||||||
|
<connectivity-timeout value="5" />
|
||||||
|
<idle-time-to-disconnect value="30" />
|
||||||
|
<idle-time-to-disconnect-pool value="5" />
|
||||||
|
<credential-expiry-time value="10" />
|
||||||
|
<max-connection-pool-size value="7" />
|
||||||
|
<alternative-statement-delimiter value="" />
|
||||||
|
</details>
|
||||||
|
<object-filters hide-empty-schemas="false" hide-pseudo-columns="false">
|
||||||
|
<object-type-filter>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="true" />
|
||||||
|
<object-type name="ROLE" enabled="true" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="true" />
|
||||||
|
<object-type name="CHARSET" enabled="true" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED_TABLE" enabled="true" />
|
||||||
|
<object-type name="COLUMN" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="true" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||||
|
<object-type name="ARGUMENT" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="true" />
|
||||||
|
<object-type name="CLUSTER" enabled="true" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</object-type-filter>
|
||||||
|
<object-name-filters />
|
||||||
|
</object-filters>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
<browser-settings>
|
||||||
|
<general>
|
||||||
|
<display-mode value="TABBED" />
|
||||||
|
<navigation-history-size value="100" />
|
||||||
|
<show-object-details value="false" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<object-type-filter>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="true" />
|
||||||
|
<object-type name="ROLE" enabled="true" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="true" />
|
||||||
|
<object-type name="CHARSET" enabled="true" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED_VIEW" enabled="true" />
|
||||||
|
<object-type name="NESTED_TABLE" enabled="true" />
|
||||||
|
<object-type name="COLUMN" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE_TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="true" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="TYPE_ATTRIBUTE" enabled="true" />
|
||||||
|
<object-type name="ARGUMENT" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="true" />
|
||||||
|
<object-type name="CLUSTER" enabled="true" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</object-type-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting>
|
||||||
|
<object-type name="COLUMN" sorting-type="NAME" />
|
||||||
|
<object-type name="FUNCTION" sorting-type="NAME" />
|
||||||
|
<object-type name="PROCEDURE" sorting-type="NAME" />
|
||||||
|
<object-type name="ARGUMENT" sorting-type="POSITION" />
|
||||||
|
</sorting>
|
||||||
|
<default-editors>
|
||||||
|
<object-type name="VIEW" editor-type="SELECTION" />
|
||||||
|
<object-type name="PACKAGE" editor-type="SELECTION" />
|
||||||
|
<object-type name="TYPE" editor-type="SELECTION" />
|
||||||
|
</default-editors>
|
||||||
|
</browser-settings>
|
||||||
|
<navigation-settings>
|
||||||
|
<lookup-filters>
|
||||||
|
<lookup-objects>
|
||||||
|
<object-type name="SCHEMA" enabled="true" />
|
||||||
|
<object-type name="USER" enabled="false" />
|
||||||
|
<object-type name="ROLE" enabled="false" />
|
||||||
|
<object-type name="PRIVILEGE" enabled="false" />
|
||||||
|
<object-type name="CHARSET" enabled="false" />
|
||||||
|
<object-type name="TABLE" enabled="true" />
|
||||||
|
<object-type name="VIEW" enabled="true" />
|
||||||
|
<object-type name="MATERIALIZED VIEW" enabled="true" />
|
||||||
|
<object-type name="INDEX" enabled="true" />
|
||||||
|
<object-type name="CONSTRAINT" enabled="true" />
|
||||||
|
<object-type name="DATASET TRIGGER" enabled="true" />
|
||||||
|
<object-type name="DATABASE TRIGGER" enabled="true" />
|
||||||
|
<object-type name="SYNONYM" enabled="false" />
|
||||||
|
<object-type name="SEQUENCE" enabled="true" />
|
||||||
|
<object-type name="PROCEDURE" enabled="true" />
|
||||||
|
<object-type name="FUNCTION" enabled="true" />
|
||||||
|
<object-type name="PACKAGE" enabled="true" />
|
||||||
|
<object-type name="TYPE" enabled="true" />
|
||||||
|
<object-type name="DIMENSION" enabled="false" />
|
||||||
|
<object-type name="CLUSTER" enabled="false" />
|
||||||
|
<object-type name="DBLINK" enabled="true" />
|
||||||
|
</lookup-objects>
|
||||||
|
<force-database-load value="false" />
|
||||||
|
<prompt-connection-selection value="true" />
|
||||||
|
<prompt-schema-selection value="true" />
|
||||||
|
</lookup-filters>
|
||||||
|
</navigation-settings>
|
||||||
|
<dataset-grid-settings>
|
||||||
|
<general>
|
||||||
|
<enable-zooming value="true" />
|
||||||
|
<enable-column-tooltip value="true" />
|
||||||
|
</general>
|
||||||
|
<sorting>
|
||||||
|
<nulls-first value="true" />
|
||||||
|
<max-sorting-columns value="4" />
|
||||||
|
</sorting>
|
||||||
|
<tracking-columns>
|
||||||
|
<columnNames value="" />
|
||||||
|
<visible value="true" />
|
||||||
|
<editable value="false" />
|
||||||
|
</tracking-columns>
|
||||||
|
</dataset-grid-settings>
|
||||||
|
<dataset-editor-settings>
|
||||||
|
<text-editor-popup>
|
||||||
|
<active value="false" />
|
||||||
|
<active-if-empty value="false" />
|
||||||
|
<data-length-threshold value="100" />
|
||||||
|
<popup-delay value="1000" />
|
||||||
|
</text-editor-popup>
|
||||||
|
<values-actions-popup>
|
||||||
|
<show-popup-button value="true" />
|
||||||
|
<element-count-threshold value="1000" />
|
||||||
|
<data-length-threshold value="250" />
|
||||||
|
</values-actions-popup>
|
||||||
|
<general>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<fetch-timeout value="30" />
|
||||||
|
<trim-whitespaces value="true" />
|
||||||
|
<convert-empty-strings-to-null value="true" />
|
||||||
|
<select-content-on-cell-edit value="true" />
|
||||||
|
<large-value-preview-active value="true" />
|
||||||
|
</general>
|
||||||
|
<filters>
|
||||||
|
<prompt-filter-dialog value="true" />
|
||||||
|
<default-filter-type value="BASIC" />
|
||||||
|
</filters>
|
||||||
|
<qualified-text-editor text-length-threshold="300">
|
||||||
|
<content-types>
|
||||||
|
<content-type name="Text" enabled="true" />
|
||||||
|
<content-type name="Properties" enabled="true" />
|
||||||
|
<content-type name="XML" enabled="true" />
|
||||||
|
<content-type name="DTD" enabled="true" />
|
||||||
|
<content-type name="HTML" enabled="true" />
|
||||||
|
<content-type name="XHTML" enabled="true" />
|
||||||
|
<content-type name="Java" enabled="true" />
|
||||||
|
<content-type name="SQL" enabled="true" />
|
||||||
|
<content-type name="PL/SQL" enabled="true" />
|
||||||
|
<content-type name="JSON" enabled="true" />
|
||||||
|
<content-type name="JSON5" enabled="true" />
|
||||||
|
<content-type name="Groovy" enabled="true" />
|
||||||
|
<content-type name="AIDL" enabled="true" />
|
||||||
|
<content-type name="YAML" enabled="true" />
|
||||||
|
<content-type name="Manifest" enabled="true" />
|
||||||
|
</content-types>
|
||||||
|
</qualified-text-editor>
|
||||||
|
<record-navigation>
|
||||||
|
<navigation-target value="VIEWER" />
|
||||||
|
</record-navigation>
|
||||||
|
</dataset-editor-settings>
|
||||||
|
<code-editor-settings>
|
||||||
|
<general>
|
||||||
|
<show-object-navigation-gutter value="false" />
|
||||||
|
<show-spec-declaration-navigation-gutter value="true" />
|
||||||
|
<enable-spellchecking value="true" />
|
||||||
|
<enable-reference-spellchecking value="false" />
|
||||||
|
</general>
|
||||||
|
<confirmations>
|
||||||
|
<save-changes value="false" />
|
||||||
|
<revert-changes value="true" />
|
||||||
|
</confirmations>
|
||||||
|
</code-editor-settings>
|
||||||
|
<code-completion-settings>
|
||||||
|
<filters>
|
||||||
|
<basic-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="false" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="false" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</basic-filter>
|
||||||
|
<extended-filter>
|
||||||
|
<filter-element type="RESERVED_WORD" id="keyword" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="function" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="parameter" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="datatype" selected="true" />
|
||||||
|
<filter-element type="RESERVED_WORD" id="exception" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="schema" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="user" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="role" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="privilege" selected="true" />
|
||||||
|
<user-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</user-schema>
|
||||||
|
<public-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</public-schema>
|
||||||
|
<any-schema>
|
||||||
|
<filter-element type="OBJECT" id="table" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="materialized view" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="index" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="constraint" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="trigger" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="synonym" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="sequence" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="procedure" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="function" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="package" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="type" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dimension" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="cluster" selected="true" />
|
||||||
|
<filter-element type="OBJECT" id="dblink" selected="true" />
|
||||||
|
</any-schema>
|
||||||
|
</extended-filter>
|
||||||
|
</filters>
|
||||||
|
<sorting enabled="true">
|
||||||
|
<sorting-element type="RESERVED_WORD" id="keyword" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="datatype" />
|
||||||
|
<sorting-element type="OBJECT" id="column" />
|
||||||
|
<sorting-element type="OBJECT" id="table" />
|
||||||
|
<sorting-element type="OBJECT" id="view" />
|
||||||
|
<sorting-element type="OBJECT" id="materialized view" />
|
||||||
|
<sorting-element type="OBJECT" id="index" />
|
||||||
|
<sorting-element type="OBJECT" id="constraint" />
|
||||||
|
<sorting-element type="OBJECT" id="trigger" />
|
||||||
|
<sorting-element type="OBJECT" id="synonym" />
|
||||||
|
<sorting-element type="OBJECT" id="sequence" />
|
||||||
|
<sorting-element type="OBJECT" id="procedure" />
|
||||||
|
<sorting-element type="OBJECT" id="function" />
|
||||||
|
<sorting-element type="OBJECT" id="package" />
|
||||||
|
<sorting-element type="OBJECT" id="type" />
|
||||||
|
<sorting-element type="OBJECT" id="dimension" />
|
||||||
|
<sorting-element type="OBJECT" id="cluster" />
|
||||||
|
<sorting-element type="OBJECT" id="dblink" />
|
||||||
|
<sorting-element type="OBJECT" id="schema" />
|
||||||
|
<sorting-element type="OBJECT" id="role" />
|
||||||
|
<sorting-element type="OBJECT" id="user" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="function" />
|
||||||
|
<sorting-element type="RESERVED_WORD" id="parameter" />
|
||||||
|
</sorting>
|
||||||
|
<format>
|
||||||
|
<enforce-code-style-case value="true" />
|
||||||
|
</format>
|
||||||
|
</code-completion-settings>
|
||||||
|
<execution-engine-settings>
|
||||||
|
<statement-execution>
|
||||||
|
<fetch-block-size value="100" />
|
||||||
|
<execution-timeout value="20" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<focus-result value="false" />
|
||||||
|
<prompt-execution value="false" />
|
||||||
|
</statement-execution>
|
||||||
|
<script-execution>
|
||||||
|
<command-line-interfaces />
|
||||||
|
<execution-timeout value="300" />
|
||||||
|
</script-execution>
|
||||||
|
<method-execution>
|
||||||
|
<execution-timeout value="30" />
|
||||||
|
<debug-execution-timeout value="600" />
|
||||||
|
<parameter-history-size value="10" />
|
||||||
|
</method-execution>
|
||||||
|
</execution-engine-settings>
|
||||||
|
<operation-settings>
|
||||||
|
<transactions>
|
||||||
|
<uncommitted-changes>
|
||||||
|
<on-project-close value="ASK" />
|
||||||
|
<on-disconnect value="ASK" />
|
||||||
|
<on-autocommit-toggle value="ASK" />
|
||||||
|
</uncommitted-changes>
|
||||||
|
<multiple-uncommitted-changes>
|
||||||
|
<on-commit value="ASK" />
|
||||||
|
<on-rollback value="ASK" />
|
||||||
|
</multiple-uncommitted-changes>
|
||||||
|
</transactions>
|
||||||
|
<session-browser>
|
||||||
|
<disconnect-session value="ASK" />
|
||||||
|
<kill-session value="ASK" />
|
||||||
|
<reload-on-filter-change value="false" />
|
||||||
|
</session-browser>
|
||||||
|
<compiler>
|
||||||
|
<compile-type value="KEEP" />
|
||||||
|
<compile-dependencies value="ASK" />
|
||||||
|
<always-show-controls value="false" />
|
||||||
|
</compiler>
|
||||||
|
<debugger>
|
||||||
|
<debugger-type value="ASK" />
|
||||||
|
<use-generic-runners value="true" />
|
||||||
|
</debugger>
|
||||||
|
</operation-settings>
|
||||||
|
<ddl-file-settings>
|
||||||
|
<extensions>
|
||||||
|
<mapping file-type-id="VIEW" extensions="vw" />
|
||||||
|
<mapping file-type-id="TRIGGER" extensions="trg" />
|
||||||
|
<mapping file-type-id="PROCEDURE" extensions="prc" />
|
||||||
|
<mapping file-type-id="FUNCTION" extensions="fnc" />
|
||||||
|
<mapping file-type-id="PACKAGE" extensions="pkg" />
|
||||||
|
<mapping file-type-id="PACKAGE_SPEC" extensions="pks" />
|
||||||
|
<mapping file-type-id="PACKAGE_BODY" extensions="pkb" />
|
||||||
|
<mapping file-type-id="TYPE" extensions="tpe" />
|
||||||
|
<mapping file-type-id="TYPE_SPEC" extensions="tps" />
|
||||||
|
<mapping file-type-id="TYPE_BODY" extensions="tpb" />
|
||||||
|
</extensions>
|
||||||
|
<general>
|
||||||
|
<lookup-ddl-files value="true" />
|
||||||
|
<create-ddl-files value="false" />
|
||||||
|
<synchronize-ddl-files value="true" />
|
||||||
|
<use-qualified-names value="false" />
|
||||||
|
<make-scripts-rerunnable value="true" />
|
||||||
|
</general>
|
||||||
|
</ddl-file-settings>
|
||||||
|
<general-settings>
|
||||||
|
<regional-settings>
|
||||||
|
<date-format value="MEDIUM" />
|
||||||
|
<number-format value="UNGROUPED" />
|
||||||
|
<locale value="SYSTEM_DEFAULT" />
|
||||||
|
<use-custom-formats value="false" />
|
||||||
|
</regional-settings>
|
||||||
|
<environment>
|
||||||
|
<environment-types>
|
||||||
|
<environment-type id="development" name="Development" description="Development environment" color="-2430209/-12296320" readonly-code="false" readonly-data="false" />
|
||||||
|
<environment-type id="integration" name="Integration" description="Integration environment" color="-2621494/-12163514" readonly-code="true" readonly-data="false" />
|
||||||
|
<environment-type id="production" name="Production" description="Productive environment" color="-11574/-10271420" readonly-code="true" readonly-data="true" />
|
||||||
|
<environment-type id="other" name="Other" description="" color="-1576/-10724543" readonly-code="false" readonly-data="false" />
|
||||||
|
</environment-types>
|
||||||
|
<visibility-settings>
|
||||||
|
<connection-tabs value="true" />
|
||||||
|
<dialog-headers value="true" />
|
||||||
|
<object-editor-tabs value="true" />
|
||||||
|
<script-editor-tabs value="false" />
|
||||||
|
<execution-result-tabs value="true" />
|
||||||
|
</visibility-settings>
|
||||||
|
</environment>
|
||||||
|
</general-settings>
|
||||||
|
</component>
|
||||||
|
<component name="DBNavigator.Project.StatementExecutionManager">
|
||||||
|
<execution-variables />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetDropDown">
|
||||||
|
<runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<Target>
|
||||||
|
<type value="RUNNING_DEVICE_TARGET" />
|
||||||
|
<deviceKey>
|
||||||
|
<Key>
|
||||||
|
<type value="SERIAL_NUMBER" />
|
||||||
|
<value value="emulator-5554" />
|
||||||
|
</Key>
|
||||||
|
</deviceKey>
|
||||||
|
</Target>
|
||||||
|
</runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<timeTargetWasSelectedWithDropDown value="2022-06-02T07:36:08.505054300Z" />
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="GradleMigrationSettings" migrationVersion="1" />
|
||||||
|
<component name="GradleSettings">
|
||||||
|
<option name="linkedExternalProjectsSettings">
|
||||||
|
<GradleProjectSettings>
|
||||||
|
<option name="testRunner" value="GRADLE" />
|
||||||
|
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||||
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="modules">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
<option value="$PROJECT_DIR$/app" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
<option name="resolveModulePerSourceSet" value="false" />
|
||||||
|
</GradleProjectSettings>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -0,0 +1,145 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DesignSurface">
|
||||||
|
<option name="filePathToZoomLevelMap">
|
||||||
|
<map>
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/b_login_identity_choose.xml" value="0.2445" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/bottom_navigation_selector.xml" value="0.208" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_add_24.xml" value="0.208" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_add_24_grey.xml" value="0.1845" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_clear_24.xml" value="0.128" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_clear_24_red.xml" value="0.128" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24.xml" value="0.189" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_keyboard_arrow_right_24_grey.xml" value="0.188" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_lock_24.xml" value="0.1795" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_person_24.xml" value="0.1795" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_visibility_24.xml" value="0.2175" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_baseline_visibility_off_24.xml" value="0.2325" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/ic_launcher_background.xml" value="0.229" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/layerlist_inputtext_modify.xml" value="0.194" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/pb_login_loading.xml" value="0.2195" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottm_modify_info_save.xml" value="0.213" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_add_course.xml" value="0.1915" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_modify_info_save.xml" value="0.1955" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_modify_info_save_1.xml" value="0.194" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_modify_info_save_2.xml" value="0.159" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_my_info.xml" value="0.152" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_bottom_navigation.xml" value="0.213" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_float_bottom.xml" value="0.1795" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_float_bottom_background.xml" value="0.1795" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_home_bt_sign.xml" value="0.17" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_inputText_modify_msg.xml" value="0.1965" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_input_text_add_course.xml" value="0.1845" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_input_text_modify_msg.xml" value="0.1965" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_inputtext_modify_msg.xml" value="0.194" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_my_info_about.xml" value="0.2425" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_my_info_detail.xml" value="0.1735" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_my_info_title.xml" value="0.2425" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_navigation_bottom.xml" value="0.1825" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_text_course.xml" value="0.18" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_time_choose.xml" value="0.1915" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_top_nav.xml" value="0.1775" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/drawable/selector_top_nav_item_background.xml" value="0.1775" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/actiivity_all_course.xml" value="0.12335359675785208" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/action_login_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/action_login_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_all_course.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_choose_course.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_course_detail.xml" value="0.21354166666666666" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_detail_about.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_detail_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_detail_record.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_detail_setting.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_home_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_img_get.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_login.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_login_identity_choose.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_login_stu.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_login_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_main.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_main_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_main_tea.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_map.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_modify_user_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_register.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_register_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_scan.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_scan_code.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_stu_course_sign_in.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_stu_detail_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_stu_detail_record.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_stu_detail_setting.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_check_course_sign.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_create_course.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_create_sign.xml" value="1.0" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_detail_about.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_detail_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_detail_record.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_tea_detail_setting.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_user_detail_my_info.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_user_detail_record.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/activity_user_detail_setting.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/blank_fragment.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/bottom_navigation_view.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_class_list.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_class_list_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_class_list_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_class_msg.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_class_unsigned_msg.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_course.xml" value="0.2" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_course_name_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_course_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_course_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_img_listview.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_list_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_location_poi.xml" value="0.21472663139329806" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/card_my_info_record.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/content_home_activity_stu.xml" value="0.17346014492753623" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/dialog_input.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_class_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_class_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_finished.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_intro_msg.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_selected_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_course_unfinished.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_first.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_home.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_second.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_sign_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_stu_class_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_stu_class_msg.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_stu_home.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_stu_my_info.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_tea_class_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_tea_class_msg.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_tea_course_list.xml" value="0.536" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_tea_home.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_tea_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/fragment_user_my_info.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/home_activity_stu.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/home_activity_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/item_course_list.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/item_stu_signed.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/login_indentity_choose.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/layout/nav_activity_stu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_app_bar.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_nav_menu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_nav_menu_tea.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_navigation_menu.xml" value="0.264" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_stu_nav_menu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/bottom_tea_nav_menu.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/mobile_navigation.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/menu/top_app_bar.xml" value="0.25364583333333335" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml" value="0.229" />
|
||||||
|
<entry key="..\:/CourseDesign/androidDevelopment/code/final/S.T.Link/app/src/main/res/xml/filepaths.xml" value="0.23072916666666668" />
|
||||||
|
</map>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
|
||||||
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
|
</component>
|
||||||
|
<component name="ProjectType">
|
||||||
|
<option name="id" value="Android" />
|
||||||
|
</component>
|
||||||
|
</project>
|
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
/build
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,21 @@
|
|||||||
|
# Add project specific ProGuard rules here.
|
||||||
|
# You can control the set of applied configuration files using the
|
||||||
|
# proguardFiles setting in build.gradle.
|
||||||
|
#
|
||||||
|
# For more details, see
|
||||||
|
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||||
|
|
||||||
|
# If your project uses WebView with JS, uncomment the following
|
||||||
|
# and specify the fully qualified class name to the JavaScript interface
|
||||||
|
# class:
|
||||||
|
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||||
|
# public *;
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Uncomment this to preserve the line number information for
|
||||||
|
# debugging stack traces.
|
||||||
|
#-keepattributes SourceFile,LineNumberTable
|
||||||
|
|
||||||
|
# If you keep the line number information, uncomment this to
|
||||||
|
# hide the original source file name.
|
||||||
|
#-renamesourcefileattribute SourceFile
|
Binary file not shown.
@ -0,0 +1,26 @@
|
|||||||
|
package com.example.stlink;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instrumented test, which will execute on an Android device.
|
||||||
|
*
|
||||||
|
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
|
||||||
|
*/
|
||||||
|
@RunWith(AndroidJUnit4.class)
|
||||||
|
public class ExampleInstrumentedTest {
|
||||||
|
@Test
|
||||||
|
public void useAppContext() {
|
||||||
|
// Context of the app under test.
|
||||||
|
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||||
|
assertEquals("com.example.stlink", appContext.getPackageName());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,69 @@
|
|||||||
|
package com.example.stlink;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import com.example.stlink.activitys.IdChooseActivity;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* app加载活动
|
||||||
|
*/
|
||||||
|
public class LaunchActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView mClipLeftLoadingImageView;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_launch);
|
||||||
|
|
||||||
|
|
||||||
|
// //去除当前活动标题栏
|
||||||
|
// Objects.requireNonNull(getSupportActionBar()).hide();
|
||||||
|
|
||||||
|
mClipLeftLoadingImageView = findViewById(R.id.iv_login_loading);
|
||||||
|
mClipLeftLoadingImageView.setImageLevel(0);
|
||||||
|
|
||||||
|
//修改状态栏字体颜色
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
|
||||||
|
// //延时任务,进度条加载
|
||||||
|
// handler.postDelayed(runnable, 500);
|
||||||
|
|
||||||
|
//延时加载
|
||||||
|
Handler handler = new Handler();
|
||||||
|
handler.postDelayed(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
Intent intent = new Intent(LaunchActivity.this, IdChooseActivity.class);
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
}, 1000);//3秒后执行Runnable中的run方法
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// //开启一个子线程用作进度条加载
|
||||||
|
// private int mUnmber = 0;
|
||||||
|
// private Handler handler = new Handler();
|
||||||
|
// Runnable runnable = new Runnable() {
|
||||||
|
// @Override
|
||||||
|
// public void run() {
|
||||||
|
// if(mUnmber <= 10000){
|
||||||
|
// mClipLeftLoadingImageView.getDrawable().setLevel(mUnmber);
|
||||||
|
// handler.postDelayed(runnable, 20);
|
||||||
|
// mUnmber += 100;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// //进度条加载完毕之后,跳转到身份选择活动
|
||||||
|
// Intent intent = new Intent(LaunchActivity.this, IdChooseActivity.class);
|
||||||
|
// startActivity(intent);
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.example.stlink.activitys;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.EditText;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
import com.example.stlink.utils.activityUtil.RegisterUtil;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生端注册
|
||||||
|
*/
|
||||||
|
public class RegisterActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private TextView tvRgTitle;
|
||||||
|
private ImageView ivRgUserImg;
|
||||||
|
private EditText teaAccount;
|
||||||
|
private EditText teaPwdFirst;
|
||||||
|
private EditText teaPwdSecond;
|
||||||
|
private Button btRegister;
|
||||||
|
|
||||||
|
private Integer roleId;
|
||||||
|
private Bundle bundle;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_register);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化布局
|
||||||
|
*/
|
||||||
|
private void initView(){
|
||||||
|
//修改状态栏字体颜色
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
|
||||||
|
teaAccount = findViewById(R.id.id_rg);
|
||||||
|
teaPwdFirst = findViewById(R.id.pwd_rg_first);
|
||||||
|
teaPwdSecond = findViewById(R.id.pwd_rg_second);
|
||||||
|
|
||||||
|
tvRgTitle = findViewById(R.id.tv_rg_title);
|
||||||
|
ivRgUserImg = findViewById(R.id.rg_user_title_img);
|
||||||
|
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
roleId = (Integer) bundle.get(ModelFieldConstants.ROLE_ID);
|
||||||
|
|
||||||
|
if(roleId == 1){
|
||||||
|
tvRgTitle.setText("教师端注册");
|
||||||
|
ivRgUserImg.setImageResource(R.mipmap.teacher);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
btRegister = findViewById(R.id.bt_register);
|
||||||
|
|
||||||
|
setOnClickListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为按钮添加点击监听事件
|
||||||
|
*/
|
||||||
|
private void setOnClickListener(){
|
||||||
|
//为注册按钮添加点击监听事件
|
||||||
|
RegisterUtil.userRegister(
|
||||||
|
RegisterActivity.this,
|
||||||
|
btRegister,
|
||||||
|
teaAccount,
|
||||||
|
teaPwdFirst,
|
||||||
|
teaPwdSecond
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.stlink.activitys;
|
||||||
|
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
|
||||||
|
public class ScanQRCodeActivity extends AppCompatActivity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_scan_code);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,177 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityStuHome;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.configs.adapter.StuAddCourseAdapter;
|
||||||
|
import com.example.stlink.configs.onRecyclerViewItemClickListener;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.domain.Course;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.model.response.data.CourseData;
|
||||||
|
import com.example.stlink.utils.httpUtils.GetUrlParamHttpUtils;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.internal.LinkedTreeMap;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class AllCourses extends AppCompatActivity {
|
||||||
|
|
||||||
|
private RecyclerView lvAllCourse;
|
||||||
|
private List<Course> coursesData;
|
||||||
|
private StuAddCourseAdapter adapter;
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
private static SwipeRefreshLayout srlMyRefresh;
|
||||||
|
|
||||||
|
private static Bundle bundle;
|
||||||
|
private static Handler handler;
|
||||||
|
|
||||||
|
private int page = 1;
|
||||||
|
|
||||||
|
private int mCurrentColIndex = 0;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_all_course);
|
||||||
|
initView();
|
||||||
|
refreshData();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化布局中相关事件
|
||||||
|
*/
|
||||||
|
private void initView(){
|
||||||
|
lvAllCourse = findViewById(R.id.lv_all_course_list);
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
srlMyRefresh = findViewById(R.id.srl_my_refresh);
|
||||||
|
srlMyRefresh.setColorSchemeColors(Color.parseColor("#ff0000"),Color.parseColor("#00ff00"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新数据
|
||||||
|
*/
|
||||||
|
public void refreshData(){
|
||||||
|
|
||||||
|
coursesData = new ArrayList<>();
|
||||||
|
adapter = new StuAddCourseAdapter(
|
||||||
|
AllCourses.this,
|
||||||
|
R.layout.card_course_stu,
|
||||||
|
coursesData,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
LinearLayoutManager llm = new LinearLayoutManager(AllCourses.this);
|
||||||
|
lvAllCourse.setLayoutManager(llm);
|
||||||
|
lvAllCourse.setAdapter(adapter);
|
||||||
|
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
handler = new Handler(Looper.getMainLooper()){
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
@Override
|
||||||
|
public void handleMessage(@NonNull Message msg) {
|
||||||
|
super.handleMessage(msg);
|
||||||
|
CourseData courseData = (CourseData) msg.obj;
|
||||||
|
coursesData.addAll(courseData.getRecords());
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
|
System.out.println("size == " + adapter.getItemCount() + "................................");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
getAllCourseList(10);
|
||||||
|
setListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加点击事件
|
||||||
|
*/
|
||||||
|
public void setListener(){
|
||||||
|
adapter.setOnItemClickListener(new onRecyclerViewItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(RecyclerView parent, View view, int position) {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemLongClick(RecyclerView parent, View view, int position) { }
|
||||||
|
});
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
srlMyRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||||
|
@Override
|
||||||
|
public void onRefresh() {
|
||||||
|
refreshData();
|
||||||
|
srlMyRefresh.setRefreshing(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用一个子线程进行网络请求
|
||||||
|
* 刷新数据
|
||||||
|
* @param page 页面
|
||||||
|
*/
|
||||||
|
private void getAllCourseList(final int page){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
final String urlParam = ModelFieldConstants.SIZE + "=" + page + "&" +
|
||||||
|
ModelFieldConstants.CURRENT + "=" + "1";
|
||||||
|
final String url = UrlConstants.ALL_COURSE + "?" + urlParam;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
System.out.println("courseDataBaseResponse.getData() = " + baseResponse.getData() + "...............");
|
||||||
|
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDataMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDataMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到CourseData类中
|
||||||
|
String jsonString = gson.toJson(courseDataMap);
|
||||||
|
CourseData<Course> courseData = gson.fromJson(jsonString, new TypeToken<CourseData<Course>>() {}.getType());
|
||||||
|
|
||||||
|
System.out.println("courseData = " + courseData);
|
||||||
|
|
||||||
|
if(courseData != null){
|
||||||
|
Message message = new Message();
|
||||||
|
message.obj = courseData;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}else{
|
||||||
|
System.out.println("courseData: null " + "...............................");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) { }
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,191 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityTeaCourse;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.fragments.CourseClassListFragment;
|
||||||
|
import com.example.stlink.fragments.CourseIntroMsgFragment;
|
||||||
|
import com.example.stlink.fragments.CourseSelectedStuFragment;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.model.response.data.CourseDetailData;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
import com.example.stlink.utils.activityUtil.CourseDetailUtil;
|
||||||
|
import com.example.stlink.utils.httpUtils.GetUrlParamHttpUtils;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.internal.LinkedTreeMap;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CourseDetail extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
private TextView abTvCourseName;
|
||||||
|
private TextView abTvCollegeName;
|
||||||
|
private TextView abTvTeacherName;
|
||||||
|
private TextView abTvCourseIdMsg;
|
||||||
|
|
||||||
|
private Integer position;
|
||||||
|
|
||||||
|
CourseDetailUtil courseDetailUtil;
|
||||||
|
|
||||||
|
private Bundle bundle;
|
||||||
|
private Handler handler;
|
||||||
|
|
||||||
|
private CourseDetailData mCourseDetailData;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_course_detail);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
|
||||||
|
initPager();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
//修改状态栏字体颜色
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
abTvTeacherName = findViewById(R.id.ab_tv_teacher_name);
|
||||||
|
abTvCollegeName = findViewById(R.id.ab_tv_college_name);
|
||||||
|
abTvCourseName = findViewById(R.id.ab_tv_course_name);
|
||||||
|
abTvCourseIdMsg = findViewById(R.id.ab_tv_course_id_msg);
|
||||||
|
|
||||||
|
courseDetailUtil = new CourseDetailUtil(this);
|
||||||
|
courseDetailUtil.initView();
|
||||||
|
|
||||||
|
setListener();
|
||||||
|
|
||||||
|
refreshData();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshData(){
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
|
||||||
|
handler = new Handler(Looper.getMainLooper()){
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
@Override
|
||||||
|
public void handleMessage(@NonNull Message msg) {
|
||||||
|
super.handleMessage(msg);
|
||||||
|
if(msg.arg1 == 200){
|
||||||
|
CourseDetailData courseDetailData = (CourseDetailData) msg.obj;
|
||||||
|
mCourseDetailData = courseDetailData;
|
||||||
|
String courseName = courseDetailData.getCourseName();
|
||||||
|
String collegeName = courseDetailData.getCollegeName();
|
||||||
|
String teacherName = courseDetailData.getRealName();
|
||||||
|
Long idMsg = courseDetailData.getId();
|
||||||
|
if(teacherName != null){
|
||||||
|
abTvTeacherName.setText(teacherName);
|
||||||
|
}
|
||||||
|
if(collegeName != null){
|
||||||
|
abTvCollegeName.setText(collegeName);
|
||||||
|
}
|
||||||
|
if(courseName != null){
|
||||||
|
abTvCourseName.setText(courseName);
|
||||||
|
}
|
||||||
|
if(idMsg != null){
|
||||||
|
abTvCourseIdMsg.setText(String.valueOf(idMsg));
|
||||||
|
}
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
bundle.putSerializable(ModelFieldConstants.COURSE_DETAIL_DATA, mCourseDetailData);
|
||||||
|
getIntent().putExtras(bundle);
|
||||||
|
//在网路请求成功后,回调进行加载数据
|
||||||
|
CourseIntroMsgFragment.freshData(getIntent());
|
||||||
|
}else{
|
||||||
|
System.out.println("msg = " + msg.obj.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
getCourseDetail();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置返回键点击事件
|
||||||
|
*/
|
||||||
|
private void setListener(){
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initPager(){
|
||||||
|
List<Fragment> list = new ArrayList<>();
|
||||||
|
CourseIntroMsgFragment courseIntroMsgFragment = CourseIntroMsgFragment.newInstance("课程简介", CourseDetail.this);
|
||||||
|
CourseClassListFragment courseClassListFragment = CourseClassListFragment.newInstance("班级列表", CourseDetail.this);
|
||||||
|
CourseSelectedStuFragment courseSelectedStuFragment = CourseSelectedStuFragment.newInstance("选课学生", CourseDetail.this);
|
||||||
|
list.add(courseIntroMsgFragment);
|
||||||
|
list.add(courseClassListFragment);
|
||||||
|
list.add(courseSelectedStuFragment);
|
||||||
|
courseDetailUtil.initPage(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void getCourseDetail(){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
|
||||||
|
long courseId = bundle.getLong(ModelFieldConstants.COURSE_ID);
|
||||||
|
long userId = bundle.getLong(ModelFieldConstants.USER_ID);
|
||||||
|
|
||||||
|
String urlParam = ModelFieldConstants.COURSE_ID + "=" + courseId + "&" +
|
||||||
|
ModelFieldConstants.USER_ID + "=" + userId;
|
||||||
|
String url = UrlConstants.COURSE_DETAIL + "?" + urlParam;
|
||||||
|
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDetailMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDetailMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到User类中
|
||||||
|
String jsonString = gson.toJson(courseDetailMap);
|
||||||
|
CourseDetailData courseDetail = gson.fromJson(jsonString, new TypeToken<CourseDetailData>() {}.getType());
|
||||||
|
System.out.println("courseDetail = " + courseDetail + "..................");
|
||||||
|
Message message = new Message();
|
||||||
|
message.obj = courseDetail;
|
||||||
|
message.arg1 = 200;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
Message message = new Message();
|
||||||
|
message.obj = baseResponse.getMsg();
|
||||||
|
message.arg1 = baseResponse.getCode();
|
||||||
|
handler .sendMessage(message);
|
||||||
|
}
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,170 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityTeaHome;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.fragments.DidNotSignListFragment;
|
||||||
|
import com.example.stlink.fragments.LeaveListFragment;
|
||||||
|
import com.example.stlink.fragments.SignListFragment;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.model.response.data.CourseSignMsg;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
import com.example.stlink.utils.activityUtil.CheckCourseSignUtil;
|
||||||
|
import com.example.stlink.utils.httpUtils.GetUrlParamHttpUtils;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.internal.LinkedTreeMap;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class CheckCourseSign extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
private TextView aTvCourseName;
|
||||||
|
private TextView tvCourseNameMsg;
|
||||||
|
private TextView tvCourseTeaNameMsg;
|
||||||
|
private TextView tvCourseStuAmountMsg;
|
||||||
|
private TextView tvCourseStuArriveAmountMsg;
|
||||||
|
private TextView tvCourseStuLeaveAmountMsg;
|
||||||
|
|
||||||
|
|
||||||
|
private CheckCourseSignUtil checkCourseSignUtil;
|
||||||
|
|
||||||
|
private CourseSignMsg courseSignMsg;
|
||||||
|
|
||||||
|
private Bundle bundle;
|
||||||
|
private Handler handler;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_tea_check_course_sign);
|
||||||
|
initView();
|
||||||
|
initPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
CommonUtils.changeStatusBar(CheckCourseSign.this);
|
||||||
|
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
aTvCourseName = findViewById(R.id.ab_tv_course_name);
|
||||||
|
tvCourseNameMsg = findViewById(R.id.tv_course_name_msg);
|
||||||
|
tvCourseTeaNameMsg = findViewById(R.id.tv_course_tea_name_msg);
|
||||||
|
tvCourseStuAmountMsg = findViewById(R.id.tv_course_stu_amount_msg);
|
||||||
|
tvCourseStuArriveAmountMsg = findViewById(R.id.tv_course_stu_arrive_amount_msg);
|
||||||
|
tvCourseStuLeaveAmountMsg = findViewById(R.id.tv_course_stu_leave_amount_msg);
|
||||||
|
|
||||||
|
checkCourseSignUtil = new CheckCourseSignUtil(this.getWindow().getDecorView(),CheckCourseSign.this);
|
||||||
|
|
||||||
|
|
||||||
|
setClickListener();
|
||||||
|
|
||||||
|
refreshData();
|
||||||
|
|
||||||
|
handler = new Handler(new Handler.Callback() {
|
||||||
|
@Override
|
||||||
|
public boolean handleMessage(@NonNull Message msg) {
|
||||||
|
if(msg.arg1 == 200){
|
||||||
|
aTvCourseName.setText(courseSignMsg.getCourseName());
|
||||||
|
tvCourseStuAmountMsg.setText(String.valueOf(courseSignMsg.getCourseNum()));
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
getCourseSignMsg();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void refreshData(){
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
String courseName = bundle.getString(ModelFieldConstants.NOW_SIGN_COURSE_NAME);
|
||||||
|
if(!TextUtils.isEmpty(courseName)){
|
||||||
|
aTvCourseName.setText(courseName);
|
||||||
|
}
|
||||||
|
String teaName = bundle.getString(ModelFieldConstants.REAL_NAME);
|
||||||
|
if(!TextUtils.isEmpty(teaName)){
|
||||||
|
tvCourseTeaNameMsg.setText(teaName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setClickListener(){
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定viewpager2
|
||||||
|
*/
|
||||||
|
private void initPage(){
|
||||||
|
List<Fragment> list = new ArrayList<>();
|
||||||
|
SignListFragment signListFragment = SignListFragment.newInstance("已签到", this);
|
||||||
|
DidNotSignListFragment didNotSignListFragment = DidNotSignListFragment.newInstance("未签到", this);
|
||||||
|
LeaveListFragment leaveListFragment = LeaveListFragment.newInstance("请假列表", this);
|
||||||
|
list.add(signListFragment);
|
||||||
|
list.add(didNotSignListFragment);
|
||||||
|
list.add(leaveListFragment);
|
||||||
|
checkCourseSignUtil.initPage(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取签到页面信息
|
||||||
|
*/
|
||||||
|
private void getCourseSignMsg(){
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
Long courseId = bundle.getLong(ModelFieldConstants.NOW_SIGN_COURSE_ID);
|
||||||
|
Long userId = bundle.getLong(ModelFieldConstants.ID);
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
final String urlParam = ModelFieldConstants.COURSE_ID + "=" + courseId + "&" +
|
||||||
|
ModelFieldConstants.USER_ID + "=" + userId;
|
||||||
|
final String url = UrlConstants.TEACHER_PAGE + "?" + urlParam;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
System.out.println("courseDataBaseResponse.getData() = " + baseResponse.getData() + "...............");
|
||||||
|
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDataMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDataMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到CourseData类中
|
||||||
|
courseSignMsg = new CourseSignMsg();
|
||||||
|
String jsonString = gson.toJson(courseDataMap);
|
||||||
|
courseSignMsg = gson.fromJson(jsonString, CourseSignMsg.class);
|
||||||
|
|
||||||
|
System.out.println("CheckCourseSign:courseData = " + courseSignMsg);
|
||||||
|
|
||||||
|
Message message = new Message();
|
||||||
|
message.arg1 = 200;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) { }
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,162 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityTeaHome;
|
||||||
|
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.configs.adapter.CourseChooseAdapter;
|
||||||
|
import com.example.stlink.configs.onRecyclerViewItemClickListener;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.domain.Course;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.model.response.data.CourseData;
|
||||||
|
import com.example.stlink.utils.httpUtils.GetUrlParamHttpUtils;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.internal.LinkedTreeMap;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ChooseCourse extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
private RecyclerView rvCourseList;
|
||||||
|
|
||||||
|
private List<Course> coursesData;
|
||||||
|
private CourseChooseAdapter adapter;
|
||||||
|
private static Handler handler;
|
||||||
|
private static Bundle bundle;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_choose_course);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
rvCourseList = findViewById(R.id.rv_course_list);
|
||||||
|
|
||||||
|
coursesData = new ArrayList<>();
|
||||||
|
adapter = new CourseChooseAdapter(
|
||||||
|
ChooseCourse.this,
|
||||||
|
R.layout.card_course_name_list,
|
||||||
|
coursesData
|
||||||
|
);
|
||||||
|
LinearLayoutManager llm = new LinearLayoutManager(ChooseCourse.this);
|
||||||
|
rvCourseList.setLayoutManager(llm);
|
||||||
|
rvCourseList.setAdapter(adapter);
|
||||||
|
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
handler = new Handler(Looper.getMainLooper()){
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
@Override
|
||||||
|
public void handleMessage(@NonNull Message msg) {
|
||||||
|
super.handleMessage(msg);
|
||||||
|
CourseData courseData = (CourseData) msg.obj;
|
||||||
|
coursesData.addAll(courseData.getRecords());
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
|
System.out.println("size == " + adapter.getItemCount() + "................................");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
getUnfinishedCourseList();
|
||||||
|
|
||||||
|
initPage();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initPage(){
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
adapter.setOnItemClickListener(new onRecyclerViewItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(RecyclerView parent, View view, int position) {
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
int chooseCourseSelect = bundle.getInt(ModelFieldConstants.COURSE_CHOOSE_SELECT);
|
||||||
|
Course course = coursesData.get(position);
|
||||||
|
String courseName = course.getmCourseName();
|
||||||
|
Long courseId = course.getmCourseId();
|
||||||
|
bundle.putString(ModelFieldConstants.COURSE_NAME, courseName);
|
||||||
|
bundle.putLong(ModelFieldConstants.COURSE_ID, courseId);
|
||||||
|
if(chooseCourseSelect == 0){
|
||||||
|
Intent intent = new Intent();
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
setResult(200,intent);
|
||||||
|
finish();
|
||||||
|
}else if (chooseCourseSelect == 1){
|
||||||
|
bundle.putLong(ModelFieldConstants.NOW_SIGN_COURSE_ID, courseId);
|
||||||
|
bundle.putString(ModelFieldConstants.NOW_SIGN_COURSE_NAME, courseName);
|
||||||
|
Intent intent = new Intent(ChooseCourse.this, CheckCourseSign.class);
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemLongClick(RecyclerView parent, View view, int position) { }
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void getUnfinishedCourseList(){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
final String urlParam = ModelFieldConstants.USER_ID + "=" + bundle.getLong(ModelFieldConstants.ID);
|
||||||
|
final String url = UrlConstants.TEACHER_UNFINISHED + "?" + urlParam;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
System.out.println("courseDataBaseResponse.getData() = " + baseResponse.getData() + "...............");
|
||||||
|
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDataMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDataMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到CourseData类中
|
||||||
|
String jsonString = gson.toJson(courseDataMap);
|
||||||
|
CourseData<Course> courseData = gson.fromJson(jsonString, new TypeToken<CourseData<Course>>() {}.getType());
|
||||||
|
|
||||||
|
System.out.println("courseData = " + courseData);
|
||||||
|
|
||||||
|
if(courseData != null){
|
||||||
|
Message message = new Message();
|
||||||
|
message.obj = courseData;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}else{
|
||||||
|
System.out.println("courseData: null " + "...............................");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,368 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityTeaHome;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.appcompat.widget.AppCompatButton;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.activitys.MapActivity;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.request.CourseCreateSignRequest;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
import com.example.stlink.utils.QRCodeUtil;
|
||||||
|
import com.example.stlink.utils.httpUtils.PostBodyParamHttpUtils;
|
||||||
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
|
import com.google.android.material.timepicker.MaterialTimePicker;
|
||||||
|
import com.google.android.material.timepicker.TimeFormat;
|
||||||
|
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class CreateSign extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
private TextView tvCourseName;
|
||||||
|
private TextInputEditText etStuAmount;
|
||||||
|
private TextInputEditText etStartTime;
|
||||||
|
private TextInputEditText etEndTime;
|
||||||
|
private TextInputEditText etLocation;
|
||||||
|
private TextInputEditText etCode;
|
||||||
|
private ImageView ivAddImg;
|
||||||
|
private AppCompatButton abBtSave;
|
||||||
|
|
||||||
|
private int currYear;
|
||||||
|
private int currMonth;
|
||||||
|
private int currDay;
|
||||||
|
private int currHour;
|
||||||
|
private int currMin;
|
||||||
|
private int currSecond;
|
||||||
|
|
||||||
|
private Long startTimeStamp;
|
||||||
|
private Long endTimeStamp;
|
||||||
|
private String courseName;
|
||||||
|
|
||||||
|
private boolean hasChooseStartTime;
|
||||||
|
private boolean hasChooseEndTime;
|
||||||
|
|
||||||
|
private MaterialTimePicker startTimePicker;
|
||||||
|
private MaterialTimePicker endTimePicker;
|
||||||
|
private Bundle bundle;
|
||||||
|
private Handler handler;
|
||||||
|
|
||||||
|
private static ActivityResultLauncher<Intent> intentActivityResultLauncher;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_tea_create_sign);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 绑定控件
|
||||||
|
*/
|
||||||
|
private void initView(){
|
||||||
|
|
||||||
|
CommonUtils.changeStatusBar(CreateSign.this);
|
||||||
|
|
||||||
|
hasChooseStartTime = false;
|
||||||
|
hasChooseEndTime = false;
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
tvCourseName = findViewById(R.id.tv_course_name);
|
||||||
|
etStuAmount = findViewById(R.id.et_stu_amount);
|
||||||
|
etStartTime = findViewById(R.id.et_start_time);
|
||||||
|
etEndTime = findViewById(R.id.et_end_time);
|
||||||
|
etLocation = findViewById(R.id.et_location);
|
||||||
|
etCode = findViewById(R.id.et_code);
|
||||||
|
ivAddImg = findViewById(R.id.iv_add_img);
|
||||||
|
abBtSave = findViewById(R.id.ab_bt_save);
|
||||||
|
|
||||||
|
//禁止输入
|
||||||
|
etStartTime.setKeyListener(null);
|
||||||
|
etEndTime.setKeyListener(null);
|
||||||
|
etLocation.setKeyListener(null);
|
||||||
|
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
courseName = bundle.getString(ModelFieldConstants.COURSE_NAME);
|
||||||
|
if(!TextUtils.isEmpty(courseName)){
|
||||||
|
tvCourseName.setText(courseName);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Long curTimeStamp = System.currentTimeMillis();
|
||||||
|
|
||||||
|
String currTime = CommonUtils.stampToDate(String.valueOf(curTimeStamp), "yyyy-MM-dd-hh-mm-ss");
|
||||||
|
String[] timeStrs = currTime.split("-");
|
||||||
|
currYear = Integer.parseInt(timeStrs[0]);
|
||||||
|
currMonth = Integer.parseInt(timeStrs[1]);
|
||||||
|
currDay = Integer.parseInt(timeStrs[2]);
|
||||||
|
currHour = Integer.parseInt(timeStrs[3]);
|
||||||
|
currMin = Integer.parseInt(timeStrs[4]);
|
||||||
|
currSecond = Integer.parseInt(timeStrs[5]);
|
||||||
|
|
||||||
|
startTimePicker = new MaterialTimePicker.Builder()
|
||||||
|
.setTimeFormat(TimeFormat.CLOCK_12H)
|
||||||
|
.setHour(currHour)
|
||||||
|
.setMinute(currMin)
|
||||||
|
.setTitleText("开始时间选择")
|
||||||
|
.setPositiveButtonText("确认")
|
||||||
|
.setNegativeButtonText("取消")
|
||||||
|
.build();
|
||||||
|
endTimePicker = new MaterialTimePicker.Builder()
|
||||||
|
.setTimeFormat(TimeFormat.CLOCK_12H)
|
||||||
|
.setHour(currHour)
|
||||||
|
.setMinute(currMin)
|
||||||
|
.setTitleText("结束时间选择")
|
||||||
|
.setPositiveButtonText("确认")
|
||||||
|
.setNegativeButtonText("取消")
|
||||||
|
.build();
|
||||||
|
|
||||||
|
intentActivityResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
|
||||||
|
Intent data = result.getData();
|
||||||
|
int resultCode = result.getResultCode();
|
||||||
|
System.out.println("registerForActivityResult...........................");
|
||||||
|
if (resultCode == 100) {
|
||||||
|
assert data != null;
|
||||||
|
getIntent().putExtras(data.getExtras());
|
||||||
|
String latLon = getIntent().getExtras().getString(ModelFieldConstants.LOCATION);
|
||||||
|
if(!TextUtils.isEmpty(latLon)){
|
||||||
|
etLocation.setText(latLon);
|
||||||
|
}
|
||||||
|
}else if(resultCode == 200){
|
||||||
|
assert data != null;
|
||||||
|
getIntent().putExtras(data.getExtras());
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
courseName = bundle.getString(ModelFieldConstants.COURSE_NAME);
|
||||||
|
if(courseName != null){
|
||||||
|
tvCourseName.setText(courseName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setClickListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置点击事件
|
||||||
|
*/
|
||||||
|
private void setClickListener(){
|
||||||
|
tvCourseName.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(CreateSign.this, ChooseCourse.class);
|
||||||
|
intent.putExtras(getIntent().getExtras());
|
||||||
|
intentActivityResultLauncher.launch(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//点击添加图片
|
||||||
|
ivAddImg.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
String signCode = Objects.requireNonNull(etCode.getText()).toString();
|
||||||
|
if (TextUtils.isEmpty(signCode)){
|
||||||
|
Toast.makeText(CreateSign.this, "请先输入签到码", Toast.LENGTH_SHORT).show();
|
||||||
|
}else{
|
||||||
|
Bitmap codeBitmap = QRCodeUtil.createQRCode(signCode,500,500,null);
|
||||||
|
ivAddImg.setImageBitmap(codeBitmap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//设置回调方法,进行获取选择的时间,并将其刷新到界面
|
||||||
|
startTimePicker.addOnPositiveButtonClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int startHour = startTimePicker.getHour();
|
||||||
|
int startMin = startTimePicker.getMinute();
|
||||||
|
String startTime = String.valueOf(currYear) + "-" +
|
||||||
|
String.valueOf(currMonth) + "-" +
|
||||||
|
String.valueOf(currDay) + " " +
|
||||||
|
String.valueOf(startHour) + ":" +
|
||||||
|
String.valueOf(startMin) + ":" + "00";
|
||||||
|
try {
|
||||||
|
startTimeStamp = Long.parseLong(CommonUtils.dateToStamp(startTime, "yyyy-MM-dd hh:mm:ss"));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
etStartTime.setText(startTime);
|
||||||
|
hasChooseStartTime = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
endTimePicker.addOnPositiveButtonClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int endHour = endTimePicker.getHour();
|
||||||
|
int endMin = endTimePicker.getMinute();
|
||||||
|
String endTime = String.valueOf(currYear) + "-" +
|
||||||
|
String.valueOf(currMonth) + "-" +
|
||||||
|
String.valueOf(currDay) + " " +
|
||||||
|
String.valueOf(endHour) + ":" +
|
||||||
|
String.valueOf(endMin) + ":" + "00";
|
||||||
|
try {
|
||||||
|
endTimeStamp = Long.parseLong(CommonUtils.dateToStamp(endTime, "yyyy-MM-dd hh:mm:ss"));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
etEndTime.setText(endTime);
|
||||||
|
hasChooseEndTime = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//课程开始时间
|
||||||
|
etStartTime.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if(!startTimePicker.isAdded()){
|
||||||
|
startTimePicker.show(getSupportFragmentManager(), "Hello");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//课程结束时间
|
||||||
|
etEndTime.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if(!endTimePicker.isAdded()){
|
||||||
|
endTimePicker.show(getSupportFragmentManager(), "Hello");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//定位
|
||||||
|
etLocation.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(CreateSign.this, MapActivity.class);
|
||||||
|
intent.putExtras(getIntent().getExtras());
|
||||||
|
intentActivityResultLauncher.launch(intent);
|
||||||
|
|
||||||
|
// etLocation.setText("定位");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//保存按钮
|
||||||
|
abBtSave.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
String courseName = bundle.getString(ModelFieldConstants.COURSE_NAME);
|
||||||
|
String stuAmountStr = Objects.requireNonNull(etStuAmount.getText()).toString();
|
||||||
|
String location = Objects.requireNonNull(etLocation.getText()).toString();
|
||||||
|
String signCodeStr = Objects.requireNonNull(etCode.getText()).toString();
|
||||||
|
Long courseId = bundle.getLong(ModelFieldConstants.COURSE_ID);
|
||||||
|
Long userId = bundle.getLong(ModelFieldConstants.ID);
|
||||||
|
if(!TextUtils.isEmpty(courseName)){
|
||||||
|
if(!TextUtils.isEmpty(stuAmountStr)){
|
||||||
|
if(hasChooseStartTime && hasChooseEndTime){
|
||||||
|
if(startTimeStamp <= endTimeStamp){
|
||||||
|
if(!TextUtils.isEmpty(location)){
|
||||||
|
if(!TextUtils.isEmpty(signCodeStr)){
|
||||||
|
try{
|
||||||
|
Long stuAmount = Long.parseLong(stuAmountStr);
|
||||||
|
try{
|
||||||
|
Long signCode = Long.parseLong(signCodeStr);
|
||||||
|
CourseCreateSignRequest courseCreateSignRequest = new CourseCreateSignRequest();
|
||||||
|
courseCreateSignRequest.setCourseName(courseName);
|
||||||
|
courseCreateSignRequest.setTotal(stuAmount);
|
||||||
|
courseCreateSignRequest.setBeginTime(startTimeStamp);
|
||||||
|
courseCreateSignRequest.setEndTime(endTimeStamp);
|
||||||
|
courseCreateSignRequest.setCourseAddr(location);
|
||||||
|
courseCreateSignRequest.setCourseId(courseId);
|
||||||
|
courseCreateSignRequest.setUserId(userId);
|
||||||
|
courseCreateSignRequest.setSignCode(signCode);
|
||||||
|
handler = new Handler(new Handler.Callback() {
|
||||||
|
@Override
|
||||||
|
public boolean handleMessage(@NonNull Message msg) {
|
||||||
|
if(msg.arg1 == 200){
|
||||||
|
String error = (String) msg.obj;
|
||||||
|
Toast.makeText(CreateSign.this, error, Toast.LENGTH_SHORT).show();
|
||||||
|
}else if(msg.arg1 == 100){
|
||||||
|
Toast.makeText(CreateSign.this, "创建签到成功", Toast.LENGTH_SHORT).show();
|
||||||
|
//创建成功后直接结束当前活动,并且跳到查看签到状态
|
||||||
|
Intent intent = new Intent();
|
||||||
|
bundle = getIntent().getExtras();
|
||||||
|
bundle.putLong(ModelFieldConstants.NOW_SIGN_COURSE_ID, courseId);
|
||||||
|
bundle.putString(ModelFieldConstants.NOW_SIGN_COURSE_NAME, courseName);
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
setResult(100,intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
createSign(courseCreateSignRequest);
|
||||||
|
}catch (NumberFormatException numberFormatException){
|
||||||
|
Toast.makeText(CreateSign.this, "请输入数字作为签到码", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}catch (NumberFormatException numberFormatException){
|
||||||
|
Toast.makeText(CreateSign.this, "请输入正确的签到人数", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "请先输入签到口令", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "请先选择签到地点", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "时间设置错误", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "请先选择开始结束时间", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "请先输入待签到人数", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Toast.makeText(CreateSign.this, "请先选择课程", Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void createSign(CourseCreateSignRequest courseCreateSignRequest){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
System.out.println( "courseCreateSignRequest : " + courseCreateSignRequest.toString() + "..............................");
|
||||||
|
String json = JSON.toJSONString(courseCreateSignRequest);
|
||||||
|
String url = UrlConstants.TEACHER_INITIATE;
|
||||||
|
|
||||||
|
new PostBodyParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
Message message = new Message();
|
||||||
|
message.arg1 = 100;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
Message message = new Message();
|
||||||
|
message.arg1 = 200;
|
||||||
|
message.obj = baseResponse.getMsg();
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
}.postConnect(url, json);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityUserInfo;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
|
||||||
|
public class UserInfoAbout extends AppCompatActivity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_user_detail_about);
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityUserInfo;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
|
||||||
|
public class UserInfoRecord extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_user_detail_record);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
setClickListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setClickListener(){
|
||||||
|
//返回上一个活动,也就是个人信息部分
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,67 @@
|
|||||||
|
package com.example.stlink.activitys.fragmentChild.activityUserInfo;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.View;
|
||||||
|
import android.widget.Button;
|
||||||
|
import android.widget.ImageView;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import com.example.stlink.activitys.IdChooseActivity;
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
|
||||||
|
public class UserInfoSetting extends AppCompatActivity {
|
||||||
|
|
||||||
|
private Button btExit;
|
||||||
|
private Button btLoginOut;
|
||||||
|
private ImageView abIvTitle;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
setContentView(R.layout.activity_user_detail_setting);
|
||||||
|
|
||||||
|
initView();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(){
|
||||||
|
|
||||||
|
CommonUtils.changeStatusBar(this);
|
||||||
|
btExit = findViewById(R.id.bt_exit);
|
||||||
|
btLoginOut = findViewById(R.id.bt_login_out);
|
||||||
|
abIvTitle = findViewById(R.id.ab_iv_title);
|
||||||
|
|
||||||
|
setClickListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setClickListener(){
|
||||||
|
btExit.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// finish();//这个只是从方法栈中移除了当前活动
|
||||||
|
// System.exit(0); //同上
|
||||||
|
CommonUtils.exitApp(UserInfoSetting.this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
btLoginOut.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(UserInfoSetting.this, IdChooseActivity.class);
|
||||||
|
//退出登录后,禁止再退回来
|
||||||
|
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//返回上一个活动,也就是个人信息部分
|
||||||
|
abIvTitle.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.example.stlink.configs;
|
||||||
|
|
||||||
|
public interface IAdapter {
|
||||||
|
/*
|
||||||
|
* Item 单击事件后续处理
|
||||||
|
*/
|
||||||
|
interface OnRVItemClickListener {
|
||||||
|
void onClick(int position);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Item 长按事件后续处理
|
||||||
|
*/
|
||||||
|
interface OnRVItemLongClickListener {
|
||||||
|
boolean onLongClick(int position);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Item 移除事件后续处理
|
||||||
|
*/
|
||||||
|
interface OnRVItemRemoveListener{
|
||||||
|
void onRemove(int position);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,38 @@
|
|||||||
|
package com.example.stlink.configs;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
import android.database.sqlite.SQLiteOpenHelper;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主要用于建库和建表
|
||||||
|
*/
|
||||||
|
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
|
private final String SQL_CREATE_ENTRIES;
|
||||||
|
private final String SQL_DELETE_ENTRIES;
|
||||||
|
|
||||||
|
public MySQLiteOpenHelper(@Nullable Context context,
|
||||||
|
@Nullable String dbName,
|
||||||
|
@Nullable SQLiteDatabase.CursorFactory factory,
|
||||||
|
int version,
|
||||||
|
@Nullable String sqlCreateEntries,
|
||||||
|
@Nullable String sqlDeleteEntries) {
|
||||||
|
super(context, dbName, factory, version);
|
||||||
|
SQL_CREATE_ENTRIES = sqlCreateEntries;
|
||||||
|
SQL_DELETE_ENTRIES = sqlDeleteEntries;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(SQLiteDatabase db) {
|
||||||
|
db.execSQL(SQL_CREATE_ENTRIES);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
|
||||||
|
db.execSQL(SQL_DELETE_ENTRIES);
|
||||||
|
onCreate(db);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,76 @@
|
|||||||
|
package com.example.stlink.configs.adapter;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.model.domain.CourseSign;
|
||||||
|
import com.example.stlink.utils.CommonUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用于将课程数据渲染进ListView控件中进行显示
|
||||||
|
*/
|
||||||
|
public class StuCourseSignedAdapter extends RecyclerView.Adapter<StuCourseSignedAdapter.ViewHolder>{
|
||||||
|
|
||||||
|
private RecyclerView rvParent;
|
||||||
|
|
||||||
|
private final List<CourseSign> mCourseSign;
|
||||||
|
|
||||||
|
private final Context mContext;
|
||||||
|
private final int resourceId;
|
||||||
|
private int role;
|
||||||
|
|
||||||
|
private Handler handler;
|
||||||
|
|
||||||
|
public StuCourseSignedAdapter(@NonNull Context context, int resourceId, @NonNull List<CourseSign> mCourseSign, int role) {
|
||||||
|
this.mContext = context;
|
||||||
|
this.mCourseSign = mCourseSign;
|
||||||
|
this.resourceId = resourceId;
|
||||||
|
this.role = role;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||||
|
//指定一个父控件
|
||||||
|
rvParent = (RecyclerView) parent;
|
||||||
|
|
||||||
|
View view = LayoutInflater.from(mContext)
|
||||||
|
.inflate(resourceId, parent, false);
|
||||||
|
ViewHolder holder = new ViewHolder(view);
|
||||||
|
|
||||||
|
return holder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
|
||||||
|
CourseSign courseSign = mCourseSign.get(position);
|
||||||
|
System.out.println("mCourseSign[" + position + "]: " + courseSign);
|
||||||
|
Long signedTimeStamp = courseSign.getCreateTime();
|
||||||
|
holder.tvSignedTime.setText(CommonUtils.stampToDate(String.valueOf(signedTimeStamp), "yyyy-MM-dd hh:mm:ss"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mCourseSign.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static class ViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
TextView tvSignedTime;
|
||||||
|
public ViewHolder(@NonNull View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
tvSignedTime = itemView.findViewById(R.id.tv_signed_time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,39 @@
|
|||||||
|
package com.example.stlink.configs.adapter;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.lifecycle.Lifecycle;
|
||||||
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对碎片进行管理
|
||||||
|
*/
|
||||||
|
public class ViewPagerAdapter extends FragmentStateAdapter {
|
||||||
|
|
||||||
|
List<Fragment> list;
|
||||||
|
public ViewPagerAdapter(@NonNull FragmentManager fragmentManager, @NonNull Lifecycle lifecycle , List<Fragment> list) {
|
||||||
|
super(fragmentManager, lifecycle);
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ViewPagerAdapter(@NonNull FragmentActivity fragmentActivity, List<Fragment> list) {
|
||||||
|
super(fragmentActivity);
|
||||||
|
this.list = list;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return list.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public Fragment createFragment(int position) {
|
||||||
|
return list.get(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.example.stlink.configs.myControls;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.widget.ListView;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义ListView解决嵌套在ScrollView中时默认全展开
|
||||||
|
*/
|
||||||
|
public class MyListView extends ListView {
|
||||||
|
public MyListView(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
|
||||||
|
int expandedSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
|
||||||
|
super.onMeasure(widthMeasureSpec, expandedSpec);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package com.example.stlink.configs;
|
||||||
|
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
|
||||||
|
public interface onRecyclerViewItemClickListener{
|
||||||
|
void onItemClick(RecyclerView parent, View view, int position);
|
||||||
|
void onItemLongClick(RecyclerView parent, View view, int position);
|
||||||
|
}
|
@ -0,0 +1,239 @@
|
|||||||
|
package com.example.stlink.fragments;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Message;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.activitys.fragmentChild.activityStuClassList.CourseSignIn;
|
||||||
|
import com.example.stlink.configs.adapter.StuClassListFragAdapter;
|
||||||
|
import com.example.stlink.configs.onRecyclerViewItemClickListener;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
import com.example.stlink.model.domain.Course;
|
||||||
|
import com.example.stlink.model.domain.CourseSign;
|
||||||
|
import com.example.stlink.model.response.BaseResponse;
|
||||||
|
import com.example.stlink.model.response.data.CourseData;
|
||||||
|
import com.example.stlink.utils.httpUtils.GetUrlParamHttpUtils;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.internal.LinkedTreeMap;
|
||||||
|
import com.google.gson.reflect.TypeToken;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class StuClassListFragment extends Fragment {
|
||||||
|
|
||||||
|
private static RecyclerView rvStuCourseMsg;
|
||||||
|
private static List<CourseSign> courseSigns;
|
||||||
|
private static List<Long> courseIdList;
|
||||||
|
private static StuClassListFragAdapter adapter;
|
||||||
|
private static AppCompatActivity mAppCompatActivity;
|
||||||
|
private static SwipeRefreshLayout srlMyRefresh;
|
||||||
|
|
||||||
|
private int currentPage = 1;
|
||||||
|
private int size = 10;
|
||||||
|
|
||||||
|
private static Bundle bundle;
|
||||||
|
private static Handler handler;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
View view = inflater.inflate(R.layout.fragment_stu_class_msg, container, false);
|
||||||
|
initView(view);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static StuClassListFragment newInstance(String str, AppCompatActivity appCompatActivity){
|
||||||
|
mAppCompatActivity = appCompatActivity;
|
||||||
|
StuClassListFragment frag = new StuClassListFragment();
|
||||||
|
return frag;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initView(View view){
|
||||||
|
rvStuCourseMsg = view.findViewById(R.id.rv_stu_course_msg);
|
||||||
|
srlMyRefresh = view.findViewById(R.id.srl_my_refresh);
|
||||||
|
srlMyRefresh.setColorSchemeColors(Color.parseColor("#ff0000"),Color.parseColor("#00ff00"));
|
||||||
|
refreshData();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static void refreshData(){
|
||||||
|
courseIdList = new ArrayList<>();
|
||||||
|
courseSigns = new ArrayList<>();
|
||||||
|
adapter = new StuClassListFragAdapter(
|
||||||
|
mAppCompatActivity,
|
||||||
|
R.layout.card_class_unsigned_msg,
|
||||||
|
courseSigns,
|
||||||
|
0
|
||||||
|
);
|
||||||
|
LinearLayoutManager llm = new LinearLayoutManager(mAppCompatActivity);
|
||||||
|
rvStuCourseMsg.setLayoutManager(llm);
|
||||||
|
rvStuCourseMsg.setAdapter(adapter);
|
||||||
|
|
||||||
|
bundle = mAppCompatActivity.getIntent().getExtras();
|
||||||
|
|
||||||
|
getStuSelectedCourseList();
|
||||||
|
//只有在获取当前学生所选课程的所有id之后才能遍历
|
||||||
|
handler = new Handler(new Handler.Callback() {
|
||||||
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
|
@Override
|
||||||
|
public boolean handleMessage(@NonNull Message msg) {
|
||||||
|
if(msg.arg1 == 100){
|
||||||
|
getToBeSignList();
|
||||||
|
setListener();
|
||||||
|
}else if(msg.arg1 == 200){
|
||||||
|
adapter.notifyDataSetChanged();
|
||||||
|
System.out.println("StuClassListFragment:courseSigns = " + courseSigns.toString());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为每一项item设置按钮点击监听事件
|
||||||
|
*/
|
||||||
|
private static void setListener(){
|
||||||
|
adapter.setOnItemClickListener(new onRecyclerViewItemClickListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemClick(RecyclerView parent, View view, int position) {
|
||||||
|
CourseSign courseSign = courseSigns.get(position);
|
||||||
|
bundle.putSerializable(ModelFieldConstants.COURSE_SIGN, courseSign);
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, CourseSignIn.class);
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
mAppCompatActivity.startActivity(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemLongClick(RecyclerView parent, View view, int position) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
srlMyRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||||
|
@Override
|
||||||
|
public void onRefresh() {
|
||||||
|
refreshData();
|
||||||
|
srlMyRefresh.setRefreshing(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取学生选择的课程列表
|
||||||
|
*/
|
||||||
|
private static void getStuSelectedCourseList(){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
final String urlParam = ModelFieldConstants.USER_ID + "=" + bundle.getLong(ModelFieldConstants.ID);
|
||||||
|
final String url = UrlConstants.STUDENT_COURSE + "?" + urlParam;
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
System.out.println("StuClassListFragment:baseResponse : " + baseResponse);
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDataMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDataMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到CourseData类中
|
||||||
|
String jsonString = gson.toJson(courseDataMap);
|
||||||
|
CourseData<Course> courseData = gson.fromJson(jsonString, new TypeToken<CourseData<Course>>() {}.getType());
|
||||||
|
|
||||||
|
List<Course> records = courseData.getRecords();
|
||||||
|
|
||||||
|
for(Course course : records){
|
||||||
|
courseIdList.add(course.getmCourseId());
|
||||||
|
}
|
||||||
|
|
||||||
|
Message message = new Message();
|
||||||
|
message.arg1 = 100;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) { }
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取已选课程待签到内容
|
||||||
|
*/
|
||||||
|
private static void getToBeSignList(){
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
for(Long courseId : courseIdList){
|
||||||
|
String urlParam = ModelFieldConstants.COURSE_ID + "=" + courseId + "&" +
|
||||||
|
ModelFieldConstants.USER_ID + "=" + bundle.getLong(ModelFieldConstants.ID) + "&" +
|
||||||
|
ModelFieldConstants.COURSE_SIGN_STATUS + "=" + 0;
|
||||||
|
String url = UrlConstants.STUDENT_SIGN_LIST + "?" + urlParam;
|
||||||
|
new GetUrlParamHttpUtils() {
|
||||||
|
@Override
|
||||||
|
public void nextMethod(BaseResponse<Object> baseResponse) {
|
||||||
|
if(baseResponse.getData() != null){
|
||||||
|
System.out.println("StuClassListFragment:courseDataBaseResponse.getData() = " + baseResponse.getData() + "...............");
|
||||||
|
|
||||||
|
//解析数据
|
||||||
|
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
|
||||||
|
Object obj = baseResponse.getData();
|
||||||
|
LinkedTreeMap<String, String> courseDataMap = null;
|
||||||
|
if(obj instanceof LinkedTreeMap){
|
||||||
|
courseDataMap = (LinkedTreeMap<String, String>) obj;
|
||||||
|
}
|
||||||
|
//将LinkedTreeMap中字段映射到CourseData类中
|
||||||
|
//array:学生获取所选课程签到列表返回实体
|
||||||
|
String jsonString = gson.toJson(courseDataMap);
|
||||||
|
CourseData<CourseSign> courseData = gson.fromJson(jsonString, new TypeToken<CourseData<CourseSign>>() {}.getType());
|
||||||
|
for(CourseSign courseSign : courseData.getRecords()){
|
||||||
|
courseSign.setCourseId(courseId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(courseData.getRecords().size() != 0){
|
||||||
|
courseSigns.addAll(courseData.getRecords());
|
||||||
|
System.out.println("Here......................");
|
||||||
|
Message message = new Message();
|
||||||
|
message.arg1 = 200;
|
||||||
|
handler.sendMessage(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void failedMethod(BaseResponse<Object> baseResponse) { }
|
||||||
|
}.getConnect(url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,110 @@
|
|||||||
|
package com.example.stlink.fragments;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.viewpager2.widget.ViewPager2;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.utils.activityUtil.TeaClassListUtil;
|
||||||
|
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class TeaCourseListFragment extends Fragment {
|
||||||
|
|
||||||
|
private static TeaClassListUtil teaClassListUtil;
|
||||||
|
|
||||||
|
private static FloatingActionButton ftBtRefresh;
|
||||||
|
|
||||||
|
private static AppCompatActivity mAppCompatActivity;
|
||||||
|
private static ViewPager2 viewPager2;
|
||||||
|
|
||||||
|
private static ActivityResultLauncher<Intent> intentActivityResultLauncher;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
View view = inflater.inflate(R.layout.fragment_tea_course_list, container, false);
|
||||||
|
initView(view);
|
||||||
|
initPage();
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TeaCourseListFragment newInstance(String str, AppCompatActivity appCompatActivity){
|
||||||
|
TeaCourseListFragment frag = new TeaCourseListFragment();
|
||||||
|
mAppCompatActivity = appCompatActivity;
|
||||||
|
|
||||||
|
intentActivityResultLauncher = appCompatActivity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
|
||||||
|
Intent data = result.getData();
|
||||||
|
int resultCode = result.getResultCode();
|
||||||
|
System.out.println("registerForActivityResult...........................");
|
||||||
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return frag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化界面
|
||||||
|
*/
|
||||||
|
@SuppressLint("UseCompatLoadingForDrawables")
|
||||||
|
private void initView(View view){
|
||||||
|
|
||||||
|
teaClassListUtil = new TeaClassListUtil(view, mAppCompatActivity);
|
||||||
|
ftBtRefresh = view.findViewById(R.id.ft_bt_refresh);
|
||||||
|
viewPager2 = view.findViewById(R.id.nav_course_list_fragment);
|
||||||
|
|
||||||
|
refreshData();
|
||||||
|
|
||||||
|
setClickListener();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void initPage(){
|
||||||
|
|
||||||
|
List<Fragment> list = new ArrayList<>();
|
||||||
|
CrsUnfinishedListFragment crsUnfinishedListFragment = CrsUnfinishedListFragment.newInstance("未结课", mAppCompatActivity);
|
||||||
|
CrsFinishedListFragment crsFinishedListFragment = CrsFinishedListFragment.newInstance("已结课", mAppCompatActivity);
|
||||||
|
list.add(crsUnfinishedListFragment);
|
||||||
|
list.add(crsFinishedListFragment);
|
||||||
|
teaClassListUtil.initPage(list);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 刷新数据
|
||||||
|
*/
|
||||||
|
private void refreshData(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为当前布局上的按钮添加点击监听事件
|
||||||
|
*/
|
||||||
|
private void setClickListener(){
|
||||||
|
//点击刷新页面
|
||||||
|
ftBtRefresh.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int position = viewPager2.getCurrentItem();
|
||||||
|
if (position == 0){
|
||||||
|
CrsUnfinishedListFragment.refreshData();
|
||||||
|
}else{
|
||||||
|
CrsFinishedListFragment.refreshData();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,143 @@
|
|||||||
|
package com.example.stlink.fragments;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.viewpager2.widget.ViewPager2;
|
||||||
|
|
||||||
|
import com.example.stlink.R;
|
||||||
|
import com.example.stlink.activitys.fragmentChild.activityTeaHome.CheckCourseSign;
|
||||||
|
import com.example.stlink.activitys.fragmentChild.activityTeaHome.ChooseCourse;
|
||||||
|
import com.example.stlink.activitys.fragmentChild.activityTeaHome.CreateCourse;
|
||||||
|
import com.example.stlink.activitys.fragmentChild.activityTeaHome.CreateSign;
|
||||||
|
import com.example.stlink.model.constants.ModelFieldConstants;
|
||||||
|
|
||||||
|
public class TeaHomeFragment extends Fragment{
|
||||||
|
|
||||||
|
private Button btCodeCheck;
|
||||||
|
private Button btWordCheck;
|
||||||
|
private Button btCreateClass;
|
||||||
|
private Button btManageClass;
|
||||||
|
|
||||||
|
private static ViewPager2 vp2;
|
||||||
|
|
||||||
|
private Bundle bundle;
|
||||||
|
|
||||||
|
private static ActivityResultLauncher<Intent> intentActivityResultLauncher;
|
||||||
|
|
||||||
|
private static AppCompatActivity mAppCompatActivity;
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||||
|
View view = inflater.inflate(R.layout.fragment_tea_home, container, false);
|
||||||
|
initView(view);
|
||||||
|
return view;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TeaHomeFragment newInstance(String str, AppCompatActivity appCompatActivity, ViewPager2 viewPager2){
|
||||||
|
mAppCompatActivity = appCompatActivity;
|
||||||
|
TeaHomeFragment frag = new TeaHomeFragment();
|
||||||
|
vp2 = viewPager2;
|
||||||
|
intentActivityResultLauncher = appCompatActivity.registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
|
||||||
|
Intent data = result.getData();
|
||||||
|
int resultCode = result.getResultCode();
|
||||||
|
|
||||||
|
System.out.println("registerForActivityResult...........................");
|
||||||
|
if (resultCode == Activity.RESULT_OK) {
|
||||||
|
//将活动销毁返回的数据刷新到当前活动,同时刷新当前布局
|
||||||
|
refreshData();
|
||||||
|
}else if (resultCode == 100){
|
||||||
|
assert data != null;
|
||||||
|
mAppCompatActivity.getIntent().putExtras(data.getExtras());
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, CheckCourseSign.class);
|
||||||
|
intent.putExtras(mAppCompatActivity.getIntent().getExtras());
|
||||||
|
mAppCompatActivity.startActivity(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return frag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化界面
|
||||||
|
*/
|
||||||
|
private void initView(View view){
|
||||||
|
btCodeCheck = view.findViewById(R.id.bt_code_check);
|
||||||
|
btWordCheck = view.findViewById(R.id.bt_word_check);
|
||||||
|
btCreateClass = view.findViewById(R.id.bt_create_class);
|
||||||
|
btManageClass = view.findViewById(R.id.bt_manage_class);
|
||||||
|
|
||||||
|
setClickListener();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void refreshData(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 为当前布局上的按钮添加点击监听事件
|
||||||
|
*/
|
||||||
|
private void setClickListener(){
|
||||||
|
//查看签到
|
||||||
|
btCodeCheck.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
bundle = mAppCompatActivity.getIntent().getExtras();
|
||||||
|
String nowSignCourseName = bundle.getString(ModelFieldConstants.NOW_SIGN_COURSE_NAME);
|
||||||
|
if(nowSignCourseName != null){
|
||||||
|
System.out.println("nowSignCourseName = " + nowSignCourseName + "......................");
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, CheckCourseSign.class);
|
||||||
|
intent.putExtras(mAppCompatActivity.getIntent().getExtras());
|
||||||
|
startActivity(intent);
|
||||||
|
}else{
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, ChooseCourse.class);
|
||||||
|
bundle.putInt(ModelFieldConstants.COURSE_CHOOSE_SELECT, 1);
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
startActivity(intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//创建签到
|
||||||
|
btWordCheck.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, CreateSign.class);
|
||||||
|
bundle = mAppCompatActivity.getIntent().getExtras();
|
||||||
|
bundle.putInt(ModelFieldConstants.COURSE_CHOOSE_SELECT, 0);
|
||||||
|
intent.putExtras(bundle);
|
||||||
|
intentActivityResultLauncher.launch(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//创建班级
|
||||||
|
btCreateClass.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
Intent intent = new Intent(mAppCompatActivity, CreateCourse.class);
|
||||||
|
intent.putExtras(mAppCompatActivity.getIntent().getExtras());
|
||||||
|
intentActivityResultLauncher.launch(intent);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//管理班级
|
||||||
|
btManageClass.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@SuppressLint("ResourceType")
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
vp2.setCurrentItem(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
package com.example.stlink.model.constants;
|
||||||
|
|
||||||
|
import com.example.stlink.model.contract.UserInfoContract;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本地SQLite相关的SQL语句定义
|
||||||
|
*/
|
||||||
|
public final class SQLiteConstants {
|
||||||
|
|
||||||
|
/*==================================================================================================*/
|
||||||
|
public static final String USER_INFO_SQL_CREATE_ENTRIES =
|
||||||
|
"CREATE TABLE IF NOT EXISTS " + UserInfoContract.UserEntry.TABLE_NAME + " ( " +
|
||||||
|
UserInfoContract.UserEntry._ID + " INTEGER PRIMARY KEY, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_APP_KEY + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_AVATAR + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_COLLEGE_NAME + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_CREATE_TIME + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_EMAIL + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_GENDER + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_ID + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_ID_NUMBER + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_IN_SCHOOL_TIME + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_LAST_UPDATE_TIME + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_PHONE + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_REAL_NAME + " VARCHAR(256), " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_ROLE_ID + " INTEGER, " +
|
||||||
|
UserInfoContract.UserEntry.COLUMN_NAME_USER_NAME + " VARCHAR(256) " +
|
||||||
|
")";
|
||||||
|
public static final String USER_INFO_SQL_DELETE_ENTRIES =
|
||||||
|
"DROP TABLE IF EXISTS " + UserInfoContract.UserEntry.TABLE_NAME;
|
||||||
|
public static final int DATABASE_FIRST_VERSION = 1;
|
||||||
|
public static final String USER_INFO_DATABASE_NAME = "userInfo.db";
|
||||||
|
/*==================================================================================================*/
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.example.stlink.model.domain;
|
||||||
|
|
||||||
|
import com.google.gson.annotations.SerializedName;
|
||||||
|
|
||||||
|
public class Course {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 院校名
|
||||||
|
*/
|
||||||
|
@SerializedName("collegeName")
|
||||||
|
private String mCollegeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程表主键
|
||||||
|
*/
|
||||||
|
@SerializedName("courseId")
|
||||||
|
private Long mCourseId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程名
|
||||||
|
*/
|
||||||
|
@SerializedName("courseName")
|
||||||
|
private String mCourseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程图片
|
||||||
|
*/
|
||||||
|
@SerializedName("coursePhoto")
|
||||||
|
private String mCoursePhoto;
|
||||||
|
|
||||||
|
public String getmCollegeName() {
|
||||||
|
return mCollegeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setmCollegeName(String mCollegeName) {
|
||||||
|
this.mCollegeName = mCollegeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getmCourseId() {
|
||||||
|
return mCourseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setmCourseId(Long mCourseId) {
|
||||||
|
this.mCourseId = mCourseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getmCourseName() {
|
||||||
|
return mCourseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setmCourseName(String mCourseName) {
|
||||||
|
this.mCourseName = mCourseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getmCoursePhoto() {
|
||||||
|
return mCoursePhoto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setmCoursePhoto(String mCoursePhoto) {
|
||||||
|
this.mCoursePhoto = mCoursePhoto;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Course{" +
|
||||||
|
"mCollegeName='" + mCollegeName + '\'' +
|
||||||
|
", mCourseId=" + mCourseId +
|
||||||
|
", mCourseName='" + mCourseName + '\'' +
|
||||||
|
", mCoursePhoto='" + mCoursePhoto + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,81 @@
|
|||||||
|
package com.example.stlink.model.domain;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class CourseSign implements Serializable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 上课地点
|
||||||
|
*/
|
||||||
|
private String courseAddr;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程名
|
||||||
|
*/
|
||||||
|
private String courseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程id
|
||||||
|
*/
|
||||||
|
private Long courseId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private Long createTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
|
private Long userSignId;
|
||||||
|
|
||||||
|
public String getCourseAddr() {
|
||||||
|
return courseAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourseAddr(String courseAddr) {
|
||||||
|
this.courseAddr = courseAddr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCourseName() {
|
||||||
|
return courseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourseName(String courseName) {
|
||||||
|
this.courseName = courseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCreateTime() {
|
||||||
|
return createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCreateTime(Long createTime) {
|
||||||
|
this.createTime = createTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getUserSignId() {
|
||||||
|
return userSignId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserSignId(Long userSignId) {
|
||||||
|
this.userSignId = userSignId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getCourseId() {
|
||||||
|
return courseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourseId(Long courseId) {
|
||||||
|
this.courseId = courseId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "CourseSign{" +
|
||||||
|
"courseAddr='" + courseAddr + '\'' +
|
||||||
|
", courseName='" + courseName + '\'' +
|
||||||
|
", createTime=" + createTime +
|
||||||
|
", userSignId=" + userSignId +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.example.stlink.model.request;
|
||||||
|
|
||||||
|
import com.example.stlink.model.constants.UrlConstants;
|
||||||
|
|
||||||
|
public class AllCourseRequest {
|
||||||
|
|
||||||
|
private Integer current;
|
||||||
|
|
||||||
|
private Integer size;
|
||||||
|
|
||||||
|
public Integer getCurrent() {
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCurrent(Integer current) {
|
||||||
|
this.current = current;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getSize() {
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSize(Integer size) {
|
||||||
|
this.size = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
String retValue;
|
||||||
|
retValue = "?" + "&appId=" + UrlConstants.APP_ID
|
||||||
|
+ "&appSecret=" + UrlConstants.APP_SECRET
|
||||||
|
+ "¤t" + current
|
||||||
|
+ "&size" + size;
|
||||||
|
return retValue;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,141 @@
|
|||||||
|
package com.example.stlink.model.request;
|
||||||
|
|
||||||
|
import com.google.gson.internal.bind.util.ISO8601Utils;
|
||||||
|
|
||||||
|
public class CourseCreateRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 院校名
|
||||||
|
*/
|
||||||
|
private String collegeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程名
|
||||||
|
*/
|
||||||
|
private String courseName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程的资源图片链接【需要先上传图片获取链接】
|
||||||
|
*/
|
||||||
|
private String coursePhoto;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程结束时间(时间戳)
|
||||||
|
*/
|
||||||
|
private Long endTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 课程简介
|
||||||
|
*/
|
||||||
|
private String introduce;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 当前登录真实姓名
|
||||||
|
*/
|
||||||
|
private String realName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 课程开始时间(时间戳)
|
||||||
|
*/
|
||||||
|
private Long startTime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当前登录用户id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* 当前登录用户名
|
||||||
|
*/
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
public String getCollegeName() {
|
||||||
|
return collegeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCollegeName(String collegeName) {
|
||||||
|
this.collegeName = collegeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCourseName() {
|
||||||
|
return courseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCourseName(String courseName) {
|
||||||
|
this.courseName = courseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCoursePhoto() {
|
||||||
|
return coursePhoto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCoursePhoto(String coursePhoto) {
|
||||||
|
this.coursePhoto = coursePhoto;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getEndTime() {
|
||||||
|
return endTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEndTime(Long endTime) {
|
||||||
|
this.endTime = endTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIntroduce() {
|
||||||
|
return introduce;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIntroduce(String introduce) {
|
||||||
|
this.introduce = introduce;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getRealName() {
|
||||||
|
return realName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRealName(String realName) {
|
||||||
|
this.realName = realName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getStartTime() {
|
||||||
|
return startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartTime(Long startTime) {
|
||||||
|
this.startTime = startTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(Long userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserName(String userName) {
|
||||||
|
this.userName = userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "CourseCreateRequest{" +
|
||||||
|
"collegeName='" + collegeName + '\'' +
|
||||||
|
", courseName='" + courseName + '\'' +
|
||||||
|
", coursePhoto='" + coursePhoto + '\'' +
|
||||||
|
", endTime=" + endTime +
|
||||||
|
", introduce='" + introduce + '\'' +
|
||||||
|
", realName='" + realName + '\'' +
|
||||||
|
", startTime=" + startTime +
|
||||||
|
", userId=" + userId +
|
||||||
|
", userName='" + userName + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.example.stlink.model.request;
|
||||||
|
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
public class StuSignRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 签到码
|
||||||
|
*/
|
||||||
|
private Integer signCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当钱登录用户的主键id
|
||||||
|
*/
|
||||||
|
private Long userId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学生获取到的签到表主键id
|
||||||
|
*/
|
||||||
|
private Long userSignId;
|
||||||
|
|
||||||
|
public Integer getSignCode() {
|
||||||
|
return signCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSignCode(Integer signCode) {
|
||||||
|
this.signCode = signCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getUserId() {
|
||||||
|
return userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserId(Long userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getUserSignId() {
|
||||||
|
return userSignId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserSignId(Long userSignId) {
|
||||||
|
this.userSignId = userSignId;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "StuSignRequest{" +
|
||||||
|
"signCode=" + signCode +
|
||||||
|
", userId=" + userId +
|
||||||
|
", userSignId=" + userSignId +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.example.stlink.model.request;
|
||||||
|
|
||||||
|
public class UserRegisterRequest {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 密码
|
||||||
|
*/
|
||||||
|
private String password;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 角色
|
||||||
|
*/
|
||||||
|
private Integer roleId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 用户名
|
||||||
|
*/
|
||||||
|
private String userName;
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPassword(String password) {
|
||||||
|
this.password = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getRoleId() {
|
||||||
|
return roleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRoleId(Integer roleId) {
|
||||||
|
this.roleId = roleId;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUserName(String userName) {
|
||||||
|
this.userName = userName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "UserRegisterRequest{" +
|
||||||
|
"password='" + password + '\'' +
|
||||||
|
", roleId=" + roleId +
|
||||||
|
", userName='" + userName + '\'' +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,45 @@
|
|||||||
|
package com.example.stlink.model.response;
|
||||||
|
|
||||||
|
public class BaseResponse <T> {
|
||||||
|
|
||||||
|
private int code;
|
||||||
|
private String msg;
|
||||||
|
private T data;
|
||||||
|
|
||||||
|
public final static int RESPONSE_SUCCESS = 0;
|
||||||
|
|
||||||
|
public BaseResponse(){}
|
||||||
|
|
||||||
|
public int getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCode(int code) {
|
||||||
|
this.code = code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMsg() {
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMsg(String msg) {
|
||||||
|
this.msg = msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T getData() {
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setData(T data) {
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "BaseResponse{" +
|
||||||
|
"code=" + code +
|
||||||
|
", msg='" + msg + '\'' +
|
||||||
|
", data=" + data +
|
||||||
|
'}';
|
||||||
|
}
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue