Merge branch 'dh_dev_gm0621' into jieling

master
duhui 2021-06-30 13:48:00 +08:00
commit db81995f57
44 changed files with 1558 additions and 440 deletions

View File

@ -40,7 +40,6 @@ public class WebSecurityConfig extends WebMvcConfigurerAdapter{
addInterceptor.excludePathPatterns("/error");
addInterceptor.excludePathPatterns("/login**");
addInterceptor.excludePathPatterns("/req/**");
addInterceptor.excludePathPatterns("/registerInit");
addInterceptor.addPathPatterns("/**");
}

View File

@ -96,34 +96,91 @@ public class CdkInfoController {
return cdkInfoDao.deleteCdk(goodsId);
}
// public String findCdkInfosssss (ModelMap map , HttpServletRequest request) throws Exception {
// HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
// int serverId = Integer.parseInt(parameterMap.get("serverId"));
// String cdkNum = parameterMap.get("cdkNum");
// CdkInfo cdkInfo = cdkInfoDao.findCdkInfoBuyId(cdkNum);
// if (cdkInfo == null){
// return "useCDKinfo";
// }
// SCdkInfo scdkInfo = cdkInfoDao.getScdkInfo(cdkInfo.getGoodsId());
// if (scdkInfo == null){
// return "useCDKinfo";
// }
// List<CdkUseInfo> cdkUseInfoList = cdkInfoDao.findCdkUseInfoById(serverId,cdkNum);
// List<UseCDKInfoVo> useCDKInfoVoList = new ArrayList<>();
// for (CdkUseInfo cdkUseInfo : cdkUseInfoList) {
// UseCDKInfoVo useCDKInfoVo = new UseCDKInfoVo();
// useCDKInfoVo.setUserId(cdkUseInfo.getUid());
// GSUser gsUser = gsUserDao.findUserInfo(cdkUseInfo.getServerId(), cdkUseInfo.getUid());
// useCDKInfoVo.setUserName(gsUser.getPlayerManager().getNickName());
// useCDKInfoVo.setOpenId(gsUser.getPlayerManager().getOpenId());
// useCDKInfoVo.setGoodsName(scdkInfo.getGoodsName());
// useCDKInfoVo.setUseTime(JsonUtil.timeStamp2Date(String.valueOf(cdkUseInfo.getCreateTime())));
// useCDKInfoVoList.add(useCDKInfoVo);
// }
// map.put("useCDKinfo",useCDKInfoVoList);
// return "useCDKinfo";
// }
@RequestMapping(value = "/findCdkInfo", method = {RequestMethod.POST, RequestMethod.GET})
public String findCdkInfo (ModelMap map , HttpServletRequest request) throws Exception {
public String findCdkInfo (ModelMap map, HttpServletRequest request) throws Exception {
String path;
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
int serverId = Integer.parseInt(parameterMap.get("serverId"));
String cdkNum = parameterMap.get("cdkNum");
CdkInfo cdkInfo = cdkInfoDao.findCdkInfoBuyId(cdkNum);
if (cdkInfo == null){
return "useCDKinfo";
int type = Integer.valueOf(parameterMap.get("type"));
List<CdkUseInfo> cdkUseInfo;
if (type == 1){
path = "queryUserInfoByCdk";
String cdkId = parameterMap.get("cdkId");
cdkUseInfo = cdkInfoDao.findCdkUseInfo(cdkId);
}
SCdkInfo scdkInfo = cdkInfoDao.getScdkInfo(cdkInfo.getGoodsId());
if (scdkInfo == null){
return "useCDKinfo";
else if (type == 2){
path = "queryCdkInfoByUser";
String userId = parameterMap.get("userId");
cdkUseInfo = cdkInfoDao.findCdkUseInfoByUId(Integer.valueOf(userId));
}
List<CdkUseInfo> cdkUseInfoList = cdkInfoDao.findCdkUseInfoById(serverId,cdkNum);
List<UseCDKInfoVo> useCDKInfoVoList = new ArrayList<>();
for (CdkUseInfo cdkUseInfo : cdkUseInfoList) {
UseCDKInfoVo useCDKInfoVo = new UseCDKInfoVo();
useCDKInfoVo.setIsData(1);
useCDKInfoVo.setUserId(cdkUseInfo.getUid());
GSUser gsUser = gsUserDao.findUserInfo(cdkUseInfo.getServerId(), cdkUseInfo.getUid());
useCDKInfoVo.setUserName(gsUser.getPlayerManager().getNickName());
useCDKInfoVo.setOpenId(gsUser.getPlayerManager().getOpenId());
useCDKInfoVo.setGoodsName(scdkInfo.getGoodsName());
useCDKInfoVo.setUseTime(JsonUtil.timeStamp2Date(String.valueOf(cdkUseInfo.getCreateTime())));
useCDKInfoVoList.add(useCDKInfoVo);
else {
throw new Exception("type is error !!!");
}
map.put("useCDKinfo",useCDKInfoVoList);
return "useCDKinfo";
List<UseCDKInfoVo> vos = new ArrayList<>(voToCdk(cdkUseInfo));
map.put("useCdkInfo",vos);
return path;
}
/**
* vo
* @param useInfos
* @return
*/
private List<UseCDKInfoVo> voToCdk(List<CdkUseInfo> useInfos){
List<UseCDKInfoVo> list = new ArrayList<>();
useInfos.forEach(v->{
UseCDKInfoVo infoVo = new UseCDKInfoVo();
try {
// 礼包信息
infoVo.setCdkId(v.getCdk());
infoVo.setUseTime(DateUtil.stampToTime(v.getCreateTime()));
// 玩家信息
GSUser gsUser = gsUserDao.findUserInfo(v.getServerId(), v.getUid());
infoVo.setUserId(v.getUid());
infoVo.setUserName(gsUser.getPlayerManager().getNickName());
infoVo.setOpenId(gsUser.getPlayerManager().getOpenId());
// 服务器信息
ServerInfo serverinfo = serverInfoDao.getServerinfo(String.valueOf(v.getServerId()));
infoVo.setServerId(v.getServerId());
infoVo.setServerName(v.getServerId()+"-"+serverinfo.getName());
// 礼包码信息
CdkInfo cdkInfo = cdkInfoDao.findCdkInfoBuyId(v.getCdk());
SCdkInfo scdkInfo = cdkInfoDao.getScdkInfo(cdkInfo.getGoodsId());
infoVo.setGoodsId(scdkInfo.getId());
infoVo.setGoodsName(scdkInfo.getGoodsName());
} catch (Exception e) {
e.printStackTrace();
}
list.add(infoVo);
});
return list;
}
/**

View File

@ -0,0 +1,151 @@
package com.jmfy.controller;
import com.jmfy.dao.CUserDao;
import com.jmfy.dao.GameAgreementDao;
import com.jmfy.model.CAdmin;
import com.jmfy.model.GameAgreement;
import com.jmfy.model.vo.PowersEnum;
import com.jmfy.utils.JsonUtil;
import com.jmfy.utils.SeqUtils;
import com.sun.javaws.exceptions.ErrorCodeResponseException;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.swing.text.html.Option;
import java.util.HashMap;
import java.util.List;
import java.util.Optional;
/**
* @Author hj
* @Description http
**/
@SuppressWarnings("ALL")
@Controller
public class GameAgreementController {
@Resource
private GameAgreementDao agreementDao;
@Resource
private CUserDao cUserDao;
@Resource
private SeqUtils seqUtils;
/**
*
* @param map
* @return
*/
@RequestMapping(value = "/gameAgreementList", method = {RequestMethod.POST, RequestMethod.GET})
public String getGameAgreementList(ModelMap map){
try {
List<GameAgreement> infoList = agreementDao.getGameAgreementList();
map.addAttribute("infoList",infoList);
} catch (Exception e) {
e.printStackTrace();
}
return "gameAgreement";
}
/**
*
* @param map
* @param id
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/gameAgreementToUpdate", method = {RequestMethod.POST, RequestMethod.GET})
public String gameAgreementToUpdate(ModelMap map, String id, HttpServletRequest request) throws Exception {
// 验证权限
boolean verifyPower = verifyPower(request, PowersEnum.ADD_GAME_AGREEMENT_PERMISSIONS);
if (!verifyPower){
throw new Exception("not permissions...");
}
GameAgreement agreement = Optional.ofNullable(agreementDao.getGameAgreementById(id)).orElse(new GameAgreement());
map.addAttribute("agreement",agreement);
return "updateGameAgreement";
}
/**
*
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/updateGameAgreement", method = {RequestMethod.POST, RequestMethod.GET})
public @ResponseBody
int updateGameAgreement(@RequestBody GameAgreement agreement, HttpServletRequest request) throws Exception {
HashMap<String, String> map = JsonUtil.getInstence().getParameterMap(request);
// 验证权限
boolean verifyPower = verifyPower(request, PowersEnum.ADD_PACKAGE_NAME);
if (!verifyPower){
return 2;
}
GameAgreement gameAgreement = agreementDao.getGameAgreementById(agreement.getId());
if (gameAgreement == null){
agreementDao.insert(agreement);
}else {
agreementDao.update(agreement);
}
return 1;
}
/**
*
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value = "/deleteGameAgreement", method = {RequestMethod.POST, RequestMethod.GET})
public @ResponseBody
int deleteGameAgreement(HttpServletRequest request) throws Exception {
HashMap<String, String> map = JsonUtil.getInstence().getParameterMap(request);
// 验证权限
boolean verifyPower = verifyPower(request, PowersEnum.DELETE_PACKAGE_NAME);
if (!verifyPower){
return 2;
}
// 获取id
String id = Optional.ofNullable(map.get("id")).orElse("");
GameAgreement byId = agreementDao.getGameAgreementById(id);
if (byId == null){
return 0;
}
// 删除
agreementDao.delete(byId);
return 1;
}
/**
*
* @param request
* @param powersEnum
* @return
*/
private boolean verifyPower(HttpServletRequest request, PowersEnum... powersEnum) throws Exception {
String username = (String) request.getSession().getAttribute("username");
if (username == null){
return false;
}
CAdmin admin = cUserDao.findAdmin(username);
if (admin == null){
return false;
}
for (PowersEnum anEnum : powersEnum) {
if (!admin.getPowers().contains(anEnum.getId())){
return false;
}
}
return true;
}
}

View File

@ -39,32 +39,10 @@ public class HttpRequestController {
public String getFightRecord (HttpServletRequest request, HttpServletResponse response) throws Exception {
// 玩家id和战斗id玩家id_服务器id_战斗类型_时间戳
String uid = request.getParameter("uid");
String fightid = request.getParameter("fightid");
String fightId = request.getParameter("fightid");
// 拼接参数
String cmd = "fightrecord " + fightid;
// 读库找到玩家信息
CUserInfo cUserInfo = userInfoDao.findUserInfoById(uid);
// 获取玩家服务器ip和端口
String rpcString = RedisUtil.getInstence().getObject(RedisUserKey.LOGIC_SERVER_INFO, String.valueOf(cUserInfo.getServerid()), String.class, -1);
if (null == rpcString) {
return "获取玩家服务器端口失败服务器id错误";
}
// ip
String thriftIp = rpcString.split(":")[0];
// 端口
String thriftPort = rpcString.split(":")[1];
if (thriftIp == null || thriftIp.isEmpty() || null == thriftPort || thriftPort.isEmpty()) {
return "获取玩家服务器端口为空";
}
// 通信游戏服
Result result = RPCClient.gmSend(cmd, thriftIp, thriftPort);
if (result.getResultCode() != 0) {
LOGGER.error("->userid:{},fightId:{}",uid,fightid);
LOGGER.error("->code:{},result:{}",result.resultCode,result.getResultMsg());
return "游戏服返回战报记录数据结果失败";
}
// 返回
return result.getResultMsg() == null ? "":result.getResultMsg();
String cmd = "fightrecord one " + fightId;
return sendGm(uid,cmd);
}
/**
@ -76,29 +54,9 @@ public class HttpRequestController {
*/
@RequestMapping(value = "/clearFightRecord", method = {RequestMethod.POST, RequestMethod.GET})
public String clearFightRecord (HttpServletRequest request, HttpServletResponse response) throws Exception {
String uid = request.getParameter("uid");
String cmd = "fightrecord delete";
CUserInfo cUserInfo = userInfoDao.findUserInfoById(uid);
String rpcString = RedisUtil.getInstence().getObject(RedisUserKey.LOGIC_SERVER_INFO, String.valueOf(cUserInfo.getServerid()), String.class, -1);
if (null == rpcString) {
return "获取玩家服务器端口失败服务器id错误";
}
String thriftIp = rpcString.split(":")[0];
String thriftPort = rpcString.split(":")[1];
if (thriftIp == null || thriftIp.isEmpty() || null == thriftPort || thriftPort.isEmpty()) {
return "获取玩家服务器端口为空";
}
Result result = RPCClient.gmSend(cmd, thriftIp, thriftPort);
if (result.getResultCode() != 0) {
LOGGER.error("->userid:{}",uid);
LOGGER.error("->code:{},result:{}",result.resultCode,result.getResultMsg());
return "游戏服返回战报记录数据结果失败";
}
return "ok";
return sendGm(uid,cmd);
}
/**
@ -110,13 +68,20 @@ public class HttpRequestController {
*/
@RequestMapping(value = "/getAllFightRecord", method = {RequestMethod.POST, RequestMethod.GET})
public String getAllFightRecord (HttpServletRequest request, HttpServletResponse response) throws Exception {
String uid = request.getParameter("uid");
String cmd = "fightrecord all " + uid;
return sendGm(uid,cmd);
}
/**
* gm
* @param uid
* @param cmd
* @return
* @throws Exception
*/
private String sendGm(String uid, String cmd) throws Exception {
CUserInfo cUserInfo = userInfoDao.findUserInfoById(uid);
String rpcString = RedisUtil.getInstence().getObject(RedisUserKey.LOGIC_SERVER_INFO, String.valueOf(cUserInfo.getServerid()), String.class, -1);
if (null == rpcString) {
return "获取玩家服务器端口失败服务器id错误";
@ -128,11 +93,11 @@ public class HttpRequestController {
}
Result result = RPCClient.gmSend(cmd, thriftIp, thriftPort);
if (result.getResultCode() != 0) {
LOGGER.error("->userid:{}",uid);
LOGGER.error("->code:{},result:{}",result.resultCode,result.getResultMsg());
LOGGER.error("获取战报返回错误,cmd:{},code:{},result:{}",cmd,result.resultCode,result.getResultMsg());
return "游戏服返回战报记录数据结果失败";
}
return result.getResultMsg();
return result.getResultMsg() == null ? "":result.getResultMsg();
}
}

View File

@ -2,7 +2,9 @@ package com.jmfy.controller;
import com.jmfy.WebSecurityConfig;
import com.jmfy.dao.CUserDao;
import com.jmfy.dao.ChannelInfoDao;
import com.jmfy.model.CAdmin;
import com.jmfy.model.ChannelInfo;
import com.jmfy.model.vo.IdentityEnum;
import com.jmfy.model.vo.IdentityVo;
import com.jmfy.model.vo.PowersEnum;
@ -13,10 +15,12 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.*;
import java.util.stream.Collectors;
/**
* Created by huangds on 2017/10/24.
@ -25,6 +29,8 @@ import java.util.*;
public class LoginController {
@Resource
private CUserDao cUserDao;
@Resource
private ChannelInfoDao channelInfoDao;
static final String ROOT = "root";
@ -50,7 +56,6 @@ public class LoginController {
/**
*
* @param userName
* @param password
* @param session
* @param map
* @return
@ -73,6 +78,7 @@ public class LoginController {
if (verify) {
session.setAttribute(WebSecurityConfig.SESSION_KEY, userName);
map.put("admin",admin);
map.put("sidebar",PowersVo.create2(admin.getPowers()));
return "index";
} else {
return "redirect:/login";
@ -96,9 +102,16 @@ public class LoginController {
*/
private void rootAccount(CAdmin admin) throws Exception {
if (ROOT.equals(admin.getUserName())){
// 权限
Set<Integer> allPowers = PowersEnum.getAllPowers();
// 渠道包
List<ChannelInfo> infoList = channelInfoDao.getChannelInfoList();
Set<String> collect = infoList.stream().map(ChannelInfo::getId).collect(Collectors.toSet());
// 赋予root账号全部权限
admin.setPowers(allPowers);
admin.setChannelPack(collect);
// 赋予root账号总管理员权限
admin.setIdentity(IdentityEnum.SYSTEM_ADMIN.getId());
cUserDao.updateUser(admin);
@ -164,26 +177,29 @@ public class LoginController {
* 3:
* @throws Exception
*/
@PostMapping("/registerInit")
public @ResponseBody int registerInit() throws Exception {
@PostConstruct
public void registerInit(){
try {
// 验证账号名是否存在
CAdmin admin = cUserDao.findAdmin(ROOT);
if (admin != null){
return;
}
// 验证账号名是否存在
CAdmin admin = cUserDao.findAdmin(ROOT);
if (admin != null){
return 0;
// 初始化
admin = new CAdmin();
admin.setUserName(ROOT);
admin.setPassword("123456");
admin.setCreateTime(DateUtil.nowString());
// root账号处理
rootAccount(admin);
// 注册,入库
cUserDao.registerAdmin(admin);
System.out.println("============root账号初始化完成");
}catch (Exception e){
e.printStackTrace();
}
// 初始化
admin = new CAdmin();
admin.setUserName(ROOT);
admin.setPassword("123456");
admin.setCreateTime(DateUtil.nowString());
// root账号处理
rootAccount(admin);
// 注册,入库
cUserDao.registerAdmin(admin);
return 1;
}
/**
@ -297,6 +313,40 @@ public class LoginController {
return 1;
}
/**
*
* @param request
* @return
* 0:
* 1:
* 2: root
* @throws Exception
*/
@RequestMapping(value = "/updateUserChannelPack", method = {RequestMethod.POST, RequestMethod.GET})
public @ResponseBody int updateUserChannelPack(HttpServletRequest request) throws Exception {
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
String id = parameterMap.get("id");
String[] packs = request.getParameterValues("pack[]");
// 查找用户
CAdmin cAdmin = cUserDao.findAdminById(id);
if (cAdmin == null){
return 0;
}
// 系统管理员账号不允许修改权限,默认拥有全部权限
if (cAdmin.getUserName().equals(ROOT)){
return 2;
}
TreeSet<String> set = new TreeSet<>();
if (packs != null){
// string数组转treeSet
set.addAll(Arrays.asList(packs));
}
cAdmin.setChannelPack(set);
// 修改
cUserDao.updateUser(cAdmin);
return 1;
}
/**
*
* @param map
@ -321,6 +371,34 @@ public class LoginController {
return "permission-setting";
}
/**
*
* @param map
* @param request
* @return
* @throws Exception
*/
@RequestMapping(value ="/getUserChannelPack",method = {RequestMethod.POST, RequestMethod.GET})
public String getUserChannelPack(ModelMap map,HttpServletRequest request) throws Exception {
HashMap<String, String> parameterMap = JsonUtil.getInstence().getParameterMap(request);
String id = parameterMap.get("id");
map.addAttribute("id",id);
// 赋予者的权限列表
String userName = (String) request.getSession().getAttribute("username");
CAdmin admin = cUserDao.findAdmin(userName);
List<ChannelInfo> ids = channelInfoDao.getChannelInfoListByIds(admin.getChannelPack());
map.addAttribute("channelPack", ids);
// 被赋予者的权限列表
CAdmin cAdmin = cUserDao.findAdminById(id);
List<ChannelInfo> ids1 = channelInfoDao.getChannelInfoListByIds(cAdmin.getChannelPack());
request.setAttribute("channelPack2", ids1);
return "channelPack-setting";
}
/**
*
* @param request

View File

@ -2,6 +2,7 @@ package com.jmfy.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.jmfy.WebSecurityConfig;
import com.jmfy.dao.*;
import com.jmfy.model.*;
import com.jmfy.redisProperties.RedisUserKey;
@ -42,6 +43,8 @@ public class OrderInfoController {
private GSUserDao gsUserDao;
@Resource
private ChannelInfoDao channelInfoDao;
@Resource
private CUserDao cUserDao;
@Resource
private ServerInfoDao serverInfoDao;
@ -54,6 +57,7 @@ public class OrderInfoController {
long endTime = JsonUtil.getAppointTimeInXDay(Long.parseLong(JsonUtil.date3TimeStamp(request.getParameter("endTime"))), 0);
int serverId1 = Integer.valueOf(parameterMap.get("serverId"));
String userId = parameterMap.get("userId");
String packId = parameterMap.get("packId");
String startData = JsonUtil.timeStamp2Date(String.valueOf(startTime));
List<String> days = JsonUtil.getDays(startData,JsonUtil.timeStamp2Date(String.valueOf(endTime)));
@ -71,11 +75,15 @@ public class OrderInfoController {
Map<String, CGPayOrder> map1 = RedisUtil.getInstence().getMap(RedisUserKey.C_PAYORDER_MAP + ":" + date, CGPayOrder.class, -1);
for (Map.Entry<String,CGPayOrder> entry: map1.entrySet()){
CGPayOrder cgPayOrder = entry.getValue();
String accountid = cgPayOrder.getUserId();
int serverId = cgPayOrder.getServerId();
if(serverId1 != 0 && serverId1 != serverId) {
continue;
}
String ccId = cgPayOrder.getCc_id();
if (ccId != null && !ccId.equals(packId)){
continue;
}
String accountid = cgPayOrder.getUserId();
if (userInfo!=null &&!accountid.equals(userInfo.getId())){
continue;
}
@ -97,6 +105,8 @@ public class OrderInfoController {
corder.setPayTime(payTime);
corder.setProductid(cgPayOrder.getGoodsId());
corder.setServerId(String.valueOf(serverId));
corder.setPaySdk(cgPayOrder.getPaySdk());
corder.setPlatform(cgPayOrder.getPlatform());
SRechargeCommodityConfig config;
int goodsId;
@ -135,8 +145,8 @@ public class OrderInfoController {
corder.setOpenId(gsUser.getPlayerManager().getOpenId());
}
ChannelInfo infoById = channelInfoDao.getChannelInfoById(cgPayOrder.getCc_id());
corder.setCc_id(Optional.ofNullable(infoById).map(ChannelInfo::getName).orElse(cgPayOrder.getCc_id()));
ChannelInfo infoById = channelInfoDao.getChannelInfoById(ccId);
corder.setCc_id(Optional.ofNullable(infoById).map(ChannelInfo::getName).orElse(ccId));
cgPayOrders.add(corder);
}
@ -187,6 +197,8 @@ public class OrderInfoController {
corder.setPayTime(payTime);
corder.setProductid(cgPayOrder.getGoodsId());
corder.setServerId(String.valueOf(serverId));
corder.setPaySdk(cgPayOrder.getPaySdk());
corder.setPlatform(cgPayOrder.getPlatform());
SRechargeCommodityConfig config;
int goodsId;
@ -379,13 +391,20 @@ public class OrderInfoController {
}
return JSON.parseObject(sb.toString());
}
@RequestMapping(value = "toOrderPage",method = RequestMethod.GET)
public String toOrderPage(ModelMap map){
public String toOrderPage(ModelMap map,HttpSession session){
String account = (String) session.getAttribute(WebSecurityConfig.SESSION_KEY);
try {
List<ServerInfo> allServerInfo = serverInfoDao.getAllServerInfo();
List<gameName> allGameName =serverInfoDao.getAllGameInfo();
map.addAttribute("serverInfo",allServerInfo);
List<gameName> allGameName =serverInfoDao.getAllGameInfo();
map.addAttribute("allGameName",allGameName);
CAdmin admin = cUserDao.findAdmin(account);
List<ChannelInfo> infos = channelInfoDao.getChannelInfoListByIds(admin.getChannelPack());
map.addAttribute("channelPackInfo",infos);
} catch (Exception e) {
e.printStackTrace();
}

View File

@ -370,6 +370,12 @@ public class SupportController {
if (gsUser == null){
return 0;
}
// 相同扶持账号只存在一个
SupportUser supportUser = supportUserDao.getSupportUser(user.getServerId(), user.getUserId(), user.getAccountId());
if (supportUser != null){
return 0;
}
user.setId(seqUtils.getSequence("support_user_id"));
user.setUserName(gsUser.getPlayerManager().getNickName());
Double rechargeMoney = Optional.ofNullable(gsUser.getPlayerManager().getNewRechargeInfo())

View File

@ -14,6 +14,10 @@ public interface CdkInfoDao {
List<CdkUseInfo> findCdkUseInfoById(int serverId, String cdkNum) throws Exception;
List<CdkUseInfo> findCdkUseInfo(String cdkNum) throws Exception;
List<CdkUseInfo> findCdkUseInfoByUId(int userId) throws Exception;
// long getCdkNumByGoodsId(int id) throws Exception;
long getUseCdkNumByGoodsId(int id) throws Exception;

View File

@ -7,6 +7,7 @@ package com.jmfy.dao;
import com.jmfy.model.ChannelInfo;
import java.util.List;
import java.util.Set;
public interface ChannelInfoDao {
@ -17,6 +18,13 @@ public interface ChannelInfoDao {
*/
List<ChannelInfo> getChannelInfoList() throws Exception;
/**
*
* @return
* @throws Exception
*/
List<ChannelInfo> getChannelInfoListByIds(Set<String> ids) throws Exception;
/**
* ,id
* @param id

View File

@ -0,0 +1,48 @@
package com.jmfy.dao;
/**
* @Author hj
* @Description //TODO $
**/
import com.jmfy.model.GameAgreement;
import java.util.List;
public interface GameAgreementDao {
/**
*
* @return
* @throws Exception
*/
List<GameAgreement> getGameAgreementList() throws Exception;
/**
* ,id
* @param id
* @return
* @throws Exception
*/
GameAgreement getGameAgreementById(String id) throws Exception;
/**
*
* @param gameAgreement
*/
void insert(GameAgreement gameAgreement) throws Exception;
/**
*
* @param gameAgreement
*/
void update(GameAgreement gameAgreement) throws Exception;
/**
*
* @param gameAgreement
* @throws Exception
*/
void delete(GameAgreement gameAgreement) throws Exception;
}

View File

@ -58,6 +58,7 @@ public class CUserDaoImpl implements CUserDao {
update.set("identity", cAdmin.getIdentity());
update.set("subAccount", cAdmin.getSubAccount());
update.set("power", cAdmin.getPowers());
update.set("channelPack", cAdmin.getChannelPack());
mongoTemplate.updateFirst(query,update,CAdmin.class);
}

View File

@ -40,11 +40,24 @@ public class CdkInfoDaoImpl implements CdkInfoDao {
Query query = new Query();
Criteria cr = new Criteria();
cr.andOperator(Criteria.where("cdk_num").is(cdkNum), Criteria.where("serverId").is(serverId));
// cr.andOperator(Criteria.where("goodsId").is(cdkNum));
query.addCriteria(cr);
return mongoTemplate.find(query, CdkUseInfo.class);
}
@Override
public List<CdkUseInfo> findCdkUseInfo(String cdkNum) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
Query query = new Query(Criteria.where("cdk_num").is(cdkNum));
return mongoTemplate.find(query, CdkUseInfo.class);
}
@Override
public List<CdkUseInfo> findCdkUseInfoByUId(int userId) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
Query query = new Query(Criteria.where("uid").is(userId));
return mongoTemplate.find(query, CdkUseInfo.class);
}
//
// @Override
// public long getCdkNumByGoodsId(int id) throws Exception {
@ -73,7 +86,6 @@ public class CdkInfoDaoImpl implements CdkInfoDao {
Query query = new Query();
Criteria cr = new Criteria();
cr.andOperator(Criteria.where("goodsId").is(goodsId));
// cr.andOperator(Criteria.where("goodsId").is(goodsId),Criteria.where("status").is(0));
query.addCriteria(cr);
return mongoTemplate.find(query,CdkInfo.class);
}

View File

@ -13,7 +13,9 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
@Component
public class ChannelInfoDaoImpl implements ChannelInfoDao {
@ -28,6 +30,13 @@ public class ChannelInfoDaoImpl implements ChannelInfoDao {
return mongoTemplate.find(query, ChannelInfo.class);
}
@Override
public List<ChannelInfo> getChannelInfoListByIds(Set<String> ids) throws Exception {
List<ChannelInfo> infoList = getChannelInfoList();
infoList.removeIf(v->!ids.contains(v.getId()));
return infoList;
}
@Override
public ChannelInfo getChannelInfoById(String id) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);

View File

@ -0,0 +1,61 @@
package com.jmfy.dao.impl;
/**
* @Author hj
* @Description // 游戏登陆界面 协议管理
**/
import com.jmfy.dao.GameAgreementDao;
import com.jmfy.model.Constant;
import com.jmfy.model.GameAgreement;
import com.jmfy.utils.Connect;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.List;
@Component
public class GameAgreementDaoImpl implements GameAgreementDao {
@Resource
private Connect connect;
@Override
public List<GameAgreement> getGameAgreementList() throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
Query query = new Query();
return mongoTemplate.find(query, GameAgreement.class);
}
@Override
public GameAgreement getGameAgreementById(String id) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
Query query = new Query(Criteria.where("_id").is(id));
return mongoTemplate.findOne(query, GameAgreement.class);
}
@Override
public void insert(GameAgreement gameAgreement) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
mongoTemplate.insert(gameAgreement);
}
@Override
public void update(GameAgreement gameAgreement) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
Query query = new Query(Criteria.where("_id").is(gameAgreement.getId()));
Update update = new Update();
update.set("instructions",gameAgreement.getInstructions());
update.set("privacy",gameAgreement.getPrivacy());
mongoTemplate.upsert(query,update,GameAgreement.class);
}
@Override
public void delete(GameAgreement gameAgreement) throws Exception {
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
mongoTemplate.remove(gameAgreement);
}
}

View File

@ -45,6 +45,11 @@ public class CAdmin {
*/
@Field(value = "power")
private Set<Integer> powers = new TreeSet<>();
/**
*
*/
@Field(value = "channelPack")
private Set<String> channelPack = new TreeSet<>();
/********************************************* setter and getter ***********************************************/
@ -115,4 +120,12 @@ public class CAdmin {
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public Set<String> getChannelPack() {
return channelPack;
}
public void setChannelPack(Set<String> channelPack) {
this.channelPack = channelPack;
}
}

View File

@ -46,6 +46,17 @@ public class CGPayOrder {
@Field(value = "cc_id")
private String cc_id;
/**
* sdk
*/
@Field(value = "pay_sdk")
private String paySdk;
/**
* Android or ios
*/
@Field(value = "platform")
private String platform;
public String getOrderId() {
return orderId;
@ -142,4 +153,20 @@ public class CGPayOrder {
public void setCc_id(String cc_id) {
this.cc_id = cc_id;
}
public String getPaySdk() {
return paySdk;
}
public void setPaySdk(String paySdk) {
this.paySdk = paySdk;
}
public String getPlatform() {
return platform;
}
public void setPlatform(String platform) {
this.platform = platform;
}
}

View File

@ -7,7 +7,11 @@ import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
@Document(collection = "cdk_use_info")
@CompoundIndexes({@CompoundIndex(name = "cdk_num_serverId_index", def = "{'cdk_num': 1, 'serverId': 1}")})
@CompoundIndexes({
@CompoundIndex(name = "cdk_num_serverId_index", def = "{'cdk_num': 1, 'serverId': 1}"),
@CompoundIndex(name = "cdk_num_index", def = "{'cdk_num': 1}"),
@CompoundIndex(name = "uid_index", def = "{'uid': 1}")
})
public class CdkUseInfo {
@Id

View File

@ -32,6 +32,10 @@ public class Corder {
private String cc_id;
@Fields("账号id")
private String openId;
@Fields(value = "支付sdk")
private String paySdk;
@Fields(value = "平台")
private String platform;
public String getAccountid() {
return accountid;
@ -144,4 +148,20 @@ public class Corder {
public void setOpenId(String openId) {
this.openId = openId;
}
public String getPaySdk() {
return paySdk;
}
public void setPaySdk(String paySdk) {
this.paySdk = paySdk;
}
public String getPlatform() {
return platform;
}
public void setPlatform(String platform) {
this.platform = platform;
}
}

View File

@ -0,0 +1,61 @@
package com.jmfy.model;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
/**
*
* @author Administrator
* @date 2015/8/13
*/
@Document(collection = "game_agreement")
public class GameAgreement {
@Id
private String id;
@Field("instructions")
private String instructions;
@Field("privacy")
private String privacy;
public GameAgreement(String id, String instructions, String privacy) {
this.id = id;
this.instructions = instructions;
this.privacy = privacy;
}
public GameAgreement(String id) {
this.id = id;
}
public GameAgreement() {
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getInstructions() {
return instructions;
}
public void setInstructions(String instructions) {
this.instructions = instructions;
}
public String getPrivacy() {
return privacy;
}
public void setPrivacy(String privacy) {
this.privacy = privacy;
}
}

View File

@ -1,6 +1,7 @@
package config;
import com.jmfy.utils.FileCacheUtils;
import com.jmfy.utils.JsonUtil;
import com.jmfy.utils.Table;
import java.util.*;
@ -70,11 +71,22 @@ public class SRechargeCommodityConfig {
sdkRechargeCommodityConfigMap.put(sRechargeCommodityConfig.getRechargeId(),sRechargeCommodityConfig);
sdkRechargeCommodityConfigMap.put(sRechargeCommodityConfig.getRechargeId2(),sRechargeCommodityConfig);
sdkRechargeCommodityConfigMap.put(sRechargeCommodityConfig.getRechargeId3(),sRechargeCommodityConfig);
}
}
public String getSupportInfo() {
String[] itemIds = new String[baseReward.length];
String[] itemNums = new String[baseReward.length];
for (int i = 0; i < baseReward.length; i++) {
itemIds[i] = String.valueOf(baseReward[i][0]);
itemNums[i] = String.valueOf(baseReward[i][1]);
}
String reward = JsonUtil.getInstence().getReward(itemIds, itemNums, true);
return id + " , " + name + " : " + price + " ( " + reward + " ) ";
}
public int getId() { return id; }
public String getRechargeId() { return rechargeId; }

View File

@ -8,84 +8,93 @@ import java.util.*;
*/
public enum PowersEnum {
// 用户管理100-199
ACCOUNT_MANAGER(100,"用户管理",100),
ACCOUNT_LIST(101,"用户列表",100),
ADD_ACCOUNT(102,"权限: 添加用户",100),
ACCOUNT_MANAGER(100,"用户管理",100,1,""),
ACCOUNT_LIST(101,"用户列表",100,1,"findMemberList"),
ADD_ACCOUNT(102,"权限: 添加用户",100,0,""),
// 服务器管理200-299
SERVER_MANAGER(200,"服务器管理",200),
SERVER_INFO(201,"服务器信息",200),
SERVER_REGISTER(202,"服务器注册查询",200),
ADD_SERVER(203,"添加服务器",200),
ALL_SERVER_SETTING(204,"全服配置",200),
SERVER_MANAGER(200,"服务器管理",200,1,""),
SERVER_INFO(201,"服务器信息",200,1,"findServerInfo"),
SERVER_REGISTER(202,"服务器注册查询",200,1,"serverNumberInfo"),
ADD_SERVER(203,"添加服务器",200,1,"/html/addServer.html"),
ALL_SERVER_SETTING(204,"全服配置",200,1,"serverCfgInfo"),
// 序列号管理300-399
SERIAL_NUMBER_MANAGER(300,"序列号管理",300),
SERIAL_NUMBER_GIFT_CREATE(301,"序列号礼包生成",300),
SERIAL_NUMBER_CREATE(302,"序列号生成",300),
SERIAL_NUMBER_QUERY(303,"序列号查询",300),
SERIAL_NUMBER_MANAGER(300,"序列号管理",300,1,""),
SERIAL_NUMBER_GIFT_CREATE(301,"序列号礼包生成",300,1,"toAddCDKGoodsPage"),
SERIAL_NUMBER_CREATE(302,"序列号生成",300,1,"toCDKBuild"),
SERIAL_NUMBER_QUERY(303,"序列号查询",300,1,"/html/findCDKInfo.html"),
// GM管理400-499
GM_MANAGER(400,"GM管理",400),
SINGLE_MAIL(401,"单人,多人邮件",400),
ALL_SERVER_MAIL(402,"全服邮件",400),
SEND_HORSE_RACE_LAMP(403,"发送跑马灯",400),
SEND_NOTICE(404,"发送公告",400),
SEND_GM(405,"发送GM",400),
NOTICE_INFO(406,"公告信息",400),
ADD_WHITELIST_ACCOUNT(407,"添加白名单账号",400),
DELETE_WHITELIST(408,"删除白名单",400),
ADD_WHITELIST_ACCOUNT_HERO(409,"添加白名单账号英雄",400),
PACKAGE_NAME_MANAGER(410,"频道管理",400),
ADD_PACKAGE_NAME(411,"权限: 添加频道",400),
DELETE_PACKAGE_NAME(412,"权限: 删除频道",400),
GUILD_LIST_MANAGER(413,"公会列表管理",400),
GUILD_OPERATE_PERMISSIONS(414,"权限: 操作公会",400),
CHANNEL_NAME_MANAGER(415,"渠道管理",400),
ADD_CHANNEL_PERMISSIONS(416,"权限: 添加渠道",400),
DELETE_CHANNEL_PERMISSIONS(417,"权限: 删除渠道",400),
HAND_IN_MANAGER(418,"提审服管理",400),
GM_MANAGER(400,"GM管理",400,1,""),
SINGLE_MAIL(401,"单人,多人邮件",400,1,"toMailPage?type=1"),
ALL_SERVER_MAIL(402,"全服邮件",400,1,"toMailPage?type=2"),
SEND_HORSE_RACE_LAMP(403,"发送跑马灯",400,1,"toMailPage?type=3"),
SEND_NOTICE(404,"发送公告",400,1,"sendSysNotice"),
SEND_GM(405,"发送GM",400,1,"toMailPage?type=4"),
NOTICE_INFO(406,"公告信息",400,1,"noticeInfos"),
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"),
PACKAGE_NAME_MANAGER(410,"频道管理",400,1,"packageInfoList"),
ADD_PACKAGE_NAME(411,"权限: 添加频道",400,0,""),
DELETE_PACKAGE_NAME(412,"权限: 删除频道",400,0,""),
GUILD_LIST_MANAGER(413,"公会列表管理",400,1,"initGuildList"),
GUILD_OPERATE_PERMISSIONS(414,"权限: 操作公会",400,1,""),
CHANNEL_NAME_MANAGER(415,"渠道管理",400,1,"channelInfoList"),
ADD_CHANNEL_PERMISSIONS(416,"权限: 添加渠道",400,0,""),
DELETE_CHANNEL_PERMISSIONS(417,"权限: 删除渠道",400,0,""),
HAND_IN_MANAGER(418,"提审服管理",400,1,"tishenInfoList"),
GAME_AGREEMENT_MANAGER(419,"游戏协议管理",400,1,"gameAgreementList"),
ADD_GAME_AGREEMENT_PERMISSIONS(420,"权限: 操作游戏协议(增,删,改)",400,0,""),
// 流水日志管理500-599
BILL_LOG(500,"流水日志管理",500),
ITEM_LOG(501,"道具日志",500),
ORDER_LIST(502,"订单列表",500),
DOWNLOADS_ORDER_LIST(503,"下载订单列表",500),
BILL_LOG(500,"流水日志管理",500,1,""),
ITEM_LOG(501,"道具日志",500,1,"toFlowPage"),
ORDER_LIST(502,"订单列表",500,1,"toOrderPage"),
DOWNLOADS_ORDER_LIST(503,"下载订单列表",500,1,"toExporOrderPage"),
// 封禁管理,封禁管理600-699
BANNED_MANAGER(600,"封禁管理",600),
BANNED_LIST(601,"封禁列表",600),
BANNED_OPERATION(602,"禁言/踢下线/禁登陆",600),
UPDATE_USERNAME(603,"修改角色名",600),
// BANNER_ACCOUNT_BY_OPENID(604,"封号(openId)",600),
BANNED_MANAGER(600,"封禁管理",600,1,""),
BANNED_LIST(601,"封禁列表",600,1,"bannedList"),
BANNED_OPERATION(602,"禁言/踢下线/禁登陆",600,1,"toGameTitle?type=1"),
UPDATE_USERNAME(603,"修改角色名",600,1,"toGameTitle?type=2"),
// BANNER_ACCOUNT_BY_OPENID(604,"封号(openId)",600,1,""),
// 信息管理700-799
INFO_MANAGER(700,"信息管理",700),
USER_INFO_QUERY(701,"角色信息查询",700),
INFO_MANAGER(700,"信息管理",700,1,""),
USER_INFO_QUERY(701,"角色信息查询",700,1,"toGetuserInfoPage"),
// 问卷管理800-899
QUESTIONNAIRE_MANAGER(800,"问卷管理",800),
ADD_WRITE(801,"新增编辑",800),
QUESTIONNAIRE_QUERY(802,"问卷查询",800),
QUESTIONNAIRE_MANAGER(800,"问卷管理",800,1,""),
ADD_WRITE(801,"新增编辑",800,1,"/html/question.html"),
QUESTIONNAIRE_QUERY(802,"问卷查询",800,1,"/html/getquestInfo.html"),
// 邮件审核901-999
MAIL_AUDIT(900,"邮件审核",900),
SYSTEM_MAIL_AUDIT(901,"系统邮件审核",900),
SINGLE_MAIL_AUDIT(902,"个人邮件审核",900),
MAIL_AUDIT_JURISDICTION(903,"权限: 邮件审核权限",900),
MAIL_AUDIT(900,"邮件审核",900,1,""),
SYSTEM_MAIL_AUDIT(901,"系统邮件审核",900,1,"getMailListToCheck?type=1"),
SINGLE_MAIL_AUDIT(902,"个人邮件审核",900,1,"getMailListToCheck?type=2"),
MAIL_AUDIT_JURISDICTION(903,"权限: 邮件审核权限",900,0,""),
// 聊天信息管理1000-1099
CHAT_INFO_MANAGER(1000,"聊天信息管理",1000),
CHAT_INFO_QUERY(1001,"聊天信息查询",1000),
CHAT_INFO_MANAGER(1000,"聊天信息管理",1000,1,""),
CHAT_INFO_QUERY(1001,"聊天信息查询",1000,1,"chatInfoShow"),
// 扶持功能1100-1199
SUPPORT_MANAGER(1100,"扶持功能",1100),
APPLY_FOR(1101,"申请扶持",1100),
AUDIT_SUPPORT(1102,"审核扶持",1100),
GS_ACCOUNT_MANAGER(1103,"GS账号管理",1100),
SUPPORT_PLAN_SELECT(1104,"扶持进度查看",1100),
PASS_SUPPORT_PERMISSIONS(1105,"权限: 通过扶持权限",1100),
DELETE_SUPPORT_ACCOUNT_PERMISSIONS(1106,"权限: 删除扶持账号",1100),
SUPPORT_MANAGER(1100,"扶持功能",1100,1,""),
APPLY_FOR(1101,"申请扶持",1100,1,"applyForSupport"),
AUDIT_SUPPORT(1102,"审核扶持",1100,1,"auditSupport"),
GS_ACCOUNT_MANAGER(1103,"GS账号管理",1100,1,"gsAccountManage"),
SUPPORT_PLAN_SELECT(1104,"扶持进度查看",1100,1,"supportPlanList"),
PASS_SUPPORT_PERMISSIONS(1105,"权限: 通过扶持权限",1100,0,""),
DELETE_SUPPORT_ACCOUNT_PERMISSIONS(1106,"权限: 删除扶持账号",1100,0,""),
;
private int id;
@ -95,6 +104,10 @@ public enum PowersEnum {
*/
private int belong;
private int show;
private String url;
private static Map<Integer,PowersEnum> powerMap = new TreeMap<>();
static {
@ -110,11 +123,12 @@ public enum PowersEnum {
}
/******************************************* getter and setter *************************************************/
PowersEnum(int id, String name, int belong) {
PowersEnum(int id, String name, int belong, int show, String url) {
this.id = id;
this.name = name;
this.belong = belong;
this.show = show;
this.url = url;
}
public int getId() {
@ -148,4 +162,20 @@ public enum PowersEnum {
public static void setPowerMap(Map<Integer, PowersEnum> powerMap) {
PowersEnum.powerMap = powerMap;
}
public int getShow() {
return show;
}
public void setShow(int show) {
this.show = show;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}

View File

@ -55,4 +55,38 @@ public class PowersVo {
}
return map;
}
public static Map<PowersEnum,List<PowersEnum>> create2(Set<Integer> powers){
Map<PowersEnum, List<PowersEnum>> map = new TreeMap<>();
// 权限为空,直接返回
if (powers == null || powers.size() <= 0){
return map;
}
for (Integer power : powers) {
// 获取权限枚举对象
PowersEnum node = PowersEnum.getPowerMap().get(power);
if (node.getBelong() == node.getId()){
continue;
}
PowersEnum master = PowersEnum.getPowerMap().get(node.getBelong());
List<PowersEnum> enums = map.getOrDefault(master, new ArrayList<>());
enums.add(node);
map.put(master,enums);
}
return map;
}
public static List<PowersEnum> create3(Set<Integer> powers){
List<PowersEnum> list = new ArrayList<>();
// 权限为空,直接返回
if (powers == null || powers.size() <= 0){
return list;
}
for (Integer power : powers) {
// 获取权限枚举对象
PowersEnum node = PowersEnum.getPowerMap().get(power);
list.add(node);
}
return list;
}
}

View File

@ -2,38 +2,92 @@ package com.jmfy.model.vo;
public class UseCDKInfoVo implements java.io.Serializable {
public int isData; // 是否有数据 0没有 1
private String cdkId;
public int userId;
private int userId;
public String openId;
private String userName;
public String userName;
private int serverId;
public String goodsName; //礼包名字
private String serverName;
public String useTime;
private String openId;
public void setIsData(int isData) {
this.isData = isData;
private int goodsId;
private String goodsName;
private String useTime;
public String getCdkId() {
return cdkId;
}
public void setCdkId(String cdkId) {
this.cdkId = cdkId;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public int getServerId() {
return serverId;
}
public void setServerId(int serverId) {
this.serverId = serverId;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public String getOpenId() {
return openId;
}
public void setOpenId(String openId) {
this.openId = openId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public int getGoodsId() {
return goodsId;
}
public void setGoodsId(int goodsId) {
this.goodsId = goodsId;
}
public String getGoodsName() {
return goodsName;
}
public void setGoodsName(String goodsName) {
this.goodsName = goodsName;
}
public String getUseTime() {
return useTime;
}
public void setUseTime(String useTime) {
this.useTime = useTime;
}

View File

@ -0,0 +1 @@
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}

View File

@ -0,0 +1,121 @@
* {
margin: 0;
padding: 0;
}
body {
/*background-color: #E4E1EA;*/
font: normal 17px/1.5 Calibri, Candara, Segoe, "Segoe UI", Optima, Arial, sans-serif;
color: #5E5F63;
}
.wrapper {
width: 200px;
margin: 20px auto;
}
p {
margin: 15px 0 5px 0;
}
li span {
display: inline-block;
vertical-align: top;
}
strong {
font-weight: bold;
}
.radio-btn input[type="radio"], .check-box input[type="checkbox"] {
visibility: hidden;
}
/*Custom checkbox*/
.check-box {
width: 22px;
height: 22px;
cursor: pointer;
display: inline-block;
margin: 2px 7px 0 0;
position: relative;
overflow: hidden;
box-shadow: 0 0 1px #ccc;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background: rgb(255, 255, 255);
background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)), color-stop(100%, rgba(237, 237, 237, 1)));
background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
border: 1px solid #ccc;
}
.check-box i {
background: url('../images/check_mark.png') no-repeat center center;
position: absolute;
left: 3px;
bottom: -15px;
width: 16px;
height: 16px;
opacity: .5;
-webkit-transition: all 400ms ease-in-out;
-moz-transition: all 400ms ease-in-out;
-o-transition: all 400ms ease-in-out;
transition: all 400ms ease-in-out;
-webkit-transform:rotateZ(-180deg);
-moz-transform:rotateZ(-180deg);
-o-transform:rotateZ(-180deg);
transform:rotateZ(-180deg);
}
.checkedBox {
-moz-box-shadow: inset 0 0 5px 1px #ccc;
-webkit-box-shadow: inset 0 0 5px 1px #ccc;
box-shadow: inset 0 0 5px 1px #ccc;
border-bottom-color: #fff;
}
.checkedBox i {
bottom: 2px;
-webkit-transform:rotateZ(0deg);
-moz-transform:rotateZ(0deg);
-o-transform:rotateZ(0deg);
transform:rotateZ(0deg);
}
/*Custom radio button*/
.radio-btn {
width: 20px;
height: 20px;
display: inline-block;
float: left;
margin: 3px 7px 0 0;
cursor: pointer;
position: relative;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
border-radius: 100%;
border: 1px solid #ccc;
box-shadow: 0 0 1px #ccc;
background: rgb(255, 255, 255);
background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)), color-stop(100%, rgba(237, 237, 237, 1)));
background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
}
.checkedRadio {
-moz-box-shadow: inset 0 0 5px 1px #ccc;
-webkit-box-shadow: inset 0 0 5px 1px #ccc;
box-shadow: inset 0 0 5px 1px #ccc;
}
.radio-btn i {
border: 1px solid #E1E2E4;
width: 10px;
height: 10px;
position: absolute;
left: 4px;
top: 4px;
-webkit-border-radius: 100%;
-moz-border-radius: 100%;
border-radius: 100%;
}
.checkedRadio i {
background-color: #898A8C;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 291 B

View File

@ -0,0 +1,32 @@
/*
Custom checkbox and radio button - Jun 18, 2013
(c) 2013 @ElmahdiMahmoud
license: http://www.opensource.org/licenses/mit-license.php
*/
// radio
$('input[name="radio-btn"]').wrap('<div class="radio-btn"><i></i></div>');
$(".radio-btn").on('click', function () {
var _this = $(this),
block = _this.parent().parent();
block.find('input:radio').attr('checked', false);
block.find(".radio-btn").removeClass('checkedRadio');
_this.addClass('checkedRadio');
_this.find('input:radio').attr('checked', true);
});
// checkbox
$('input[name="check-box"]').wrap('<div class="check-box"><i></i></div>');
$.fn.toggleCheckbox = function () {
this.attr('checked', !this.attr('checked'));
};
$('.check-box').on('click', function () {
$(this).find(':checkbox').toggleCheckbox();
$(this).toggleClass('checkedBox');
});
function checkClick(id) {
var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
document.getElementById(id).dispatchEvent(e); //只要id 就好
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -20,23 +20,27 @@
<script>DD_belatedPNG.fix('*');</script>
<script th:src="@{/js/jquery-1.8.3.js}"></script>
<![endif]-->
<title>序列查询</title>
<title>序列查询</title>
</head>
<body>
<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 序列號管理 <span class="c-gray en">&gt;</span> 序列號查询 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>
<nav class="breadcrumb">
<i class="Hui-iconfont">&#xe67f;</i> 首页
<span class="c-gray en">&gt;</span> 序列号管理
<span class="c-gray en">&gt;</span> 序列号查询
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" >
<i class="Hui-iconfont">&#xe68f;</i>
</a>
</nav>
<div class="page-container" style="text-align: center">
<h1><span style="color:red;">序列號查询</span></h1>
<div style="height: 50px"></div>
<div class="text-c">
<form class="addScd" target="_self" action="/findCdkInfo" onsubmit="return cdkAdd()">
<input type="text" class="input-text" style="width:250px" placeholder="服务器id" id="serverId" name="serverId"><br>
<span class="SERVERID"></span><br>
<input type="text" class="input-text" style="width:250px" placeholder="序列号id" id="cdkNum" name="cdkNum"><br><br>
<span class="CDKNUM"></span><br>
<!--<input type="text" class="input-text" style="width:250px" placeholder="生成数量" name="num">-->
<button type="submit" class="btn btn-success" ><i class="Hui-iconfont"></i> 序列号查询</button>
</form>
</div>
<h1 style="color:red;margin-bottom: 50px;">序列号查询</h1>
<div class="row cl" style="margin-bottom: 20px;">
<input type="text" class="input-text" style="width:250px;float: left; margin: 45px 0 0 600px;" placeholder="序列号Id" id="cdkId" name="cdkId"><br><br>
<button onClick="return findCdk(1);" class="btn btn-primary radius" type="button" style="float: left;margin: 0 0 0 20px" ><i class="Hui-iconfont">&#xe632;</i> 查询(序列号)</button>
</div>
<div class="row cl">
<input type="text" class="input-text" style="width:250px; float: left; margin: 20px 0 0 600px;" placeholder="用户Id" id="userId" name="userId"><br>
<button onClick="return findCdk(2);" class="btn btn-primary radius" type="button" style="float: left;margin: 0 0 0 20px" ><i class="Hui-iconfont">&#xe632;</i> 查询(用 户)</button>
</div>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="../lib/jquery/1.9.1/jquery.min.js"></script>
@ -47,21 +51,22 @@
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="../lib/datatables/1.10.0/jquery.dataTables.min.js"></script>
<script type="text/javascript">
function cdkAdd() {
var serverId = $("#serverId").val();
var cdkNum = $("#cdkNum").val();
var erroCode = $('.SERVERID');
if (serverId === '' || serverId == null) {
erroCode.html('<span style="color: red; ">serverID不能为空!</span>');
return false;
}
if (cdkNum === '' || cdkNum == null) {
var erroCode = $('.CDKNUM');
erroCode.html('<span style="color: red; ">序列号不能为空!</span>');
return false;
}
return true;
}
function findCdk(type) {
var cdkId = $("input[name='cdkId']").val();
if ((cdkId === '' || cdkId == null) && type === 1){
alert("cdk查询,序列号不能为空");
return;
}
var userId = $("input[name='userId']").val();
if ((userId === '' || userId == null) && type === 2){
alert("用户查询,用户id不能为空");
return;
}
// 发送地址
window.location.href = "/findCdkInfo?type=" + type + "&cdkId=" + cdkId + "&userId=" + userId;
}
</script>
</body>
</html>

View File

@ -1,6 +1,6 @@
<!--_meta 作为公共模版分离出去-->
<!DOCTYPE HTML>
<html xmlns:th="http://www.w3.org/1999/xhtml">
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8"/>
<meta name="renderer" content="webkit|ie-comp|ie-stand"/>
@ -151,7 +151,7 @@
window.location.href = '/gsAccountManage'
}
if (data === 0) {
layer.msg('注册失败!', {icon: 6, time: 1000});
layer.msg('注册失败,信息填写错误或账号已存在!', {icon: 6, time: 1000});
}
}
})

View File

@ -82,10 +82,10 @@
<div id="InputsWrapper">
<div th:each="i:${#numbers.sequence(1,20)}">
<div th:style="${i} ne 1?'display:none':''" th:id="item_+(${i})">
<select name="itemId" style="width: 150px" th:id="itemId_+(${i})"><!--下拉列表-->
<select name="itemId" th:id="itemId_+(${i})"><!--下拉列表-->
<option value="0" selected="selected">0.无物品</option>
<option th:each="item:${rechargeMap}" th:value="${item.key}"
th:text="${item.key}+.+${item.value.name}+'.['+${item.value.price}+']'"></option>
th:text="${item.value.getSupportInfo()}"></option>
</select>
<input type="text" readonly="readonly" name="itemNum" placeholder="1" th:value="1"
th:id="itemNum_+(${i})" class="input_bg" style="width: 50px;background-color: #c6c6c6;"/>

View File

@ -0,0 +1,113 @@
<!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"/>
<link rel="Bookmark" href="/favicon.ico"/>
<link rel="Shortcut Icon" href="/favicon.ico"/>
<!--[if lt IE 9]>
<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="../static/checkbox/css/style.css"/>
<link rel="stylesheet" type="text/css" href="../static/checkbox/css/reset.css"/>
<link rel="stylesheet" type="text/css" href="../static/h-ui/css/H-ui.min.css"/>
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/H-ui.admin.css"/>
<link rel="stylesheet" type="text/css" href="../static/lib/Hui-iconfont/1.0.8/iconfont.css"/>
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/skin/default/skin.css" id="skin"/>
<!-- <link rel="stylesheet" type="text/css" href="h-ui.admin/css/style.css"/>-->
<!--[if IE 6]>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js"></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>用户渠道包设置</title>
</head>
<body>
<div class="page-container">
<div style="text-align: center">
<h2><span style="color:red;">用户渠道包设置</span></h2>
</div>
<form class="form form-horizontal" id="form-article-add" method="post">
<div th:each="list:${channelPack}" style="margin:0 0 10px 100px;">
<li style="list-style: none">
<input type="checkbox" th:name="check-box" th:id="${list.getId()}"/>
<span style="font-size: 16px;" th:text="${list.getName()}"></span>
</li>
</div>
<div>
<button type="button" class="btn btn-success" style="margin: 0 0 30px 100px;" onclick="return updateChannelPackPower()" >保存设置</button>
<a class="btn btn-primary radius" href="/findMemberList" style="margin-bottom: 30px">取消设置</a>
</div>
</form>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="../static/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="../static/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="../static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="../static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="../static/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/validate-methods.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/messages_zh.js"></script>
<!-- 多选框 -->
<script type="text/javascript" src="../static/checkbox/js/checkbox.js"></script>
<script type="text/javascript" src="../static/checkbox/js/prefixfree.min.js"></script>
<script th:inline="javascript">
//当页面加载完成的时候,自动调用该方法
window.onload = function () {
//获得所要回显的值此处为100,1001,200,1400
var checkeds = [[${channelPack2}]];
//拆分为字符串数组
$('[name="check-box"]').each(function(){
for (var i = 0; i < checkeds.length; i++) {
var webId = $(this).attr("id");
var backId = checkeds[i].id;
if (webId == backId){
// $(this).find(':checkbox').toggleCheckbox();
checkClick(webId);
break;
}
}
});
};
// 修改权限
function updateChannelPackPower() {
var id = [[${id}]];
var strSel = [];
$("[name='check-box'][checked]").each(function () {
strSel.push($(this).attr("id"));
});
$.ajax({
type: "POST",
data: {
"id": id,
"pack[]": strSel
},
url: "/updateUserChannelPack",
success: function (data) {
if (data === 1) {
window.location.href = '/findMemberList'
}
if (data === 0) {
layer.msg('用户不存在,修改失败!', {icon: 6, time: 1000});
}
if (data === 2) {
layer.msg('root账号默认拥有全部权限,不能修改!', {icon: 6, time: 1000});
}
}
})
}
</script>
</body>
</html>

View File

@ -69,6 +69,16 @@
</select>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2">
<span class="c-red">*</span>
游戏名称:</label>
<div class="formControls col-xs-8 col-sm-9">
<select name="packId" class="input-text" id="packId"><!--下拉列表-->
<option th:each="pack:${channelPackInfo}" th:value="${pack.id}" th:text="${pack.name}"></option>
</select>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2">
<span class="c-red"></span>
@ -123,25 +133,29 @@
});
function findFlow() {
var erroCode = $('.SERVERID');
var serverId = $("#serverId").val();
var startTime = $("input[name='startTime']").val();
var endTime = $("input[name='endTime']").val();
if (serverId === '' || serverId == null) {
erroCode = $('.SERVERId');
erroCode.html('<span style="color: red; ">区服id不能为空!</span>');
var serverId = $("#serverId").val();
if (serverId === '' || serverId == null) {
alert("区服id不能为空!!");
return false;
}
var startTime = $("input[name='startTime']").val();
if (startTime === '' || startTime == null) {
erroCode = $('.STARTTIME');
erroCode.html('<span style="color: red; ">开始时间不能为空!</span>');
return false;
}
var endTime = $("input[name='endTime']").val();
if (endTime === '' || endTime == null) {
erroCode = $('.ENDTIME');
erroCode.html('<span style="color: red; ">结束时间不能为空!</span>');
return false;
}
var packId = $("#packId").val();
if (packId === '' || packId == null) {
alert("游戏名称不能为空!");
return false;
}
return true;
}
</script>

View File

@ -0,0 +1,121 @@
<!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"/>
<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">
<i class="Hui-iconfont">&#xe67f;</i> 首页
<span class="c-gray en">&gt;</span> gm功能
<span class="c-gray en">&gt;</span> 游戏包管理
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px"
href="javascript:location.replace(location.href);" title="刷新"><i class="Hui-iconfont">&#xe68f;</i></a>
</nav>
<div class="page-container" style="text-align: center">
<h2><span style="color:red;">游戏包管理</span></h2>
<div style="text-align: left">
<button class="btn btn-primary" type="button" id="batch" onclick="updates()">
<i class="Hui-iconfont">&#xe600;</i>新增
</button>
</div>
<div class="text-c">
<div class="mt-20">
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
<thead>
<tr class="text-c" style="width: 300px;">
<th width="200">包名</th>
<th width="300">使用说明</th>
<th width="300">隐私协议</th>
</tr>
</thead>
<tbody>
<tr th:each="obj:${infoList}">
<!--<td><input type="checkbox" value="" name=""/></td>-->
<td th:text="${obj.id}" style="text-align: center;"></td>
<td th:text="${obj.instructions}" style="text-align: center;"></td>
<td th:text="${obj.privacy}" style="text-align: center;"></td>
<td style="text-align: center; width: 300px">
<button type="button" th:id="${obj.id}" class="btn btn-primary"
onclick="return updates(this)"><i class="Hui-iconfont"></i> 编辑
</button>
<button type="button" th:id="${obj.id}" class="btn btn-primary"
onclick="return deletes(this)"><i class="Hui-iconfont"></i> 删除
</button>
</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> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<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 type="text/javascript">
$('.table-sort').dataTable({
"aaSorting": [[1, "desc"]],//默认第几个排序
"bStateSave": true,//状态保存
"pading": false,
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{"orderable": false, "aTargets": [1]}// 不参与排序的列
]
});
// 添加
function updates(obj) {
var id = $(obj).attr("id");
window.location.href = "/gameAgreementToUpdate?id=" + id;
}
// 单个审核
function deletes(obj) {
var id = $(obj).attr("id");
$.ajax({
type: "POST",
data: {
"id": id
},
url: "/deleteGameAgreement",
success: function (data) {
if (data === 1) {
layer.msg('操作成功!', {icon: 6, time: 1000});
window.location.reload();
}
if (data === 0) {
layer.msg('操作失败,数据不存在!', {icon: 6, time: 1000});
}
if (data === 2) {
layer.msg('没有权限', {icon: 6, time: 1000});
}
}
}
)
}
</script>
</body>
</html>

View File

@ -54,208 +54,29 @@
</header>
<aside class="Hui-aside">
<div class="menu_dropdown bk_2">
<div th:each="pos:${admin}">
<!-- 用户管理 -->
<div th:if="${#lists.contains(pos.powers,100)}">
<dl id="menu-member">
<dt><i class="Hui-iconfont">&#xe60d;</i> 用户管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,101)}">
<a data-href="findMemberList" data-title="会员列表" href="javascript:;">用户列表</a>
</li>
</ul>
</dd>
</dl>
</div>
<!-- 服务器管理 -->
<div th:if="${#lists.contains(pos.powers,200)}">
<dl id="menu-server">
<dt><i class="Hui-iconfont">&#xe64f;</i> 服务器管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,201)}"><a data-href="findServerInfo" data-title="服务器列表"
href="javascript:void(0)">服务器信息</a></li>
<li th:if="${#lists.contains(pos.powers,202)}"><a data-href="serverNumberInfo" data-title="服务器注册"
href="javascript:void(0)">服务器注册</a></li>
<li th:if="${#lists.contains(pos.powers,203)}"><a data-href="/html/addServer.html" data-title="添加服务器"
href="javascript:void(0)">添加服务器</a></li>
<li th:if="${#lists.contains(pos.powers,204)}"><a data-href="serverCfgInfo" data-title="全服配置"
href="javascript:void(0)">全服配置</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 序列号管理 -->
<div th:if="${#lists.contains(pos.powers,300)} ">
<dl id="menu-CDK">
<dt><i class="Hui-iconfont">&#xe6b4;</i> 序列号管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,301)} "><a data-href="toAddCDKGoodsPage" data-title="序列号礼包生成"
href="javascript:void(0)">序列号礼包生成</a></li>
<li th:if="${#lists.contains(pos.powers,302)} "><a data-href="toCDKBuild" data-title="序列号生成"
href="javascript:void(0)">序列号生成</a></li>
<li th:if="${#lists.contains(pos.powers,303)} "><a data-href="/html/findCDKInfo.html" data-title="序列号使用者查询"
href="javascript:void(0)">序列号查询</a></li>
</ul>
</dd>
</dl>
</div>
<!-- GM管理 -->
<div th:if="${#lists.contains(pos.powers,400)}">
<dl id="menu-GM">
<dt><i class="Hui-iconfont">&#xe64f;</i> GM管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
<div th:each="pos:${sidebar}">
<div th:each="key:${pos.getKey()}">
<dl>
<dt>
<div th:if="${key.getId() == key.getBelong()}">
<i class="Hui-iconfont">&#xe60d;</i>
<span th:text="${key.getName()}"></span>
<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
</div>
</dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,401)} "><a data-href="toMailPage?type=1" data-title="单人,多人邮件"
href="javascript:;">单人,多人邮件</a></li>
<li th:if="${#lists.contains(pos.powers,402)} "><a data-href="toMailPage?type=2" data-title="全服邮件"
href="javascript:;">全服邮件</a></li>
<li th:if="${#lists.contains(pos.powers,403)} "><a data-href="toMailPage?type=3" data-title="发送跑马灯"
href="javascript:;">发送跑马灯</a></li>
<li th:if="${#lists.contains(pos.powers,404)} "><a data-href="sendSysNotice" data-title="发送公告"
href="javascript:;">发送公告</a></li>
<li th:if="${#lists.contains(pos.powers,405)} "><a data-href="toMailPage?type=4" data-title="发送gm"
href="javascript:;">发送gm</a></li>
<li th:if="${#lists.contains(pos.powers,406)} "><a data-href="noticeInfos" data-title="公告信息"
href="javascript:void(0)">公告信息</a></li>
<li th:if="${#lists.contains(pos.powers,407)} "><a data-href="/html/add_white_list.html" data-title="添加白名单账号"
href="javascript:;">添加白名单账号</a></li>
<li th:if="${#lists.contains(pos.powers,408)} "><a data-href="getAllWhites" data-title="白名单列表"
href="javascript:void(0)">删除白名单</a></li>
<li th:if="${#lists.contains(pos.powers,409)} "><a data-href="addHeroPage" data-title="添加白名单账号英雄"
href="javascript:;">添加白名单账号英雄</a></li>
<li th:if="${#lists.contains(pos.powers,410)} "><a data-href="packageInfoList" data-title="频道管理"
href="javascript:;">频道管理</a></li>
<li th:if="${#lists.contains(pos.powers,413)} "><a data-href="initGuildList" data-title="公会列表管理"
href="javascript:;">公会列表管理</a></li>
<li th:if="${#lists.contains(pos.powers,414)} "><a data-href="channelInfoList" data-title="渠道管理"
href="javascript:;">渠道管理</a></li>
<li th:if="${#lists.contains(pos.powers,418)} "><a data-href="tishenInfoList" data-title="提审服管理" href="javascript:;">提审服管理</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 流水日志管理 -->
<div th:if="${#lists.contains(pos.powers,500)} ">
<dl id="menu-log">
<dt><i class="Hui-iconfont">&#xe621;</i> 流水日志管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,501)} "><a data-href="toFlowPage" data-title="道具日志"
href="javascript:;">道具日志</a></li>
<li th:if="${#lists.contains(pos.powers,502)} "><a data-href="toOrderPage" data-title="订单列表"
href="javascript:;">订单列表</a></li>
<li th:if="${#lists.contains(pos.powers,503)} "><a data-href="toExporOrderPage" data-title="下载订单列表"
href="javascript:;">下载订单列表</a>
<li th:each="value:${pos.getValue()}">
<a th:if="${value.getShow() == 1 && value.getUrl() != ''}"
th:attr="data-href=${value.getUrl()}, data-title=${value.getName()}"
href="javascript:;">
<span th:text="${value.getName()}"></span>
</a>
</li>
</ul>
</dd>
</dl>
</div>
<!-- 禁言/踢人/禁登录/改名 -->
<div th:if="${#lists.contains(pos.powers,600)} ">
<dl id="menu-Title">
<dt><i class="Hui-iconfont">&#xe64f;</i> 封禁管理<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
</dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,601)} "><a data-href="bannedList" data-title="封禁列表" href="javascript:;">封禁列表</a>
</li>
<li th:if="${#lists.contains(pos.powers,602)} "><a data-href="toGameTitle?type=1" data-title="禁言/踢下线/禁登录"
href="javascript:;">禁言/踢下线/禁登录</a></li>
<li th:if="${#lists.contains(pos.powers,603)} "><a data-href="toGameTitle?type=2" data-title="修改角色名"
href="javascript:;">修改角色名</a></li>
<li th:if="${#lists.contains(pos.powers,604)} "><a data-href="toGameTitle?type=3" data-title="根据openId封号"
href="javascript:;">根据openId封号</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 信息管理 -->
<div th:if="${#lists.contains(pos.powers,700)} ">
<dl id="menu-info">
<dt><i class="Hui-iconfont">&#xe62c;</i> 信息管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,701)} "><a data-href="toGetuserInfoPage" data-title="个人信息查询"
href="javascript:;">角色信息查询</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 问卷管理 -->
<div th:if="${#lists.contains(pos.powers,800)} ">
<dl id="menu-question">
<dt><i class="Hui-iconfont">&#xe64f;</i> 问卷管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,801)} "><a data-href="/html/question.html" data-title="新增问卷"
href="javascript:;">新增编辑</a></li>
<li th:if="${#lists.contains(pos.powers,802)} "><a data-href="/html/getquestInfo.html" data-title="问卷查询"
href="javascript:;">问卷查询</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 审核 -->
<div th:if="${#lists.contains(pos.powers,900)} ">
<dl id="menu-check">
<dt><i class="Hui-iconfont">&#xe64f;</i> 审核<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
</dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,901)} "><a data-href="getMailListToCheck?type=1" data-title="系统邮件审核"
href="javascript:void(0)">系统邮件审核</a></li>
<li th:if="${#lists.contains(pos.powers,902)} "><a data-href="getMailListToCheck?type=2" data-title="个人邮件审核"
href="javascript:void(0)">个人邮件审核</a>
</li>
</ul>
</dd>
</dl>
</div>
<!-- 聊天信息管理 -->
<div th:if="${#lists.contains(pos.powers,1000)} ">
<dl id="menu-ChatInfo">
<dt><i class="Hui-iconfont">&#xe64f;</i> 聊天信息管理<i
class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i></dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,1001)} "><a data-href="chatInfoShow" data-title="聊天信息查询"
href="javascript:void(0)">聊天信息查询</a></li>
</ul>
</dd>
</dl>
</div>
<!-- 扶持功能 -->
<div th:if="${#lists.contains(pos.powers,1100)} ">
<dl id="menu-support">
<dt><i class="Hui-iconfont">&#xe64f;</i> 扶持功能<i class="Hui-iconfont menu_dropdown-arrow">&#xe6d5;</i>
</dt>
<dd>
<ul>
<li th:if="${#lists.contains(pos.powers,1101)} "><a data-href="applyForSupport" data-title="申请扶持" href="javascript:;">申请扶持</a>
</li>
<li th:if="${#lists.contains(pos.powers,1102)} "><a data-href="auditSupport" data-title="审核扶持" href="javascript:;">审核扶持</a>
</li>
<li th:if="${#lists.contains(pos.powers,1103)} "><a data-href="gsAccountManage" data-title="GS账号管理"
href="javascript:;">GS账号管理</a></li>
<li th:if="${#lists.contains(pos.powers,1104)} "><a data-href="supportPlanList" data-title="扶持进度查看"
href="javascript:;">扶持进度查看</a></li>
</ul>
</dd>
</dl>
</div>
</div>
</div>
</aside>

View File

@ -39,7 +39,6 @@
<div class="formControls col-xs-8 col-xs-offset-3">
<input name="" type="submit" class="btn btn-success radius size-L" value="&nbsp;登&nbsp;&nbsp;&nbsp;&nbsp;录&nbsp;">
<input name="" type="reset" class="btn btn-default radius size-L" value="&nbsp;取&nbsp;&nbsp;&nbsp;&nbsp;消&nbsp;">
<input name="" type="button" onclick="return registerInit()" class="btn btn-primary radius size-L" value="&nbsp;注&nbsp;&nbsp;&nbsp;&nbsp;册&nbsp;">
</div>
</div>
</form>
@ -65,22 +64,6 @@
return true;
}
function registerInit() {
$.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "/registerInit",
success: function (data) {
if (data === 1) {
alert("root账号注册成功,密码:123456!");
}
if (data === 0) {
alert("root账号已注册!");
}
}
})
}
</script>
</body>
</html>

View File

@ -47,7 +47,7 @@
onclick="return updateUserPower(this)"><i class="Hui-iconfont"></i>权限设置
</button>
<button type="button" th:id="${obj.id}" class="btn btn-primary"
onclick="return districtServerPower()"><i class="Hui-iconfont"></i>区服权限
onclick="return districtServerPower(this)"><i class="Hui-iconfont"></i>区服权限
</button>
<button type="button" th:id="${obj.id}" class="btn btn-primary"
onclick="return deleteUser(this)"><i class="Hui-iconfont"></i>删除
@ -154,8 +154,9 @@
}
// 区服权限
function districtServerPower(){
alert("当前功能暂未完善,无法使用!")
function districtServerPower(obj){
var userId = $(obj).attr("id");
location.href = "/getUserChannelPack?" + "id=" + encodeURI(userId);
}
</script>

View File

@ -59,10 +59,9 @@
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script th:inline="javascript">
// Apparently click is better chan change? Cuz IE?
$('input[type="checkbox"]').change(function (e) {
$('input[type="checkbox"]').change(function () {
var checked = $(this).prop("checked"),
container = $(this).parent(),
siblings = container.siblings();
container = $(this).parent();
container.find('input[type="checkbox"]').prop({
indeterminate: false,
checked: checked

View File

@ -0,0 +1,74 @@
<!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"/>
<script type="text/javascript" src="lib/DD_belatedPNG_0.0.8a-min.js"></script>
<script>DD_belatedPNG.fix('*');</script>
<title>CDK使用信息</title>
</head>
<body>
<nav class="breadcrumb">
<a href="javascript:;" onclick="history.go(-1)"><i class="Hui-iconfont">&#xe67f;</i> 首页</a>
<span class="c-gray en">&gt;</span> 序列号管理
<span class="c-gray en">&gt;</span> 序列号查询
</nav>
<div class="page-container" style="text-align: center">
<h2><span style="color:red;">序列号使用信息</span></h2>
<div class="text-c">
<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="25"><input type="checkbox" name="" value=""/></th>-->
<th width="200">角色ID</th>
<th width="200">角色名</th>
<th width="200">玩家区服</th>
<th width="200">序列号ID</th>
<th width="200">礼包码名称</th>
</tr>
</thead>
<tr th:each="obj:${useCdkInfo}">
<td th:text="${obj.userId}" style="text-align: center;"></td>
<td th:text="${obj.userName}" style="text-align: center;"></td>
<td th:text="${obj.serverName}" style="text-align: center;"></td>
<td th:text="${obj.cdkId}" style="text-align: center;"></td>
<td th:text="${obj.goodsName}" style="text-align: center;"></td>
</tr>
</table>
</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> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<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 type="text/javascript">
$('.table-sort').dataTable({
"aaSorting": [[ 1, "desc" ]],//默认第几个排序
"bStateSave": true,//状态保存
"pading":false,
"aoColumnDefs": [
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
{"orderable":false,"aTargets":[0,4]}// 不参与排序的列
]
});
</script>
</body>
</html>

View File

@ -25,7 +25,7 @@
<span class="c-gray en">&gt;</span> 序列号查询
</nav>
<div class="page-container" style="text-align: center">
<h2><span style="color:red;">序列使用信息</span></h2>
<h2><span style="color:red;">序列使用信息</span></h2>
<div class="text-c">
<div class="mt-20">
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
@ -33,14 +33,16 @@
<tr class="text-c">
<!--<th width="25"><input type="checkbox" name="" value=""/></th>-->
<th width="200">角色ID</th>
<th width="200">角色账号</th>
<th width="200">角色名字</th>
<th width="200">礼包名称</th>
<th width="200">玩家区服</th>
<th width="200">账号ID</th>
<th width="200">角色名</th>
<th width="200">礼包名</th>
<th width="200">使用时间</th>
</tr>
</thead>
<tr th:each="obj:${useCDKinfo}">
<tr th:each="obj:${useCdkInfo}">
<td th:text="${obj.userId}" style="text-align: center;"></td>
<td th:text="${obj.serverName}" style="text-align: center;"></td>
<td th:text="${obj.openId}" style="text-align: center;"></td>
<td th:text="${obj.userName}" style="text-align: center;"></td>
<td th:text="${obj.goodsName}" style="text-align: center;"></td>

View File

@ -0,0 +1,146 @@
<!--_meta 作为公共模版分离出去-->
<!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" />
<link rel="Bookmark" href="../favicon.ico" />
<link rel="Shortcut Icon" href="../favicon.ico" />
<!--[if lt IE 9] -->
<script type="text/javascript" src="../static/lib/html5shiv.js"></script>
<script type="text/javascript" src="../static/lib/respond.min.js"></script>
<link rel="stylesheet" type="text/css" href="../static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="../static/lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="../static/h-ui.admin/css/style.css" />
<link href="../static/searchableSelect/css/jquery.searchableSelect.css" rel="stylesheet" type="text/css">
<script type="text/javascript" src="../static/lib/DD_belatedPNG_0.0.8a-min.js"></script>
<script>DD_belatedPNG.fix('*');</script>
<title>基本设置</title>
</head>
<body>
<nav class="breadcrumb">
<a href="javascript:;" onclick="history.go(-1)">
<i class="Hui-iconfont">&#xe67f;</i> 首页
</a>
<span class="c-gray en">&gt;</span> 扶持功能
<span class="c-gray en">&gt;</span> 添加游戏内协议
<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
</nav>
<div class="page-container">
<form class="form form-horizontal" id="form-article-add" action="/register" method="post"target="sendNotice">
<div id="tab-system" class="HuiTab">
<div class="tabBar cl">
<span>添加游戏内协议</span>
</div>
<div class="tabCon">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2">
<span class="c-red">*</span> 包名:
</label>
<div class="formControls col-xs-8 col-sm-9">
<label>
<input type="text" name="agreementId" placeholder="不能为空" th:value="${agreement.id}" class="input-text"/>
</label>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2">
<span class="c-red">*</span> 使用说明:
</label>
<div class="formControls col-xs-8 col-sm-9">
<label>
<input type="text" name="instructions" placeholder="可以为空" th:value="${agreement.instructions}" class="input-text"/>
</label>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-2">
<span class="c-red">*</span> 隐私条款:
</label>
<div class="formControls col-xs-8 col-sm-9">
<label>
<input type="text" name="privacy" placeholder="可以为空" th:value="${agreement.privacy}" class="input-text"/>
</label>
</div>
</div>
</div>
<div class="tabCon">
</div>
</div>
<div class="row cl" style="text-align: center" >
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
<button class="btn btn-primary radius" type="button" onclick="adds()" ><i class="Hui-iconfont">&#xe632;</i> 保存</button>
</div>
</div>
</form>
<iframe name='sendNotice' id="hidden_frame" style='display: none'></iframe>
</div>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="../static/lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="../static/lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="../static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="../static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="../static/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/jquery.validate.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/validate-methods.js"></script>
<script type="text/javascript" src="../static/lib/jquery.validation/1.14.0/messages_zh.js"></script>
<script type="text/javascript">
$(function () {
$('.skin-minimal input').iCheck({
checkboxClass: 'icheckbox-blue',
radioClass: 'iradio-blue',
increaseArea: '20%'
});
$("#tab-system").Huitab({
index: 0
});
// 模糊搜素
$('#InputsWrapper select').searchableSelect();
});
function adds() {
var id = $("input[name='agreementId']").val();
if (id === '' || id == null) {
alert("包名不能为空!!!");
return;
}
var instructions = $("input[name='instructions']").val();
var privacy = $("input[name='privacy']").val();
$.ajax({
type: "POST",
data:
JSON.stringify({
"id": id,
"instructions": instructions,
"privacy": privacy
}),
dataType: "json",
contentType:'application/json',
url: "/updateGameAgreement",
success: function (data) {
if (data === 1) {
layer.msg('成功!', {icon: 6, time: 1000});
window.location.href = '/gameAgreementList'
}
if (data === 0) {
layer.msg('失败!', {icon: 6, time: 1000});
}
}
})
}
</script>
<!--/请在上方写此页面业务相关的脚本-->
</body>
</html>

View File

@ -56,6 +56,8 @@
<th width="200">CC值</th>
<th width="200">注册时间</th>
<th width="200">账号id</th>
<th width="200">平台</th>
<th width="200">支付方式</th>
<!--<th width="240">操作</th>-->
</tr>
</thead>
@ -75,6 +77,8 @@
<td th:text="${obj.cc_id}" style="text-align: center;"></td>
<td th:text="${obj.registerTime}" style="text-align: center;"></td>
<td th:text="${obj.openId}" style="text-align: center;"></td>
<td th:text="${obj.platform}" style="text-align: center;"></td>
<td th:text="${obj.paySdk}" style="text-align: center;"></td>
</tr>
</tbody>
</table>

View File

@ -26,10 +26,12 @@
<h1><p class="f-20 text-success">戒灵后台管理台</p></h1>
</div>
<div style="margin-left: 20px;font-size: 18px">
<p style="color: red">更新日志[2021-6-9]</p>
<p>1、区服展示改为: 区服id-区服名称</p>
<p>2、gm管理添加渠道管理页签,可以添加删除渠道信息</p>
<p>2、订单页面管理,添加字段,解决导出报错问题</p>
<p style="color: red">更新日志[2021-6-28]</p>
<p>1、序列号查询功能修改优化</p>
<p>2、gm管理-->添加游戏隐私协议管理功能</p>
<p>3、扶持账号申请添加账号重复验证</p>
<p>4、用户管理-->添加渠道包管理功能</p>
<p>5、订单列表-->添加渠道权限</p>
</div>
<footer class="footer mt-20">
</footer>