From b6f56db524a99715677dc644a845abc6834d2248 Mon Sep 17 00:00:00 2001 From: Yutousama <583819556@qq.com> Date: Wed, 15 Jan 2020 18:08:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=9C=A8=E6=B7=BB=E5=8A=A0=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E8=8A=82=E7=82=B9=E8=88=B0=E9=98=9F=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sqlite.db | Bin 32768 -> 122880 bytes src/main/java/com/yutou/Data/Ship.java | 81 ++++++++++++++++++ .../controller/MapTop/MapTopController.java | 70 +++++++++++++++ src/main/java/com/yutou/controller/test.java | 20 +---- .../com/yutou/jianrdb/Dao/GameInfoLogDao.java | 7 +- .../jianrdb/Mapper/GameInfoLogService.java | 5 +- .../java/com/yutou/maptop/Bean/MapTop.java | 41 +++++---- .../java/com/yutou/maptop/Bean/UserTeam.java | 27 ++++++ .../java/com/yutou/maptop/Dao/MapDao.java | 22 +++-- .../com/yutou/maptop/Dao/UserTeamDao.java | 16 ++-- .../yutou/maptop/services/MapTopService.java | 39 +++++++++ .../maptop/services/UserTeamService.java | 20 +++-- .../java/com/yutou/utlis/JianrDataTools.java | 51 +++++++++++ 13 files changed, 339 insertions(+), 60 deletions(-) create mode 100644 src/main/java/com/yutou/Data/Ship.java create mode 100644 src/main/java/com/yutou/controller/MapTop/MapTopController.java create mode 100644 src/main/java/com/yutou/maptop/services/MapTopService.java create mode 100644 src/main/java/com/yutou/utlis/JianrDataTools.java diff --git a/sqlite.db b/sqlite.db index e758ab331c5e011ba201b30671371060ded2f9bc..c461d6f075be5d6010d66728e1584d6fcc807397 100644 GIT binary patch literal 122880 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ⅈ^fC@sq=_6R{_c&H>@D;X4iiuI8iz1C z@_g-;mDcaJu#RnoS$old9`JrS8krHXa|&ql2s$6kpXR1A5?}3O8YHbJ615A*h)pMR z2Z@9cZws>2QGA|(NdZ<|-tPLy1hyHilPB4I%+kaqGgA{6FC91_W)MhsPkV3{@mjNne5KY5`@nmsCIh3B z!bjp*{YVds{vo$dUHjfkTgag7ig!Cu5(-FU>~J;}XM*V|lZ`Q|n+a8s0S|$qfTLQN zv)g-G$92MRIh20o1#{U(JVGxp%PjEb3CZthWis1ka8fP`Apk7u@|HX@$pZ delta 512 zcmZoTz~0cnG(k#;frEhojv0Y$wuw4MGC&bM69rygbp|$`YzDrI{HOWn@zwKW^SSZ4 zZ5A~6$j#Mg$-yozE6dpAI$58`c=CK6gUSDS%2yjmHEVZxHS378K!}Caw6;GEzZa+PzZ622vP9U=bWs_ug}8&gMnjmHD4G@ zqZcFl80ouXJ3k(-l{wxOmNBl?lm+^P-X8~13@Yl<*vNA|3vOb;A`*iJelf=Zt zq@<+eaxb0FAnl{{R30 diff --git a/src/main/java/com/yutou/Data/Ship.java b/src/main/java/com/yutou/Data/Ship.java new file mode 100644 index 0000000..9b3779e --- /dev/null +++ b/src/main/java/com/yutou/Data/Ship.java @@ -0,0 +1,81 @@ +package com.yutou.Data; + +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +public class Ship { + private int level; + private String title; + private int shipCid; + private int type; + private List equipment; + + public int getLevel() { + + return level; + } + + public void setLevel(int level) { + this.level = level; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public int getShipCid() { + return shipCid; + } + + public void setShipCid(int shipCid) { + this.shipCid = shipCid; + } + + public List getEquipment() { + return equipment; + } + + public void setEquipment(List equipment) { + this.equipment = equipment; + } + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + public static Ship getInstance(JSONObject json){ + try { + Ship ship=new Ship(); + ship.setLevel(json.getInt("level")); + ship.setShipCid(json.getInt("shipCid")); + ship.setTitle(json.getString("title")); + ship.setType(json.getInt("type")); + List equipment=new ArrayList<>(); + JSONArray equip=json.getJSONArray("equipment"); + for (int i = 0; i < equip.length(); i++) { + try{ + equipment.add(equip.getInt(i)+""); + }catch (Exception e){ + equipment.add(equip.getString(i)); + } + } + ship.setEquipment(equipment); + return ship; + }catch (Exception e){ + e.printStackTrace(); + System.out.println(json.toString()); + System.exit(0); + } + return null; + } +} diff --git a/src/main/java/com/yutou/controller/MapTop/MapTopController.java b/src/main/java/com/yutou/controller/MapTop/MapTopController.java new file mode 100644 index 0000000..05ed720 --- /dev/null +++ b/src/main/java/com/yutou/controller/MapTop/MapTopController.java @@ -0,0 +1,70 @@ +package com.yutou.controller.MapTop; + +import com.alibaba.fastjson.JSONArray; +import com.yutou.Data.Ship; +import com.yutou.jianrdb.Bean.GameInfoLog; +import com.yutou.jianrdb.Mapper.GameInfoLogService; +import com.yutou.maptop.Bean.MapTop; +import com.yutou.maptop.Bean.UserTeam; +import com.yutou.maptop.services.MapTopService; +import com.yutou.maptop.services.UserTeamService; +import com.yutou.utlis.JianrDataTools; +import org.json.JSONObject; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.annotation.Resource; +import java.util.List; + +@Controller +public class MapTopController { + @Resource + GameInfoLogService gameInfoLogService; + @Resource + UserTeamService userTeamService; + @Resource + MapTopService mapTopService; + + @ResponseBody + @RequestMapping("/map/update.do") + public String updateMapTop() { + updateMap(1); + return "ok"; + } + + private void updateMap(int limit) { + List list = gameInfoLogService.getGameInfoLogByType("DealNode", limit, 500); + tcapprocessData(list); + if (list.size() == 500) { + updateMap(limit + 500); + } + } + + private void tcapprocessData(List list) { + for (GameInfoLog gameInfoLog : list) { + try { + if (!userTeamService.checkData(gameInfoLog.getUsername(), JianrDataTools.getMapNode(gameInfoLog.getExt()), JianrDataTools.getShip(new JSONObject(gameInfoLog.getMessage()),JianrDataTools.SHIP_TITLE))) { + MapTop map = new MapTop(); + map.setMapid(JianrDataTools.getMapId(gameInfoLog.getExt())); + map.setMapNode(JianrDataTools.getMapNode(gameInfoLog.getExt())); + map.setShipTeam(JianrDataTools.getShip(new JSONObject(gameInfoLog.getMessage()),JianrDataTools.SHIP_TYPE)); + int id=mapTopService.insertMapTop(map); + System.out.println(">>>>>>ID="+id); + UserTeam team=new UserTeam(); + team.setMid(id); + team.setMapNode(map.getMapNode()); + team.setUname(gameInfoLog.getUsername()); + team.setEquipment(JSONArray.toJSONString(Ship.getInstance(new JSONObject(gameInfoLog.getMessage())).getEquipment())); + team.setShip(JianrDataTools.getShip(new JSONObject(gameInfoLog.getMessage()),JianrDataTools.SHIP_TITLE)); + team.setCreateTime(gameInfoLog.getClient_time()); + userTeamService.insertTeam(team); + } + }catch (Exception e){ + e.printStackTrace(); + System.exit(0); + } + + } + } +} diff --git a/src/main/java/com/yutou/controller/test.java b/src/main/java/com/yutou/controller/test.java index c5d20b9..838a900 100644 --- a/src/main/java/com/yutou/controller/test.java +++ b/src/main/java/com/yutou/controller/test.java @@ -38,25 +38,7 @@ public class test { return JSON.toJSONString(mod); } private static int index=0; - @Resource - UserTeamService daoServier; - @ResponseBody - @RequestMapping("/team/insert.do") - public String searchMod(String id) { - UserTeam team=new UserTeam(); - team.setUname("名字"+(index++)); - team.setCreateTime(new Date()); - team.setShip("aaabbbccc"+index); - daoServier.insertTeam(team); - return "ok"; - } - @ResponseBody - @RequestMapping("/team/select.do") - public String selectTeam(){ - List list= daoServier.selectById(-1); - return JSON.toJSONString(list); - } - + @RequestMapping("/redis/set.do") @ResponseBody diff --git a/src/main/java/com/yutou/jianrdb/Dao/GameInfoLogDao.java b/src/main/java/com/yutou/jianrdb/Dao/GameInfoLogDao.java index 22cbf29..2011ede 100644 --- a/src/main/java/com/yutou/jianrdb/Dao/GameInfoLogDao.java +++ b/src/main/java/com/yutou/jianrdb/Dao/GameInfoLogDao.java @@ -9,10 +9,7 @@ import java.util.List; @Qualifier("db2SqlSessionTemplate") public interface GameInfoLogDao { - @Select("select * from game_info_log where id=#{id}") - GameInfoLog getLog(@Param("id")int id); - - @Select("select * from game_info_log where type=#{type}") - List getAllByType(@Param("type")String type); + @Select("select * from game_info_log where type=#{type} limit #{limit},#{count}") + List getAllByType(@Param("type")String type,@Param("limit")int limit,@Param("count")int count); } diff --git a/src/main/java/com/yutou/jianrdb/Mapper/GameInfoLogService.java b/src/main/java/com/yutou/jianrdb/Mapper/GameInfoLogService.java index 8f2eabc..9cb23bc 100644 --- a/src/main/java/com/yutou/jianrdb/Mapper/GameInfoLogService.java +++ b/src/main/java/com/yutou/jianrdb/Mapper/GameInfoLogService.java @@ -5,13 +5,14 @@ import com.yutou.jianrdb.Dao.GameInfoLogDao; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.List; @Service public class GameInfoLogService { @Resource GameInfoLogDao gameInfoLogDao; - public GameInfoLog selectGameInfoLogById(int id){ - return gameInfoLogDao.getLog(id); + public List getGameInfoLogByType(String type,int limit,int count){ + return gameInfoLogDao.getAllByType(type, limit, count); } } diff --git a/src/main/java/com/yutou/maptop/Bean/MapTop.java b/src/main/java/com/yutou/maptop/Bean/MapTop.java index c09f43a..e389e67 100644 --- a/src/main/java/com/yutou/maptop/Bean/MapTop.java +++ b/src/main/java/com/yutou/maptop/Bean/MapTop.java @@ -1,11 +1,15 @@ package com.yutou.maptop.Bean; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + public class MapTop { private int id; - private int mapid; - private String mapNode; + private int mapId; + private int mapNode; private String shipTeam; - private int teamId; public int getId() { return id; @@ -16,34 +20,41 @@ public class MapTop { } public int getMapid() { - return mapid; + return mapId; } public void setMapid(int mapid) { - this.mapid = mapid; + this.mapId = mapid; } - public String getMapNode() { - return mapNode; - } - public void setMapNode(String mapNode) { - this.mapNode = mapNode; - } public String getShipTeam() { return shipTeam; } public void setShipTeam(String shipTeam) { + List list=new ArrayList<>(); + shipTeam=shipTeam.replace("[",""); + shipTeam=shipTeam.replace("]",""); + for (String ship : shipTeam.split(",")) { + list.add(Integer.parseInt(ship)); + } + Collections.sort(list); + shipTeam="["; + for (Integer integer : list) { + shipTeam+=integer+","; + } + shipTeam = shipTeam.substring(0, shipTeam.length() - 1) + "]"; + this.shipTeam = shipTeam; } - public int getTeamId() { - return teamId; + public int getMapNode() { + return mapNode; } - public void setTeamId(int teamId) { - this.teamId = teamId; + public void setMapNode(int mapNode) { + this.mapNode = mapNode; } } diff --git a/src/main/java/com/yutou/maptop/Bean/UserTeam.java b/src/main/java/com/yutou/maptop/Bean/UserTeam.java index 96b1714..5f9f8a5 100644 --- a/src/main/java/com/yutou/maptop/Bean/UserTeam.java +++ b/src/main/java/com/yutou/maptop/Bean/UserTeam.java @@ -4,7 +4,10 @@ import java.util.Date; public class UserTeam { private int id; + private int mid; + private int mapNode; private String uname; + private String equipment; private String ship; private Date createTime; @@ -39,4 +42,28 @@ public class UserTeam { public void setCreateTime(Date createTime) { this.createTime = createTime; } + + public int getMid() { + return mid; + } + + public void setMid(int mid) { + this.mid = mid; + } + + public int getMapNode() { + return mapNode; + } + + public void setMapNode(int mapNode) { + this.mapNode = mapNode; + } + + public String getEquipment() { + return equipment; + } + + public void setEquipment(String equipment) { + this.equipment = equipment; + } } diff --git a/src/main/java/com/yutou/maptop/Dao/MapDao.java b/src/main/java/com/yutou/maptop/Dao/MapDao.java index 20b01ae..1a3e34e 100644 --- a/src/main/java/com/yutou/maptop/Dao/MapDao.java +++ b/src/main/java/com/yutou/maptop/Dao/MapDao.java @@ -1,16 +1,24 @@ package com.yutou.maptop.Dao; import com.yutou.maptop.Bean.MapTop; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; import java.util.List; public interface MapDao { - @Select("select * from maptop where id=#{id}") - List selectMapByMapId(@Param("id") int id); + @Select("select * from maptop where mapId=#{mapId} limit #{limit},#{count}") + List selectMapByMapId(@Param("mapId")int mapId,@Param("limit") int limit,@Param("count")int count); - @Insert("insert into maptop(mapId,mapNode,shipTeam,teamId) values(#{mapId},#{mapNode},#{shipTeam},#{teamId})") - void insertMapTop(MapTop top); + @Insert("insert into maptop(mapId,mapNode,shipTeam) values(#{mapId},#{mapNode},#{shipTeam})") + @Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id") + int insertMapTop(MapTop top); + + @Select("select count(id) from maptop where mapId=#{mapId} and mapNode=#{mapNode}") + int checkMap(MapTop top); + + @Select("select id from maptop order by id desc limit 1,1") + int getDescId(); + + @Select("select * from maptop where mapId=#{mapId} and mapNode=#{mapNode} and shipTeam=#{shipTeam}") + MapTop selectMapByData(@Param("mapId")int mapId,@Param("mapNode")int mapNode,@Param("shipTeam")String shipTeam); } diff --git a/src/main/java/com/yutou/maptop/Dao/UserTeamDao.java b/src/main/java/com/yutou/maptop/Dao/UserTeamDao.java index da935c3..33abdf0 100644 --- a/src/main/java/com/yutou/maptop/Dao/UserTeamDao.java +++ b/src/main/java/com/yutou/maptop/Dao/UserTeamDao.java @@ -1,9 +1,7 @@ package com.yutou.maptop.Dao; import com.yutou.maptop.Bean.UserTeam; -import org.apache.ibatis.annotations.Insert; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.*; import java.util.List; @@ -11,9 +9,15 @@ public interface UserTeamDao { @Select("select * from userTeam where id=#{id}") List selectTeamById(@Param("id") int id); - @Insert("insert into userTeam(uname,ship,createTime) values(#{uname},#{ship},#{createTime})") + @Insert("insert into userTeam(uname,ship,createTime,mid,mapNode,equipment) values(#{uname},#{ship},#{createTime},#{mid},#{mapNode},#{equipment})") void insertTeam( UserTeam param); - @Select("select * from userTeam") - List selectAll(); + @Select("select count(id) from userTeam where uname=#{uname} and ship=#{ship} and mapNode=#{mapNode}") + int checkData(UserTeam userTeam); + + + @Delete("delete from userTeam") + void deleteData(); + @Delete("DELETE FROM sqlite_sequence WHERE name = 'userTeam'") + void clear(); } diff --git a/src/main/java/com/yutou/maptop/services/MapTopService.java b/src/main/java/com/yutou/maptop/services/MapTopService.java new file mode 100644 index 0000000..2a79012 --- /dev/null +++ b/src/main/java/com/yutou/maptop/services/MapTopService.java @@ -0,0 +1,39 @@ +package com.yutou.maptop.services; + +import com.yutou.maptop.Bean.MapTop; +import com.yutou.maptop.Dao.MapDao; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +@Service +public class MapTopService { + @Resource + MapDao mapDao; + + public List selectMapByMapId(int mapId, int limit, int count) { + return mapDao.selectMapByMapId(mapId, limit, count); + } + + public int insertMapTop(MapTop top) { + int id=0; + MapTop old=mapDao.selectMapByData(top.getMapid(),top.getMapNode(),top.getShipTeam()); + if(old!=null){//检测到有对应的map数据,返回id + return old.getId(); + }else{ + try { + id=mapDao.getDescId();//获取最后的id + }catch (Exception ignored){ + + } + mapDao.insertMapTop(top); + id++; + } + return id; + } + + public int checkMap(MapTop top) { + return mapDao.checkMap(top); + } +} diff --git a/src/main/java/com/yutou/maptop/services/UserTeamService.java b/src/main/java/com/yutou/maptop/services/UserTeamService.java index 6271b88..4e8940a 100644 --- a/src/main/java/com/yutou/maptop/services/UserTeamService.java +++ b/src/main/java/com/yutou/maptop/services/UserTeamService.java @@ -12,14 +12,22 @@ public class UserTeamService { @Resource UserTeamDao dao; - public void insertTeam(UserTeam team){ + public void insertTeam(UserTeam team) { dao.insertTeam(team); } - public List selectById(int id){ - if(id==-1){ - return dao.selectAll(); - } - return dao.selectTeamById(id); + public boolean checkData(String uname, int mapId, String ship) { + if (ship == null) + return true; + UserTeam team = new UserTeam(); + team.setUname(uname); + team.setMapNode(mapId); + team.setShip(ship); + return dao.checkData(team) > 0; + } + + public void clear() { + dao.deleteData(); + dao.clear(); } } diff --git a/src/main/java/com/yutou/utlis/JianrDataTools.java b/src/main/java/com/yutou/utlis/JianrDataTools.java new file mode 100644 index 0000000..bfa827f --- /dev/null +++ b/src/main/java/com/yutou/utlis/JianrDataTools.java @@ -0,0 +1,51 @@ +package com.yutou.utlis; + +import com.yutou.Data.Ship; +import org.json.JSONArray; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +public class JianrDataTools { + public final static int SHIP_TYPE = 0; + public final static int SHIP_TITLE = 1; + public final static int SHIP_CID = 2; + + public static String getShip(JSONObject message, int type) { + String ship = null; + if(message.isNull("warReport")){ + return null; + } + JSONArray array = message.getJSONObject("warReport").getJSONArray("selfShips"); + ship = "["; + for (int i = 0; i < array.length(); i++) { + Ship sp = Ship.getInstance(array.getJSONObject(i)); + switch (type) { + case SHIP_CID: + ship += sp.getShipCid() + ","; + break; + case SHIP_TITLE: + ship += sp.getTitle() + ","; + break; + case SHIP_TYPE: + ship += sp.getType() + ","; + break; + } + + } + ship = ship.substring(0, ship.length() - 1) + "]"; + return ship; + } + + + public static int getMapId(String ext) { + JSONObject json = new JSONObject(ext); + return json.getInt("n") / 100; + } + + public static int getMapNode(String ext) { + JSONObject json = new JSONObject(ext); + return json.getInt("n"); + } +}