EasyUI页面缓存三级地址联动例程

前台页面地址三级联动处理方式有很多,可以使用异步加载处理(参考https://blog.csdn.net/qixiang_chen/article/details/85214034),也可以将数据一次加载到客户端,在客户端实现三级联动处理。本例使用Easyui技术在前台实现缓存三级联动。系统架构如下图:
在这里插入图片描述

Maven父工程

POM.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.gf</groupId>
  <artifactId>Parent</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>Parent</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

接口与实体类模块

POM.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Parent</artifactId>
        <groupId>com.gf</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>CommonLib</artifactId>

    <name>CommonLib</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

实体类与接口
在这里插入图片描述
AddressInfo.java

package com.gf.bean;

import java.io.Serializable;

public class AddressInfo implements Serializable{
	private String code = null;
	private String name = null;
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

OrderInfo.java

package com.gf.bean;

import java.io.Serializable;
import java.sql.Date;

public class OrderInfo implements Serializable{
	private Integer id = null;
	private Date orderDt = null;
	private String name = null;
	private String price = null;
	private String saleName = null;
	private Integer relationId = null;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Date getOrderDt() {
		return orderDt;
	}
	public void setOrderDt(Date orderDt) {
		this.orderDt = orderDt;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPrice() {
		return price;
	}
	public void setPrice(String price) {
		this.price = price;
	}
	public String getSaleName() {
		return saleName;
	}
	public void setSaleName(String saleName) {
		this.saleName = saleName;
	}
	public Integer getRelationId() {
		return relationId;
	}
	public void setRelationId(Integer relationId) {
		this.relationId = relationId;
	}
	
}

RelationInfo.java

package com.gf.bean;

import java.io.Serializable;
import java.sql.Date;
import java.util.ArrayList;
import java.util.List;

public class RelationInfo implements Serializable{
	private Integer id = null;
	private String name = null;
	private Date registerDt = null;
	private String provinceCode = null;
	private String cityCode = null;
	private String countyCode = null;
	private String asset = null;
	private String telNo = null;
	private String address = null;
	private Integer state = 0;
	private byte[] logo = null;
	private List<UserInfo> users = new ArrayList<UserInfo>();
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getRegisterDt() {
		return registerDt;
	}
	public void setRegisterDt(Date registerDt) {
		this.registerDt = registerDt;
	}
	public String getProvinceCode() {
		return provinceCode;
	}
	public void setProvinceCode(String provinceCode) {
		this.provinceCode = provinceCode;
	}
	public String getCityCode() {
		return cityCode;
	}
	public void setCityCode(String cityCode) {
		this.cityCode = cityCode;
	}
	public String getCountyCode() {
		return countyCode;
	}
	public void setCountyCode(String countyCode) {
		this.countyCode = countyCode;
	}
	public String getAsset() {
		return asset;
	}
	public void setAsset(String asset) {
		this.asset = asset;
	}
	public String getTelNo() {
		return telNo;
	}
	public void setTelNo(String telNo) {
		this.telNo = telNo;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public byte[] getLogo() {
		return logo;
	}
	public void setLogo(byte[] logo) {
		this.logo = logo;
	}
	public List<UserInfo> getUsers() {
		return users;
	}
	public void setUsers(List<UserInfo> users) {
		this.users = users;
	}
	public Integer getState() {
		return state;
	}
	public void setState(Integer state) {
		this.state = state;
	}
}

UserInfo.java

package com.gf.bean;

import java.io.Serializable;

public class UserInfo implements Serializable{
	private Integer id = null;
	private String name = null;
	private String provinceCode = null;
	private String cityCode = null;
	private String countyCode = null;
	private String address = null;
	private String qq = null;
	private String email = null;
	private String telNo = null;
	private Integer relationId = null;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getProvinceCode() {
		return provinceCode;
	}
	public void setProvinceCode(String provinceCode) {
		this.provinceCode = provinceCode;
	}
	public String getCityCode() {
		return cityCode;
	}
	public void setCityCode(String cityCode) {
		this.cityCode = cityCode;
	}
	public String getCountyCode() {
		return countyCode;
	}
	public void setCountyCode(String countyCode) {
		this.countyCode = countyCode;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getQq() {
		return qq;
	}
	public void setQq(String qq) {
		this.qq = qq;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getTelNo() {
		return telNo;
	}
	public void setTelNo(String telNo) {
		this.telNo = telNo;
	}
	public Integer getRelationId() {
		return relationId;
	}
	public void setRelationId(Integer relationId) {
		this.relationId = relationId;
	}
	
}

IRelationServer.java

package com.gf.service;

import java.sql.Date;
import java.util.List;
import java.util.Map;

import com.gf.bean.AddressInfo;
import com.gf.bean.OrderInfo;
import com.gf.bean.RelationInfo;
import com.gf.bean.UserInfo;

public interface IRelationService {
	public Map find(Integer page, Integer row,
                    String province, String city, String county,
                    String name, Date startDt, Date endDt, String asset);
	public void save(RelationInfo ri);
	public RelationInfo getRelationById(Integer id);
	public List<UserInfo> getUserByRelationId(Integer id);
	public List<OrderInfo> getOrderByRelationId(Integer id);
	public List<AddressInfo> getAddress();
	public void saveRelation(RelationInfo ri);
}

服务模块

在这里插入图片描述
POM.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Parent</artifactId>
        <groupId>com.gf</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>Service</artifactId>

    <name>Service</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.gf</groupId>
            <artifactId>CommonLib</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
                <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>3.7.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-project-info-reports-plugin</artifactId>
                    <version>3.0.0</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

RelationMapper.java

package com.gf.mapper;

import java.sql.Date;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.gf.bean.AddressInfo;
import com.gf.bean.RelationInfo;

@Mapper
public interface RelationMapper {
	public List<RelationInfo> find(@Param("provinceCode") String provinceCode,
                                   @Param("cityCode") String cityCode,
                                   @Param("countyCode") String countyCode,
                                   @Param("name") String name,
                                   @Param("startDt") Date startDt,
                                   @Param("endDt") Date endDt,
                                   @Param("asset") String asset);
	public List<AddressInfo> getAddress();
	public void saveRelation(RelationInfo ri);
}

RelationServiceImpl.java

package com.gf.service;

import java.sql.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.gf.service.IRelationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.gf.bean.AddressInfo;
import com.gf.bean.OrderInfo;
import com.gf.bean.RelationInfo;
import com.gf.bean.UserInfo;
import com.gf.mapper.RelationMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

@com.alibaba.dubbo.config.annotation.Service(interfaceClass= IRelationService.class)
@Service
public class RelationServiceImpl implements IRelationService{
	@Autowired
	private RelationMapper mapper;

	@Override
	public Map find(Integer page, Integer row, String province, String city, String county, String name,
			Date startDt, Date endDt, String asset) {
		PageHelper.startPage(page, row);
		List<RelationInfo> lst = mapper.find(province, city, county, 
				name, startDt, endDt, asset);
		System.out.println("list="+lst.size());
		PageInfo pi = new PageInfo(lst);
		Map m = new HashMap();
		m.put("rows", pi.getList());
		m.put("total", pi.getTotal());
		return m;
	}

	@Override
	public void save(RelationInfo ri) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public RelationInfo getRelationById(Integer id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<UserInfo> getUserByRelationId(Integer id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<OrderInfo> getOrderByRelationId(Integer id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<AddressInfo> getAddress() {
		return mapper.getAddress();
	}

	@Override
	public void saveRelation(RelationInfo ri) {
		mapper.saveRelation(ri);
	}

}

Server.java

package com.gf;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration
public class Server
{
    public static void main( String[] args )
    {
        SpringApplication.run(Server.class, args);
    }
}

Mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gf.mapper.RelationMapper">
	<select id="find" resultType="com.gf.bean.RelationInfo">
		select * from t_relation where provincecode=#{provinceCode} and 
			citycode=#{cityCode} and countycode=#{countyCode}
		<if test="name != null">
			and name like '%${name}%'
		</if>
		<if test="startDt != null">
			and registerdt > #{startDt}
		</if>
		<if test="endDt != null">
			and registerdt > #{endDt}
		</if>
		<if test="asset != null">
			and asset = #{asset}
		</if>
	</select>
	<select id="getAddress" resultType="com.gf.bean.AddressInfo">
		select * from t_address
	</select>
	<insert id="saveRelation" parameterType="com.gf.bean.RelationInfo">
		insert into t_relation(name,registerdt,provincecode,citycode,countycode,asset,telno,address,state)
			values(#{name},#{registerDt},#{provinceCode},#{cityCode},#{countyCode},#{asset},#{telNo},#{address},#{state})
	</insert>

</mapper>

SQL.txt

create database w3 character set utf8;

use w3;

charset gbk;

create table t_relation(id int auto_increment primary key,
	name varchar(50),registerdt date,provincecode varchar(20),
	citycode varchar(20),countycode varchar(20),asset varchar(20),
	telno varchar(20),address varchar(50),logo blob);
	
insert into t_relation(name,registerdt,provincecode,citycode,countycode,
	asset,telno,address,logo)
	values('Java','2019-04-01','1000','1000','1000','20','131','China',null);
	
create table t_address(code varchar(10),name varchar(20));

insert into t_address(code,name) values('010000','北京');
insert into t_address(code,name) values('010100','海淀');
insert into t_address(code,name) values('010200','朝阳');
insert into t_address(code,name) values('010101','上地');
insert into t_address(code,name) values('010102','中关村');
insert into t_address(code,name) values('010201','四惠');
insert into t_address(code,name) values('010202','国贸');

insert into t_address(code,name) values('020000','河北');
insert into t_address(code,name) values('020100','石家庄');
insert into t_address(code,name) values('020101','青县');
insert into t_address(code,name) values('020103','涿州');
insert into t_address(code,name) values('020200','保定');
insert into t_address(code,name) values('020201','定州');
insert into t_address(code,name) values('020202','河间');

resources目录下application.properties

#SpringBoot服务端口配置
server.port=6060
server.context-path=/

#spring.resources.static-locations=/css,/images,/img,/js

#SpringMVC JSP目录配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

#1.0.1
spring.dubbo.appname=relation-service
spring.dubbo.registry=zookeeper://localhost:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20880

#Http编码配置   
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true

#Rabbitmq配置     
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

#数据源配置    
spring.datasource.name=w2
spring.datasource.url=jdbc:mysql://localhost:3306/w3?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.maxActive=20
spring.datasource.initialSize=1
spring.datasource.maxWait=60000
spring.datasource.minIdle=1

#Mybatis实体类配置    
mybatis.mapper-locations=classpath:mapper/*.xml

#Solr配置    
spring.data.solr.host=http://localhost:8984/solr/new_core2

#日志配置
logging.file=d:/springboot.log
logging.level.com=DEBUG

Web模块

在这里插入图片描述
POM.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>Parent</artifactId>
        <groupId>com.gf</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>WebApp</artifactId>
    <packaging>war</packaging>

    <name>WebApp Maven Webapp</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>WebApp</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

RelationCtrl.java

package com.gf.ctl;

import java.sql.Date;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.alibaba.dubbo.config.annotation.Reference;
import com.gf.bean.AddressInfo;
import com.gf.bean.RelationInfo;
import com.gf.bean.UserInfo;
import com.gf.service.IRelationService;


@Controller
public class RalationCtrl {
	@Reference(timeout=5000)
	private IRelationService serv;
	
	@RequestMapping("/main")
	public String main()
	{
		return "main";
	}
	
	@RequestMapping("/getaddress")
	@ResponseBody
	public List<AddressInfo> getaddress()
	{
		return serv.getAddress();
	}
	
	@RequestMapping("/find")
	@ResponseBody
	public Map find(Integer page, Integer rows, String province, String city, String county, String name,
			String startDt, String endDt, String asset)
	{
		if(page == null)
			page = 1;
		if(rows == null)
			rows = 4;
		Date startDt2 = null;
		if(startDt != null && !"".equals(startDt))
			startDt2 = Date.valueOf(startDt);
		Date endDt2 = null;
		if(endDt != null && !"".equals(endDt))
			endDt2 = Date.valueOf(endDt);
		System.out.println("province="+province);
		System.out.println("city="+city);
		System.out.println("county="+county);
		System.out.println("name="+name);
		System.out.println("startDt2="+startDt2);
		System.out.println("endDt2="+endDt2);
		System.out.println("asset="+asset);
		if("".equals(asset))
			asset = null;

		Map m = serv.find(page, rows, province, city, county, name, startDt2, endDt2, asset);
		System.out.println("m="+m.get("total"));
		return m;
	}
	
	@RequestMapping("/save")
	@ResponseBody
	public boolean save(RelationInfo ri,UserInfo ui,String uname)
	{
		System.out.println("ri.name="+ri.getName()+",registerDt="+ri.getRegisterDt());
		System.out.println("ui.qq="+ui.getQq());
		System.out.println("uname="+uname);
		serv.saveRelation(ri);
		return true;
	}
}

StartWeb.java

package com.gf;

import com.alibaba.dubbo.spring.boot.annotation.EnableDubboConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDubboConfiguration
public class StartWeb {

    public static void main(String[] args) {
        SpringApplication.run(StartWeb.class, args);
    }

}

resources目录下application.properties

#SpringBoot服务端口配置
server.port=6062
server.context-path=/

#spring.resources.static-locations=/css,/images,/img,/js

#SpringMVC JSP目录配置
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp

#1.0.1
spring.dubbo.appname=relation-web
spring.dubbo.registry=zookeeper://localhost:2181
spring.dubbo.protocol=dubbo
spring.dubbo.port=20880

#Http编码配置   
spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true

#Rabbitmq配置     
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
spring.rabbitmq.virtual-host=/

#数据源配置    
spring.datasource.name=w2
spring.datasource.url=jdbc:mysql://localhost:3306/w3?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.maxActive=20
spring.datasource.initialSize=1
spring.datasource.maxWait=60000
spring.datasource.minIdle=1

#Mybatis实体类配置    
mybatis.mapper-locations=classpath:mapper/*.xml

#Solr配置    
spring.data.solr.host=http://localhost:8984/solr/new_core2

#日志配置
logging.file=d:/springboot.log
logging.level.com=DEBUG

WEB-INF/jsp/main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="/easyui/themes/default/easyui.css"/>
<link rel="stylesheet" type="text/css" href="/easyui/themes/icon.css"/>
<script type="text/javascript" src="/easyui/jquery.min.js"></script>
<script type="text/javascript" src="/easyui/jquery.easyui.min.js"></script>
<script type="text/javascript" src="/easyui/easyui-lang-zh_CN.js"></script>
<script>
	function getTitle(cellValue,rowObj,rowNo)
	{
		var html = '<div>';
		if(rowObj.state == '0')
			html=html+'	<h4>'+rowObj.name+'<img src="/easyui/new.png"/></h4>';
		else
			html=html+'	<h4>'+rowObj.name+'</h4>';
		html=html+'	<p>'+rowObj.asset+' '+rowObj.registerDt+'</p>';
		html=html+'	<p>'+rowObj.address+'</p>';
		html=html+'</div>';
		return html;
	}
	function showButton(cellValue,rowObj,rowNo)
	{
		var html = '<input type="button" value="详情"/>';
		html = html + '<input type="button" value="新增"/>';
		return html;
	}
	function doquery()
	{
		var province = $('#provinceCode1').combobox('getValue');
		var city = $('#cityCode1').combobox('getValue');
		var county = $('#countyCode1').combobox('getValue');
		var name = $('#name').textbox('getValue');
		var asset = $('#asset').combobox('getValue');
		var startDt = $('#startDt').datebox('getValue');
		var endDt = $('#endDt').datebox('getValue');
		var url = 'province='+province+'&city='+city+'&county='+county;
		url = url + '&name='+name+'&asset='+asset+'&startDt='+startDt+'&endDt='+endDt;
		url = '/find?'+url;
		$('#dg').datagrid({
			url:url
		})
	}
	function fillAddress(data,pname,cname,ctname)
	{
		var len = data.length;
		var provinceData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.indexOf('0000')>0)
				provinceData[provinceData.length]=data[i];
		}
		$('#'+pname).combobox('loadData',provinceData);
		$('#'+pname).combobox('setValue',provinceData[0].code);
		
		var selProvice = provinceData[0].code;
		var cityData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(4,6)=='00' && 
					data[i].code.substring(0,2) == selProvice.substring(0,2)
					&& data[i].code !=selProvice )
				cityData[cityData.length]=data[i];
		}
		$('#'+cname).combobox('loadData',cityData);
		$('#'+cname).combobox('setValue',cityData[0].code);
		
		var selCity = cityData[0].code;
		var countyData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(0,4)==selCity.substring(0,4)
					&& data[i].code !=selCity )
				countyData[countyData.length]=data[i];
		}
		$('#'+ctname).combobox('loadData',countyData);
		$('#'+ctname).combobox('setValue',countyData[0].code);
	}
	
	function selectProvice(record)
	{
		var data = addressObj;
		var len = data.length;
		var provinceData = [];		
		var selProvice = record.code;
		var cityData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(4,6)=='00' && 
					data[i].code.substring(0,2) == selProvice.substring(0,2)
					&& data[i].code !=selProvice )
				cityData[cityData.length]=data[i];
		}
		$('#cityCode').combobox('loadData',cityData);
		$('#cityCode').combobox('setValue',cityData[0].code);
		
		var selCity = cityData[0].code;
		var countyData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(0,4)==selCity.substring(0,4)
					&& data[i].code !=selCity )
				countyData[countyData.length]=data[i];
		}
		$('#countyCode').combobox('loadData',countyData);
		$('#countyCode').combobox('setValue',countyData[0].code);
	}
	
	function selectProvice1(record)
	{
		var data = addressObj;
		var len = data.length;
		var provinceData = [];		
		var selProvice = record.code;
		var cityData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(4,6)=='00' && 
					data[i].code.substring(0,2) == selProvice.substring(0,2)
					&& data[i].code !=selProvice )
				cityData[cityData.length]=data[i];
		}
		$('#cityCode1').combobox('loadData',cityData);
		$('#cityCode1').combobox('setValue',cityData[0].code);
		
		var selCity = cityData[0].code;
		var countyData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(0,4)==selCity.substring(0,4)
					&& data[i].code !=selCity )
				countyData[countyData.length]=data[i];
		}
		$('#countyCode1').combobox('loadData',countyData);
		$('#countyCode1').combobox('setValue',countyData[0].code);
	}
	
	function selectCity(record)
	{
		var data = addressObj;
		var len = data.length;
		var selCity = record.code;
		var countyData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(0,4)==selCity.substring(0,4)
					&& data[i].code !=selCity )
				countyData[countyData.length]=data[i];
		}
		$('#countyCode').combobox('loadData',countyData);
		$('#countyCode').combobox('setValue',countyData[0].code);
	}
	
	function selectCity1(record)
	{
		var data = addressObj;
		var len = data.length;
		var selCity = record.code;
		var countyData = [];
		for(var i=0;i<len;i++)
		{
			if(data[i].code.substring(0,4)==selCity.substring(0,4)
					&& data[i].code !=selCity )
				countyData[countyData.length]=data[i];
		}
		$('#countyCode1').combobox('loadData',countyData);
		$('#countyCode1').combobox('setValue',countyData[0].code);
	}
	function doadd()
	{
		$('#win').window('open');
	}
	function dosave()
	{
		alert('dosave');
		$('#frm').form({    
		    url:'/save',   
		    success:function(data){
		    	alert(data);
		        $('#dg').datagrid('reload');  
		    }    
		});
		$('#frm').submit(); 
	}
	
	var addressObj = null;
	$(document).ready(function(){
		$.ajax({
			url:'/getaddress',
			success:function(data)
			{
				addressObj = data;
				fillAddress(data,'provinceCode','cityCode','countyCode');
				fillAddress(data,'provinceCode1','cityCode1','countyCode1');
			}
		});
		$('#provinceCode').combobox({'onSelect':selectProvice});
		$('#cityCode').combobox({'onSelect':selectCity});
		$('#provinceCode1').combobox({'onSelect':selectProvice1});
		$('#cityCode1').combobox({'onSelect':selectCity1});
		
		var assetData=[{code:'20',name:'20万'},{code:'50',name:'50万'},{code:'100',name:'100万'}]
		$('#asset').combobox('loadData',assetData);
		
		$('#win').window('close');
	})
</script>
</head>
<body class="easyui-layout">   
    <div data-options="region:'center',title:'CRM列表'" style="padding:5px;background:#eee;">
		
		<table id="dg" class="easyui-datagrid" style="width:100%;height:250px"   
		        data-options="url:'/find',singleSelect:true,toolbar:'#tb',pagination:true,pageSize:4,pageList:[4,8,16]">   
		    <thead>   
		        <tr>   
		            <th data-options="field:'code',width:50">编号</th>
		            <th data-options="field:'logo',width:100">图标</th> 
		            <th data-options="field:'title',width:500,formatter:getTitle">名称</th>
		            <th data-options="field:'cmd',formatter:showButton">操作</th>
		            <th data-options="field:'name',hidden:true">名称</th>
		            <th data-options="field:'registerDt',hidden:true">名称</th>
		            <th data-options="field:'asset',hidden:true">名称</th>
		            <th data-options="field:'telNo',hidden:true">名称</th>
		            <th data-options="field:'address',hidden:true">名称</th>
		            <th data-options="field:'state',hidden:true">名称</th>
		        </tr>   
		    </thead>   
		</table>
		
		<div id="tb">
			<div>
				<label>查询条件:</label>
				<input id="provinceCode1" class="easyui-combobox" name="provinceCode1"   
    				data-options="label:'区域',valueField:'code',textField:'name'" />
				<input id="cityCode1" class="easyui-combobox" name="cityCode1"   
    				data-options="valueField:'code',textField:'name'" />  
				<input id="countyCode1" class="easyui-combobox" name="countyCode1"   
    				data-options="valueField:'code',textField:'name'" />
    				
    			<input class="easyui-textbox" id="name" name="name" data-options="label:'线索名称'" style="width:300px">     				 
			</div>
			<div>
				<input id="asset" class="easyui-combobox" name="asset"   
    				data-options="label:'注册资本',valueField:'code',textField:'name',url:'get_data.php'" />
			</div>
			<div>
				<input id="startDt" type= "text" class= "easyui-datebox" data-options="label:'注册时间'"> </input>   
				<input id="endDt" type= "text" class= "easyui-datebox" data-options="label:'至'"> </input>
				<a id="btn" "doquery()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a>  
				<a id="btn" "doadd()"class="easyui-linkbutton" data-options="iconCls:'icon-search'">新增</a>  
			</div>

		</div>

		<div id="win" class="easyui-window" title="新增" style="width:600px;height:500px"   
		        data-options="iconCls:'icon-save',modal:true">   
		    <div class="easyui-layout" data-options="fit:true">      
		        <div data-options="region:'center'">   
					<form id="frm" method="post">   
					    <div style="margin-left:50px;margin-top:30px">   
					        <input class="easyui-textbox" id="name" name="name" data-options="label:'线索名称'" style="width:300px">
					        <input id="registerDt" name="registerDt" type= "text" class= "easyui-datebox" data-options="label:'注册时间'"> </input>
					    </div>   
					    <div style="margin-left:50px;margin-top:30px">   
							<input id="asset" class="easyui-combobox" name="asset"   
    							data-options="label:'注册资本',valueField:'code',textField:'name',url:'get_data.php'" />
					    </div>
					    <div style="margin-left:50px;margin-top:30px">   
							<input id="provinceCode" class="easyui-combobox" name="provinceCode"   
			    				data-options="label:'区域',valueField:'code',textField:'name'" />
							<input id="cityCode" class="easyui-combobox" name="cityCode"   
			    				data-options="valueField:'code',textField:'name'" />  
							<input id="countyCode" class="easyui-combobox" name="countyCode"   
			    				data-options="valueField:'code',textField:'name'" />
					    </div> 
					    <div style="margin-left:50px;margin-top:30px">   
							<h3>联系人</h3>
					    </div>
					    <div style="margin-left:50px;margin-top:30px">   
							<input id="uname" class="easyui-textbox" name="uname"   
    							data-options="label:'联系人姓名'" />
							<input id="telNo" class="easyui-textbox" name="telNo"   
    							data-options="label:'联系人手机'" />
					    </div>
					    <div style="margin-left:50px;margin-top:30px">   
							<input id="qq" class="easyui-textbox" name="qq"   
    							data-options="label:'QQ'" />
							<input id="email" class="easyui-textbox" name="email"   
    							data-options="label:'邮箱'" />
					    </div>
						<div style="margin-left:50px;margin-top:30px">
							<a id="savebtn" "dosave()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">保存</a>  
							<a id="closebtn" "doclose()" class="easyui-linkbutton" data-options="iconCls:'icon-search'">关闭</a>  
						</div>
					</form> 
		        </div>   
		    </div>   
		</div> 
    </div>   
</body>  
</html>

前台页面效果
在这里插入图片描述

代码下载:
https://pan.baidu.com/s/1u2O6TMX1n_ERXwBqC9gtww
提取码 l9ug

猜你喜欢

转载自blog.csdn.net/qixiang_chen/article/details/88904230