Prechádzať zdrojové kódy

新增邀请注册相关

hejq 7 rokov pred
rodič
commit
7db027e58f
22 zmenil súbory, kde vykonal 872 pridanie a 14 odobranie
  1. 23 1
      pom.xml
  2. 88 0
      src/main/java/com/uas/platform/b2bManage/controller/InviteController.java
  3. 16 0
      src/main/java/com/uas/platform/b2bManage/dao/InviteDao.java
  4. 148 0
      src/main/java/com/uas/platform/b2bManage/model/Invite.java
  5. 10 0
      src/main/java/com/uas/platform/b2bManage/model/UseType.java
  6. 8 5
      src/main/java/com/uas/platform/b2bManage/page/PageInfo.java
  7. 5 0
      src/main/java/com/uas/platform/b2bManage/page/PageParams.java
  8. 1 0
      src/main/java/com/uas/platform/b2bManage/page/criteria/LogicalExpression.java
  9. 23 0
      src/main/java/com/uas/platform/b2bManage/service/InviteService.java
  10. 22 0
      src/main/java/com/uas/platform/b2bManage/service/impl/BaseService.java
  11. 1 6
      src/main/java/com/uas/platform/b2bManage/service/impl/EnterpriseBaseInfoServiceImpl.java
  12. 79 0
      src/main/java/com/uas/platform/b2bManage/service/impl/InviteServiceImpl.java
  13. 18 0
      src/main/java/com/uas/platform/b2bManage/support/DateFormatUtils.java
  14. 95 0
      src/main/java/com/uas/platform/b2bManage/support/JxlsExcelView.java
  15. BIN
      src/main/resources/jxls-tpl/Invite.xls
  16. 3 2
      src/main/webapp/WEB-INF/views/normal/enterprise.html
  17. 1 0
      src/main/webapp/WEB-INF/views/normal/index.html
  18. 159 0
      src/main/webapp/WEB-INF/views/normal/inviteList.html
  19. 1 0
      src/main/webapp/WEB-INF/views/normal/logs.html
  20. 1 0
      src/main/webapp/WEB-INF/views/normal/schedularList.html
  21. 1 0
      src/main/webapp/WEB-INF/webmvc.xml
  22. 169 0
      src/main/webapp/resources/js/common/invite.js

+ 23 - 1
pom.xml

@@ -163,6 +163,18 @@
             <version>0.0.1-SNAPSHOT</version>
         </dependency>
 
+		<!-- jxls -->
+		<dependency>
+			<groupId>net.sf.jxls</groupId>
+			<artifactId>jxls-core</artifactId>
+			<version>1.0.4</version>
+		</dependency>
+		<dependency>
+			<groupId>net.sf.jxls</groupId>
+			<artifactId>jxls-reader</artifactId>
+			<version>1.0.4</version>
+		</dependency>
+
         <!-- redis -->
         <dependency>
             <groupId>redis.clients</groupId>
@@ -201,7 +213,17 @@
             <groupId>com.github.sgroschupf</groupId>
             <artifactId>zkclient</artifactId>
         </dependency>
-    </dependencies>
+        <dependency>
+            <groupId>org.apache.poi</groupId>
+            <artifactId>poi</artifactId>
+            <version>3.17</version>
+        </dependency>
+		<dependency>
+			<groupId>net.sf.jxls</groupId>
+			<artifactId>jxls-core</artifactId>
+			<version>1.0.4</version>
+		</dependency>
+	</dependencies>
 	<build>
 		<finalName>b2bManage</finalName>
 		<plugins>

+ 88 - 0
src/main/java/com/uas/platform/b2bManage/controller/InviteController.java

@@ -0,0 +1,88 @@
+package com.uas.platform.b2bManage.controller;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.model.Invite;
+import com.uas.platform.b2bManage.model.UseType;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.PageParams;
+import com.uas.platform.b2bManage.service.InviteService;
+import com.uas.platform.b2bManage.service.UseLogService;
+import com.uas.platform.b2bManage.support.JxlsExcelView;
+import com.uas.platform.b2bManage.web.BaseController;
+import com.uas.platform.core.util.AgentUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
+import org.springframework.stereotype.Controller;
+import org.springframework.util.StringUtils;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * 邀请注册记录
+ *
+ * @author hejq
+ * @date 2018-07-10 16:17
+ */
+@Controller
+@RequestMapping(value = "/invite")
+public class InviteController extends BaseController {
+
+    @Autowired
+    private InviteService inviteService;
+
+    @Autowired
+    private UseLogService useLogService;
+
+    /**
+     * 通过分页信息获取邀请注册记录
+     *
+     * @param params 分页参数
+     * @param keyword 关键词
+     * @param request request
+     * @return
+     */
+    @RequestMapping(value = "/list", method = RequestMethod.GET)
+    @ResponseBody
+    public Page<Invite> findByPageInfo(PageParams params, String keyword, HttpServletRequest request) {
+        PageInfo info = new PageInfo(params);
+        Sort sort = new Sort(Sort.Direction.DESC, "inviteEnName");
+        info.setSort(sort);
+        if (!StringUtils.isEmpty(keyword)) {
+            keyword = keyword.trim();
+        }
+        useLogService.appendLog(UseType.UAS_INVITE_SEARCH.code(), keyword, AgentUtils.getIp(request));
+        return inviteService.findInviteByPageInfo(info, keyword);
+    }
+
+    /**
+     * 导出邀请注册记录信息
+     *
+     * @param params 分页参数
+     * @param keyword 关键字
+     * @param request request
+     * @return
+     */
+    @RequestMapping(value = "/xls", method = RequestMethod.GET )
+    public ModelAndView exportInvites(PageParams params, String keyword, HttpServletRequest request) {
+        params.setPage(1);
+        params.setCount(1);
+        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");
+        ModelAndView modelAndView = new ModelAndView();
+        Page<Invite> invites = findByPageInfo(params, keyword, request);
+        modelAndView.addObject("time", dateFormat.format(new Date(System.currentTimeMillis())));
+        modelAndView.addObject("user", SystemSession.getUser().getFullName());
+        modelAndView.addObject("count", invites.getTotalElements());
+        modelAndView.addObject("data", invites.getContent());
+        modelAndView.addObject("dateFormat", dateFormat);
+        modelAndView.setView(new JxlsExcelView("classpath*:jxls-tpl/Invite", "邀请注册记录"));
+        useLogService.appendLog(UseType.EXPROT_INVITE_DATA.code(), keyword, AgentUtils.getIp(request));
+        return modelAndView;
+    }
+}

+ 16 - 0
src/main/java/com/uas/platform/b2bManage/dao/InviteDao.java

@@ -0,0 +1,16 @@
+package com.uas.platform.b2bManage.dao;
+
+import com.uas.platform.b2bManage.model.Invite;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 邀请注册记录
+ *
+ * @author hejq
+ * @date 2018-07-10 16:32
+ */
+@Repository
+public interface InviteDao extends JpaRepository<Invite, Long>, JpaSpecificationExecutor<Invite> {
+}

+ 148 - 0
src/main/java/com/uas/platform/b2bManage/model/Invite.java

@@ -0,0 +1,148 @@
+package com.uas.platform.b2bManage.model;
+
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @author hejq
+ * @date 2018-07-10 16:18
+ */
+@Entity
+@Table(name = "v_invites")
+public class Invite implements Serializable {
+
+    /**
+     * 序列号
+     */
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 企业UU号
+     */
+    @Id
+    @Column(name = "enuu")
+    private Long uu;
+
+    /**
+     * 公司名称
+     */
+    @Column(name = "enname")
+    private String enName;
+
+    /**
+     * 商业登记证号
+     */
+    @Column(name = "businesscode")
+    private String enBussinessCode;
+
+    /**
+     * 注册时间
+     */
+    @Column(name = "endate")
+    private Date enDate;
+
+    /**
+     * 管理员姓名
+     */
+    @Column(name = "adminname")
+    private String adminName;
+
+    /**
+     * 邀请企业名称
+     */
+    @Column(name = "invitename")
+    private String inviteEnName;
+
+    /**
+     * 邀请用户名称
+     */
+    @Column(name = "inviteusername")
+    private String inviteUserName;
+
+    /**
+     * 邀请用户联系方式
+     */
+    @Column(name = "inviteusertel")
+    private String inviteUserTel;
+
+    /**
+     * 上传物料统计
+     */
+    @Transient
+    private Integer productCount;
+
+    public Long getUu() {
+        return uu;
+    }
+
+    public void setUu(Long uu) {
+        this.uu = uu;
+    }
+
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+
+    public String getEnBussinessCode() {
+        return enBussinessCode;
+    }
+
+    public void setEnBussinessCode(String enBussinessCode) {
+        this.enBussinessCode = enBussinessCode;
+    }
+
+    public Date getEnDate() {
+        return enDate;
+    }
+
+    public void setEnDate(Date enDate) {
+        this.enDate = enDate;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
+
+    public String getInviteEnName() {
+        return inviteEnName;
+    }
+
+    public void setInviteEnName(String inviteEnName) {
+        this.inviteEnName = inviteEnName;
+    }
+
+    public String getInviteUserName() {
+        return inviteUserName;
+    }
+
+    public void setInviteUserName(String inviteUserName) {
+        this.inviteUserName = inviteUserName;
+    }
+
+    public String getInviteUserTel() {
+        return inviteUserTel;
+    }
+
+    public void setInviteUserTel(String inviteUserTel) {
+        this.inviteUserTel = inviteUserTel;
+    }
+
+    public Integer getProductCount() {
+        return productCount;
+    }
+
+    public void setProductCount(Integer productCount) {
+        this.productCount = productCount;
+    }
+
+}

+ 10 - 0
src/main/java/com/uas/platform/b2bManage/model/UseType.java

@@ -62,6 +62,16 @@ public enum UseType {
      */
     UAS_SCHEDULAR_SEARCH("搜索轮询地址"),
 
+    /**
+     * 搜索邀请记录
+     */
+    UAS_INVITE_SEARCH("搜索邀请记录"),
+
+    /**
+     * 导出邀请注册数据
+     */
+    EXPROT_INVITE_DATA("导出邀请注册数据"),
+
     /**
      * 空状态
      */

+ 8 - 5
src/main/java/com/uas/platform/b2bManage/page/PageInfo.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2bManage.page.criteria.CriterionExpression;
 import com.uas.platform.b2bManage.page.criteria.PredicateUtils;
 import com.uas.platform.b2bManage.page.exception.IllegalOperatorException;
+import com.uas.platform.b2bManage.support.JxlsExcelView;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.domain.Sort;
 import org.springframework.data.domain.Sort.Direction;
@@ -39,15 +40,17 @@ public class PageInfo implements Pageable {
 
 	private void getPageInfo(PageParams params) {
 		this.pageSize = params.getCount();
-		if (this.pageSize == 0) {// 不传入页面大小,默认页面大小为5
+		// 不传入页面大小,默认页面大小为5
+		if (this.pageSize == 0) {
 			this.pageSize = 5;
 		}
-		if (this.pageSize > 1000) {// 页面大小最大不可超过1000,防止服务器崩溃
-			throw new IllegalOperatorException("页面大小不可超过1000");
-		}
+		if (this.pageSize > JxlsExcelView.MAX_SIZE) {
+		    throw new IllegalOperatorException("页面大小不可超过" + JxlsExcelView.MAX_SIZE);
+        }
 		this.pageNumber = params.getPage();
+		// 不传入页码,默认为第一页
 		if (this.pageNumber == 0) {
-			this.pageNumber = 1;// 不传入页码,默认为第一页
+			this.pageNumber = 1;
 		}
 		this.offset = this.pageSize * (this.pageNumber - 1);
 		if (params.getFilter() != null)

+ 5 - 0
src/main/java/com/uas/platform/b2bManage/page/PageParams.java

@@ -2,6 +2,11 @@ package com.uas.platform.b2bManage.page;
 
 import java.io.Serializable;
 
+/**
+ * 分页信息
+ *
+ * @author hejq
+ */
 public class PageParams implements Serializable {
 	/**
 	 * 

+ 1 - 0
src/main/java/com/uas/platform/b2bManage/page/criteria/LogicalExpression.java

@@ -30,6 +30,7 @@ public class LogicalExpression implements CriterionExpression {
 		this.operator = operator;
 	}
 
+	@Override
 	public Predicate toPredicate(Root<?> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
 		List<Predicate> predicates = new ArrayList<Predicate>();
 		for (int i = 0, len = this.expressions.length; i < len; i++) {

+ 23 - 0
src/main/java/com/uas/platform/b2bManage/service/InviteService.java

@@ -0,0 +1,23 @@
+package com.uas.platform.b2bManage.service;
+
+import com.uas.platform.b2bManage.model.Invite;
+import com.uas.platform.b2bManage.page.PageInfo;
+import org.springframework.data.domain.Page;
+
+/**
+ * 邀请注册
+ *
+ * @author hejq
+ * @date 2018-07-10 16:31
+ */
+public interface InviteService {
+
+    /**
+     * 通过分页信息获取邀请注册记录
+     *
+     * @param info 分页信息
+     * @param keyword 关键词
+     * @return
+     */
+    Page<Invite> findInviteByPageInfo(PageInfo info, String keyword);
+}

+ 22 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/BaseService.java

@@ -0,0 +1,22 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+/**
+ * @author hejq
+ * @date 2018-07-10 16:39
+ */
+public class BaseService {
+
+    /**
+     * UU号正则表达式
+     */
+    static final String UU_REGEXP = "^\\d{4,}$";
+
+    /**
+     * jdbc方法调用
+     */
+    @Autowired
+    public JdbcTemplate jdbcTemplate;
+}

+ 1 - 6
src/main/java/com/uas/platform/b2bManage/service/impl/EnterpriseBaseInfoServiceImpl.java

@@ -24,16 +24,11 @@ import javax.persistence.criteria.Root;
  * Created by hejq on 2018-04-20.
  */
 @Service
-public class EnterpriseBaseInfoServiceImpl implements EnterpriseBaseInfoService {
+public class EnterpriseBaseInfoServiceImpl extends BaseService implements EnterpriseBaseInfoService {
 
     @Autowired
     private EnterpriseBaseInfoDao baseInfoDao;
 
-    /**
-     * UU号正则表达式
-     */
-    static final String UU_REGEXP = "^\\d{4,}$";
-
     /**
      * 分页查询企业信息
      *

+ 79 - 0
src/main/java/com/uas/platform/b2bManage/service/impl/InviteServiceImpl.java

@@ -0,0 +1,79 @@
+package com.uas.platform.b2bManage.service.impl;
+
+import com.uas.platform.b2bManage.core.util.StringUtils;
+import com.uas.platform.b2bManage.dao.InviteDao;
+import com.uas.platform.b2bManage.model.EnterpriseBaseInfo;
+import com.uas.platform.b2bManage.model.Invite;
+import com.uas.platform.b2bManage.page.PageInfo;
+import com.uas.platform.b2bManage.page.criteria.CriterionExpression;
+import com.uas.platform.b2bManage.page.criteria.LogicalExpression;
+import com.uas.platform.b2bManage.page.criteria.SimpleExpression;
+import com.uas.platform.b2bManage.service.InviteService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * 邀请注册记录
+ *
+ * @author hejq
+ * @date 2018-07-10 16:32
+ */
+@Service
+public class InviteServiceImpl extends BaseService implements InviteService {
+
+    @Autowired
+    private InviteDao inviteDao;
+
+    /**
+     * 通过分页信息获取邀请注册记录
+     *
+     * @param info    分页信息
+     * @param keyword 关键词
+     * @return
+     */
+    @Override
+    public Page<Invite> findInviteByPageInfo(final PageInfo info, String keyword) {
+        if (!StringUtils.isEmpty(keyword)) {
+            SimpleExpression name = new SimpleExpression("enName", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression enBussinessCode = new SimpleExpression("enBussinessCode", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression inviteEnName = new SimpleExpression("inviteEnName", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression inviteUserName = new SimpleExpression("inviteUserName", keyword, CriterionExpression.Operator.LIKE, true);
+            SimpleExpression adminUserName = new SimpleExpression("adminName", keyword, CriterionExpression.Operator.LIKE, true);
+            List<SimpleExpression> expressionList = new ArrayList<>();
+            expressionList.add(name);
+            expressionList.add(enBussinessCode);
+            expressionList.add(inviteEnName);
+            expressionList.add(inviteUserName);
+            expressionList.add(adminUserName);
+            if (keyword.matches(UU_REGEXP)) {
+                SimpleExpression enUU = new SimpleExpression("uu", keyword, CriterionExpression.Operator.EQ, true);
+                expressionList.add(enUU);
+            }
+            SimpleExpression[] expressions = expressionList.toArray(new SimpleExpression[expressionList.size()]);
+            LogicalExpression logical = new LogicalExpression(expressions, CriterionExpression.Operator.OR);
+            info.expression(logical);
+        }
+        Page<Invite> invites = inviteDao.findAll(new Specification<Invite>() {
+            @Override
+            public Predicate toPredicate(Root<Invite> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
+                query.where(info.getPredicates(root, query, builder));
+                return null;
+            }
+        }, info);
+        for (Invite invite : invites) {
+            Integer count = jdbcTemplate.queryForInt("select count(1) from products where pr_enuu = ?", invite.getUu());
+            invite.setProductCount(count);
+        }
+        return invites;
+    }
+}

+ 18 - 0
src/main/java/com/uas/platform/b2bManage/support/DateFormatUtils.java

@@ -0,0 +1,18 @@
+package com.uas.platform.b2bManage.support;
+
+import org.apache.commons.lang3.time.FastDateFormat;
+
+/**
+ * 时间格式化
+ * 
+ * @author hejq
+ * @date 2018-07-10 17:47
+ */
+public class DateFormatUtils {
+
+    /**
+     * yyyy-MM-dd HH:mm:ss 格式
+     */
+	public static final FastDateFormat DATETIME_FORMAT = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
+	
+}

+ 95 - 0
src/main/java/com/uas/platform/b2bManage/support/JxlsExcelView.java

@@ -0,0 +1,95 @@
+package com.uas.platform.b2bManage.support;
+
+import com.uas.platform.b2bManage.core.support.SystemSession;
+import com.uas.platform.b2bManage.core.util.ContextUtils;
+import net.sf.jxls.transformer.XLSTransformer;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
+import org.apache.poi.poifs.filesystem.POIFSFileSystem;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.support.LocalizedResourceHelper;
+import org.springframework.web.servlet.support.RequestContextUtils;
+import org.springframework.web.servlet.view.document.AbstractExcelView;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.net.URLEncoder;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+/**
+ * 利用jxls模板生成excel
+ *
+ * @author yingp
+ *
+ */
+public class JxlsExcelView extends AbstractExcelView {
+
+	/**
+	 * 最大导出行
+	 */
+	public final static int MAX_SIZE = 50000;
+
+	private String fileName;
+
+	private static final String EXTENSION = ".xls";
+
+	public JxlsExcelView(String tplPath, String fileName) {
+		super();
+		setUrl(tplPath);
+		this.fileName = fileName;
+	}
+
+	@Override
+	protected HSSFWorkbook getTemplateSource(String url, HttpServletRequest request) throws Exception {
+		LocalizedResourceHelper helper = new LocalizedResourceHelper(ContextUtils.getApplicationContext());
+		Locale userLocale = RequestContextUtils.getLocale(request);
+		Resource inputFile = helper.findLocalizedResource(url, EXTENSION, userLocale);
+		if (this.logger.isDebugEnabled()) {
+			this.logger.debug("Loading Excel workbook from " + inputFile);
+		}
+		POIFSFileSystem fs = new POIFSFileSystem(inputFile.getInputStream());
+		return new HSSFWorkbook(fs);
+	}
+
+	@Override
+	protected void buildExcelDocument(Map<String, Object> map, HSSFWorkbook workbook, HttpServletRequest request,
+			HttpServletResponse response) throws Exception {
+		if (map == null) {
+            map = new HashMap<String, Object>();
+        }
+		map.put("export", new Export());
+		XLSTransformer transformer = new XLSTransformer();
+		transformer.transformWorkbook(workbook, map);
+		response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "utf-8") + EXTENSION);
+	}
+
+	public class Export {
+
+		private String date;
+		private String user;
+
+		public String getDate() {
+			return date;
+		}
+
+		public void setDate(String date) {
+			this.date = date;
+		}
+
+		public String getUser() {
+			return user;
+		}
+
+		public void setUser(String user) {
+			this.user = user;
+		}
+
+		public Export() {
+			this.user = SystemSession.getUser().getName();
+			this.date = DateFormatUtils.DATETIME_FORMAT.format(new Date());
+		}
+	}
+
+}

BIN
src/main/resources/jxls-tpl/Invite.xls


+ 3 - 2
src/main/webapp/WEB-INF/views/normal/enterprise.html

@@ -63,8 +63,9 @@
 			<div class="nav navbar-nav navbar-left">
 				<li><span>企业列表</span></li>
 				<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
-				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
-			</div>
+                <li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+                <li><a href="/invite" class="link-mall">邀请注册记录</a></li>
+            </div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">
                     <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>

+ 1 - 0
src/main/webapp/WEB-INF/views/normal/index.html

@@ -37,6 +37,7 @@
 					<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
 					<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
 					<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+					<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
 				</ul>
 				<ul class="nav navbar-nav navbar-right x-nologin">
 					<li><a href="#" class="link-login">登录</a></li>

+ 159 - 0
src/main/webapp/WEB-INF/views/normal/inviteList.html

@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=edge">
+	<meta name="renderer" content="webkit">
+	<meta http-equiv="Content-Language" Content="zh-CN">
+	<meta name="viewport" content="width=device-width, initial-scale=1">
+	<meta name="author" content="优软科技">
+	<meta name="Keywords" content="优软,优软云,优企云服,SAAS,UAS,ERP,企业管理">
+	<meta name="baidu-site-verification" content="tamBdrxeYx" />
+	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+	<meta http-equiv="X-UA-Compatible" content="IE=8">
+	<meta http-equiv="Expires" content="0">
+	<meta http-equiv="Pragma" content="no-cache">
+	<meta http-equiv="Cache-control" content="no-cache">
+	<meta http-equiv="Cache" content="no-cache">
+	<link href="static/img/icon/icon_32.png" rel="icon" type="image/x-icon" />
+	<link rel="stylesheet" href="static/lib/bootstrap/css/bootstrap.min.css" />
+	<link rel="stylesheet"
+		  href="static/lib/fontawesome/css/font-awesome.min.css" />
+	<link rel="stylesheet" href="static/lib/bootstrap-tour/css/bootstrap-tour.min.css" />
+	<link rel="stylesheet" href="static/css/common.css" />
+	<link rel="stylesheet" href="static/css/enterprise.css" />
+    <link rel="stylesheet" href="static/css/pagination.css">
+	<title>邀请注册记录</title>
+</head>
+<body>
+<style>
+	#loadingDiv {
+		position: absolute;
+		left: 0;
+		width: 100%;
+		height: 100%;
+		top: 0;
+		/*background: #000000;*/
+		opacity: 0.3;
+		filter: alpha(opacity=80);
+		z-index: 10000;
+        display: none;
+	}
+	#loadingImg {
+		position: absolute;
+		cursor: wait;
+		left: 45%;
+		top: 50%;
+		width: auto;
+        height: auto;
+	}
+    #logList-body {
+        word-break: break-all;
+        word-wrap: break-word;
+    }
+    #para-content  {
+        word-break: break-all;
+        word-wrap: break-word;
+        max-height: 450px;
+        max-width: 600px;
+        overflow: auto;
+    }
+    #pa_detail pre {
+        outline: 1px solid #ccc; padding: 5px; margin: 5px;
+    }
+    .string { color: red; }
+    .number { color: purple; }
+    .boolean { color: blue; }
+    .null { color: magenta; }
+    .key { color: green; }
+
+</style>
+<div id="loadingDiv">
+	<div id="loadingImg">
+		<img src="../static/images/waiting.gif"/>
+	</div>
+</div>
+<!-- nav start -->
+<nav id="nav" class="navbar navbar-inverse navbar-fixed-top">
+	<div class="container">
+		<div class="navbar-header">
+			<a href="/" id="logo"><img src="static/img/logo.png" alt="" height="25px" /></a>
+		</div>
+		<div class="collapse navbar-collapse">
+			<div class="nav navbar-nav navbar-left">
+				<li><span>邀请注册记录</span></li>
+				<li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
+				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+			</div>
+            <ul class="nav navbar-nav navbar-right x-login">
+                <li class="dropdown">
+                    <a href="#" class="dropdown-toggle"><i class="fa fa-user"></i> <span class="title"></span></a>
+                </li>
+                <li><a href="#" class="link-logout">退出</a></li>
+            </ul>
+		</div>
+	</div>
+</nav>
+<!-- nav end -->
+
+<!-- section start -->
+<section>
+	<div class="container">
+		<div class="section-title">
+			<h3>邀请注册记录</h3>
+		</div>
+	</div>
+    <div class="search">
+        <div class="search-title" style="float: right">
+			<input id="inviteList-total" style="width: 100px; border:0;outline:0;background: #F7F7F8" readonly>
+		</div>
+        <div class="input-group">
+            <input type="text" id="keyword" class="form-control" placeholder="请输入名称或UU号搜索"><span class="input-group-addon" id="p_search">搜索</span>
+        </div>
+    </div>
+	<table class="table table-striped table-hover" style="overflow: scroll">
+		<thead id="inviteList-head">
+            <th class="text-center" width="60">序号</th>
+            <th class="text-center" width="80">邀请人企业</th>
+            <th class="text-center" width="100">邀请人</th>
+            <th class="text-center" width="100">邀请人联系电话</th>
+            <th class="text-center" width="100">企业名称</th>
+			<th class="text-center" width="100">注册日期</th>
+            <th class="text-center" width="50">联系人</th>
+            <th class="text-center" width="50">物料数</th>
+		</thead>
+        <tbody id="inviteList-body">
+        </tbody>
+        <div id="page"></div>
+    </table>
+    <div id="m-page" class="m-style"></div>
+</section>
+<!-- section end -->
+
+<!-- 参数详情 -->
+<div class="modal fade" id="paraDetail" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content" id="para-main">
+            <div class="modal-header" id="para-title">
+            </div>
+            <div class="modal-body" id="para-content">
+                <!--<p id="para-content" readonly placeholder="暂无详情"></p>-->
+            </div>
+            <div class="modal-footer">
+                <a type="button" class="btn btn-default" data-dismiss="modal">
+                    关闭
+                </a>
+            </div>
+        </div><!-- /.modal-content -->
+    </div><!-- /.modal-dialog -->
+</div>
+
+</body>
+<script type="text/javascript" src="static/lib/jquery/jquery.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="static/lib/bootstrap-tour/js/bootstrap-tour.min.js"></script>
+<script type="text/javascript" src="static/js/common/invite.js"></script>
+<script type="text/javascript" src="static/js/index/app.js"></script>
+<script type="text/javascript" src="static/js/common/common.js"></script>
+</html>

+ 1 - 0
src/main/webapp/WEB-INF/views/normal/logs.html

@@ -84,6 +84,7 @@
 				<li><span>UAS-API日志</span></li>
 				<li><a href="/enterprise" class="link-b2b">企业列表</a></li>
 				<li><a href="/schedularList" class="link-mall">UAS轮询地址</a></li>
+				<li><a href="/invite" class="link-mall">邀请注册记录</a></li>
 			</div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">

+ 1 - 0
src/main/webapp/WEB-INF/views/normal/schedularList.html

@@ -94,6 +94,7 @@
                 <li><span>UAS轮询地址</span></li>
                 <li><a href="/enterprise" class="link-b2b">企业列表</a></li>
                 <li><a href="/logs" class="link-mall">UAS-API日志</a></li>
+                <li><a href="/invite" class="link-mall">邀请注册记录</a></li>
 			</div>
             <ul class="nav navbar-nav navbar-right x-login">
                 <li class="dropdown">

+ 1 - 0
src/main/webapp/WEB-INF/webmvc.xml

@@ -53,6 +53,7 @@
 	<mvc:view-controller path="/resetPassword" view-name="resetPassword" />
     <mvc:view-controller path="/invalid" view-name="invalid" />
     <mvc:view-controller path="/**#" view-name="signIn" />
+	<mvc:view-controller path="/invite" view-name="inviteList" />
 	<mvc:interceptors>
 		<!-- SSO过滤 -->
 		<mvc:interceptor>

+ 169 - 0
src/main/webapp/resources/js/common/invite.js

@@ -0,0 +1,169 @@
+/**
+ * 引入toaster方法
+ */
+document.write("<script language=javascript src='static/js/common/toastr.js'></script>");
+
+/**
+ * 引入分页
+ */
+document.write("<script language=javascript src='static/lib/jquery/jquery.pagination.js'></script>");
+
+/**
+ * 引入base方法
+ */
+document.write("<script language=javascript src='static/js/common/base.js'></script>");
+
+var inviteList = [];
+
+/**
+ * 获取邀请记录信息
+ */
+function getinviteList(count, page, keyword) {
+    $('#loadingDiv').show();
+    $("#inviteList-body").empty();
+    inviteList = [];
+    $.get('invite/list', {
+        count: count,
+        page: page,
+        keyword: keyword
+    }, function (data) {
+        $('#loadingDiv').hide();
+        inviteList = data.content;
+        var pageNumber = data.number;
+        var pageSize = data.size;
+        var total = data.totalElements;
+        var totalPage = data.totalPages;
+        var tbody = document.getElementById("inviteList-body");
+        var page = document.getElementById("page");
+        //noinspection JSAnnotator
+        $('#inviteList-total').val('共 ' + total + ' 条');
+        if (inviteList.length > 0) {
+            for (var i = 0; i < inviteList.length; i++) {
+                var trow = getDataRow(inviteList[i], i); //定义一个方法,返回tr数据
+                tbody.appendChild(trow);
+                // 查询错误详情
+                (function(i) {
+                    $("#para_detail_" + inviteList[i].id ).click(function () {
+                        getPara(inviteList[i].id, inviteList[i].enName, inviteList[i].url);
+                        $('#loadingDiv').show();
+                    });
+                })(i);
+            }
+
+            // 点击搜索
+            $('#p_search').unbind('click').click(function () {// 每次先解除上次绑定的事件,防止重复发送请求
+                $("#inviteList-body").load(location.href + " #inviteList-body");
+                getinviteList(count, 1, $('#keyword').val());
+            });
+
+            // 键盘确认按钮搜索
+            document.onkeydown = function(event) {
+                var e = event || window.event;
+                if (e && e.keyCode == 13) { // enter 键
+                    $("#inviteList-body").load(location.href + " #inviteList-body");
+                    getinviteList(count, 1, $('#keyword').val());
+                }
+            };
+        }
+        $('#m-page').pagination({
+            pageCount: totalPage,
+            totalData: total,
+            current: pageNumber,
+            showData: pageSize,
+            coping: true,
+            homePage: '首页',
+            endPage: '末页',
+            prevContent: '<<',
+            nextContent: '>>',
+            jump: true,
+            jumpBtn: '跳转',
+            callback: function (api) {
+                $('.now').text(api.getCurrent());
+                $("#inviteList-body").load(location.href + " #inviteList-body");
+                getinviteList(count, api.getCurrent(), $('#keyword').val());
+            }
+        }, function (api) {
+            $('.now').text(api.getCurrent());
+        });
+    })
+}
+
+/**
+ * 建立表格数据
+ *
+ * @param log 日志
+ * @param i 行号
+ * @returns {Element}
+ */
+function getDataRow(invite, i) {
+    //创建行
+    var row = document.createElement('tr');
+
+    //序号
+    var indexCell = document.createElement('td');
+    indexCell.setAttribute("class", "text-center");
+    indexCell.innerHTML = i + 1;
+    row.appendChild(indexCell);
+
+    // 邀请企业名称
+    var inviteEnNameCell = document.createElement('td');
+    inviteEnNameCell.setAttribute("class", "text-center");
+    inviteEnNameCell.innerHTML = invite.inviteEnName || '-';
+    row.appendChild(inviteEnNameCell);
+
+    // 邀请用户名称
+    var inviteUserNameCell = document.createElement('td');
+    inviteUserNameCell.setAttribute("class", "text-center");
+    inviteUserNameCell.innerHTML = invite.inviteUserName || '-';
+    row.appendChild(inviteUserNameCell);
+
+    // 邀请人联系方式
+    var inviteUserTelCell = document.createElement('td');
+    inviteUserTelCell.setAttribute("class", "text-center");
+    inviteUserTelCell.innerHTML = invite.inviteUserTel || '-';
+    row.appendChild(inviteUserTelCell);
+
+    // 注册企业名称
+    var enNameCell = document.createElement('td');
+    enNameCell.setAttribute("class", "text-center");
+    enNameCell.innerHTML = invite.enName;
+    row.appendChild(enNameCell);
+
+    // 注册时间
+    var enDateCell = document.createElement('td');
+    enDateCell.setAttribute("class", "text-center");
+    enDateCell.innerHTML = formatDateTime(invite.enDate);
+    row.appendChild(enDateCell);
+
+    // 联系人
+    var adminNameCell = document.createElement('td'); //detail
+    adminNameCell.setAttribute("class", "text-center");
+    adminNameCell.innerHTML = invite.adminName || '-';
+    row.appendChild(adminNameCell);
+
+    // 物料数
+    var countCell = document.createElement('td');
+    countCell.setAttribute("class", "text-center");
+    countCell.setAttribute("title", "查看参数详情");
+    countCell.innerHTML = invite.productCount;
+    row.appendChild(countCell);
+
+    return row;
+}
+
+$(function() {
+    'use strict';
+
+    // 监听页面滚动
+    $(window).scroll(function() {
+        if($(window).scrollTop() >= 400) {
+            $('#nav').addClass('on');
+        } else {
+            $('#nav').removeClass('on');
+        }
+    });
+
+    // 设置分页大小
+    var count = 20;
+    getinviteList(count, 1, null);
+});