generated from root/miduo_server
gm自动返利活动
parent
f13d8f1404
commit
6533b95e8a
|
|
@ -1,9 +1,9 @@
|
|||
package com.jmfy.controller;
|
||||
|
||||
import com.jmfy.dao.AutoRechargeBackActivityDao;
|
||||
import com.jmfy.dao.ActivityDao;
|
||||
import com.jmfy.dao.ServerInfoDao;
|
||||
import com.jmfy.model.AutoRechargeBackActivity;
|
||||
import com.jmfy.model.AutoRechargeBackMission;
|
||||
import com.jmfy.model.ARBActivity;
|
||||
import com.jmfy.model.ARBMission;
|
||||
import com.jmfy.model.ServerInfo;
|
||||
import com.jmfy.model.vo.ARBActivityTypeEnum;
|
||||
import com.jmfy.model.vo.ARBActivityTypeVo;
|
||||
|
|
@ -20,8 +20,6 @@ import javax.annotation.Resource;
|
|||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
|
|
@ -30,13 +28,13 @@ import java.util.stream.Collectors;
|
|||
* @Version 1.0
|
||||
*/
|
||||
@Controller
|
||||
public class AutoRechargeBackActivityController {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(AutoRechargeBackActivityController.class);
|
||||
public class ActivityController {
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ActivityController.class);
|
||||
|
||||
@Resource
|
||||
private ServerInfoDao serverInfoDao;
|
||||
@Resource
|
||||
private AutoRechargeBackActivityDao activityDao;
|
||||
private ActivityDao activityDao;
|
||||
|
||||
/**
|
||||
* 活动信息界面
|
||||
|
|
@ -47,7 +45,7 @@ public class AutoRechargeBackActivityController {
|
|||
@RequestMapping(value = "/findARBActivityInfos", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String findARBActivityInfos(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
String serverId = request.getParameter("serverId");
|
||||
List<AutoRechargeBackActivity> allActivityList = new ArrayList<>();
|
||||
List<ARBActivity> allActivityList = new ArrayList<>();
|
||||
// 没有serverId,获取全部活动信息
|
||||
if (StringUtil.isEmpty(serverId)){
|
||||
allActivityList = activityDao.findAllActivityList();
|
||||
|
|
@ -56,14 +54,14 @@ public class AutoRechargeBackActivityController {
|
|||
else {
|
||||
String[] serverIds = serverId.split(",");
|
||||
for (String id : serverIds) {
|
||||
allActivityList.addAll(activityDao.findServerActivityList(Integer.parseInt(id)));
|
||||
allActivityList.addAll(activityDao.findServerActivityList(id));
|
||||
}
|
||||
}
|
||||
|
||||
List<ServerInfo> serverInfos = serverInfoDao.getAllServerInfo();
|
||||
map.addAttribute("serverInfos", serverInfos);
|
||||
map.addAttribute("allActivityList", allActivityList);
|
||||
return "autoRechargeBackActivityInfos";
|
||||
return "ARBActivitys";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -72,18 +70,18 @@ public class AutoRechargeBackActivityController {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/cutUpdateARBActivity", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String cutUpdateARBActivity(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
@RequestMapping(value = "/jumpUpdateARBActivity", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String jumpUpdateARBActivity(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
String activityId = request.getParameter("activityId");
|
||||
if (!StringUtil.isEmpty(activityId)){
|
||||
AutoRechargeBackActivity oneActivity = activityDao.findOneActivity(Integer.parseInt(activityId));
|
||||
ARBActivity oneActivity = activityDao.findOneActivity(activityId);
|
||||
map.addAttribute("activity", oneActivity);
|
||||
}
|
||||
List<ARBActivityTypeVo> typeList = new ArrayList<>(ARBActivityTypeEnum.getVoMap().values());
|
||||
map.addAttribute("typeList", typeList);
|
||||
List<ServerInfo> serverInfos = serverInfoDao.getAllServerInfo();
|
||||
map.addAttribute("serverInfos", serverInfos);
|
||||
return "updateAutoRechargeBackActivity";
|
||||
return "updateARBActivity";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -94,8 +92,8 @@ public class AutoRechargeBackActivityController {
|
|||
*/
|
||||
@PostMapping(value = "/updateARBActivity")
|
||||
public @ResponseBody int
|
||||
updateARBActivity(@RequestBody AutoRechargeBackActivity activity) throws Exception {
|
||||
activityDao.insertAndUpdateActivity(activity);
|
||||
updateARBActivity(@RequestBody ARBActivity activity) throws Exception {
|
||||
activityDao.uporsetActivity(activity);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -109,7 +107,7 @@ public class AutoRechargeBackActivityController {
|
|||
public @ResponseBody int
|
||||
removeARBActivity(HttpServletRequest request) throws Exception {
|
||||
String activityId = request.getParameter("activityId");
|
||||
activityDao.deleteActivity(Integer.parseInt(activityId));
|
||||
activityDao.deleteActivity(activityId);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -119,24 +117,47 @@ public class AutoRechargeBackActivityController {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/findARBActivityMissionInfos", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String findARBActivityMissionInfos(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
@RequestMapping(value = "/findARBMissions", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String findARBMissions(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
String activityId = request.getParameter("activityId");
|
||||
List<AutoRechargeBackMission> missions = activityDao.findActivityMission(Integer.parseInt(activityId));
|
||||
List<ARBMission> missions = activityDao.findActivityMissionList(activityId);
|
||||
map.addAttribute("missions", missions);
|
||||
return "autoRechargeBackActivityMissionInfos";
|
||||
map.addAttribute("activityId", activityId);
|
||||
return "ARBMissions";
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改档位信息
|
||||
* @param mission
|
||||
* @param request
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/updateARBackActivityMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
@RequestMapping(value = "/addARBMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public @ResponseBody int
|
||||
updateARBackActivityMission(@RequestBody AutoRechargeBackMission mission) throws Exception {
|
||||
activityDao.insertAndUpdateActivityMission(mission);
|
||||
addARBMission(HttpServletRequest request) throws Exception {
|
||||
ARBMission mission = new ARBMission();
|
||||
String title = request.getParameter("title");
|
||||
String rechargeValue = request.getParameter("rechargeValue");
|
||||
String propId = request.getParameter("propId");
|
||||
String propNum = request.getParameter("propNum");
|
||||
String activityId = request.getParameter("activityId");
|
||||
// id
|
||||
mission.setTitle(title);
|
||||
mission.setRechargeValue(Integer.parseInt(rechargeValue));
|
||||
// reward
|
||||
String[] ids = propId.split(",");
|
||||
String[] nums = propNum.split(",");
|
||||
int[][] reward = new int[ids.length][2];
|
||||
for (int i = 0; i < ids.length; i++) {
|
||||
reward[i][0] = Integer.parseInt(ids[i]);
|
||||
reward[i][1] = Integer.parseInt(nums[i]);
|
||||
}
|
||||
mission.setReward(reward);
|
||||
// activity
|
||||
ARBActivity oneActivity = activityDao.findOneActivity(activityId);
|
||||
mission.setActivity(oneActivity);
|
||||
|
||||
activityDao.addMission(mission);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -146,11 +167,11 @@ public class AutoRechargeBackActivityController {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/removeARBackActivityMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
@RequestMapping(value = "/removeARBMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public @ResponseBody int
|
||||
removeARBackActivityMission(HttpServletRequest request) throws Exception {
|
||||
removeARBMission(HttpServletRequest request) throws Exception {
|
||||
String missionId = request.getParameter("missionId");
|
||||
activityDao.deleteActivityMission(Integer.parseInt(missionId));
|
||||
activityDao.deleteMission(missionId);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -160,16 +181,18 @@ public class AutoRechargeBackActivityController {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping(value = "/cutUpdateARBMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String cutUpdateARBMission(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
@RequestMapping(value = "/jumpAddARBMission", method = {RequestMethod.POST, RequestMethod.GET})
|
||||
public String jumpAddARBMission(ModelMap map, HttpServletRequest request) throws Exception {
|
||||
String missionId = request.getParameter("missionId");
|
||||
if (!StringUtil.isEmpty(missionId)){
|
||||
AutoRechargeBackMission mission = activityDao.findOneActivityMission(Integer.parseInt(missionId));
|
||||
ARBMission mission = activityDao.findOneMission(missionId);
|
||||
map.addAttribute("mission", mission);
|
||||
}
|
||||
ArrayList<SItemConfig> itemList = new ArrayList<>(FileCacheUtils.itemMap.values());
|
||||
map.addAttribute("itemList",itemList);
|
||||
return "updateAutoRechargeBackMission";
|
||||
String activityId = request.getParameter("activityId");
|
||||
map.addAttribute("activityId", activityId);
|
||||
return "addARBMission";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -76,20 +76,6 @@ public class FindFlowController {
|
|||
itemFlowVo.setCount(String.valueOf(moneyFlow.getItemNum()));
|
||||
itemFlowVoList.add(itemFlowVo);
|
||||
}
|
||||
// List<ItemFlow> itemFlowList = itemDao.findItemFlowInfo(serverId,startTime,endTime,userId);
|
||||
// for (ItemFlow itemFlow:itemFlowList){
|
||||
// ItemFlowVo itemFlowVo = new ItemFlowVo();
|
||||
// itemFlowVo.setUserId(itemFlow.getUid());
|
||||
// itemFlowVo.setServerId(itemFlow.getServerId());
|
||||
// itemFlowVo.setTime(itemFlow.getTime());
|
||||
// itemFlowVo.setUserLevel(itemFlow.getLevel());
|
||||
// itemFlowVo.setItemName(getItemName(Integer.parseInt(itemFlow.getiGoodsId()),Integer.parseInt(itemFlow.getiGoodsType())));
|
||||
// itemFlowVo.setReason(getReason(itemFlow.getReason()));
|
||||
// itemFlowVo.setAfterMoney(itemFlow.getAfterCount());
|
||||
// itemFlowVo.setAddOrReduce(itemFlow.getAddOrReduce());
|
||||
// itemFlowVo.setCount(itemFlow.getCount());
|
||||
// itemFlowVoList.add(itemFlowVo);
|
||||
// }
|
||||
map.put("itemFlowVoList", itemFlowVoList);
|
||||
map.put("itemNameMap",FileCacheUtils.itemNameMap);
|
||||
return "itemFlow";
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
package com.jmfy.dao;
|
||||
|
||||
import com.jmfy.model.AutoRechargeBackActivity;
|
||||
import com.jmfy.model.AutoRechargeBackMission;
|
||||
import com.jmfy.model.ARBActivity;
|
||||
import com.jmfy.model.ARBActivity;
|
||||
import com.jmfy.model.ARBMission;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -11,14 +12,14 @@ import java.util.List;
|
|||
* @Description:
|
||||
* @Version 1.0
|
||||
*/
|
||||
public interface AutoRechargeBackActivityDao {
|
||||
public interface ActivityDao {
|
||||
|
||||
/**
|
||||
* 获取活动列表
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
List<AutoRechargeBackActivity> findAllActivityList() throws Exception;
|
||||
List<ARBActivity> findAllActivityList() throws Exception;
|
||||
|
||||
/**
|
||||
* 获取指定区服的活动列表
|
||||
|
|
@ -26,28 +27,28 @@ public interface AutoRechargeBackActivityDao {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
List<AutoRechargeBackActivity> findServerActivityList(int serverId) throws Exception;
|
||||
List<ARBActivity> findServerActivityList(String serverId) throws Exception;
|
||||
|
||||
/**
|
||||
* 获取指定区服的活动列表
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
AutoRechargeBackActivity findOneActivity(int activityId) throws Exception;
|
||||
ARBActivity findOneActivity(String activityId) throws Exception;
|
||||
|
||||
/**
|
||||
* 添加或删除活动
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
void insertAndUpdateActivity(AutoRechargeBackActivity activity) throws Exception;
|
||||
void uporsetActivity(ARBActivity activity) throws Exception;
|
||||
|
||||
/**
|
||||
* 删除活动
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteActivity(int activityId) throws Exception;
|
||||
void deleteActivity(String activityId) throws Exception;
|
||||
|
||||
/**
|
||||
* 查找活动档位
|
||||
|
|
@ -55,7 +56,7 @@ public interface AutoRechargeBackActivityDao {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
List<AutoRechargeBackMission> findActivityMission(int activityId) throws Exception;
|
||||
List<ARBMission> findActivityMissionList(String activityId) throws Exception;
|
||||
|
||||
/**
|
||||
* 查找活动档位
|
||||
|
|
@ -63,19 +64,19 @@ public interface AutoRechargeBackActivityDao {
|
|||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
AutoRechargeBackMission findOneActivityMission(int missionId) throws Exception;
|
||||
ARBMission findOneMission(String missionId) throws Exception;
|
||||
|
||||
/**
|
||||
* 添加或删除档位
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
void insertAndUpdateActivityMission(AutoRechargeBackMission mission) throws Exception;
|
||||
void addMission(ARBMission mission) throws Exception;
|
||||
|
||||
/**
|
||||
* 删除档位
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
void deleteActivityMission(int missionId) throws Exception;
|
||||
void deleteMission(String missionId) throws Exception;
|
||||
}
|
||||
|
|
@ -0,0 +1,123 @@
|
|||
package com.jmfy.dao.impl;
|
||||
|
||||
import com.jmfy.dao.ActivityDao;
|
||||
import com.jmfy.model.ARBActivity;
|
||||
import com.jmfy.model.ARBMission;
|
||||
import com.jmfy.model.Constant;
|
||||
import com.jmfy.utils.Connect;
|
||||
import com.jmfy.utils.StringUtil;
|
||||
import org.bson.types.ObjectId;
|
||||
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.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2021/5/20 10:48
|
||||
* @Description:
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Component
|
||||
public class ActivityDaoImpl implements ActivityDao {
|
||||
|
||||
@Resource
|
||||
private Connect connect;
|
||||
|
||||
@Override
|
||||
public List<ARBActivity> findAllActivityList() throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
List<ARBActivity> all = mongoTemplate.findAll(ARBActivity.class);
|
||||
if (all == null){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ARBActivity> findServerActivityList(String serverId) throws Exception {
|
||||
List<ARBActivity> resultList = new ArrayList<>();
|
||||
for (ARBActivity activity : findAllActivityList()) {
|
||||
if (activity.getServerIds().contains(serverId)){
|
||||
resultList.add(activity);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ARBActivity findOneActivity(String activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(activityId));
|
||||
return mongoTemplate.findOne(query,ARBActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void uporsetActivity(ARBActivity activity) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
// 添加
|
||||
ARBActivity oneActivity = findOneActivity(activity.getId());
|
||||
if (oneActivity == null){
|
||||
mongoTemplate.insert(activity);
|
||||
return;
|
||||
}
|
||||
// 修改
|
||||
Update update = new Update();
|
||||
if (!StringUtil.isEmpty(activity.getName())){
|
||||
update.set("name",activity.getName());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getDescription())){
|
||||
update.set("description",activity.getDescription());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getStartTime())){
|
||||
update.set("startTime",activity.getStartTime());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getEndTime())){
|
||||
update.set("endTime",activity.getEndTime());
|
||||
}
|
||||
if (activity.getServerIds() != null && !activity.getServerIds().isEmpty()){
|
||||
update.set("serverIds",activity.getServerIds());
|
||||
}
|
||||
Query query = new Query(Criteria.where("id").is(activity.getId()));
|
||||
mongoTemplate.updateMulti(query, update, ARBActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteActivity(String activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(activityId));
|
||||
mongoTemplate.remove(query, ARBActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ARBMission> findActivityMissionList(String activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("activity.$id").is(new ObjectId(activityId)));
|
||||
return mongoTemplate.find(query, ARBMission.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ARBMission findOneMission(String missionId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(missionId));
|
||||
return mongoTemplate.findOne(query, ARBMission.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addMission(ARBMission mission) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
mongoTemplate.insert(mission);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteMission(String missionId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(missionId));
|
||||
mongoTemplate.remove(query, ARBMission.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
package com.jmfy.dao.impl;
|
||||
|
||||
import com.jmfy.dao.AutoRechargeBackActivityDao;
|
||||
import com.jmfy.model.AutoRechargeBackActivity;
|
||||
import com.jmfy.model.AutoRechargeBackMission;
|
||||
import com.jmfy.model.Constant;
|
||||
import com.jmfy.utils.Connect;
|
||||
import com.jmfy.utils.SeqUtils;
|
||||
import com.jmfy.utils.StringUtil;
|
||||
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.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author hj
|
||||
* @Date 2021/5/20 10:48
|
||||
* @Description:
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Component
|
||||
public class AutoRechargeBackActivityDaoImpl implements AutoRechargeBackActivityDao {
|
||||
|
||||
@Resource
|
||||
private Connect connect;
|
||||
@Resource
|
||||
private SeqUtils seqUtils;
|
||||
|
||||
@Override
|
||||
public List<AutoRechargeBackActivity> findAllActivityList() throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
List<AutoRechargeBackActivity> all = mongoTemplate.findAll(AutoRechargeBackActivity.class);
|
||||
if (all == null){
|
||||
return new ArrayList<>();
|
||||
}
|
||||
return all;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AutoRechargeBackActivity> findServerActivityList(int serverId) throws Exception {
|
||||
List<AutoRechargeBackActivity> resultList = new ArrayList<>();
|
||||
for (AutoRechargeBackActivity activity : findAllActivityList()) {
|
||||
if (activity.getServerIds().contains(serverId)){
|
||||
resultList.add(activity);
|
||||
}
|
||||
}
|
||||
return resultList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AutoRechargeBackActivity findOneActivity(int activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(activityId));
|
||||
return mongoTemplate.findOne(query,AutoRechargeBackActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertAndUpdateActivity(AutoRechargeBackActivity activity) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
|
||||
// 添加
|
||||
AutoRechargeBackActivity oneActivity = findOneActivity(activity.getId());
|
||||
if (oneActivity == null){
|
||||
int activityId = seqUtils.getSequence("auto_recharge_back_activity_id");
|
||||
activity.setId(activityId);
|
||||
mongoTemplate.insert(activity);
|
||||
return;
|
||||
}
|
||||
// 修改
|
||||
Update update = new Update();
|
||||
if (!StringUtil.isEmpty(activity.getName())){
|
||||
update.setOnInsert("name",activity.getName());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getDescription())){
|
||||
update.setOnInsert("description",activity.getDescription());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getStartTime())){
|
||||
update.setOnInsert("startTime",activity.getStartTime());
|
||||
}
|
||||
if (!StringUtil.isEmpty(activity.getEndTime())){
|
||||
update.setOnInsert("endTime",activity.getEndTime());
|
||||
}
|
||||
if (activity.getServerIds() != null && !activity.getServerIds().isEmpty()){
|
||||
update.set("serverIds",activity.getServerIds());
|
||||
}
|
||||
Query query = new Query(Criteria.where("id").is(activity.getId()));
|
||||
mongoTemplate.updateMulti(query, update, AutoRechargeBackActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteActivity(int activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(activityId));
|
||||
mongoTemplate.remove(query, AutoRechargeBackActivity.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AutoRechargeBackMission> findActivityMission(int activityId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("AutoRechargeBackActivity.id").is(activityId));
|
||||
return mongoTemplate.find(query, AutoRechargeBackMission.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AutoRechargeBackMission findOneActivityMission(int missionId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(missionId));
|
||||
return mongoTemplate.findOne(query, AutoRechargeBackMission.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void insertAndUpdateActivityMission(AutoRechargeBackMission mission) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
|
||||
// 添加
|
||||
AutoRechargeBackMission oneMission = findOneActivityMission(mission.getId());
|
||||
if (oneMission == null){
|
||||
// id
|
||||
int missionId = seqUtils.getSequence("auto_recharge_back_mission_id");
|
||||
mission.setId(missionId);
|
||||
// activity
|
||||
AutoRechargeBackActivity oneActivity = findOneActivity(mission.getActivityId());
|
||||
mission.setActivity(oneActivity);
|
||||
mongoTemplate.insert(mission);
|
||||
return;
|
||||
}
|
||||
// 修改
|
||||
Update update = new Update();
|
||||
if (!StringUtil.isEmpty(mission.getTitle())){
|
||||
update.setOnInsert("title",mission.getTitle());
|
||||
}
|
||||
if (mission.getRechargeValue() >= 0){
|
||||
update.setOnInsert("rechargeValue",mission.getRechargeValue());
|
||||
}
|
||||
if (mission.getItems() != null && mission.getItems().length > 0){
|
||||
update.setOnInsert("items",mission.getItems());
|
||||
}
|
||||
Query query = new Query(Criteria.where("id").is(mission.getId()));
|
||||
mongoTemplate.updateMulti(query, update, AutoRechargeBackMission.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteActivityMission(int missionId) throws Exception {
|
||||
MongoTemplate mongoTemplate = connect.getMongoTemplete(Constant.dbName);
|
||||
Query query = new Query(Criteria.where("id").is(missionId));
|
||||
mongoTemplate.remove(query, AutoRechargeBackMission.class);
|
||||
}
|
||||
}
|
||||
|
|
@ -34,8 +34,7 @@ public class ItemDaoImpl implements ItemDao {
|
|||
query.addCriteria(Criteria.where("uid").is(param.getUserId()));
|
||||
query.addCriteria(Criteria.where("time").lte(String.valueOf(endTime)).gte(String.valueOf(startTime)));
|
||||
query.limit(10000);
|
||||
List<CItemInfo> cItemInfos = mongoTemplate.find(query, CItemInfo.class,"itemLog");
|
||||
|
||||
return cItemInfos;
|
||||
return mongoTemplate.find(query, CItemInfo.class,"itemLog");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.jmfy.model.vo.ARBActivityTypeVo;
|
|||
import com.jmfy.redisProperties.RedisUserKey;
|
||||
import com.jmfy.utils.DateUtil;
|
||||
import com.jmfy.utils.RedisUtil;
|
||||
import com.jmfy.utils.StringUtil;
|
||||
import org.springframework.data.annotation.Id;
|
||||
import org.springframework.data.mongodb.core.mapping.Document;
|
||||
|
||||
|
|
@ -20,10 +21,10 @@ import java.util.stream.Collectors;
|
|||
* @Description: 自动充值返利活动
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Document(collection = "c_auto_recharge_back_activity")
|
||||
public class AutoRechargeBackActivity {
|
||||
@Document(collection = "c_arb_activity")
|
||||
public class ARBActivity {
|
||||
@Id
|
||||
private int id;
|
||||
private String id;
|
||||
/**
|
||||
* 活动名称
|
||||
*/
|
||||
|
|
@ -47,27 +48,29 @@ public class AutoRechargeBackActivity {
|
|||
/**
|
||||
* 生效的服务器列表
|
||||
*/
|
||||
private Set<Integer> serverIds = new HashSet<>();
|
||||
private Set<String> serverIds = new HashSet<>();
|
||||
|
||||
public AutoRechargeBackActivity() {
|
||||
public ARBActivity() {
|
||||
}
|
||||
|
||||
public AutoRechargeBackActivity(int id, String name, String description, int type, String startTime, String endTime, String severStr) {
|
||||
this.id = id;
|
||||
public ARBActivity(String id, String name, String description, int type, String startTime, String endTime, String severStr) {
|
||||
if (!StringUtil.isEmpty(id)){
|
||||
this.id = id;
|
||||
}
|
||||
this.name = name;
|
||||
this.description = description;
|
||||
this.type = type;
|
||||
this.startTime = startTime;
|
||||
this.endTime = endTime;
|
||||
String[] split = severStr.split(",");
|
||||
this.serverIds = Arrays.stream(split).mapToInt(Integer::valueOf).boxed().collect(Collectors.toSet());
|
||||
this.serverIds = Arrays.stream(split).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
|
@ -132,19 +135,19 @@ public class AutoRechargeBackActivity {
|
|||
this.endTime = endTime;
|
||||
}
|
||||
|
||||
public Set<Integer> getServerIds() {
|
||||
public Set<String> getServerIds() {
|
||||
return serverIds;
|
||||
}
|
||||
|
||||
public void setServerIds(Set<Integer> serverIds) {
|
||||
public void setServerIds(Set<String> serverIds) {
|
||||
this.serverIds = serverIds;
|
||||
}
|
||||
|
||||
public String getServerNames(){
|
||||
Map<String, ServerInfo> infoMap = RedisUtil.getInstence().getMap(RedisUserKey.SERVER_INFO, ServerInfo.class, -1);
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (Integer serverId : serverIds) {
|
||||
ServerInfo info = infoMap.get(String.valueOf(serverId));
|
||||
for (String serverId : serverIds) {
|
||||
ServerInfo info = infoMap.get(serverId);
|
||||
if (info != null){
|
||||
builder.append(info.getName()).append("|");
|
||||
}
|
||||
|
|
@ -12,10 +12,10 @@ import org.springframework.data.mongodb.core.mapping.Document;
|
|||
* @Description:自动充值返利活动档位
|
||||
* @Version 1.0
|
||||
*/
|
||||
@Document(collection = "c_auto_recharge_back_mission")
|
||||
public class AutoRechargeBackMission {
|
||||
@Document(collection = "c_arb_mission")
|
||||
public class ARBMission {
|
||||
@Id
|
||||
private int id;
|
||||
private String id;
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
|
|
@ -27,25 +27,19 @@ public class AutoRechargeBackMission {
|
|||
/**
|
||||
* 道具数组
|
||||
*/
|
||||
private int[][] items;
|
||||
|
||||
/**
|
||||
* 不入库,互动id
|
||||
*/
|
||||
@Transient
|
||||
private int activityId;
|
||||
private int[][] reward;
|
||||
|
||||
/**
|
||||
* 关联查询,活动信息
|
||||
*/
|
||||
@DBRef
|
||||
private AutoRechargeBackActivity activity;
|
||||
private ARBActivity activity;
|
||||
|
||||
public int getId() {
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
|
|
@ -65,31 +59,23 @@ public class AutoRechargeBackMission {
|
|||
this.rechargeValue = rechargeValue;
|
||||
}
|
||||
|
||||
public int[][] getItems() {
|
||||
return items;
|
||||
public int[][] getReward() {
|
||||
return reward;
|
||||
}
|
||||
|
||||
public String getItemDescription() {
|
||||
return JsonUtil.showReward(items);
|
||||
public String getRewardDescription() {
|
||||
return JsonUtil.showReward(reward);
|
||||
}
|
||||
|
||||
public void setItems(int[][] items) {
|
||||
this.items = items;
|
||||
public void setReward(int[][] reward) {
|
||||
this.reward = reward;
|
||||
}
|
||||
|
||||
public AutoRechargeBackActivity getActivity() {
|
||||
public ARBActivity getActivity() {
|
||||
return activity;
|
||||
}
|
||||
|
||||
public void setActivity(AutoRechargeBackActivity activity) {
|
||||
public void setActivity(ARBActivity activity) {
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
public int getActivityId() {
|
||||
return activityId;
|
||||
}
|
||||
|
||||
public void setActivityId(int activityId) {
|
||||
this.activityId = activityId;
|
||||
}
|
||||
}
|
||||
|
|
@ -39,18 +39,16 @@ public enum PowersEnum {
|
|||
* GM管理400-499
|
||||
*/
|
||||
GM_MANAGER(400,"GM管理",400,1,""),
|
||||
SINGLE_MAIL(401,"单人,多人邮件",400,1,"toMailPage?type=1"),
|
||||
ALL_SERVER_MAIL(402,"全服邮件",400,1,"toMailPage?type=2"),
|
||||
SEND_GM(401,"发送GM",400,1,"toMailPage?type=4"),
|
||||
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,0,"addHeroPage"),
|
||||
|
||||
GUILD_LIST_MANAGER(410,"公会列表管理",400,1,"initGuildList"),
|
||||
GUILD_OPERATE_PERMISSIONS(411,"权限: 操作公会",400,1,""),
|
||||
|
||||
USER_INFO_QUERY1(412,"角色神将查询",400,0,"toGetHeroInfoPage"),
|
||||
SEND_MAILS(413,"发送txt里的邮件",400,0,"toSendMailInfoPage"),
|
||||
/**
|
||||
|
|
@ -83,9 +81,11 @@ public enum PowersEnum {
|
|||
/**
|
||||
* 邮件审核901-999
|
||||
*/
|
||||
MAIL_AUDIT(900,"邮件审核",900,1,""),
|
||||
SYSTEM_MAIL_AUDIT(901,"系统邮件审核",900,1,"getMailListToCheck?type=1"),
|
||||
SINGLE_MAIL_AUDIT(902,"个人邮件审核",900,1,"getMailListToCheck?type=2"),
|
||||
MAIL_MANAGER(900,"邮件管理",900,1,""),
|
||||
SINGLE_MAIL(901,"个人邮件",900,1,"toMailPage?type=1"),
|
||||
ALL_SERVER_MAIL(902,"全服邮件",900,1,"toMailPage?type=2"),
|
||||
SINGLE_MAIL_AUDIT(910,"个人邮件审核",900,1,"getMailListToCheck?type=2"),
|
||||
SYSTEM_MAIL_AUDIT(911,"系统邮件审核",900,1,"getMailListToCheck?type=1"),
|
||||
MAIL_AUDIT_JURISDICTION(903,"权限: 邮件审核权限",900,0,""),
|
||||
/**
|
||||
* 聊天信息管理1000-1099
|
||||
|
|
@ -130,7 +130,7 @@ public enum PowersEnum {
|
|||
ADD_GAME_AGREEMENT_PERMISSIONS(1409,"权限: 操作游戏协议(增,删,改)",1400,0,""),
|
||||
UPDATE_CHANNEL_PERMISSIONS(1410,"权限: 修改渠道",1400,0,""),
|
||||
// 自动返利活动
|
||||
AUTO_RECHARGE_BACK_ACTIVITY_SHOW(1411,"自动返利活动查询",1400,1,"findARBActivityInfos"),
|
||||
AUTO_RECHARGE_BACK_ACTIVITY_SHOW(1411,"自动返利活动",1400,1,"findARBActivityInfos"),
|
||||
/**
|
||||
* 合服
|
||||
*/
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -45,31 +45,31 @@
|
|||
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
|
||||
<thead>
|
||||
<tr class="text-c">
|
||||
<th width="50">活动id</th>
|
||||
<th width="200">活动名称</th>
|
||||
<th width="200">活动描述</th>
|
||||
<th width="100">活动id</th>
|
||||
<th width="100">活动名称</th>
|
||||
<th width="260">活动描述</th>
|
||||
<th width="200">活动时间</th>
|
||||
<th width="100">活动类型</th>
|
||||
<th width="60">活动类型</th>
|
||||
<th width="200">生效区服</th>
|
||||
<th width="150">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="obj:${allActivityList}">
|
||||
<td th:text="${obj.getId()}" th:id="${obj.getId()}" style="text-align: center;"></td>
|
||||
<tr th:each="obj:${allActivityList}" th:id="${obj.getId()}">
|
||||
<td th:text="${obj.getId()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getName()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getDescription()}" style="text-align: center;"></td>
|
||||
<th th:switch="${obj.getTimeType()}" style="text-align: center;">
|
||||
<span th:case="0" th:text="${obj.getStartTime() + '-' + obj.getEndTime()}" ></span>
|
||||
<span th:case="0" th:text="${obj.getStartTime() + '至' + obj.getEndTime()}" ></span>
|
||||
<span th:case="1" th:text="常驻" ></span>
|
||||
</th>
|
||||
<td th:text="${obj.getTypeDescription()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getServerNames()}" style="text-align: center;"></td>
|
||||
<td style="text-align: center;">
|
||||
<button type="button" th:id="${obj.getId()}" class="btn btn-success radius" onclick="return cutActivityMissionInfo(this)">
|
||||
<button type="button" th:id="${obj.getId()}" class="btn btn-success radius" onclick="return jumpActivityMissionInfo(this)">
|
||||
档位
|
||||
</button>
|
||||
<button type="button" th:id="${obj.getId()}" class="btn btn-primary radius" onclick="return cutUpdateActivity(this)">
|
||||
<button type="button" th:id="${obj.getId()}" class="btn btn-primary radius" onclick="return jumpUpdateActivity(this)">
|
||||
修改
|
||||
</button>
|
||||
<button type="button" th:id="${obj.getId()}" th:name="${obj.getName()}" class="btn btn-danger radius" onclick="return deleteActivity(this)">
|
||||
|
|
@ -151,7 +151,7 @@
|
|||
* @param obj
|
||||
*/
|
||||
function cutAddARBActivity() {
|
||||
window.location.href = "/cutUpdateARBActivity?activityId=0";
|
||||
window.location.href = "/jumpUpdateARBActivity?activityId=0";
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -168,18 +168,18 @@
|
|||
* 切换到档位信息页面
|
||||
* @param obj
|
||||
*/
|
||||
function cutActivityMissionInfo(obj) {
|
||||
function jumpActivityMissionInfo(obj) {
|
||||
var activityId = $(obj).attr("id");
|
||||
window.location.href = "/findARBActivityMissionInfos?activityId="+activityId;
|
||||
window.location.href = "/findARBMissions?activityId="+activityId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 跳转更新活动界面
|
||||
* @param obj
|
||||
*/
|
||||
function cutUpdateActivity(obj) {
|
||||
function jumpUpdateActivity(obj) {
|
||||
var activityId = $(obj).attr("id");
|
||||
window.location.href = "/cutUpdateARBActivity?activityId="+activityId;
|
||||
window.location.href = "/jumpUpdateARBActivity?activityId="+activityId;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -200,7 +200,7 @@
|
|||
success: function (data) {
|
||||
if (data === 1) {
|
||||
alert("操作成功");
|
||||
document.getElementById(activityId).style.display="";
|
||||
document.getElementById(activityId).style.display="none";
|
||||
}else {
|
||||
alert("操作失败");
|
||||
}
|
||||
|
|
@ -33,19 +33,23 @@
|
|||
</nav>
|
||||
<div class="mt-20" style="text-align: left;margin-left: 24px;">
|
||||
<!-- 新增按钮 -->
|
||||
<a class="btn btn-primary radius" href="cutUpdateARBMission"><i class="Hui-iconfont"></i> 添加档位</a>
|
||||
<button class="btn btn-primary radius" th:id="${activityId}" type="button" onclick="jumpAddARBMission(this)">
|
||||
<i class="Hui-iconfont"></i> 添加档位
|
||||
</button>
|
||||
<!-- <a class="btn btn-primary radius" th:id="${activityId}" onclick="return jumpAddARBMission(this)"><i class="Hui-iconfont"></i> 添加档位</a>-->
|
||||
</div>
|
||||
<div class="page-container" style="text-align: center">
|
||||
<div class="text-c">
|
||||
<div class="mt-20">
|
||||
<input th:id="activityId" th:value="${activityId}" type="hidden" />
|
||||
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
|
||||
<thead>
|
||||
<tr class="text-c">
|
||||
<th width="100">档位id</th>
|
||||
<th width="150">档位标题</th>
|
||||
<th width="200">充值金额条件值</th>
|
||||
<th width="200">奖励</th>
|
||||
<th width="200">操作</th>
|
||||
<th width="100">档位标题</th>
|
||||
<th width="50">充值金额条件值</th>
|
||||
<th width="300">奖励</th>
|
||||
<th width="60">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
|
@ -53,11 +57,8 @@
|
|||
<td th:text="${obj.getId()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getTitle()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getRechargeValue()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getItemDescription()}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.getRewardDescription()}" style="text-align: center;"></td>
|
||||
<td style="text-align: center;">
|
||||
<button type="button" th:id="${obj.getId()}" class="btn btn-primary radius" onclick="return cutUpdateMission(this)">
|
||||
修改
|
||||
</button>
|
||||
<button type="button" th:id="${obj.getId()}" th:name="${obj.getTitle()}" class="btn btn-danger radius" onclick="return deleteMission(this)">
|
||||
删除
|
||||
</button>
|
||||
|
|
@ -92,27 +93,10 @@
|
|||
{"orderable": false, "aTargets": [1, 2]}// 不参与排序的列
|
||||
]
|
||||
});
|
||||
|
||||
/**
|
||||
* 跳转更新活动界面
|
||||
* @param obj
|
||||
*/
|
||||
function cutUpdateMission(obj) {
|
||||
var missionId = $(obj).attr("id");
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data: {
|
||||
"missionId": missionId
|
||||
},
|
||||
url: "/cutUpdateARBMission",
|
||||
success: function (data) {
|
||||
if (data === 1) {
|
||||
alert("操作成功");
|
||||
}else {
|
||||
alert("操作失败");
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
function jumpAddARBMission(obj) {
|
||||
let activityId = $(obj).attr("id");
|
||||
window.location.href = "/jumpAddARBMission?activityId="+activityId;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -120,20 +104,20 @@
|
|||
* @param obj
|
||||
*/
|
||||
function deleteMission(obj) {
|
||||
var missionId = $(obj).attr("id");
|
||||
var name = $(obj).attr("name");
|
||||
var msg = "请确认是否要删除档位:{"+name+"},\n\n请确认!";
|
||||
let missionId = $(obj).attr("id");
|
||||
let name = $(obj).attr("name");
|
||||
let msg = "请确认是否要删除档位:{"+name+"},\n\n请确认!";
|
||||
if (confirm(msg) === true) {
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data: {
|
||||
"missionId": missionId
|
||||
},
|
||||
url: "/removeARBackActivityMission",
|
||||
url: "/removeARBMission",
|
||||
success: function (data) {
|
||||
if (data === 1) {
|
||||
alert("操作成功");
|
||||
$('#'+missionId).css('display','table-row');
|
||||
document.getElementById(missionId).style.display="none";
|
||||
}else {
|
||||
alert("操作失败");
|
||||
}
|
||||
|
|
@ -20,6 +20,8 @@
|
|||
<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"/>
|
||||
<!-- 引入layui.css -->
|
||||
<link rel="stylesheet" href="https://www.layuicdn.com/layui-v2.5.6/css/layui.css">
|
||||
<!--[if IE 6]>
|
||||
<script type="text/javascript" src="../static/lib/DD_belatedPNG_0.0.8a-min.js"></script>
|
||||
<script>DD_belatedPNG.fix('*');</script>
|
||||
|
|
@ -52,7 +54,7 @@
|
|||
<span class="c-red">*</span>档位标题:
|
||||
</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input type="text" name="title" placeholder="" value="" class="input-text"/>
|
||||
<input type="text" th:id="title" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -60,7 +62,7 @@
|
|||
<span class="c-red">*</span>充值金额:
|
||||
</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input type="number" name="value" placeholder="" value="" class="input-text"/>
|
||||
<input type="number" th:id="rechargeValue" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -72,15 +74,15 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th style="width: 50px;">序号</th>
|
||||
<th>道具id:</th>
|
||||
<th>道具数量:</th>
|
||||
<th style="width: 100px;">操作</th>
|
||||
<th>道具id</th>
|
||||
<th>道具数量</th>
|
||||
<th style="width: 150px;">操作</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan="3">
|
||||
<span>在这里添加奖励道具</span>
|
||||
<span>在这里添加道具</span>
|
||||
</td>
|
||||
<td colspan="1">
|
||||
<div class="layui-btn-group">
|
||||
|
|
@ -96,7 +98,8 @@
|
|||
</div>
|
||||
<div class="row cl">
|
||||
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2">
|
||||
<button onClick="return sendSysMail();" class="btn btn-primary radius" type="button">
|
||||
<input th:id="activityId" th:value="${activityId}" type="hidden" />
|
||||
<button onClick="return upsertMission();" class="btn btn-primary radius" type="button">
|
||||
<i class="Hui-iconfont"></i> 确认
|
||||
</button>
|
||||
</div>
|
||||
|
|
@ -119,9 +122,11 @@
|
|||
|
||||
<!--多选框-->
|
||||
<script src="../static/xmSelect/js/xm-select.js"></script>
|
||||
<!-- 引入layui.js -->
|
||||
<script scr="https://www.layuicdn.com/layui-v2.5.6/layui.js"></script>
|
||||
|
||||
<script th:inline="javascript">
|
||||
|
||||
|
||||
$(function () {
|
||||
$('.skin-minimal input').iCheck({
|
||||
checkboxClass: 'icheckbox-blue',
|
||||
|
|
@ -134,14 +139,13 @@
|
|||
});
|
||||
|
||||
var index = 1;
|
||||
|
||||
$('.add').on('click', function(){
|
||||
var element = $([
|
||||
'<tr>',
|
||||
'<td>'+ index +'</td>',
|
||||
'<td class="c_itemId"></td>',
|
||||
'<td class="c_itemNum">',
|
||||
'<input type="number" name="itemNum" class="input_bg"/>',
|
||||
'<td class="prop" name="propn" style="width: 450px"></td>',
|
||||
'<td>',
|
||||
'<input type="number" name="count" style="height: 38px;line-height: 38px;" class="input-text"/>',
|
||||
'</td>',
|
||||
'<td class="handler">',
|
||||
'<button type="button" class="layui-btn layui-btn-danger del">删除</button>',
|
||||
|
|
@ -149,23 +153,25 @@
|
|||
'</tr>',
|
||||
].join(''))
|
||||
|
||||
var c_itemId = element.find('.c_itemId')[0];
|
||||
xmSelect.render({
|
||||
el: c_itemId,
|
||||
radio: true,
|
||||
clickClose: true,
|
||||
var prop = element.find('.prop')[0];
|
||||
var props = xmSelect.render({
|
||||
el: prop,
|
||||
template({name, value}){
|
||||
return name + '<span style="position: absolute; right: 10px; color: #8799a3">'+value+'</span>'
|
||||
},
|
||||
theme: { color: '#e54d42' },
|
||||
filterable: true,
|
||||
radio: true,
|
||||
clickClose: true,
|
||||
tips: '选择道具', // 让默认值不是“请选择”,而是“选择校区”
|
||||
height:'260px',
|
||||
theme: { color: '#0081ff' },
|
||||
model: { label: { type: 'text' } },
|
||||
prop: {
|
||||
name: 'name',
|
||||
value: 'id',
|
||||
},
|
||||
data: function () {
|
||||
var infos = [[${itemList}]];
|
||||
return infos;
|
||||
return [[${itemList}]];
|
||||
},
|
||||
})
|
||||
|
||||
|
|
@ -178,29 +184,67 @@
|
|||
$('#form-create tbody').append(element)
|
||||
});
|
||||
|
||||
function sendSysMail() {
|
||||
function getItem() {
|
||||
let result = new Array();
|
||||
|
||||
var ids = xmSelect.batch(null, 'getValue', 'value');
|
||||
|
||||
let nums = new Array();
|
||||
$("input[name='count']").each(function(){
|
||||
nums.push($(this).val());
|
||||
});
|
||||
if (ids.length != nums.length){
|
||||
alert("道具参数错误,请删除道具重新添加");
|
||||
return result;
|
||||
}
|
||||
|
||||
for (let i = 0; i < ids.length; i++) {
|
||||
let info = new Array();
|
||||
info.push(ids[i]);
|
||||
info.push(nums[i]);
|
||||
result.push(info);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
function upsertMission() {
|
||||
// ID
|
||||
let activityId = document.getElementById("activityId").value;
|
||||
// 标题
|
||||
let title = document.getElementById("title").value;
|
||||
// 充值条件
|
||||
let rechargeValue = document.getElementById("rechargeValue").value;
|
||||
if (title == "" || rechargeValue <= 0){
|
||||
alert("参数不能为空!")
|
||||
return false;
|
||||
}
|
||||
|
||||
// 奖励道具id
|
||||
var ids = xmSelect.batch(null, 'getValue', 'value');
|
||||
// 奖励数量
|
||||
let nums = new Array();
|
||||
$("input[name='count']").each(function(){
|
||||
nums.push($(this).val());
|
||||
});
|
||||
|
||||
if (ids.length != nums.length){
|
||||
alert("道具参数错误,请删除道具重新添加");
|
||||
return result;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data:
|
||||
JSON.stringify({
|
||||
"serverId": serverId,
|
||||
"mailTitle": mailTitle,
|
||||
"mailContent": mailContent
|
||||
})
|
||||
,
|
||||
url: "/sendSysMailWithBack",
|
||||
dataType: "json",
|
||||
contentType: 'application/json',
|
||||
|
||||
data: {
|
||||
"title": title,
|
||||
"rechargeValue": rechargeValue,
|
||||
"propId": ids.toString(),
|
||||
"propNum": nums.toString(),
|
||||
"activityId": activityId,
|
||||
},
|
||||
url: "/addARBMission",
|
||||
success: function (data) {
|
||||
if (data == 0) {
|
||||
layer.msg('发送全服邮件成功!', {icon: 6, time: 1000});
|
||||
}
|
||||
if (data == 1) {
|
||||
layer.msg('发送全服邮件失败!', {icon: 6, time: 1000});
|
||||
}
|
||||
if (data === 2) {
|
||||
layer.msg('发送邮件失败 道具不能为空!', {icon: 6, time: 1000});
|
||||
layer.msg('成功!', {icon: 6, time: 1000});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
<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 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>
|
||||
|
|
@ -33,7 +34,7 @@
|
|||
<div class="text-c">
|
||||
<!--<input type="text" placeholder="物品名称" name="itemName" value="" class="input-text" style="width:120px">-->
|
||||
<select name="itemId" style="width: 150px" th:id="itemId"><!--下拉列表-->
|
||||
<option value="0" selected = "selected">0.所有</option>
|
||||
<option value="0" selected="selected">0.所有</option>
|
||||
<option th:each="item:${itemNameMap}" th:value="${item.key}" th:text="${item.key}+.+${item.value}"></option>
|
||||
</select>
|
||||
<span class="btn-upload form-group">
|
||||
|
|
@ -51,123 +52,124 @@
|
|||
</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" id="aa">
|
||||
<thead>
|
||||
<tr class="text-c">
|
||||
<th width="200">用户id</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">动作后的物品存量</th>
|
||||
<th width="200">物品操作原因</th>
|
||||
<th width="200">增加0减少1</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="obj:${itemFlowVoList}">
|
||||
<td th:text="${obj.userId}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.serverId}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.time}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.userLevel}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.itemName}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.count}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.afterMoney}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.reason}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.addOrReduce}" style="text-align: center;"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</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 作为公共模版分离出去-->
|
||||
<div class="mt-20">
|
||||
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive" id="aa">
|
||||
<thead>
|
||||
<tr class="text-c">
|
||||
<th width="200">用户id</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">动作后的物品存量</th>
|
||||
<th width="200">物品操作原因</th>
|
||||
<th width="200">增加0减少1</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr th:each="obj:${itemFlowVoList}">
|
||||
<td th:text="${obj.userId}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.serverId}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.time}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.userLevel}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.itemName}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.count}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.afterMoney}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.reason}" style="text-align: center;"></td>
|
||||
<td th:text="${obj.addOrReduce}" style="text-align: center;"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</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,//状态保存x异步 request请求
|
||||
"pading":false,
|
||||
"aoColumnDefs": [
|
||||
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||
{"orderable":false,"aTargets":[0,8]}// 不参与排序的列
|
||||
]
|
||||
});
|
||||
function tableToExcel() {
|
||||
var titles = $("#aa").find("tr:first th"); //获得表头td数组
|
||||
var json = $("#aa").find("tr:not(:first)").map(function (i, e) {
|
||||
var getDisplay = e.style.display;
|
||||
if (getDisplay !== "none"){
|
||||
return "{" + $(e).children("td").map(function (j, el) {
|
||||
var name = $(titles[j]).html();
|
||||
return name + ":'" + $(el).html() +"'";
|
||||
}).get().join(",") + "}";
|
||||
}
|
||||
}).get().join(",");
|
||||
// var aa =JSON.stringify(json); //将JSON对象转化为JSON字符
|
||||
// alert(aa);
|
||||
// var obj = JSON.parse(cc); //由JSON字符串转换为JSON对象
|
||||
// alert(obj);
|
||||
// const jsonData = JSON.stringify(json.responseObject);
|
||||
var jsonData = eval("["+json+"]");
|
||||
var aa = JSON.stringify(jsonData);
|
||||
var jsonData = JSON.parse(aa);//转换为json对象
|
||||
// var jsonData = JSON.stringify(aa);
|
||||
// alert(jsonData);
|
||||
// var jsonData =JSON.parse(bb);
|
||||
// alert(jsonData);
|
||||
// alert(jsonData)
|
||||
// var jsonData = [{用户id:'30006627',服务器ID:'10212',时间:'2019-04-11 00:02:51',用户等级:'100',道具名称:'0',道具数量:'0',动作后的物品存量:'4',物品操作原因:'213',增加:'0'}]
|
||||
// alert(jsonData);
|
||||
// var bb =JSON.stringify(jsonData); //将JSON对象转化为JSON字符
|
||||
// alert(bb);
|
||||
// alert(json);
|
||||
let str = "用户id,服务器ID,时间,用户等级,道具名称,道具数量,动作后的物品存量,物品操作原因,增加:0/减少:1\n";
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
var parse = jsonData[i];
|
||||
// var bb =JSON.stringify(jsonData[i])
|
||||
// alert(bb);
|
||||
// var parse = JSON.parse(bb);
|
||||
// alert(parse);
|
||||
for (let item in parse) {
|
||||
str += `${parse[item] + '\t'},`;
|
||||
}
|
||||
str += '\n';
|
||||
}
|
||||
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
|
||||
let link = document.createElement("a")
|
||||
link.href = uri;
|
||||
link.download = "itemFlow.csv";
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
<!--请在下方写此页面业务相关的脚本-->
|
||||
<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,//状态保存x异步 request请求
|
||||
"pading": false,
|
||||
"aoColumnDefs": [
|
||||
//{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示
|
||||
{"orderable": false, "aTargets": [0, 8]}// 不参与排序的列
|
||||
]
|
||||
});
|
||||
|
||||
function onSearch(){
|
||||
var itemName = $("#itemId").find("option:selected").text();
|
||||
var type = document.getElementById("type").value;
|
||||
setTimeout(function(){
|
||||
var storeId = document.getElementById('aa');
|
||||
var rowsLength = storeId.rows.length;
|
||||
for(var i=1;i<rowsLength;i++){
|
||||
var itemText = storeId.rows[i].cells[4].innerHTML;
|
||||
var typeText = storeId.rows[i].cells[8].innerHTML;
|
||||
if((itemName === "0.所有" || itemText === itemName ) && typeText === type){
|
||||
storeId.rows[i].style.display='';//显示行操作,
|
||||
}else{
|
||||
storeId.rows[i].style.display='none';//隐藏行操作
|
||||
function tableToExcel() {
|
||||
var titles = $("#aa").find("tr:first th"); //获得表头td数组
|
||||
var json = $("#aa").find("tr:not(:first)").map(function (i, e) {
|
||||
var getDisplay = e.style.display;
|
||||
if (getDisplay !== "none") {
|
||||
return "{" + $(e).children("td").map(function (j, el) {
|
||||
var name = $(titles[j]).html();
|
||||
return name + ":'" + $(el).html() + "'";
|
||||
}).get().join(",") + "}";
|
||||
}
|
||||
}).get().join(",");
|
||||
// var aa =JSON.stringify(json); //将JSON对象转化为JSON字符
|
||||
// alert(aa);
|
||||
// var obj = JSON.parse(cc); //由JSON字符串转换为JSON对象
|
||||
// alert(obj);
|
||||
// const jsonData = JSON.stringify(json.responseObject);
|
||||
var jsonData = eval("[" + json + "]");
|
||||
var aa = JSON.stringify(jsonData);
|
||||
var jsonData = JSON.parse(aa);//转换为json对象
|
||||
// var jsonData = JSON.stringify(aa);
|
||||
// alert(jsonData);
|
||||
// var jsonData =JSON.parse(bb);
|
||||
// alert(jsonData);
|
||||
// alert(jsonData)
|
||||
// var jsonData = [{用户id:'30006627',服务器ID:'10212',时间:'2019-04-11 00:02:51',用户等级:'100',道具名称:'0',道具数量:'0',动作后的物品存量:'4',物品操作原因:'213',增加:'0'}]
|
||||
// alert(jsonData);
|
||||
// var bb =JSON.stringify(jsonData); //将JSON对象转化为JSON字符
|
||||
// alert(bb);
|
||||
// alert(json);
|
||||
let str = "用户id,服务器ID,时间,用户等级,道具名称,道具数量,动作后的物品存量,物品操作原因,增加:0/减少:1\n";
|
||||
for (let i = 0; i < jsonData.length; i++) {
|
||||
var parse = jsonData[i];
|
||||
// var bb =JSON.stringify(jsonData[i])
|
||||
// alert(bb);
|
||||
// var parse = JSON.parse(bb);
|
||||
// alert(parse);
|
||||
for (let item in parse) {
|
||||
str += `${parse[item] + '\t'},`;
|
||||
}
|
||||
str += '\n';
|
||||
}
|
||||
let uri = 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(str);
|
||||
let link = document.createElement("a");
|
||||
link.href = uri;
|
||||
link.download = "itemFlow.csv";
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
}
|
||||
}
|
||||
},20);//20为延时时间
|
||||
}
|
||||
</script>
|
||||
|
||||
function onSearch() {
|
||||
var itemName = $("#itemId").find("option:selected").text();
|
||||
var type = document.getElementById("type").value;
|
||||
setTimeout(function () {
|
||||
var storeId = document.getElementById('aa');
|
||||
var rowsLength = storeId.rows.length;
|
||||
for (var i = 1; i < rowsLength; i++) {
|
||||
var itemText = storeId.rows[i].cells[4].innerHTML;
|
||||
var typeText = storeId.rows[i].cells[8].innerHTML;
|
||||
if ((itemName === "0.所有" || itemText === itemName) && typeText === type) {
|
||||
storeId.rows[i].style.display = '';//显示行操作,
|
||||
} else {
|
||||
storeId.rows[i].style.display = 'none';//隐藏行操作
|
||||
}
|
||||
}
|
||||
}, 20);//20为延时时间
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -48,10 +48,8 @@
|
|||
区服id:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<select name="serverId" class="input-text" id="serverId"><!--下拉列表-->
|
||||
<option th:each="server:${serverInfos}" th:value="${server.server_id}"
|
||||
th:text="${server.server_id}+'-'+${server.name}"></option>
|
||||
<option th:each="server:${serverInfos}" th:value="${server.server_id}" th:text="${server.server_id}+'-'+${server.name}"></option>
|
||||
</select>
|
||||
<span class="SERVERID"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -62,7 +60,6 @@
|
|||
<input type="text" name="userId" id="in_user" value="" placeholder="" class="input-text" />
|
||||
<button type="button" style="padding: 1px 3px 1px 3px;margin-top: 5px;" onclick="uploads();">上传</button>
|
||||
<input type="file" id="tables" class="form-control" style="margin-top: 5px;" accept=".xls,.xlsx" />
|
||||
<span class="USERID"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -73,13 +70,12 @@
|
|||
<div>
|
||||
中文<input type="text" name="mailTitle1" id="mailTitle1" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<div>
|
||||
英文<input type="text" name="mailTitle2" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<div>
|
||||
越南文<input type="text" name="mailTitle3" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<span class="MAILTITLE"></span>
|
||||
<!-- <div>-->
|
||||
<!-- 英文<input type="text" name="mailTitle2" placeholder="" value="" class="input-text"/>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div>-->
|
||||
<!-- 越南文<input type="text" name="mailTitle3" placeholder="" value="" class="input-text"/>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -88,9 +84,8 @@
|
|||
邮件正文:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
中文<textarea rows="5" cols="150" wrap="soft" name="mailContent1" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
英文<textarea rows="5" cols="150" wrap="soft" name="mailContent2" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
越南文<textarea rows="5" cols="150" wrap="soft" name="mailContent3" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
<span class="MAILCONTENT"></span>
|
||||
<!-- 英文<textarea rows="5" cols="150" wrap="soft" name="mailContent2" style="width:100%;border:solid 1px #ddd"></textarea>-->
|
||||
<!-- 越南文<textarea rows="5" cols="150" wrap="soft" name="mailContent3" style="width:100%;border:solid 1px #ddd"></textarea>-->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -100,7 +95,7 @@
|
|||
<div class="formControls col-xs-8 col-sm-9" onclick="itemShow()">
|
||||
<select name="isAttach" class="input-text" id="isAttach">
|
||||
<option value="1" selected = "selected" >有</option>
|
||||
<option value="0" >无</option>
|
||||
<option value="0" >无</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -121,14 +116,13 @@
|
|||
<div th:style="${i} ne 1?'display:none':''" th:id="item_+(${i})">
|
||||
物品id:
|
||||
<select name="itemId" style="width: 150px" th:id="itemId_+(${i})"><!--下拉列表-->
|
||||
<option value="0" selected = "selected">0.无物品</option>
|
||||
<option value="0" selected = "selected">0.无物品</option>
|
||||
<option th:each="item:${itemNameMap}" th:value="${item.key}" th:text="${item.key}+.+${item.value}"></option>
|
||||
</select>
|
||||
<!--<input type="text" name="itemIds[]" id="itemId_1" style="width: 150px" />-->
|
||||
物品数量:<input type="text" name="itemNum" th:id="itemNum_+(${i})" class="input_bg" />
|
||||
<a href="#" th:if="${i} ne 1" class="removeclass">×</a>
|
||||
<a href="#" th:if="${i} eq 1" id="AddMoreFileBox" class="btn btn-info">+</a>
|
||||
<span class="REWARD"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -140,7 +134,6 @@
|
|||
奖励发放时间:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
<input type="text" onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'SendTime\')}' })" id="SendTime" class="input-text Wdate" style="width:180px;" name="sendTime">
|
||||
<span class="SENDTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -150,7 +143,6 @@
|
|||
<input type="radio" style="margin-left: 30px;" name="effectTime" value="0"> <span>永久</span>
|
||||
<input type="radio" style="margin-left: 30px;" name="effectTime" value="TheCustom"> <span>自定义</span>
|
||||
<input type="text" style="display: none;width: 360px;line-height: 32px; margin-top: 13px;border: 1px solid #c6c6c6;" id="effectTime_input" placeholder=" 单位:天,0:永久" value="" />
|
||||
<span class="EFFECTTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="row cl">-->
|
||||
|
|
@ -251,26 +243,24 @@
|
|||
|
||||
function uploads() {
|
||||
//获取文件信息
|
||||
var fileObj = document.getElementById("tables").files[0];
|
||||
let fileObj = document.getElementById("tables").files[0];
|
||||
// 文件名字
|
||||
var fileName = fileObj.name;
|
||||
let fileName = fileObj.name;
|
||||
if (fileName === '') {
|
||||
erroCode = $('.USERID');
|
||||
erroCode.html('<span style="color: red; ">文件不存在,请选择excel文件!</span>');
|
||||
alert("文件不存在,请选择excel文件!");
|
||||
return false;
|
||||
}
|
||||
// 文件是否是excel格式
|
||||
var fileType = (fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)).toLowerCase();
|
||||
let fileType = (fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)).toLowerCase();
|
||||
if (fileType !== 'xls' && fileType !== 'xlsx') {
|
||||
erroCode = $('.USERID');
|
||||
erroCode.html('<span style="color: red; ">文件格式不正确,请选择excel文件!</span>');
|
||||
alert("文件格式不正确,请选择excel文件!");
|
||||
return false;
|
||||
}
|
||||
// 包装成formdata类型
|
||||
var data = new FormData();
|
||||
let data = new FormData();
|
||||
data.append("file",fileObj);
|
||||
|
||||
var url = "/uploadUserList";
|
||||
let url = "/uploadUserList";
|
||||
$.ajax({
|
||||
url : url,
|
||||
data : data,
|
||||
|
|
@ -289,41 +279,25 @@
|
|||
|
||||
function sendSysMail() {
|
||||
//特殊字符验证
|
||||
var reg = new RegExp("[|#]",'g');
|
||||
var mailTitle1 = $("input[name='mailTitle1']").val();
|
||||
var mailTitle2 = $("input[name='mailTitle2']").val();
|
||||
var mailTitle3 = $("input[name='mailTitle3']").val();
|
||||
|
||||
var mailContent1 = $("textarea[name='mailContent1']").val();
|
||||
var mailContent2 = $("textarea[name='mailContent2']").val();
|
||||
var mailContent3 = $("textarea[name='mailContent3']").val();
|
||||
|
||||
if (reg.test(mailTitle1) || reg.test(mailTitle2) || reg.test(mailTitle3)){
|
||||
alert("邮件标题不能含有特殊字符");
|
||||
let reg = new RegExp("[|#]",'g');
|
||||
let mailTitle = $("input[name='mailTitle1']").val();
|
||||
let mailContent = $("textarea[name='mailContent1']").val();
|
||||
if (reg.test(mailTitle) || reg.test(mailContent)){
|
||||
alert("邮件标题或内容包含有特殊字符!!");
|
||||
return false;
|
||||
}
|
||||
if (reg.test(mailContent1) || reg.test(mailContent2) || reg.test(mailContent3)){
|
||||
alert("邮件正文不能有特殊字符");
|
||||
return false;
|
||||
}
|
||||
|
||||
var mailTitle = mailTitle1+"|"+mailTitle2+"|"+mailTitle3;
|
||||
var mailContent = mailContent1+"|"+mailContent2+"|"+mailContent3;
|
||||
|
||||
var erroCode = $('.SERVERID');
|
||||
var serverId = $("#serverId").val();
|
||||
// var attach = $("input[name='attach']").val();
|
||||
var isAttach = document.getElementById("isAttach").value;
|
||||
var userId = $("input[name='userId']").val();
|
||||
var sendTime = $("input[name='sendTime']").val();
|
||||
var effectTime = $("input[name='effectTime']:checked").val();
|
||||
let serverId = $("#serverId").val();
|
||||
let isAttach = document.getElementById("isAttach").value;
|
||||
let userId = $("input[name='userId']").val();
|
||||
let sendTime = $("input[name='sendTime']").val();
|
||||
let effectTime = $("input[name='effectTime']:checked").val();
|
||||
if (effectTime === "TheCustom"){
|
||||
var seconds = document.getElementById("effectTime_input").value;
|
||||
let seconds = document.getElementById("effectTime_input").value;
|
||||
effectTime = seconds*24*60*60;
|
||||
}
|
||||
var version = new Date().getTime() / 1000;
|
||||
var itemIds = [];
|
||||
var itemNums =[];
|
||||
let version = new Date().getTime() / 1000;
|
||||
let itemIds = [];
|
||||
let itemNums =[];
|
||||
if (isAttach === "1") {
|
||||
$("select[name='itemId']").each(function () {
|
||||
if($(this).val()!=='0'){
|
||||
|
|
@ -337,27 +311,24 @@
|
|||
});
|
||||
}
|
||||
if(itemNums.length!==itemIds.length){
|
||||
erroCode.html('<span style="color: red; ">物品id或物品数量不匹配</span>');
|
||||
alert("物品id或物品数量不匹配");
|
||||
return false;
|
||||
}
|
||||
if (serverId === '' || serverId == null) {
|
||||
erroCode.html('<span style="color: red; ">服务器id不能为空!</span>');
|
||||
alert("服务器id不能为空");
|
||||
return false;
|
||||
}
|
||||
if (mailTitle === '' || mailTitle == null) {
|
||||
erroCode = $('.MAILTITLE');
|
||||
erroCode.html('<span style="color: red; ">邮件标题不能为空!</span>');
|
||||
alert("邮件标题不能为空");
|
||||
return false;
|
||||
}
|
||||
if (mailContent === '' || mailContent == null) {
|
||||
erroCode = $('.MAILCONTENT');
|
||||
erroCode.html('<span style="color: red; ">邮件内容不能为空!</span>');
|
||||
alert("邮件内容不能为空");
|
||||
return false;
|
||||
}
|
||||
if(isAttach === "1"){
|
||||
if (itemIds.length<1) {
|
||||
erroCode = $('.ATTACH');
|
||||
erroCode.html('<span style="color: red; ">附件不能为空!</span>');
|
||||
alert("附件不能为空");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -366,8 +337,7 @@
|
|||
return false;
|
||||
}
|
||||
if (effectTime === "" || effectTime < 0){
|
||||
erroCode = $('.EFFECTTIME');
|
||||
erroCode.html('<span style="color: red; ">有效时间不能为空或小于0!</span>');
|
||||
alert("有效时间不能为空或小于0");
|
||||
return false;
|
||||
}
|
||||
$.ajax({
|
||||
|
|
|
|||
|
|
@ -72,12 +72,12 @@
|
|||
<div>
|
||||
中文<input type="text" name="mailTitle1" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<div>
|
||||
英文<input type="text" name="mailTitle2" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<div>
|
||||
越南文<input type="text" name="mailTitle3" placeholder="" value="" class="input-text"/>
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<!-- 英文<input type="text" name="mailTitle2" placeholder="" value="" class="input-text"/>-->
|
||||
<!-- </div>-->
|
||||
<!-- <div>-->
|
||||
<!-- 越南文<input type="text" name="mailTitle3" placeholder="" value="" class="input-text"/>-->
|
||||
<!-- </div>-->
|
||||
<span class="MAILTITLE"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -87,8 +87,8 @@
|
|||
邮件正文:</label>
|
||||
<div class="formControls col-xs-8 col-sm-9">
|
||||
中文<textarea rows="5" cols="150" wrap="soft" name="mailContent1" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
英文<textarea rows="5" cols="150" wrap="soft" name="mailContent2" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
越南文<textarea rows="5" cols="150" wrap="soft" name="mailContent3" style="width:100%;border:solid 1px #ddd"></textarea>
|
||||
<!-- 英文<textarea rows="5" cols="150" wrap="soft" name="mailContent2" style="width:100%;border:solid 1px #ddd"></textarea>-->
|
||||
<!-- 越南文<textarea rows="5" cols="150" wrap="soft" name="mailContent3" style="width:100%;border:solid 1px #ddd"></textarea>-->
|
||||
<span class="MAILCONTENT"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -113,14 +113,12 @@
|
|||
物品id:
|
||||
<select name="itemId" style="width: 150px" th:id="itemId_+(${i})"><!--下拉列表-->
|
||||
<option value="0" selected="selected">0.无物品</option>
|
||||
<option th:each="item:${itemNameMap}" th:value="${item.key}"
|
||||
th:text="${item.key}+.+${item.value}"></option>
|
||||
<option th:each="item:${itemNameMap}" th:value="${item.key}" th:text="${item.key}+.+${item.value}"></option>
|
||||
</select>
|
||||
<!--<input type="text" name="itemIds[]" id="itemId_1" style="width: 150px" />-->
|
||||
物品数量:<input type="text" name="itemNum" th:id="itemNum_+(${i})" class="input_bg"/>
|
||||
<a href="#" th:if="${i} ne 1" class="removeclass">×</a>
|
||||
<a href="#" th:if="${i} eq 1" id="AddMoreFileBox" class="btn btn-info">+</a>
|
||||
<span class="REWARD"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -134,7 +132,6 @@
|
|||
<input type="text"
|
||||
onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'SendTime\')}' })"
|
||||
id="SendTime" class="input-text Wdate" style="width:180px;" name="sendTime">
|
||||
<span class="SENDTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -145,7 +142,6 @@
|
|||
<input type="text"
|
||||
onfocus="WdatePicker({ dateFmt:'yyyy-MM-dd HH:mm:ss',minDate:'#F{$dp.$D(\'PlayerRTime\')}' })"
|
||||
id="PlayerRTime" class="input-text Wdate" style="width:180px;" name="playerRTime">
|
||||
<span class="PLAYERRTIME"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row cl">
|
||||
|
|
@ -276,41 +272,27 @@
|
|||
});
|
||||
|
||||
function sendSysMail() {
|
||||
let mailTitle = $("input[name='mailTitle1']").val();
|
||||
let mailContent = $("textarea[name='mailContent1']").val();
|
||||
//特殊字符验证
|
||||
var reg = new RegExp("[|#]",'g');
|
||||
var mailTitle1 = $("input[name='mailTitle1']").val();
|
||||
var mailTitle2 = $("input[name='mailTitle2']").val();
|
||||
var mailTitle3 = $("input[name='mailTitle3']").val();
|
||||
|
||||
var mailContent1 = $("textarea[name='mailContent1']").val();
|
||||
var mailContent2 = $("textarea[name='mailContent2']").val();
|
||||
var mailContent3 = $("textarea[name='mailContent3']").val();
|
||||
|
||||
if (reg.test(mailTitle1) || reg.test(mailTitle2) || reg.test(mailTitle3)){
|
||||
alert("邮件标题不能含有特殊字符");
|
||||
return false;
|
||||
}
|
||||
if (reg.test(mailContent1) || reg.test(mailContent2) || reg.test(mailContent3)){
|
||||
alert("邮件正文不能有特殊字符");
|
||||
let reg = new RegExp("[|#]",'g');
|
||||
if (reg.test(mailTitle) || reg.test(mailContent)){
|
||||
alert("邮件标题或内容包含特殊字符");
|
||||
return false;
|
||||
}
|
||||
|
||||
var mailTitle = mailTitle1+"|"+mailTitle2+"|"+mailTitle3;
|
||||
var mailContent = mailContent1+"|"+mailContent2+"|"+mailContent3;
|
||||
|
||||
var serverId = $("#serverId").val().toString();
|
||||
|
||||
var isAttach = document.getElementById("isAttach").value;
|
||||
var sendTime = $("input[name='sendTime']").val();
|
||||
var playerRTime = $("#PlayerRTime").val();
|
||||
var effectTime = $("input[name='effectTime']:checked").val();
|
||||
let serverId = $("#serverId").val().toString();
|
||||
let isAttach = document.getElementById("isAttach").value;
|
||||
let sendTime = $("input[name='sendTime']").val();
|
||||
let playerRTime = $("#PlayerRTime").val();
|
||||
let effectTime = $("input[name='effectTime']:checked").val();
|
||||
if (effectTime === "TheCustom"){
|
||||
var seconds = document.getElementById("effectTime_input").value;
|
||||
let seconds = document.getElementById("effectTime_input").value;
|
||||
effectTime = seconds*24*60*60;
|
||||
}
|
||||
var version = new Date().getTime() / 1000;
|
||||
var itemIds = [];
|
||||
var itemNums =[];
|
||||
let version = new Date().getTime() / 1000;
|
||||
let itemIds = [];
|
||||
let itemNums =[];
|
||||
if (isAttach === "1") {
|
||||
$("select[name='itemId']").each(function () {
|
||||
if($(this).val()!=='0'){
|
||||
|
|
@ -385,7 +367,7 @@
|
|||
if (data == 1) {
|
||||
layer.msg('发送全服邮件失败!', {icon: 6, time: 1000});
|
||||
}
|
||||
if (data === 2) {
|
||||
if (data == 2) {
|
||||
layer.msg('发送邮件失败 道具不能为空!', {icon: 6, time: 1000});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -265,6 +265,9 @@
|
|||
function upsertActivity() {
|
||||
// ID
|
||||
let activityId = document.getElementById("activityId").value;
|
||||
if (activityId == ""){
|
||||
activityId = null;
|
||||
}
|
||||
// 标题
|
||||
let name = document.getElementById("name").value;
|
||||
// 描述
|
||||
|
|
@ -286,6 +289,13 @@
|
|||
endTime = document.getElementById("endTime").value.replace("T"," ")+":00";
|
||||
}
|
||||
|
||||
let DateStart = new Date(startTime);
|
||||
let DateEnd = new Date(endTime);
|
||||
if (DateEnd <= DateStart) {
|
||||
alert("结束时间必须大于开始时间.");
|
||||
return false;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
data:
|
||||
|
|
@ -25,65 +25,27 @@
|
|||
<div class="page-container">
|
||||
<h1 class="f-20 text-success">太初行管理后台</h1>
|
||||
</div>
|
||||
<div style="margin-left: 20px;font-size: 18px">
|
||||
<div>
|
||||
<h2 style="color: red" class="f-36">更新日志[2022-9-26]</h2>
|
||||
<p class="f-20" style="line-height:32px;">
|
||||
1、工会列表查询功能优化,成员信息界面修改为单独页面展示<br>
|
||||
2、部分页面展示bug修改<br>
|
||||
</p>
|
||||
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-8-29]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、修改了部分界面的“服务器多选框”的样式,兼容手机页面<br>
|
||||
2、修改了服务器信息界面部分按钮的配色<br>
|
||||
3、服务器信息修改界面,给需要注意的修改内容标红提醒<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>
|
||||
3、目前可在 “批量修改服务器信息” 页面下进行复数服务器的跨服id修改,不管什么状态都可以选中一起修改,修改逻辑未变,详情可将鼠标移动到改页面的“跨服id修改”文字上即可查看<br>
|
||||
4、优化显示“服务器信息”页面中每一列的宽度<br>
|
||||
</p>
|
||||
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-7-5]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、服务器清库步骤整理(清库和修改状态操作推荐在开服当天执行,不然会导致游戏内开服时间异常):<br>
|
||||
(1)确认服务器状态处于“未运营”状态下<br>
|
||||
(2)点击修改按钮,修改服务器对应参数,重要的参数有:服务器开服时间,跨服id等。注意:这时候不要修改服务器状态<br>
|
||||
(3)点击清库按钮<br>
|
||||
(4)刷新界面,然后检查服务器开服时间和跨服id等参数是否正确<br>
|
||||
(5)确认无误后,点击修改按钮,修改服务器状态,由“未运营”修改为其他状态即可<br>
|
||||
</p>
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-6-29]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、服务器信息页面,删除缓存更新文字按钮,同时修改右上角绿色修改刷新时会更新缓存<br>
|
||||
2、部分选框没有注释的可以将鼠标移动到改选框上,会有提示。例如服务器信息界面上方,批量修改的状态多选框和跨服id输入框<br>
|
||||
3、服务器批量修改bug处理
|
||||
</p>
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-5-26]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、封禁列表显示字段优化<br>
|
||||
2、封禁列表添加天眼封禁显示<br>
|
||||
3、服务器列表添加重启和清库按钮,同时<span style="color: red">去除未运营修改为其他状态时的清库操作</span>,但是清库按钮只有在未运营状态时可使用<br>
|
||||
4、服务器修改信息添加开服时间字段<br>
|
||||
5、<span style="color: red">必看</span>:服务器处于<span style="color: red">未运营</span>状态时,修改服务器的跨服id和开服时间会立刻生效,其他状态时修改会延迟生效,具体生效时间根据功能不同来定<br>
|
||||
ps:跨服id每周一零点更新,开服时间非未运营状态修改无效<br>
|
||||
6、聊天管理界面添加封禁功能,删除功能暂未完成;需注意:封禁功能对于没有显示账号id的玩家无法封禁,请前往封禁列表自行操作,更新后的内容都会包含有账号id<br>
|
||||
7、添加重启服务器功能权限
|
||||
</p>
|
||||
<h2 style="color: red" class="f-18">更新日志[2022-5-7]</h2>
|
||||
<p class="f-14" style="line-height:32px;">
|
||||
1、优化封禁列表显示功能,添加天眼功能的封禁信息
|
||||
</p>
|
||||
</div>
|
||||
<div style="margin-left: 20px;">
|
||||
<a href="javascript:;" style="color: red" id="version">下载更新记录</a>
|
||||
</div>
|
||||
<footer class="footer mt-20">
|
||||
</footer>
|
||||
<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="h-ui/js/H-ui.min.js"></script>
|
||||
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/showdown@2.1.0/dist/showdown.min.js"></script>
|
||||
|
||||
<script>
|
||||
$('#version').on('click', function(){
|
||||
try {
|
||||
let elemIF = document.createElement("iframe");
|
||||
elemIF.src = "../version.md";
|
||||
elemIF.style.display = "none";
|
||||
document.body.appendChild(elemIF);
|
||||
} catch (e) {
|
||||
alert("下载失败!");
|
||||
}
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
## 更新日志
|
||||
|
||||
+ ### 2022-10-25
|
||||
1. 游戏管理主页签下添加自动返利活动功能,可以配置自动返利功能信息
|
||||
2. 发送邮件功能整合到邮件管理主页签下
|
||||
|
||||
+ ### 2022-9-26
|
||||
1. 工会列表查询功能优化,成员信息界面修改为单独页面展示
|
||||
2. 部分页面展示bug修改
|
||||
|
||||
+ ### 2022-8-29
|
||||
1. 修改了部分界面的“服务器多选框”的样式,兼容手机页面
|
||||
2. 修改了服务器信息界面部分按钮的配色
|
||||
3. 服务器信息修改界面,给需要注意的修改内容标红提醒
|
||||
|
||||
+ ### 2022-7-13
|
||||
1. “服务器管理”标签下添加“批量修改服务器信息”页面,用来做服务器的批量修改,包含全部状态服务器
|
||||
2. “服务器信息”界面的 批量修改跨服id输入框 移动到 “批量修改服务器信息” 界面下,修改服务器状态选择框还在原位
|
||||
3. 目前可在 “批量修改服务器信息” 页面下进行复数服务器的跨服id修改,不管什么状态都可以选中一起修改,修改逻辑未变,详情可将鼠标移动到改页面的“跨服id修改”文字上即可查看
|
||||
4. 优化显示“服务器信息”页面中每一列的宽度
|
||||
|
||||
+ ### 2022-7-5
|
||||
服务器清库步骤整理(清库和修改状态操作推荐在开服当天执行,不然会导致游戏内开服时间异常):
|
||||
1. 确认服务器状态处于“未运营”状态下
|
||||
2. 点击修改按钮,修改服务器对应参数,重要的参数有:服务器开服时间,跨服id等。注意:这时候不要修改服务器状态
|
||||
3. 点击清库按钮
|
||||
4. 刷新界面,然后检查服务器开服时间和跨服id等参数是否正确
|
||||
5. 确认无误后,点击修改按钮,修改服务器状态,由“未运营”修改为其他状态即可
|
||||
|
||||
Loading…
Reference in New Issue