| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525 |
- package com.yingyangfly.home.activity
- import android.annotation.SuppressLint
- import android.text.TextUtils
- import androidx.recyclerview.widget.GridLayoutManager
- import com.alibaba.android.arouter.facade.annotation.Route
- import com.yingyang.home.databinding.ActivityHomeBinding
- import com.yingyangfly.baselib.db.QuestionsBean
- import com.yingyangfly.baselib.dialog.TaskFragment
- import com.yingyangfly.baselib.dialog.TipsDialog
- import com.yingyangfly.baselib.ext.setOnSingleClickListener
- import com.yingyangfly.baselib.ext.show
- import com.yingyangfly.baselib.ext.toast
- import com.yingyangfly.baselib.guideview.Guide
- import com.yingyangfly.baselib.guideview.GuideBuilder
- import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
- import com.yingyangfly.baselib.router.RouterUrlCommon
- import com.yingyangfly.baselib.utils.AppUtil
- import com.yingyangfly.baselib.utils.JumpUtil
- import com.yingyangfly.baselib.utils.User
- import com.yingyangfly.baselib.voice.PlayVoice
- import com.yingyangfly.home.adapter.GameAdapter
- import com.yingyangfly.home.component.ShowFunTimeViewComponent
- import com.yingyangfly.home.component.ShowHealthCounselingViewComponent
- import com.yingyangfly.home.component.ShowPlayPorpoiseViewComponent
- import com.yingyangfly.home.component.ShowProfessionalEvaluationViewComponent
- import com.yingyangfly.home.dialog.DownlaodAppFragment
- import com.yingyangfly.home.entity.Record
- /**
- * 新版首页
- */
- @Route(path = RouterUrlCommon.home)
- class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
- /**
- * 进行中的任务
- */
- private var currentTaskRecord: Record? = null
- private var taskList = mutableListOf<Record>()
- /**
- * 推荐游戏adapter
- */
- private var gameList = mutableListOf<Record>()
- private var isFirstPage = true
- //推荐游戏分页数据
- private var pageList = mutableListOf<Record>()
- private val gameAdapter by lazy { GameAdapter() }
- private var playVoice: PlayVoice? = null
- override fun initViews() {
- playVoice = PlayVoice()
- playVoice?.setContext(mContext)
- binding {
- rvGame.layoutManager = GridLayoutManager(this@HomeActivity, 2)
- rvGame.adapter = gameAdapter
- gameAdapter.onGameImageClickListener = {
- if (it.currentLevel == it.totalNum) {
- TipsDialog.TipDialogBuilder()
- .title("恭喜您")
- .content("当前游戏已通关,是否重新开始?")
- .leftBtnText("取消")
- .rightBtnText("确定")
- .leftClick({
- null
- }, true)
- .rightClick({
- jumpWebView(it, true)
- null
- }, true)
- .show(supportFragmentManager)
- } else {
- jumpWebView(it, false)
- }
- }
- }
- }
- override fun initListener() {
- binding {
- //用户头像
- imageSetting.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.personalCenter, mContext)
- }
- //直播
- layoutLiveBroadcast.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.liveBroadcastList, mContext)
- }
- //使用帮助
- layoutHelp.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.help, mContext)
- }
- //消息通知
- layoutNotify.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.messageList, mContext)
- }
- //服务套餐
- layoutServicePackage.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.servicePackage, mContext)
- }
- //畅玩蓝豚
- tvPlayPorpoise.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.freeTrain, mContext)
- }
- //专业测评
- tvProfessionalEvaluation.setOnSingleClickListener {
- loadMmseQuestions()
- }
- //健康咨询
- tvHealthCounseling.setOnSingleClickListener {
- "该功能正在开发中,敬请期待".toast()
- }
- //康复课堂
- tvfunTime.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.leisureBrain, mContext)
- }
- //查看
- btnCheck.setOnSingleClickListener {
- JumpUtil.jumpActivity(RouterUrlCommon.trainData, mContext)
- }
- //下一页
- btnNextPage.setOnSingleClickListener {
- pageList.clear()
- if (isFirstPage) {
- btnNextPage.text = "上一页"
- isFirstPage = false
- pageList.addAll(gameList.subList(4, gameList.size))
- } else {
- btnNextPage.text = "下一页"
- isFirstPage = true
- pageList.addAll(gameList.subList(0, 4))
- }
- gameAdapter.setData(pageList)
- }
- //开始专属训练
- btnTask.setOnSingleClickListener {
- if (currentTaskRecord != null) {
- currentTaskRecord.let {
- val str =
- it?.gameUrl + "?gameCode=" + it?.gameCode + "&isFull=true&isSound=true&playClass=A" + "&userToken=" + User.getToken()
- JumpUtil.jumpActivityWithUrl(
- RouterUrlCommon.WEB_VIEW_INTERACTION_JS,
- str,
- mContext
- )
- }
- }
- }
- }
- }
- override fun initData() {
- }
- override fun onResume() {
- super.onResume()
- //获取app升级信息
- selectNewVersion()
- //获取脑力值和训练时长接口
- getCountTrain()
- //获取未读消息数量
- getCountMyMsg()
- }
- /**
- * 获取app升级信息
- */
- private fun selectNewVersion() {
- val versionCode = AppUtil.getVersionCode(mContext)
- viewModel.selectNewVersion(versionCode, fail = {
- launchTask()
- }, success = {
- if (it != null) {
- val downlaodAppFragment = DownlaodAppFragment()
- downlaodAppFragment.setDownloadUrl(mContext, it.versionUrl)
- downlaodAppFragment.show(supportFragmentManager, "downlaodAppFragment")
- } else {
- launchTask()
- }
- })
- }
- /**
- * 获取任务相关接口
- */
- private fun launchTask() {
- //获取任务列表
- getFindMyTask()
- if (TextUtils.equals("0", User.getFirstLogin())) {
- val taskDesn =
- "欢迎" + User.getName() + "使用未来蓝豚康复平台!为您提供专业的认知康复支持和训练。帮助您提升认知能力,重建自信。小豚期待与您一同启程!"
- showTaskDialog(taskDesn, "")
- } else {
- //获取任务状态弹窗
- getSelectHomePageMsg()
- }
- }
- /**
- * 查询首页任务提醒弹窗是否显示接口
- */
- private fun getSelectHomePageMsg() {
- viewModel.getSelectHomePageMsg("D", fail = {
- it.toast()
- }, success = {
- if (it != null) {
- showTaskDialog(it.msgDesn, it.id)
- }
- })
- }
- /**
- * 获取脑力值和训练时长接口
- */
- private fun getCountTrain() {
- viewModel.getCountTrain(fail = {
- it.toast()
- }, success = {
- if (it != null) {
- binding.data = it
- binding.tvBrainPowerValue.setEnableAnim(true)
- binding.tvBrainPowerValue.setNumberString(it.mentalPower)
- }
- })
- }
- /**
- * 获取未读消息数量
- */
- private fun getCountMyMsg() {
- viewModel.getCountMyMsg(fail = {
- it.toast()
- }, success = {
- if (it != null) {
- val num = it.toInt()
- binding.unReadLayout.show(num > 0)
- }
- })
- }
- /**
- * 查询是否有进行中的任务
- */
- private fun getFindMyTask() {
- viewModel.findMyCurrentTask(fail = {
- it.toast()
- }, success = {
- if (it.isNullOrEmpty().not()) {
- showLayout(false)
- it!![0].let {
- binding.task = it
- if (it.details.isNullOrEmpty().not()) {
- val index = it.currentTaskNum - 1
- currentTaskRecord = it.details[index]
- taskList.addAll(it.details)
- }
- if (it.currentTaskNum == it.totalTaskNum) {
- if (TextUtils.equals("0", it.status)) {
- //任务完成
- if (TextUtils.equals(User.getNowDay(), User.getTaskDialogStatus())
- .not()
- ) {
- User.saveTaskDialogStatus(User.getNowDay())
- showTipDialog()
- } else {
- showLayout(true)
- getGameList()
- }
- binding.btnTask.text = "继续专属训练"
- } else {
- binding.btnTask.text = if (it.currentTaskNum == 1) {
- "开始专属训练"
- } else {
- "继续专属训练"
- }
- showLayout(false)
- if (TextUtils.equals(User.getNowDay(), User.getTaskDialogStatus())
- .not()
- ) {
- User.saveTaskDialogStatus(User.getNowDay())
- playVoice?.speak(it.taskDesn)
- }
- }
- } else {
- binding.btnTask.text = if (it.currentTaskNum == 1) {
- "开始专属训练"
- } else {
- "继续专属训练"
- }
- if (TextUtils.equals(User.getNowDay(), User.getTaskDialogStatus()).not()) {
- User.saveTaskDialogStatus(User.getNowDay())
- playVoice?.speak(it.taskDesn)
- }
- }
- }
- } else {
- showLayout(true)
- getGameList()
- }
- })
- }
- /**
- * 训练完成弹窗页面
- */
- private fun showTipDialog() {
- TipsDialog.TipDialogBuilder()
- .title("恭喜您")
- .content("您完成了今天的专属训练!今天的训练报告已生成,快去查看吧!")
- .leftBtnText("稍后再看")
- .rightBtnText("立即查看")
- .leftClick({
- showLayout(true)
- getGameList()
- }, dimiss = true)
- .rightClick({
- JumpUtil.jumpActivity(RouterUrlCommon.trainData, mContext)
- }, dimiss = true)
- .show(supportFragmentManager)
- }
- /**
- * 欢迎/确定信息弹窗
- */
- private fun showTaskDialog(taskDesn: String, id: String) {
- val taskFragment = TaskFragment()
- taskFragment.setTaskDesn(taskDesn, id)
- taskFragment.onDialogClickListener = {
- if (id.isNullOrEmpty()) {
- if (TextUtils.equals("0", User.getFirstLogin())) {
- //第一次登录弹窗欢迎
- User.saveFirstLogin("1")
- binding.tvPlayPorpoise.post {
- showPlayPorpoiseView()
- }
- }
- } else {
- updateReadMsg(id)
- }
- }
- taskFragment.show(supportFragmentManager, "taskFragment")
- }
- /**
- * 修改未读消息状态
- */
- private fun updateReadMsg(id: String) {
- viewModel.updateReadMsg(id, fail = {
- getFindMyTask()
- }, success = {
- getFindMyTask()
- })
- }
- /**
- * 加载游戏数据
- */
- @SuppressLint("NotifyDataSetChanged")
- private fun getGameList() {
- gameList.clear()
- pageList.clear()
- viewModel.getGameList(fail = {
- it.toast()
- }, success = {
- if (it.isNullOrEmpty().not()) {
- gameList.clear()
- pageList.clear()
- gameList.addAll(it!!)
- binding.btnNextPage.show(it.size > 4)
- if (it.size > 4) {
- binding.btnNextPage.show(true)
- pageList.addAll(it.subList(0, 4))
- } else {
- binding.btnNextPage.show(false)
- pageList.addAll(it)
- }
- } else {
- binding.btnNextPage.show(false)
- }
- gameAdapter.setData(pageList)
- })
- }
- /**
- * 判断展示推荐游戏页面/待完成任务页面
- */
- private fun showLayout(isShow: Boolean) {
- binding {
- gameLayout.show(isShow)
- taskLayout.show(isShow.not())
- }
- }
- /**
- * 跳转游戏列表
- */
- private fun jumpWebView(bean: Record, isFull: Boolean) {
- val str =
- bean.gameUrl + "?gameCode=" + bean.gameCode + "&isFull=" + isFull + "&isSound=true&playClass=" + bean.playClass +
- "&userToken=" + User.getToken()
- JumpUtil.jumpActivityWithUrl(RouterUrlCommon.WEB_VIEW_INTERACTION_JS, str, this)
- }
- /**
- * 首次登陆添加引导窗
- */
- private fun showPlayPorpoiseView() {
- val builder = GuideBuilder()
- builder.setTargetView(binding.tvPlayPorpoise)
- .setAlpha(150)
- .setHighTargetCorner(20)
- .setHighTargetPadding(3)
- builder.setOnVisibilityChangedListener(object : GuideBuilder.OnVisibilityChangedListener {
- override fun onShown() {
- }
- override fun onDismiss() {
- //获取任务状态弹窗
- showProfessionalEvaluation()
- }
- })
- builder.addComponent(ShowPlayPorpoiseViewComponent())
- val guide: Guide = builder.createGuide()
- guide.show(this)
- }
- /**
- * 首次登陆添加引导窗
- */
- private fun showProfessionalEvaluation() {
- val builder = GuideBuilder()
- builder.setTargetView(binding.tvProfessionalEvaluation)
- .setAlpha(150)
- .setHighTargetCorner(20)
- .setHighTargetPadding(3)
- builder.setOnVisibilityChangedListener(object : GuideBuilder.OnVisibilityChangedListener {
- override fun onShown() {
- }
- override fun onDismiss() {
- showHealthCounseling()
- }
- })
- builder.addComponent(ShowProfessionalEvaluationViewComponent())
- val guide: Guide = builder.createGuide()
- guide.show(this)
- }
- /**
- * 首次登陆添加引导窗
- */
- private fun showHealthCounseling() {
- val builder = GuideBuilder()
- builder.setTargetView(binding.tvHealthCounseling)
- .setAlpha(150)
- .setHighTargetCorner(20)
- .setHighTargetPadding(3)
- builder.setOnVisibilityChangedListener(object : GuideBuilder.OnVisibilityChangedListener {
- override fun onShown() {
- }
- override fun onDismiss() {
- showFunTime()
- }
- })
- builder.addComponent(ShowHealthCounselingViewComponent())
- val guide: Guide = builder.createGuide()
- guide.show(this)
- }
- /**
- * 首次登陆添加引导窗
- */
- private fun showFunTime() {
- val builder = GuideBuilder()
- builder.setTargetView(binding.tvfunTime)
- .setAlpha(150)
- .setHighTargetCorner(20)
- .setHighTargetPadding(3)
- builder.setOnVisibilityChangedListener(object : GuideBuilder.OnVisibilityChangedListener {
- override fun onShown() {
- }
- override fun onDismiss() {
- //获取任务状态弹窗
- getSelectHomePageMsg()
- }
- })
- builder.addComponent(ShowFunTimeViewComponent())
- val guide: Guide = builder.createGuide()
- guide.show(this)
- }
- override fun onDestroy() {
- if (playVoice != null) {
- playVoice?.stop()
- }
- super.onDestroy()
- }
- /**
- * 获取mmse试题库接口
- */
- private fun loadMmseQuestions() {
- if (db != null) {
- val dao = db?.getQuestionsDao()
- dao?.deleteAll()
- val questionsList = mutableListOf<QuestionsBean>()
- viewModel.getQuestions("MMSE", fail = {
- it.toast()
- }, success = {
- if (it.isNullOrEmpty().not()) {
- questionsList.addAll(it!!)
- dao?.insertAll(questionsList)
- }
- JumpUtil.jumpActivity(RouterUrlCommon.mmseEvaluation, mContext)
- })
- }
- }
- }
|