diff --git a/app/build.gradle.kts b/app/build.gradle.kts index faacb2b..f570cea 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -47,12 +47,12 @@ android { applicationId = "com.dskj.rbchat" minSdk = 24 targetSdk = 34 - versionCode = 192 - versionName = "1.9.2" + versionCode = 194 + versionName = "1.9.4" multiDexEnabled = true testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式 - // manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试 + // manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" //测试 manifestPlaceholders["JPUSH_PKGNAME"] = "com.dskj.rbchat" manifestPlaceholders["JPUSH_APPKEY"] = "9041bc22de91e3d9af3cfd23" @@ -62,10 +62,25 @@ android { abiFilters += listOf("armeabi-v7a", "arm64-v8a") } } +// flavorDimensions += "version" +// productFlavors { +// +// create("timeGo") { +// applicationId = ""; +// versionNameSuffix = "" +// } +// +// create("mm") { +// applicationId = ""; +// versionNameSuffix = "-mm" +// } +// +// +// } buildTypes { getByName("release") { - isMinifyEnabled = false + isMinifyEnabled = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" @@ -73,6 +88,7 @@ android { signingConfig = signingConfigs.getByName("release") isDebuggable = false; + // buildConfigField( // "String", // "HTTPS_BASE_URL", @@ -85,8 +101,8 @@ android { "\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\"" ) //正式服 - manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式 - //manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" + manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" //正式 +// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" } @@ -110,8 +126,8 @@ android { "\"AIzaSyB7P1o1EIA02eWoNP_7QJ9XwWe3WkSZb9k\"" ) //测试APPKEY - manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" - // manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" +// manifestPlaceholders["IMAPPKEY"] = "4cb6b0998f9e7af9d7673963e429959a" + manifestPlaceholders["IMAPPKEY"] = "c38c8bbebf7d12992d2a361bfceb6c6f" } @@ -261,4 +277,6 @@ dependencies { // implementation("com.esotericsoftware.spine:spine-libgdx:4.1.00") // implementation("com.esotericsoftware:spine-runtimes:+") + implementation("com.airbnb.android:lottie:6.0.0") // lottie json动画 + } diff --git a/app/src/main/java/com/dskj/rbchat/IMUIKitConfig.java b/app/src/main/java/com/dskj/rbchat/IMUIKitConfig.java index 4a5337f..e6cd5f7 100644 --- a/app/src/main/java/com/dskj/rbchat/IMUIKitConfig.java +++ b/app/src/main/java/com/dskj/rbchat/IMUIKitConfig.java @@ -164,6 +164,8 @@ public class IMUIKitConfig { public static String SERVICES_IDS_TAG = "services_id"; public static String RING_MESSAGE_TAG = "message_rings"; public static String RING_CALL_TAG = "call_rings"; + //世界聊天ids + public static String SHIJIECHAT_IDS_TAG = "shijiechat_id"; /** * GoogleMap apikey diff --git a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAnnouncementActivity.java b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAnnouncementActivity.java index a8a626f..0ffcc7f 100644 --- a/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAnnouncementActivity.java +++ b/app/src/main/java/com/dskj/rbchat/imkit/team/TeamAnnouncementActivity.java @@ -89,7 +89,8 @@ public class TeamAnnouncementActivity extends LllChatBaseActivity { return; } Team teaminfo = teamResultInfo.getValue().getTeam(); - if (teaminfo.getCreator().equals(IMKitClient.account())) { //我是群主 + + if (teaminfo.getCreator().equals(IMKitClient.account())||teamResultInfo.getValue().getTeamMember().getType()==TeamMemberType.Manager) { //我是群主 binding.layoutTeammember.setVisibility(View.GONE); binding.layoutTeammanager.setVisibility(View.VISIBLE); String announcement = teaminfo.getAnnouncement(); diff --git a/app/src/main/java/com/dskj/rbchat/main/MainActivity.java b/app/src/main/java/com/dskj/rbchat/main/MainActivity.java index 5aabc07..6df2f21 100644 --- a/app/src/main/java/com/dskj/rbchat/main/MainActivity.java +++ b/app/src/main/java/com/dskj/rbchat/main/MainActivity.java @@ -653,13 +653,13 @@ public class MainActivity extends BaseActivity { shareDateUtils = new ShareDateUtils(); shareDateUtils.getAllSessionList(); shareDateUtils.getLocFriends(); - // index2Fragment = new HomeFragment(); + // index2Fragment = new HomeFragment(); chatTabFragment = new ChatTabFragment(); - // voomFragment = new VoomFragment(); + // voomFragment = new VoomFragment(); walletFragment = new MineFragment(); - // fragments.add(index2Fragment); + // fragments.add(index2Fragment); fragments.add(chatTabFragment); - // fragments.add(voomFragment); + // fragments.add(voomFragment); fragments.add(walletFragment); fragmentAdapter = new FragmentAdapter(this); @@ -1866,11 +1866,17 @@ public class MainActivity extends BaseActivity { if (feedbackResp.data != null && feedbackResp.data.size() > 0) { for (ConfigBean configBean : feedbackResp.data) { - if (configBean.getId() == 1) { - DataUtils.set(MainActivity.this, "transfer_cash", configBean.getVal().equals("1")); +// if (configBean.getId() == 1) { +// DataUtils.set(MainActivity.this, "transfer_cash", configBean.getVal().equals("1")); +// } +// if (configBean.getId() == 2) { +// DataUtils.set(MainActivity.this, "transfer_jifen", configBean.getVal().equals("1")); +// } + if (configBean.getId() == 3) { + DataUtils.set(MainActivity.this, "transfer_score", configBean.getVal().equals("1")); } - if (configBean.getId() == 2) { - DataUtils.set(MainActivity.this, "transfer_jifen", configBean.getVal().equals("1")); + if (configBean.getId() == 4) { + DataUtils.set(MainActivity.this, "redpkg_score", configBean.getVal().equals("1")); } } diff --git a/app/src/main/java/com/dskj/rbchat/main/chat/ChatConversationFragment.java b/app/src/main/java/com/dskj/rbchat/main/chat/ChatConversationFragment.java index e4cf6cf..a881693 100644 --- a/app/src/main/java/com/dskj/rbchat/main/chat/ChatConversationFragment.java +++ b/app/src/main/java/com/dskj/rbchat/main/chat/ChatConversationFragment.java @@ -9,6 +9,7 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.text.TextUtils; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -25,18 +26,32 @@ import com.dskj.rbchat.R; import com.dskj.rbchat.databinding.FragmentChatconversationBinding; import com.dskj.rbchat.event.ConversationEditEvent; import com.dskj.rbchat.main.MainActivity; +import com.dskj.rbchat.model.NotifyCountBean; +import com.dskj.rbchat.network.Api; +import com.dskj.rbchat.network.BaseObserver; +import com.dskj.rbchat.network.Result; import com.dskj.rbchat.utils.AdaptScreenUtils; import com.dskj.rbchat.utils.DataUtils; import com.dskj.rbchat.utils.GsonUtils; +import com.dskj.rbchat.utils.LogUtils; import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.gson.reflect.TypeToken; +import com.netease.nimlib.sdk.NIMClient; +import com.netease.nimlib.sdk.RequestCallback; import com.netease.nimlib.sdk.friend.model.MuteListChangedNotify; +import com.netease.nimlib.sdk.msg.MsgService; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; +import com.netease.nimlib.sdk.msg.model.RecentContact; +import com.netease.nimlib.sdk.msg.model.RecentSession; +import com.netease.nimlib.sdk.team.TeamService; +import com.netease.nimlib.sdk.team.constant.TeamMemberType; import com.netease.nimlib.sdk.team.model.Team; import com.netease.yunxin.kit.alog.ALog; import com.netease.yunxin.kit.chatkit.model.ConversationInfo; +import com.netease.yunxin.kit.chatkit.model.UserInfoWithTeam; import com.netease.yunxin.kit.chatkit.repo.ContactRepo; +import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants; import com.netease.yunxin.kit.chatkit.ui.data.ChatDatabase; import com.netease.yunxin.kit.chatkit.ui.data.dao.ChatDraftDataDao; import com.netease.yunxin.kit.chatkit.ui.data.entity.ChatDraftData; @@ -63,9 +78,18 @@ import com.netease.yunxin.kit.corekit.im.model.FriendInfo; import com.netease.yunxin.kit.corekit.im.model.UserInfo; import com.netease.yunxin.kit.corekit.route.XKitRouter; +import org.json.JSONArray; +import org.json.JSONException; + import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.Objects; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; //会话fragment public class ChatConversationFragment extends BaseFragment implements ILoadListener, ViewHolderClickListener { @@ -73,6 +97,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe public static final String TAG = "ChatConversationFragment"; private int conversationType; //0,1,2 private FragmentChatconversationBinding viewBinding; + private ConversationView conversationViewShiJie; private ConversationView conversationViewTop; private ConversationView conversationViewBottom; protected View networkErrorView; @@ -82,6 +107,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe private List listFriend; List listMyTeam; List listJoinTeam; + List listGuanfangTeam; private FunViewHolderFactory funViewHolderFactory; private Observer>> changeObserver; @@ -95,6 +121,8 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe private Observer> unreadCountObserver; private ChatDraftDataDao dataDao; + private ChatTabFragment chatTabParentFragment; + protected final EventNotify changeDraftEvent = new EventNotify() { @Override @@ -123,6 +151,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe } beans.add(bean); conversationViewTop.update(beans); + conversationViewShiJie.update(beans); return; } } @@ -140,6 +169,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe beans.add(bean); conversationViewBottom.update(beans); + conversationViewShiJie.update(beans); return; } } @@ -172,6 +202,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe if (conversationType == 2) { listMyTeam = new ArrayList<>(); listJoinTeam = new ArrayList<>(); + listGuanfangTeam = new ArrayList<>(); } initView(); return viewBinding.getRoot(); @@ -192,8 +223,111 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe bindView(); registerObserver(); EventCenter.registerEventNotify(changeDraftEvent); +// if (conversationType != 1) { +// getNotifiesCount(); +// } + } + public ArrayList groupShiJieIds = new ArrayList<>(); //官方群聊 + +// private void getNotifiesCount() { +// Api.getInstance().notifiesmessageCountNew(IMKitClient.account(), DataUtils.getCurrentTimeType(System.currentTimeMillis())) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new BaseObserver<>() { +// @Override +// public void onSuccess(Result feedbackResp) { +// LogUtils.i("获取到的错误:" + feedbackResp + "" + feedbackResp.data); +// String groupId = feedbackResp.data.getGroupId(); +// if (!TextUtils.isEmpty(groupId)) { +// try { +// JSONArray array = new JSONArray(groupId); +// if (array.length() > 0) { +// String values = array.getString(0); +// if (!TextUtils.isEmpty(values)) { +// String[] groupIdStr = values.split(","); +// groupShiJieIds.addAll(Arrays.asList(groupIdStr)); +// queryTeamInfo(); +// } +// } +// } catch (JSONException e) { +// throw new RuntimeException(e); +// } +// } +// } +// +// +// @Override +// public void onError(int code, String msg) { +// LogUtils.i("获取到的错误:" + code + "" + msg); +//// WidgetUtils.showToast(getActivity(), msg, WidgetUtils.ToastType.ERROR); +// LogUtils.i("获取到的错误:" + code + "" + msg); +// } +// }); +// } +// +// private void queryTeamInfo() { +// for (String groupId : groupShiJieIds) { +// NIMClient.getService(TeamService.class).searchTeam(groupId).setCallback(new RequestCallback() { +// @Override +// public void onSuccess(Team result) { +// addShiJieConversation(result); +// } +// +// @Override +// public void onFailed(int code) { +// +// } +// +// @Override +// public void onException(Throwable exception) { +// +// } +// }); +// } +// +// } +// public void addShiJieConversation(Team team) { +// RecentContact recentContact = NIMClient.getService(MsgService.class).createEmptyRecentContact(team.getId(), SessionTypeEnum.Team, 0, System.currentTimeMillis(), true, true); +// ConversationInfo info = new ConversationInfo(recentContact); +// info.setTeamInfo(team); +// info.setStickTop(true); +// ConversationBean conversationBean = new ConversationBean(info); +// conversationBean.isShiJie = true; +// List list = new ArrayList<>(); +// if (conversationType == 0) { +// boolean isAdd = false; +// for (ConversationBean conversationBean1 : conversationViewTop.getAdatper().getConversationList()) { +// if (conversationBean1.infoData.getTeamInfo() != null && Objects.equals(conversationBean1.infoData.getTeamInfo().getId(), team.getId())) { +// conversationBean1.infoData.setStickTop(true); +// conversationBean1.isShiJie = true; +// isAdd = true; +// break; +// } +// } +// if (!isAdd) { +// list.add(conversationBean); +// conversationViewTop.addData(list); +// } +// } else if (conversationType == 2) { +// boolean isAdd = false; +// for (ConversationBean conversationBean1 : conversationViewShiJie.getAdatper().getConversationList()) { +// if (conversationBean1.infoData.getTeamInfo() != null && Objects.equals(conversationBean1.infoData.getTeamInfo().getId(), team.getId())) { +// conversationBean1.infoData.setStickTop(true); +// conversationBean1.isShiJie = true; +// isAdd = true; +// break; +// } +// } +// if (!isAdd) { +// list.add(conversationBean); +// conversationViewShiJie.addData(list); +// } +// } +// +// +// } private void registerObserver() { viewModel.getChangeLiveData().observeForever(changeObserver); @@ -233,6 +367,39 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe return result; }; + public Comparator conversationShiJieComparator = + (bean1, bean2) -> { + int result; + if (bean1 == null) { + result = 1; + } else if (bean2 == null) { + result = -1; + } else if (bean1.infoData.isStickTop() == bean2.infoData.isStickTop()) { + if (bean1.isShiJie == bean2.isShiJie) { + long time = bean1.infoData.getTime() - bean2.infoData.getTime(); + result = time == 0L ? 0 : (time > 0 ? -1 : 1); + } else { + result = bean1.isShiJie ? -1 : 1; + } + } else { + result = bean1.isShiJie ? -1 : 1; + } + return result; + }; + + + public List removeShiJieConversation(List conversationBeans) { + List conversationBeans1 = new ArrayList<>(); + for (ConversationBean conversationBean : conversationBeans) { + if (!chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId())) { + conversationBeans1.add(conversationBean); + } + } + + return conversationBeans1; + } + + private void initObserver() { changeObserver = result -> { @@ -249,8 +416,9 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe conversationViewTop.removeAll(); conversationViewBottom.removeAll(); } else { - conversationViewTop.remove(result.getData()); - conversationViewBottom.remove(result.getData()); + List list = removeShiJieConversation(result.getData()); + conversationViewTop.remove(list); + conversationViewBottom.remove(list); } } @@ -295,10 +463,13 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe if (result.getLoadStatus() == LoadStatus.Success) { ALog.d(LIB_TAG, TAG, "TeamInfoLiveData, Success"); if (conversationType == 0) { + LogUtils.d("shijie", "更新群组信息" + result.getData().size() + " conversation size==" + conversationViewTop.getDataSize()); conversationViewTop.updateTeamInfo(result.getData()); } else if (conversationType == 2) { + LogUtils.d("shijie", "更新群组信息" + result.getData().size() + " conversationshijie size==" + conversationViewShiJie.getDataSize()); conversationViewTop.updateTeamInfoType(result.getData(), true); conversationViewBottom.updateTeamInfoType(result.getData(), false); + conversationViewShiJie.updateTeamInfo(result.getData()); } } }; @@ -309,6 +480,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe ALog.d(LIB_TAG, TAG, "MuteInfoLiveData, Success"); conversationViewTop.updateMuteInfo(result.getData()); conversationViewBottom.updateMuteInfo(result.getData()); + conversationViewShiJie.updateMuteInfo(result.getData()); } }; @@ -320,12 +492,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe ConversationHelper.updateAitInfo(result.getData(), true); conversationViewTop.updateAit(result.getData()); conversationViewBottom.updateAit(result.getData()); + conversationViewShiJie.updateAit(result.getData()); } else if (result.getType() == FetchResult.FetchType.Remove) { ALog.d(LIB_TAG, TAG, "RemoveStickLiveData, Success"); ConversationHelper.updateAitInfo(result.getData(), false); conversationViewTop.updateAit(result.getData()); conversationViewBottom.updateAit(result.getData()); + conversationViewShiJie.updateAit(result.getData()); } } }; @@ -346,6 +520,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe }; } + //更新会话 private void updateFollowList(List listFriend) { if (listFriend != null) { @@ -392,13 +567,18 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe private boolean showAllJoinTeam = false; private void initView() { + chatTabParentFragment = (ChatTabFragment) getParentFragment(); + viewBinding.layoutShijiechat.setVisibility(View.GONE); conversationViewTop = viewBinding.conversationViewTop; + conversationViewShiJie = viewBinding.conversationViewTeamShijie; conversationViewBottom = viewBinding.conversationViewBottom; funViewHolderFactory = new FunViewHolderFactory(); funViewHolderFactory.isSelector = false; conversationViewTop.setViewHolderFactory(funViewHolderFactory); conversationViewBottom.setViewHolderFactory(funViewHolderFactory); + conversationViewShiJie.setViewHolderFactory(funViewHolderFactory); if (conversationType == 2) { + viewBinding.layoutShijiechat.setVisibility(View.VISIBLE); conversationViewTop.getAdatper().setShowAll(false); conversationViewBottom.getAdatper().setShowAll(false); } @@ -439,9 +619,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe conversationViewTop.setComparator(conversationComparator); conversationViewTop.setLoadMoreListener(this); conversationViewTop.setItemClickListener(this); + conversationViewBottom.setComparator(conversationComparator); conversationViewBottom.setLoadMoreListener(this); conversationViewBottom.setItemClickListener(this); + + conversationViewShiJie.setComparator(conversationComparator); + conversationViewShiJie.setLoadMoreListener(this); + conversationViewShiJie.setItemClickListener(this); } private void getServicesData() { @@ -493,6 +678,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe } } + /** * 初始化设置数据 * @@ -503,6 +689,13 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe switch (conversationType) { case 0: List listconversation = updateServicesConversation(result.getData()); + if (chatTabParentFragment.groupIds != null) { //添加世界聊天窗口 + LogUtils.d("shijie", "添加世界聊天==" + chatTabParentFragment.groupIds.size()); + List conversationShiJieList = addConversationTeamShiJie(listconversation); + LogUtils.d("shijie", "添加世界聊天==" + conversationShiJieList.size()); + listconversation.addAll(conversationShiJieList); + } + Collections.sort(listconversation, conversationShiJieComparator); conversationViewTop.setData(listconversation); break; case 1: @@ -511,15 +704,70 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe break; case 2: getConversationTeamTypeList(result.getData()); + LogUtils.d("shijie", "添加世界聊天 群组 groupsid==" + chatTabParentFragment.groupIds.size()); + listGuanfangTeam.addAll(addConversationTeamShiJie(listGuanfangTeam)); + LogUtils.d("shijie", "添加世界聊天 群组==" + listGuanfangTeam.size()); setChatDraftDataList(listMyTeam); setChatDraftDataList(listJoinTeam); + setChatDraftDataList(listGuanfangTeam); conversationViewTop.setData(listMyTeam); conversationViewBottom.setData(listJoinTeam); + conversationViewShiJie.setData(listGuanfangTeam); break; } } + //在已有的会话中添加世界聊天会话 + public List addConversationTeamShiJie(List recentContactList) { + List listconversation = new ArrayList<>(); + for (int i = 0; i < chatTabParentFragment.groupIds.size(); i++) { + boolean isAdd = false; + for (ConversationBean conversationBean : recentContactList) { + if (conversationBean.infoData.getContactId().equals(chatTabParentFragment.groupIds.get(i))) { + conversationBean.isShiJie = true; + conversationBean.infoData.setStickTop(true); + isAdd = true; + } + } + if (!isAdd) { + RecentContact recentContact = NIMClient.getService(MsgService.class).createEmptyRecentContact(chatTabParentFragment.groupIds.get(i), SessionTypeEnum.Team, 0, System.currentTimeMillis(), true, true); + ConversationInfo info = new ConversationInfo(recentContact); + if (chatTabParentFragment.teamInfos.size() > 0) { + info.setTeamInfo(chatTabParentFragment.teamInfos.get(i)); + } + info.setStickTop(true); + ConversationBean conversationBean = new ConversationBean(info); + conversationBean.isShiJie = true; + listconversation.add(conversationBean); + } + + } + return listconversation; + + + } + + +// // 設置包含世界聊天 +// public List setHasTeamShiJie(List listConversationBean) { +// if (chatTabParentFragment.groupIds == null) { +// return listConversationBean; +// } +// for (int i = 0; i < chatTabParentFragment.groupIds.size(); i++) { +// for (ConversationBean conversationBean : listConversationBean) { +// if (conversationBean.infoData.getContactId().equals(chatTabParentFragment.groupIds.get(i))) { +// ConversationBean conversationBean1 = listConversationBean.get(listConversationBean.indexOf(conversationBean)); +// listConversationBean.get(listConversationBean.indexOf(conversationBean1)).infoData.setStickTop(true); +// listConversationBean.get(listConversationBean.indexOf(conversationBean1)).isShiJie = true; +// isHasShiJieChat = true; +// break; +// } +// } +// } +// return listConversationBean; +// } + /** * 添加数据 * @@ -541,6 +789,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe setChatDraftDataList(listJoinTeam); conversationViewTop.addData(listMyTeam); conversationViewBottom.addData(listJoinTeam); + break; } } @@ -554,6 +803,7 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe private void setUpdateViewData(int conversationType, List result) { switch (conversationType) { case 0: + LogUtils.d("shijie", "更新世界聊天" + result.size()); conversationViewTop.update(updateServicesConversation(result)); break; case 1: @@ -561,11 +811,14 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe conversationViewTop.update(updateServicesConversation(listFriend)); break; case 2: + LogUtils.d("shijie", "更新世界聊天2 " + result.size()); getConversationTeamTypeList(result); setChatDraftDataList(listMyTeam); setChatDraftDataList(listJoinTeam); + LogUtils.d("shijie", "更新世界聊天2 " + listGuanfangTeam.size()); conversationViewTop.update(listMyTeam); conversationViewBottom.update(listJoinTeam); + conversationViewShiJie.update(listGuanfangTeam); break; } } @@ -593,17 +846,27 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe } - //去掉客服会话 改成添加字段 + //去掉客服会话, 修改世界聊天 改成添加字段 public List updateServicesConversation(List beans) { if (servicesIds == null || servicesIds.size() == 0) { return beans; } + if (chatTabParentFragment.groupIds == null) { + return beans; + } for (ConversationBean conversationBean : beans) { conversationBean.isServices = false; + conversationBean.isShiJie = false; if (conversationBean.infoData.getSessionType() == SessionTypeEnum.P2P && servicesIds.indexOf(conversationBean.infoData.getContactId()) >= 0) { conversationBean.isServices = true; } + if (conversationBean.infoData.getSessionType() == SessionTypeEnum.Team || conversationBean.infoData.getSessionType() == SessionTypeEnum.SUPER_TEAM) { + if (chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId())) { + conversationBean.isShiJie = true; + conversationBean.infoData.setStickTop(true); + } + } //获取草稿内容 updateChatDraftDataItem(conversationBean); } @@ -625,18 +888,29 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe public void getConversationTeamTypeList(List list) { listMyTeam.clear(); listJoinTeam.clear(); + listGuanfangTeam.clear(); for (ConversationBean conversationBean : list) { if (conversationBean.infoData.getTeamInfo() != null) { //不是群就是好友 也包含已删除的好友会话 - if (conversationBean.infoData.getTeamInfo().getCreator().equals(IMKitClient.account())) { - listMyTeam.add(conversationBean); + if (isShiJieConversation(conversationBean)) { + conversationBean.isShiJie = true; + conversationBean.infoData.setStickTop(true); + listGuanfangTeam.add(conversationBean); } else { - listJoinTeam.add(conversationBean); + if (conversationBean.infoData.getTeamInfo().getCreator().equals(IMKitClient.account())) { + listMyTeam.add(conversationBean); + } else { + listJoinTeam.add(conversationBean); + } } } } } + public boolean isShiJieConversation(ConversationBean conversationBean) { + return chatTabParentFragment.groupIds.contains(conversationBean.infoData.getContactId()); + } + private void doEmptyView() { if (conversationType != 2) { if (conversationViewTop.getDataSize() > 0) { @@ -647,10 +921,12 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe viewBinding.layoutOneroot.setVisibility(View.GONE); } } else { - if (conversationViewTop.getDataSize() == 0 && conversationViewBottom.getDataSize() == 0) { + if (conversationViewTop.getDataSize() == 0 && conversationViewBottom.getDataSize() == 0 && conversationViewShiJie.getDataSize() == 0) { emptyView.setVisibility(View.VISIBLE); viewBinding.layoutOneroot.setVisibility(View.GONE); + viewBinding.layoutShijiechat.setVisibility(View.GONE); } else { + viewBinding.layoutShijiechat.setVisibility(View.VISIBLE); emptyView.setVisibility(View.GONE); viewBinding.layoutOneroot.setVisibility(View.VISIBLE); } @@ -691,9 +967,11 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe position); } if (!result && !TextUtils.isEmpty(data.router)) { + boolean isShiJie = ((ConversationBean) data).isShiJie; XKitRouter.withKey(data.router) .withParam(data.paramKey, data.param) .withParam("isService", ((ConversationBean) data).isServices) + .withParam(ChatUIConstants.KEY_TEAM_ISGUANFANG, isShiJie) .withContext(ChatConversationFragment.this.requireContext()) .navigate(); } @@ -752,6 +1030,9 @@ public class ChatConversationFragment extends BaseFragment implements ILoadListe private void showBottomDialog(BaseBean data) { if (data instanceof ConversationBean) { ConversationBean dataBean = (ConversationBean) data; + if (dataBean.isShiJie) { + return; + } BottomSheetDialog bottomSheetDialog = new BottomSheetDialog(getActivity(), R.style.BottomSheetDialog); View bottomView = LayoutInflater.from(getActivity()).inflate(R.layout.bottom_sheet_layout_conversation, null); diff --git a/app/src/main/java/com/dskj/rbchat/main/chat/EditChatRecordlistActivity.java b/app/src/main/java/com/dskj/rbchat/main/chat/EditChatRecordlistActivity.java index c1fe80a..b6e2acb 100644 --- a/app/src/main/java/com/dskj/rbchat/main/chat/EditChatRecordlistActivity.java +++ b/app/src/main/java/com/dskj/rbchat/main/chat/EditChatRecordlistActivity.java @@ -15,12 +15,18 @@ import androidx.fragment.app.FragmentManager; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; +import com.dskj.rbchat.IMUIKitConfig; import com.dskj.rbchat.R; import com.dskj.rbchat.base.LllChatBaseActivity; import com.dskj.rbchat.databinding.ActivityEditChatrecordBinding; import com.dskj.rbchat.dialog.ActionConfirmDialog; import com.dskj.rbchat.event.ConversationEditEvent; import com.dskj.rbchat.login.PhoneLoginActivity; +import com.dskj.rbchat.model.NotifyCountBean; +import com.dskj.rbchat.network.Api; +import com.dskj.rbchat.network.BaseObserver; +import com.dskj.rbchat.network.Result; +import com.dskj.rbchat.utils.DataUtils; import com.dskj.rbchat.utils.LogUtils; import com.netease.nimlib.sdk.NIMClient; import com.netease.nimlib.sdk.msg.MsgService; @@ -42,11 +48,19 @@ import com.netease.yunxin.kit.conversationkit.ui.model.ConversationBean; import com.netease.yunxin.kit.conversationkit.ui.page.viewmodel.ConversationViewModel; import com.netease.yunxin.kit.conversationkit.ui.view.ConversationView; import com.netease.yunxin.kit.corekit.event.EventCenter; +import com.netease.yunxin.kit.corekit.im.IMKitClient; + +import org.json.JSONArray; +import org.json.JSONException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Comparator; import java.util.List; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + //编辑聊天记录 public class EditChatRecordlistActivity extends LllChatBaseActivity { @@ -58,12 +72,14 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity { public FunViewHolderFactory conversationFactory; private Observer>> changeObserver; public int paramType; + public ArrayList groupIds = new ArrayList<>(); //官方群聊 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityEditChatrecordBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); + groupIds = getIntent().getStringArrayListExtra("groupIds"); initView(); initObserver(); initData(); @@ -80,6 +96,7 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity { return 0; } + private Comparator conversationComparator = (bean1, bean2) -> { int result; @@ -107,11 +124,10 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity { this, result -> { if (result.getLoadStatus() == LoadStatus.Success) { - conversationView.setData(result.getData()); + conversationView.setData(removeShiJieConversation(result.getData())); } else if (result.getLoadStatus() == LoadStatus.Finish) { - conversationView.addData(result.getData()); + conversationView.addData(removeShiJieConversation(result.getData())); } - if (conversationView.getDataSize() > 0) { binding.emptyLayout.setVisibility(View.GONE); } else { @@ -123,6 +139,22 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity { } + public List removeShiJieConversation(List listconversation) { + List listconversation2 = new ArrayList<>(); + if (groupIds != null && groupIds.size() > 0) { + for (ConversationBean conversationBean : listconversation) { + if (!groupIds.contains(conversationBean.infoData.getContactId())) { + listconversation2.add(conversationBean); + } + } + } else { + listconversation2.addAll(listconversation); + } + return listconversation2; + + + } + private void initView() { binding.titleBarView.getBackImageView().setImageResource(R.mipmap.ic_dskj_back); binding.titleBarView.getTitleTextView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 20); @@ -284,6 +316,9 @@ public class EditChatRecordlistActivity extends LllChatBaseActivity { conversationViewModel.getChangeLiveData().removeObserver(changeObserver); } + + + @Override protected void onDestroy() { super.onDestroy(); diff --git a/app/src/main/java/com/dskj/rbchat/main/message/NotifyMessageActivity.java b/app/src/main/java/com/dskj/rbchat/main/message/NotifyMessageActivity.java index e7b571f..b941814 100644 --- a/app/src/main/java/com/dskj/rbchat/main/message/NotifyMessageActivity.java +++ b/app/src/main/java/com/dskj/rbchat/main/message/NotifyMessageActivity.java @@ -241,11 +241,11 @@ public class NotifyMessageActivity extends LllChatBaseActivity { public void getActivityMsgCount() { binding.tvActivitycount.setVisibility(View.GONE); - int activityMsgCount = DataUtils.get(this, "activity_message_count", 0); - if (activityMsgCount > 0) { - binding.tvActivitycount.setVisibility(View.VISIBLE); - binding.tvActivitycount.setText(activityMsgCount > 99 ? "99+" : activityMsgCount + ""); - } +// int activityMsgCount = DataUtils.get(this, "activity_message_count", 0); +// if (activityMsgCount > 0) { +// binding.tvActivitycount.setVisibility(View.VISIBLE); +// binding.tvActivitycount.setText(activityMsgCount > 99 ? "99+" : activityMsgCount + ""); +// } } @Override diff --git a/app/src/main/java/com/dskj/rbchat/main/mine/MineFragment.java b/app/src/main/java/com/dskj/rbchat/main/mine/MineFragment.java index 25ce2f3..7ab43f6 100644 --- a/app/src/main/java/com/dskj/rbchat/main/mine/MineFragment.java +++ b/app/src/main/java/com/dskj/rbchat/main/mine/MineFragment.java @@ -464,7 +464,7 @@ public class MineFragment extends BaseFragment { super.onResume(); ALog.d(Constant.PROJECT_TAG, "MineFragment:onResume"); if (DataUtils.getIsMerchant()) { - binding.layoutActionLy.setVisibility(View.VISIBLE); + binding.layoutActionLy.setVisibility(View.GONE); } else { binding.layoutActionLy.setVisibility(View.GONE); } diff --git a/app/src/main/java/com/dskj/rbchat/model/ConfigBean.java b/app/src/main/java/com/dskj/rbchat/model/ConfigBean.java index e50c4ef..61dac50 100644 --- a/app/src/main/java/com/dskj/rbchat/model/ConfigBean.java +++ b/app/src/main/java/com/dskj/rbchat/model/ConfigBean.java @@ -10,6 +10,15 @@ public class ConfigBean { private String title; private String val; private String status; + private String code; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } public int getId() { return id; diff --git a/app/src/main/java/com/dskj/rbchat/model/LoginBean.java b/app/src/main/java/com/dskj/rbchat/model/LoginBean.java index 027ac22..d734c62 100644 --- a/app/src/main/java/com/dskj/rbchat/model/LoginBean.java +++ b/app/src/main/java/com/dskj/rbchat/model/LoginBean.java @@ -33,6 +33,16 @@ public class LoginBean extends RosterElementEntity { private Integer isBiz = 0; private double cashFeeRate; //cash费率 private double silverFeeRate;//积分费率 + private double mmSilverFeeRate; //mm 积分费率 + + + public double getMmSilverFeeRate() { + return mmSilverFeeRate; + } + + public void setMmSilverFeeRate(double mmSilverFeeRate) { + this.mmSilverFeeRate = mmSilverFeeRate; + } public double getCashFeeRate() { return cashFeeRate; diff --git a/app/src/main/java/com/dskj/rbchat/model/NotifyCountBean.java b/app/src/main/java/com/dskj/rbchat/model/NotifyCountBean.java index 0df422e..a345a69 100644 --- a/app/src/main/java/com/dskj/rbchat/model/NotifyCountBean.java +++ b/app/src/main/java/com/dskj/rbchat/model/NotifyCountBean.java @@ -1,9 +1,22 @@ package com.dskj.rbchat.model; +import android.print.PageRange; + +import java.util.List; + public class NotifyCountBean { public int systemMsgCount; public int activityMsgCount; + public String groupId; + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } public int getSystemMsgCount() { return systemMsgCount; diff --git a/app/src/main/java/com/dskj/rbchat/redpack/TransferAccountsActivity.java b/app/src/main/java/com/dskj/rbchat/redpack/TransferAccountsActivity.java index 62aa8fd..0c999e9 100644 --- a/app/src/main/java/com/dskj/rbchat/redpack/TransferAccountsActivity.java +++ b/app/src/main/java/com/dskj/rbchat/redpack/TransferAccountsActivity.java @@ -81,7 +81,7 @@ public class TransferAccountsActivity extends BaseActivity { viewBinding = ActivityTransferAccountsBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); isJinBi = getIntent().getBooleanExtra("type", isJinBi); - feeRate = isJinBi ? DataUtils.getLocUserInfo().getCashFeeRate() : DataUtils.getLocUserInfo().getSilverFeeRate(); + feeRate = isJinBi ? DataUtils.getLocUserInfo().getCashFeeRate() : DataUtils.getLocUserInfo().getMmSilverFeeRate(); initView(); initListeners(); } diff --git a/app/src/main/res/layout/activity_message.xml b/app/src/main/res/layout/activity_message.xml index a08bda9..73026f2 100644 --- a/app/src/main/res/layout/activity_message.xml +++ b/app/src/main/res/layout/activity_message.xml @@ -28,7 +28,7 @@ android:layout_height="@dimen/dp_95" android:background="@android:color/white" android:orientation="horizontal" - android:visibility="gone" + android:visibility="visible" app:layout_constraintTop_toBottomOf="@+id/line_top"> @@ -36,6 +36,7 @@ android:id="@+id/iv_verify" android:layout_width="@dimen/dp_45" android:layout_height="@dimen/dp_45" + android:layout_marginTop="@dimen/dp_15" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/iv_activity" android:layout_marginStart="@dimen/dp_43" @@ -81,6 +82,7 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="@dimen/dp_15" + android:visibility="gone" app:srcCompat="@mipmap/ic_notify_activity" /> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_marginStart="@dimen/dp_15" + android:layout_marginTop="@dimen/dp_20" + android:text="@string/str_chat_all" + android:textColor="@color/color_333333" + android:textSize="@dimen/sp_14" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:layout_marginStart="@dimen/dp_15" + android:layout_marginTop="@dimen/dp_20" + android:background="@drawable/cornor_6877fe_6dp" + android:paddingStart="@dimen/dp_5" + android:paddingEnd="@dimen/dp_5" + android:text="@string/guanfang_text" + android:textColor="@android:color/white" + android:textSize="@dimen/sp_14" + app:layout_constraintBottom_toBottomOf="@+id/tv_shijie" + app:layout_constraintStart_toEndOf="@+id/tv_shijie" + app:layout_constraintTop_toTopOf="parent" /> - - - - - - + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/dp_15" + app:layout_constraintTop_toBottomOf="@+id/layout_conversationshijie" /> + android:visibility="gone" /> + android:visibility="gone" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index b35b5ad..eb1bdad 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -595,7 +595,7 @@ Clear chat history Group Announcement Enter group announcement content - Only group owner can edit/publish + Only group owners and administrators can edit/post Dismiss Group owner permission give away After disbanding the group chat, both the group members and the group owner will be removed from the group chat diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 7071987..168a9d3 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -594,7 +594,7 @@ チャット履歴をクリア グループのお知らせ グループのお知らせ内容を入力してください - グループオーナーのみが編集/公開可能 + グループの所有者と管理者のみが編集/投稿できます 解雇 グループ所有者の権限の譲渡 グループ チャットを解散すると、グループ メンバーとグループはグループ チャットから削除されます diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0f7b119..a24df9e 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -589,7 +589,7 @@ 清除聊天記錄 群公告 輸入群公告內容 - 僅群主可編輯/發佈 + 僅群主和管理員可編輯/發佈 解散 群主權限轉讓 解散群聊後,群組成員和群組都將被移出群組聊天 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 7cc76ae..f8fe884 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -351,28 +351,28 @@ 普通红包 红包数 请填写红包个数 - 红包金额 - 请输入金额 - 总金额 + 红包数量 + 请输入数量 + 总数量 恭喜发财,大吉大利 塞Cash进红包 - 塞禮品積分進紅包 + 塞礼品积分紅包 塞金币进红包 未领取的红包,将于24小时候退回 点击选择赠送对象 - 赠送金额 + 赠送数量 赠送给:%s 手续费 %dcash]]> %d积分]]> - 统计支付金额 + 统计支付数量 当前cash余额不足 当前礼品积分余额不足 (选填)输入赠送说明 发起赠送 - 24小时内未领取,赠送金额将被自动领取 - 24小时内未领取,赠送金额将被自动领取 + 24小时内未领取,赠送数量将被自动领取 + 24小时内未领取,赠送数量将被自动领取 赠送说明 赠送时间 领取时间 @@ -392,19 +392,19 @@ 发出的礼金红包 发送红包 - 总金额 + 总数量 本群共%d人,红包个数不能超过当前群聊人数 Cash余额:%s 礼品积分余额:%s - 请输入金额 - 单个金额 - 请输入单个金额 + 请输入数量 + 单个数量 + 请输入单个数量 红包个数不能为空 请输入红包个数 - 红包金额不能为空 - 红包金额不能小于0.01 - 单个红包金额不能小于0.01 - 单个红包金额不能大于 + 红包数量不能为空 + 红包数量不能小于0.01 + 单个红包数量不能小于0.01 + 单个红包数量不能大于 红包个数不能超过当前群聊总人数 余额不足 请输入支付密码 @@ -412,11 +412,11 @@ 获取钱包信息失败 塞礼品积分进红包 [礼品积分赠送] - 赠送金额不能为空 - 收款金额不能为空 + 赠送数量不能为空 + 收款数量不能为空 - 赠送金额不能小于0.01 - 收款金额不能为空不能小于0.01 + 赠送数量不能小于0.01 + 收款数量不能为空不能小于0.01 获取钱包信息失败 确定要退还赠送吗? @@ -424,7 +424,7 @@ 退还 您的Cash被冻结,如需解冻请联系客服 联系客服 - 1天内对方未领取,赠送金额将自动打到对方的余额 + 1天内对方未领取,赠送数量将自动打到对方的余额 待%s收款 %s已收款 %s已自动领取 @@ -432,7 +432,7 @@ %s已自动退还 已退还到余额 对方未绑定手机号,已退还到余额 - 1天内未领取,赠送金额将自动打到余额 + 1天内未领取,赠送数量将自动打到余额 待你收款 您已领取 您已自动领取 @@ -557,7 +557,7 @@ 发布动态 娃娃机收付款 电子游戏转入转出 - 付款金额 + 付款数量 添加备注(选填) 收款人可见,最多20个字 支付成功 @@ -590,14 +590,14 @@ 清除聊天记录 群公告 输入群公告内容 - 仅群主可编辑/发布 + 仅群主和管理员可编辑/发布 解散 群主权限转让 解散群聊后,群成员和群主都将被移出群聊 群资料封面 我已阅读并同意 开通免密支付 - 商家扫码付款码时,针对小额金额可免密支付,请确认是否开通! + 商家扫码付款码时,针对小额数量可免密支付,请确认是否开通! 《免密支付协议》 立即开通 请先阅读并同意《免密支付协议》 @@ -652,7 +652,7 @@ 来自 %s 的礼品积分赠送 扫一扫 收款 - 收款金额 + 收款数量 收款扫码成功 支付成功 赠送%s @@ -692,7 +692,7 @@ 确认暂停使用指纹支付吗 图片证明(%d/6) 进行中,等待对方确认支付 - 收款成功,到账金额 + 收款成功,到账数量 付款方 到账时间 返回首页 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2a90696..bb4b6b4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -351,28 +351,28 @@ 普通红包 红包数 请填写红包个数 - 红包金额 - 请输入金额 - 总金额 + 红包数量 + 请输入数量 + 总数量 恭喜发财,大吉大利 塞Cash进红包 - 塞禮品積分進紅包 + 塞礼品积分紅包 塞金币进红包 未领取的红包,将于24小时候退回 点击选择赠送对象 - 赠送金额 + 赠送数量 赠送给:%s 手续费 %dcash]]> %d积分]]> - 统计支付金额 + 统计支付数量 当前cash余额不足 当前礼品积分余额不足 (选填)输入赠送说明 发起赠送 - 24小时内未领取,赠送金额将被自动领取 - 24小时内未领取,赠送金额将被自动领取 + 24小时内未领取,赠送数量将被自动领取 + 24小时内未领取,赠送数量将被自动领取 赠送说明 赠送时间 领取时间 @@ -392,19 +392,19 @@ 发出的礼金红包 发送红包 - 总金额 + 总数量 本群共%d人,红包个数不能超过当前群聊人数 Cash余额:%s 礼品积分余额:%s - 请输入金额 - 单个金额 - 请输入单个金额 + 请输入数量 + 单个数量 + 请输入单个数量 红包个数不能为空 请输入红包个数 - 红包金额不能为空 - 红包金额不能小于0.01 - 单个红包金额不能小于0.01 - 单个红包金额不能大于 + 红包数量不能为空 + 红包数量不能小于0.01 + 单个红包数量不能小于0.01 + 单个红包数量不能大于 红包个数不能超过当前群聊总人数 余额不足 请输入支付密码 @@ -412,11 +412,11 @@ 获取钱包信息失败 塞礼品积分进红包 [礼品积分赠送] - 赠送金额不能为空 - 收款金额不能为空 + 赠送数量不能为空 + 收款数量不能为空 - 赠送金额不能小于0.01 - 收款金额不能为空不能小于0.01 + 赠送数量不能小于0.01 + 收款数量不能为空不能小于0.01 获取钱包信息失败 确定要退还赠送吗? @@ -424,7 +424,7 @@ 退还 您的Cash被冻结,如需解冻请联系客服 联系客服 - 1天内对方未领取,赠送金额将自动打到对方的余额 + 1天内对方未领取,赠送数量将自动打到对方的余额 待%s收款 %s已收款 %s已自动领取 @@ -432,7 +432,7 @@ %s已自动退还 已退还到余额 对方未绑定手机号,已退还到余额 - 1天内未领取,赠送金额将自动打到余额 + 1天内未领取,赠送数量将自动打到余额 待你收款 您已领取 您已自动领取 @@ -557,7 +557,7 @@ 发布动态 娃娃机收付款 电子游戏转入转出 - 付款金额 + 付款数量 添加备注(选填) 收款人可见,最多20个字 支付成功 @@ -590,14 +590,14 @@ 清除聊天记录 群公告 输入群公告内容 - 仅群主可编辑/发布 + 仅群主和管理员可编辑/发布 解散 群主权限转让 解散群聊后,群成员和群主都将被移出群聊 群资料封面 我已阅读并同意 开通免密支付 - 商家扫码付款码时,针对小额金额可免密支付,请确认是否开通! + 商家扫码付款码时,针对小额数量可免密支付,请确认是否开通! 《免密支付协议》 立即开通 请先阅读并同意《免密支付协议》 @@ -652,7 +652,7 @@ 来自 %s 的礼品积分赠送 扫一扫 收款 - 收款金额 + 收款数量 收款扫码成功 支付成功 赠送%s @@ -692,7 +692,7 @@ 确认暂停使用指纹支付吗 图片证明(%d/6) 进行中,等待对方确认支付 - 收款成功,到账金额 + 收款成功,到账数量 付款方 到账时间 返回首页 @@ -914,4 +914,5 @@ 添加成功 请选择管理员 + \ No newline at end of file diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/ChatUIConstants.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/ChatUIConstants.java index b116818..bd34618 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/ChatUIConstants.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/ChatUIConstants.java @@ -8,4 +8,6 @@ public final class ChatUIConstants { public static final String KEY_MAP_FOR_MESSAGE = "chat_message_map"; public static final String KEY_MAP_FOR_PIN = "chat_pin_map"; + + public static final String KEY_TEAM_ISGUANFANG="is_guanfang"; //世界聊天 官方 } diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/FunChatTeamActivity.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/FunChatTeamActivity.java index 226d151..1fc70e8 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/FunChatTeamActivity.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/FunChatTeamActivity.java @@ -13,6 +13,7 @@ import androidx.fragment.app.FragmentManager; import com.netease.nimlib.sdk.msg.model.IMMessage; import com.netease.nimlib.sdk.team.model.Team; import com.netease.yunxin.kit.alog.ALog; +import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants; import com.netease.yunxin.kit.chatkit.ui.R; import com.netease.yunxin.kit.chatkit.ui.fun.page.fragment.FunChatTeamFragment; import com.netease.yunxin.kit.chatkit.ui.page.ChatBaseActivity; @@ -28,6 +29,7 @@ public class FunChatTeamActivity extends ChatBaseActivity { public void initChat() { Team teamInfo = (Team) getIntent().getSerializableExtra(RouterConstant.CHAT_KRY); String teamId = getIntent().getStringExtra(RouterConstant.CHAT_ID_KRY); + boolean isGuanFang = getIntent().getBooleanExtra(ChatUIConstants.KEY_TEAM_ISGUANFANG,false); if (teamInfo == null && TextUtils.isEmpty(teamId)) { ALog.e(LIB_TAG, TAG, "team info is null && team id is null" + teamId); finish(); @@ -38,6 +40,7 @@ public class FunChatTeamActivity extends ChatBaseActivity { Bundle bundle = new Bundle(); bundle.putSerializable(RouterConstant.CHAT_KRY, teamInfo); bundle.putSerializable(RouterConstant.CHAT_ID_KRY, teamId); + bundle.putBoolean(ChatUIConstants.KEY_TEAM_ISGUANFANG,isGuanFang); IMMessage message = (IMMessage) getIntent().getSerializableExtra(RouterConstant.KEY_MESSAGE); if (message != null) { bundle.putSerializable(RouterConstant.KEY_MESSAGE, message); diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java index 99b2754..12e0b5d 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/page/fragment/FunChatTeamFragment.java @@ -32,8 +32,11 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.netease.nim.highavailable.LogUtils; +import com.netease.nimlib.sdk.NIMClient; +import com.netease.nimlib.sdk.RequestCallback; import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum; import com.netease.nimlib.sdk.msg.model.IMMessage; +import com.netease.nimlib.sdk.team.TeamService; import com.netease.nimlib.sdk.team.constant.TeamFieldEnum; import com.netease.nimlib.sdk.team.model.Team; import com.netease.yunxin.kit.alog.ALog; @@ -171,6 +174,7 @@ public class FunChatTeamFragment extends FunChatFragment { } public TeamExtensionBean extensionBean; + private void refreshView() { if (teamInfo != null) { // chatView.getTitleBar().setTitle(teamInfo.getName()); @@ -184,34 +188,7 @@ public class FunChatTeamFragment extends FunChatFragment { showIsNotMyTeam(); } else { //展示正常 - viewBinding.chattopview.ivChatcall.setVisibility(View.GONE); - viewBinding.chattopview.ivChatsetting.setVisibility(View.VISIBLE); - viewBinding.chattopview.ivChatannouncement.setVisibility(View.VISIBLE); - viewBinding.layoutTeamannouncement.setVisibility(View.GONE); - getMessageBottomLayout().setShowInit(); - String teamId = teamInfo.getId(); - if (!ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), "").equals(teamInfo.getAnnouncement())) { - ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true); - ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), teamInfo.getAnnouncement()); - } - if (!TextUtils.isEmpty(teamInfo.getAnnouncement()) && ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true)) { - viewBinding.layoutTeamannouncement.setVisibility(View.VISIBLE); - viewBinding.tvTeamannouncement.setText(teamInfo.getAnnouncement()); - viewBinding.ivTeammannouncementClose.setOnClickListener(view -> { - ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), false); - viewBinding.layoutTeamannouncement.setVisibility(View.GONE); - }); - viewBinding.layoutTeamannouncement.setOnClickListener(view -> { - //跳到群公告页面 - chatView.hideCurrentInput(); - XKitRouter.withKey(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE) - .withContext(requireContext()) - .withParam(KEY_TEAM_ID, teamInfo.getId()) - .navigate(); - }); - } - - + showChatView(); } //获取是否允许加好友状态 @@ -247,7 +224,6 @@ public class FunChatTeamFragment extends FunChatFragment { } - @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -410,6 +386,28 @@ public class FunChatTeamFragment extends FunChatFragment { //群被解散或者被踢出 //我不在这个群 // chatView.getTitleBar().setVisibility(View.GONE); + if (isGuanFang) { //如果是官方世界聊天 + NIMClient.getService(TeamService.class).applyJoinTeam(teamInfo.getId(), null).setCallback(new RequestCallback() { + @Override + public void onSuccess(Team team1) { + showChatView(); + } + + @Override + public void onFailed(int code) { + + + } + + @Override + public void onException(Throwable exception) { + // error + + + } + }); + return; + } viewBinding.chattopview.ivChatcall.setVisibility(View.GONE); viewBinding.chattopview.ivChatsetting.setVisibility(View.GONE); viewBinding.chattopview.ivChatannouncement.setVisibility(View.GONE); @@ -432,6 +430,35 @@ public class FunChatTeamFragment extends FunChatFragment { // alertDialog.getWindow().setContentView(dialogView); } + //展示正常聊天View + public void showChatView() { + viewBinding.chattopview.ivChatcall.setVisibility(View.GONE); + viewBinding.chattopview.ivChatsetting.setVisibility(View.VISIBLE); + viewBinding.chattopview.ivChatannouncement.setVisibility(View.VISIBLE); + viewBinding.layoutTeamannouncement.setVisibility(View.GONE); + getMessageBottomLayout().setShowInit(); + String teamId = teamInfo.getId(); + if (!ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), "").equals(teamInfo.getAnnouncement())) { + ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true); + ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.TEAM_ANNOUNCEMENT_CONTENT, IMKitClient.account(), teamId), teamInfo.getAnnouncement()); + } + if (!TextUtils.isEmpty(teamInfo.getAnnouncement()) && ChatDataUtils.get(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), true)) { + viewBinding.layoutTeamannouncement.setVisibility(View.VISIBLE); + viewBinding.tvTeamannouncement.setText(teamInfo.getAnnouncement()); + viewBinding.ivTeammannouncementClose.setOnClickListener(view -> { + ChatDataUtils.set(getActivity(), String.format(ChatKitUIConstant.SHOW_TEAM_ANNOUNCEMENT, IMKitClient.account(), teamId), false); + viewBinding.layoutTeamannouncement.setVisibility(View.GONE); + }); + viewBinding.layoutTeamannouncement.setOnClickListener(view -> { + //跳到群公告页面 + chatView.hideCurrentInput(); + XKitRouter.withKey(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE) + .withContext(requireContext()) + .withParam(KEY_TEAM_ID, teamInfo.getId()) + .navigate(); + }); + } + } @Override public void onNewIntent(Intent intent) { diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/view/input/FunBottomActionFactory.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/view/input/FunBottomActionFactory.java index 4040015..80d2429 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/view/input/FunBottomActionFactory.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/fun/view/input/FunBottomActionFactory.java @@ -73,13 +73,13 @@ public class FunBottomActionFactory { R.drawable.ic_location1, R.string.chat_message_location)); actions.add(new ActionItem(ActionConstants.ACTION_TYPE_ALBUMS, R.drawable.ic_action_share_albums, R.string.sharealbums_txt)); - - //礼品积分红包 - actions.add(new ActionItem(ActionConstants.ACTION_TYPE_REP_PACKET, R.drawable.ic_action_red_packet, R.string.hongbao_txt)); - + if (getConfig(IMKitClient.getApplicationContext(), "redpkg_score", false)) { //积分赠送 + //礼品积分红包 + actions.add(new ActionItem(ActionConstants.ACTION_TYPE_REP_PACKET, R.drawable.ic_action_red_packet, R.string.hongbao_txt)); + } //赠送功能入口 if (sessionType == SessionTypeEnum.P2P) { - if (getConfig(IMKitClient.getApplicationContext(), "transfer_jifen", false)) { //积分赠送 + if (getConfig(IMKitClient.getApplicationContext(), "transfer_score", false)) { //积分赠送 actions.add(new ActionItem(ActionConstants.ACTION_TYPE_TRANSFER, R.drawable.ic_action_tur, R.string.zhuanzhang_txtq)); } // if (getConfig(IMKitClient.getApplicationContext(), "transfer_cash", false)) { //cash赠送 diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java index 09280c2..fb740fe 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/network/ApiService.java @@ -54,8 +54,7 @@ public interface ApiService { /** * 测试环境 */ - //String URL = "https://api-test.letschat2023.com/"; - // String URL = "https://8.217.244.135:8001/"; +// String URL = "https://api-test.letschat2023.com/"; String SUBSTATIONID = "1703655363476242434"; diff --git a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java index f2d2d64..441f94b 100644 --- a/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java +++ b/chatkit-ui/src/main/java/com/netease/yunxin/kit/chatkit/ui/page/fragment/ChatBaseFragment.java @@ -91,6 +91,7 @@ import com.netease.yunxin.kit.chatkit.ui.ChatKitClient; import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant; import com.netease.yunxin.kit.chatkit.ui.ChatMessageType; import com.netease.yunxin.kit.chatkit.ui.ChatUIConfig; +import com.netease.yunxin.kit.chatkit.ui.ChatUIConstants; import com.netease.yunxin.kit.chatkit.ui.R; import com.netease.yunxin.kit.chatkit.ui.adapter.CommonAdapter; import com.netease.yunxin.kit.chatkit.ui.adapter.ViewHolder; @@ -282,6 +283,8 @@ public abstract class ChatBaseFragment extends BaseFragment { public Team teamInfo; public int isAllowAd = 0; + public boolean isGuanFang; + @Nullable @Override public View onCreateView( @@ -301,6 +304,7 @@ public abstract class ChatBaseFragment extends BaseFragment { super.onViewCreated(view, savedInstanceState); if (getArguments() != null) { isServices = getArguments().getBoolean("isService", false); + isGuanFang = getArguments().getBoolean(ChatUIConstants.KEY_TEAM_ISGUANFANG, false); initData(getArguments()); } mHandler = new Handler(); diff --git a/chatkit-ui/src/main/res/values-en/strings.xml b/chatkit-ui/src/main/res/values-en/strings.xml index 4968dd4..dadba7a 100644 --- a/chatkit-ui/src/main/res/values-en/strings.xml +++ b/chatkit-ui/src/main/res/values-en/strings.xml @@ -114,7 +114,7 @@ Modified group announcement accepted the group invitation from %s permissions updated to - Agree the group apply from%s + %s has joined the group chat Give away the group to Admin by Mute diff --git a/chatkit-ui/src/main/res/values-ja/strings.xml b/chatkit-ui/src/main/res/values-ja/strings.xml index 61e7057..83091a6 100644 --- a/chatkit-ui/src/main/res/values-ja/strings.xml +++ b/chatkit-ui/src/main/res/values-ja/strings.xml @@ -113,7 +113,7 @@ グループのお知らせを更新しました %s のグループ招待を承認しました グループ検証権限を更新する - 管理者はユーザー %s を通じてグループ メンバーシップを申請します + %s がグループチャットに参加しました グループを次の場所に移動します 管理者 ミュート diff --git a/chatkit-ui/src/main/res/values-zh/strings.xml b/chatkit-ui/src/main/res/values-zh/strings.xml index aad96f4..8c13239 100644 --- a/chatkit-ui/src/main/res/values-zh/strings.xml +++ b/chatkit-ui/src/main/res/values-zh/strings.xml @@ -116,7 +116,7 @@ 更新了群公告 接受了%s的入群邀请 更新群身份验证权限为 - 管理员通过用户%s的入群申请 + %s进入了群聊 将群转移给 被管理员 禁言 diff --git a/chatkit-ui/src/main/res/values/strings.xml b/chatkit-ui/src/main/res/values/strings.xml index 4e8f298..25095e7 100644 --- a/chatkit-ui/src/main/res/values/strings.xml +++ b/chatkit-ui/src/main/res/values/strings.xml @@ -116,7 +116,7 @@ 更新了群組公告 接受了%s的入群邀請 更新群組驗證權限為 - 管理員透過使用者%s的入群申請 + %s 已加入群聊 將群組轉移給 被管理員 禁言 diff --git a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/fun/viewholder/FunConversationTeamViewHolder.java b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/fun/viewholder/FunConversationTeamViewHolder.java index e01a5e2..b407e24 100644 --- a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/fun/viewholder/FunConversationTeamViewHolder.java +++ b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/fun/viewholder/FunConversationTeamViewHolder.java @@ -47,6 +47,13 @@ public class FunConversationTeamViewHolder extends FunConversationBaseViewHolder viewBinding.tvMyteamtype.setVisibility(View.VISIBLE); } + if (data.isShiJie) { + viewBinding.tvMyteamtype.setBackgroundResource(R.drawable.cornor_6877fe_6dp); + viewBinding.tvMyteamtype.setTextColor(Color.parseColor("#ffffffff")); + viewBinding.tvMyteamtype.setText(viewBinding.getRoot().getContext().getResources().getString(R.string.guanfang_text)); + viewBinding.tvMyteamtype.setVisibility(View.VISIBLE); + } + // viewBinding.groupNumber.setVisibility(View.VISIBLE); // viewBinding.groupNumber.setText("(" + teamInfo.getMemberCount() + ")"); } diff --git a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/model/ConversationBean.java b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/model/ConversationBean.java index c462559..aaae549 100644 --- a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/model/ConversationBean.java +++ b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/model/ConversationBean.java @@ -21,6 +21,16 @@ public class ConversationBean extends BaseBean { public boolean isHide; + public boolean isShiJie; + + public boolean isShiJie() { + return isShiJie; + } + + public void setShiJie(boolean shiJie) { + isShiJie = shiJie; + } + public boolean isSelector() { return isSelector; } diff --git a/conversationkit-ui/src/main/res-fun/drawable/cornor_6877fe_6dp.xml b/conversationkit-ui/src/main/res-fun/drawable/cornor_6877fe_6dp.xml index 259f90b..1bd38d1 100644 --- a/conversationkit-ui/src/main/res-fun/drawable/cornor_6877fe_6dp.xml +++ b/conversationkit-ui/src/main/res-fun/drawable/cornor_6877fe_6dp.xml @@ -2,5 +2,5 @@ - + \ No newline at end of file diff --git a/conversationkit-ui/src/main/res-fun/values/colors.xml b/conversationkit-ui/src/main/res-fun/values/colors.xml index b82c76b..fc6e16d 100644 --- a/conversationkit-ui/src/main/res-fun/values/colors.xml +++ b/conversationkit-ui/src/main/res-fun/values/colors.xml @@ -16,5 +16,6 @@ #ffffff #4c4c4c #6877fe + #FE6881 \ No newline at end of file diff --git a/conversationkit-ui/src/main/res/values-en/string.xml b/conversationkit-ui/src/main/res/values-en/string.xml index a708772..7428d0e 100644 --- a/conversationkit-ui/src/main/res/values-en/string.xml +++ b/conversationkit-ui/src/main/res/values-en/string.xml @@ -45,4 +45,6 @@ recalled the message Service + Official + \ No newline at end of file diff --git a/conversationkit-ui/src/main/res/values-ja/string.xml b/conversationkit-ui/src/main/res/values-ja/string.xml index 6a1c8d8..86ddf64 100644 --- a/conversationkit-ui/src/main/res/values-ja/string.xml +++ b/conversationkit-ui/src/main/res/values-ja/string.xml @@ -47,4 +47,5 @@ がメッセージを撤回しました 顧客サービス + 公式 \ No newline at end of file diff --git a/conversationkit-ui/src/main/res/values-zh/string.xml b/conversationkit-ui/src/main/res/values-zh/string.xml index 7e69dd8..38224d0 100644 --- a/conversationkit-ui/src/main/res/values-zh/string.xml +++ b/conversationkit-ui/src/main/res/values-zh/string.xml @@ -46,4 +46,5 @@ 撤回了一条消息 客服 + 官方 \ No newline at end of file diff --git a/conversationkit-ui/src/main/res/values/string.xml b/conversationkit-ui/src/main/res/values/string.xml index 2e7d436..5e7937f 100644 --- a/conversationkit-ui/src/main/res/values/string.xml +++ b/conversationkit-ui/src/main/res/values/string.xml @@ -47,4 +47,5 @@ 撤回了一則訊息 客服 + 官方 \ No newline at end of file