From db2e408f6c2eddc363ed76e0f5fd1e59a02aa175 Mon Sep 17 00:00:00 2001
From: zhujie <leon.zhu@cloudroam.com.cn>
Date: 星期四, 03 四月 2025 09:12:37 +0800
Subject: [PATCH] 邀请有礼
---
app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 320 insertions(+), 10 deletions(-)
diff --git a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
index 3f7139f..38a6f08 100644
--- a/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/notifications/NotificationsFragment.kt
@@ -1,13 +1,39 @@
package com.example.firstapp.ui.notifications
+import android.content.ClipData
+import android.content.ClipboardManager
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.TextView
+import android.widget.EditText
+import android.widget.Toast
+import androidx.activity.result.contract.ActivityResultContracts
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
-import androidx.lifecycle.ViewModelProvider
+import androidx.lifecycle.Observer
+import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import com.example.firstapp.R
+import com.example.firstapp.activity.ContentDetailActivity
+import com.example.firstapp.database.service.RetrofitClient
import com.example.firstapp.databinding.FragmentNotificationsBinding
+import com.example.firstapp.pay.PayAbility
+import com.example.firstapp.ui.reminderOther.ReminderOtherAddActivity2
+import com.example.firstapp.ui.reminderOther.ReminderSettingsFragmentOther
+import com.example.firstapp.ui.profile.EditProfileActivity
+import com.example.firstapp.utils.Log
+import com.google.android.material.snackbar.Snackbar
+import kotlinx.coroutines.launch
+import com.bumptech.glide.Glide
+import com.example.firstapp.MainActivity
+import com.example.firstapp.database.response.UserInfo
+import com.example.firstapp.ui.invitation.InvitationActivity
class NotificationsFragment : Fragment() {
@@ -17,22 +43,306 @@
// onDestroyView.
private val binding get() = _binding!!
+ // 默认值
+ private val DEFAULT_XIAOHONGSHU_URL = "https://www.xiaohongshu.com/user/profile/64978d5c000000001001ee26"
+ private val DEFAULT_EMAIL = "support@example.com"
+ private val DEFAULT_SHARE_TEXT = "推荐一个很棒的应用给你!\n下载地址:https://oia.xiaohongshu.com/oia"
+
+ // 存储从接口获取的值
+ private var xiaohongshuUrl = ""
+ private var contactEmail = ""
+ private var shareText = ""
+ private var currentUserInfo: UserInfo? = null // 确保使用你的实际数据类
+
+
+ private val editProfileLauncher = registerForActivityResult(
+ ActivityResultContracts.StartActivityForResult()
+ ) { result ->
+ if (result.resultCode == AppCompatActivity.RESULT_OK) {
+ result.data?.let { data ->
+ // 更新昵称
+ val newNickname = data.getStringExtra("nickname")
+ newNickname?.let {
+ binding.tvNickname.text = it
+ }
+
+ // 更新头像
+ val avatarUri = data.getStringExtra("avatar_uri")
+ avatarUri?.let {
+ Glide.with(requireContext())
+ .load(Uri.parse(it))
+ .circleCrop()
+ .into(binding.ivAvatar)
+ }
+
+ // TODO: 将更新后的信息保存到服务器
+ }
+ }
+ }
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
- val notificationsViewModel =
- ViewModelProvider(this).get(NotificationsViewModel::class.java)
-
_binding = FragmentNotificationsBinding.inflate(inflater, container, false)
- val root: View = binding.root
- val textView: TextView = binding.textNotifications
- notificationsViewModel.text.observe(viewLifecycleOwner) {
- textView.text = it
+ // 先加载配置,再设置点击事件
+ lifecycleScope.launch {
+ loadConfigurations()
+ setupClickListeners()
}
- return root
+
+ return binding.root
+ }
+
+ private suspend fun loadConfigurations() {
+ try {
+ // 获取小红书链接
+ val xhsResponse = RetrofitClient.apiService.getDictValue("setting", "xiaohongshu")
+ if (xhsResponse.code == 200 && !xhsResponse.data?.itemValue.isNullOrEmpty()) {
+ xiaohongshuUrl = xhsResponse.data?.itemValue ?: DEFAULT_XIAOHONGSHU_URL
+ } else {
+ xiaohongshuUrl = DEFAULT_XIAOHONGSHU_URL
+ }
+
+ // 获取邮箱
+ val emailResponse = RetrofitClient.apiService.getDictValue("setting", "email")
+ if (emailResponse.code == 200 && !emailResponse.data?.itemValue.isNullOrEmpty()) {
+ contactEmail = emailResponse.data?.itemValue ?: DEFAULT_EMAIL
+ } else {
+ contactEmail = DEFAULT_EMAIL
+ }
+
+ // 获取分享文本
+ val shareResponse = RetrofitClient.apiService.getDictValue("setting", "share_link")
+ if (shareResponse.code == 200 && !shareResponse.data?.itemValue.isNullOrEmpty()) {
+ shareText = shareResponse.data?.itemValue ?: DEFAULT_SHARE_TEXT
+ } else {
+ shareText = DEFAULT_SHARE_TEXT
+ }
+ } catch (e: Exception) {
+ // 如果发生错误,使用默认值
+ xiaohongshuUrl = DEFAULT_XIAOHONGSHU_URL
+ contactEmail = DEFAULT_EMAIL
+ shareText = DEFAULT_SHARE_TEXT
+ }
+ }
+
+ private fun setupClickListeners() {
+
+ // 支付插件
+// binding.payPlugin.setOnClickListener {
+// // 跳转到支付插件页面
+// lifecycleScope.launch {
+// try {
+// val response = RetrofitClient.apiService.getPayOrderInfo()
+// var orderInfo=response.data
+// Log.d("AliPayHelper","获取订单信息时: ${response}")
+// // 这里调用支付宝
+// PayAbility.aliPay(requireActivity(), orderInfo, Observer {
+// when (it.resultStatus) {
+// "9000" -> {
+//// Snackbar.make(binding.root, "支付成功", Snackbar.LENGTH_LONG).show()
+// requireActivity().runOnUiThread {
+// Toast.makeText(requireContext(), "支付成功", Toast.LENGTH_LONG).show()
+// }
+// }
+// else -> {
+//// Snackbar.make(binding.root, "支付失败", Snackbar.LENGTH_LONG).show()
+// requireActivity().runOnUiThread {
+// Toast.makeText(requireContext(), "支付失败", Toast.LENGTH_LONG).show()
+// }
+//
+// }
+// }
+// })
+//
+// } catch (e: Exception) {
+// Log.d("AliPayHelper","获取订单信息时发生错误: ${e.message}")
+// }
+// }
+// }
+
+
+ // 设置提醒
+ binding.layoutReminder.setOnClickListener {
+ findNavController().navigate(R.id.action_navigation_notifications_to_reminderSettingsFragment)
+ }
+
+ // 待办
+ binding.layoutTodo.setOnClickListener {
+ // TODO: 实现待办功能
+ Toast.makeText(context, "待办功能开发中", Toast.LENGTH_SHORT).show()
+ }
+
+ // 好友邀请
+ binding.layoutInvite.setOnClickListener {
+ // 跳转到邀请活动页面
+ val intent = Intent(requireActivity(), InvitationActivity::class.java)
+ startActivity(intent)
+ }
+
+ // AI助手
+ binding.layoutAi.setOnClickListener {
+ // TODO: 实现AI助手功能
+ Toast.makeText(context, "AI助手功能开发中", Toast.LENGTH_SHORT).show()
+ }
+
+ // 离线模式
+ binding.layoutOffline.setOnClickListener {
+ // TODO: 实现离线模式功能
+ Toast.makeText(context, "离线模式功能开发中", Toast.LENGTH_SHORT).show()
+ }
+
+ // 关于小红书
+ binding.layoutAbout.setOnClickListener {
+ val intent = Intent(Intent.ACTION_VIEW, Uri.parse(xiaohongshuUrl))
+ startActivity(intent)
+ }
+
+ // 邮件联系
+ binding.layoutEmail.setOnClickListener {
+ showEmailDialog()
+ }
+
+ // 意见与反馈
+ binding.layoutFeedback.setOnClickListener {
+ showFeedbackDialog()
+ }
+
+ // 隐私协议
+ binding.layoutPrivacy.setOnClickListener {
+ startContentActivity("privacy_policy", "隐私协议")
+ }
+
+ // 使用教程
+ binding.layoutTutorial.setOnClickListener {
+ startContentActivity("user_guide", "使用教程")
+ }
+
+ // 头像点击老的处理逻辑
+ binding.layoutUserInfo.setOnClickListener {
+ currentUserInfo?.let { user ->
+ val intent = Intent(requireContext(), EditProfileActivity::class.java).apply {
+ putExtra("nickname", user.name) // 使用数据模型中的字段
+ putExtra("avatar_url", user.cover) // 使用正确的URL字段
+ }
+ editProfileLauncher.launch(intent)
+ } ?: run {
+ Toast.makeText(context, "用户信息未加载完成", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ // VIP续费
+ binding.btnRenew.setOnClickListener {
+ Toast.makeText(context, "VIP续费功能开发中", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ private fun showEmailDialog() {
+ MaterialAlertDialogBuilder(requireContext())
+ .setTitle("联系邮箱")
+ .setMessage(contactEmail)
+ .setPositiveButton("复制") { _, _ ->
+ val clipboard = requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
+ val clip = ClipData.newPlainText("email", contactEmail)
+ clipboard.setPrimaryClip(clip)
+ Toast.makeText(context, "邮箱已复制", Toast.LENGTH_SHORT).show()
+ }
+ .setNegativeButton("取消", null)
+ .show()
+ }
+
+ private fun showFeedbackDialog() {
+ val dialogView = LayoutInflater.from(context).inflate(R.layout.dialog_feedback, null)
+ val editText = dialogView.findViewById<EditText>(R.id.feedback_edit_text)
+
+ MaterialAlertDialogBuilder(requireContext())
+ .setTitle("意见反馈")
+ .setView(dialogView)
+ .setPositiveButton("提交") { _, _ ->
+ val feedback = editText.text.toString()
+ if (feedback.isNotEmpty()) {
+ // TODO: 提交反馈到服务器
+ Toast.makeText(context, "感谢您的反馈", Toast.LENGTH_SHORT).show()
+ }
+ }
+ .setNegativeButton("取消", null)
+ .show()
+ }
+
+ private fun shareToWechat() {
+ try {
+ // 获取应用程序的包名
+ //val packageName = requireContext().packageName
+
+ // 创建分享意图
+ val intent = Intent().apply {
+ action = Intent.ACTION_SEND
+ type = "text/plain"
+ putExtra(Intent.EXTRA_TEXT, shareText)
+
+ // 指定分享到微信
+ setPackage("com.tencent.mm")
+ }
+ startActivity(Intent.createChooser(intent, "分享到微信"))
+ } catch (e: Exception) {
+ Toast.makeText(context, "请先安装微信", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ private fun startContentActivity(type: String, title: String) {
+ val intent = Intent(requireContext(), ContentDetailActivity::class.java).apply {
+ putExtra(ContentDetailActivity.EXTRA_CONTENT_TYPE, type)
+ putExtra(ContentDetailActivity.EXTRA_TITLE, title)
+ }
+ startActivity(intent)
+ }
+
+ private suspend fun loadUserInfo() {
+ try {
+ val response = RetrofitClient.apiService.getUserInfo("17586582287")
+ if (response.code == "0" && response.data != null) {
+ // 保存用户信息
+ currentUserInfo = response.data
+ val userInfo = response.data
+
+ // 设置头像
+ Glide.with(this)
+ .load(userInfo.cover)
+ .placeholder(R.drawable.default_avatar)
+ .into(binding.ivAvatar)
+
+ // 设置昵称和账号
+ binding.tvNickname.text = userInfo.name
+ binding.tvUserId.text = "个人账号:${userInfo.contactTel}"
+
+ // 设置VIP信息
+ if (userInfo.showed) {
+ binding.ivVip.visibility = View.VISIBLE
+ binding.cardVip.visibility = View.VISIBLE
+ binding.tvVipExpire.text = "${userInfo.overTime} 到期"
+ } else {
+ //非会员信息
+ binding.btnRenew.text = "立即开通"
+ binding.linearVipContainer.setBackgroundColor(ContextCompat.getColor(requireContext(), R.color.gray))
+ binding.cardVip.visibility = View.GONE
+ }
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
+ }
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ // 加载用户信息
+ lifecycleScope.launch {
+ loadUserInfo()
+ }
}
override fun onDestroyView() {
--
Gitblit v1.9.3