优化:调整天梯赛左右下角连胜字样大小

update 随机PK
This commit is contained in:
2022-12-08 17:45:21 +08:00
parent 9eff246f06
commit 3fa259c5b9
16 changed files with 357 additions and 76 deletions

View File

@@ -0,0 +1,128 @@
package com.yunbao.common.bean;
import com.google.gson.annotations.SerializedName;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class RankPkInfoBean extends BaseModel {
private int id;
@SerializedName("start_time")
private String startTime;
@SerializedName("end_time")
private String endTime;
@SerializedName("pk_start_hour1")
private String pkStartHour1;
@SerializedName("pk_end_hour1")
private String pkEndHour1;
@SerializedName("pk_start_hour2")
private String pkStartHour2;
@SerializedName("pk_end_hour2")
private String pkEndHour2;
public RankPkInfoBean() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public String getPkStartHour1() {
return pkStartHour1;
}
public void setPkStartHour1(String pkStartHour1) {
this.pkStartHour1 = pkStartHour1;
}
public String getPkEndHour1() {
return pkEndHour1;
}
public void setPkEndHour1(String pkEndHour1) {
this.pkEndHour1 = pkEndHour1;
}
public String getPkStartHour2() {
return pkStartHour2;
}
public void setPkStartHour2(String pkStartHour2) {
this.pkStartHour2 = pkStartHour2;
}
public String getPkEndHour2() {
return pkEndHour2;
}
public void setPkEndHour2(String pkEndHour2) {
this.pkEndHour2 = pkEndHour2;
}
/**
* 判断是否在排位赛时间范围内
*/
public boolean isRankPKTime() {
try {
Date now =new Date();
Date startDate = simpleDateToDate(startTime, "yyyy-MM-dd HH:mm:ss");
Date endDate = simpleDateToDate(endTime, "yyyy-MM-dd HH:mm:ss");
if (startDate == null || endDate == null) {
return false;
}
Calendar calendarStart = Calendar.getInstance(Locale.CHINA);
Calendar calendarEnd = Calendar.getInstance(Locale.CHINA);
Calendar calendarNow = Calendar.getInstance(Locale.CHINA);
calendarNow.setTime(now);
calendarStart.setTime(startDate);
calendarEnd.setTime(endDate);
if (calendarStart.before(calendarNow) && calendarEnd.after(calendarNow)) {
calendarNow.setTime(simpleDateToDate(dateToSimpleDate(now,"HH:mm:ss"),"HH:mm:ss"));
calendarStart.setTime(simpleDateToDate(pkStartHour1, "HH:mm:ss"));
calendarEnd.setTime(simpleDateToDate(pkEndHour1, "HH:mm:ss"));
if (calendarStart.before(calendarNow) && calendarEnd.after(calendarNow)) {
return true;
} else {
calendarNow.setTime(simpleDateToDate(dateToSimpleDate(now,"HH:mm:ss"),"HH:mm:ss"));
calendarStart.setTime(simpleDateToDate(pkStartHour2, "HH:mm:ss"));
calendarEnd.setTime(simpleDateToDate(pkEndHour2, "HH:mm:ss"));
return calendarStart.before(calendarNow) && calendarEnd.after(calendarNow);
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return false;
}
private Date simpleDateToDate(String time, String pattern) throws ParseException {
return new SimpleDateFormat(pattern, Locale.CHINA).parse(time);
}
private String dateToSimpleDate(Date date,String pattern){
return new SimpleDateFormat(pattern,Locale.CHINA).format(date);
}
}

View File

@@ -63,6 +63,8 @@ public class UserBean implements Parcelable {
private boolean isHide = false;
//是否为随机PK仅在主播PK时使用
private boolean randomPk;
//随机天梯排位赛PK img仅在主播PK时使用
private String mRankPkImgUrl;
public boolean isRandomPk() {
return randomPk;
@@ -72,6 +74,14 @@ public class UserBean implements Parcelable {
this.randomPk = randomPk;
}
public String getRankPkImgUrl() {
return mRankPkImgUrl;
}
public void setRankPkImgUrl(String mRankPkImgUrl) {
this.mRankPkImgUrl = mRankPkImgUrl;
}
public boolean isHide() {
return isHide;
}

View File

@@ -20,6 +20,7 @@ import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.RandomPkUserBean;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.bean.SearchModel;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.SlideInBannerModel;
@@ -388,4 +389,9 @@ public interface PDLiveApi {
*/
@GET("/api/public/?service=Livepk.setBanRandomPK")
Observable<ResponseModel<BaseModel>> setBanRandomPK();
/**
* 拒绝随机PK
*/
@GET("/api/public/?service=Ranking.getRankingInfo")
Observable<ResponseModel<RankPkInfoBean>> getRankingInfo();
}

View File

@@ -4,6 +4,7 @@ import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.R;
import com.yunbao.common.bean.ActiveModel;
@@ -20,6 +21,7 @@ import com.yunbao.common.bean.NobleRankHideUserListModel;
import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.RandomPkUserBean;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.bean.SetAttentsModel;
import com.yunbao.common.bean.StarChallengeStatusModel;
import com.yunbao.common.bean.VipModel;
@@ -598,8 +600,12 @@ public class LiveNetManager {
@Override
public void accept(ResponseModel<String> responseModel) throws Exception {
if (callback != null) {
callback.onSuccess("98196");
// callback.onSuccess(responseModel.getData().getInfo());
if(CommonAppConfig.getInstance().getUid().equals("98196")) {
callback.onSuccess("98274");
}else{
callback.onSuccess("98196");
}
// callback.onSuccess(responseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@@ -611,6 +617,7 @@ public class LiveNetManager {
}
}).isDisposed();
}
/**
* 自由PK开始后调用接口扣掉次数
*/
@@ -637,7 +644,7 @@ public class LiveNetManager {
/**
* 随机PK后调用接口给后台记录
*/
public void startRandomPK(String pkuid,HttpCallback<Boolean> callback) {
public void startRandomPK(String pkuid, HttpCallback<Boolean> callback) {
API.get().pdLiveApi(mContext)
.startRandomPK(pkuid)
.observeOn(AndroidSchedulers.mainThread())
@@ -665,6 +672,7 @@ public class LiveNetManager {
/**
* 随机PK后调用接口给后台记录
*
* @param cs 简体关键字/uid
* @param ct 繁体关键字/uid
*/
@@ -691,6 +699,7 @@ public class LiveNetManager {
}
}).isDisposed();
}
/**
* 拒绝随机PK
*/
@@ -713,6 +722,32 @@ public class LiveNetManager {
}
}).isDisposed();
}
/**
* 获取随机排位赛信息
*/
public void getRankPkInfoBean(HttpCallback<RankPkInfoBean> callback) {
API.get().pdLiveApi(mContext)
.getRankingInfo()
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(new Consumer<ResponseModel<RankPkInfoBean>>() {
@Override
public void accept(ResponseModel<RankPkInfoBean> rankPkInfoBeanResponseModel) throws Exception {
if (callback != null) {
callback.onSuccess(rankPkInfoBeanResponseModel.getData().getInfo());
}
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
if (callback != null) {
callback.onError(throwable.getMessage());
}
}
}).isDisposed();
}
/**
* 直播间取消网络请求
*/

View File

@@ -4,6 +4,7 @@ import android.os.Handler;
import android.os.Looper;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.ToastUtil;
@@ -14,25 +15,30 @@ import java.util.Locale;
import java.util.Timer;
import java.util.TimerTask;
/**
* 随机PK管理类
*/
public class RandomPkManager {
public final static int PK_STATUS_DEFAULT = -1;
public final static int PK_STATUS_REQUEST = 0;
public final static int PK_STATUS_START = 1;
public final static int PK_STATUS_CLOSE = 2;
public final static int PK_STATUS_REFUSE = 3;
public final static int PK_STATUS_EXIT_ING = 4;
public final static int PK_STATUS_DEFAULT = -1;//默认状态,一般为为开始匹配
public final static int PK_STATUS_REQUEST = 0;//已发出匹配请求
public final static int PK_STATUS_START = 1;//匹配到用户
public final static int PK_STATUS_CLOSE = 2;//PK结束
public final static int PK_STATUS_REFUSE = 3;//对方拒绝
public final static int PK_STATUS_EXIT_ING = 4;//退出匹配中
private static RandomPkManager manager;
private int min = -1;
private int sec = -1;
private int min = -1;//匹配计时器 分钟
private int sec = -1;//匹配计时器 秒钟
private int status = PK_STATUS_DEFAULT;
private Timer timer;
private TimerTask task;
private List<OnRandomPkTimer> randomPkTimer = new ArrayList<>();
private String pkUid;
private final List<OnRandomPkTimer> randomPkTimer = new ArrayList<>();//监听器集合
private String pkUid;//对方房间ID
private RankPkInfoBean rankPkInfoBean;//排位赛信息
Handler handler = new Handler(Looper.getMainLooper());
private RandomPkManager() {
getRankInfo();
initTask();
}
@@ -43,23 +49,35 @@ public class RandomPkManager {
return manager;
}
/**
* 添加监听器
*/
public void addOnRandomPkTimer(OnRandomPkTimer randomPkTimer) {
if (randomPkTimer != null) {
this.randomPkTimer.add(randomPkTimer);
}
}
/**
* 移除监听器
*/
public void unregisterOnRandomPkTimer(OnRandomPkTimer randomPkTimer) {
if (randomPkTimer != null) {
this.randomPkTimer.remove(randomPkTimer);
}
}
/**
* 初始化参数
*/
private void initVal() {
min = -1;
sec = -1;
}
/**
* 初始化任务
*/
private void initTask() {
if (task != null) {
return;
@@ -86,11 +104,20 @@ public class RandomPkManager {
};
}
/**
* 格式化匹配时间
*/
public String getTimer() {
return String.format(Locale.CHINA, "%02d:%02d", min, sec);
}
/**
* 对方拒绝,开始下一轮匹配
*/
private void nextPk() {
if (status != PK_STATUS_REQUEST && status != PK_STATUS_REFUSE) {
return;
}
LiveNetManager.get(CommonAppContext.getTopActivity())
.randomPK(new HttpCallback<String>() {
@Override
@@ -108,6 +135,16 @@ public class RandomPkManager {
});
}
/**
* 是否为排位赛模式
*/
public boolean isRankModel() {
return rankPkInfoBean != null && rankPkInfoBean.isRankPKTime();
}
/**
* 开始匹配
*/
public boolean start() {
if (status == PK_STATUS_START) {
ToastUtil.show("PK中");
@@ -126,28 +163,55 @@ public class RandomPkManager {
timer.schedule(task, 0, 1000);
return true;
}
private void getRankInfo(){
LiveNetManager.get(CommonAppContext.getTopActivity())
.getRankPkInfoBean(new HttpCallback<RankPkInfoBean>() {
@Override
public void onSuccess(RankPkInfoBean data) {
rankPkInfoBean = data;
}
@Override
public void onError(String error) {
}
});
}
/**
* 通知所有监听者,开始退出匹配
*/
private void callEndPkStart() {
for (OnRandomPkTimer pkTimer : randomPkTimer) {
pkTimer.onPkEndStart();
}
}
/**
* 通知所有监听者,退出匹配倒计时
*/
private void callEndPkTimer(String time) {
for (OnRandomPkTimer pkTimer : randomPkTimer) {
pkTimer.onPkEndTimer(time);
}
}
/**
* 通知所有监听者,退出匹配成功
*/
private void callEndPkSuccess() {
for (OnRandomPkTimer pkTimer : randomPkTimer) {
pkTimer.onPkEndSuccess();
}
status = PK_STATUS_DEFAULT;
rankPkInfoBean = null;
}
private int exitTimer;
/**
* 退出匹配
*/
public void exitPk() {
if (status == PK_STATUS_EXIT_ING) {
return;
@@ -175,6 +239,9 @@ public class RandomPkManager {
}, 0, 1000);
}
/**
* 退出连麦
*/
public void end() {
if (task != null) {
task.cancel();
@@ -185,10 +252,16 @@ public class RandomPkManager {
callEnd();
}
public boolean isPking() {
/**
* 是否正在匹配中
*/
public boolean isRequestPk() {
return status == PK_STATUS_REQUEST;
}
/**
* 通知所有监听者,结束匹配
*/
private void callEnd() {
if (task != null) {
task.cancel();
@@ -201,6 +274,9 @@ public class RandomPkManager {
});
}
/**
* 通知所有监听者,开始匹配
*/
private void callStart() {
if (task != null) {
task.cancel();
@@ -225,6 +301,9 @@ public class RandomPkManager {
});
}
/**
* 通知所有监听者对方拒绝PK
*/
private void callRefuse() {
handler.post(() -> {
for (OnRandomPkTimer pkTimer : randomPkTimer) {
@@ -233,8 +312,11 @@ public class RandomPkManager {
});
}
/**
* 设置PK状态
*/
public void setPkStatus(int status) {
if(status==PK_STATUS_DEFAULT){//默认状态下不响应随机PK接口
if (this.status == PK_STATUS_DEFAULT || this.status == PK_STATUS_EXIT_ING) {//默认状态下不响应随机PK接口
return;
}
this.status = status;
@@ -252,38 +334,69 @@ public class RandomPkManager {
}
}
/**
* 是否正在退出匹配中
*/
public boolean isExiting() {
return status == PK_STATUS_EXIT_ING;
}
/**
* 获取退出匹配倒计时
*/
public String getExitTimer() {
return exitTimer + "";
}
public static abstract class OnRandomPkTimer {
/**
* 匹配倒计时
*/
public void onTimer(String time) {
}
/**
* 匹配到对方
* @param pkUid 对方uid
*/
public void onStartPK(String pkUid) {
}
/**
* 匹配中
*/
public void onPking() {
}
/**
* 连麦结束
*/
public void onPkEnd() {
}
/**
* 对方拒绝PK
*/
public void onRefuse() {
}
/**
* 退出匹配倒计时
*/
public void onPkEndTimer(String time) {
}
/**
* 开始退出匹配
*/
public void onPkEndStart() {
}
/**
* 退出匹配成功
*/
public void onPkEndSuccess() {
}
}