客户关系管理系统3
来源:互联网 发布:如何做好淘宝分销 编辑:程序博客网 时间:2024/06/06 01:07
今天实现的主要功能是实现保存客户功能
主要使用到的技术是ajax加载数据字典下拉选
数据字典表
①ajax加载数据字典下拉选后台
BaseDict实体类
public class BaseDict {/* * 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; */ private String dict_id; private String dict_type_code; private String dict_type_name; private String dict_item_name; private String dict_item_code; private String dict_memo; private Integer dict_sort; private Character dict_enable; get,set方法省略
BaseDict.hbm.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"><hibernate-mapping package="cn.lxs.domain" > <class name="BaseDict" table="base_dict" > <id name="dict_id" > <generator class="assigned"></generator> </id> <property name="dict_type_code" ></property> <property name="dict_type_name" ></property> <property name="dict_item_name" ></property> <property name="dict_item_code" ></property> <property name="dict_memo" ></property> <property name="dict_sort" ></property> <property name="dict_enable" ></property> </class></hibernate-mapping>
BaseDictAction
public class BaseDictAction extends ActionSupport { //数据字典的类型编号 private String dict_type_code; private BaseDictService baseDictService; @Override public String execute() throws Exception { // 1 调用Service根据typecode获得数据字典对象list List<BaseDict> list = baseDictService.getListByTypeCode(dict_type_code); // 2 将list转换为 json格式 String json = JSONArray.fromObject(list).toString(); // 3 将json发送给浏览器 ServletActionContext.getResponse().setContentType( "application/json;charset=utf-8"); ServletActionContext.getResponse().getWriter().write(json); return null;// 告诉struts2不需要进行结果处理 } public String getDict_type_code() { return dict_type_code; } public void setDict_type_code(String dict_type_code) { this.dict_type_code = dict_type_code; } public void setBaseDictService(BaseDictService baseDictService) { this.baseDictService = baseDictService; }}
BaseDictServiceImpl
import java.util.List;import cn.lxs.dao.BaseDictDao;import cn.lxs.domain.BaseDict;import cn.lxs.service.BaseDictService;public class BaseDictServiceImpl implements BaseDictService { private BaseDictDao bdd; @Override public List<BaseDict> getListByTypeCode(String dict_type_code) { return bdd.getListByTypeCode(dict_type_code); } public void setBdd(BaseDictDao bdd) { this.bdd = bdd; }}
BaseDictDaoImpl
import java.io.Serializable;import java.util.List;import org.hibernate.criterion.DetachedCriteria;import org.hibernate.criterion.Restrictions;import cn.lxs.dao.BaseDictDao;import cn.lxs.domain.BaseDict;public class BaseDictDaoImpl extends BaseDaoImpl<BaseDict> implements BaseDictDao { @Override public List<BaseDict> getListByTypeCode(String dict_type_code) { //Criteria //创建离线查询对象 DetachedCriteria dc=DetachedCriteria.forClass(BaseDict.class); //封装条件 dc.add(Restrictions.eq("dict_type_code", dict_type_code)); List<BaseDict> list = (List<BaseDict>) getHibernateTemplate().findByCriteria(dc); return list; }}
② ajax加载数据字典下拉选前台
//使用ajax加载数据字典,生成select//参数1: 数据字典类型 (dict_type_code)//参数2: 将下拉![这里写图片描述](http://img.blog.csdn.net/20171214222432887?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzY1NDYxMzI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)选放入的标签id//参数3: 生成下拉选时,select标签的name属性值//参数4: 需要回显时,选中哪个optionfunction loadSelect(typecode,positionId,selectname,selectedId){ //1 创建select对象,将name属性指定 var $select = $("<select name="+selectname+" ></select>"); //2 添加提示选项 $select.append($("<option value='' >---请选择---</option>")); //3 使用jquery 的ajax 方法,访问后台Action $.post("${pageContext.request.contextPath}/BaseDictAction", { dict_type_code:typecode}, function(data){ //遍历 //4 返回json数组对象,对其遍历 $.each( data, function(i, json){ // 每次遍历创建一个option对象 var $option = $("<option value='"+json['dict_id']+"' >"+json["dict_item_name"]+"</option>"); if(json['dict_id'] == selectedId){ //判断是否需要回显 ,如果需要使其被选中 $option.attr("selected","selected"); } //并添加到select对象 $select.append($option); }); },"json"); //5 将组装好的select对象放入页面指定位置 $("#"+positionId).append($select);}
$option.attr(“selected”,”selected”);说明:
<script type="text/javascript">$(document).ready(function(){ loadSelect("006","level","cust_level.dict_id"; loadSelect("001","industry","cust_industry.dict_id" ); loadSelect("009","source","cust_source.dict_id" );});</script>
</td> <td>客户级别 :</td> <td id="level" > </td> </TR> <TR> <td>信息来源 :</td> <td id="source"> </td> <td>客户行业:</td> <td id="industry"> </td> </TR>
③ 客户保存后台
CustomerAction
//包括了上传图片的功能public class CustomerAction extends ActionSupport implements ModelDriven<Customer> { private Customer customer = new Customer(); private CustomerService cs; //上传的文件会自动封装到File对象 //在后台提供一个与前台input type=file组件 name相同的属性 private File photo; //在提交键名后加上固定后缀FileName,文件名称会自动封装到属性中 private String photoFileName; //在提交键名后加上固定后缀ContentType,文件MIME类型会自动封装到属性中 private String photoContentType;/* * 添加客户模块 */ public String add() throws Exception { if(photo!=null){ System.out.println("文件称:"+photoFileName); System.out.println("文件类型:"+photoContentType); //将上传文件保存到指定位置 photo.renameTo(new File("E:/upload/haha.jpg")); } //--------------------------------------------------------------------- //1 调用Service,保存Customer对象 cs.save(customer); //2 重定向到客户列表Action return "toList"; }
CustomerServiceImpl
@Override public void save(Customer customer) {//原始方法:调用Dao取出数据字典对象,将数据字典对象设置到Customer对象的对应的属性中去 //1 维护Customer与数据字典对象的关系,由于struts2参数封装,会将参数封装到数据字典的id属性.有值有实例 //那么我们无需手动维护关系 //2 调用Dao保存客户 cd.saveOrUpdate(customer); }
④ Customer实体类
public class Customer { /* * CREATE TABLE `cst_customer` ( `cust_id` BIGINT(32) NOT NULL * AUTO_INCREMENT COMMENT '客户编号(主键)', `cust_name` VARCHAR(32) NOT NULL * COMMENT '客户名称(公司名称)', `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 * '移动电话', PRIMARY KEY (`cust_id`) ) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT * CHARSET=utf8; */ private Long cust_id; private String cust_name; /* * private String cust_source; private String cust_industry; private String * cust_level; */ private String cust_linkman; private String cust_phone; private String cust_mobile; // 外键: private BaseDict cust_source;//客户来源 private BaseDict cust_industry;//客户行业 private BaseDict cust_level;//客户级别
loadSelect("006","level","cust_level.dict_id" )的"cust_level.dict_id"
与Customer对象相映射,所以会自动生成一个BaseDict的对象,里面有
系,直接保存即可。
阅读全文
0 0
- 客户关系管理系统3
- 客户关系管理系统 bt
- CRM-客户关系管理系统
- 客户关系管理系统说明
- 恒赛特客户关系管理系统
- Zurmo客户关系管理系统
- 客户关系管理系统
- 医院客户关系管理系统
- 客户关系管理系统1
- 客户关系管理系统2
- 客户关系管理系统4
- 客户关系管理系统5
- 客户关系管理系统6
- CRM是客户关系管理系统
- 客户关系管理系统(CRM)
- 客户关系管理系统(CRM)
- [Ext.Net]客户关系管理系统
- 2080CRM客户关系管理系统
- View 利用 RxJava 的点击去抖动实现
- 多个RecycleView 嵌套显示不全的情况
- 解决pycharm在debug console中输入中文UnicodeEncodeError的问题
- 【哈尔滨理工大学第七届程序设计竞赛初赛(低年级组)】A B C D E F H I
- 编写Web框架
- 客户关系管理系统3
- 米波现场,摇一摇活动 请先设置参数设置里的SOCKET地址
- Intellij IDEA配置
- 用蓝图实现模块化的应用
- shell脚本判断文件是否存在
- github快速入门教程
- CentOS7安装kafka
- 这是我的第一篇文章
- mariaDB安装