【ssm_crm】01 小试牛刀

一、ssm_crm初步创建

1、创建JAVA_WEB项目

2、导入jar包

3、整合配置文件(七个配置文件)

4、导入jsp等相关的前端配置(jsp放入WEB_INF目录下)

5、初步跑通,查看初步的页面

5.1 创建数据库



SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for base_dict
-- ----------------------------
DROP TABLE IF EXISTS `base_dict`;
CREATE TABLE `base_dict` (
  `dict_id` varchar(32) NOT NULL COMMENT '数据字典id(主键)',
  `dict_type_code` varchar(10) NOT NULL COMMENT '数据字典类别代码',
  `dict_type_name` varchar(64) NOT NULL COMMENT '数据字典类别名称',
  `dict_item_name` varchar(64) NOT NULL COMMENT '数据字典项目名称',
  `dict_item_code` varchar(10) DEFAULT NULL COMMENT '数据字典项目代码(可为空)',
  `dict_sort` int(10) DEFAULT NULL COMMENT '排序字段',
  `dict_enable` char(1) NOT NULL COMMENT '1:使用 0:停用',
  `dict_memo` varchar(64) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`dict_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of base_dict
-- ----------------------------
INSERT INTO `base_dict` VALUES ('1', '001', '客户行业', '教育培训 ', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('10', '003', '公司性质', '民企', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('12', '004', '年营业额', '1-10万', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('13', '004', '年营业额', '10-20万', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('14', '004', '年营业额', '20-50万', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('15', '004', '年营业额', '50-100万', null, '4', '1', null);
INSERT INTO `base_dict` VALUES ('16', '004', '年营业额', '100-500万', null, '5', '1', null);
INSERT INTO `base_dict` VALUES ('17', '004', '年营业额', '500-1000万', null, '6', '1', null);
INSERT INTO `base_dict` VALUES ('18', '005', '客户状态', '基础客户', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('19', '005', '客户状态', '潜在客户', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('2', '001', '客户行业', '电子商务', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('20', '005', '客户状态', '成功客户', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('21', '005', '客户状态', '无效客户', null, '4', '1', null);
INSERT INTO `base_dict` VALUES ('22', '006', '客户级别', '普通客户', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('23', '006', '客户级别', 'VIP客户', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('24', '007', '商机状态', '意向客户', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('25', '007', '商机状态', '初步沟通', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('26', '007', '商机状态', '深度沟通', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('27', '007', '商机状态', '签订合同', null, '4', '1', null);
INSERT INTO `base_dict` VALUES ('3', '001', '客户行业', '对外贸易', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('30', '008', '商机类型', '新业务', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('31', '008', '商机类型', '现有业务', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('32', '009', '商机来源', '电话营销', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('33', '009', '商机来源', '网络营销', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('34', '009', '商机来源', '推广活动', null, '3', '1', null);
INSERT INTO `base_dict` VALUES ('4', '001', '客户行业', '酒店旅游', null, '4', '1', null);
INSERT INTO `base_dict` VALUES ('5', '001', '客户行业', '房地产', null, '5', '1', null);
INSERT INTO `base_dict` VALUES ('6', '002', '客户信息来源', '电话营销', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('7', '002', '客户信息来源', '网络营销', null, '2', '1', null);
INSERT INTO `base_dict` VALUES ('8', '003', '公司性质', '合资', null, '1', '1', null);
INSERT INTO `base_dict` VALUES ('9', '003', '公司性质', '国企', null, '2', '1', null);

-- ----------------------------
-- Table structure for customer
-- ----------------------------
DROP TABLE IF EXISTS `customer`;
CREATE TABLE `customer` (
  `cust_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '客户编号(主键)',
  `cust_name` varchar(32) NOT NULL COMMENT '客户名称(公司名称)',
  `cust_user_id` bigint(32) DEFAULT NULL COMMENT '负责人id',
  `cust_create_id` bigint(32) DEFAULT NULL COMMENT '创建人id',
  `cust_source` varchar(32) DEFAULT NULL COMMENT '客户信息来源',
  `cust_industry` varchar(32) DEFAULT NULL COMMENT '客户所属行业',
  `cust_level` varchar(32) DEFAULT NULL COMMENT '客户级别',
  `cust_linkman` varchar(64) DEFAULT NULL COMMENT '联系人',
  `cust_phone` varchar(64) DEFAULT NULL COMMENT '固定电话',
  `cust_mobile` varchar(16) DEFAULT NULL COMMENT '移动电话',
  `cust_zipcode` varchar(10) DEFAULT NULL,
  `cust_address` varchar(100) DEFAULT NULL,
  `cust_createtime` datetime DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`cust_id`),
  KEY `FK_cst_customer_source` (`cust_source`),
  KEY `FK_cst_customer_industry` (`cust_industry`),
  KEY `FK_cst_customer_level` (`cust_level`),
  KEY `FK_cst_customer_user_id` (`cust_user_id`),
  KEY `FK_cst_customer_create_id` (`cust_create_id`)
) ENGINE=InnoDB AUTO_INCREMENT=162 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO `customer` VALUES ('14', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:01');
INSERT INTO `customer` VALUES ('15', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:01');
INSERT INTO `customer` VALUES ('16', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:01');
INSERT INTO `customer` VALUES ('17', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:02');
INSERT INTO `customer` VALUES ('22', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:03');
INSERT INTO `customer` VALUES ('24', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:03');
INSERT INTO `customer` VALUES ('25', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:03');
INSERT INTO `customer` VALUES ('26', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:03');
INSERT INTO `customer` VALUES ('28', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:04');
INSERT INTO `customer` VALUES ('29', '令狐冲', null, null, '7', '1', '23', '任盈盈', '0108888886', '13888888886', '6123456', '北京三里桥6', '2016-04-08 16:32:04');
INSERT INTO `customer` VALUES ('161', '马云', null, null, '6', '2', '22', '马化腾', '0108888887', '13888888888', '123456', '北京三里桥', '2016-04-08 16:32:47');

-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '用户id',
  `user_code` varchar(32) NOT NULL COMMENT '用户账号',
  `user_name` varchar(64) NOT NULL COMMENT '用户名称',
  `user_password` varchar(32) NOT NULL COMMENT '用户密码',
  `user_state` char(1) NOT NULL COMMENT '1:正常,0:暂停',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('5', 'm0003', '小军', '123', '1');
INSERT INTO `sys_user` VALUES ('6', 'm0001', '小红', '123', '1');
INSERT INTO `sys_user` VALUES ('7', 'm0001', '小明', '123', '1');
INSERT INTO `sys_user` VALUES ('8', 'm0001', '小红', '123', '1');

5.2 创建pojo类

1 包括用户customer、数据字典baseDict、访问类QueryVo

2  创建mapper接口以及对应的配置文件

<select id="findDictByCode" parameterType="string" resultType="cn.chuantao.pojo.BaseDict">
	select * from base_dict a 
	<where>
		and a.dict_enable=1 AND a.dict_type_code=#{code} ORDER BY a.dict_sort
	</where>
	
</select>

5.3 创建显示页面的controller 类

不要忘记在service实现类中添加@Service注解。以下为初步的Customer类

@Controller
@RequestMapping("/customer")
public class CustomerController {

	@Autowired
	private CustomerService customerService;
	
	@RequestMapping("/list")
	public String customer(Model model,QueryVo vo)throws Exception{
		List<BaseDict> sourceList = customerService.findByCode("002");
		//所属行业
		List<BaseDict> industryList = customerService.findByCode("001");
		//客户级别
		List<BaseDict> levelList = customerService.findByCode("006");
		
		//高级查询下拉列表数据
				model.addAttribute("fromType", sourceList);
				model.addAttribute("industryType", industryList);
				model.addAttribute("levelType", levelList);
				
				//高级查询选中数据回显
				model.addAttribute("custName", vo.getCustName());
				model.addAttribute("custSource", vo.getCustSource());
				model.addAttribute("custIndustry", vo.getCustIndustry());
				model.addAttribute("custLevel", vo.getCustLevel());
		return "customer";
	}
}

二、完善资源配置读取。

读取字典数据的 002、006、001

在config目录下添加resource.properties文件

customer.dict.source=002
customer.dict.industry=001
customer.dict.level=006

在SpringMVC.xml中添加文件读取

	<!-- 添加配置字典数据文件 -->
	<context:property-placeholder location="classpath:resource.properties"/>

在Controller中读取Spring中加载的文件数据

//	字典properties文件读取
	@Value("${customer.dict.source}")
	private String source;
	@Value("${customer.dict.industry}")
	private String industry;
	@Value("${customer.dict.level}")
	private String level;

三、完善查询请求

1、编写Customer接口以及映射文件。查询出内容封装到List集合中,存储到page的内容中

2、查询出内容的总条数,便于封装page中

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="cn.chuantao.dao.CustomerDao" >

	<sql id="customer_where">
		<where>
		    <if test="custName != null and custName != ''">
				and a.cust_name like '%${custName}%'
			</if>
			<if test="custSource != null and custSource != ''">
				and a.cust_source=#{custSource}
			</if>
			<if test="custIndustry != null and custIndustry != ''">
				and a.cust_industry=#{custIndustry}
			</if>
			<if test="custLevel != null and custLevel != ''">
				and a.cust_level=#{custLevel}
			</if>
		</where>
	</sql>
	
	<select id="findByQuery" parameterType="cn.chuantao.pojo.QueryVo" resultType="cn.chuantao.pojo.Customer">
		select a.cust_id,a.cust_name, b.dict_item_name cust_source, c.dict_item_name cust_industry, 
				d.dict_item_name cust_level,a.cust_phone,a.cust_mobile, a.cust_linkman, a.cust_zipcode, 
				a.cust_address, a.cust_createtime
			from customer a
			left join base_dict b on a.cust_source = b.dict_id
			left join base_dict c on a.cust_industry = c.dict_id
			left join base_dict d on a.cust_level = d.dict_id
			
			<include refid="customer_where"></include>
			limit #{start}, #{size}
	</select>
	<select id="findCustomerByVoCount" parameterType="cn.chuantao.pojo.QueryVo" resultType="Integer">
		select count(*)
			from customer a
			left join base_dict b on a.cust_source = b.dict_id
			left join base_dict c on a.cust_industry = c.dict_id
			left join base_dict d on a.cust_level = d.dict_id
			
			<include refid="customer_where"></include>
			
	</select>

</mapper>

2、Controller 编写


@Controller
@RequestMapping("/customer")
public class CustomerController {

	@Autowired
	private CustomerService customerService;
//	字典properties文件读取
	@Value("${customer.dict.source}")
	private String source;
	@Value("${customer.dict.industry}")
	private String industry;
	@Value("${customer.dict.level}")
	private String level;
	
	
	@RequestMapping("/list")
	public String customer(Model model,QueryVo vo)throws Exception{
		List<BaseDict> sourceList = customerService.findByCode(source);
		//所属行业
		List<BaseDict> industryList = customerService.findByCode(industry);
		//客户级别
		List<BaseDict> levelList = customerService.findByCode(level);
		if(vo.getCustName()!=null){
			vo.setCustName(new String(vo.getCustName().getBytes("iso8859-1"),"utf-8"));
		}
		if(vo.getPage() == null){
			vo.setPage(1);
		}
		
		//设置查询的起始记录条数
		vo.setStart((vo.getPage() - 1) * vo.getSize());
		
//		根据参数进行查询,并返回结果
		List<Customer> customerList = customerService.findByQuery(vo);
		//查询数据总数
		Integer count = customerService.findCustomerByVoCount(vo);
//		拼装成分页查询
		Page<Customer> page = new Page<Customer>();
		
		page.setTotal(count);
		page.setPage(vo.getPage());
		page.setSize(vo.getSize());
		page.setRows(customerList);
		model.addAttribute("page", page);
		//高级查询下拉列表数据
		model.addAttribute("fromType", sourceList);
		model.addAttribute("industryType", industryList);
		model.addAttribute("levelType", levelList);
		
		//高级查询选中数据回显
		model.addAttribute("custName", vo.getCustName());
		model.addAttribute("custSource", vo.getCustSource());
		model.addAttribute("custIndustry", vo.getCustIndustry());
		model.addAttribute("custLevel", vo.getCustLevel());
		
		
		
		return "customer";
	}
}

四、修改步骤

1、点击修改  根据传递的id回显出整条记录。使用JSON形式返回数据

	<select id="findCustomerById" parameterType="long" resultType="cn.chuantao.pojo.Customer">
		select * from customer where cust_id = #{cust_id}
	</select>

controller

	/**
	 * 根据点击修改传递的id查询数据并且回显。利用json返回数据
	 * @param id
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("/edit")
	@ResponseBody
	public Customer edit(Long id) throws Exception{
		Customer customer = customerService.findCustomerById(id);
//		返回对象,会自动解析为json格式
		return customer;
	}

前端jsp

<a href="#" class="btn btn-primary btn-xs" data-toggle="modal" data-target="#customerEditDialog" onclick="editCustomer(${row.cust_id})">修改</a>
		function editCustomer(id) {
			$.ajax({
				type:"get",
				url:"<%=basePath%>customer/edit.action",
				data:{"id":id},
				success:function(data) {
					$("#edit_cust_id").val(data.cust_id);
					$("#edit_customerName").val(data.cust_name);
					$("#edit_customerFrom").val(data.cust_source)
					$("#edit_custIndustry").val(data.cust_industry)
					$("#edit_custLevel").val(data.cust_level)
					$("#edit_linkMan").val(data.cust_linkman);
					$("#edit_phone").val(data.cust_phone);
					$("#edit_mobile").val(data.cust_mobile);
					$("#edit_zipcode").val(data.cust_zipcode);
					$("#edit_address").val(data.cust_address);
					
				}
			});
		}

2、确认修改 

DaoMapper

<update id="updateCustomerById" parameterType="cn.chuantao.pojo.Customer" >
		update customer
		<!-- set标签作用:
					第一可以自动添加set关键字, 
					第二可以去掉最后一个更新的逗号 -->
		<set>
			<if test="cust_name != null and  cust_name != ''">
				cust_name=#{cust_name},
			</if>
			<if test="cust_source != null and cust_source  != ''">
				cust_source=#{cust_source},
			</if>
			<if test="cust_industry != null and  cust_industry != ''">
				cust_industry=#{cust_industry},
			</if>
			<if test="cust_level != null and  cust_level != ''">
				cust_level=#{cust_level},
			</if>
			<if test="cust_linkman != null and  cust_linkman != ''">
				cust_linkman=#{cust_linkman},
			</if>
			<if test=" cust_phone != null and  cust_phone != ''">
				cust_phone=#{cust_phone},
			</if>
			<if test="cust_mobile != null and cust_mobile  != ''">
				cust_mobile=#{cust_mobile},
			</if>
			<if test="cust_zipcode != null and  cust_zipcode != ''">
				cust_zipcode=#{cust_zipcode},
			</if>
			<if test="cust_address != null and   cust_address!= ''">
				cust_address=#{cust_address},
			</if>
		</set>
		where cust_id=#{cust_id}
	</update>

controller

	@RequestMapping("/update")
	public String update(Customer customer)throws Exception{
		customerService.updateCustomerById(customer);
//		自动加载网页
		return "customer";
	}

前端jsp

<button type="button" class="btn btn-primary" onclick="updateCustomer()">保存修改</button>
function updateCustomer() {
			$.post("<%=basePath%>customer/update.action",$("#edit_customer_form").serialize(),function(data){
				alert("客户信息更新成功!");
				window.location.reload();
			});
		}

五 删除信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值