Browse Source

红包的修改

jixionghui 4 năm trước cách đây
mục cha
commit
ae661eedf5

+ 81 - 37
jixin/src/main/java/com/jixin/im/fragment/BaseRedPacketFragment.java

@@ -22,7 +22,10 @@ import com.jixin.im.bean.redpacket.RedPacket;
 import com.jixin.im.helper.DialogHelper;
 import com.jixin.im.helper.PaySecureHelper;
 import com.jixin.im.ui.base.EasyFragment;
+import com.jixin.im.ui.me.redpacket.ChangePayPasswordActivity;
 import com.jixin.im.ui.message.ChatActivity;
+import com.jixin.im.util.Constants;
+import com.jixin.im.util.PreferenceUtils;
 import com.jixin.im.util.ToastUtil;
 import com.jixin.im.util.secure.Money;
 import com.klinker.android.link_builder.Link;
@@ -35,32 +38,32 @@ import com.xuan.xuanhttplibrary.okhttp.result.Result;
 import okhttp3.Call;
 
 
+/**
+ * Created by Harvey on 2020/09/17
+ * 发送红包基类
+ */
 public abstract class BaseRedPacketFragment extends EasyFragment {
 
-
     private String mChatType;
     protected int mRedPacketType = 2;
     protected EditText mEdtPacketMoney;
     protected EditText mEdtRemark;
-    protected TextView tvSendRedPacket ;
+    protected TextView tvSendRedPacket;
     protected TextView tvRedPacketType;
     private ImageView ivIconPin;
-    private String mRoomId;
+    protected String mRedPacketAcceptorId;    //红包接收对象id 可以是roomId,也可以是userId
+
+    private int mRedPacketCount = 1;    //默认红包个数
 
-    public BaseRedPacketFragment(String roomId){
-        this.mRoomId = roomId;
-        if (TextUtils.isEmpty(roomId)){
+    public BaseRedPacketFragment(String chatType,String redPacketAcceptorId) {
+        this.mRedPacketAcceptorId = redPacketAcceptorId;
+        this.mChatType = chatType;
+        if (!isGroupChatType()) {
             this.mChatType = ChatType.CHAT_PRIVATE;
-        }else {
-            this.mChatType= ChatType.CHAT_GROUP;
         }
 
     }
 
-    public String getRoomId(){
-        return mRoomId;
-    }
-
     @Override
     protected int inflateLayoutId() {
         return R.layout.fragment_password_red_packet;
@@ -74,30 +77,44 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
     }
 
 
-    private void initView(){
+    private void initView() {
         mEdtPacketMoney = findViewById(R.id.edt_input_money);
         tvRedPacketType = findViewById(R.id.tv_red_packet_type);
         ivIconPin = findViewById(R.id.iv_icon_pin);
 
         mEdtRemark = findViewById(R.id.edt_input_remark);
         tvSendRedPacket = findViewById(R.id.tv_send_red_packet);
+
+
         tvSendRedPacket.setOnClickListener(v -> {
+            //发送红包点击事件
+            if (hasPayPassword()){
+                String money = mEdtPacketMoney.getText().toString();
+                String words = mEdtRemark.getText().toString();
+                PaySecureHelper.inputPayPassword(getActivity(), getString(R.string.chat_redpacket), money, password -> {
+                    sendRedPacket(String.valueOf(tvRedPacketType), money, String.valueOf(mRedPacketCount), words, password);
+                });
+            }else {
+                setPayPassword();
+            }
+
 
         });
+
         ViewStub mStubRedPacketCount = findViewById(R.id.view_stub_red_packet_count);
         ViewStub mStubRedPacketType = findViewById(R.id.view_stub_red_packet_type);
-        boolean isShowSpellLuck= isShowSpellLuckViews()&& isGroupChatType();
+        boolean isShowSpellLuck = isShowSpellLuckViews() && isGroupChatType();
         showSpellLuckViews(isShowSpellLuck);
         setSendRedPacketText();
 
         int countLayoutId = inflateLayoutIdByRedPacketCount();
-        if (countLayoutId>0){
+        if (countLayoutId > 0) {
             mStubRedPacketCount.setLayoutResource(countLayoutId);
             View rootView = mStubRedPacketCount.inflate();
             convertRedPacketCountViews(rootView);
         }
         int typeLayoutId = inflateLayoutIdByRedPacketType();
-        if (typeLayoutId>0){
+        if (typeLayoutId > 0) {
             mStubRedPacketType.setLayoutResource(typeLayoutId);
             View rootView = mStubRedPacketType.inflate();
             convertRedPacketTypeViews(rootView);
@@ -121,57 +138,68 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
 
             }
         });
-//        PaySecureHelper.inputPayPassword(this, getString(R.string.chat_redpacket), money, password -> {
-//            sendRed(item == 0 ? "1" : "3", finalMoney, String.valueOf(1), finalWords, password);
-//        });
+
 
     }
 
-    protected boolean isGroupChatType(){
-        if (ChatType.CHAT_GROUP.equals(mChatType)){
+    protected boolean isGroupChatType() {
+        if (ChatType.CHAT_GROUP.equals(mChatType)) {
             return true;
         }
         return false;
     }
+
     protected abstract int inflateLayoutIdByRedPacketCount();
+
     protected abstract int inflateLayoutIdByRedPacketType();
+
     protected abstract void convertRedPacketTypeViews(View rootView);
+
     protected abstract void convertRedPacketCountViews(View rootView);
+
     protected abstract void changeSendRedPacketButtonStyle();
 
-    private void setSendRedPacketText(){
+    private void setSendRedPacketText() {
         int textId = R.string.send_red_packet_1;
-        if (isGroupChatType()){
+        if (isGroupChatType()) {
             textId = R.string.send_group_red_packet;
         }
         tvSendRedPacket.setText(textId);
 
     }
 
+
+    protected int getRedPacketCount() {
+        return mRedPacketCount;
+    }
+
+    protected void setRedPacketCount(int mRedPacketCount) {
+        this.mRedPacketCount = mRedPacketCount;
+    }
+
     protected abstract Link.OnClickListener getLinkOnClickListener();
 
     //是否显示拼手气按钮
-    protected boolean isShowSpellLuckViews(){
+    protected boolean isShowSpellLuckViews() {
         return false;
     }
 
 
-
     //是否显示切换手气红包和普通红包
-    private void showSpellLuckViews(boolean show){
-        if (show){
+    private void showSpellLuckViews(boolean show) {
+        if (show) {
             ivIconPin.setVisibility(View.VISIBLE);
             tvRedPacketType.setVisibility(View.VISIBLE);
-        }else {
+        } else {
             ivIconPin.setVisibility(View.GONE);
             tvRedPacketType.setVisibility(View.GONE);
         }
     }
 
-    protected void showPinIcon(boolean show){
-        if (show){
+    protected void showPinIcon(boolean show) {
+        if (show) {
             ivIconPin.setVisibility(View.VISIBLE);
-        }else {
+        } else {
             ivIconPin.setVisibility(View.GONE);
         }
 
@@ -182,7 +210,20 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
         tvSendRedPacket.setClickable(isNormal);
 
     }
-    protected abstract ArrayMap<String,String> getSendRedPacketParameters();
+
+    private boolean hasPayPassword() {
+        boolean hasPayPassword = PreferenceUtils.getBoolean(getContext(), Constants.IS_PAY_PASSWORD_SET + coreManager.getSelf().getUserId(), true);
+        return  hasPayPassword;
+    }
+    private void setPayPassword(){
+        ToastUtil.showToast(getContext(), R.string.tip_no_pay_password);
+        Intent intent = new Intent(getContext(), ChangePayPasswordActivity.class);
+        startActivity(intent);
+
+    }
+
+    //获取发送红包不同的参数
+    protected abstract ArrayMap<String, String> getSendRedPacketParameters();
 
 
     private void sendRedPacket(final String type, String pMoney, String count, final String words, String payPassword) {
@@ -190,14 +231,17 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
             return;
         }
         DialogHelper.showDefaulteMessageProgressDialog(getActivity());
-        ArrayMap<String,String> params = getSendRedPacketParameters();
-        params.put("moneyStr",pMoney);
+        ArrayMap<String, String> params = getSendRedPacketParameters();
+        if (params==null){
+            params = new ArrayMap<>();
+        }
+        params.put("moneyStr", pMoney);
         params.put("greetings", words);
 
-        String toUserId = "";
+
         PaySecureHelper.generateParam(
                 getActivity(), payPassword, params,
-                "" + type + pMoney + count + words + toUserId,
+                "" + type + pMoney + count + words + mRedPacketAcceptorId,
                 t -> {
                     DialogHelper.dismissProgressDialog();
                     ToastUtil.showToast(getContext(), getActivity().getString(R.string.tip_pay_secure_place_holder, t.getMessage()));
@@ -224,7 +268,7 @@ public abstract class BaseRedPacketFragment extends EasyFragment {
                                         Intent intent = new Intent();
                                         intent.putExtra(AppConstant.EXTRA_CHAT_MESSAGE, message.toJsonString());
 //                                        getActivity().setResult(viewPager.getCurrentItem() == 0 ? ChatActivity.REQUEST_CODE_SEND_RED_PT : ChatActivity.REQUEST_CODE_SEND_RED_KL, intent);
-                                       getActivity(). finish();
+                                        getActivity().finish();
                                     }
                                 }
 

+ 3 - 1
jixin/src/main/java/com/jixin/im/fragment/ChatFragment.java

@@ -40,6 +40,7 @@ import com.jixin.im.R;
 import com.jixin.im.Reporter;
 import com.jixin.im.audio_x.VoiceManager;
 import com.jixin.im.audio_x.VoicePlayer;
+import com.jixin.im.bean.ChatType;
 import com.jixin.im.bean.Contacts;
 import com.jixin.im.bean.Friend;
 import com.jixin.im.bean.PrivacySetting;
@@ -1634,7 +1635,8 @@ public class ChatFragment extends EasyFragment implements ChatContentView.Messag
     @Override
     public void clickRedpacket() {
         Intent intent = new Intent(getActivity(), SendRedPacketActivity.class);
-        intent.putExtra(AppConstant.EXTRA_USER_ID, mFriend.getUserId());
+        intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID, mFriend.getUserId());
+        intent.putExtra(ChatType.INTENT_CHAT_TYPE,ChatType.CHAT_PRIVATE);
         startActivityForResult(intent, REQUEST_CODE_SEND_RED);
     }
 

+ 11 - 11
jixin/src/main/java/com/jixin/im/fragment/ExclusiveRedPacketFragment.java

@@ -2,6 +2,7 @@ package com.jixin.im.fragment;
 
 import android.content.Intent;
 import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
@@ -19,17 +20,19 @@ import static android.app.Activity.RESULT_OK;
 
 /**
  * Created by Harvey on 2020/09/17
+ * 发送专属红包
  */
 public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
     public static final String TAG = ExclusiveRedPacketFragment.class.getSimpleName();
     public static final int CODE_REQUEST_SELECT_RECEIVER = 1108;
-    private String mReceiverId, mToUserName;
+    private String mReceiverId;
     TextView tvSelectExclusiveMember;
 
-    public ExclusiveRedPacketFragment(String chatType) {
-        super(chatType);
+    public ExclusiveRedPacketFragment(String chatType, String redPacketAcceptorId) {
+        super(chatType, redPacketAcceptorId);
     }
 
+
     @Override
     protected int inflateLayoutIdByRedPacketCount() {
         return 0;
@@ -45,7 +48,7 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
         tvSelectExclusiveMember = rootView.findViewById(R.id.tv_select_exclusive_member);
         tvSelectExclusiveMember.setOnClickListener(v -> {
             Intent intent = new Intent(getContext(), GroupMoreFeaturesActivity.class);
-            intent.putExtra("roomId", getRoomId());
+            intent.putExtra("roomId", mRedPacketAcceptorId);
             intent.putExtra("isSelectReceiver", true);
             startActivityForResult(intent, CODE_REQUEST_SELECT_RECEIVER);
         });
@@ -78,7 +81,6 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
                 RoomMember roomMember = (RoomMember) data.getSerializableExtra("selectReceiver");
                 tvSelectExclusiveMember.setText(roomMember.getUserName());
                 mReceiverId = roomMember.getUserId();
-                mToUserName = roomMember.getUserName();
                 changeSendRedPacketButtonStyle();
 
 
@@ -86,16 +88,14 @@ public class ExclusiveRedPacketFragment extends BaseRedPacketFragment {
         }
     }
 
-    @Override
-    protected void onClickSendRedPacket(String redPacketMoney, String remark) {
-
-        Intent intent = new Intent();
-
 
+    @Override
+    protected Link.OnClickListener getLinkOnClickListener() {
+        return null;
     }
 
     @Override
-    protected Link.OnClickListener getLinkOnClickListener() {
+    protected ArrayMap<String, String> getSendRedPacketParameters() {
         return null;
     }
 

+ 3 - 1
jixin/src/main/java/com/jixin/im/fragment/MucChatFragment.java

@@ -60,6 +60,7 @@ import com.jixin.im.adapter.InterestForMuChatAdapter;
 import com.jixin.im.audio_x.VoiceManager;
 import com.jixin.im.audio_x.VoicePlayer;
 import com.jixin.im.bean.BiaoTouContentBean;
+import com.jixin.im.bean.ChatType;
 import com.jixin.im.bean.Contacts;
 import com.jixin.im.bean.Friend;
 import com.jixin.im.bean.MsgRoamTask;
@@ -2409,7 +2410,8 @@ public class MucChatFragment extends EasyFragment implements
     public void clickRedpacket() {
 //        Intent intent = new Intent(getContext(), MucSendRedPacketActivity.class);
         Intent intent = new Intent(getContext(), SendRedPacketActivity.class);
-        intent.putExtra("roomId",roomId);
+        intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID,roomId);
+        intent.putExtra(ChatType.INTENT_CHAT_TYPE,ChatType.CHAT_GROUP);
         startActivityForResult(intent, ChatActivity.REQUEST_CODE_SEND_RED);
 
     }

+ 8 - 4
jixin/src/main/java/com/jixin/im/fragment/NormalRedPacketFragment.java

@@ -19,14 +19,16 @@ import org.jetbrains.annotations.NotNull;
 import java.util.Objects;
 import java.util.regex.Pattern;
 
+/**
+ * Created by Harvey on 2020/09/17
+ * 发送普通红包和拼手气红包
+ */
 public class NormalRedPacketFragment extends BaseRedPacketFragment{
     public static final String TAG = NormalRedPacketFragment.class.getSimpleName();
     private EditText edtRedPacketCount;
 
-
-
-    public NormalRedPacketFragment(String chatType) {
-        super(chatType);
+    public NormalRedPacketFragment(String chatType, String redPacketAcceptorId) {
+        super(chatType, redPacketAcceptorId);
     }
 
 
@@ -118,8 +120,10 @@ public class NormalRedPacketFragment extends BaseRedPacketFragment{
         }
         if (isGroupChatType()){
             if (count <= 0 || money / count < 0.01) {
+
                 setSendRedPacketButtonStatus(false);
             } else {
+                setRedPacketCount(count);
                 setSendRedPacketButtonStatus(true);
             }
         }else {

+ 10 - 4
jixin/src/main/java/com/jixin/im/fragment/PasswordRedPacketFragment.java

@@ -4,6 +4,7 @@ import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextUtils;
 import android.text.TextWatcher;
+import android.util.ArrayMap;
 import android.util.Log;
 import android.view.View;
 import android.widget.EditText;
@@ -13,15 +14,19 @@ import com.klinker.android.link_builder.Link;
 
 import java.util.Objects;
 
+/**
+ * Created by Harvey on 2029/09/17
+ */
 public class PasswordRedPacketFragment extends BaseRedPacketFragment {
     private final static String TAG = PasswordRedPacketFragment.class.getSimpleName();
     private EditText edtRedPacketCount;
     private EditText edtPassword;
 
-    public PasswordRedPacketFragment(String chatType) {
-        super(chatType);
+    public PasswordRedPacketFragment(String chatType, String redPacketAcceptorId) {
+        super(chatType, redPacketAcceptorId);
     }
 
+
     @Override
     protected void onActivityCreated(Bundle savedInstanceState, boolean createView) {
         super.onActivityCreated(savedInstanceState,createView);
@@ -96,8 +101,8 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
     }
 
     @Override
-    protected void onClickSendRedPacket(String redPacketMoney, String remark) {
-
+    protected ArrayMap<String, String> getSendRedPacketParameters() {
+        return null;
     }
 
     @Override
@@ -126,6 +131,7 @@ public class PasswordRedPacketFragment extends BaseRedPacketFragment {
             if (count <= 0 || money / count < 0.01 ||TextUtils.isEmpty(password)) {
                 setSendRedPacketButtonStatus(false);
             } else {
+                setRedPacketCount(count);
                 setSendRedPacketButtonStatus(true);
             }
         }else {

+ 10 - 18
jixin/src/main/java/com/jixin/im/ui/me/redpacket/SendRedPacketActivity.java

@@ -63,11 +63,15 @@ import okhttp3.Call;
  * Modify by Harvey on 2020/09/17
  */
 public class SendRedPacketActivity extends BaseActivity {
+    public final static String  INTENT_ACCEPTOR_ID  = "redPacketAcceptorId";
     private String mChatType;
 
     private TabLayout mTabRedPacket;
     private ViewPager viewPager;
-    private String roomId;
+    private String mRedPacketAcceptorId; //红包接收对象id 可以是roomId,也可以是userId
+
+
+
 
 
     private List<BaseRedPacketFragment> mFragmentList;
@@ -83,27 +87,24 @@ public class SendRedPacketActivity extends BaseActivity {
 
         initView();
 
-        checkHasPayPassword();
     }
 
     private void initData() {
         Intent intent = getIntent();
         if (intent != null) {
-            roomId = getIntent().getStringExtra("roomId");
+            mRedPacketAcceptorId = getIntent().getStringExtra(INTENT_ACCEPTOR_ID);
             mChatType = intent.getStringExtra(ChatType.INTENT_CHAT_TYPE);
-            if (!TextUtils.isEmpty(roomId)) {
-                mChatType = ChatType.CHAT_GROUP;
-            }else {
+            if (TextUtils.isEmpty(mChatType)) {
                 mChatType = ChatType.CHAT_PRIVATE;
             }
         }
         mFragmentList = new ArrayList<>();
-        BaseRedPacketFragment normalFragment = new NormalRedPacketFragment(roomId);
+        BaseRedPacketFragment normalFragment = new NormalRedPacketFragment(mChatType,mRedPacketAcceptorId);
         mFragmentList.add(normalFragment);
-        BaseRedPacketFragment passwordFragment = new PasswordRedPacketFragment(roomId);
+        BaseRedPacketFragment passwordFragment = new PasswordRedPacketFragment(mChatType,mRedPacketAcceptorId);
         mFragmentList.add(passwordFragment);
         if (isGroupChatType()) {
-            BaseRedPacketFragment exclusiveFragment = new ExclusiveRedPacketFragment(roomId);
+            BaseRedPacketFragment exclusiveFragment = new ExclusiveRedPacketFragment(mChatType,mRedPacketAcceptorId);
             mFragmentList.add(exclusiveFragment);
 
         }
@@ -115,15 +116,6 @@ public class SendRedPacketActivity extends BaseActivity {
         return ChatType.isGroupChatType(mChatType);
     }
 
-    private void checkHasPayPassword() {
-//        boolean hasPayPassword = PreferenceUtils.getBoolean(this, Constants.IS_PAY_PASSWORD_SET + coreManager.getSelf().getUserId(), true);
-//        if (!hasPayPassword) {
-//            ToastUtil.showToast(this, R.string.tip_no_pay_password);
-//            Intent intent = new Intent(this, ChangePayPasswordActivity.class);
-//            startActivity(intent);
-//            finish();
-//        }
-    }
 
     private void initView() {
         getSupportActionBar().hide();

+ 3 - 1
jixin/src/main/java/com/jixin/im/ui/message/ChatActivity.java

@@ -36,6 +36,7 @@ import com.jixin.im.R;
 import com.jixin.im.Reporter;
 import com.jixin.im.audio_x.VoiceManager;
 import com.jixin.im.audio_x.VoicePlayer;
+import com.jixin.im.bean.ChatType;
 import com.jixin.im.bean.Contacts;
 import com.jixin.im.bean.Friend;
 import com.jixin.im.bean.PrivacySetting;
@@ -1591,7 +1592,8 @@ public class ChatActivity extends BaseActivity implements
     @Override
     public void clickRedpacket() {
         Intent intent = new Intent(this, SendRedPacketActivity.class);
-        intent.putExtra(AppConstant.EXTRA_USER_ID, mFriend.getUserId());
+        intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID, mFriend.getUserId());
+        intent.putExtra(ChatType.INTENT_CHAT_TYPE,ChatType.CHAT_PRIVATE);
         startActivityForResult(intent, REQUEST_CODE_SEND_RED);
     }
 

+ 3 - 1
jixin/src/main/java/com/jixin/im/ui/message/ChatActivityTemp.java

@@ -37,6 +37,7 @@ import com.jixin.im.R;
 import com.jixin.im.Reporter;
 import com.jixin.im.audio_x.VoiceManager;
 import com.jixin.im.audio_x.VoicePlayer;
+import com.jixin.im.bean.ChatType;
 import com.jixin.im.bean.Contacts;
 import com.jixin.im.bean.Friend;
 import com.jixin.im.bean.PrivacySetting;
@@ -1616,7 +1617,8 @@ public class ChatActivityTemp extends BaseActivity implements
     @Override
     public void clickRedpacket() {
         Intent intent = new Intent(this, SendRedPacketActivity.class);
-        intent.putExtra(AppConstant.EXTRA_USER_ID, mFriend.getUserId());
+        intent.putExtra(SendRedPacketActivity.INTENT_ACCEPTOR_ID, mFriend.getUserId());
+        intent.putExtra(ChatType.INTENT_CHAT_TYPE, ChatType.CHAT_PRIVATE);
         startActivityForResult(intent, REQUEST_CODE_SEND_RED);
     }