|
|
@@ -1,88 +1,68 @@
|
|
|
<%@ page pageEncoding="utf-8" contentType="text/html; charset=utf-8" %>
|
|
|
<%request.setCharacterEncoding("utf-8");%>
|
|
|
-<%@ page language="java" import="java.sql.*,java.util.Arrays" %>
|
|
|
-<%@ page language="java" import="java.util.*, util.*" %>
|
|
|
-<%@ page language="java" import="system.*" %>
|
|
|
-<%@ page language="java" import="util.*" %>
|
|
|
-<%@ page language="java" import="biz.*" %>
|
|
|
-<%@ page language="java" import="net.sf.json.JSONObject" %>
|
|
|
+<%@ page language="java" import="util.ExtendString" %>
|
|
|
+<%@ page import="org.jooq.impl.DSL" %>
|
|
|
+<%@ page import="dbconnection.DbConnection" %>
|
|
|
+<%@ page import="static jooq.Tables.MEMBERINFO" %>
|
|
|
+<%@ page import="java.util.List" %>
|
|
|
+<%@ page import="java.util.Arrays" %>
|
|
|
+<%@ page import="java.util.ArrayList" %>
|
|
|
+<%@ page import="jooq.tables.Memberinfo" %>
|
|
|
+<%@ page import="biz.thmodel" %>
|
|
|
<%@ page import="org.apache.commons.lang.StringUtils" %>
|
|
|
+<%@ page import="system.DBRecordsPack" %>
|
|
|
+<%@ page import="net.sf.json.JSONObject" %>
|
|
|
+<%@ page import="org.jooq.*" %>
|
|
|
<jsp:useBean id="db" class="dbconnection.DbConnection" scope="page"/>
|
|
|
<%
|
|
|
- String path = request.getContextPath();
|
|
|
- String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
|
|
|
- String Sess_BrokerPK = ExtendString.getDBStr((String) session.getAttribute("BrokerPK"));
|
|
|
- String userpk = ExtendString.getDBStr((String) session.getAttribute("userpk"));
|
|
|
- String username = ExtendString.getDBStr((String) session.getAttribute("username"));
|
|
|
- String MembType = ExtendString.getDBStr((String) session.getAttribute("MembType"));
|
|
|
- String IsAdmin = ExtendString.getDBStr((String) session.getAttribute("IsAdmin"));
|
|
|
- String sess_MemberPK = ExtendString.getDBStr((String) session.getAttribute("MemberPK"));
|
|
|
-
|
|
|
- int items_per_page = 10;
|
|
|
- javax.sql.rowset.CachedRowSet rs = null;
|
|
|
String operator = ExtendString.getDBStr(request.getParameter("operator"));
|
|
|
- String brokepk = ExtendString.getDBStr(request.getParameter("brokepk")); //经纪人PK(BrokerInfor.pk)
|
|
|
- String BMemberPK = ExtendString.getDBStr(request.getParameter("bmemberpk")); //经纪人memberpk
|
|
|
- String sql;
|
|
|
- int rownum = 0;
|
|
|
- if (brokepk.equals("")) brokepk = "0";
|
|
|
- if (BMemberPK.equals("")) BMemberPK = "0";
|
|
|
- String invitor = request.getParameter("invitor");
|
|
|
- if (invitor == null) {
|
|
|
- invitor = "";
|
|
|
- }
|
|
|
out.clear();
|
|
|
+ DSLContext ctx = DSL.using(DbConnection.getPara("MySQLURL"));
|
|
|
if (operator.equals("query")) {
|
|
|
+ response.setContentType("application/json");
|
|
|
int PageIndex = Integer.parseInt(request.getParameter("PageIndex"));
|
|
|
String keyword = ExtendString.getDBStr(request.getParameter("keyword"));
|
|
|
- String BaseSQL = "select a.PK as memberpk, a.Tel, a.Pet, a.Phone, b.Name as DengJiName, c.Name as AreaName, a.ID as SFZID, " +
|
|
|
- " a.acc, a.SignDays, " +
|
|
|
- " CAST(FORMAT(a.coin_A,2) as char) as coin_A, " +
|
|
|
- " CAST(FORMAT(a.coin_I,2) as char) as coin_I, " +
|
|
|
- " CAST(FORMAT(a.coin_OR,2) as char) as coin_OR, " +
|
|
|
- " CAST(FORMAT(a.coin_OV,2) as char) as coin_OV, " +
|
|
|
- " CAST(FORMAT(a.coin_OS,2) as char) as coin_OS, " +
|
|
|
- " CAST(FORMAT(a.coin_O,2) as char) as coin_O, " +
|
|
|
- " CAST(FORMAT(a.coin_OI,2) as char) as coin_OI, " +
|
|
|
- " DATE_FORMAT(a.LastSign,'%Y-%m-%d %H:%i:%s') as LastSign, " +
|
|
|
- " DATE_FORMAT(a.MDate,'%Y-%m-%d %H:%i:%s') as MDate, " +
|
|
|
- " (Select count(*) C From MemberInfo x where x.PK = a.IntroducerPK and X.MembType=" + thmodel.MEMTYPE_HuiYuan + " ) as C_HuiYuan, " +
|
|
|
- " (Select count(*) C From MemberInfo y where y.PK = a.IntroducerPK and y.MembType=" + thmodel.MEMTYPE_Model + " ) as C_Model " +
|
|
|
- "from MemberInfo a Left Join (select PK, Name from datatypeinfo where typename='会员等级') b on a.MembClass = b.PK " +
|
|
|
- " Left Join (select PK, Name from datatypeinfo where typename='地区') c on a.Area = c.PK " +
|
|
|
- "where a.MembType = " + thmodel.MEMTYPE_HuiYuan + " ";
|
|
|
+ String invitor = ExtendString.getDBStr(request.getParameter("invitor"));
|
|
|
+
|
|
|
+ Memberinfo a = MEMBERINFO.as("a");
|
|
|
+ Memberinfo b = MEMBERINFO.as("b");
|
|
|
+ Memberinfo c = MEMBERINFO.as("c");
|
|
|
+ List<Field> fields = new ArrayList<>(Arrays.asList(a.fields()));
|
|
|
+ fields.add(ctx.selectCount().from(b).where(b.INTRODUCERPK.equal(a.PK)).and(b.MEMBTYPE.equal(Integer.valueOf(thmodel.MEMTYPE_HuiYuan))).asField("introMemberNum"));
|
|
|
+ fields.add(ctx.selectCount().from(c).where(c.INTRODUCERPK.equal(a.PK)).and(c.MEMBTYPE.equal(Integer.valueOf(thmodel.MEMTYPE_Model))).asField("introModelNum"));
|
|
|
+ SelectConditionStep<Record> select = ctx.select(fields.stream().toArray(Field[]::new)).from(a).where(a.MEMBTYPE.equal(Integer.valueOf(thmodel.MEMTYPE_HuiYuan)));
|
|
|
if (StringUtils.isNotEmpty(invitor)) {
|
|
|
- BaseSQL += " and a.introducerPK = " + invitor;
|
|
|
+ select.and(a.INTRODUCERPK.equal(Integer.valueOf(invitor)));
|
|
|
}
|
|
|
- if (keyword.length() > 0)
|
|
|
- BaseSQL += String.format(" and (a.Tel like '%%%s%%' or a.Pet like '%%%s%%' or a.Phone like '%%%s%%') ",
|
|
|
- keyword, keyword, keyword);
|
|
|
- BaseSQL = BaseSQL + " Order by a.MDate Desc ";
|
|
|
- if (PageIndex == -1)
|
|
|
- sql = BaseSQL + " LIMIT 0, " + String.valueOf(items_per_page);
|
|
|
- else
|
|
|
- sql = BaseSQL + " LIMIT " + String.valueOf(items_per_page * PageIndex)
|
|
|
- + "," + String.valueOf(items_per_page);
|
|
|
-
|
|
|
- List<JSONObject> jsonList = DBRecordsPack.Pack(db, sql);
|
|
|
- if (PageIndex == -1) {
|
|
|
- rs = db.executeQuery("Select Count(*) C from (" + BaseSQL + ") as t_cc ");
|
|
|
- if ((rs != null) && rs.next()) {
|
|
|
- JSONObject jsonObj = new JSONObject();
|
|
|
- jsonObj.put("result", "CachedRowSet");
|
|
|
- jsonObj.put("recordcount", rs.getInt(1));
|
|
|
- jsonObj.put("pageindex", 0);
|
|
|
- jsonList.add(jsonObj);
|
|
|
+ if (StringUtils.isNotEmpty(keyword)) {
|
|
|
+ select.and(a.TEL.containsIgnoreCase(keyword)).or(a.PET.containsIgnoreCase(keyword).or(a.PHONE.containsIgnoreCase(keyword)));
|
|
|
+ }
|
|
|
+ select.orderBy(a.ID.desc()).limit((PageIndex - 1) * 10, 10);
|
|
|
+ System.out.println(select.getSQL(true));
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("data", DBRecordsPack.Pack(select.fetch()));
|
|
|
+ if (PageIndex == 1) {
|
|
|
+ SelectConditionStep<Record1<Integer>> selectTotal = ctx.selectCount().from(a).where(a.MEMBTYPE.equal(Integer.valueOf(thmodel.MEMTYPE_HuiYuan)));
|
|
|
+ if (StringUtils.isNotEmpty(invitor)) {
|
|
|
+ selectTotal.and(a.INTRODUCERPK.equal(Integer.valueOf(invitor)));
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotEmpty(keyword)) {
|
|
|
+ selectTotal.and(a.TEL.containsIgnoreCase(keyword)).or(a.PET.containsIgnoreCase(keyword).or(a.PHONE.containsIgnoreCase(keyword)));
|
|
|
}
|
|
|
+ jsonObject.put("total", selectTotal.fetchOne().value1());
|
|
|
}
|
|
|
- out.clear();
|
|
|
- out.print(jsonList);
|
|
|
+ out.print(jsonObject);
|
|
|
+ ctx.close();
|
|
|
return;
|
|
|
} else if (operator.equals("delete")) {
|
|
|
+ response.setContentType("application/json");
|
|
|
String memberpk = ExtendString.getDBStr(request.getParameter("memberpk"));
|
|
|
String delSql = "delete from memberinfo where PK = " + memberpk;
|
|
|
- db.executeUpdate(delSql);
|
|
|
- out.print("success");
|
|
|
+ ctx.execute(delSql);
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("success", true);
|
|
|
+ out.print(jsonObject);
|
|
|
+ ctx.close();
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -91,258 +71,70 @@
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
<head>
|
|
|
- <base href="<%=basePath %>"/>
|
|
|
- <meta http-equiv="X-UA-Compatible" content="IE=emulateIE7"/>
|
|
|
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
|
|
- <link rel="stylesheet" type="text/css" href="<%=basePath%>css/style.css"/>
|
|
|
- <link rel="stylesheet" type="text/css" href="<%=basePath%>css/WdatePicker.css"/>
|
|
|
- <link rel="stylesheet" type="text/css" href="<%=basePath%>css/skin_/table.css"/>
|
|
|
- <link rel="stylesheet" type="text/css" href="<%=basePath%>css/jquery.grid.css"/>
|
|
|
+ <base href="${pageContext.request.contextPath}"/>
|
|
|
<title>会员查询</title>
|
|
|
+ <%@include file="/_common.jsp" %>
|
|
|
</head>
|
|
|
<body>
|
|
|
-<div id="container">
|
|
|
- <div id="hd"></div>
|
|
|
- <div id="bd">
|
|
|
- <div id="main">
|
|
|
- <div class="search-box ue-clear">
|
|
|
- <div class="search-area">
|
|
|
- <div class="kv-item ue-clear">
|
|
|
- <label>关键字:</label>
|
|
|
- <span></span>
|
|
|
- <input type="text" name="keyword" style="width:200px" placeholder="关键字"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="search-button">
|
|
|
- <span></span>
|
|
|
- <input class="button" id="button" type="button" value="搜索一下" onClick="ButtonClick();"/>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div class="table">
|
|
|
- <div class="grid"></div>
|
|
|
-
|
|
|
- <div class="pagination"></div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+<div id="app">
|
|
|
+ <div class="query-filters">
|
|
|
+ <el-input v-model="keyword" placeholder="输入关键字" size="small" clearable></el-input>
|
|
|
+ <el-button @click="getData" type="primary" size="small">查询</el-button>
|
|
|
</div>
|
|
|
+ <el-table :data="tableData">
|
|
|
+ <el-table-column prop="Pet" label="姓名"></el-table-column>
|
|
|
+ <el-table-column prop="Tel" label="账号"></el-table-column>
|
|
|
+ <el-table-column prop="count" label="邀请数量"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination
|
|
|
+ background
|
|
|
+ layout="prev, pager, next"
|
|
|
+ :total="total"
|
|
|
+ :page-size="10"
|
|
|
+ :current-page="page"
|
|
|
+ @current-change="currentChange">
|
|
|
+ </el-pagination>
|
|
|
</div>
|
|
|
-
|
|
|
-</body>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/jquery.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/global.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/jquery.select.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/core.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/jquery.pagination.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/jquery.grid.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/WdatePicker.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/zDrag.js"></script>
|
|
|
-<script type="text/javascript" src="<%=basePath%>js/zDialog.js"></script>
|
|
|
-<script type="text/javascript">
|
|
|
- $('select').select();
|
|
|
- var head = [
|
|
|
- {
|
|
|
- label: '帐号',
|
|
|
- width: 80,
|
|
|
- name: 'Tel'
|
|
|
- },
|
|
|
- {
|
|
|
- label: '昵称',
|
|
|
- width: 90
|
|
|
- },
|
|
|
- {
|
|
|
- label: '电话',
|
|
|
- width: 90
|
|
|
- },
|
|
|
- {
|
|
|
- label: '会员等级',
|
|
|
- width: 110
|
|
|
- },
|
|
|
- {
|
|
|
- label: '地区',
|
|
|
- width: 110
|
|
|
- },
|
|
|
- {
|
|
|
- label: '身份证号',
|
|
|
- width: 110
|
|
|
- },
|
|
|
- {
|
|
|
- label: '积分',
|
|
|
- width: 50
|
|
|
- },
|
|
|
- {
|
|
|
- label: '最后一次签到',
|
|
|
- width: 50
|
|
|
- },
|
|
|
- {
|
|
|
- label: '连续签到天数',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '账户总币额(虚拟贝)',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '冲值币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '红包支付币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '聊天支付币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '订单支付币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '提现支出币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '预支币额',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '推荐用户数',
|
|
|
- width: 80
|
|
|
- },
|
|
|
- {
|
|
|
- label: '推荐模特数',
|
|
|
- width: 80
|
|
|
+<script>
|
|
|
+ new Vue({
|
|
|
+ el: '#app',
|
|
|
+ data: function () {
|
|
|
+ return {
|
|
|
+ page: 1,
|
|
|
+ invitor: '${param["invitor"]}',
|
|
|
+ keyword: '',
|
|
|
+ tableData: [],
|
|
|
+ total: 0
|
|
|
+ }
|
|
|
},
|
|
|
- {
|
|
|
- label: '注册日期',
|
|
|
- width: 150,
|
|
|
- name: 'MDate'
|
|
|
- }
|
|
|
- ];
|
|
|
-
|
|
|
- function SetRowsetInfo(rowCount, CurPage) {
|
|
|
- $('.pagination').pagination(rowCount, {
|
|
|
- items_per_page: <%=items_per_page %>,
|
|
|
- current_page: CurPage,
|
|
|
- callback: function (page) {
|
|
|
- DoQuery(page);
|
|
|
- },
|
|
|
- display_msg: false
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- var tbody = new Array();
|
|
|
-
|
|
|
- //superPK
|
|
|
- function DoQuery(PageIndex) {
|
|
|
- $('.grid').Grid('addLoading');
|
|
|
- keyword = document.all.keyword.value;
|
|
|
- $.post("<%=basePath%>system/memberInfo.jsp",
|
|
|
- {
|
|
|
- operator: "query",
|
|
|
- keyword: keyword,
|
|
|
- PageIndex: PageIndex,
|
|
|
- invitor: '<%=invitor%>'
|
|
|
- },
|
|
|
- function (data, status) {
|
|
|
- var obj = eval('(' + data + ')');
|
|
|
- if ((obj.length == 0) || (obj[0].result != "success")) {
|
|
|
- $('.grid').Grid('setData', null, head);
|
|
|
- SetRowsetInfo(1, 0);
|
|
|
- }
|
|
|
- else {
|
|
|
- tbody.length = 0;
|
|
|
- for (var row = 0; row < obj.length; row++) {
|
|
|
- if (obj[row].result == "success") {
|
|
|
- var fields = [];
|
|
|
- fields[0] = obj[row].tel;
|
|
|
- fields[1] = obj[row].pet;
|
|
|
- fields[2] = obj[row].phone;
|
|
|
- fields[3] = obj[row].dengjiname;
|
|
|
- fields[4] = obj[row].areaname;
|
|
|
- fields[5] = obj[row].sfzid;
|
|
|
- fields[6] = obj[row].acc;
|
|
|
- fields[7] = obj[row].lastsign;
|
|
|
- fields[8] = obj[row].signdays;
|
|
|
- fields[9] = obj[row].coin_a;
|
|
|
- fields[10] = obj[row].coin_i;
|
|
|
- fields[11] = obj[row].coin_or;
|
|
|
- fields[12] = obj[row].coin_ov;
|
|
|
- fields[13] = obj[row].coin_os;
|
|
|
- fields[14] = obj[row].coin_o;
|
|
|
- fields[15] = obj[row].coin_oi;
|
|
|
- fields[16] = obj[row].c_huiyuan;
|
|
|
- fields[17] = obj[row].c_model;
|
|
|
- fields[18] = obj[row].mdate;
|
|
|
- fields[19] = [
|
|
|
- {
|
|
|
- label: '邀请列表',
|
|
|
- memberpk: obj[row].memberpk,
|
|
|
- onclick: function () {
|
|
|
- var dialog = new zDialog();
|
|
|
- dialog.Top = 20;
|
|
|
- dialog.Width = '90%';
|
|
|
- dialog.Height = '90%';
|
|
|
- dialog.Title = "邀请列表";
|
|
|
- dialog.URL = "<%=basePath%>system/memberInfo.jsp?invitor=" + this.memberpk;
|
|
|
- dialog.OnClose = function (zWindow) {
|
|
|
- if (zWindow.result == 1)
|
|
|
- DoQuery("", -1);
|
|
|
- };
|
|
|
- dialog.show();
|
|
|
- }
|
|
|
- },
|
|
|
- {
|
|
|
- label: '删除',
|
|
|
- memberpk: obj[row].memberpk,
|
|
|
- onclick: function () {
|
|
|
- if (confirm("确认删除?")) {
|
|
|
- $.post("<%=basePath%>system/memberInfo.jsp", {
|
|
|
- operator: "delete",
|
|
|
- memberpk: this.memberpk
|
|
|
- }, function (data) {
|
|
|
- console.log(data)
|
|
|
- DoQuery(-1);
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- ];
|
|
|
- tbody[row] = fields;
|
|
|
+ created: function () {
|
|
|
+ this.getData()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getData: function () {
|
|
|
+ $.post({
|
|
|
+ url: '${pageContext.request.contextPath}${pageContext.request.servletPath}',
|
|
|
+ data: {
|
|
|
+ operator: 'query',
|
|
|
+ PageIndex: this.page,
|
|
|
+ invitor: this.invitor,
|
|
|
+ keyword: this.keyword
|
|
|
+ },
|
|
|
+ success: function (res) {
|
|
|
+ if (this.page === 1) {
|
|
|
+ this.total = res.total || 0;
|
|
|
}
|
|
|
- else if (obj[row].result == "CachedRowSet") {
|
|
|
- SetRowsetInfo(obj[row].recordcount, obj[row].pageindex);
|
|
|
- }
|
|
|
- }
|
|
|
- $('.grid').Grid('setData', tbody, head);
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- function ButtonClick() {
|
|
|
- DoQuery(-1);
|
|
|
- }
|
|
|
-
|
|
|
- H = Math.max(290, window.screen.availHeight - 500);
|
|
|
- $('.grid').Grid({
|
|
|
- thead: head,
|
|
|
- tbody: null,
|
|
|
- height: H,
|
|
|
- operator: {
|
|
|
- type: "normal",
|
|
|
- width: 140
|
|
|
- }
|
|
|
- });
|
|
|
-
|
|
|
- $('.grid').Grid('addLoading');
|
|
|
- $('.grid').Grid('setData', null, head);
|
|
|
-
|
|
|
- $(function () {
|
|
|
- $("#button").css("height", 28);
|
|
|
- DoQuery(-1);
|
|
|
- });
|
|
|
-
|
|
|
-
|
|
|
+ this.tableData = res.data;
|
|
|
+ }.bind(this)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ currentChange: function (page) {
|
|
|
+ this.page = page;
|
|
|
+ this.getData();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ watch: {}
|
|
|
+ })
|
|
|
</script>
|
|
|
-
|
|
|
+</body>
|
|
|
</html>
|