diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/bean/MyFamilyBean.kt b/BaseModule/src/main/java/com/xscm/moduleutil/bean/MyFamilyBean.kt index 7ea3baa0..f3ccc955 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/bean/MyFamilyBean.kt +++ b/BaseModule/src/main/java/com/xscm/moduleutil/bean/MyFamilyBean.kt @@ -40,7 +40,7 @@ class MyFamilyBean { var mic_cycle: String = "" //麦圈 var nobility_image: String = "" //贵族 var nickname_color: String = "" //贵族颜色 - var free_renewal: String = "" //免费续签次数 + var free_renewal: Int = 0 //免费续签次数 var today_earnings: String = "" //今日收礼收益 var yesterday_earnings: String = "" //昨日收礼收益 var is_online: Int = 0 //是否在线 1在线 0离线 diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java index a93ad156..b655276f 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/dialog/ConfirmDialog.java @@ -9,6 +9,7 @@ import android.view.Gravity; import android.view.View; import android.view.Window; import android.widget.Button; +import android.text.SpannableString; import android.widget.TextView; import androidx.constraintlayout.widget.ConstraintLayout; @@ -26,6 +27,7 @@ public class ConfirmDialog extends Dialog { private String title; private String message; + private SpannableString spannableMessage; private String positiveButtonText; private String negativeButtonText; private View.OnClickListener positiveButtonClickListener; @@ -50,6 +52,23 @@ public class ConfirmDialog extends Dialog { this.isCountdownEnabled = isCountdownEnabled; this.countdownSeconds = countdownSeconds; } + + // 新增构造函数,支持SpannableString + public ConfirmDialog(Context context, String title, SpannableString spannableMessage, + String positiveButtonText, String negativeButtonText, + View.OnClickListener positiveButtonClickListener, + View.OnClickListener negativeButtonClickListener, + boolean isCountdownEnabled, int countdownSeconds) { + super(context); + this.title = title; + this.spannableMessage = spannableMessage; + this.positiveButtonText = positiveButtonText; + this.negativeButtonText = negativeButtonText; + this.positiveButtonClickListener = positiveButtonClickListener; + this.negativeButtonClickListener = negativeButtonClickListener; + this.isCountdownEnabled = isCountdownEnabled; + this.countdownSeconds = countdownSeconds; + } private void init() { Window window = getWindow(); @@ -76,7 +95,12 @@ public class ConfirmDialog extends Dialog { // 设置文本 tvTitle.setText(title); - tvMessage.setText(message); + // 根据是否有spannableMessage来设置不同的文本 + if (spannableMessage != null) { + tvMessage.setText(spannableMessage); + } else { + tvMessage.setText(message); + } btnPositive.setText(positiveButtonText); btnNegative.setText(negativeButtonText); diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java index 75e4750f..db43c64b 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/ApiServer.java @@ -884,4 +884,12 @@ public interface ApiServer { @GET(Constants.GET_SKILL_LIST) Call>> skillList(); + + @FormUrlEncoded + @POST(Constants.POST_FREE_RE_SIGN) + Call> freeReSign(@Field("user_id") String user_id); + + @FormUrlEncoded + @POST(Constants.POST_RE_SIGN) + Call> reSign(@Field("user_id") String user_id); } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java index 67d27c89..b3a5f1f1 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/http/RetrofitClient.java @@ -4738,5 +4738,35 @@ public class RetrofitClient { }); } + public void freeReSign(int type, String userId,BaseObserver observer) { + if (type==1) { + sApiServer.freeReSign(userId).enqueue(new Callback>() { + + @Override + public void onResponse(Call> call, Response> response) { + onNextRetu(response, observer); + } + + @Override + public void onFailure(Call> call, Throwable t) { + LogUtils.e("freeReSign", t.fillInStackTrace()); + } + }); + }else { + sApiServer.reSign(userId).enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + onNextRetu(response, observer); + } + + @Override + public void onFailure(Call> call, Throwable t) { + LogUtils.e("reSign", t.fillInStackTrace()); + } + }); + } + } + + } diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java index 8a9542a8..a81d2051 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/widget/Constants.java @@ -431,6 +431,8 @@ public class Constants { public static final String POST_FRIEND_LIST_MORE = "/api/User/get_friend_list_more";//挚友列表查看更多 public static final String POST_SEND_LOG = "api/Report/android_log_report";//上传log信息 public static final String GET_SKILL_LIST = "/api/Sign/skill_list";//才艺列表 + public static final String POST_FREE_RE_SIGN = "/api/Sign/free_re_sign";//免费续约 + public static final String POST_RE_SIGN = "/api/Sign/re_sign";//续签(花金币) diff --git a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UserFamilyActivity.kt b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UserFamilyActivity.kt index 3ea3da47..50bdbabf 100644 --- a/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UserFamilyActivity.kt +++ b/MainModule/src/main/java/com/xscm/modulemain/activity/user/activity/UserFamilyActivity.kt @@ -54,6 +54,10 @@ class UserFamilyActivity : BaseMvpActivity() private var adapter: MyFamilyAdapter? = null private var userId: Int = 0 - private var myFamilyBean : MyFamilyBean= MyFamilyBean() + private var myFamilyBean: MyFamilyBean = MyFamilyBean() override fun onDestroyView() { @@ -42,8 +50,8 @@ class MyFamilyFragment(var data: MyFamilyBean) : BaseFragment - if (type == 1) { + { v: View? -> + RetrofitClient.getInstance() + .freeReSign(type, userId, object : BaseObserver() { + override fun onSubscribe(d: Disposable) { + } - } else { - val userids = userId.toInt() - val intent = Intent(ActivityUtils.getTopActivity(), HeartCpActivity::class.java) - intent.putExtra("userId", userids) - startActivity(intent) - } + override fun onNext(t: String) { + (ActivityUtils.getTopActivity() as? UserFamilyActivity)?.let { userFamilyActivity -> + userFamilyActivity.upData() + } + } + + }); }, - View.OnClickListener { v: View? -> }, false, 0 - ).show() + { v: View? -> }, false, 0 + ) + + dialog.show() } - fun myFamily1(data: MyFamilyBean) { + fun myFamily1(data: MyFamilyBean) { - myFamilyBean= data + myFamilyBean = data userId = data.user_id dataList.clear() dataList.addAll(data.group_members_lists) - mBinding.headView.setData(data.group_owner_info?.avatar,data.group_owner_info?.dress,data.group_owner_info?.nobility_image) + mBinding.headView.setData( + data.group_owner_info?.avatar, + data.group_owner_info?.dress, + data.group_owner_info?.nobility_image + ) mBinding.tvUserName.text = data.group_owner_info?.nickname - if (data.group_owner_info?.nickname_color?.isNotEmpty() == true){ + if (data.group_owner_info?.nickname_color?.isNotEmpty() == true) { mBinding.tvUserName.startColor = Color.parseColor(data.group_owner_info?.nickname_color) mBinding.tvUserName.shineColor = Color.parseColor(data.group_owner_info?.nickname_color) mBinding.tvUserName.endColor = Color.parseColor(data.group_owner_info?.nickname_color) @@ -133,7 +149,7 @@ class MyFamilyFragment(var data: MyFamilyBean) : BaseFragment if (view.id == R.id.tv_renew) { val item = dataList[position] - queren1(1, "是否确认免费续约", item.user_id.toString()) - }else if (view.id == R.id.iv_head) { + + if (item.free_renewal > 0) { + queren1( + 1, + onMessage(1, item.nickname, item.free_renewal, null, null, null), + item.user_id.toString() + ) + } else { + queren1( + 2, + onMessage( + 2, + item.nickname, + item.free_renewal, + item.sign_user_ratio, + item.sign_times, + item.market_value.toInt() + ), + item.user_id.toString() + ) + } + + } else if (view.id == R.id.iv_head) { val item = dataList[position] val intent = Intent(activity, UserHomepageActivity::class.java) intent.putExtra("userId", item.user_id.toString()) @@ -152,4 +189,43 @@ class MyFamilyFragment(var data: MyFamilyBean) : BaseFragment SpannableString("尊敬的用户:\n 您的徒弟【${userName ?: "?"}】当前为首次签约的免费签约期。续约后,师徒合约将延续7天,您剩余的免费续约次数:${remainingCount ?: "?"} 次") + 2 -> { + // 计算预估金币数,向上取整 + val actualUserValue = userValue ?: 1000 // 如果未提供用户身价,默认使用1000 + val percentageValue = percentage ?: 10 + val estimatedCoins = + kotlin.math.ceil(actualUserValue * percentageValue / 100.0).toInt() + + val mainText = + "尊敬的用户:\n 本次续约将预估支付${estimatedCoins}金币(【${userName ?: "?"}】身价的 ${percentageValue}% )作为续约费用,续约后,师徒合约将延长 ${days ?: 30} 天\n\n" + val noteText = "注:支付价格是预估价格,徒弟身价是实时变化,续约后无法取消" + val fullText = "$mainText$noteText" + val spannable = SpannableString(fullText) + + // 设置注释部分为红色 + val color = Color.RED + spannable.setSpan( + ForegroundColorSpan(color), + mainText.length, + fullText.length, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE + ) + + spannable + } + + else -> SpannableString("") + } + } } \ No newline at end of file