generated from root/miduo_server
热度排行榜功能
parent
7cacd54d1c
commit
e558f4234b
|
|
@ -5,13 +5,15 @@ import com.jmfy.dao.BanFuctionDao;
|
|||
import com.jmfy.dao.ServerInfoDao;
|
||||
import com.jmfy.dao.UserInfoDao;
|
||||
import com.jmfy.model.*;
|
||||
import com.jmfy.model.vo.HeroHotRankVo;
|
||||
import com.jmfy.model.vo.RechargeInfo;
|
||||
import com.jmfy.redisProperties.RedisUserKey;
|
||||
import com.jmfy.thrift.idl.Result;
|
||||
import com.jmfy.utils.RPCClient;
|
||||
import com.jmfy.utils.RedisUtil;
|
||||
import com.jmfy.utils.*;
|
||||
import config.SItemConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.redis.core.ZSetOperations;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
|
@ -38,6 +40,8 @@ public class GmController {
|
|||
@Resource
|
||||
private BanFuctionDao banFuctionDao;
|
||||
|
||||
private int htmlLikeId = 0;
|
||||
|
||||
@RequestMapping(value = "/sendGm", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public @ResponseBody
|
||||
int publishNotice(HttpServletRequest request) throws Exception {
|
||||
|
|
@ -91,14 +95,81 @@ public class GmController {
|
|||
return 0;
|
||||
}
|
||||
|
||||
public int getHtmlLikeId() {
|
||||
htmlLikeId++;
|
||||
if (htmlLikeId >= Integer.MAX_VALUE){
|
||||
htmlLikeId = 0;
|
||||
}
|
||||
return htmlLikeId;
|
||||
}
|
||||
|
||||
private String getHeroHotRankKey(int subRank){
|
||||
return RedisUserKey.HERO_HOT_RANK + ":" + subRank;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询英雄热度排行榜
|
||||
* subRank: 不同的热度排行榜id,0表示全部
|
||||
*/
|
||||
@RequestMapping(value = "/findHeroHotRankInfo", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String findHeroHotRankInfo(ModelMap map, int subRank) {
|
||||
List<HeroHotRankVo> rankVos = new ArrayList<>();
|
||||
if (subRank == 0){
|
||||
for (int i = 1; i < 5; i++) {
|
||||
Set<ZSetOperations.TypedTuple<String>> tuples = RedisUtil.getInstence().rangeWithScores(getHeroHotRankKey(i), 0, -1);
|
||||
rankVos.addAll(packHeroHotRank(i,tuples));
|
||||
}
|
||||
}else {
|
||||
Set<ZSetOperations.TypedTuple<String>> tuples = RedisUtil.getInstence().rangeWithScores(getHeroHotRankKey(subRank), 0, -1);
|
||||
rankVos.addAll(packHeroHotRank(subRank,tuples));
|
||||
}
|
||||
map.addAttribute("subRank", subRank);
|
||||
map.addAttribute("ranks", rankVos);
|
||||
return "findHeroHotRankInfo";
|
||||
}
|
||||
|
||||
/**
|
||||
* 封装热度排行榜对象
|
||||
* @param subRankId
|
||||
* @param set
|
||||
* @return
|
||||
*/
|
||||
private List<HeroHotRankVo> packHeroHotRank(int subRankId, Set<ZSetOperations.TypedTuple<String>> set){
|
||||
ArrayList<HeroHotRankVo> rankVos = new ArrayList<>();
|
||||
if (set == null || set.isEmpty()){
|
||||
return rankVos;
|
||||
}
|
||||
Map<Integer, SItemConfig> heroMap = FileCacheUtils.itemHeroMap;
|
||||
for (ZSetOperations.TypedTuple<String> tuple : set) {
|
||||
HeroHotRankVo rankVo = new HeroHotRankVo();
|
||||
rankVo.setHtmlLikeId(getHtmlLikeId());
|
||||
rankVo.setRankId(subRankId);
|
||||
rankVo.setHeroTid(tuple.getValue());
|
||||
rankVo.setLikeNum(tuple.getScore());
|
||||
String name = heroMap.get(Integer.valueOf(tuple.getValue())).getName();
|
||||
rankVo.setHeroName(name);
|
||||
|
||||
rankVos.add(rankVo);
|
||||
}
|
||||
return rankVos;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/updateHeroHotLikeNum", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public @ResponseBody
|
||||
int updateHeroHotLikeNum(HttpServletRequest request) {
|
||||
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
|
||||
int rankId = Integer.parseInt(parameterMap.get("rankId"));
|
||||
String heroTid = parameterMap.get("heroTid");
|
||||
int likeNum = Integer.parseInt(parameterMap.get("likeNum"));
|
||||
|
||||
RedisUtil.getInstence().zSet(getHeroHotRankKey(rankId),heroTid,likeNum);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/addhero", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public @ResponseBody
|
||||
int addHero(@RequestBody HeroTemp heroTemp , HttpServletResponse response) throws Exception {
|
||||
|
||||
|
||||
String stringUid = heroTemp.getUserId();
|
||||
|
||||
for (String userId:stringUid.split("#")) {
|
||||
|
||||
CUserInfo userInfo =null;
|
||||
|
|
@ -338,28 +409,6 @@ public @ResponseBody String banFunction(HttpServletRequest request) throws Excep
|
|||
out.close();
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
String osName = System.getProperty("os.name");
|
||||
String filePath = "";
|
||||
Gson gson = new Gson();
|
||||
if (osName.matches("^(?i)Windows.*$")) {// Window 系统
|
||||
filePath = "conf/";
|
||||
} else {// Linux 系统
|
||||
filePath = "../config/";
|
||||
}
|
||||
BufferedReader in = new BufferedReader(new FileReader(filePath+"rank.txt"));
|
||||
String str;
|
||||
int i = 568;
|
||||
while ((str = in.readLine()) != null) {
|
||||
int value = Integer.valueOf(str);
|
||||
int i1 = value % 50;
|
||||
if(i1==16||i1==2||i1==38){
|
||||
System.out.println(value+" "+i);
|
||||
}
|
||||
i--;
|
||||
}
|
||||
in.close();
|
||||
}
|
||||
static class CPayOrder {
|
||||
|
||||
private String orderId;//充值回调中的pOrderId
|
||||
|
|
|
|||
|
|
@ -0,0 +1,75 @@
|
|||
package com.jmfy.model.vo;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2022/7/25 11:50:37
|
||||
* @Description:
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class HeroHotRankVo {
|
||||
private int htmlLikeId;//html用来修改td值的
|
||||
private String heroTid;//英雄模板id
|
||||
private String heroName;//英雄名称
|
||||
private double likeNum;//点赞数
|
||||
private int rankId;//排行榜id
|
||||
|
||||
public int getHtmlLikeId() {
|
||||
return htmlLikeId;
|
||||
}
|
||||
|
||||
public void setHtmlLikeId(int htmlLikeId) {
|
||||
this.htmlLikeId = htmlLikeId;
|
||||
}
|
||||
|
||||
public String getHeroTid() {
|
||||
return heroTid;
|
||||
}
|
||||
|
||||
public void setHeroTid(String heroTid) {
|
||||
this.heroTid = heroTid;
|
||||
}
|
||||
|
||||
public String getHeroName() {
|
||||
return heroName;
|
||||
}
|
||||
|
||||
public void setHeroName(String heroName) {
|
||||
this.heroName = heroName;
|
||||
}
|
||||
|
||||
public double getLikeNum() {
|
||||
return likeNum;
|
||||
}
|
||||
|
||||
public void setLikeNum(double likeNum) {
|
||||
this.likeNum = likeNum;
|
||||
}
|
||||
|
||||
public int getRankId() {
|
||||
return rankId;
|
||||
}
|
||||
|
||||
public void setRankId(int rankId) {
|
||||
this.rankId = rankId;
|
||||
}
|
||||
|
||||
public String getRankName() {
|
||||
String rankName = "未查询到";
|
||||
switch (rankId){
|
||||
case 1:
|
||||
rankName = "人气热榜";
|
||||
break;
|
||||
case 2:
|
||||
rankName = "竞技场";
|
||||
break;
|
||||
case 3:
|
||||
rankName = "七界试炼";
|
||||
break;
|
||||
case 4:
|
||||
rankName = "山河社稷";
|
||||
break;
|
||||
default: break;
|
||||
}
|
||||
return rankName;
|
||||
}
|
||||
}
|
||||
|
|
@ -43,11 +43,11 @@ public enum PowersEnum {
|
|||
ADD_WHITELIST_ACCOUNT(407,"添加白名单账号",400,1,"/html/add_white_list.html"),
|
||||
DELETE_WHITELIST(408,"删除白名单",400,1,"getAllWhites"),
|
||||
ADD_WHITELIST_ACCOUNT_HERO(409,"添加白名单账号英雄",400,1,"addHeroPage"),
|
||||
|
||||
GUILD_LIST_MANAGER(410,"公会列表管理",400,1,"initGuildList"),
|
||||
GUILD_OPERATE_PERMISSIONS(411,"权限: 操作公会",400,1,""),
|
||||
USER_INFO_QUERY1(412,"角色神将查询",400,1,"toGetHeroInfoPage"),
|
||||
SEND_MAILS(413,"发送txt里的邮件",400,1,"toSendMailInfoPage"),
|
||||
HERO_HOT_RANK(414, "英雄热度排行榜管理", 400,1,"findHeroHotRankInfo?subRank=0"),
|
||||
|
||||
// 流水日志管理500-599
|
||||
BILL_LOG(500,"流水日志管理",500,1,""),
|
||||
|
|
@ -102,16 +102,13 @@ public enum PowersEnum {
|
|||
PACKAGE_NAME_MANAGER(1401,"频道管理(公告用)",1400,1,"packageInfoList"),
|
||||
ADD_PACKAGE_NAME(1402,"权限: 添加频道",1400,0,""),
|
||||
DELETE_PACKAGE_NAME(1403,"权限: 删除频道",1400,0,""),
|
||||
|
||||
CHANNEL_NAME_MANAGER(1404,"渠道管理",1400,1,"channelInfoList"),
|
||||
ADD_CHANNEL_PERMISSIONS(1405,"权限: 添加渠道",1400,0,""),
|
||||
DELETE_CHANNEL_PERMISSIONS(1406,"权限: 删除渠道",1400,0,""),
|
||||
UPDATE_CHANNEL_PERMISSIONS(1410,"权限: 修改渠道",1400,0,""),
|
||||
|
||||
HAND_IN_MANAGER(1407,"提审服管理",1400,1,"tishenInfoList"),
|
||||
|
||||
UPDATE_CHANNEL_PERMISSIONS(1407,"权限: 修改渠道",1400,0,""),
|
||||
GAME_AGREEMENT_MANAGER(1408,"游戏协议管理",1400,1,"gameAgreementList"),
|
||||
ADD_GAME_AGREEMENT_PERMISSIONS(1409,"权限: 操作游戏协议(增,删,改)",1400,0,""),
|
||||
HAND_IN_MANAGER(1410,"提审服管理",1400,1,"tishenInfoList"),
|
||||
|
||||
HEFU(1500,"合服",1500,1,""),
|
||||
HEFU_MANAGER(1501,"合服",1500,1,"/html/hefu.html"),
|
||||
|
|
|
|||
|
|
@ -37,6 +37,11 @@ public class RedisUserKey {
|
|||
public static final String CROSS_SERVER_GROUP = "CROSS_SERVER_GROUP";//gm跨服分组,每周一重新分组生效
|
||||
|
||||
public static final String SERVER_STATE = "SERVER_STATE";//服务器状态
|
||||
|
||||
public final static String HERO_HOT_RANK = "HERO_HOT_RANK"; // 英雄热度排行榜
|
||||
|
||||
public static final String USER_LIKE_HERO_HOT_RANK = "USER_LIKE_HERO_HOT_RANK"; //玩家给点击过的英雄
|
||||
|
||||
/**
|
||||
* 在线人数 updata/min
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -11,9 +11,10 @@ public class FileCacheUtils {
|
|||
|
||||
private static String path = "";
|
||||
|
||||
public static Map<Integer,String> itemNameMap ;
|
||||
public static Map<Integer,SItemConfig> itemMap ;
|
||||
public static Map<Integer,String> itemFlowResson ;
|
||||
public static Map<Integer,String> itemNameMap;
|
||||
public static Map<Integer,SItemConfig> itemMap;
|
||||
public static Map<Integer,SItemConfig> itemHeroMap;
|
||||
public static Map<Integer,String> itemFlowResson;
|
||||
public static Map<Integer,SRechargeCommodityConfig> rechargeMap;
|
||||
|
||||
public static void initData(){
|
||||
|
|
@ -28,7 +29,8 @@ public class FileCacheUtils {
|
|||
itemFlowResson = readFile("Reason.txt");
|
||||
// 道具
|
||||
itemMap = getConfig(SItemConfig.class);
|
||||
itemNameMap = SItemConfig.toMap();
|
||||
itemNameMap = SItemConfig.toNameMap();
|
||||
itemHeroMap = SItemConfig.toHeroMap();
|
||||
System.out.printf("道具表长度,{%s}\n",itemNameMap.size());
|
||||
// 礼包
|
||||
rechargeMap = getConfig(SRechargeCommodityConfig.class);
|
||||
|
|
|
|||
|
|
@ -322,16 +322,15 @@ public class RedisUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
public static void sleep(long millis) {
|
||||
private static void sleep(long millis) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("sleep->msg=null", e.getMessage(), e);
|
||||
LOGGER.error("sleep->msg=null,{}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
public Set<ZSetOperations.TypedTuple<String>> getZsetreverseRangeWithScores(String key, long start, long end) {
|
||||
|
||||
public Set<ZSetOperations.TypedTuple<String>> rangeWithScores(String key, long start, long end) {
|
||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||
try {
|
||||
return redisObjectTemplate.opsForZSet().reverseRangeWithScores(key, start, end);
|
||||
|
|
@ -342,6 +341,17 @@ public class RedisUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
public void zSet(String key, String element, double score){
|
||||
for (int i = 0; i < MAX_TRY_TIMES; i++) {
|
||||
try {
|
||||
redisObjectTemplate.opsForZSet().add(key, element, score);
|
||||
return;
|
||||
} catch (Exception e) {
|
||||
sleep(FAILED_SLEEP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<String> lGet(String key, long start, long end) {
|
||||
try {
|
||||
return redisObjectTemplate.opsForList().range(key, start, end);
|
||||
|
|
|
|||
|
|
@ -33,12 +33,18 @@ public class SItemConfig {
|
|||
private int[][] extraReward;
|
||||
private int recycle;
|
||||
|
||||
public static Map<Integer,String> toMap(){
|
||||
public static Map<Integer,String> toNameMap(){
|
||||
Map<Integer,String> toMap = new HashMap<>();
|
||||
FileCacheUtils.itemMap.values().forEach(v-> toMap.put(v.getId(),v.getName()));
|
||||
return toMap;
|
||||
}
|
||||
|
||||
public static Map<Integer,SItemConfig> toHeroMap(){
|
||||
Map<Integer,SItemConfig> map = new HashMap<>();
|
||||
FileCacheUtils.itemMap.values().stream().filter(v->v.getItemType() == 1).forEach(v->map.put(v.getId(),v));
|
||||
return map;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE HTML>
|
||||
<html xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta name="renderer" content="webkit|ie-comp|ie-stand"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
|
||||
<meta name="viewport"
|
||||
content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
|
||||
<meta http-equiv="Cache-Control" content="no-siteapp"/>
|
||||
<script type="text/javascript" src="lib/html5shiv.js"></script>
|
||||
<script type="text/javascript" src="lib/respond.min.js"></script>
|
||||
<!-- <![endif]–>-->
|
||||
<link rel="stylesheet" type="text/css" href="h-ui/css/H-ui.min.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="h-ui.admin/css/H-ui.admin.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="lib/Hui-iconfont/1.0.8/iconfont.css"/>
|
||||
<link rel="stylesheet" type="text/css" href="h-ui.admin/skin/default/skin.css" id="skin"/>
|
||||
<link rel="stylesheet" type="text/css" href="h-ui.admin/css/style.css"/>
|
||||
<!-- 多选框 -->
|
||||
<link href="../static/searchableSelect/css/jquery.searchableSelect.css" rel="stylesheet" type="text/css">
|
||||
<link rel="stylesheet" type="text/css" href="https://apps.bdimg.com/libs/bootstrap/3.3.4/css/bootstrap.css">
|
||||
<link href="../static/bootstrap/css/bootstrap-select.css" rel="stylesheet">
|
||||
|
||||
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js"></script>
|
||||
<script>DD_belatedPNG.fix('*');</script>
|
||||
<title>服务器列表信息</title>
|
||||
</head>
|
||||
<body>
|
||||
<nav class="breadcrumb" style="padding-bottom: 45px;">
|
||||
<i class="Hui-iconfont"></i> 首页
|
||||
<span class="c-gray en">></span> GM管理
|
||||
<span class="c-gray en">></span> 英雄热度排行榜
|
||||
<a class="btn btn-success radius r" style="margin-top:3px;padding-bottom: 3px;"
|
||||
href="javascript:location.replace('/findHeroHotRankInfo?subRank=0');" title="刷新">
|
||||
<i class="Hui-iconfont"></i>
|
||||
</a>
|
||||
</nav>
|
||||
<div class="page-container" style="text-align: center">
|
||||
<h2><span style="color:red;">英雄热度排行榜</span></h2>
|
||||
<div class="text-c">
|
||||
<div style="text-align: left;">
|
||||
<select name="subRank" class="input-text" id="subRank" title="排行榜名称" style="width: 150px;"><!--下拉列表-->
|
||||
<option value="0">全部</option>
|
||||
<option value="1">人气热榜</option>
|
||||
<option value="2">竞技场</option>
|
||||
<option value="3">七界试炼</option>
|
||||
<option value="4">山河社稷</option>
|
||||
</select>
|
||||
<button class="btn btn-primary" type="button" onclick="findRank()">查询</button>
|
||||
</div>
|
||||
<div class="mt-20">
|
||||
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
|
||||
<thead>
|
||||
<tr class="text-c" >
|
||||
<th width="200">英雄ID</th>
|
||||
<th width="200">英雄</th>
|
||||
<th width="200">点赞数</th>
|
||||
<th width="200">排行榜</th>
|
||||
<th width="200">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="obj:${ranks}">
|
||||
<td th:text="${obj.getHeroTid()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getHeroName()}" style="text-align: center;"></td>
|
||||
<td th:id="'like'+${obj.getHtmlLikeId()}" th:text="${obj.getLikeNum()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getRankName()}" style="text-align: center;"></td>
|
||||
<td class="td-manage" style="text-align: center;">
|
||||
<a href="#" class="btn btn-primary radius" th:attr="id='like'+${obj.getHtmlLikeId()},rankId=${obj.getRankId()},heroTid=${obj.getHeroTid()}"
|
||||
onclick="return updateLikeNum(this)">
|
||||
<i class="Hui-iconfont"></i> 修改
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--_footer 作为公共模版分离出去-->
|
||||
<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="lib/layer/2.4/layer.js"></script>
|
||||
<script type="text/javascript" src="h-ui/js/H-ui.min.js"></script>
|
||||
<script type="text/javascript" src="h-ui.admin/js/H-ui.admin.js"></script>
|
||||
|
||||
<!--请在下方写此页面业务相关的脚本-->
|
||||
<script type="text/javascript" src="lib/My97DatePicker/4.8/WdatePicker.js"></script>
|
||||
<script type="text/javascript" src="lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
|
||||
<script type="text/javascript" src="lib/laypage/1.2/laypage.js"></script>
|
||||
<!-- 多选框 -->
|
||||
<script src="../static/bootstrap/js/bootstrap-select.js"></script>
|
||||
<script type="text/javascript" src="../static/searchableSelect/js/jquery.searchableSelect.js"></script>
|
||||
<script src="../static/searchableSelect/js/initBootstrap.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.table-sort').dataTable({
|
||||
"aaSorting": [[0, "desc"]],//默认第几个排序
|
||||
"bStateSave": true,//状态保存
|
||||
"pading": false,
|
||||
"aoColumnDefs": [
|
||||
{"orderable": false, "aTargets": [4]}// 不参与排序的列
|
||||
]
|
||||
});
|
||||
|
||||
// 删除服务器列表
|
||||
function updateLikeNum(obj) {
|
||||
var likeId = $(obj).attr("id");
|
||||
var rankId = $(obj).attr("rankId");
|
||||
var heroTid = $(obj).attr("heroTid");
|
||||
var likeNum = window.prompt("请输入数字:");
|
||||
|
||||
var regPos = /(^[1-9]\d*$)/; //判断是否是数字。
|
||||
if (!regPos.test(likeNum)){
|
||||
alert("输入内容包含字符,操作失败!");
|
||||
return false;
|
||||
}
|
||||
if (likeNum >= 2147483647) {
|
||||
alert("输入数字太大,操作失败!");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data: {
|
||||
"rankId" : rankId,
|
||||
"heroTid" : heroTid,
|
||||
"likeNum" : likeNum
|
||||
},
|
||||
url: "/updateHeroHotLikeNum",
|
||||
success: function (data) {
|
||||
if (data === 1) {
|
||||
alert("操作成功");
|
||||
document.getElementById(likeId).innerText = likeNum;
|
||||
}
|
||||
if (data === 0) {
|
||||
alert("操作失败");
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 查询排行榜信息
|
||||
function findRank() {
|
||||
var subRank = $("#subRank").val().toString();
|
||||
window.location = "/findHeroHotRankInfo?subRank=" + subRank;
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -261,7 +261,7 @@
|
|||
type: "POST",
|
||||
data: {
|
||||
"serverId" : serverId,
|
||||
"status": status2,
|
||||
"status": status2
|
||||
},
|
||||
url: "/serverListEdit",
|
||||
success: function (data) {
|
||||
|
|
|
|||
|
|
@ -27,7 +27,14 @@
|
|||
</div>
|
||||
<div style="margin-left: 20px;font-size: 18px">
|
||||
<div>
|
||||
<h2 style="color: red" class="f-36">更新日志[2022-7-13]</h2>
|
||||
<h2 style="color: red" class="f-36">更新日志[2022-7-27]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、“GM管理”标签下添加“英雄热度排行榜”页面,用来查看或修改游戏内英雄热度排行榜的数据<br>
|
||||
2、“英雄热度排行榜”支持分排行榜类型查询,每次刷新默认查询全部榜单<br>
|
||||
3、点赞数修改:(数字必须为正整数,并且不超过int最大值)<br>
|
||||
</p>
|
||||
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-7-13]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、“服务器管理”标签下添加“批量修改服务器信息”页面,用来做服务器的批量修改,包含全部状态服务器<br>
|
||||
2、“服务器信息”界面的 批量修改跨服id输入框 移动到 “批量修改服务器信息” 界面下,修改服务器状态选择框还在原位<br>
|
||||
|
|
|
|||
Loading…
Reference in New Issue