青龙秘宝增加登录任务处理

DESKTOP-C3M45P4\dengdan 2025-06-14 23:46:36 +08:00
parent 8ba46fbfc3
commit 71aea7d873
5 changed files with 207 additions and 3 deletions

View File

@ -77,13 +77,17 @@ public class GetPlayerInfoHandler extends BaseHandler{
User user = UserManager.getUser(userId);
QuestionLogic.getInstence().onLogin(user);
PlayerManager playerInfoManager = user.getPlayerInfoManager();
//登录任务新增上次登录时间参数,用于部分任务记录累计登录天数用,每日登录只记录1次
long lastLoginTime = playerInfoManager.getLoginTime();
ActivityLogic.getInstance().flushForLogin(user,iSession);
GlobalDataManaager.checkNeedReFlush(iSession,user,null);
boolean flag = GlobalDataManaager.checkNeedReFlush(iSession,user,null);
GmSingleActivityLogic.getInstance().updateGmSingle(user);
BuyGoodsNewLogic.refreshWelfareState(user);
// 罗浮争锋,领取称号奖励
LuofuLogic.getInstance().takeTitleReward(user);
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.LOGIN_TIMES,0);
if(!flag){
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.LOGIN_TIMES,0,lastLoginTime);
}
user.getUserMissionManager().onGameEvent(user, GameEvent.EVERY_DAY_UPDATE,MissionType.LOGIN_TIMES,0);
long now = TimeUtils.now();
playerInfoManager.setLoginTime(now);

View File

@ -415,8 +415,9 @@ public class GlobalDataManaager implements IManager {
getFunctionOfTimeResponse=builder.build();
}
public static void checkNeedReFlush(ISession session,User user,PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception {
public static boolean checkNeedReFlush(ISession session,User user,PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception {
// 需要隔天刷新的字段统一在这里处理
boolean flag = false;
if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) {
//活动刷新
ActivityLogic.getInstance().flushEveryDay(user,fBuilder);
@ -502,8 +503,12 @@ public class GlobalDataManaager implements IManager {
user.getPlayerInfoManager().getNewRechargeInfo().ClearDayPushMap();
// 清空当天在线时间
user.getPlayerInfoManager().setDayOfOnlineTime(0);
//刷新登录任务
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.LOGIN_TIMES,0,user.getPlayerInfoManager().getLoginTime());
flag = true;
}
user.getPlayerInfoManager().setLoginTime(TimeUtils.now());
return flag;
}
public static void flushGoodsTimes(User user){

View File

@ -67,6 +67,7 @@ public class UserMissionManager extends MongoBase {
private CumulationData treasureCumulationData = new CumulationData();
private CumulationData treasureWeekCumulationData = new CumulationData();
private CumulationData treasureMonthCumulationData = new CumulationData();
private CumulationData treasureLifeCumulationData = new CumulationData();//青龙秘宝终身任务数据
private CumulationData sevenHappyCumulationData = new CumulationData();
private CumulationData achievementMap = new CumulationData();
private CumulationData jadeDynastyCumulationData = new CumulationData();//破阵诛仙日数据
@ -210,6 +211,7 @@ public class UserMissionManager extends MongoBase {
if(sTreasureTaskConfigs!=null){
CumulationData.Result weekResult = treasureWeekCumulationData.updateData(missionType, parm);
CumulationData.Result monthResult = treasureMonthCumulationData.updateData(missionType, parm);
CumulationData.Result lifeResult = treasureLifeCumulationData.updateData(missionType, parm);
if(weekResult!=null){
weekResult.setMissionTimeType(2);
treasureMissionIdsType.calCumulationDataResult(user,weekResult,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureWeekCumulationData);
@ -222,6 +224,12 @@ public class UserMissionManager extends MongoBase {
updateString("treasureMonthCumulationData",treasureMonthCumulationData);
updateString("treasureMissionIdsType",treasureMissionIdsType);
}
if(lifeResult!=null){
lifeResult.setMissionTimeType(4);
treasureMissionIdsType.calCumulationDataResult(user,lifeResult,missionTypeEnumListMap.get(GameMisionType.TREASUREMISSION),treasureLifeCumulationData);
updateString("treasureLifeCumulationData",treasureLifeCumulationData);
updateString("treasureMissionIdsType",treasureMissionIdsType);
}
}
}
@ -413,6 +421,11 @@ public class UserMissionManager extends MongoBase {
updateString("treasureMonthCumulationData", treasureMonthCumulationData);
}
public void setTreasureLifeCumulationData(CumulationData treasureLifeCumulationData) {
this.treasureLifeCumulationData = treasureLifeCumulationData;
updateString("treasureLifeCumulationData", treasureLifeCumulationData);
}
public void setSevenHappyCumulationData(CumulationData sevenHappyCumulationData) {
this.sevenHappyCumulationData = sevenHappyCumulationData;
updateString("sevenHappyCumulationData", sevenHappyCumulationData);
@ -493,6 +506,10 @@ public class UserMissionManager extends MongoBase {
return treasureMonthCumulationData;
}
public CumulationData getTreasureLifeCumulationData() {
return treasureLifeCumulationData;
}
public void setMissingRoomMissionType(MissingRoomMissionType missingRoomMissionType) {
this.missingRoomMissionType = missingRoomMissionType;
updateString("missingRoomMissionType",missingRoomMissionType);

View File

@ -3,12 +3,21 @@ package com.ljsd.jieling.logic.mission.data;
import com.ljsd.jieling.logic.dao.CumulationData;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mission.MissionType;
import util.TimeUtils;
public class LoginTimeManager extends AbstractDataManager {
@Override
public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) {
int dayTh = (int) parm[1];
//有上次登录时间参数,说明单日登录只记录1次,跨天才叠加
if(parm[2]!= null){
long lastLoginTime = (long)parm[2];
//今天已经登录过了,不记录次数
if(TimeUtils.isSameDay(System.currentTimeMillis(),lastLoginTime)){
return new CumulationData.Result(missionType);
}
}
data.loginTimesDay.put(dayTh, data.loginTimesDay.getOrDefault(dayTh,0) + 1);
return new CumulationData.Result(missionType);
}

View File

@ -0,0 +1,169 @@
package com.ljsd.util;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class HttpUtils {
public static String doPost(String url, Map<String,String> parms) throws IOException {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
List<NameValuePair> nvps =getFromMap(parms);
httpPost.setEntity(new UrlEncodedFormEntity(nvps));
CloseableHttpResponse response2 = httpclient.execute(httpPost);
try {
HttpEntity entity = response2.getEntity();
return EntityUtils.toString(entity);
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
response2.close();
}
}
public static List<NameValuePair> getFromMap(Map<String,String> parms){
List<NameValuePair> nvps = new ArrayList<NameValuePair>(parms.size());
for(Map.Entry<String,String> item : parms.entrySet()){
nvps.add(new BasicNameValuePair(item.getKey(), item.getValue()));
}
return nvps;
}
public static String httpGetRequest(String httpUrl){
HttpURLConnection connection = null;
InputStream is = null;
BufferedReader br = null;
String result = null;// 返回结果字符串
try {
// 创建远程url连接对象
URL url = new URL(httpUrl);
// 通过远程url连接对象打开一个连接强转成httpURLConnection类
connection = (HttpURLConnection) url.openConnection();
// 设置连接方式get
connection.setRequestMethod("GET");
// 设置连接主机服务器的超时时间15000毫秒
connection.setConnectTimeout(15000);
// 设置读取远程返回的数据时间60000毫秒
connection.setReadTimeout(60000);
// 发送请求
connection.connect();
// 通过connection连接获取输入流
if (connection.getResponseCode() == 200) {
is = connection.getInputStream();
// 封装输入流is并指定字符集
br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
// 存放数据
StringBuffer sbf = new StringBuffer();
String temp = null;
while ((temp = br.readLine()) != null) {
sbf.append(temp);
sbf.append("\r\n");
}
result = sbf.toString();
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭资源
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != is) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
connection.disconnect();// 关闭远程连接
}
return result;
}
/**
* URL POST
*
* @param url
* URL
* @param param
* name1=value1&name2=value2
* @return
*/
public static String sendPost(String url, JSONObject param) {
PrintWriter out = null;
BufferedReader in = null;
String result = "";
try {
URL realUrl = new URL(url);
// 打开和URL之间的连接
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
// 获取URLConnection对象对应的输出流
out = new PrintWriter(conn.getOutputStream());
// 发送请求参数
out.print(param);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输出流、输入流
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}