diff --git a/src/main/java/com/yutou/tools/ad/AdController.java b/src/main/java/com/yutou/tools/ad/AdController.java index 9c1f5dd..dbb67c6 100644 --- a/src/main/java/com/yutou/tools/ad/AdController.java +++ b/src/main/java/com/yutou/tools/ad/AdController.java @@ -1,10 +1,126 @@ package com.yutou.tools.ad; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.yutou.tools.sqlite.ADSQLiteManager; import org.springframework.stereotype.Controller; +import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; @Controller @RequestMapping("ad/") public class AdController { + @RequestMapping("addApp.do") + @ResponseBody + public String addApp(String packageName, String appName) { + JSONObject json = new JSONObject(); + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + json.put("code", 0); + json.put("data", manager.addAppData(appName, packageName)); + return json.toJSONString(); + } + + @RequestMapping("addAppAd.do") + @ResponseBody + public String addAppAd(String appId, String adSrc, String adAppId, String adAppKey, String adOpenKey, String adInterKey, + String adBannerKey, String adVideoKey, String adNativeKey) { + JSONObject json = new JSONObject(); + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + json.put("code", 0); + json.put("data", manager.addAdData(appId, adSrc, adAppId, adAppKey, adOpenKey, adInterKey, adBannerKey, adVideoKey, adNativeKey)); + return json.toJSONString(); + } + + @RequestMapping("addAdLog.do") + @ResponseBody + public String addLog(String appId, String src, String type, String model) { + JSONObject json = new JSONObject(); + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + json.put("code", 0); + json.put("data", manager.addLog(appId, src, type, model)); + return json.toJSONString(); + } + + @RequestMapping("getAppAd.do") + @ResponseBody + public String getAppAd(String appId, String packageName) { + JSONObject json = new JSONObject(); + if (StringUtils.isEmpty(appId) && StringUtils.isEmpty(packageName)) { + json.put("code", -1); + json.put("msg", "参数为空"); + json.put("data", ""); + return json.toJSONString(); + } + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + json.put("code", 0); + if (StringUtils.isEmpty(appId)) { + json.put("data", manager.getAdDataOfPackageName(packageName)); + } else { + json.put("data", manager.getAdData(appId)); + } + return json.toJSONString(); + } + + @RequestMapping("getApp.do") + @ResponseBody + public String getApp(String appName, String packageName) { + JSONObject json = new JSONObject(); + json.put("code", 0); + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + if (StringUtils.isEmpty(appName) && StringUtils.isEmpty(packageName)) { + json.put("data", manager.getAllApp()); + return json.toJSONString(); + } + if (StringUtils.isEmpty(appName)) { + json.put("data", manager.getAppOfPackageName(packageName)); + } else { + json.put("data", manager.getAppOfAppName(appName)); + } + return json.toJSONString(); + } + @RequestMapping("getAdLog.do") + @ResponseBody + public String getLog(String appId, String startTime, String endTime) { + JSONObject json = new JSONObject(); + if (StringUtils.isEmpty(appId)) { + json.put("code", -1); + json.put("msg", "AppId为空"); + return json.toJSONString(); + } + String st = null; + String et = null; + //开始时间为空,则给当日开始时时间 + if (StringUtils.isEmpty(startTime) || (StringUtils.isEmpty(startTime) && StringUtils.isEmpty(endTime))) { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + st = calendar.getTimeInMillis() + ""; + } + //结束时间为空则取当前时间 + if (StringUtils.isEmpty(endTime)) { + et = System.currentTimeMillis() + ""; + } + try { + if (st == null) { + st = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(startTime).getTime() + ""; + } + if (et == null) { + et = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA).parse(endTime).getTime() + ""; + } + ADSQLiteManager manager = ADSQLiteManager.getInstance(); + json.put("data", manager.getLog(appId, st, et)); + } catch (Exception e) { + e.printStackTrace(); + } + + return json.toJSONString(); + } } diff --git a/src/main/java/com/yutou/tools/sqlite/ADSQLiteManager.java b/src/main/java/com/yutou/tools/sqlite/ADSQLiteManager.java new file mode 100644 index 0000000..40b1a45 --- /dev/null +++ b/src/main/java/com/yutou/tools/sqlite/ADSQLiteManager.java @@ -0,0 +1,214 @@ +package com.yutou.tools.sqlite; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.UUID; + +public class ADSQLiteManager extends SQLiteManager { + private static ADSQLiteManager manager; + + public static ADSQLiteManager getInstance() { + if (manager == null) { + manager = new ADSQLiteManager(); + } + return manager; + } + + private ADSQLiteManager() { + super(); + JSONObject json = JSONObject.parseObject("{\"file\":\"ad.db\",\"table\":[{\"name\":\"app\",\"item\":[{\"name\":\"id\",\"type\":\"int\",\"isNull\":false,\"isKey\":true},{\"name\":\"appName\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"packageName\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"appId\",\"type\":\"String\",\"isNull\":false,\"isKey\":false}]},{\"name\":\"app_ad\",\"item\":[{\"name\":\"id\",\"type\":\"int\",\"isNull\":false,\"isKey\":true},{\"name\":\"appId\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adSrc\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adAppId\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adAppKey\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adOpenKey\",\"type\":\"String\",\"isNull\":true,\"isKey\":false},{\"name\":\"adInterKey\",\"type\":\"String\",\"isNull\":true,\"isKey\":false},{\"name\":\"adBannerKey\",\"type\":\"String\",\"isNull\":true,\"isKey\":false},{\"name\":\"adVideoKey\",\"type\":\"String\",\"isNull\":true,\"isKey\":false},{\"name\":\"adNativeKey\",\"type\":\"String\",\"isNull\":true,\"isKey\":false}]},{\"name\":\"ad_log\",\"item\":[{\"name\":\"id\",\"type\":\"int\",\"isNull\":false,\"isKey\":true},{\"name\":\"appId\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adSrc\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"adType\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"model\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"subtime\",\"type\":\"String\",\"isNull\":false,\"isKey\":false}]}]}"); + build(json); + } + + public boolean addAdData(String appId, String adSrc, String adAppId, String adAppKey, String adOpenKey, String adInterKey, + String adBannerKey, String adVideoKey, String adNativeKey) { + try { + if (getAdData(appId) != null) { + return false; + } + Statement statement = conn.createStatement(); + String sql = "insert into `app_ad` (`appId`,`adSrc`,`adAppId`,`adAppKey`,`adOpenKey`,`adInterKey`,`adBannerKey`,`adVideoKey`,`adNativeKey`) values " + + "('" + appId + "','" + adSrc + "','" + adAppId + "','" + adAppKey + "','" + adOpenKey + "','" + adInterKey + "','" + adBannerKey + "','" + adVideoKey + "','" + adNativeKey + "');"; + boolean flag = statement.execute(sql); + statement.close(); + return flag; + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + public boolean addLog(String appId, String src, String type, String model) { + try { + Statement statement = conn.createStatement(); + String sql = "insert into `ad_log` (`appId`,`adSrc`,`adType`,`model`,`subtime`) values ('" + appId + "','" + src + "','" + type + + "','" + model + "','" + System.currentTimeMillis() + "'); "; + boolean flag = statement.execute(sql); + statement.close(); + return flag; + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + public String addAppData(String appName, String packageName) { + try { + if (getAppOfPackageName(packageName) != null) { + return getAppOfPackageName(packageName).getString("appId"); + } + Statement statement = conn.createStatement(); + String appId = UUID.randomUUID().toString(); + String sql = "insert into `app`(`appName`,`packageName`,`appId`) values ('" + appName + "','" + packageName + "','" + appId + "')"; + statement.execute(sql); + statement.close(); + return appId; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public JSONObject getAdData(String appId) { + try { + Statement statement = conn.createStatement(); + String sql = "select * from `app_ad` where `appId`='" + appId + "';"; + return getData(statement, sql); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + public JSONObject getAdDataOfPackageName(String packageName) { + + try { + Statement statement = conn.createStatement(); + String sql = "select * from `app_ad` where `packageName`='" + packageName + "';"; + return getData(statement, sql); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + private JSONObject getData(Statement statement, String sql) throws SQLException { + JSONObject json=null; + ResultSet set = statement.executeQuery(sql); + if (set.next()) { + json=new JSONObject(); + json.put("appId", set.getString("appId")); + json.put("adSrc", set.getString("adSrc")); + json.put("adAppId", set.getString("adAppId")); + json.put("adAppKey", set.getString("adAppKey")); + json.put("adOpenKey", set.getString("adOpenKey")); + json.put("adInterKey", set.getString("adInterKey")); + json.put("adBannerKey", set.getString("adBannerKey")); + json.put("adVideoKey", set.getString("adVideoKey")); + json.put("adNativeKey", set.getString("adNativeKey")); + } + set.close(); + statement.close(); + return json; + } + + public JSONArray getLog(String appId, String startTime, String endTime) { + try { + JSONArray array = new JSONArray(); + Statement statement = conn.createStatement(); + String sql = "select * from `ad_log` where `appId`=`" + appId + "` and `subtime` >=" + startTime + " and `subtime` <=" + endTime + ";"; + ResultSet set = statement.executeQuery(sql); + while (set.next()) { + JSONObject item = new JSONObject(); + item.put("id", set.getInt("id")); + item.put("appId", set.getString("appId")); + item.put("adSrc", set.getString("adSrc")); + item.put("adType", set.getString("adType")); + item.put("model", set.getString("model")); + item.put("subtime", set.getString("subtime")); + array.add(item); + } + set.close(); + statement.close(); + return array; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + public JSONObject getAppOfAppName(String appName){ + try { + JSONObject json=new JSONObject(); + Statement statement=conn.createStatement(); + String sql="select * from `app` where `appName`='"+appName+"';"; + json=getApp(statement, sql); + statement.close(); + return json; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + public JSONObject getAppOfPackageName(String packageName){ + try { + JSONObject json=new JSONObject(); + Statement statement=conn.createStatement(); + String sql="select * from `app` where `packageName`='"+packageName+"';"; + json=getApp(statement, sql); + statement.close(); + return json; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + public JSONArray getAllApp(){ + try { + JSONArray array=new JSONArray(); + Statement statement=conn.createStatement(); + String sql="select * from `app` ;"; + ResultSet set=statement.executeQuery(sql); + while (set.next()){ + JSONObject json=new JSONObject(); + json.put("id",set.getInt("id")); + json.put("appId",set.getString("appId")); + json.put("appName",set.getString("appName")); + json.put("packageName",set.getString("packageName")); + array.add(json); + } + return array; + }catch (Exception e){ + e.printStackTrace(); + } + return null; + } + private JSONObject getApp(Statement statement, String sql) throws SQLException { + JSONObject json=null; + ResultSet set=statement.executeQuery(sql); + if(set.next()){ + json=new JSONObject(); + json.put("id",set.getInt("id")); + json.put("appId",set.getString("appId")); + json.put("appName",set.getString("appName")); + json.put("packageName",set.getString("packageName")); + } + set.close(); + statement.close(); + return json; + } + + public void close() { + try { + if (conn != null && !conn.isClosed()) { + conn.close(); + } + conn = null; + } catch (SQLException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/yutou/tools/sqlite/SQLiteManager.java b/src/main/java/com/yutou/tools/sqlite/SQLiteManager.java index 31654ac..c6ab90f 100644 --- a/src/main/java/com/yutou/tools/sqlite/SQLiteManager.java +++ b/src/main/java/com/yutou/tools/sqlite/SQLiteManager.java @@ -11,17 +11,10 @@ import java.sql.SQLException; import java.sql.Statement; public class SQLiteManager { - private static SQLiteManager manager; protected Connection conn; private String url = "jdbc:sqlite:"; private File sql; - public static SQLiteManager getInstance() { - if (manager == null) { - manager = new SQLiteManager(); - } - return manager; - } public void startBatch() { try { @@ -50,9 +43,14 @@ public class SQLiteManager { protected SQLiteManager() { } - - private void createSql(JSONObject json) { - JSONObject table = json.getJSONObject("table"); + private void createSql(JSONObject json){ + JSONArray array=json.getJSONArray("table"); + for (Object o : array) { + createSqlOfTable((JSONObject) o); + } + ConfigTools.save(ConfigTools.SQLITE, json.getString("file"), json); + } + private void createSqlOfTable(JSONObject table) { String tableName = table.getString("name"); try { sql.mkdirs(); @@ -90,13 +88,13 @@ public class SQLiteManager { } sql.append(");"); statement.execute(sql.toString().replace(",);", ");")); - ConfigTools.save(ConfigTools.SQLITE,json.getString("file"),json); + } catch (Exception e) { e.printStackTrace(); } } - private void build(JSONObject json) { + protected void build(JSONObject json) { try { Class.forName("org.sqlite.JDBC"); sql = new File("db" + File.separator + json.getString("file")); @@ -110,8 +108,24 @@ public class SQLiteManager { } } + public boolean setDB(String fileName) { + try { + Class.forName("org.sqlite.JDBC"); + sql = new File("db" + File.separator + fileName); + if (sql.exists()) { + if (conn != null && !conn.isClosed()) { + conn.close(); + } + conn = DriverManager.getConnection(url + sql.getAbsolutePath()); + return true; + } + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + public static void main(String[] args) { - JSONObject json = JSONObject.parseObject("{\"file\":\"ad.db\",\"table\":{\"name\":\"sql\",\"item\":[{\"name\":\"id\",\"type\":\"int\",\"isNull\":false,\"isKey\":true},{\"name\":\"ticket_tmp\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"ticket\",\"type\":\"String\",\"isNull\":false,\"isKey\":false},{\"name\":\"scannIndex\",\"type\":\"int\",\"isNull\":false,\"isKey\":false}]}}"); - SQLiteManager.getInstance().build(json); + } } diff --git a/web/html/body/ad/ad.html b/web/html/body/ad/ad.html new file mode 100644 index 0000000..8cfebf2 --- /dev/null +++ b/web/html/body/ad/ad.html @@ -0,0 +1,26 @@ + + + + + 广告管理 + + + +
+ +
+
+
+ +
+
+ + + + + \ No newline at end of file