客户关系管理系统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的对象,里面有
系,直接保存即可。

原创粉丝点击