From ceddc78013e994b76c28cbfef81bbdce8cc48152 Mon Sep 17 00:00:00 2001 From: jianbo <263303411@qq.com> Date: Mon, 17 Aug 2020 17:56:42 +0800 Subject: [PATCH] d --- app/build.gradle | 5 +- app/libs/eventbus-2.4.0.jar | Bin 0 -> 45282 bytes app/src/main/AndroidManifest.xml | 16 +- .../administrator/seven/BaseApplication.java | 2 + .../seven/base/BaseActivity.java | 9 + .../seven/base/BaseFragment.java | 38 + .../administrator/seven/db/DbBean.java | 4 + .../seven/db/DbRecordBeanData.java | 104 +++ .../seven/db/dao/DataBaseHelper.java | 126 ++++ .../seven/db/dao/DbRecordDao.java | 119 ++++ .../seven/dialog/PersonnelDialogHelptwo.java | 72 ++ .../main/Fragment/mvp/model/MyModelImpl.java | 14 +- .../mvp/model/LoginPasswordModelImpl.java | 2 +- .../main/kehu/Bean/CustomerListBean.java | 169 +++++ .../seven/main/kehu/Bean/FpListBean.java | 185 +++++ .../seven/main/kehu/Bean/WxuSerinfo.java | 38 + .../main/kehu/Bean/customerFPListBean.java | 139 ++++ .../seven/main/kehu/Bean/fenpeisuccess.java | 23 + .../{entity => Bean}/markingYiliushi.java | 2 +- .../seven/main/kehu/CustomerFragment.java | 106 ++- .../main/kehu/Dialog/CusOperationDialog.java | 101 +++ .../seven/main/kehu/DistriFragment.java | 27 +- .../seven/main/kehu/TraceFragment.java | 8 +- .../kehu/activity/AllocationActivity.java | 219 ++++++ .../seven/main/kehu/activity/ShowAty.java | 31 + .../main/kehu/adapter/AllocationAdapter.java | 157 ++++ .../main/kehu/adapter/CusListAdapter.java | 31 +- .../main/kehu/adapter/DisListAdapter.java | 49 +- .../main/kehu/adapter/MarkingTwoAdapter.java | 2 +- .../seven/network/Constants.java | 33 - .../seven/okgonet/HttpConstants.java | 610 +--------------- .../administrator/seven/okgonet/NetApi.java | 137 ++++ .../administrator/seven/utils/AbStrUtil.java | 671 ++++++++++++++++++ .../administrator/seven/utils/GlideTools.java | 666 +++++++++++++++++ .../checkVersionsUtils/ProfileSpUtils.java | 17 +- .../seven/wxapi/WXEntryActivity.java | 2 +- .../main/res/drawable/bg_drainting_phone.xml | 10 + .../res/drawable/bg_marking_username_two.xml | 15 + app/src/main/res/drawable/marking_cheched.png | Bin 0 -> 743 bytes .../main/res/drawable/shape_allocation_tv.xml | 6 + app/src/main/res/drawable/shape_recy_disl.xml | 7 + .../main/res/layout/activity_allocation.xml | 77 ++ app/src/main/res/layout/allocation_item.xml | 69 ++ app/src/main/res/layout/cuslist_item.xml | 1 + app/src/main/res/layout/disliat_item.xml | 131 ++-- app/src/main/res/layout/fragment_kehu.xml | 18 +- .../res/layout/item_personnel_dialog_two.xml | 61 ++ app/src/main/res/layout/item_recy_dislist.xml | 39 + app/src/main/res/layout/mine_exit_dialog.xml | 49 -- app/src/main/res/layout/qiangdan_dialog.xml | 96 +++ .../res/mipmap-hdpi/icon_cheched_false.png | Bin 0 -> 1065 bytes .../res/mipmap-hdpi/icon_cheched_true.png | Bin 0 -> 1201 bytes app/src/main/res/mipmap-hdpi/icon_fenpei.png | Bin 0 -> 575 bytes .../res/mipmap-mdpi/icon_cheched_false.png | Bin 0 -> 582 bytes .../res/mipmap-mdpi/icon_cheched_true.png | Bin 0 -> 687 bytes app/src/main/res/mipmap-mdpi/icon_fenpei.png | Bin 0 -> 359 bytes .../res/mipmap-xhdpi/icon_cheched_false.png | Bin 0 -> 1583 bytes .../res/mipmap-xhdpi/icon_cheched_true.png | Bin 0 -> 1001 bytes app/src/main/res/mipmap-xhdpi/icon_fenpei.png | Bin 0 -> 540 bytes .../res/mipmap-xxhdpi/icon_cheched_false.png | Bin 0 -> 2459 bytes .../res/mipmap-xxhdpi/icon_cheched_true.png | Bin 0 -> 2482 bytes .../main/res/mipmap-xxhdpi/icon_fenpei.png | Bin 0 -> 1116 bytes .../res/mipmap-xxxhdpi/icon_cheched_false.png | Bin 0 -> 2401 bytes .../res/mipmap-xxxhdpi/icon_cheched_true.png | Bin 0 -> 1996 bytes .../main/res/mipmap-xxxhdpi/icon_fenpei.png | Bin 0 -> 965 bytes app/src/main/res/values/colors.xml | 3 +- app/src/main/res/values/styles.xml | 14 + 67 files changed, 3698 insertions(+), 832 deletions(-) create mode 100644 app/libs/eventbus-2.4.0.jar create mode 100644 app/src/main/java/com/example/administrator/seven/db/DbBean.java create mode 100644 app/src/main/java/com/example/administrator/seven/db/DbRecordBeanData.java create mode 100644 app/src/main/java/com/example/administrator/seven/db/dao/DataBaseHelper.java create mode 100644 app/src/main/java/com/example/administrator/seven/db/dao/DbRecordDao.java create mode 100644 app/src/main/java/com/example/administrator/seven/dialog/PersonnelDialogHelptwo.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Bean/CustomerListBean.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Bean/FpListBean.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Bean/WxuSerinfo.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Bean/customerFPListBean.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Bean/fenpeisuccess.java rename app/src/main/java/com/example/administrator/seven/main/kehu/{entity => Bean}/markingYiliushi.java (99%) create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/Dialog/CusOperationDialog.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/activity/AllocationActivity.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/kehu/adapter/AllocationAdapter.java delete mode 100644 app/src/main/java/com/example/administrator/seven/network/Constants.java create mode 100644 app/src/main/java/com/example/administrator/seven/utils/AbStrUtil.java create mode 100644 app/src/main/java/com/example/administrator/seven/utils/GlideTools.java create mode 100644 app/src/main/res/drawable/bg_drainting_phone.xml create mode 100644 app/src/main/res/drawable/bg_marking_username_two.xml create mode 100644 app/src/main/res/drawable/marking_cheched.png create mode 100644 app/src/main/res/drawable/shape_allocation_tv.xml create mode 100644 app/src/main/res/drawable/shape_recy_disl.xml create mode 100644 app/src/main/res/layout/activity_allocation.xml create mode 100644 app/src/main/res/layout/allocation_item.xml create mode 100644 app/src/main/res/layout/item_personnel_dialog_two.xml create mode 100644 app/src/main/res/layout/item_recy_dislist.xml delete mode 100644 app/src/main/res/layout/mine_exit_dialog.xml create mode 100644 app/src/main/res/layout/qiangdan_dialog.xml create mode 100644 app/src/main/res/mipmap-hdpi/icon_cheched_false.png create mode 100644 app/src/main/res/mipmap-hdpi/icon_cheched_true.png create mode 100644 app/src/main/res/mipmap-hdpi/icon_fenpei.png create mode 100644 app/src/main/res/mipmap-mdpi/icon_cheched_false.png create mode 100644 app/src/main/res/mipmap-mdpi/icon_cheched_true.png create mode 100644 app/src/main/res/mipmap-mdpi/icon_fenpei.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_cheched_false.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_cheched_true.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_fenpei.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_cheched_false.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_cheched_true.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_fenpei.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_cheched_false.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_cheched_true.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_fenpei.png diff --git a/app/build.gradle b/app/build.gradle index 73af72d..ad9d36a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,9 +46,12 @@ dependencies { implementation files('libs/wechat-sdk-android-without-mta-1.0.2.jar') implementation files('libs/ShareSDK-Wechat-Core-2.8.3.jar') implementation files('libs/tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346.jar') - //必须使用 implementation 'com.lzy.net:okgo:3.0.4' implementation 'com.lzy.net:okrx2:2.0.2' implementation 'com.lzy.net:okserver:2.0.5' + //引入ormlite + implementation 'com.j256.ormlite:ormlite-core:5.1' + implementation 'com.j256.ormlite:ormlite-android:5.1' + implementation files('libs/eventbus-2.4.0.jar') } diff --git a/app/libs/eventbus-2.4.0.jar b/app/libs/eventbus-2.4.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..fd5ae26339bda5cd9e78b3d27d835a015666f663 GIT binary patch literal 45282 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�j$FdY6oB3}%K&7bMBTpOek@dmza% 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
  • )8kO_cTe6c?E>>uEdGd}74k^_t3@DwRrq;jmnsm(ocK&Y@&h zL0*(&SNyS)_5ma&6vz)778b&$(MlY25&he)3S>0%=Ya}w@FTYeLS9@=m{D3mf*HJ7 zl^^71e9#kqI9y@=c;=r+egG}#(Z8F?3oA%Vh^wkG$xDC}el!5Rwf}X1TyFk6eh9mP z9)n!7?rVVj*YhEMG)VcQfrXQqnVpmUGkceN+unuyqixTBv^8@BW#jz^fjV14`y3Rn z1?ZzK<-gS-Ao2sQ{|n(?HeEm0zXLy^8E?4ISkRRn4(fNhUyy8||NhQ5OvKp4+QP}+ z)z0)j?qmiqtr=tz5)SHCieI>hAf?}N|8=_%adrO7Obk5IcRDmVNT8GV`wt=ls37jW zMAkn(%!3oL=RZ8&0>!2Wij(=57do$-74YYlw35)gP66f(yz z@F>t5=YPUMGmt-Q165s&UH%+2z~k>Pnn)iYfPjz|f`B0VMIs#aeu>|Q3|?UPFJyi| zBIEtMU;LiH!vwFxd57%=RV2BuC%~$5f`h?JK;D7#K?BwAz`rR72@VA>uyzMc1I;9V z2mLSQ*1*BwrNi#Pc%a?YzXShN&FJ?p7x{-Lc{I?g{Z%_Pw_paGR<-1w5m_tpILX1%4XfZcle2+{S-b@}a7S;p{(JPlHaq?oy8v)O@NDfn!5q8)pWrXaCE#-43AcB0 z@{a#6x!=D?;0a)NG8FFrOy)n*!NAW5JQL?m3dZZ7O5NLa;Mo&*LQOvZQ0Vua2EOI? zPGBqW?+N_94Y=Sv2)>EyP8TWcpXuJWr3+jY{44xB)!^uVr26~L1YhO8!?z{hhyNdI z-r#2ezSeOkLzZ=q%zs(=0H=d5FWk|QvhShav)G^{3k{kdK|s)gehfgLwe50${Plk( CYA!PX literal 0 HcmV?d00001 diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1649b7f..2e54255 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,12 +23,10 @@ android:screenOrientation="portrait" android:theme="@style/SplashTheme"> - - - - - - + + + + - @@ -58,6 +55,11 @@ + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/BaseApplication.java b/app/src/main/java/com/example/administrator/seven/BaseApplication.java index f7fe94e..c0ce0e8 100644 --- a/app/src/main/java/com/example/administrator/seven/BaseApplication.java +++ b/app/src/main/java/com/example/administrator/seven/BaseApplication.java @@ -3,6 +3,7 @@ package com.example.administrator.seven; import android.app.Application; import android.content.Context; +import com.example.administrator.seven.db.dao.DataBaseHelper; import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; import com.lzy.okgo.OkGo; import com.lzy.okgo.cache.CacheEntity; @@ -54,6 +55,7 @@ public class BaseApplication extends Application { mContext = this; //用户资料存储工具 ProfileSpUtils.init(this); + DataBaseHelper.initOrmLite(this); initOkGo(); } diff --git a/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java b/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java index 803ade4..6d38ee1 100644 --- a/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java +++ b/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java @@ -20,6 +20,7 @@ import android.widget.TextView; import android.widget.Toast; import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.PersonnelDialogHelptwo; import com.example.administrator.seven.utils.StatusBarUtils; @@ -192,5 +193,13 @@ public class BaseActivity extends AppCompatActivity { }); } } + public void messageDialog(String str) { + new PersonnelDialogHelptwo().showDownloadDialog(BaseActivity.this, str,"确定", new PersonnelDialogHelptwo.ClickListener() { + @Override + public void confirm() { + + } + }); + } } diff --git a/app/src/main/java/com/example/administrator/seven/base/BaseFragment.java b/app/src/main/java/com/example/administrator/seven/base/BaseFragment.java index 73d1072..c9151f5 100644 --- a/app/src/main/java/com/example/administrator/seven/base/BaseFragment.java +++ b/app/src/main/java/com/example/administrator/seven/base/BaseFragment.java @@ -1,10 +1,14 @@ package com.example.administrator.seven.base; +import android.Manifest; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Build; + +import androidx.core.app.ActivityCompat; import androidx.fragment.app.Fragment; import androidx.core.content.ContextCompat; import android.text.TextPaint; @@ -22,6 +26,8 @@ public class BaseFragment extends Fragment { protected Activity mContext; + public static final int REQUEST_CALL_PERMISSION = 10111; //拨号请求码 + /** @@ -73,4 +79,36 @@ public class BaseFragment extends Fragment { startActivity(new Intent(mContext, clz)); } + + /** + * 拨打电话(直接拨打) + * + * @param telPhone 电话 + */ + public void call(String telPhone) { + if (checkReadPermission(Manifest.permission.CALL_PHONE, REQUEST_CALL_PERMISSION)) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_CALL); + Uri phoneNum = Uri.parse("tel:" + telPhone); + intent.setData(phoneNum); + mContext.startActivity(intent); + } + + } + /** + * 判断是否有某项权限 + * + * @param string_permission 权限 + * @param request_code 请求码 + * @return + */ + public boolean checkReadPermission(String string_permission, int request_code) { + boolean flag = false; + if (ContextCompat.checkSelfPermission(getActivity(), string_permission) == PackageManager.PERMISSION_GRANTED) {//已有权限 + flag = true; + } else {//申请权限 + ActivityCompat.requestPermissions(getActivity(), new String[]{string_permission}, request_code); + } + return flag; + } } diff --git a/app/src/main/java/com/example/administrator/seven/db/DbBean.java b/app/src/main/java/com/example/administrator/seven/db/DbBean.java new file mode 100644 index 0000000..dfac3f6 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/db/DbBean.java @@ -0,0 +1,4 @@ +package com.example.administrator.seven.db; + +public class DbBean { +} diff --git a/app/src/main/java/com/example/administrator/seven/db/DbRecordBeanData.java b/app/src/main/java/com/example/administrator/seven/db/DbRecordBeanData.java new file mode 100644 index 0000000..4a3a2e0 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/db/DbRecordBeanData.java @@ -0,0 +1,104 @@ +package com.example.administrator.seven.db; + +import com.j256.ormlite.field.DatabaseField; +import com.j256.ormlite.table.DatabaseTable; + +import java.io.Serializable; + +/** + * Created by Caiyn on 2018/7/5. + * 名单管理实体类 + */ +@DatabaseTable(tableName = "tab_record") +public class DbRecordBeanData extends DbBean implements Serializable{ + + @DatabaseField(columnName = "headimg") + private String headimg; + + + @DatabaseField(columnName = "fp_num") + private String fp_num; + + public String getHeadimg() { + return headimg; + } + + public void setHeadimg(String headimg) { + this.headimg = headimg; + } + + public String getFp_num() { + return fp_num; + } + + public void setFp_num(String fp_num) { + this.fp_num = fp_num; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public String getCustomer_id() { + return customer_id; + } + + public void setCustomer_id(String customer_id) { + this.customer_id = customer_id; + } + + @DatabaseField(columnName = "phone") + private String phone; + @DatabaseField(columnName = "name") + private String name; + @DatabaseField(columnName = "wechat") + private String wechat; + @DatabaseField(columnName = "customer_id") + private String customer_id; + + @DatabaseField(columnName = "selectstuta") + private String selectstuta = "0"; //0未选 1选中 + @DatabaseField(id = true,columnName = "Id") + private String id; + + + public String getSelectstuta() { + return selectstuta; + } + + public void setSelectstuta(String selectstuta) { + this.selectstuta = selectstuta; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + +} + + diff --git a/app/src/main/java/com/example/administrator/seven/db/dao/DataBaseHelper.java b/app/src/main/java/com/example/administrator/seven/db/dao/DataBaseHelper.java new file mode 100644 index 0000000..ab3a8dd --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/db/dao/DataBaseHelper.java @@ -0,0 +1,126 @@ +package com.example.administrator.seven.db.dao; + +import android.content.Context; +import android.database.SQLException; +import android.database.sqlite.SQLiteDatabase; + +import com.example.administrator.seven.db.DbRecordBeanData; +import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; +import com.j256.ormlite.dao.Dao; +import com.j256.ormlite.support.ConnectionSource; +import com.j256.ormlite.table.TableUtils; + +public class DataBaseHelper extends OrmLiteSqliteOpenHelper { + + /** + * 数据库名称 + */ + private static final String TABLE_NAME = "sqlite-test.db"; + /** + * 版本号 + */ + private static final int DBVERSION = 1; + + private static Context mContext; + /** + * 单例 + */ + private static DataBaseHelper mInstance; + private static DataBaseHelper dataBaseHelper; + + + private DataBaseHelper(Context context) { + super(context, TABLE_NAME, null, DBVERSION); + } + + public synchronized static DataBaseHelper getInstance(Context mContext) { + if (dataBaseHelper == null) { + dataBaseHelper = new DataBaseHelper(mContext); + } + return dataBaseHelper; + } + + /** + * 初始化 + * + * @param context + */ + public static void initOrmLite(Context context) { + mContext = context; + getIntence(); + } + + /** + * 创建数据库表 + * + * @param database + * @param connectionSource + */ + @Override + public void onCreate(SQLiteDatabase database, + ConnectionSource connectionSource) { + try { + + TableUtils.createTable(connectionSource, DbRecordBeanData.class); + + + } catch (SQLException e) { + e.printStackTrace(); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + } + + /** + * 升级数据库 + * + * @param database + * @param connectionSource + * @param oldVersion + * @param newVersion + */ + @Override + public void onUpgrade(SQLiteDatabase database, + ConnectionSource connectionSource, int oldVersion, int newVersion) { + try { + + + onCreate(database, connectionSource); + } catch (SQLException e) { + e.printStackTrace(); + + } + } + + + /** + * 单例获取该Helper + * + * @param + * @return + */ + public static synchronized DataBaseHelper getIntence() { + + if (null == mInstance) { + synchronized (DataBaseHelper.class) { + if (null == mInstance) { + mInstance = new DataBaseHelper(mContext); + } + } + } + return mInstance; + } + + /** + * 获取数据对象 + * + * @param classz 对应的表实体的字节码对象 + * @return Dao :T:表实体对象类型.ID:对应的表实体中被指定为id字段的属性类型 + * @throws SQLException + */ + @Override + public Dao getDao(Class classz) throws SQLException, java.sql.SQLException { + return super.getDao(classz); + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/db/dao/DbRecordDao.java b/app/src/main/java/com/example/administrator/seven/db/dao/DbRecordDao.java new file mode 100644 index 0000000..8b55ea7 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/db/dao/DbRecordDao.java @@ -0,0 +1,119 @@ +package com.example.administrator.seven.db.dao; + +import android.content.Context; +import android.database.SQLException; + +import com.example.administrator.seven.db.DbRecordBeanData; +import com.j256.ormlite.dao.Dao; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class DbRecordDao { + private static Dao userAccountDao; + + public DbRecordDao(Context mContext) { + DataBaseHelper dataBaseHelper = DataBaseHelper.getInstance(mContext); + try { + try { + userAccountDao = dataBaseHelper.getDao(DbRecordBeanData.class); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public long addInsert(DbRecordBeanData userData) { + int id = 0; + try { + try { + id = userAccountDao.create(userData); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return id; + } + + + public List queryByCustom(String columnName, String columnValue) { + List ormTables = new ArrayList<>(); + try { + ormTables = userAccountDao.queryBuilder().where().eq(columnName, columnValue).query(); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + + return ormTables; + } + + public List queryByCustomtwo(String columnName, String columnValue) { + List ormTables = new ArrayList<>(); + try { + // ormTables = userAccountDao.queryBuilder().where().eq(columnName, columnValue).query(); + ormTables= userAccountDao.queryBuilder().where().like("phone", "%"+columnValue+"%").or().like("name","%"+columnValue+"%").query(); + + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + + return ormTables; + } + + public boolean updateData(DbRecordBeanData userData) { + + try { + int result = userAccountDao.update(userData); + if (result != -1) { + return true; + + } + } catch (java.sql.SQLException e) { + e.printStackTrace(); + return false; + } + return false; + } + + public static List queryInByCustom(String columnName,String columnValues){ + List ormTables = new ArrayList<>(); + try { + List strings = Arrays.asList(columnValues.split(",")); + + ormTables = userAccountDao.queryBuilder().where().in(columnName,strings ).query(); + }catch (java.sql.SQLException e){ + e.printStackTrace(); + } + return ormTables; + } + + public ArrayList queryAll() { + ArrayList userAccountList = new ArrayList<>(); + try { + userAccountList = (ArrayList) userAccountDao.queryForAll(); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + return userAccountList; + } + + public long delete(List DATA){ + int id = 0; + try { + try { + id = userAccountDao.delete(DATA); + } catch (java.sql.SQLException e) { + e.printStackTrace(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return id; + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/dialog/PersonnelDialogHelptwo.java b/app/src/main/java/com/example/administrator/seven/dialog/PersonnelDialogHelptwo.java new file mode 100644 index 0000000..173e214 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/dialog/PersonnelDialogHelptwo.java @@ -0,0 +1,72 @@ +package com.example.administrator.seven.dialog; + +import android.app.Dialog; +import android.content.Context; +import android.text.Html; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.TextView; + +import com.example.administrator.seven.R; + +/** + * Time: 2020/5/12 + * Author: jianbo + * Description: 封装的自定义对话框 + */ +public class PersonnelDialogHelptwo { + + Context mcontext; + ClickListener clickListener; + + public void showDownloadDialog(Context mcontext,final String s1,final String s2, final ClickListener clickListener) { + this.clickListener=clickListener; + this.mcontext=mcontext; + final Dialog dialog = new Dialog(mcontext, R.style.DialogStyle); + dialog.setCancelable(false); + dialog.setCanceledOnTouchOutside(false); + View view = LayoutInflater.from(mcontext).inflate(R.layout.item_personnel_dialog_two, null); + dialog.setContentView(view); + TextView tvPhone = (TextView) view.findViewById(R.id.tvPhone); + TextView tvSexSend = (TextView) view.findViewById(R.id.tvSexSend); + tvPhone.setText(Html.fromHtml(s1)); + tvSexSend.setText(s2); + tvPhone.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + + } + }); + tvSexSend.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + + clickListener.confirm(); + dialog.dismiss(); + + + } + }); + + Window mWindow = dialog.getWindow(); + WindowManager.LayoutParams lp = mWindow.getAttributes(); + lp.width = MyDialog.getScreenWidth(mcontext); + mWindow.setGravity(Gravity.CENTER); + // mWindow.setWindowAnimations(R.style.dialogAnim); + mWindow.setAttributes(lp); + dialog.show(); + } + + public interface ClickListener{ + + void confirm(); + + + } + + +} diff --git a/app/src/main/java/com/example/administrator/seven/main/Fragment/mvp/model/MyModelImpl.java b/app/src/main/java/com/example/administrator/seven/main/Fragment/mvp/model/MyModelImpl.java index d1ceb5d..c61f4dc 100644 --- a/app/src/main/java/com/example/administrator/seven/main/Fragment/mvp/model/MyModelImpl.java +++ b/app/src/main/java/com/example/administrator/seven/main/Fragment/mvp/model/MyModelImpl.java @@ -26,9 +26,7 @@ public class MyModelImpl implements MyContract.Model { @Override public boolean isBindWeChat() { - return "2".equals(ProfileSpUtils.getInstance() - .getUserProfie() - .getIs_bind_wechat()); + return "2".equals(""); } @Override @@ -47,9 +45,7 @@ public class MyModelImpl implements MyContract.Model { } //绑定成功后刷新资料 return ApiUtils.getApi() - .userIdentity(ProfileSpUtils.getInstance() - .getUserProfie() - .getIm_identifier()); + .userIdentity(""); } }) .subscribeOn(Schedulers.io()) @@ -70,9 +66,7 @@ public class MyModelImpl implements MyContract.Model { @Override public void refresh(final ApiCallBack callBack) { ApiUtils.getApi() - .userIdentity(ProfileSpUtils.getInstance() - .getUserProfie() - .getIm_identifier()) + .userIdentity("") .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer>() { @@ -90,6 +84,6 @@ public class MyModelImpl implements MyContract.Model { @Override public void save(TreeUserEntity entity) { - ProfileSpUtils.getInstance().saveProfile(entity); + ProfileSpUtils.getInstance().saveProfile(null ); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/activity/mvp/model/LoginPasswordModelImpl.java b/app/src/main/java/com/example/administrator/seven/main/activity/mvp/model/LoginPasswordModelImpl.java index 1934cb2..356982f 100644 --- a/app/src/main/java/com/example/administrator/seven/main/activity/mvp/model/LoginPasswordModelImpl.java +++ b/app/src/main/java/com/example/administrator/seven/main/activity/mvp/model/LoginPasswordModelImpl.java @@ -33,7 +33,7 @@ public class LoginPasswordModelImpl implements LoginPasswordContract.Model { @Override public void saveUserInfo(LoginBean data) { - + ProfileSpUtils.getInstance().saveProfile(data); } @Override diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/CustomerListBean.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/CustomerListBean.java new file mode 100644 index 0000000..2ca8b2e --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/CustomerListBean.java @@ -0,0 +1,169 @@ +package com.example.administrator.seven.main.kehu.Bean; + +import com.example.administrator.seven.test.BaseModel; + +import java.util.List; + +/** + * Time: 2020/8/17 + * Author: jianbo + * Description: + */ +public class CustomerListBean extends BaseModel { + + /** + * result : {"msg":"获取成功","total":0,"data":[{"headimg":"","phone":"15862656263","name":"text","wechat":"weixin","source":"1","customer_id":"3aaa642ed2f57470f62c51ee60d8a852","type":"old","source_name":"添加客户"}],"success":0} + * status : 0 + */ + + private ResultBean result; + private int status; + + public ResultBean getResult() { + return result; + } + + public void setResult(ResultBean result) { + this.result = result; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public static class ResultBean { + /** + * msg : 获取成功 + * total : 0 + * data : [{"headimg":"","phone":"15862656263","name":"text","wechat":"weixin","source":"1","customer_id":"3aaa642ed2f57470f62c51ee60d8a852","type":"old","source_name":"添加客户"}] + * success : 0 + */ + + private String msg; + private int total; + private int success; + private List data; + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public int getSuccess() { + return success; + } + + public void setSuccess(int success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * headimg : + * phone : 15862656263 + * name : text + * wechat : weixin + * source : 1 + * customer_id : 3aaa642ed2f57470f62c51ee60d8a852 + * type : old + * source_name : 添加客户 + */ + + private String headimg; + private String phone; + private String name; + private String wechat; + private String source; + private String customer_id; + private String type; + private String source_name; + + public String getHeadimg() { + return headimg; + } + + public void setHeadimg(String headimg) { + this.headimg = headimg; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + public String getCustomer_id() { + return customer_id; + } + + public void setCustomer_id(String customer_id) { + this.customer_id = customer_id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getSource_name() { + return source_name; + } + + public void setSource_name(String source_name) { + this.source_name = source_name; + } + } + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/FpListBean.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/FpListBean.java new file mode 100644 index 0000000..8b3154d --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/FpListBean.java @@ -0,0 +1,185 @@ +package com.example.administrator.seven.main.kehu.Bean; + +import com.example.administrator.seven.test.BaseModel; + +import java.util.List; + +/** + * Time: 2020/8/17 + * Author: jianbo + * Description: + */ +public class FpListBean extends BaseModel { + + /** + * result : {"msg":"获取成功","data":[{"headimg":"localhost/upload/2020081115530962805.jpg","fp_num":"2","phone":"18831913290","name":"demo","wechat":"wangyuxin283425757","industry":[{"industry":"家具","type":"0","customer_id":"ae0c5199fdf564f90796aec09482b85d"}],"customer_id":"ae0c5199fdf564f90796aec09482b85d"}],"success":0} + * status : 0 + */ + + private ResultBean result; + private int status; + + public ResultBean getResult() { + return result; + } + + public void setResult(ResultBean result) { + this.result = result; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public static class ResultBean { + /** + * msg : 获取成功 + * data : [{"headimg":"localhost/upload/2020081115530962805.jpg","fp_num":"2","phone":"18831913290","name":"demo","wechat":"wangyuxin283425757","industry":[{"industry":"家具","type":"0","customer_id":"ae0c5199fdf564f90796aec09482b85d"}],"customer_id":"ae0c5199fdf564f90796aec09482b85d"}] + * success : 0 + */ + + private String msg; + private int success; + private List data; + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public int getSuccess() { + return success; + } + + public void setSuccess(int success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * headimg : localhost/upload/2020081115530962805.jpg + * fp_num : 2 + * phone : 18831913290 + * name : demo + * wechat : wangyuxin283425757 + * industry : [{"industry":"家具","type":"0","customer_id":"ae0c5199fdf564f90796aec09482b85d"}] + * customer_id : ae0c5199fdf564f90796aec09482b85d + */ + + private String headimg; + private String fp_num; + private String phone; + private String name; + private String wechat; + private String customer_id; + private List industry; + + public String getHeadimg() { + return headimg; + } + + public void setHeadimg(String headimg) { + this.headimg = headimg; + } + + public String getFp_num() { + return fp_num; + } + + public void setFp_num(String fp_num) { + this.fp_num = fp_num; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public String getCustomer_id() { + return customer_id; + } + + public void setCustomer_id(String customer_id) { + this.customer_id = customer_id; + } + + public List getIndustry() { + return industry; + } + + public void setIndustry(List industry) { + this.industry = industry; + } + + public static class IndustryBean { + /** + * industry : 家具 + * type : 0 + * customer_id : ae0c5199fdf564f90796aec09482b85d + */ + + private String industry; + private String type; + private String customer_id; + + public String getIndustry() { + return industry; + } + + public void setIndustry(String industry) { + this.industry = industry; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getCustomer_id() { + return customer_id; + } + + public void setCustomer_id(String customer_id) { + this.customer_id = customer_id; + } + } + } + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/WxuSerinfo.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/WxuSerinfo.java new file mode 100644 index 0000000..0e80dc3 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/WxuSerinfo.java @@ -0,0 +1,38 @@ +package com.example.administrator.seven.main.kehu.Bean; + +/** + * Created by chenss on 2018/7/7. + */ + +public class WxuSerinfo { + + public String getHongbao() { + return hongbao; + } + + public void setHongbao(String hongbao) { + this.hongbao = hongbao; + } + + String hongbao=null; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + String message=""; + + public String getMessageSource() { + return messageSource; + } + + public void setMessageSource(String messageSource) { + this.messageSource = messageSource; + } + + String messageSource="";//消息来源 2.调拨客户 +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/customerFPListBean.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/customerFPListBean.java new file mode 100644 index 0000000..a0de03e --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/customerFPListBean.java @@ -0,0 +1,139 @@ +package com.example.administrator.seven.main.kehu.Bean; + +import com.example.administrator.seven.test.BaseModel; + +import java.util.List; + +/** + * Time: 2020/8/17 + * Author: jianbo + * Description: + */ +public class customerFPListBean extends BaseModel { + + /** + * result : {"msg":"获取成功","data":[{"headimg":"localhost/upload/2020081115530962805.jpg","fp_num":"0","phone":"18831913290","name":"demo","wechat":"wangyuxin283425757","customer_id":"ae0c5199fdf564f90796aec09482b85d"}],"success":0} + * status : 0 + */ + + private ResultBean result; + private int status; + + public ResultBean getResult() { + return result; + } + + public void setResult(ResultBean result) { + this.result = result; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public static class ResultBean { + /** + * msg : 获取成功 + * data : [{"headimg":"localhost/upload/2020081115530962805.jpg","fp_num":"0","phone":"18831913290","name":"demo","wechat":"wangyuxin283425757","customer_id":"ae0c5199fdf564f90796aec09482b85d"}] + * success : 0 + */ + + private String msg; + private int success; + private List data; + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public int getSuccess() { + return success; + } + + public void setSuccess(int success) { + this.success = success; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * headimg : localhost/upload/2020081115530962805.jpg + * fp_num : 0 + * phone : 18831913290 + * name : demo + * wechat : wangyuxin283425757 + * customer_id : ae0c5199fdf564f90796aec09482b85d + */ + + private String headimg; + private String fp_num; + private String phone; + private String name; + private String wechat; + private String customer_id; + + public String getHeadimg() { + return headimg; + } + + public void setHeadimg(String headimg) { + this.headimg = headimg; + } + + public String getFp_num() { + return fp_num; + } + + public void setFp_num(String fp_num) { + this.fp_num = fp_num; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getWechat() { + return wechat; + } + + public void setWechat(String wechat) { + this.wechat = wechat; + } + + public String getCustomer_id() { + return customer_id; + } + + public void setCustomer_id(String customer_id) { + this.customer_id = customer_id; + } + } + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/fenpeisuccess.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/fenpeisuccess.java new file mode 100644 index 0000000..bb03fd2 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/fenpeisuccess.java @@ -0,0 +1,23 @@ +package com.example.administrator.seven.main.kehu.Bean; + +public class fenpeisuccess { + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + String msg=""; + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + String message=""; +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/entity/markingYiliushi.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/markingYiliushi.java similarity index 99% rename from app/src/main/java/com/example/administrator/seven/main/kehu/entity/markingYiliushi.java rename to app/src/main/java/com/example/administrator/seven/main/kehu/Bean/markingYiliushi.java index 6708e2e..443fd8a 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/entity/markingYiliushi.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Bean/markingYiliushi.java @@ -1,4 +1,4 @@ -package com.example.administrator.seven.main.kehu.entity; +package com.example.administrator.seven.main.kehu.Bean; import com.example.administrator.seven.test.BaseModel; diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/CustomerFragment.java b/app/src/main/java/com/example/administrator/seven/main/kehu/CustomerFragment.java index 3dd7136..3cfda4c 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/CustomerFragment.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/CustomerFragment.java @@ -1,11 +1,18 @@ package com.example.administrator.seven.main.kehu; +import android.content.Intent; +import android.widget.Toast; + import com.example.administrator.seven.JsonUtils; -import com.example.administrator.seven.main.adapter.mine.XikeInfoAdapter; -import com.example.administrator.seven.main.entity.XikeInfoBean; +import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.BaseTipsDialog; +import com.example.administrator.seven.main.activity.LoginPasswordActivity; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.main.kehu.Dialog.CusOperationDialog; import com.example.administrator.seven.main.kehu.adapter.CusListAdapter; import com.example.administrator.seven.okgonet.NetApi; import com.example.administrator.seven.okgonet.Observer; +import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; import com.lzy.okgo.model.Response; import java.util.ArrayList; @@ -33,33 +40,70 @@ public class CustomerFragment extends MobanFragment { CusListAdapter markingtwoAdapter = new CusListAdapter(mContext, null); getAdpter(markingtwoAdapter); mMarkingFragmentRecyclerView.setAdapter(markingtwoAdapter); + markingtwoAdapter.operationListenner(new CusListAdapter.OnViewClickListener() { + @Override + public void operation(final CustomerListBean.ResultBean.DataBean item) { + new CusOperationDialog(getActivity(), R.style.dialog, new CusOperationDialog.OnCloseListener() { + @Override + public void phoneClick() {//拨打电话 + if (item.getPhone() != null) { + call(item.getPhone()); + } + } + + @Override + public void kaidanonClick() {//信息完善 + + } + + //删除客户 + @Override + public void uploadAvatar() { + new BaseTipsDialog().showDownloadDialog(getActivity(), "确认删除该客户吗?", "确定", new BaseTipsDialog.ClickListener() { + @Override + public void confirm() { + Toast.makeText(getActivity(), "还没调接口", Toast.LENGTH_SHORT).show(); + } + + @Override + public void cancle() { + + } + }); + } + + }).show(); + } + }); } @Override public void requestData() { - new NetApi().xikeInfo("b886798bdce09746a787651013f2c6e6").subscribe(new Observer() { - @Override - public void onNext(Response response) { - String body = (String) response.body(); - XikeInfoBean.ResultBean esdv = JsonUtils.fromJson(body, XikeInfoBean.class).getResult(); - mSwl.setRefreshing(false); - if (esdv != null && String.valueOf(esdv.getSuccess()).equals("0")) { +// new NetApi().customerList(ProfileSpUtils.getInstance().getUserProfie().getData().getUuid(),"").subscribe(new Observer() { +// @Override +// public void onNext(Response response) { +// String body = (String) response.body(); +// CustomerListBean.ResultBean result = JsonUtils.fromJson(body, CustomerListBean.class).getResult(); +// mSwl.setRefreshing(false); +// if (result != null && String.valueOf(result.getSuccess()).equals("0")) { - // List data = esdv.getData(); - - - List data = new ArrayList(); + // List data = result.getData(); + List data = new ArrayList(); for (int i = 0; i < 20; i++) { - XikeInfoBean.ResultBean.DataBean dataBean = new XikeInfoBean.ResultBean.DataBean(); - dataBean.setTime("2020-07-01 12:00:00"); - dataBean.setXike_num("+89.00"); - dataBean.setXike_remark("收益账户转入"); + CustomerListBean.ResultBean.DataBean dataBean = new CustomerListBean.ResultBean.DataBean(); + dataBean.setName("小斐"); + dataBean.setPhone("15862656263"); + dataBean.setSource_name("添加客户"); + dataBean.setWechat("weixin"); + dataBean.setHeadimg(""); + dataBean.setSource("1"); + dataBean.setType("old"); data.add(dataBean); } if (data.size() == 0) { - //markingtwoAdapter.setEmptyView(notDataView); + markingtwoAdapter.setEmptyView(notDataView); return; } if (mNextRequestPage == 1) { @@ -67,19 +111,19 @@ public class CustomerFragment extends MobanFragment { } else { setData(false, data); } - } else { - setData(true, null); - markingtwoAdapter.setEmptyView(notDataView); - mSwl.setRefreshing(false); - } - } - @Override - public void onError(Exception e) { - e.printStackTrace(); - markingtwoAdapter.setEmptyView(errorView); - mSwl.setRefreshing(false); - } - }); +// } else { +// setData(true, null); +// markingtwoAdapter.setEmptyView(notDataView); +// mSwl.setRefreshing(false); +// } +// } +// @Override +// public void onError(Exception e) { +// e.printStackTrace(); +// markingtwoAdapter.setEmptyView(errorView); +// mSwl.setRefreshing(false); +// } +// }); } @Override diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/Dialog/CusOperationDialog.java b/app/src/main/java/com/example/administrator/seven/main/kehu/Dialog/CusOperationDialog.java new file mode 100644 index 0000000..9571109 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/Dialog/CusOperationDialog.java @@ -0,0 +1,101 @@ +package com.example.administrator.seven.main.kehu.Dialog; + +import android.app.Dialog; +import android.content.Context; +import android.os.Bundle; +import android.view.Gravity; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.example.administrator.seven.R; + +public class CusOperationDialog extends Dialog implements View.OnClickListener { + + private Context mContext; + private OnCloseListener listener; + private TextView bt_draining_kehu; + private RelativeLayout rl_tv_kaidan,rl_tv_uploadAvatar; + private TextView tv_cancel; + private ImageView img_hongdian_bg; + private ImageView img_hongdian_kai; + private LinearLayout ly_kaidan; + + public CusOperationDialog(Context context) { + super(context); + this.mContext = context; + } + + public CusOperationDialog(Context context, int themeResId, OnCloseListener listener) { + super(context, themeResId); + this.mContext = context; + this.listener = listener; + + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.qiangdan_dialog); + setCanceledOnTouchOutside(false); + Window window = getWindow(); + window.getDecorView().setPadding(0, 0, 0, 0); + WindowManager.LayoutParams layoutParams = window.getAttributes(); + layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; + layoutParams.horizontalMargin = 0; + window.setAttributes(layoutParams); + window.setGravity(Gravity.BOTTOM); + initView(); + } + + private void initView() { + bt_draining_kehu = (TextView) findViewById(R.id.bt_draining_kehu); + bt_draining_kehu.setOnClickListener(this); + rl_tv_kaidan = (RelativeLayout) findViewById(R.id.rl_tv_kaidan); + rl_tv_kaidan.setOnClickListener(this); + rl_tv_uploadAvatar = (RelativeLayout) findViewById(R.id.rl_tv_uploadAvatar); + rl_tv_uploadAvatar.setOnClickListener(this); + tv_cancel = (TextView) findViewById(R.id.tv_cancel); + tv_cancel.setOnClickListener(this); + ly_kaidan = (LinearLayout) findViewById(R.id.ly_kaidan); + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.bt_draining_kehu://拨打电话 + if (listener != null) { + listener.phoneClick(); + } + dismiss(); + break; + case R.id.rl_tv_kaidan://开单 + if (listener != null) { + listener.kaidanonClick(); + } + dismiss(); + break; + case R.id.rl_tv_uploadAvatar://上传头像 + if (listener != null) { + listener.uploadAvatar(); + } + dismiss(); + break; + case R.id.tv_cancel://取消 + this.dismiss(); + break; + } + } + + public interface OnCloseListener { + + void phoneClick(); + void kaidanonClick(); + void uploadAvatar(); + + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/DistriFragment.java b/app/src/main/java/com/example/administrator/seven/main/kehu/DistriFragment.java index ba25bdc..0c3956e 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/DistriFragment.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/DistriFragment.java @@ -1,14 +1,12 @@ package com.example.administrator.seven.main.kehu; import com.example.administrator.seven.JsonUtils; -import com.example.administrator.seven.main.adapter.mine.XikeInfoAdapter; -import com.example.administrator.seven.main.entity.XikeInfoBean; +import com.example.administrator.seven.main.kehu.Bean.FpListBean; import com.example.administrator.seven.main.kehu.adapter.DisListAdapter; import com.example.administrator.seven.okgonet.NetApi; import com.example.administrator.seven.okgonet.Observer; import com.lzy.okgo.model.Response; -import java.util.ArrayList; import java.util.List; import androidx.recyclerview.widget.LinearLayoutManager; @@ -37,29 +35,16 @@ public class DistriFragment extends MobanFragment { @Override public void requestData() { - new NetApi().xikeInfo("b886798bdce09746a787651013f2c6e6").subscribe(new Observer() { + new NetApi().fpList("b886798bdce09746a787651013f2c6e6","").subscribe(new Observer() { @Override public void onNext(Response response) { String body = (String) response.body(); - XikeInfoBean.ResultBean esdv = JsonUtils.fromJson(body, XikeInfoBean.class).getResult(); + FpListBean.ResultBean result = JsonUtils.fromJson(body, FpListBean.class).getResult(); mSwl.setRefreshing(false); - if (esdv != null && String.valueOf(esdv.getSuccess()).equals("0")) { - - // List data = esdv.getData(); - - - List data = new ArrayList(); - for (int i = 0; i < 20; i++) - { - XikeInfoBean.ResultBean.DataBean dataBean = new XikeInfoBean.ResultBean.DataBean(); - dataBean.setTime("2020-07-01 12:00:00"); - dataBean.setXike_num("+89.00"); - dataBean.setXike_remark("收益账户转入"); - data.add(dataBean); - } - + if (result != null && String.valueOf(result.getSuccess()).equals("0")) { + List data = result.getData(); if (data.size() == 0) { - //markingtwoAdapter.setEmptyView(notDataView); + markingtwoAdapter.setEmptyView(notDataView); return; } if (mNextRequestPage == 1) { diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/TraceFragment.java b/app/src/main/java/com/example/administrator/seven/main/kehu/TraceFragment.java index c7b74dd..8899868 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/TraceFragment.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/TraceFragment.java @@ -14,6 +14,7 @@ import android.widget.TextView; import com.example.administrator.seven.R; import com.example.administrator.seven.main.entity.Savaselect; +import com.example.administrator.seven.main.kehu.activity.ShowAty; import com.example.administrator.seven.test.BaseFragment; import com.google.android.material.tabs.TabLayout; @@ -140,7 +141,8 @@ public class TraceFragment extends BaseFragment implements View.OnClickListener mEnterShopTitle = (TextView) view.findViewById(R.id.enter_shop_title); mEnterShopTitle.setOnClickListener(this); enter_shop_shaixuan = (TextView) view.findViewById(R.id.enter_shop_shaixuan); - + RelativeLayout bt_fenpei = (RelativeLayout)view.findViewById(R.id.bt_fenpei); + bt_fenpei.setOnClickListener(this); } @Override @@ -152,6 +154,10 @@ public class TraceFragment extends BaseFragment implements View.OnClickListener break; case R.id.enter_shop_shai: break; + case R.id.bt_fenpei: + ShowAty.AllocationActivity(getActivity()); + break; + } } diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/activity/AllocationActivity.java b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/AllocationActivity.java new file mode 100644 index 0000000..854af27 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/AllocationActivity.java @@ -0,0 +1,219 @@ +package com.example.administrator.seven.main.kehu.activity; + +import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.AutoCompleteTextView; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.example.administrator.seven.JsonUtils; +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseActivity; +import com.example.administrator.seven.db.DbRecordBeanData; +import com.example.administrator.seven.db.dao.DbRecordDao; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.main.kehu.Bean.WxuSerinfo; +import com.example.administrator.seven.main.kehu.Bean.customerFPListBean; +import com.example.administrator.seven.main.kehu.Bean.fenpeisuccess; +import com.example.administrator.seven.main.kehu.adapter.AllocationAdapter; +import com.example.administrator.seven.okgonet.NetApi; +import com.example.administrator.seven.okgonet.Observer; +import com.example.administrator.seven.utils.AbStrUtil; +import com.lzy.okgo.model.Response; + +import java.util.ArrayList; +import java.util.List; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import de.greenrobot.event.EventBus; + +/** + * 客户分配 + */ +public class AllocationActivity extends BaseActivity implements View.OnClickListener{ + private RelativeLayout mRlLeft; + private ImageView mIvLeft; + private TextView mTvCenter; + private TextView RightTv; + private RecyclerView mRvList; + private List mShowList = new ArrayList<>(); + private List mShowListtwo = new ArrayList<>(); + private AllocationAdapter mAdapter; + + protected final String TAG = this.getClass().getSimpleName(); + private List dbRecordBeanData; + private String search; + private DbRecordDao dbRecordDao; + private String times; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_allocation); + times = getIntent().getStringExtra("times"); + initView(); + setEvent(); + EventBus.getDefault().register(this); + dbRecordDao = new DbRecordDao(this); + initData(); + getData(times); + + } + public void onEvent(fenpeisuccess event) { + if (null != event && event.getMsg().equals("2")) { + // dbRecordDao.delete(mShowList); + // getData(times); + WxuSerinfo wxuSerinfo = new WxuSerinfo(); + wxuSerinfo.setHongbao("1"); + wxuSerinfo.setMessage(event.getMessage()); + EventBus.getDefault().post(wxuSerinfo); + finish(); + } + } + private void initView() { + mRlLeft = (RelativeLayout) findViewById(R.id.rl_left); + mIvLeft = (ImageView) findViewById(R.id.leftIv); + mTvCenter = (TextView) findViewById(R.id.centerTv); + mRvList = (RecyclerView) findViewById(R.id.rv_list); + RightTv = findViewById(R.id.RightTv); + mIvLeft.setVisibility(View.VISIBLE); + mTvCenter.setVisibility(View.VISIBLE); + RightTv.setVisibility(View.VISIBLE); + mTvCenter.setText("客户调拨"); + RightTv.setText("调拨"); + + } + + private void initData() { + LinearLayoutManager layoutManager = new LinearLayoutManager(this ); + mRvList.setLayoutManager(layoutManager); + mAdapter = new AllocationAdapter(mShowList, AllocationActivity.this,RightTv); + mRvList.setAdapter(mAdapter); + mAdapter.setNumListener(new AllocationAdapter.NumListener() { + @Override + public void sennum(List mDatas) { + //刷新数据 + ArrayList dbRecordBeanData = dbRecordDao.queryAll(); + int numtwo=0; + for (int i = 0; i < dbRecordBeanData.size(); i++) { + if (dbRecordBeanData.get(i).getSelectstuta().equals("1")) { + numtwo+=1; + } + } + RightTv.setText("调拨("+numtwo+")"); + + } + + @Override + public void refresh() { + //从数据库里取 + //这里做一个判断 + dbRecordBeanData = dbRecordDao.queryAll(); + Log.e("数据的个数==", dbRecordBeanData.size()+""); + setData(dbRecordBeanData); + } + }); + } + + public void getData(String times) { +// new NetApi().customerFPList("b886798bdce09746a787651013f2c6e6").subscribe(new Observer() { +// @Override +// public void onNext(Response response) { +// String body = (String) response.body(); +// customerFPListBean.ResultBean result = JsonUtils.fromJson(body, customerFPListBean.class).getResult(); +// if (result != null && String.valueOf(result.getSuccess()).equals("0")) { + // List data = result.getData(); + + + List data = new ArrayList(); + for (int i = 0; i < 20; i++) + { + customerFPListBean.ResultBean.DataBean dataBean = new customerFPListBean.ResultBean.DataBean(); + dataBean.setName("小斐"); + dataBean.setPhone("15862656263"); + dataBean.setWechat("weixin"); + dataBean.setHeadimg(""); + data.add(dataBean); + } + + //存入数据库 + for (int i = 0; i < data.size(); i++) { + customerFPListBean.ResultBean.DataBean dataBean = data.get(i); + DbRecordBeanData userData = new DbRecordBeanData(); + userData.setId(i+""); + userData.setSelectstuta("0"); + userData.setCustomer_id(dataBean.getCustomer_id()); + userData.setFp_num(dataBean.getFp_num()); + userData.setHeadimg(dataBean.getHeadimg()); + userData.setName(dataBean.getName()); + userData.setPhone(dataBean.getPhone()); + userData.setWechat(dataBean.getWechat()); + if (null != dbRecordDao.queryByCustom("Id", userData.getId()) && dbRecordDao.queryByCustom("Id", userData.getId()).size() > 0) { + dbRecordDao.updateData(userData); + } else { + dbRecordDao.addInsert(userData); + } + } + //从数据库里取 + dbRecordBeanData = dbRecordDao.queryAll(); + Log.e("数据的个数==", dbRecordBeanData.size()+""); + setData(dbRecordBeanData); +// } +// } +// @Override +// public void onError(Exception e) { +// e.printStackTrace(); +// +// } +// }); + } + + private void setEvent() { + mRlLeft.setOnClickListener(this); + RightTv.setOnClickListener(this); + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.rl_left: + finish(); + break; + case R.id.RightTv: + mShowListtwo.clear(); + dbRecordBeanData = dbRecordDao.queryAll(); + for (int i = 0; i < dbRecordBeanData.size(); i++) { + if (dbRecordBeanData.get(i).getSelectstuta().equals("1")) { + mShowListtwo.add(mShowList.get(i)); + } + } + if(mShowListtwo.size()>0){ + + //进入分配页面 + ShowAty.AllocationSelectActivity(this,mShowListtwo);}else { + messageDialog("请选择调拨客户"); + } + break; + + } + } + + @Override + protected void onDestroy() { + super.onDestroy(); + EventBus.getDefault().unregister(this); + dbRecordDao.delete(mShowList); + } + + private void setData(List dbRecordBeanData) { + //给适配器设置数据 + if(mShowList!=null){ + mShowList.clear(); + } + mShowList.addAll(dbRecordBeanData); + mAdapter.notifyDataSetChanged(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java new file mode 100644 index 0000000..3195bcd --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java @@ -0,0 +1,31 @@ +package com.example.administrator.seven.main.kehu.activity; + +import android.content.Context; +import android.content.Intent; + +import com.example.administrator.seven.db.DbRecordBeanData; + +import java.util.List; + +public class ShowAty { + + /** + * 选择调拨店铺 + */ + public static void AllocationSelectActivity(Context ctx, List mShowListtwo) { +// Intent i = new Intent(ctx, AllocationSelectActivity.class); +// Bundle bundle = new Bundle(); +// bundle.putSerializable("dataBean", (Serializable) mShowListtwo); +// i.putExtras(bundle); +// ctx.startActivity(i); + } + + /** + * 客户调拨 + */ + public static void AllocationActivity(Context ctx) { + Intent i = new Intent(ctx, AllocationActivity.class); + ctx.startActivity(i); + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/AllocationAdapter.java b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/AllocationAdapter.java new file mode 100644 index 0000000..35347e1 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/AllocationAdapter.java @@ -0,0 +1,157 @@ +package com.example.administrator.seven.main.kehu.adapter; + +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.db.DbRecordBeanData; +import com.example.administrator.seven.db.dao.DbRecordDao; +import com.example.administrator.seven.utils.GlideTools; +import com.example.administrator.seven.utils.WidgetTools; +import com.example.administrator.seven.widget.CircleImageView; + +import java.util.ArrayList; +import java.util.List; + +import androidx.recyclerview.widget.RecyclerView; + + +public class AllocationAdapter extends RecyclerView.Adapter{ + private List mDatas; + private Context mContext; + private String selectType="2"; + TextView RightTv; + NumListener numListener; + private DbRecordDao dbRecordDao; + + public AllocationAdapter(List mDatas, Context mContext, TextView RightTv) { + this.mDatas = mDatas; + this.mContext = mContext; + this.RightTv = RightTv; + dbRecordDao = new DbRecordDao(mContext); + } + + public void setNumListener(NumListener numListener){ + this.numListener = numListener; + } + + @Override + public FromViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mContext).inflate(R.layout.allocation_item,parent,false); + FromViewHolder holder = new FromViewHolder(view); + return holder; + } + + @Override + public void onBindViewHolder(FromViewHolder holder, final int position) { + GlideTools.init(mContext).displaypic(holder.mCivDefine, mDatas.get(position).getHeadimg(), R.mipmap.icon_default_head); + WidgetTools.setTextfive(holder.mTvIntoTime, mDatas.get(position).getName()+" • ", mDatas.get(position).getPhone()); + String selectstuta = mDatas.get(position).getSelectstuta(); + if (selectstuta.equals("1")) { + holder.select_iv.setImageResource(R.mipmap.icon_cheched_true); + } else { + holder.select_iv.setImageResource(R.mipmap.icon_cheched_false); + } + //发送消息改变分数数量 + numListener.sennum(mDatas); + + //做单选条件限制 + holder.mRlRemove.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + //本次选择 + if (IsSelecet(position)) { + cancalchoose(position); + } else { + //selectType 1为单选 2为多选 + selecttrue(position); + } + numListener.refresh(); + //发送消息改变分数数量 + numListener.sennum(mDatas); + } + }); + } + + @Override + public int getItemCount() { + return mDatas!=null?mDatas.size():0; + } + + class FromViewHolder extends RecyclerView.ViewHolder { + CircleImageView mCivDefine; + ImageView select_iv; + TextView mTvIntoTime; + RelativeLayout mRlRemove; + + public FromViewHolder(View itemView) { + super(itemView); + mCivDefine = itemView.findViewById(R.id.iv_default_image); + + mTvIntoTime = itemView.findViewById(R.id.tv_into_time_value); + select_iv = itemView.findViewById(R.id.select_iv); + + mRlRemove = itemView.findViewById(R.id.rl_remove); + + } + + } + + + /** + * 选中(单选) + * + * @return + */ + private void selecttrue(int position) { + mDatas.get(position).setSelectstuta("1"); + DbRecordBeanData fromManagerBeanData = mDatas.get(position); + dbRecordDao.updateData(fromManagerBeanData); + ArrayList fromManagerBeanData1 = dbRecordDao.queryAll(); + Log.e("数据的个数==", fromManagerBeanData1.size()+""); + + } + + /** + * 取消 + * + * @return + */ + private void cancalchoose(int position) { + mDatas.get(position).setSelectstuta("0"); + DbRecordBeanData fromManagerBeanData = mDatas.get(position); + dbRecordDao.updateData(fromManagerBeanData); + } + + /** + * 当前条目是否选中 + * + * @return + */ + public boolean IsSelecet(int position) { + if (mDatas.get(position).getSelectstuta().equals("1")) { + return true; + } else { + return false; + } + } + + public interface NumListener{ + + /** + * @description 数字监听 + * @param + * @return + */ + void sennum(List mDatas); + + void refresh(); + + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/CusListAdapter.java b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/CusListAdapter.java index eb11017..649c0fc 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/CusListAdapter.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/CusListAdapter.java @@ -1,28 +1,49 @@ package com.example.administrator.seven.main.kehu.adapter; import android.content.Context; +import android.view.View; import android.widget.TextView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.example.administrator.seven.R; import com.example.administrator.seven.main.entity.XikeInfoBean; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; import com.example.administrator.seven.utils.WidgetTools; import java.util.List; -public class CusListAdapter extends BaseQuickAdapter { +public class CusListAdapter extends BaseQuickAdapter { Context mcontext; + OnViewClickListener onViewClickListener; + public CusListAdapter(Context context, List list) { super(R.layout.cuslist_item, list); this.mcontext = context; } + @Override - protected void convert(final BaseViewHolder helper, final XikeInfoBean.ResultBean.DataBean item) { -// WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_01), "", item.getXike_remark()); -// WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_02), "", item.getTime()); -// WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_03), "", item.getXike_num()); + protected void convert(final BaseViewHolder helper, final CustomerListBean.ResultBean.DataBean item) { + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_name), "", item.getName()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_phone), "", item.getPhone()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_watch), "", item.getWechat()); + TextView tv_cuslist_caozuo = (TextView)helper.getView(R.id.tv_cuslist_caozuo); + tv_cuslist_caozuo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onViewClickListener.operation(item); + } + }); + } + + public void operationListenner(OnViewClickListener onViewClickListener){ + this.onViewClickListener = onViewClickListener; + } + + public interface OnViewClickListener{ + + void operation(CustomerListBean.ResultBean.DataBean item); } diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/DisListAdapter.java b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/DisListAdapter.java index 89b6597..04206bc 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/DisListAdapter.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/DisListAdapter.java @@ -1,29 +1,66 @@ package com.example.administrator.seven.main.kehu.adapter; import android.content.Context; +import android.widget.ImageView; import android.widget.TextView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.example.administrator.seven.R; -import com.example.administrator.seven.main.entity.XikeInfoBean; +import com.example.administrator.seven.main.kehu.Bean.FpListBean; +import com.example.administrator.seven.utils.GlideTools; import com.example.administrator.seven.utils.WidgetTools; import java.util.List; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; -public class DisListAdapter extends BaseQuickAdapter { + +public class DisListAdapter extends BaseQuickAdapter { Context mcontext; public DisListAdapter(Context context, List list) { super(R.layout.disliat_item, list); this.mcontext = context; } @Override - protected void convert(final BaseViewHolder helper, final XikeInfoBean.ResultBean.DataBean item) { - WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_01), "", item.getXike_remark()); - WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_02), "", item.getTime()); - WidgetTools.setTextfive((TextView) helper.getView(R.id.xike_tv_03), "", item.getXike_num()); + protected void convert(final BaseViewHolder helper, final FpListBean.ResultBean.DataBean item) { + ImageView image = (ImageView)helper.getView(R.id.iv_dea_avatar); + GlideTools.init(mContext).displaypic(image, item.getHeadimg(), R.mipmap.icon_default_head); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_name), "", item.getName()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_phone), "", item.getPhone()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_watch), "", item.getWechat()); + RecyclerView recy_dis = (RecyclerView)helper.getView(R.id.recy_dis); + LinearLayoutManager manager = new LinearLayoutManager(mcontext); + manager.setOrientation(LinearLayoutManager.HORIZONTAL); + recy_dis.setLayoutManager(manager); + recy_dis.setAdapter(new BaseQuickAdapter(R.layout.item_recy_dislist, item.getIndustry()) { + @Override + protected void convert(final BaseViewHolder helper, final FpListBean.ResultBean.DataBean.IndustryBean item) { + + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_hangye), "", item.getIndustry()); + TextView tv_fenpei_status = (TextView)helper.getView(R.id.tv_fenpei_status); + //0:已分配,1:已被抢,2:已进店,3:已成交 + String type = item.getType(); + switch (type){ + case "0": + tv_fenpei_status.setText("已分配"); + break; + case "1": + tv_fenpei_status.setText("已被抢"); + break; + case "2": + tv_fenpei_status.setText("已进店"); + break; + case "3": + tv_fenpei_status.setText("已成交"); + break; + } + + } + + }); } } \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/MarkingTwoAdapter.java b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/MarkingTwoAdapter.java index d19e311..ef63cb6 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/MarkingTwoAdapter.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/adapter/MarkingTwoAdapter.java @@ -9,7 +9,7 @@ import android.widget.ImageView; import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseViewHolder; import com.example.administrator.seven.R; -import com.example.administrator.seven.main.kehu.entity.markingYiliushi; +import com.example.administrator.seven.main.kehu.Bean.markingYiliushi; import java.util.List; diff --git a/app/src/main/java/com/example/administrator/seven/network/Constants.java b/app/src/main/java/com/example/administrator/seven/network/Constants.java deleted file mode 100644 index d531287..0000000 --- a/app/src/main/java/com/example/administrator/seven/network/Constants.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.example.administrator.seven.network.http; - -/** - * 项目名:NewJiaJieSong - * 包名:com.example.administrator.newjiajiesong - * 创建者:任剑波 - * 创建时间:2018/8/28 11:14 - * 描述:TODO - */ -public class Constants { - - public static final String BASE_URL="http://192.168.0.158:81"; - - /** - * 接口请求地址 - */ - public static class UrlOrigin { - /** - *登录 - *//* - public static final String login = "/device/DevLogin/accountPwd";*/ - /** - * 获取验证码 - */ - public static final String SEND_SMS = "/device/SendSMS/send"; - - /** - * 验证码登录 - */ - public static final String CODE_LOGIN = "/device/SendSMS/checkCode"; - - } -} diff --git a/app/src/main/java/com/example/administrator/seven/okgonet/HttpConstants.java b/app/src/main/java/com/example/administrator/seven/okgonet/HttpConstants.java index fc85c9e..34916a5 100644 --- a/app/src/main/java/com/example/administrator/seven/okgonet/HttpConstants.java +++ b/app/src/main/java/com/example/administrator/seven/okgonet/HttpConstants.java @@ -11,9 +11,9 @@ package com.example.administrator.seven.okgonet; public class HttpConstants { - public static String URiBase = "http://www.fenghoo.com.cn";// 蜂狐商户版线上 + // public static String URiBase = "http://www.fenghoo.com.cn";// 蜂狐商户版线上 - // public static String URiBase = "http://www.fenghoo.com.cn:88";// 蜂狐商户版(测试库) + public static String URiBase = "http://192.168.1.4";// 7月7 /** @@ -393,614 +393,20 @@ public class HttpConstants { public static String URi_device_DevPerManager_xikeInfo = URiBase + "/device/DevPerManager/xikeInfo"; /** - * 抢单客户信息详情 + * 分配列表 */ - public static String URi_device_DevPerManager_robCustomerInfo = URiBase + "/device/DevPerManager/robCustomerInfo"; - /** - * 已成交--修改金额 - */ - public static String URi_device_DevMark_ChangePrice = URiBase + "/device/DevMark/ChangePrice"; - - /** - * 已成交---新增成交 - */ - public static String URi_device_DevMark_AddPrice = URiBase + "/device/DevMark/AddPrice"; - /** - * 设计师异业推荐信息 - */ - public static String URi_device_DevMark_RECOMMENDINFO = URiBase + "/device/DevMark/RecommentInfo"; - - /** - * 设计师异业推荐信息 - */ - public static String URi_device_DevMark_RecommentInfomation = URiBase + "/device/DevMark/RecommentInfomation"; - - - /** - * 获取报备奖励---已成交 - */ - public static String URi_device_DevClient_GETBAOBEIINFO = URiBase + "/device/DevClient/getBaibeiInfo"; - /** - * 获取报备奖励---未成交 - */ - public static String URi_device_DevClient_GETBAOBEINOTINFO = URiBase + "/device/DevClient/getBaibeiNotInfo"; - /** - * 获取已成交报备详情 - */ - public static String URi_device_DevClient_GETBAOBEIDETAIL = URiBase + "/device/DevClient/getBaibeiDetail"; - /** - * 转介---获取品牌列表 - */ - public static String URi_device_DevClient_getBrands = URiBase + "/device/DevRefer/getBrands"; - /** - * 转介---获取品牌列表(转介) - */ - public static String URi_device_DevRefer_myReferBrand = URiBase + "/device/DevRefer/myReferBrand"; - /** - * 转介---提交转介信息 - */ - public static String URi_device_DevRefer_setReferMsg = URiBase + "/device/DevRefer/setReferMsg"; - /** - * H5 弹窗广告 - */ - public static String URi_device_DevJoinGood_getAppAlert = URiBase + "/device/DevJoinGood/getAppAlert"; - /** - * 转介---转介进店已成交 - */ - public static String URi_device_DevClient_GETREFERINVISITOR = URiBase + "/device/DevRefer/get_riv_list"; - /** - * 转介---转介进店已成交 - */ - public static String URi_device_DevClient_GETREFERIVNLIST = URiBase + "/device/DevRefer/get_rivn_list"; - /** - * 转介--- 审核详情统一接口 - */ - public static String URi_device_DevClient_GETRVODESC = URiBase + "/device/DevRefer/get_rvo_desc"; - /** - * 我的转介 -- 已成交列表 - */ - public static String URi_device_DevRefer_GETROVLIST = URiBase + "/device/DevRefer/get_rov_list"; - /** - * 我我的转介 -- 未成交列表 - */ - public static String URi_device_DevRefer_GETROVNLIST = URiBase + "/device/DevRefer/get_rovn_list"; - /** - * 转介---转介详情统一接口 - */ - public static String URi_device_DevRefer_GETREFERDESC = URiBase + "/device/DevRefer/get_refer_desc"; - - /** - * 神工具-神罗盘-方位信息 - */ - public static String Uri_device_Config_getGeomancy = URiBase + "/device/DevFission/getGeomancy"; - - /** - * 云裂变中 App活动列表 - */ - public static String URi_device_DevFission_GETACTIVITYLISTS = URiBase + "/device/DevFission/getActivityLists"; - - /** - * 云抖音 -- 列表 - */ - public static String URi_device_DevTool_dyList = URiBase + "/device/DevTool/dyList"; - - - /** - * 获取云裂变链接 - */ - public static String URi_device_DevFission_GETLINK = URiBase + "/device/DevFission/getIink"; - - /** - * 获取云推荐链接 - */ - public static String URi_device_DevFission_GETWXPTLINK = URiBase + "/device/DevFission/getWxptLink"; - /** - * 获取酷家乐的户型 - */ - public static String URi_device_DevFission_GETAKUHOUSE = URiBase + "/device/DevFission/getKuHouse"; - /** - * 获取酷家乐的户型 - */ - public static String URi_device_DevMark_visitorOrder = URiBase + "/device/DevMark/visitorOrder"; - /** - * 云裂变 -- 报名客户 - */ - public static String URi_device_DevFission_enrollUser = URiBase + "/device/DevFission/enrollUser"; - /** - * 云拼团 -- 报名客户 - */ - public static String URi_device_DevGroup_enrollUser = URiBase + "/device/DevAssemble/assembleEnrollUser"; - /** - * 云砍价 -- 报名客户 - */ - public static String URi_device_DevTool_BargaiEnrollUser = URiBase + "/device/DevTool/BargaiEnrollUser"; - /** - * 云吸粉 -- 报名客户 - */ - public static String URi_device_DevTool_fansEnrollUser = URiBase + "/device/DevTool/fansEnrollUser"; - /** - * 云裂变 -- 数据统计 -- 店铺 - */ - public static String URi_device_DevFission_fissionStore = URiBase + "/device/DevFission/fissionStore"; - /** - * 云拼团 -- 数据统计 -- 店铺 - */ - public static String URi_device_DevGroup_groupStore = URiBase + "/device/DevAssemble/assembleStore"; - /** - * 云砍价 -- 数据统计 -- 店铺筛选 - */ - public static String URi_device_DevTool_BargaiStore = URiBase + "/device/DevTool/BargaiStore"; - /** - * 云吸粉 -- 数据统计 -- 店铺 - */ - public static String URi_device_DevTool_fansStore = URiBase + "/device/DevTool/fansStore"; - /** - * 云裂变 -- 数据统计列表 - */ - public static String URi_device_DevFission_fissionStatistical = URiBase + "/device/DevFission/fissionStatistical"; - /** - * 云拼团 -- 数据统计列表 - */ - public static String URi_device_DevGroup_groupStatistical = URiBase + "/device/DevAssemble/assembleStatistical"; - /** - * 云砍价 -- 数据统计列表 - */ - public static String URi_device_DevTool_BargaiStatistical = URiBase + "/device/DevTool/BargaiStatistical"; - /** - * 云吸粉 -- 数据统计列表 - */ - public static String URi_device_DevTool_fansStatistical = URiBase + "/device/DevTool/fansStatistical"; - /** - * 引流客户 -- 云推荐客户信息 - */ - public static String URi_device_DevFission_fissionWxClient = URiBase + "/device/DevFission/fissionWxClient"; - /** - * 设计师推荐 -- 客户详情 - */ - public static String URi_device_DevTool_designerDetail = URiBase + "/device/DevTool/designerDetail"; - /** - * 转介 -- 推荐客户 -- 转介信息 - */ - public static String URi_device_DevRefer_roundReferInfo = URiBase + "/device/DevRefer/roundReferInfo"; - /** - * 云裂变 -- 资金明细 - */ - public static String URi_device_DevFission_fissionMoneyInfo = URiBase + "/device/DevFission/fissionMoneyInfo"; - /** - * 云裂变 -- 活动下线 - */ - public static String URi_device_DevFission_fissionOffline = URiBase + "/device/DevFission/fissionOffline"; - /** - * 进店列表 -- 今日引流和跟踪数量 - */ - public static String URi_device_DevMark_redDotNum = URiBase + "/device/DevMark/redDotNum"; - - /** - * 云拼团 -- 资金明细 - */ - public static String URi_device_DevAssemble_assembleMoneyInfo = URiBase + "/device/DevAssemble/assembleMoneyInfo"; - - /** - * 云吸粉 -- 资金明细 - */ - public static String URi_device_DevTool_fansMoneyInfo = URiBase + "/device/DevTool/fansMoneyInfo"; - - /** - * 云拼团中 App活动列表 - */ - public static String URi_device_DevFission_GETASSEMBLELISTS = URiBase + "/device/DevAssemble/getAssembleLists"; - - /** - * 云砍价 -- 列表 - */ - public static String URi_device_DevTool_getBargainLists = URiBase + "/device/DevTool/getBargainLists"; - - /** - * 云吸粉 - */ - public static String URi_device_DevTool_getFansLists = URiBase + "/device/DevTool/getFansLists"; - - /** - * 云拼团 -- 链接 - */ - public static String URi_device_DevGroup_getAssembleLink = URiBase + "/device/DevAssemble/getAssembleIink"; - - /** - * 云商城 -- 分享链接 - */ - public static String URi_device_DevTool_shoppingLink = URiBase + "/device/DevTool/shoppingLink"; - - - /** - * 云砍价 -- 链接 - */ - public static String URi_device_DevTool_getBargaiIink = URiBase + "/device/DevTool/getBargaiIink"; - - - /** - * 云吸粉 -- 链接 - */ - public static String URi_device_DevTool_getFansIink = URiBase + "/device/DevTool/getFansIink"; - - /** - * 订单 -- 详情页获取老带新扫码信息 - */ - - public static String URi_device_DevOrder_getLdx = URiBase + "/device/DevOrder/getLdx"; - - /** - * 云裂变 -- 新建活动 - */ - public static String URi_device_DevFission_newActivity = URiBase + "/device/DevFission/newActivity"; + public static String URi_device_AppCustomer_fpList = URiBase + "/device/AppCustomer/fpList"; - /** - * 云裂变--活动编辑 - */ - public static String URi_device_DevFission_updateActivity = URiBase + "/device/DevFission/updateActivity"; - - /** - * 云裂变--活动编辑详情获取 - */ - public static String URi_device_DevFission_activityUpdateDetail = URiBase + "/device/DevFission/activityUpdateDetail"; - /** - * vr-- 风格 - */ - public static String URi_device_DevVR_Style = URiBase + "/device/DevVR/style"; - /** - * 云VR -- 发布需求 - */ - public static String URi_device_DevVR_ReleaseNeed = URiBase + "/device/DevVR/releaseNeed"; - /** - * 云VR -- 任务需求页面 - */ - public static String URi_device_DevVR_TaskNeed = URiBase + "/device/DevVR/taskNeed"; - /** - * 云VR -- 作品审核页面 - */ - public static String URi_device_DevVR_TaskCheck = URiBase + "/device/DevVR/taskCheck"; - /** - * 云VR -- 我的作品页面 - */ - public static String URi_device_DevVR_MyWorks = URiBase + "/device/DevVR/myWorks"; - /** - * 云VR -- 详情页面 - */ - public static String URi_device_DevVR_WorksDetail = URiBase + "/device/DevVR/worksDetail"; - /** - * 云VR -- 获取H5链接 - */ - public static String URi_device_DevVR_GetHLink = URiBase + "/device/DevVR/getHLink"; - /** - * 云VR -- 店长审核作品 - */ - public static String URi_device_DevVR_WorkAudit = URiBase + "/device/DevVR/worksAudit"; - - /** - * 云VR -- 抢单 - */ - public static String URi_device_DevVR_RoboneWork = URiBase + "/device/DevVR/roboneWork"; - /** - * 云VR -- 富文本上传图片 - */ - public static String URi_device_DevVR_uploadImg = URiBase + "/device/DevVR/uploadImg"; - - /** - * 上传图片临时存储图片链接 - */ - public static String URi_device_DevMark_uploadPic = URiBase + "/device/DevMark/uploadPic"; - - - /** - * 客户分配---客户分配 - */ - public static String URi_device_DevClient_assignment= URiBase + "/device/DevClient/assignment"; - /** - * 云VR -- 开始提交方案设计页 - */ - public static String URi_device_DevVR_worksDesign= URiBase + "/device/DevVR/worksDesign"; - /** - * 云VR -- 重新编辑页 - */ - public static String URi_device_DevVR_worksReedit= URiBase + "/device/DevVR/worksReedit"; - - /** - * 云VR -- 上传补打头像 - */ - public static String URi_device_DevVR_WorkUploadHead = URiBase + "/device/DevVR/worksUplodehead"; - - /** - * 云VR -- 任务需求和审核和我的作品数量 - */ - public static String URi_device_DevVR_Amount = URiBase + "/device/DevVR/amount"; /** - * 红点数量 == 营销工具和里面分别数量 + * 分配列表 */ - public static String URi_device_DevVR_MarketTool = URiBase + "/device/DevVR/marketTool"; + public static String URi_device_AppCustomer_customerList = URiBase + "/device/AppCustomer/customerList"; /** - * 红点数量 == 营销工具和里面分别数量 + * 客户分配 */ - public static String URi_device_DevTool_getShareImg = URiBase + "/device/DevTool/getShareImg"; - - /** - * 设计师推荐 -- 设计师邀请链接 - */ - public static String URi_device_DevTool_designerLink = URiBase + "/device/DevTool/designerLink"; - - /** - * 异业推荐 -- 异业邀请链接 - */ - public static String URi_device_DevTool_yiyeLink = URiBase + "/device/DevTool/yiyeLink"; - - - /** - * 云抖音 -- 新增视频 - */ - public static String URi_device_DevTool_addVideo = URiBase + "/device/DevTool/addVideo"; - - /** - * 云抖音 -- 保存选择 - */ - public static String URi_device_DevTool_saveChoose = URiBase + "/device/DevTool/saveChoose"; - - /** - * 云抖音 -- 应用工具设置 - */ - public static String URi_device_DevTool_toolSet = URiBase + "/device/DevTool/toolSet"; - - - /** - * 云抖音 -- 应用工具设置 -- 修改状态 - */ - public static String URi_device_DevTool_toolUpdate = URiBase + "/device/DevTool/toolUpdate"; - - /** - * 云抖音 -- 删除 - */ - public static String URi_device_DevTool_deleteVideo = URiBase + "/device/DevTool/deleteVideo"; - - /** - * 报备奖励-- 已成交 -- 待审核通过或驳回 - */ - public static String URi_device_DevClient_checkBaobei = URiBase + "/device/DevClient/checkBaobei"; - - /** - * 转介 -- 转介进店 -- 已成交 -- 待审核通过和驳回 - */ - public static String URi_device_DevRefer_checkRefer = URiBase + "/device/DevRefer/checkRefer"; - /** - * 转介 -- 批量转介 -- 提交转介信息 - */ - public static String URi_device_DevRefer_myBatchReferMsg = URiBase + "/device/DevRefer/myBatchReferMsg"; - - /** - * 店铺位置 - */ - public static String URi_wxpt_app_index = URiBase + "/wxpt/app/dw/index"; - - /** - * 异业推荐 -- 列表 H5链接 - */ - public static String URi_device_DevTool_yiyeList = URiBase + "/device/DevTool/yiyeList"; - - /** - * 云商城 -- 列表 - */ - public static String URi_device_DevTool_shoppingList = URiBase + "/device/DevTool/shoppingList"; - - /** - * 云裂变、云拼团 -- 保证金支付 - */ - public static String URi_device_DevFission_bondPay= URiBase + "/device/DevFission/bondPay"; - /** - * 云微信 -- 列表 - */ - public static String Uri_device_DevTool_pcwechatList = URiBase + "/device/DevTool/pcwechatList"; - /** - * 云微信 -- 二维码 - */ - public static String Uri_device_DevTool_pcwechatGetQrcode = URiBase + "/device/DevTool/pcwechatGetQrcode"; - - /** - * 云微信 -- 占用并调取方法 - */ - public static String Uri_device_DevTool_pcwechatQrcode = URiBase + "/device/DevTool/pcwechatQrcode"; - - /** - * 云裂变、云拼团 -- 任务详情 - */ - public static String Uri_device_DevFission_taskDetail= URiBase + "/device/DevFission/taskDetail"; - - /** - * 云微信——活动宣传 - */ - public static String Uri_device_wxpt_ywx= URiBase + "/wxpt/ywx/ywx/activityList/id="; - - /** - * 群邀请 - */ - public static String Uri_device_wxpt_groupInvitation= URiBase + "/wxpt/ywx/ywx/groupInvitation/id="; - - - /** - * 云微信 -- 删除pc数据 - */ - public static String Uri_device_DevTool_deletePc= URiBase + "/device/DevTool/deletePc"; - - /** - * 订单 -- 修改订单金额 - */ - public static String Uri_device_DevOrder_changeOrderSales= URiBase + "/device/DevOrder/changeOrderSales"; - - - - /** - * 订单 -- 修改订单金额 -- 详情 - */ - public static String URi_device_DevOrder_changeOrderInfo = URiBase + "/device/DevOrder/changeOrderInfo"; - - - - /** - * 人事——获取全部店铺 - */ - public static String URi_device_DevPerManager_storeInfo = URiBase + "/device/DevPerManager/storeInfo"; - - /** - * 组 -- 组员列表 - */ - public static String URi_device_DevPerManager_teamList = URiBase + "/device/DevPerManager/teamList"; - - /** - * 人事——当前店铺 -- 店员 - */ - public static String URi_device_DevPerManager_storeClerk = URiBase + "/device/DevPerManager/storeClerk"; - /** - * 新增组 -- 请选择组员 - */ - public static String URi_device_DevPerManager_zyGroupList = URiBase + "/device/DevPerManager/zyGroupList"; - /** - * 新增组 -- 请选择组长 - */ - public static String URi_device_DevPerManager_zzGroupList = URiBase + "/device/DevPerManager/zzGroupList"; - - /** - * 当前店铺 -- 所有组 - */ - public static String URi_device_DevPerManager_groupAll = URiBase + "/device/DevPerManager/groupAll"; - - - /** - * 当前店铺 -- 新增店员店长 - */ - public static String URi_device_DevPerManager_saveClerk = URiBase + "/device/DevPerManager/saveClerk"; - - /** - * 组 -- 修改组信息列表 - */ - public static String URi_device_DevPerManager_upTeamInfo = URiBase + "/device/DevPerManager/upTeamInfo"; - - - - - /** - * 当前店铺-- 新增组/修改组 - */ - public static String URi_device_DevPerManager_saveGroup = URiBase + "/device/DevPerManager/saveGroup"; - - - /** - * 当前店铺 -- 新增店员店长 - */ - public static String URi_device_DevPerManager_updClerk = URiBase + "/device/DevPerManager/updClerk"; - - /** - * 调职 -- 调至店铺 - */ - public static String URi_device_DevPerManager_transfer = URiBase + "/device/DevPerManager/transfer"; - - /** - * 调职、离职 -- 交接人 - */ - public static String URi_device_DevPerManager_Handover = URiBase + "/device/DevPerManager/Handover"; - - /** - * 确认调职 - */ - public static String URi_device_DevPerManager_updClerkStore = URiBase + "/device/DevPerManager/updClerkStore"; - - /** - * 确认离职 - */ - public static String URi_device_DevPerManager_updLeaveTime = URiBase + "/device/DevPerManager/updLeaveTime"; - - /** - * 培训视频 -- 分类 - */ - public static String URi_device_DevVideo_videoStyle = URiBase + "/device/DevVideo/videoStyle"; - - /** - * 培训视频 -- 列表 - */ - public static String URi_device_DevVideo_videoList = URiBase + "/device/DevVideo/videoList"; - - /** - * 培训视频 -- 视频详情 - */ - public static String URi_device_DevVideo_videoInfo = URiBase + "/device/DevVideo/videoInfo"; - - /** - * 培训视频 -- 视频观看完返回 - */ - public static String URi_device_DevVideo_videoRecord = URiBase + "/device/DevVideo/videoRecord"; - - /** - * 培训视频 -- 留言评论 - */ - public static String URi_device_DevVideo_videoComment = URiBase + "/device/DevVideo/videoComment"; - - /** - * 培训视频 -- 点赞点踩 - */ - public static String URi_device_DevVideo_videoDzDc = URiBase + "/device/DevVideo/videoDzDc"; - - /** - * 调拨 - -确认调拨 - */ - public static String URi_device_DevMark_dbConfirm= URiBase + "/device/DevMark/dbConfirm"; - - /** - * 调拨 -- 客户调拨列表 - */ - public static String URi_device_DevMark_dbRecord= URiBase + "/device/DevMark/dbRecord"; - - /** - * 调拨-- 店铺列表 - */ - public static String URi_device_DevMark_dbStore= URiBase + "/device/DevMark/dbStore"; - - /** - * 客户信息页 -- 推荐客户进店信息 - */ - public static String URi_device_DevMark_allYlCustomer= URiBase + "/device/DevMark/allYlCustomer"; - - /** - * 蜂狐推荐-抢单客户: - */ - public static String URi_device_DevMark_robCustomer= URiBase + "/device/DevMark/robCustomer"; - - - /** - * 没有分享活动 - */ - public static String URi_device_DevMark_shareActivity= URiBase + "/device/DevMark/shareActivity"; - - /** - * 组 -- 删除组 - */ - public static String URi_device_DevPerManager_deleteGroup= URiBase + "/device/DevPerManager/deleteGroup"; - - /** - * 进店列表 -- 抢单客户 - */ - public static String URi_device_DevPerManager_robCustomer= URiBase + "/device/DevPerManager/robCustomer"; - - /** - * 抢单客户列表 - */ - public static String URi_device_DevPerManager_robCustomerList= URiBase + "/device/DevPerManager/robCustomerList"; - - /** - * 开始抢单 - */ - public static String URi_device_DevPerManager_startRob= URiBase + "/device/DevPerManager/startRob"; - - /** - * 打标 -- 获取用户类型 - */ - public static String URi_device_DevMark_customerType= URiBase + "/device/DevMark/customerType"; - + public static String URi_device_AppCustomer_customerFPList = URiBase + "/device/AppCustomer/customerFPList"; } diff --git a/app/src/main/java/com/example/administrator/seven/okgonet/NetApi.java b/app/src/main/java/com/example/administrator/seven/okgonet/NetApi.java index 0a8eb10..be773a8 100644 --- a/app/src/main/java/com/example/administrator/seven/okgonet/NetApi.java +++ b/app/src/main/java/com/example/administrator/seven/okgonet/NetApi.java @@ -59,4 +59,141 @@ public class NetApi { } + /** + * 分配列表 + */ + public Observable fpList(final String uid,final String search) { + + return new Observable() { + @Override + public void subscribe(final Observer observer) { + + OkGo.post(HttpConstants.URi_device_AppCustomer_fpList)// + .params("uid", uid) + .params("search", search) + .converter(new StringConvert())// + .cacheMode(CacheMode.NO_CACHE) //无缓存模式 CacheMode.NO_CACHE + .adapt(new ObservableResponse())// + .subscribeOn(Schedulers.io())// + .observeOn(AndroidSchedulers.mainThread())// + .subscribe(new io.reactivex.Observer>() { + + @Override + public void onSubscribe(@NonNull Disposable d) { + // addDisposable(d); + } + + @Override + public void onNext(@NonNull Response response) { + observer.onNext(response); + } + + @Override + public void onError(@NonNull Throwable e) { + e.printStackTrace(); + + } + + @Override + public void onComplete() { + + } + }); + } + }; + + } + + /** + * 客户列表 + */ + public Observable customerList(final String uid,final String search) { + + return new Observable() { + @Override + public void subscribe(final Observer observer) { + + OkGo.post(HttpConstants.URi_device_AppCustomer_customerList)// + .params("uid", uid) + .params("search", search) + .converter(new StringConvert())// + .cacheMode(CacheMode.NO_CACHE) //无缓存模式 CacheMode.NO_CACHE + .adapt(new ObservableResponse())// + .subscribeOn(Schedulers.io())// + .observeOn(AndroidSchedulers.mainThread())// + .subscribe(new io.reactivex.Observer>() { + + @Override + public void onSubscribe(@NonNull Disposable d) { + // addDisposable(d); + } + + @Override + public void onNext(@NonNull Response response) { + observer.onNext(response); + } + + @Override + public void onError(@NonNull Throwable e) { + e.printStackTrace(); + + } + + @Override + public void onComplete() { + + } + }); + } + }; + + } + + + /** + * 客户分配 + */ + public Observable customerFPList(final String uid) { + + return new Observable() { + @Override + public void subscribe(final Observer observer) { + + OkGo.post(HttpConstants.URi_device_AppCustomer_customerFPList)// + .params("uid", uid) + .converter(new StringConvert())// + .cacheMode(CacheMode.NO_CACHE) //无缓存模式 CacheMode.NO_CACHE + .adapt(new ObservableResponse())// + .subscribeOn(Schedulers.io())// + .observeOn(AndroidSchedulers.mainThread())// + .subscribe(new io.reactivex.Observer>() { + + @Override + public void onSubscribe(@NonNull Disposable d) { + // addDisposable(d); + } + + @Override + public void onNext(@NonNull Response response) { + observer.onNext(response); + } + + @Override + public void onError(@NonNull Throwable e) { + e.printStackTrace(); + + } + + @Override + public void onComplete() { + + } + }); + } + }; + + } + + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/utils/AbStrUtil.java b/app/src/main/java/com/example/administrator/seven/utils/AbStrUtil.java new file mode 100644 index 0000000..281fff0 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/utils/AbStrUtil.java @@ -0,0 +1,671 @@ +/* + * + */ +package com.example.administrator.seven.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +// TODO: Auto-generated Javadoc + +/** + * 描述:字符串处理类. + */ +public final class AbStrUtil { + + /** + * 描述:将null转化为“”. + * + * @param str 指定的字符串 + * @return 字符串的String类型 + */ + public static String parseEmpty(String str) { + if (str == null || "null".equals(str.trim())) { + str = ""; + } + return str.trim(); + } + + /** + * 描述:判断一个字符串是否为null或空值. + * + * @param str 指定的字符串 + * @return true or false + */ + public static boolean isEmpty(String str) { + return str == null || str.trim().length() == 0; + } + + /** + * 获取字符串中文字符的长度(每个中文算2个字符). + * + * @param str 指定的字符串 + * @return 中文字符的长度 + */ + public static int chineseLength(String str) { + int valueLength = 0; + String chinese = "[\u0391-\uFFE5]"; + /* 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 */ + if (!isEmpty(str)) { + for (int i = 0; i < str.length(); i++) { + /* 获取一个字符 */ + String temp = str.substring(i, i + 1); + /* 判断是否为中文字符 */ + if (temp.matches(chinese)) { + valueLength += 2; + } + } + } + return valueLength; + } + + /** + * 描述:获取字符串的长度. + * + * @param str 指定的字符串 + * @return 字符串的长度(中文字符计2个) + */ + public static int strLength(String str) { + int valueLength = 0; + String chinese = "[\u0391-\uFFE5]"; + if (!isEmpty(str)) { + // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 + for (int i = 0; i < str.length(); i++) { + // 获取一个字符 + String temp = str.substring(i, i + 1); + // 判断是否为中文字符 + if (temp.matches(chinese)) { + // 中文字符长度为2 + valueLength += 2; + } else { + // 其他字符长度为1 + valueLength += 1; + } + } + } + return valueLength; + } + + /** + * 描述:获取指定长度的字符所在位置. + * + * @param str 指定的字符串 + * @param maxL 要取到的长度(字符长度,中文字符计2个) + * @return 字符的所在位置 + */ + public static int subStringLength(String str, int maxL) { + int currentIndex = 0; + int valueLength = 0; + String chinese = "[\u0391-\uFFE5]"; + // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 + for (int i = 0; i < str.length(); i++) { + // 获取一个字符 + String temp = str.substring(i, i + 1); + // 判断是否为中文字符 + if (temp.matches(chinese)) { + // 中文字符长度为2 + valueLength += 2; + } else { + // 其他字符长度为1 + valueLength += 1; + } + if (valueLength >= maxL) { + currentIndex = i; + break; + } + } + return currentIndex; + } + + /** + * 描述:手机号格式验证. + * + * @param str 指定的手机号码字符串 + * @return 是否为手机号码格式:是为true,否则false + */ + public static Boolean isMobileNo(String str) { + Boolean isMobileNo = false; + try { + Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(17[0-9])|(18[0-9]))\\d{8}$"); + Matcher m = p.matcher(str); + isMobileNo = m.matches(); + } catch (Exception e) { + e.printStackTrace(); + } + return isMobileNo; + } + + /** + * 描述:是否只是字母和数字. + * + * @param str 指定的字符串 + * @return 是否只是字母和数字:是为true,否则false + */ + public static Boolean isNumberLetter(String str) { + Boolean isNoLetter = false; + String expr = "^[A-Za-z0-9]+$"; + if (str.matches(expr)) { + isNoLetter = true; + } + return isNoLetter; + } + + /** + * 检查价格和面积是不是符合格式 + * + * @param str 指定的字符串 + * @return + * @author 常斌 + * 2015-7-7 上午11:49:00 create + */ + public static Boolean isPriceOrArea(String str) { + Boolean isPrice = false; + String expr = "\\d{1,10}(\\.\\d{1,2})?$"; + if (str.matches(expr)) { + isPrice = true; + } + return isPrice; + } + + /** + * 判断是不是身份证号码 + * + * @param str 指定的字符串 + * @return + * @author 常斌 + * 2015-7-7 上午10:51:44 create 是否是身份证号码:是为true,不是为false + */ + public static Boolean isIDCardNo(String str) { + Boolean isIDCardNo = false; + String expr1 = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$";//15位的 + String expr2 = "^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X)$";//18位的 + if (str.matches(expr1)) { + isIDCardNo = true; + } else isIDCardNo = str.matches(expr2); + return isIDCardNo; + } + + /** + * 描述:是否只是数字. + * + * @param str 指定的字符串 + * @return 是否只是数字:是为true,否则false + */ + public static Boolean isNumber(String str) { + Boolean isNumber = false; + String expr = "^[0-9]+$"; + if (str.matches(expr)) { + isNumber = true; + } + return isNumber; + } + + /** + * 描述:是否是邮箱. + * + * @param str 指定的字符串 + * @return 是否是邮箱:是为true,否则false + */ + public static Boolean isEmail(String str) { + Boolean isEmail = false; + String expr = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; + if (str.matches(expr)) { + isEmail = true; + } + return isEmail; + } + + /** + * 描述:是否是中文. + * + * @param str 指定的字符串 + * @return 是否是中文:是为true,否则false + */ + public static Boolean isChinese(String str) { + Boolean isChinese = true; + String chinese = "[\u0391-\uFFE5]"; + if (!isEmpty(str)) { + // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 + for (int i = 0; i < str.length(); i++) { + // 获取一个字符 + String temp = str.substring(i, i + 1); + // 判断是否为中文字符 + if (temp.matches(chinese)) { + } else { + isChinese = false; + } + } + } + return isChinese; + } + + /** + * 描述:是否包含中文. + * + * @param str 指定的字符串 + * @return 是否包含中文:是为true,否则false + */ + public static Boolean isContainChinese(String str) { + Boolean isChinese = false; + String chinese = "[\u0391-\uFFE5]"; + if (!isEmpty(str)) { + // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1 + for (int i = 0; i < str.length(); i++) { + // 获取一个字符 + String temp = str.substring(i, i + 1); + // 判断是否为中文字符 + if (temp.matches(chinese)) { + isChinese = true; + } else { + + } + } + } + return isChinese; + } + + /** + * 描述:从输入流中获得String. + * + * @param is 输入流 + * @return 获得的String + */ + public static String convertStreamToString(InputStream is) { + BufferedReader reader = new BufferedReader(new InputStreamReader(is)); + StringBuilder sb = new StringBuilder(); + String line = null; + try { + while ((line = reader.readLine()) != null) { + sb.append(line + "\n"); + } + + // 最后一个\n删除 + if (sb.indexOf("\n") != -1 && sb.lastIndexOf("\n") == sb.length() - 1) { + sb.delete(sb.lastIndexOf("\n"), sb.lastIndexOf("\n") + 1); + } + + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + is.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return sb.toString(); + } + + /** + * 描述:标准化日期时间类型的数据,不足两位的补0. + * + * @param dateTime 预格式的时间字符串,如:2012-3-2 12:2:20 + * @return String 格式化好的时间字符串,如:2012-03-20 12:02:20 + */ + public static String dateTimeFormat(String dateTime) { + StringBuilder sb = new StringBuilder(); + try { + if (isEmpty(dateTime)) { + return null; + } + String[] dateAndTime = dateTime.split(" "); + if (dateAndTime.length > 0) { + for (String str : dateAndTime) { + if (str.indexOf("-") != -1) { + String[] date = str.split("-"); + for (int i = 0; i < date.length; i++) { + String str1 = date[i]; + sb.append(strFormat2(str1)); + if (i < date.length - 1) { + sb.append("-"); + } + } + } else if (str.indexOf(":") != -1) { + String[] date = str.split(":"); + for (int i = 0; i < date.length; i++) { + String str1 = date[i]; + sb.append(strFormat2(str1)); + if (i < date.length - 1) { + sb.append(":"); + } + } + } + } + } + } catch (Exception e) { + e.printStackTrace(); + return null; + } + return sb.toString(); + } + + /** + * 描述:不足2个字符的在前面补“0”. + * + * @param str 指定的字符串 + * @return 至少2个字符的字符串 + */ + public static String strFormat2(String str) { + try { + if (str.length() <= 1) { + str = "0" + str; + } + } catch (Exception e) { + e.printStackTrace(); + } + return str; + } + + /** + * 描述:截取字符串到指定字节长度. + * + * @param str the str + * @param length 指定字节长度 + * @return 截取后的字符串 + */ + public static String cutString(String str, int length) { + return cutString(str, length, ""); + } + + /** + * 描述:截取字符串到指定字节长度. + * + * @param str 文本 + * @param length 字节长度 + * @param dot 省略符号 + * @return 截取后的字符串 + */ + public static String cutString(String str, int length, String dot) { + int strBLen = strlen(str, "GBK"); + if (strBLen <= length) { + return str; + } + int temp = 0; + StringBuffer sb = new StringBuffer(length); + char[] ch = str.toCharArray(); + for (char c : ch) { + sb.append(c); + if (c > 256) { + temp += 2; + } else { + temp += 1; + } + if (temp >= length) { + if (dot != null) { + sb.append(dot); + } + break; + } + } + return sb.toString(); + } + + /** + * 描述:截取字符串从第一个指定字符. + * + * @param str1 原文本 + * @param str2 指定字符 + * @param offset 偏移的索引 + * @return 截取后的字符串 + */ + public static String cutStringFromChar(String str1, String str2, int offset) { + if (isEmpty(str1)) { + return ""; + } + int start = str1.indexOf(str2); + if (start != -1) { + if (str1.length() > start + offset) { + return str1.substring(start + offset); + } + } + return ""; + } + + /** + * 描述:获取字节长度. + * + * @param str 文本 + * @param charset 字符集(GBK) + * @return the int + */ + public static int strlen(String str, String charset) { + if (str == null || str.length() == 0) { + return 0; + } + int length = 0; + try { + length = str.getBytes(charset).length; + } catch (Exception e) { + e.printStackTrace(); + } + return length; + } + + /** + * 获取大小的描述. + * + * @param size 字节个数 + * @return 大小的描述 + */ + public static String getSizeDesc(long size) { + String suffix = "B"; + if (size >= 1024) { + suffix = "K"; + size = size >> 10; + if (size >= 1024) { + suffix = "M"; + // size /= 1024; + size = size >> 10; + if (size >= 1024) { + suffix = "G"; + size = size >> 10; + // size /= 1024; + } + } + } + return size + suffix; + } + + /** + * 描述:ip地址转换为10进制数. + * + * @param ip the ip + * @return the long + */ + public static long ip2int(String ip) { + ip = ip.replace(".", ","); + String[] items = ip.split(","); + return Long.valueOf(items[0]) << 24 | Long.valueOf(items[1]) << 16 | Long.valueOf(items[2]) << 8 | Long.valueOf(items[3]); + } + + /** + * The main method. + * + * @param args the arguments + */ + public static void main(String[] args) { + System.out.println(dateTimeFormat("2012-3-2 12:2:20")); + } + + /** + * 字符串数组转换为list + * + * @param arr 字符串数组 + * @return 2015-5-4 上午11:15:57 create + */ + public static List arrayToList(String[] arr) { + return Arrays.asList(arr); + } + +// /** +// * Unicode编码字符串 装汉字 +// * +// * @param utfString +// * @return +// * @author wop +// * 2015-5-11 下午6:15:28 create +// */ +// public static String convert(String utfString) { +// StringBuilder sb = new StringBuilder(); +// int i = -1; +// int pos = 0; +// +// while ((i = utfString.indexOf("\\u", pos)) != -1) { +// sb.append(utfString.substring(pos, i)); +// if (i + 5 < utfString.length()) { +// pos = i + 6; +// sb.append((char) Integer.parseInt(utfString.substring(i + 2, i + 6), 16)); +// } +// } +// return sb.toString(); +// } + + /** + * 将Unicode编码解析成汉字 + * + * @param pStr 包含(汉字的Unicode)编码的字符串 + * @return + */ + public static String decodeUnicode(String pStr) { + char aChar; + int len = pStr.length(); + StringBuffer outBuffer = new StringBuffer(len); + for (int x = 0; x < len; ) { + aChar = pStr.charAt(x++); + if (aChar == '\\') { + aChar = pStr.charAt(x++); + if (aChar == 'u') { + int value = 0; + for (int i = 0; i < 4; i++) { + aChar = pStr.charAt(x++); + switch (aChar) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + value = (value << 4) + aChar - '0'; + break; + case 'a': + case 'b': + case 'c': + case 'd': + case 'e': + case 'f': + value = (value << 4) + 10 + aChar - 'a'; + break; + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + value = (value << 4) + 10 + aChar - 'A'; + break; + default: + throw new IllegalArgumentException( + "Malformed encoding."); + } + } + outBuffer.append((char) value); + } else { + if (aChar == 't') { + aChar = '\t'; + } else if (aChar == 'r') { + aChar = '\r'; + } else if (aChar == 'n') { + aChar = '\n'; + } else if (aChar == 'f') { + aChar = '\f'; + } + outBuffer.append(aChar); + } + } else { + outBuffer.append(aChar); + } + } + return outBuffer.toString(); + } + + /** + * 字符串按指定的分隔符转换成String[] + * + * @param str 原字符串 + * @param tmp 指定的分隔符 + * @return + * @author wop + * 2015-5-21 上午9:59:47 create + */ + public static String[] getStrings(String str, String tmp) { + String[] result = str.split(tmp); + return result; + } + + /** + * 去除集合里面重复的数据 + * + * @param li 原集合 + * @return 处理以后的集合 + */ + public static ArrayList getNewList(ArrayList li) { + ArrayList list = new ArrayList(); + for (int i = 0; i < li.size(); i++) { + String str = li.get(i); //获取传入集合对象的每一个元素 + if (!list.contains(str)) { //查看新集合中是否有指定的元素,如果没有则加入 + list.add(str); + } + } + return list; //返回集合 + } + + /** + * 过滤网页标签 + */ + public static String getHtml2Text(String inputString) { + String htmlStr = inputString; //含html标签的字符串 + String textStr = ""; + Pattern p_script; + Matcher m_script; + Pattern p_style; + Matcher m_style; + Pattern p_html; + Matcher m_html; + try { + String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; //定义script的正则表达式{或]*?>[\\s\\S]*?<\\/script> } + String regEx_style = "<[\\s]*?style[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?style[\\s]*?>"; //定义style的正则表达式{或]*?>[\\s\\S]*?<\\/style> } + String regEx_html = "<[^>]+>"; //定义HTML标签的正则表达式 + + p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); + m_script = p_script.matcher(htmlStr); + htmlStr = m_script.replaceAll(""); //过滤script标签 + + p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); + m_style = p_style.matcher(htmlStr); + htmlStr = m_style.replaceAll(""); //过滤style标签 + + p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); + m_html = p_html.matcher(htmlStr); + htmlStr = m_html.replaceAll(""); //过滤html标签 + + textStr = htmlStr; + + } catch (Exception e) { + System.err.println("Html2Text: " + e.getMessage()); + } + + return textStr;//返回文本字符串 + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/utils/GlideTools.java b/app/src/main/java/com/example/administrator/seven/utils/GlideTools.java new file mode 100644 index 0000000..066138d --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/utils/GlideTools.java @@ -0,0 +1,666 @@ +package com.example.administrator.seven.utils; + +import android.content.Context; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapShader; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.RectF; +import android.net.Uri; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.Priority; +import com.bumptech.glide.RequestManager; +import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; +import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; +import com.bumptech.glide.request.RequestOptions; +import com.bumptech.glide.request.target.Target; + +import java.io.File; +import java.security.MessageDigest; +import java.util.concurrent.ExecutionException; + +import androidx.annotation.NonNull; + +/** + * @ ClassName: XGlide .class + * @ function:图片加载类 + * @ author linzl 2017/1/23 10:24 + * @ version 1.0 + */ + +public class GlideTools { + + private static GlideTools singleton; + private static Context mCtx; + private static RequestManager glideRequest; + private boolean isDiskCache = true; + + public static GlideTools init(Context ctx) { + mCtx=ctx; + glideRequest = Glide.with(ctx); + // TODO 双重校验锁 + if (null == singleton) + synchronized (GlideTools.class) { + if (null == singleton) { + singleton = new GlideTools(); + } + } + return singleton; + } + + + + public void setDiskCache(boolean isCache) { + this.isDiskCache = isCache; + } + + /** + * url + * + * @param iv + * @param url + */ +// public void display(ImageView iv, String url) { +// display(iv, url, -1); +// } + public void display(ImageView iv, String url) { + glideRequest.load(url).into(iv); + } + /** + * url + * + * @param iv + * @param url + * @param defaultResId + */ +// public void display(ImageView iv, String url, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(url); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); +// +// +// } + + /** + * Uri + * + * @ param iv + * @ param uri + */ + public void display(ImageView iv, Uri uri) { + display(iv, uri, -1); + } + + /** + * Uri + * + * @ param iv + * @ param uri + * @ param defaultResId + */ + public void display(ImageView iv, Uri uri, int defaultResId) { + if (iv == null) + return; +// DrawableRequestBuilder builder = glideRequest.load(uri); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId); + glideRequest.load(uri).apply(options).into(iv); + } + + } + + /** + * drawableId + * + * @ param iv + * @ param drawableId + */ + public void display(ImageView iv, int drawableId) { + display(iv, drawableId, -1); + } + + /** + * drawableId + * + * @ param iv + * @ param drawableId + * @ param defaultResId + */ + public void display(ImageView iv, int drawableId, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(drawableId); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId); + glideRequest.load(drawableId).apply(options).into(iv); + } + + } + + /** + * File + * + * @ param iv + * @ param imgFile + */ + public void display(ImageView iv, File imgFile) { + display(iv, imgFile, -1); + } + + /** + * File + * + * @ param iv + * @ param imgFile + * @ param defaultResId + */ + public void display(ImageView iv, File imgFile, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(imgFile); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId); + glideRequest.load(imgFile).apply(options).into(iv); + } + + } + + /** + * byte[] + * + * @ param iv + * @ param modle + */ + public void display(ImageView iv, byte[] modle) { + display(iv, modle, -1); + } + + /** + * byte[] + * + * @ param iv + * @ param modle + * @ param defaultResId + */ + public void display(ImageView iv, byte[] modle, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(modle); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId); + glideRequest.load(modle).apply(options).into(iv); + } + + } + + // ///圆角图片-------------------------------------------------------------------- + /** + * 圆角-Url + * + * @ param iv + * @ param url + * @ param roundDip + */ + public void displayRound(ImageView iv, String url, int roundDip) { + displayRound(iv, url, roundDip, -1); + } + + /** + * 圆角-Url + * + * @ param iv + * @ param url + * @ param roundDip + * @ param defaultResId + */ + public void displayRound(ImageView iv, String url, int roundDip, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(url).transform(new GlideRoundTransform(mCtx, roundDip)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx, roundDip)); + glideRequest.load(url).apply(options).into(iv); + } + + } + + /** + * 圆角-drawableId + * + * @ param iv + * @ param drawableId + * @ param roundDip + */ + public void displayRound(ImageView iv, int drawableId, int roundDip) { + displayRound(iv, drawableId, roundDip, -1); + } + + /** + * 圆角-drawableId + * + * @ param iv + * @ param drawableId + * @ param roundDip + * @ param defaultResId + */ + public void displayRound(ImageView iv, int drawableId, int roundDip, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(drawableId).transform(new GlideRoundTransform(mCtx, roundDip)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx, roundDip)); + glideRequest.load(drawableId).apply(options).into(iv); + } + + } + + /** + * 圆角-Uri + * + * @ param iv + * @ param uri + * @ param roundDip + */ + public void displayRound(ImageView iv, Uri uri, int roundDip) { + displayRound(iv, uri, roundDip, -1); + } + + /** + * 圆角-Uri + * + * @ param iv + * @ param uri + * @ param roundDip + * @ param defaultResId + */ + public void displayRound(ImageView iv, Uri uri, int roundDip, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(uri).transform(new GlideRoundTransform(mCtx, roundDip)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx, roundDip)); + glideRequest.load(uri).apply(options).into(iv); + } + + } + + /** + * 圆角-File + * + * @ param iv + * @ param imgFile + * @ param roundDip + */ + public void displayRound(ImageView iv, File imgFile, int roundDip) { + displayRound(iv, imgFile, roundDip, -1); + } + + /** + * 圆角-File + * + * @ param iv + * @ param imgFile + * @ param roundDip + * @ param defaultResId + */ + public void displayRound(ImageView iv, File imgFile, int roundDip, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(imgFile).transform(new GlideRoundTransform(mCtx, roundDip)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx, roundDip)); + glideRequest.load(imgFile).apply(options).into(iv); + } + + + } + + // 圆图片 + /** + * 圆图片-drawableId + * + * @ param iv + * @ param drawableId + */ + public void displayCircle(ImageView iv, int drawableId) { + displayCircle(iv, drawableId, -1); + } + + /** + * 圆图片-drawableId + * + * @ param iv + * @ param drawableId + * @ param defaultResId + */ + public void displayCircle(ImageView iv, int drawableId, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(drawableId).transform(new GlideCircleTransform(mCtx)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx)); + glideRequest.load(drawableId).apply(options).into(iv); + } + + } + public void displaypic(ImageView iv, String url, int defaultResId) { + RequestOptions options = new RequestOptions() + .centerCrop() + .placeholder(defaultResId) + .error(defaultResId) + .priority(Priority.HIGH); + Glide.with(mCtx).load(url).apply(options).into(iv); + } + /** + * 圆图片-url + * + * @ param iv + * @ param url + */ + public void displayCircle(ImageView iv, String url) { + displayCircle(iv, url, -1); + } + + /** + * 圆图片-url + * + * @ param iv + * @ param url + * @ param defaultResId + */ + public void displayCircle(ImageView iv, String url, int defaultResId) { + + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx)); + glideRequest.load(url).apply(options).into(iv); + } + + } + + /** + * 圆图片-Uri + * + * @ param iv + * @ param uri + */ + public void displayCircle(ImageView iv, Uri uri) { + displayCircle(iv, uri, -1); + } + + /** + * 圆图片-Uri + * + * @ param iv + * @ param uri + * @ param defaultResId + */ + public void displayCircle(ImageView iv, Uri uri, int defaultResId) { +// if (iv == null) +// return; +// DrawableRequestBuilder builder = glideRequest.load(uri).transform(new GlideCircleTransform(mCtx)); +// if (defaultResId != -1) +// builder.placeholder(defaultResId); +// if (isDiskCache) +// builder.diskCacheStrategy(DiskCacheStrategy.ALL); +// builder.into(iv); + + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx)); + glideRequest.load(uri).apply(options).into(iv); + } + + } + + /** + * 圆图片-File + * + * @ param iv + * @ param imgFile + */ + public void displayCircle(ImageView iv, File imgFile) { + displayCircle(iv, imgFile, -1); + } + + /** + * 圆图片-File + * + * @ param iv + * @ param imgFile + * @ param defaultResId + */ + public void displayCircle(ImageView iv, File imgFile, int defaultResId) { + + if (iv == null) + return; + if (defaultResId != -1){ + RequestOptions options = new RequestOptions().placeholder(defaultResId).transform(new GlideRoundTransform(mCtx)); + glideRequest.load(imgFile).apply(options).into(iv); + } + + } + + /** 下载图片获取地址 */ + public String downloadPath(String url) { + try { + File file = glideRequest.load(url).downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get(); + return file.getPath(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + return ""; + } catch (ExecutionException e) { + // TODO Auto-generated catch block + return ""; + } + } + + /** 下载图片 */ + public File downloadFile(String url) { + try { + File file = glideRequest.load(url).downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL).get(); + return file; + } catch (InterruptedException e) { + // TODO Auto-generated catch block + return null; + } catch (ExecutionException e) { + // TODO Auto-generated catch block + return null; + } + } + + /** + * 清除图片缓存 + */ + public void Clear() { + Glide.get(mCtx).clearDiskCache(); + Glide.get(mCtx).clearMemory(); + } + + /** + * 圆图片 + */ + public class GlideCircleTransform extends BitmapTransformation { + public GlideCircleTransform(Context context) { +// super(context); + super(); + } + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { + return circleCrop(pool, toTransform); + } + + private Bitmap circleCrop(BitmapPool pool, Bitmap source) { + if (source == null) + return null; + + int size = Math.min(source.getWidth(), source.getHeight()); + int x = (source.getWidth() - size) / 2; + int y = (source.getHeight() - size) / 2; + + // TODO this could be acquired from the pool too + Bitmap squared = Bitmap.createBitmap(source, x, y, size, size); + + Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888); + if (result == null) { + result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(result); + Paint paint = new Paint(); + paint.setShader(new BitmapShader(squared, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); + paint.setAntiAlias(true); + float r = size / 2f; + canvas.drawCircle(r, r, r, paint); + return result; + } + +// @Override +// public String getId() { +// return getClass().getName(); +// } + + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + + } + } + + /** + * 圆角头像 + */ + public class GlideRoundTransform extends BitmapTransformation { + + private float radius = 0f; + + public GlideRoundTransform(Context context) { + this(context, 4); + } + + public GlideRoundTransform(Context context, int dp) { +// super(context); + super(); + this.radius = Resources.getSystem().getDisplayMetrics().density * dp; + } + + @Override + protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { + return roundCrop(pool, toTransform); + } + + private Bitmap roundCrop(BitmapPool pool, Bitmap source) { + if (source == null) + return null; + + Bitmap result = pool.get(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); + if (result == null) { + result = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); + } + + Canvas canvas = new Canvas(result); + Paint paint = new Paint(); + paint.setShader(new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP)); + paint.setAntiAlias(true); + RectF rectF = new RectF(0f, 0f, source.getWidth(), source.getHeight()); + canvas.drawRoundRect(rectF, radius, radius, paint); + return result; + } + +// @Override +// public String getId() { +// return getClass().getName() + Math.round(radius); +// } + + @Override + public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) { + + } + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/utils/checkVersionsUtils/ProfileSpUtils.java b/app/src/main/java/com/example/administrator/seven/utils/checkVersionsUtils/ProfileSpUtils.java index 65f9b74..851fac0 100644 --- a/app/src/main/java/com/example/administrator/seven/utils/checkVersionsUtils/ProfileSpUtils.java +++ b/app/src/main/java/com/example/administrator/seven/utils/checkVersionsUtils/ProfileSpUtils.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.SharedPreferences; import android.text.TextUtils; +import com.example.administrator.seven.main.entity.LoginBean; import com.example.administrator.seven.main.entity.mine.TreeUserEntity; import com.example.administrator.seven.main.entity.mine.UserHeadEntity; import com.google.gson.Gson; @@ -161,12 +162,12 @@ public class ProfileSpUtils { * * @return SP存储的用户资料 */ - public TreeUserEntity getUserProfie() { + public LoginBean getUserProfie() { String userStr = sharedPreferences.getString(KEY_USER, ""); if (TextUtils.isEmpty(userStr)) { - return new TreeUserEntity(); + return new LoginBean(); } - return new Gson().fromJson(userStr, TreeUserEntity.class); + return new Gson().fromJson(userStr, LoginBean.class); } /** @@ -174,17 +175,9 @@ public class ProfileSpUtils { * * @param treeUserEntity 用户资料实体类 */ - public void saveProfile(TreeUserEntity treeUserEntity) { - //头像数据转存 - UserHeadEntity userHeadEntity = new UserHeadEntity(); - userHeadEntity.setHome_Page_Size(treeUserEntity.getHome_Page_Size()); - userHeadEntity.setOrigin(treeUserEntity.getOrigin_img()); - userHeadEntity.setInfo_page_size(treeUserEntity.getInfo_page_size()); - userHeadEntity.setUser_list_size(treeUserEntity.getUser_list_size()); - + public void saveProfile(LoginBean treeUserEntity) { sharedPreferences.edit() .putString(KEY_USER, new Gson().toJson(treeUserEntity)) - .putString(KEY_HEAD, new Gson().toJson(userHeadEntity)) .apply(); } diff --git a/app/src/main/java/com/example/administrator/seven/wxapi/WXEntryActivity.java b/app/src/main/java/com/example/administrator/seven/wxapi/WXEntryActivity.java index d19706f..ba59838 100644 --- a/app/src/main/java/com/example/administrator/seven/wxapi/WXEntryActivity.java +++ b/app/src/main/java/com/example/administrator/seven/wxapi/WXEntryActivity.java @@ -138,7 +138,7 @@ public class WXEntryActivity extends WechatHandlerActivity implements IWXAPIEven return ApiUtils.getApi() .bindWx(ProfileSpUtils.getInstance() .getUserProfie() - .getUser_token() + .getData().getUuid() , mEntity.getOpen_id() , entity.getNickname() , entity.getHeadimg() diff --git a/app/src/main/res/drawable/bg_drainting_phone.xml b/app/src/main/res/drawable/bg_drainting_phone.xml new file mode 100644 index 0000000..c0c6edb --- /dev/null +++ b/app/src/main/res/drawable/bg_drainting_phone.xml @@ -0,0 +1,10 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_marking_username_two.xml b/app/src/main/res/drawable/bg_marking_username_two.xml new file mode 100644 index 0000000..b5d7d9d --- /dev/null +++ b/app/src/main/res/drawable/bg_marking_username_two.xml @@ -0,0 +1,15 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/marking_cheched.png b/app/src/main/res/drawable/marking_cheched.png new file mode 100644 index 0000000000000000000000000000000000000000..f9bd72bb189162275e45a63e123cb8404bf4064e GIT binary patch literal 743 zcmV?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0(?nCK~zXfwU@na z6G0HiM@ffx06r2*iV%dLN=wHRKtM=zq<}P3bp-TGj!*RRL91jeg_%pLvGAt7Z){ zLUVpG719cfR$%-yLv)R_?-@D5vK7|7loRTJ9s}4Zg5|BVuKGbw#Bi-?0Up1DN{&Nhr#F~tE&kdf8I%z z%gQlp48}PvYjC2P!y7tke$kz?U9Ep!P0l~}1Ow)7BWVuPIHtm7-D!T+?RMKd{nIyN zFn2rdaDZ-2W3)*2;^<)ljKPEYZM);4y)w93WK6owk;bqj+CMKR+AK4Po4nKT!4-Xe z@>~yot$6!$a#S+ujauKKd)KMUOa}K{;O^O{#QR=j!wYw&HwVfrX6AyURB>?H28Z|E z-iOyk=}iY0gPo~X;Weu=qt-X1?w$o#I5M5)UIO-|Hv>khJ;kNMn~rE+82H8E8rJ?= z>v?v~DtFbZ$^R*aIR|4nA`;FHV z6)w^RgRfxwP7Y{YqFhD>Tl&mBh0J&K`H(yCVIW(CSMwV77X6dvN5E$oxv>SC;`tg1 z>t*IJGtdWQ4|h_!83OrrB%r;#TP)lBjV$YAt5*um%8f>(t>mSxMtwNLk9le1);rBh Z+kd+eX1+wbwnzW~002ovPDHLkV1kM&Rnh + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_recy_disl.xml b/app/src/main/res/drawable/shape_recy_disl.xml new file mode 100644 index 0000000..5ee16fc --- /dev/null +++ b/app/src/main/res/drawable/shape_recy_disl.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_allocation.xml b/app/src/main/res/layout/activity_allocation.xml new file mode 100644 index 0000000..bb1a30d --- /dev/null +++ b/app/src/main/res/layout/activity_allocation.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/allocation_item.xml b/app/src/main/res/layout/allocation_item.xml new file mode 100644 index 0000000..db01679 --- /dev/null +++ b/app/src/main/res/layout/allocation_item.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/cuslist_item.xml b/app/src/main/res/layout/cuslist_item.xml index 857f3d6..c685776 100644 --- a/app/src/main/res/layout/cuslist_item.xml +++ b/app/src/main/res/layout/cuslist_item.xml @@ -97,6 +97,7 @@ + + android:layout_height="wrap_content" + android:background="@color/colorWhite"> - - - + - - + - + - + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_kehu.xml b/app/src/main/res/layout/fragment_kehu.xml index 0183a14..7698801 100644 --- a/app/src/main/res/layout/fragment_kehu.xml +++ b/app/src/main/res/layout/fragment_kehu.xml @@ -72,7 +72,7 @@ android:layout_height="40dp" android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:layout_marginRight="8dp" + android:layout_marginRight="48dp" android:gravity="center"> + + + + + diff --git a/app/src/main/res/layout/item_personnel_dialog_two.xml b/app/src/main/res/layout/item_personnel_dialog_two.xml new file mode 100644 index 0000000..2fc3d42 --- /dev/null +++ b/app/src/main/res/layout/item_personnel_dialog_two.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recy_dislist.xml b/app/src/main/res/layout/item_recy_dislist.xml new file mode 100644 index 0000000..f7d85b5 --- /dev/null +++ b/app/src/main/res/layout/item_recy_dislist.xml @@ -0,0 +1,39 @@ + + + + + + + + + diff --git a/app/src/main/res/layout/mine_exit_dialog.xml b/app/src/main/res/layout/mine_exit_dialog.xml deleted file mode 100644 index fd06edb..0000000 --- a/app/src/main/res/layout/mine_exit_dialog.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - -