Bläddra i källkod

整合客户信息类

liujiankang 7 år sedan
förälder
incheckning
4b8e08abf1

+ 0 - 134
watero-rst-interface/src/main/java/com/iamberry/rst/faces/customer/CustomerBasicInfoSaveService.java

@@ -1,134 +0,0 @@
-package com.iamberry.rst.faces.customer;
-
-
-import com.iamberry.rst.core.address.*;
-import com.iamberry.rst.core.address.City;
-import com.iamberry.rst.core.address.Province;
-import com.iamberry.rst.core.customer.*;
-import com.iamberry.rst.core.order.Product;
-import com.iamberry.rst.core.order.ProductColor;
-import com.iamberry.rst.core.order.ProductType;
-
-import java.util.List;
-
-public interface CustomerBasicInfoSaveService {
-
-    /**
-     * 根据客户id查询客户基本信息
-     * @param queryCustomerId
-     * @return
-     */
-    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询对接联系人信息
-     * @param queryCustomerId
-     * @return
-     */
-    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户销售渠道备案信息
-     * @param queryCustomerId
-     * @return
-     */
-    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户付款/退款信息
-     * @param queryCustomerId
-     * @return
-     */
-    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户开票信息
-     * @param queryCustomerId
-     * @return
-     */
-    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId);
-
-    /**
-     * 添加客户基本信息
-     *
-     * @param customerBasicInfo
-     * @return
-     */
-    public void saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo,List<DockedContactInfo> dockedContactInfoList, List<ChannelSaleInfo> channelSaleInfoList,
-                                     BillingInfo billingInfo, TicketOpeningInfo ticketOpeningInfo);
-
-    /**
-     * 查询所有省份
-     * @param provinceId
-     * @return
-     */
-    public List<Province> queryProvinceList(String provinceId);
-
-    /**
-     * 根据省份代号查询所有城市
-     * @param provinceId
-     * @return
-     */
-    public List<City> queryCityList(String provinceId);
-
-    /**
-     * 查询所有渠道类别
-     * @param channelCategoryId
-     * @return
-     */
-    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId);
-
-    /**
-     * 根据渠道类别查询渠道类型
-     * @param channelCategoryId
-     * @return
-     */
-    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId);
-
-    /**
-     * 查询销售产品
-     * @param promotingProductsInfo
-     * @return
-     */
-    public List<Product> queryPromotingProductsList(String promotingProductsInfo);
-
-    /**
-     * 根据产品初始化价格
-     * @param promotingProductsId
-     * @return
-     */
-    public List<ProductColor> querySupplyPriceList(String promotingProductsId);
-
-
-    /**
-     * 添加对接联系人信息
-     *
-     * @param dockedContactInfo
-     * @return
-     */
-    /*public void saveDockedContactInfo(DockedContactInfo dockedContactInfo);*/
-
-    /**
-     * 添加客户销售渠道备案信息
-     *
-     * @param channelSaleInfo
-     * @return
-     */
-    /*public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo);*/
-
-    /**
-     * 添加付款/退款信息
-     *
-     * @param billingInfo
-     * @return
-     */
-    /*public void saveBillingInfo(BillingInfo billingInfo);*/
-
-    /**
-     * 添加对开票信息
-     *
-     * @param ticketOpeningInfo
-     * @return
-     */
-    /*public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo);*/
-}

+ 123 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/customer/CustomerBasicService.java

@@ -1,6 +1,10 @@
 package com.iamberry.rst.faces.customer;
 
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.customer.*;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
 
@@ -48,4 +52,123 @@ public interface CustomerBasicService {
      *  根据客户id渠道划分信息集合
      */
     List<ChannelDivisionInfo> listChannelDivisionInfo(Integer coustomerId);
+
+    /**
+     * 根据客户id查询客户基本信息
+     * @param queryCustomerId
+     * @return
+     */
+    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询对接联系人信息
+     * @param queryCustomerId
+     * @return
+     */
+    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户销售渠道备案信息
+     * @param queryCustomerId
+     * @return
+     */
+    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户付款/退款信息
+     * @param queryCustomerId
+     * @return
+     */
+    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户开票信息
+     * @param queryCustomerId
+     * @return
+     */
+    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId);
+
+    /**
+     * 添加客户基本信息
+     *
+     * @param customerBasicInfo
+     * @return
+     */
+    public void saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo,List<DockedContactInfo> dockedContactInfoList, List<ChannelSaleInfo> channelSaleInfoList,
+                                      BillingInfo billingInfo, TicketOpeningInfo ticketOpeningInfo);
+
+    /**
+     * 查询所有省份
+     * @param provinceId
+     * @return
+     */
+    public List<Province> queryProvinceList(String provinceId);
+
+    /**
+     * 根据省份代号查询所有城市
+     * @param provinceId
+     * @return
+     */
+    public List<City> queryCityList(String provinceId);
+
+    /**
+     * 查询所有渠道类别
+     * @param channelCategoryId
+     * @return
+     */
+    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId);
+
+    /**
+     * 根据渠道类别查询渠道类型
+     * @param channelCategoryId
+     * @return
+     */
+    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId);
+
+    /**
+     * 查询销售产品
+     * @param promotingProductsInfo
+     * @return
+     */
+    public List<Product> queryPromotingProductsList(String promotingProductsInfo);
+
+    /**
+     * 根据产品初始化价格
+     * @param promotingProductsId
+     * @return
+     */
+    public List<ProductColor> querySupplyPriceList(String promotingProductsId);
+
+
+    /**
+     * 添加对接联系人信息
+     *
+     * @param dockedContactInfo
+     * @return
+     */
+    /*public void saveDockedContactInfo(DockedContactInfo dockedContactInfo);*/
+
+    /**
+     * 添加客户销售渠道备案信息
+     *
+     * @param channelSaleInfo
+     * @return
+     */
+    /*public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo);*/
+
+    /**
+     * 添加付款/退款信息
+     *
+     * @param billingInfo
+     * @return
+     */
+    /*public void saveBillingInfo(BillingInfo billingInfo);*/
+
+    /**
+     * 添加对开票信息
+     *
+     * @param ticketOpeningInfo
+     * @return
+     */
+    /*public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo);*/
 }

+ 0 - 131
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/CustomerBasicInfoSaveServiceImpl.java

@@ -1,131 +0,0 @@
-package com.iamberry.rst.service.customer;
-
-import com.iamberry.rst.core.address.*;
-import com.iamberry.rst.core.address.City;
-import com.iamberry.rst.core.address.Province;
-import com.iamberry.rst.core.customer.*;
-import com.iamberry.rst.core.order.Product;
-import com.iamberry.rst.core.order.ProductColor;
-import com.iamberry.rst.faces.customer.CustomerBasicInfoSaveService;
-import com.iamberry.rst.service.customer.mapper.CustomerBasicInfoSaveMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-
-@Service
-public class CustomerBasicInfoSaveServiceImpl implements CustomerBasicInfoSaveService {
-
-    private Logger logger = LoggerFactory.getLogger(CustomerBasicInfoSaveServiceImpl.class);
-
-    @Autowired
-    private CustomerBasicInfoSaveMapper customerBasicInfoSaveMapper;
-
-
-    @Override
-    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId) {
-        return customerBasicInfoSaveMapper.queryCustomerBasicInfoByCustomerId(queryCustomerId);
-    }
-
-    @Override
-    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId) {
-        return customerBasicInfoSaveMapper.queryDockedContactInfoListByCustomerId(queryCustomerId);
-    }
-
-    @Override
-    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId) {
-        return customerBasicInfoSaveMapper.queryChannelSaleInfoListByCustomerId(queryCustomerId);
-    }
-
-    @Override
-    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId) {
-        return customerBasicInfoSaveMapper.queryBillingInfoByCustomerId(queryCustomerId);
-    }
-
-    @Override
-    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId) {
-        return customerBasicInfoSaveMapper.queryTicketOpeningInfoByCustomerId(queryCustomerId);
-    }
-
-    @Override
-    @Transactional
-    public void saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo,List<DockedContactInfo> dockedContactInfoList, List<ChannelSaleInfo> channelSaleInfoList,
-                                     BillingInfo billingInfo, TicketOpeningInfo ticketOpeningInfo) {
-        logger.info("saveCustomerBasicInfo start...");
-        int customerId = -1;
-        try {
-            customerBasicInfo = customerBasicInfoSaveMapper.saveCustomerBasicInfo(customerBasicInfo);
-            if(customerBasicInfo != null){
-                customerId = customerBasicInfo.getCustomerId();
-                if(customerId != -1){
-                    if(dockedContactInfoList != null && dockedContactInfoList.size()>0){
-                        for (DockedContactInfo dockedContactInfo: dockedContactInfoList) {
-                            dockedContactInfo.setCustomerId(customerId);
-                            customerBasicInfoSaveMapper.saveDockedContactInfo(dockedContactInfo);
-                        }
-                    }
-                    if(channelSaleInfoList != null && channelSaleInfoList.size()>0){
-                        for (ChannelSaleInfo channelSaleInfo: channelSaleInfoList) {
-                            channelSaleInfo.setCustomerId(customerId);
-                            customerBasicInfoSaveMapper.saveChannelSaleInfo(channelSaleInfo);
-                        }
-                    }
-                    billingInfo.setCustomerId(customerId);
-                    ticketOpeningInfo.setCustomerId(customerId);
-                    customerBasicInfoSaveMapper.saveBillingInfo(billingInfo);
-                    customerBasicInfoSaveMapper.saveTicketOpeningInfo(ticketOpeningInfo);
-                }
-            }
-            logger.info("saveCustomerBasicInfo end...");
-        }catch (Exception e){
-            logger.error("添加客户信息失败"+e.getMessage());
-        }
-
-    }
-
-    public List<Province> queryProvinceList(String provinceId){
-        return (List<Province>)customerBasicInfoSaveMapper.queryProvinceList(provinceId);
-    }
-
-    public List<City> queryCityList(String provinceId){
-        return (List<City>)customerBasicInfoSaveMapper.queryCityList(provinceId);
-    }
-
-    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId){
-        return (List<ChannelDivisionInfo>)customerBasicInfoSaveMapper.queryChannelCategoryList(channelCategoryId);
-    }
-
-    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId){
-        return (List<ChannelDivisionInfo>)customerBasicInfoSaveMapper.queryChannelTypeList(channelCategoryId);
-    }
-
-    public List<Product> queryPromotingProductsList(String promotingProductsInfo){
-        return (List<Product>)customerBasicInfoSaveMapper.queryPromotingProductsList(promotingProductsInfo);
-    }
-
-    public List<ProductColor> querySupplyPriceList(String promotingProductsId){
-        return (List<ProductColor>)customerBasicInfoSaveMapper.querySupplyPriceList(promotingProductsId);
-    }
-    /*@Override
-    public void saveDockedContactInfo(DockedContactInfo dockedContactInfo) {
-        customerBasicInfoSaveMapper.saveDockedContactInfo(dockedContactInfo);
-    }
-
-    @Override
-    public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo) {
-        customerBasicInfoSaveMapper.saveChannelSaleInfo(channelSaleInfo);
-    }
-
-    @Override
-    public void saveBillingInfo(BillingInfo billingInfo) {
-        customerBasicInfoSaveMapper.saveBillingInfo(billingInfo);
-    }
-
-    @Override
-    public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo) {
-        customerBasicInfoSaveMapper.saveTicketOpeningInfo(ticketOpeningInfo);
-    }*/
-}

+ 117 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/CustomerBasicServiceImpl.java

@@ -1,14 +1,21 @@
 package com.iamberry.rst.service.customer;
 
 import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.customer.*;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.faces.customer.CustomerBasicService;
 import com.iamberry.rst.service.customer.mapper.CustomerBasicMapper;
 import com.iamberry.rst.util.PageUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -61,4 +68,114 @@ public class CustomerBasicServiceImpl implements CustomerBasicService{
     public List<ChannelDivisionInfo> listChannelDivisionInfo(Integer coustomerId) {
         return customerBasicMapper.listChannelDivisionInfo(coustomerId);
     }
+
+    private Logger logger = LoggerFactory.getLogger(CustomerBasicServiceImpl.class);
+
+    @Autowired
+    private CustomerBasicMapper customerBasicInfoSaveMapper;
+
+
+    @Override
+    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId) {
+        return customerBasicInfoSaveMapper.queryCustomerBasicInfoByCustomerId(queryCustomerId);
+    }
+
+    @Override
+    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId) {
+        return customerBasicInfoSaveMapper.queryDockedContactInfoListByCustomerId(queryCustomerId);
+    }
+
+    @Override
+    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId) {
+        return customerBasicInfoSaveMapper.queryChannelSaleInfoListByCustomerId(queryCustomerId);
+    }
+
+    @Override
+    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId) {
+        return customerBasicInfoSaveMapper.queryBillingInfoByCustomerId(queryCustomerId);
+    }
+
+    @Override
+    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId) {
+        return customerBasicInfoSaveMapper.queryTicketOpeningInfoByCustomerId(queryCustomerId);
+    }
+
+    @Override
+    @Transactional
+    public void saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo,List<DockedContactInfo> dockedContactInfoList, List<ChannelSaleInfo> channelSaleInfoList,
+                                      BillingInfo billingInfo, TicketOpeningInfo ticketOpeningInfo) {
+        logger.info("saveCustomerBasicInfo start...");
+        int customerId = -1;
+        try {
+            customerBasicInfo = customerBasicInfoSaveMapper.saveCustomerBasicInfo(customerBasicInfo);
+            if(customerBasicInfo != null){
+                customerId = customerBasicInfo.getCustomerId();
+                if(customerId != -1){
+                    if(dockedContactInfoList != null && dockedContactInfoList.size()>0){
+                        for (DockedContactInfo dockedContactInfo: dockedContactInfoList) {
+                            dockedContactInfo.setCustomerId(customerId);
+                            customerBasicInfoSaveMapper.saveDockedContactInfo(dockedContactInfo);
+                        }
+                    }
+                    if(channelSaleInfoList != null && channelSaleInfoList.size()>0){
+                        for (ChannelSaleInfo channelSaleInfo: channelSaleInfoList) {
+                            channelSaleInfo.setCustomerId(customerId);
+                            customerBasicInfoSaveMapper.saveChannelSaleInfo(channelSaleInfo);
+                        }
+                    }
+                    billingInfo.setCustomerId(customerId);
+                    ticketOpeningInfo.setCustomerId(customerId);
+                    customerBasicInfoSaveMapper.saveBillingInfo(billingInfo);
+                    customerBasicInfoSaveMapper.saveTicketOpeningInfo(ticketOpeningInfo);
+                }
+            }
+            logger.info("saveCustomerBasicInfo end...");
+        }catch (Exception e){
+            logger.error("添加客户信息失败"+e.getMessage());
+        }
+
+    }
+
+    public List<Province> queryProvinceList(String provinceId){
+        return (List<Province>)customerBasicInfoSaveMapper.queryProvinceList(provinceId);
+    }
+
+    public List<City> queryCityList(String provinceId){
+        return (List<City>)customerBasicInfoSaveMapper.queryCityList(provinceId);
+    }
+
+    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId){
+        return (List<ChannelDivisionInfo>)customerBasicInfoSaveMapper.queryChannelCategoryList(channelCategoryId);
+    }
+
+    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId){
+        return (List<ChannelDivisionInfo>)customerBasicInfoSaveMapper.queryChannelTypeList(channelCategoryId);
+    }
+
+    public List<Product> queryPromotingProductsList(String promotingProductsInfo){
+        return (List<Product>)customerBasicInfoSaveMapper.queryPromotingProductsList(promotingProductsInfo);
+    }
+
+    public List<ProductColor> querySupplyPriceList(String promotingProductsId){
+        return (List<ProductColor>)customerBasicInfoSaveMapper.querySupplyPriceList(promotingProductsId);
+    }
+    /*@Override
+    public void saveDockedContactInfo(DockedContactInfo dockedContactInfo) {
+        customerBasicInfoSaveMapper.saveDockedContactInfo(dockedContactInfo);
+    }
+
+    @Override
+    public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo) {
+        customerBasicInfoSaveMapper.saveChannelSaleInfo(channelSaleInfo);
+    }
+
+    @Override
+    public void saveBillingInfo(BillingInfo billingInfo) {
+        customerBasicInfoSaveMapper.saveBillingInfo(billingInfo);
+    }
+
+    @Override
+    public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo) {
+        customerBasicInfoSaveMapper.saveTicketOpeningInfo(ticketOpeningInfo);
+    }*/
 }

+ 0 - 130
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/mapper/CustomerBasicInfoSaveMapper.java

@@ -1,130 +0,0 @@
-package com.iamberry.rst.service.customer.mapper;
-
-import com.iamberry.rst.core.address.City;
-import com.iamberry.rst.core.address.Province;
-import com.iamberry.rst.core.customer.*;
-import com.iamberry.rst.core.order.Product;
-import com.iamberry.rst.core.order.ProductColor;
-
-import java.util.List;
-
-public interface CustomerBasicInfoSaveMapper {
-    /**
-     * 添加客户基本信息
-     *
-     * @param customerBasicInfo
-     * @return
-     */
-    public CustomerBasicInfo saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo);
-
-    /**
-     * 添加对接联系人信息
-     *
-     * @param dockedContactInfo
-     * @return
-     */
-    public void saveDockedContactInfo(DockedContactInfo dockedContactInfo);
-
-    /**
-     * 添加客户销售渠道备案信息
-     *
-     * @param channelSaleInfo
-     * @return
-     */
-    public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo);
-
-    /**
-     * 添加付款/退款信息
-     *
-     * @param billingInfo
-     * @return
-     */
-    public void saveBillingInfo(BillingInfo billingInfo);
-
-    /**
-     * 添加开票信息
-     *
-     * @param ticketOpeningInfo
-     * @return
-     */
-    public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo);
-
-    //查询部分 start
-    /**
-     * 根据客户id查询客户基本信息
-     * @param queryCustomerId
-     * @return
-     */
-    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询对接联系人信息
-     * @param queryCustomerId
-     * @return
-     */
-    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户销售渠道备案信息
-     * @param queryCustomerId
-     * @return
-     */
-    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户付款/退款信息
-     * @param queryCustomerId
-     * @return
-     */
-    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId);
-
-    /**
-     * 根据客户id查询客户开票信息
-     * @param queryCustomerId
-     * @return
-     */
-    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId);
-    //查询部分 end
-
-    /**
-     * 查询所有省份
-     * @param provinceId
-     * @return
-     */
-    public List<Province> queryProvinceList(String provinceId);
-
-    /**
-     * 根据省份代号查询所有城市
-     * @param provinceId
-     * @return
-     */
-    public List<City> queryCityList(String provinceId);
-
-    /**
-     * 查询所有渠道类别
-     * @param channelCategoryId
-     * @return
-     */
-    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId);
-
-    /**
-     * 根据渠道类别查询渠道类型
-     * @param channelCategoryId
-     * @return
-     */
-    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId);
-
-    /**
-     * 查询销售产品
-     * @param promotingProductsInfo
-     * @return
-     */
-    public List<Product> queryPromotingProductsList(String promotingProductsInfo);
-
-    /**
-     * 查询销售产品价格
-     * @param promotingProductsId
-     * @return
-     */
-    public List<ProductColor> querySupplyPriceList(String promotingProductsId);
-}

+ 0 - 311
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/mapper/CustomerBasicInfoSaveMapper.xml

@@ -1,311 +0,0 @@
-<?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.iamberry.rst.service.customer.mapper.CustomerBasicInfoSaveMapper" >
-    <!--映射结果集 start-->
-    <!--客户基本信息结果映射-->
-    <resultMap type="com.iamberry.rst.core.customer.CustomerBasicInfo" id="customerBasicInfoResult">
-        <id property="customerId" column="customer_id"/>
-        <result property="customerName" column="customer_name" />
-        <result property="customerIndustry" column="customer_industry" />
-        <result property="customerType" column="customer_type" />
-        <result property="cooperativeState" column="cooperative_state" />
-        <result property="customerProvinceCode" column="customer_province_code" />
-        <result property="customerCityCode" column="customer_city_code" />
-        <result property="customerAddress" column="customer_address" />
-        <result property="customerStatus" column="customer_status" />
-        <result property="createDate" column="create_date" />
-        <result property="updateDate" column="update_date" />
-        <result property="idCreateBy" column="id_create_by" />
-        <result property="customerRemarks" column="customer_remarks" />
-    </resultMap>
-    <!--对接联系人信息结果映射-->
-    <resultMap type="com.iamberry.rst.core.customer.DockedContactInfo" id="dockedContactInfoResult">
-        <id property="dockedContactId" column="docked_contact_id"/>
-        <result property="contactName" column="contact_name" />
-        <result property="contactPhone" column="contact_phone" />
-        <result property="contactType" column="contact_type" />
-        <result property="contactEmail" column="contact_email" />
-        <result property="createDate" column="create_date" />
-    </resultMap>
-    <!--客户渠道销售信息结果映射-->
-    <resultMap type="com.iamberry.rst.core.customer.ChannelSaleInfo" id="channelSaleInfoResult">
-        <id property="channelSaleId" column="channel_sale_id"/>
-        <result property="channelName" column="channel_name" />
-        <result property="promotingProducts" column="promoting_products" />
-        <result property="supplyPrice" column="supply_price" />
-        <result property="accountPeriod" column="account_period" />
-        <result property="createDate" column="create_date" />
-    </resultMap>
-    <!--付款/退款信息结果映射-->
-    <resultMap type="com.iamberry.rst.core.customer.BillingInfo" id="billingInfoResult">
-        <id property="billingId" column="billing_id"/>
-        <result property="accountOpeningBranch" column="account_opening_branch" />
-        <result property="accountName" column="account_name" />
-        <result property="accountNum" column="account_num" />
-        <result property="receivablesName" column="receivables_name" />
-        <result property="receivablesPhone" column="receivables_phone" />
-        <result property="createDate" column="create_date" />
-    </resultMap>
-    <!--开票信息结果映射-->
-    <resultMap type="com.iamberry.rst.core.customer.TicketOpeningInfo" id="ticketOpeningInfoResult">
-        <id property="ticketOpeningId" column="ticket_opening_id"/>
-        <result property="ticketType" column="ticket_type" />
-        <result property="accountOpeningBranch" column="account_opening_branch" />
-        <result property="ticketOpeningAccount" column="ticket_opening_account" />
-        <result property="enterpriseName" column="enterprise_name" />
-        <result property="taxpayerIdentificationNum" column="taxpayer_identification_num" />
-        <result property="ticketOpeningPhone" column="ticket_opening_phone" />
-        <result property="enterpriseAddress" column="enterprise_address" />
-        <result property="createDate" column="create_date" />
-    </resultMap>
-    <!--查询所有省份映射-->
-    <resultMap type="com.iamberry.rst.core.address.Province" id="queryProvinceResult">
-        <id property="provinceId" column="province_id"/>
-        <!--<result property="provinceNum" column="divisionCode" />-->
-        <result property="province" column="province" />
-    </resultMap>
-    <!--根据省份代号查询所有城市映射-->
-    <resultMap type="com.iamberry.rst.core.address.City" id="queryCityResult">
-        <id property="cityId" column="city_id"/>
-        <!--<result property="cityNum" column="city_number" />-->
-        <result property="city" column="city" />
-        <!--<result property="provinceNum" column="provinceid" />-->
-    </resultMap>
-    <!--查询所有渠道类别-->
-    <resultMap type="com.iamberry.rst.core.customer.ChannelDivisionInfo" id="queryChannelCategoryResult">
-        <result property="channelCategory" column="channel_category" />
-        <result property="channelName" column="channel_categoryId" />
-    </resultMap>
-    <!--根据渠道类别查询渠道类型-->
-    <resultMap type="com.iamberry.rst.core.customer.ChannelDivisionInfo" id="queryChannelTypeResult">
-        <!--<id property="channelDivisionId" column="channel_division_id"/>-->
-        <result property="channelType" column="channel_type" />
-        <result property="channelName" column="channel_categoryId" />
-    </resultMap>
-    <!--查询销售产品-->
-    <resultMap type="com.iamberry.rst.core.order.Product" id="queryPromotingProductsResult">
-        <id property="productId" column="product_id"/>
-        <result property="productName" column="product_name" />
-    </resultMap>
-    <!--查询销售产品价格-->
-    <resultMap type="com.iamberry.rst.core.order.ProductColor" id="querySupplyPriceResult">
-        <result property="colorId" column="color_id" />
-        <result property="colorPrice" column="color_price" />
-    </resultMap>
-    <!--映射结果集 end-->
-
-    <!--新增部分 start-->
-    <!-- 添加客户基本信息 -->
-    <insert id="saveCustomerBasicInfo" parameterType="CustomerBasicInfo" useGeneratedKeys="true"  keyProperty="customer_id">
-        INSERT INTO
-        tb_rst_customer_basic_info
-        (
-        customer_name, customer_industry, customer_type, cooperative_state, customer_province_code,customer_city_code,
-        customer_address, customer_status, create_date, update_date,id_create_by,customer_remarks
-        )
-        VALUES
-        (
-        #{customerName},#{customerIndustry},#{customerType},#{cooperativeState},#{customerProvinceCode},#{customerCityCode},
-        #{customerAddress},#{customerStatus},NOW(),NOW(),#{idCreateBy},#{customerRemarks}
-        )
-    </insert>
-
-    <!-- 添加对接联系人信息 -->
-    <insert id="saveDockedContactInfo" parameterType="DockedContactInfo">
-        INSERT INTO
-        tb_rst_docked_contact_info
-        (
-        customer_id, contact_name, contact_phone, contact_type, contact_email,create_date
-        )
-        VALUES
-        (
-        #{customerId},#{contactName},#{contactPhone},#{contactType},#{contactEmail},NOW()
-        )
-    </insert>
-
-    <!-- 添加客户销售渠道备案信息 -->
-    <insert id="saveChannelSaleInfo" parameterType="ChannelSaleInfo">
-        INSERT INTO
-        tb_rst_ channel_sale_info
-        (
-        customer_id, channel_division_id, channel_name, promoting_products, supply_price,account_period,create_date
-        )
-        VALUES
-        (
-        #{customerId},#{channelDivisionId},#{channelName},#{promotingProducts},#{supplyPrice},#{accountPeriod},NOW()
-        )
-    </insert>
-
-    <!-- 添加付款/退款信息 -->
-    <insert id="saveBillingInfo" parameterType="BillingInfo">
-        INSERT INTO
-        tb_rst_billing_info
-        (
-        customer_id, account_opening_branch, account_name, account_num, receivables_name,receivables_phone,create_date
-        )
-        VALUES
-        (
-        #{customerId},#{accountOpeningBranch},#{accountName},#{accountNum},#{receivablesName},#{receivablesPhone},NOW()
-        )
-    </insert>
-
-    <!-- 添加对开票信息 -->
-    <insert id="saveTicketOpeningInfo" parameterType="TicketOpeningInfo">
-        INSERT INTO
-        tb_rst_ticket_opening_info
-        (
-        customer_id, ticket_type, account_opening_branch, ticket_opening_account, enterprise_name,
-        taxpayer_identification_num,ticket_opening_phone, enterprise_address, create_date
-        )
-        VALUES
-        (
-        #{customerId},#{ticketType},#{accountOpeningBranch},#{ticketOpeningAccount},#{enterpriseName},
-        #{taxpayerIdentificationNum},#{ticketOpeningPhone},#{enterpriseAddress},NOW()
-        )
-    </insert>
-    <!--新增部分 end-->
-
-    <!--查询客户信息部分 start-->
-    <!-- 根据客户id查询客户基本信息 -->
-    <select id="queryCustomerBasicInfoByCustomerId" parameterType="Integer" resultMap="customerBasicInfoResult">
-        SELECT * FROM tb_rst_customer_basic_info t WHERE t.customer_id = #{id}
-    </select>
-    <!-- 根据客户id查询对接联系人信息 -->
-    <select id="queryDockedContactInfoListByCustomerId" parameterType="Integer" resultMap="dockedContactInfoResult">
-        SELECT
-          t.docked_contact_id,
-          t.contact_name,
-          t.contact_phone,
-          t.contact_type,
-          t.contact_email,
-          t.create_date
-        FROM
-          tb_rst_docked_contact_info t
-        WHERE
-          t.customer_id = #{id}
-    </select>
-    <!-- 根据客户id查询客户销售渠道备案信息 -->
-    <select id="queryChannelSaleInfoListByCustomerId" parameterType="Integer" resultMap="channelSaleInfoResult">
-        SELECT
-        t.channel_sale_id,
-        t.channel_name,
-        t.promoting_products,
-        t.supply_price,
-        t.account_period,
-        t.create_date
-        FROM
-        tb_rst_channel_sale_info t
-        WHERE
-        t.customer_id = #{id}
-    </select>
-    <!-- 根据客户id查询客户付款/退款信息 -->
-    <select id="queryBillingInfoByCustomerId" parameterType="Integer" resultMap="billingInfoResult">
-        SELECT
-        t.billing_id,
-        t.account_opening_branch,
-        t.account_name,
-        t.account_num,
-        t.receivables_name,
-        t.receivables_phone,
-        t.create_date
-        FROM
-        tb_rst_billing_info t
-        WHERE
-        t.customer_id = #{id}
-    </select>
-    <!-- 根据客户id查询客户开票信息 -->
-    <select id="queryTicketOpeningInfoByCustomerId" parameterType="Integer" resultMap="ticketOpeningInfoResult">
-        SELECT
-        t.ticket_opening_id,
-        t.ticket_type,
-        t.account_opening_branch,
-        t.ticket_opening_account,
-        t.enterprise_name,
-        t.taxpayer_identification_num,
-        t.ticket_opening_phone,
-        t.enterprise_address,
-        t.create_date
-        FROM
-        tb_rst_ticket_opening_info t
-        WHERE
-        t.customer_id = #{id}
-    </select>
-    <!--查询客户信息部分 end-->
-    <!--查询所有省份-->
-    <select id="queryProvinceList" parameterType="java.lang.String" resultMap="queryProvinceResult">
-        SELECT
-            t.province_id,
-            t.province
-        FROM
-            tb_rst_address_province t
-        ORDER BY
-            t.province_id ASC
-    </select>
-    <!--根据省份代号查询所有城市-->
-    <select id="queryCityList" parameterType="java.lang.String" resultMap="queryCityResult">
-        SELECT
-        t.city_id,
-        t.city
-        FROM
-        tb_rst_address_city t
-        WHERE
-        t.province_id = #{id}
-        ORDER BY
-        t.city_id ASC
-    </select>
-    <!--查询所有渠道类别-->
-    <select id="queryChannelCategoryList" parameterType="java.lang.String" resultMap="queryChannelCategoryResult">
-        SELECT
-            DISTINCT (t.channel_category),
-            CASE
-            WHEN t.channel_category = 1 THEN '电商'
-            WHEN t.channel_category = 2 THEN '特殊渠道'
-            WHEN t.channel_category = 3 THEN '线下'
-            ELSE '海外'
-            END AS 'channel_categoryId'
-        FROM
-        tb_rst_channel_division_info t
-        ORDER BY
-        t.channel_division_id ASC
-    </select>
-    <!--根据渠道类别查询渠道类型-->
-    <select id="queryChannelTypeList" parameterType="java.lang.String" resultMap="queryChannelTypeResult">
-        SELECT
-        /*t.channel_division_id,*/
-        DISTINCT (t.channel_type),
-        CASE
-            WHEN t.channel_category = 1 THEN '电商'
-            WHEN t.channel_category = 2 THEN '特殊渠道'
-            WHEN t.channel_category = 3 THEN '线下'
-            ELSE '海外'
-            END AS 'channel_categoryId'
-        FROM
-        tb_rst_channel_division_info t
-        WHERE
-        t.channel_category = #{id}
-        ORDER BY
-        t.channel_division_id ASC
-    </select>
-    <!--查询销售产品-->
-    <select id="queryPromotingProductsList" parameterType="java.lang.String" resultMap="queryPromotingProductsResult">
-        SELECT
-        t.product_id,
-        t.product_name
-        FROM
-        tb_rst_product_info t
-        ORDER BY
-        t.product_id ASC
-    </select>
-    <!--查询销售产品价格-->
-    <select id="querySupplyPriceList" parameterType="java.lang.String" resultMap="querySupplyPriceResult">
-        SELECT
-        t.color_id,
-        t.color_price
-        FROM
-        tb_rst_product_color t
-        WHERE
-        t.color_product_id = #{id}
-        ORDER BY
-        t.color_id ASC
-    </select>
-</mapper>

+ 122 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/mapper/CustomerBasicMapper.java

@@ -1,6 +1,10 @@
 package com.iamberry.rst.service.customer.mapper;
 
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.customer.*;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
 
 import java.util.List;
 
@@ -24,4 +28,122 @@ public interface CustomerBasicMapper {
     List<ChannelSaleInfo> listChannelSaleInfo(ChannelSaleInfo channelSaleInfo);
     /*根据客户id渠道划分信息集合*/
     List<ChannelDivisionInfo> listChannelDivisionInfo(Integer coustomerId);
+    /**
+     * 添加客户基本信息
+     *
+     * @param customerBasicInfo
+     * @return
+     */
+    public CustomerBasicInfo saveCustomerBasicInfo(CustomerBasicInfo customerBasicInfo);
+
+    /**
+     * 添加对接联系人信息
+     *
+     * @param dockedContactInfo
+     * @return
+     */
+    public void saveDockedContactInfo(DockedContactInfo dockedContactInfo);
+
+    /**
+     * 添加客户销售渠道备案信息
+     *
+     * @param channelSaleInfo
+     * @return
+     */
+    public void saveChannelSaleInfo(ChannelSaleInfo channelSaleInfo);
+
+    /**
+     * 添加付款/退款信息
+     *
+     * @param billingInfo
+     * @return
+     */
+    public void saveBillingInfo(BillingInfo billingInfo);
+
+    /**
+     * 添加开票信息
+     *
+     * @param ticketOpeningInfo
+     * @return
+     */
+    public void saveTicketOpeningInfo(TicketOpeningInfo ticketOpeningInfo);
+
+    //查询部分 start
+    /**
+     * 根据客户id查询客户基本信息
+     * @param queryCustomerId
+     * @return
+     */
+    public CustomerBasicInfo queryCustomerBasicInfoByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询对接联系人信息
+     * @param queryCustomerId
+     * @return
+     */
+    public List<DockedContactInfo> queryDockedContactInfoListByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户销售渠道备案信息
+     * @param queryCustomerId
+     * @return
+     */
+    public List<ChannelSaleInfo> queryChannelSaleInfoListByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户付款/退款信息
+     * @param queryCustomerId
+     * @return
+     */
+    public BillingInfo queryBillingInfoByCustomerId(int queryCustomerId);
+
+    /**
+     * 根据客户id查询客户开票信息
+     * @param queryCustomerId
+     * @return
+     */
+    public TicketOpeningInfo queryTicketOpeningInfoByCustomerId(int queryCustomerId);
+    //查询部分 end
+
+    /**
+     * 查询所有省份
+     * @param provinceId
+     * @return
+     */
+    public List<Province> queryProvinceList(String provinceId);
+
+    /**
+     * 根据省份代号查询所有城市
+     * @param provinceId
+     * @return
+     */
+    public List<City> queryCityList(String provinceId);
+
+    /**
+     * 查询所有渠道类别
+     * @param channelCategoryId
+     * @return
+     */
+    public List<ChannelDivisionInfo> queryChannelCategoryList(String channelCategoryId);
+
+    /**
+     * 根据渠道类别查询渠道类型
+     * @param channelCategoryId
+     * @return
+     */
+    public List<ChannelDivisionInfo> queryChannelTypeList(String channelCategoryId);
+
+    /**
+     * 查询销售产品
+     * @param promotingProductsInfo
+     * @return
+     */
+    public List<Product> queryPromotingProductsList(String promotingProductsInfo);
+
+    /**
+     * 查询销售产品价格
+     * @param promotingProductsId
+     * @return
+     */
+    public List<ProductColor> querySupplyPriceList(String promotingProductsId);
 }

+ 309 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/customer/mapper/CustomerBasicMapper.xml

@@ -194,4 +194,313 @@
         WHERE
         customer_id = #{customerId}
     </select>
+
+
+    <!--映射结果集 start-->
+    <!--客户基本信息结果映射-->
+    <resultMap type="com.iamberry.rst.core.customer.CustomerBasicInfo" id="customerBasicInfoResult">
+        <id property="customerId" column="customer_id"/>
+        <result property="customerName" column="customer_name" />
+        <result property="customerIndustry" column="customer_industry" />
+        <result property="customerType" column="customer_type" />
+        <result property="cooperativeState" column="cooperative_state" />
+        <result property="customerProvinceCode" column="customer_province_code" />
+        <result property="customerCityCode" column="customer_city_code" />
+        <result property="customerAddress" column="customer_address" />
+        <result property="customerStatus" column="customer_status" />
+        <result property="createDate" column="create_date" />
+        <result property="updateDate" column="update_date" />
+        <result property="idCreateBy" column="id_create_by" />
+        <result property="customerRemarks" column="customer_remarks" />
+    </resultMap>
+    <!--对接联系人信息结果映射-->
+    <resultMap type="com.iamberry.rst.core.customer.DockedContactInfo" id="dockedContactInfoResult">
+        <id property="dockedContactId" column="docked_contact_id"/>
+        <result property="contactName" column="contact_name" />
+        <result property="contactPhone" column="contact_phone" />
+        <result property="contactType" column="contact_type" />
+        <result property="contactEmail" column="contact_email" />
+        <result property="createDate" column="create_date" />
+    </resultMap>
+    <!--客户渠道销售信息结果映射-->
+    <resultMap type="com.iamberry.rst.core.customer.ChannelSaleInfo" id="channelSaleInfoResult">
+        <id property="channelSaleId" column="channel_sale_id"/>
+        <result property="channelName" column="channel_name" />
+        <result property="promotingProducts" column="promoting_products" />
+        <result property="supplyPrice" column="supply_price" />
+        <result property="accountPeriod" column="account_period" />
+        <result property="createDate" column="create_date" />
+    </resultMap>
+    <!--付款/退款信息结果映射-->
+    <resultMap type="com.iamberry.rst.core.customer.BillingInfo" id="billingInfoResult">
+        <id property="billingId" column="billing_id"/>
+        <result property="accountOpeningBranch" column="account_opening_branch" />
+        <result property="accountName" column="account_name" />
+        <result property="accountNum" column="account_num" />
+        <result property="receivablesName" column="receivables_name" />
+        <result property="receivablesPhone" column="receivables_phone" />
+        <result property="createDate" column="create_date" />
+    </resultMap>
+    <!--开票信息结果映射-->
+    <resultMap type="com.iamberry.rst.core.customer.TicketOpeningInfo" id="ticketOpeningInfoResult">
+        <id property="ticketOpeningId" column="ticket_opening_id"/>
+        <result property="ticketType" column="ticket_type" />
+        <result property="accountOpeningBranch" column="account_opening_branch" />
+        <result property="ticketOpeningAccount" column="ticket_opening_account" />
+        <result property="enterpriseName" column="enterprise_name" />
+        <result property="taxpayerIdentificationNum" column="taxpayer_identification_num" />
+        <result property="ticketOpeningPhone" column="ticket_opening_phone" />
+        <result property="enterpriseAddress" column="enterprise_address" />
+        <result property="createDate" column="create_date" />
+    </resultMap>
+    <!--查询所有省份映射-->
+    <resultMap type="com.iamberry.rst.core.address.Province" id="queryProvinceResult">
+        <id property="provinceId" column="province_id"/>
+        <!--<result property="provinceNum" column="divisionCode" />-->
+        <result property="province" column="province" />
+    </resultMap>
+    <!--根据省份代号查询所有城市映射-->
+    <resultMap type="com.iamberry.rst.core.address.City" id="queryCityResult">
+        <id property="cityId" column="city_id"/>
+        <!--<result property="cityNum" column="city_number" />-->
+        <result property="city" column="city" />
+        <!--<result property="provinceNum" column="provinceid" />-->
+    </resultMap>
+    <!--查询所有渠道类别-->
+    <resultMap type="com.iamberry.rst.core.customer.ChannelDivisionInfo" id="queryChannelCategoryResult">
+        <result property="channelCategory" column="channel_category" />
+        <result property="channelName" column="channel_categoryId" />
+    </resultMap>
+    <!--根据渠道类别查询渠道类型-->
+    <resultMap type="com.iamberry.rst.core.customer.ChannelDivisionInfo" id="queryChannelTypeResult">
+        <!--<id property="channelDivisionId" column="channel_division_id"/>-->
+        <result property="channelType" column="channel_type" />
+        <result property="channelName" column="channel_categoryId" />
+    </resultMap>
+    <!--查询销售产品-->
+    <resultMap type="com.iamberry.rst.core.order.Product" id="queryPromotingProductsResult">
+        <id property="productId" column="product_id"/>
+        <result property="productName" column="product_name" />
+    </resultMap>
+    <!--查询销售产品价格-->
+    <resultMap type="com.iamberry.rst.core.order.ProductColor" id="querySupplyPriceResult">
+        <result property="colorId" column="color_id" />
+        <result property="colorPrice" column="color_price" />
+    </resultMap>
+    <!--映射结果集 end-->
+
+    <!--新增部分 start-->
+    <!-- 添加客户基本信息 -->
+    <insert id="saveCustomerBasicInfo" parameterType="CustomerBasicInfo" useGeneratedKeys="true"  keyProperty="customer_id">
+        INSERT INTO
+        tb_rst_customer_basic_info
+        (
+        customer_name, customer_industry, customer_type, cooperative_state, customer_province_code,customer_city_code,
+        customer_address, customer_status, create_date, update_date,id_create_by,customer_remarks
+        )
+        VALUES
+        (
+        #{customerName},#{customerIndustry},#{customerType},#{cooperativeState},#{customerProvinceCode},#{customerCityCode},
+        #{customerAddress},#{customerStatus},NOW(),NOW(),#{idCreateBy},#{customerRemarks}
+        )
+    </insert>
+
+    <!-- 添加对接联系人信息 -->
+    <insert id="saveDockedContactInfo" parameterType="DockedContactInfo">
+        INSERT INTO
+        tb_rst_docked_contact_info
+        (
+        customer_id, contact_name, contact_phone, contact_type, contact_email,create_date
+        )
+        VALUES
+        (
+        #{customerId},#{contactName},#{contactPhone},#{contactType},#{contactEmail},NOW()
+        )
+    </insert>
+
+    <!-- 添加客户销售渠道备案信息 -->
+    <insert id="saveChannelSaleInfo" parameterType="ChannelSaleInfo">
+        INSERT INTO
+        tb_rst_ channel_sale_info
+        (
+        customer_id, channel_division_id, channel_name, promoting_products, supply_price,account_period,create_date
+        )
+        VALUES
+        (
+        #{customerId},#{channelDivisionId},#{channelName},#{promotingProducts},#{supplyPrice},#{accountPeriod},NOW()
+        )
+    </insert>
+
+    <!-- 添加付款/退款信息 -->
+    <insert id="saveBillingInfo" parameterType="BillingInfo">
+        INSERT INTO
+        tb_rst_billing_info
+        (
+        customer_id, account_opening_branch, account_name, account_num, receivables_name,receivables_phone,create_date
+        )
+        VALUES
+        (
+        #{customerId},#{accountOpeningBranch},#{accountName},#{accountNum},#{receivablesName},#{receivablesPhone},NOW()
+        )
+    </insert>
+
+    <!-- 添加对开票信息 -->
+    <insert id="saveTicketOpeningInfo" parameterType="TicketOpeningInfo">
+        INSERT INTO
+        tb_rst_ticket_opening_info
+        (
+        customer_id, ticket_type, account_opening_branch, ticket_opening_account, enterprise_name,
+        taxpayer_identification_num,ticket_opening_phone, enterprise_address, create_date
+        )
+        VALUES
+        (
+        #{customerId},#{ticketType},#{accountOpeningBranch},#{ticketOpeningAccount},#{enterpriseName},
+        #{taxpayerIdentificationNum},#{ticketOpeningPhone},#{enterpriseAddress},NOW()
+        )
+    </insert>
+    <!--新增部分 end-->
+
+    <!--查询客户信息部分 start-->
+    <!-- 根据客户id查询客户基本信息 -->
+    <select id="queryCustomerBasicInfoByCustomerId" parameterType="Integer" resultMap="customerBasicInfoResult">
+        SELECT * FROM tb_rst_customer_basic_info t WHERE t.customer_id = #{id}
+    </select>
+    <!-- 根据客户id查询对接联系人信息 -->
+    <select id="queryDockedContactInfoListByCustomerId" parameterType="Integer" resultMap="dockedContactInfoResult">
+        SELECT
+        t.docked_contact_id,
+        t.contact_name,
+        t.contact_phone,
+        t.contact_type,
+        t.contact_email,
+        t.create_date
+        FROM
+        tb_rst_docked_contact_info t
+        WHERE
+        t.customer_id = #{id}
+    </select>
+    <!-- 根据客户id查询客户销售渠道备案信息 -->
+    <select id="queryChannelSaleInfoListByCustomerId" parameterType="Integer" resultMap="channelSaleInfoResult">
+        SELECT
+        t.channel_sale_id,
+        t.channel_name,
+        t.promoting_products,
+        t.supply_price,
+        t.account_period,
+        t.create_date
+        FROM
+        tb_rst_channel_sale_info t
+        WHERE
+        t.customer_id = #{id}
+    </select>
+    <!-- 根据客户id查询客户付款/退款信息 -->
+    <select id="queryBillingInfoByCustomerId" parameterType="Integer" resultMap="billingInfoResult">
+        SELECT
+        t.billing_id,
+        t.account_opening_branch,
+        t.account_name,
+        t.account_num,
+        t.receivables_name,
+        t.receivables_phone,
+        t.create_date
+        FROM
+        tb_rst_billing_info t
+        WHERE
+        t.customer_id = #{id}
+    </select>
+    <!-- 根据客户id查询客户开票信息 -->
+    <select id="queryTicketOpeningInfoByCustomerId" parameterType="Integer" resultMap="ticketOpeningInfoResult">
+        SELECT
+        t.ticket_opening_id,
+        t.ticket_type,
+        t.account_opening_branch,
+        t.ticket_opening_account,
+        t.enterprise_name,
+        t.taxpayer_identification_num,
+        t.ticket_opening_phone,
+        t.enterprise_address,
+        t.create_date
+        FROM
+        tb_rst_ticket_opening_info t
+        WHERE
+        t.customer_id = #{id}
+    </select>
+    <!--查询客户信息部分 end-->
+    <!--查询所有省份-->
+    <select id="queryProvinceList" parameterType="java.lang.String" resultMap="queryProvinceResult">
+        SELECT
+        t.province_id,
+        t.province
+        FROM
+        tb_rst_address_province t
+        ORDER BY
+        t.province_id ASC
+    </select>
+    <!--根据省份代号查询所有城市-->
+    <select id="queryCityList" parameterType="java.lang.String" resultMap="queryCityResult">
+        SELECT
+        t.city_id,
+        t.city
+        FROM
+        tb_rst_address_city t
+        WHERE
+        t.province_id = #{id}
+        ORDER BY
+        t.city_id ASC
+    </select>
+    <!--查询所有渠道类别-->
+    <select id="queryChannelCategoryList" parameterType="java.lang.String" resultMap="queryChannelCategoryResult">
+        SELECT
+        DISTINCT (t.channel_category),
+        CASE
+        WHEN t.channel_category = 1 THEN '电商'
+        WHEN t.channel_category = 2 THEN '特殊渠道'
+        WHEN t.channel_category = 3 THEN '线下'
+        ELSE '海外'
+        END AS 'channel_categoryId'
+        FROM
+        tb_rst_channel_division_info t
+        ORDER BY
+        t.channel_division_id ASC
+    </select>
+    <!--根据渠道类别查询渠道类型-->
+    <select id="queryChannelTypeList" parameterType="java.lang.String" resultMap="queryChannelTypeResult">
+        SELECT
+        /*t.channel_division_id,*/
+        DISTINCT (t.channel_type),
+        CASE
+        WHEN t.channel_category = 1 THEN '电商'
+        WHEN t.channel_category = 2 THEN '特殊渠道'
+        WHEN t.channel_category = 3 THEN '线下'
+        ELSE '海外'
+        END AS 'channel_categoryId'
+        FROM
+        tb_rst_channel_division_info t
+        WHERE
+        t.channel_category = #{id}
+        ORDER BY
+        t.channel_division_id ASC
+    </select>
+    <!--查询销售产品-->
+    <select id="queryPromotingProductsList" parameterType="java.lang.String" resultMap="queryPromotingProductsResult">
+        SELECT
+        t.product_id,
+        t.product_name
+        FROM
+        tb_rst_product_info t
+        ORDER BY
+        t.product_id ASC
+    </select>
+    <!--查询销售产品价格-->
+    <select id="querySupplyPriceList" parameterType="java.lang.String" resultMap="querySupplyPriceResult">
+        SELECT
+        t.color_id,
+        t.color_price
+        FROM
+        tb_rst_product_color t
+        WHERE
+        t.color_product_id = #{id}
+        ORDER BY
+        t.color_id ASC
+    </select>
 </mapper>

+ 328 - 3
watero-rst-web/src/main/java/com/iamberry/rst/controllers/customer/CustomerBasicController.java

@@ -1,8 +1,10 @@
 package com.iamberry.rst.controllers.customer;
 
-import com.iamberry.rst.controllers.cm.AdminCustomerController;
-import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.address.City;
+import com.iamberry.rst.core.address.Province;
 import com.iamberry.rst.core.customer.*;
+import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.page.PageRequest;
 import com.iamberry.rst.core.page.PagedResult;
 import com.iamberry.rst.core.sys.Admin;
@@ -11,6 +13,8 @@ import com.iamberry.rst.faces.sys.SysService;
 import com.iamberry.rst.utils.AdminUtils;
 import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.wechat.tools.ResponseJson;
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
 import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.slf4j.Logger;
@@ -34,7 +38,7 @@ import java.util.List;
 @RequestMapping("/admin/customerBasic")
 public class CustomerBasicController {
 
-
+    private Logger logger = LoggerFactory.getLogger(CustomerBasicController.class);
     @Autowired
     private CustomerBasicService customerBasicService;
     @Autowired
@@ -189,4 +193,325 @@ public class CustomerBasicController {
         mv.addObject("listChannelDivisionInfo",listChannelDivisionInfo);
         return mv;
     }
+
+
+    /**
+     * 进入修改客户信息页面
+     * @param request
+     * @return
+     */
+    @ResponseBody
+    @RequiresPermissions("customerBasic:select:customerBasic")
+    @RequestMapping("/customer_Basic_Detail")
+    public ModelAndView to_update_customerBasic(HttpServletRequest request){
+        ModelAndView mv = new ModelAndView("customer/update_customer_info");
+        String customerId = request.getParameter("customerId");
+        if (!StringUtils.isNotEmpty(customerId)) {
+            return mv;
+        }
+        /*查询基本信息*/
+        CustomerBasicInfo customerBasicInfo = new CustomerBasicInfo();
+        customerBasicInfo.setCustomerId(Integer.valueOf(customerId));
+        customerBasicInfo = customerBasicService.getCustomerBasic(customerBasicInfo);
+        /*对接联系人信息*/
+        DockedContactInfo dockedContactInfo = new DockedContactInfo();
+        dockedContactInfo.setCustomerId(Integer.valueOf(customerId));
+        List<DockedContactInfo> listDockedContactInfo = customerBasicService.listDockedContactInfo(dockedContactInfo);
+        /*付款/退款信息*/
+        BillingInfo billingInfo = new BillingInfo();
+        billingInfo.setCustomerId(Integer.valueOf(customerId));
+        billingInfo = customerBasicService.getBillingInfo(billingInfo);
+        /*开票信息*/
+        TicketOpeningInfo ticketOpeningInfo = new TicketOpeningInfo();
+        ticketOpeningInfo.setCustomerId(Integer.valueOf(customerId));
+        ticketOpeningInfo = customerBasicService.getOpeningInfo(ticketOpeningInfo);
+        /*渠道销售信息*/
+        /*ChannelSaleInfo channelSaleInfo = new ChannelSaleInfo();
+        channelSaleInfo.setCustomerId(Integer.valueOf(customerId));*/
+        List<ChannelDivisionInfo> listChannelDivisionInfo = customerBasicService.listChannelDivisionInfo(Integer.valueOf(customerId));
+        //渠道销售信息封装
+       /* List<ChannelDivisionInfo> listChannelDivisionInfo = new ArrayList<ChannelDivisionInfo>();
+        for (int i=0;i<listChannelSaleInfo.size();i++){
+            boolean isContinue = true;
+            if(listChannelDivisionInfo.size() > 0){
+                for(ChannelDivisionInfo channelDivisionInfo : listChannelDivisionInfo){
+                    List<ChannelSaleInfo> listChannel = channelDivisionInfo.getListChannelSaleInfo();
+                    for (ChannelSaleInfo Info : listChannel){
+                        if(Info.getChannelDivisionId().intValue() == listChannelSaleInfo.get(i).getChannelDivisionId().intValue()
+                                && Info.getChannelName().equals(listChannelSaleInfo.get(i).getChannelName())){
+                            isContinue = false;
+                        }
+                    }
+
+                }
+            }
+            if(!isContinue){
+                continue;//数据已保存不需要再循环
+            }
+            ChannelDivisionInfo channelDivisionInfo = new ChannelDivisionInfo();
+            channelDivisionInfo.setChannelCategory(listChannelSaleInfo.get(i).getChannelCategory());
+            channelDivisionInfo.setChannelType(listChannelSaleInfo.get(i).getChannelType());
+            channelDivisionInfo.setChannelName(listChannelSaleInfo.get(i).getChannelName());
+                List<ChannelSaleInfo> listChannelSale = new ArrayList<ChannelSaleInfo>();
+            for (int j=0;j<listChannelSaleInfo.size();j++){
+                if(listChannelSaleInfo.get(i).getChannelDivisionId().intValue() == listChannelSaleInfo.get(j).getChannelDivisionId().intValue()
+                  && listChannelSaleInfo.get(i).getChannelName().equals(listChannelSaleInfo.get(j).getChannelName())){
+                    listChannelSale.add(listChannelSaleInfo.get(j));
+                }
+                if(j == listChannelSaleInfo.size()-1){
+                    channelDivisionInfo.setListChannelSaleInfo(listChannelSale);
+                }
+
+            }
+            listChannelDivisionInfo.add(channelDivisionInfo);
+        }*/
+        mv.addObject("customerBasicInfo",customerBasicInfo);
+        mv.addObject("listDockedContactInfo",listDockedContactInfo);
+        mv.addObject("billingInfo",billingInfo);
+        mv.addObject("ticketOpeningInfo",ticketOpeningInfo);
+        mv.addObject("listChannelDivisionInfo",listChannelDivisionInfo);
+        return mv;
+    }
+
+    /**
+     * 跳转到添加客户信息页面
+     *
+     * @return
+     */
+    @RequiresPermissions("customerBasic:save:customerInfo")
+    @RequestMapping("/saveCustomerInfo")
+    public ModelAndView toAddCustomer(HttpServletRequest request) {
+        ModelAndView mv = new ModelAndView("customer/save_customer_info");
+        return mv;
+    }
+
+    /**
+     * 添加客户信息
+     * @param request
+     * @return
+     * @throws Exception
+     */
+    @ResponseBody
+    @RequiresPermissions("customerBasic:save:customerInfo")
+    @RequestMapping("/save_customer_info")
+    public ResponseJson saveCustomerBasicInfo(HttpServletRequest request,String customerInfoJson,String dockedContactInfoListJson,
+                                              String channelSaleInfoListJson,String billingInfoJson,String ticketOpeningInfoJson) throws Exception {
+        JSONArray jsonArray;
+        List<DockedContactInfo> dockedContactInfoList;
+        List<ChannelSaleInfo> channelSaleInfoList;
+        jsonArray = JSONArray.fromObject(dockedContactInfoListJson);
+        dockedContactInfoList = (List) JSONArray.toCollection(jsonArray, DockedContactInfo.class);
+
+        jsonArray = JSONArray.fromObject(channelSaleInfoListJson);
+        channelSaleInfoList = (List) JSONArray.toCollection(jsonArray, ChannelSaleInfo.class);
+        JSONObject customerJsonObject =  JSONObject.fromObject(customerInfoJson);
+        CustomerBasicInfo customerBasicInfo = (CustomerBasicInfo) customerJsonObject.toBean(customerJsonObject,CustomerBasicInfo.class);
+
+        JSONObject billingInfoJsonObject =  JSONObject.fromObject(billingInfoJson);
+        BillingInfo billingInfo = (BillingInfo) billingInfoJsonObject.toBean(billingInfoJsonObject,BillingInfo.class);
+
+        JSONObject ticketOpeningInfoJsonObject =  JSONObject.fromObject(ticketOpeningInfoJson);
+        TicketOpeningInfo ticketOpeningInfo = (TicketOpeningInfo) customerJsonObject.toBean(customerJsonObject,TicketOpeningInfo.class);
+        logger.info("-----------------saveCustomerBasicInfo...Start----------------------");
+        ResponseJson rjx = this.isValiData(customerBasicInfo);
+        Boolean isSaveSuccess = false;//是否保存成功标识
+        if(rjx.getResultCode() == 500){
+            return rjx;
+        }
+        logger.info("-----------------添加客户信息开始----------------------");
+        try {
+//            customerBasicInfoSaveService.saveCustomerBasicInfo(customerBasicInfo,dockedContactInfoList,channelSaleInfoList,billingInfo,ticketOpeningInfo);
+            isSaveSuccess = true;
+        } catch (RuntimeException e) {
+            isSaveSuccess = false;
+            return new ResponseJson(500, e.getMessage(), 500);
+        }
+        logger.info("-----------------添加客户信息结束----------------------");
+        if (!isSaveSuccess) {
+            return new ResponseJson(500, "添加客户信息失败!", 500);
+        }else{
+            return new ResponseJson(200, "添加客户信息成功!", 200);
+        }
+    }
+
+    /**
+     * 跳转到修改客户信息页面
+     *
+     * @return
+     */
+    @RequiresPermissions("customerBasic:save:customerInfo")
+    @RequestMapping(value = "/update_customer_info")
+    public ModelAndView updateCustomerInfo(HttpServletRequest request) throws Exception{
+        ModelAndView mv = new ModelAndView("customerInfoAdmin/update_customer_info");
+        String customerId = request.getParameter("customerId");
+        boolean isSuccess = false;
+        if (!StringUtils.isNotEmpty(customerId)) {
+            return mv;
+        }
+        int queryCustomerId = Integer.valueOf(customerId);
+        CustomerBasicInfo customerBasicInfo = new CustomerBasicInfo();
+        List<DockedContactInfo> dockedContactInfoList = new ArrayList<DockedContactInfo>();
+        List<ChannelSaleInfo> channelSaleInfoList = new ArrayList<ChannelSaleInfo>();
+        BillingInfo billingInfo = new BillingInfo();
+        TicketOpeningInfo ticketOpeningInfo = new TicketOpeningInfo();
+        logger.info("-----------------修改客户信息开始----------------------");
+        try {
+            customerBasicInfo = customerBasicService.queryCustomerBasicInfoByCustomerId(queryCustomerId);
+            dockedContactInfoList = customerBasicService.queryDockedContactInfoListByCustomerId(queryCustomerId);
+            channelSaleInfoList = customerBasicService.queryChannelSaleInfoListByCustomerId(queryCustomerId);
+            billingInfo = customerBasicService.queryBillingInfoByCustomerId(queryCustomerId);
+            ticketOpeningInfo = customerBasicService.queryTicketOpeningInfoByCustomerId(queryCustomerId);
+            isSuccess = true;
+        }catch (Exception e){
+            isSuccess = false;
+            logger.error("跳转修改页面失败:"+e.getMessage());
+        }
+        logger.info("----------------修改客户信息结束----------------------");
+        if(!isSuccess){
+            return mv;
+        }else{
+            mv.addObject("customerBasicInfo", customerBasicInfo);
+            mv.addObject("dockedContactInfoList", dockedContactInfoList);
+            mv.addObject("channelSaleInfoList", channelSaleInfoList);
+            mv.addObject("billingInfo", billingInfo);
+            mv.addObject("ticketOpeningInfo", ticketOpeningInfo);
+        }
+        return mv;
+    }
+
+    /**
+     * 查询所有省份
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_provinceList")
+    public ResponseJson queryProvinceList(HttpServletRequest request) {
+        //Province province = new Province();
+        String provinceId =  request.getParameter("provinceListInfo");
+        List<Province> provinceList = null;
+        provinceList = customerBasicService.queryProvinceList(provinceId);
+        if (provinceList != null || provinceList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("provinceList", provinceList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 根据省份代号查询所有城市
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_cityList")
+    public ResponseJson queryCityList(HttpServletRequest request) {
+        //Province province = new Province();
+        String provinceId =  request.getParameter("provinceId");
+        List<City> cityList = null;
+        cityList = customerBasicService.queryCityList(provinceId);
+        if (cityList != null || cityList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("cityList", cityList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 查询所有渠道类别
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_channelCategoryList")
+    public ResponseJson queryChannelCategoryList(HttpServletRequest request) {
+        String channelCategoryId =  request.getParameter("channelCategoryId");
+        List<ChannelDivisionInfo> channelCategoryList = null;
+        channelCategoryList = customerBasicService.queryChannelCategoryList(channelCategoryId);
+        if (channelCategoryList != null || channelCategoryList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("channelCategoryList", channelCategoryList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 根据渠道类别查询渠道类型
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_channelTypeList")
+    public ResponseJson queryChannelTypeList(HttpServletRequest request) {
+        String channelCategoryId =  request.getParameter("channelCategoryId");
+        List<ChannelDivisionInfo> channelTypeList = null;
+        channelTypeList = customerBasicService.queryChannelTypeList(channelCategoryId);
+        if (channelTypeList != null || channelTypeList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("channelTypeList", channelTypeList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 初始化销售产品
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_promotingProductsList")
+    public ResponseJson queryPromotingProductsList(HttpServletRequest request) {
+        String promotingProductsInfo =  request.getParameter("promotingProductsInfo");
+        List<Product> promotingProductsList = null;
+        promotingProductsList = customerBasicService.queryPromotingProductsList(promotingProductsInfo);
+        if (promotingProductsList != null || promotingProductsList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("promotingProductsList", promotingProductsList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 根据销售产品初始化价格
+     *
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "/query_supplyPriceList")
+    public ResponseJson querySupplyPriceList(HttpServletRequest request) {
+        String promotingProductsId =  request.getParameter("promotingProductsId");
+        List<ProductColor> supplyPriceList = null;
+        supplyPriceList = customerBasicService.querySupplyPriceList(promotingProductsId);
+        if (supplyPriceList != null || supplyPriceList.size() > 0) {
+            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
+            rj.addResponseKeyValue("supplyPriceList", supplyPriceList);
+            return rj;
+        } else {
+            return new ResponseJson(500, "查询失败", 500);
+        }
+    }
+
+    /**
+     * 验证方法
+     *
+     * @param customerBasicInfo
+     * @return
+     */
+    public ResponseJson isValiData(CustomerBasicInfo customerBasicInfo) {
+        ResponseJson rj = new ResponseJson();
+        if(customerBasicInfo == null){
+            return new ResponseJson(500, "未填写客户基本信息", 500);
+        }
+        return rj;
+    }
 }

+ 0 - 276
watero-rst-web/src/main/java/com/iamberry/rst/controllers/customer/CustomerBasicInfoSaveController.java

@@ -1,276 +0,0 @@
-package com.iamberry.rst.controllers.customer;
-
-import net.sf.json.JSONArray;
-import com.iamberry.rst.core.address.City;
-import com.iamberry.rst.core.address.Province;
-import com.iamberry.rst.core.customer.*;
-import com.iamberry.rst.core.order.Product;
-import com.iamberry.rst.core.order.ProductColor;
-import com.iamberry.rst.core.order.ProductType;
-import com.iamberry.rst.faces.customer.CustomerBasicInfoSaveService;
-import com.iamberry.wechat.tools.ResponseJson;
-import net.sf.json.JSONObject;
-import org.apache.commons.lang.StringUtils;
-import org.apache.shiro.authz.annotation.RequiresPermissions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
-import javax.servlet.http.HttpServletRequest;
-import java.util.ArrayList;
-import java.util.List;
-
-
-@Controller
-@RequestMapping("/admin/customerBasic")
-public class CustomerBasicInfoSaveController {
-
-    private Logger logger = LoggerFactory.getLogger(CustomerBasicInfoSaveController.class);
-
-    @Autowired
-    private CustomerBasicInfoSaveService customerBasicInfoSaveService;
-
-    /**
-     * 跳转到添加客户信息页面
-     *
-     * @return
-     */
-    @RequiresPermissions("customerBasic:save:customerInfo")
-    @RequestMapping("/saveCustomerInfo")
-    public ModelAndView toAddCustomer(HttpServletRequest request) {
-        ModelAndView mv = new ModelAndView("customer/save_customer_info");
-        return mv;
-    }
-
-    /**
-     * 添加客户信息
-     * @param request
-     * @return
-     * @throws Exception
-     */
-    @ResponseBody
-    @RequiresPermissions("customerBasic:save:customerInfo")
-    @RequestMapping("/save_customer_info")
-    public ResponseJson saveCustomerBasicInfo(HttpServletRequest request,String customerInfoJson,String dockedContactInfoListJson,
-                                                String channelSaleInfoListJson,String billingInfoJson,String ticketOpeningInfoJson) throws Exception {
-        JSONArray jsonArray;
-        List<DockedContactInfo> dockedContactInfoList;
-        List<ChannelSaleInfo> channelSaleInfoList;
-        jsonArray = JSONArray.fromObject(dockedContactInfoListJson);
-        dockedContactInfoList = (List) JSONArray.toCollection(jsonArray, DockedContactInfo.class);
-
-        jsonArray = JSONArray.fromObject(channelSaleInfoListJson);
-        channelSaleInfoList = (List) JSONArray.toCollection(jsonArray, ChannelSaleInfo.class);
-        JSONObject customerJsonObject =  JSONObject.fromObject(customerInfoJson);
-        CustomerBasicInfo customerBasicInfo = (CustomerBasicInfo) customerJsonObject.toBean(customerJsonObject,CustomerBasicInfo.class);
-
-        JSONObject billingInfoJsonObject =  JSONObject.fromObject(billingInfoJson);
-        BillingInfo billingInfo = (BillingInfo) billingInfoJsonObject.toBean(billingInfoJsonObject,BillingInfo.class);
-
-        JSONObject ticketOpeningInfoJsonObject =  JSONObject.fromObject(ticketOpeningInfoJson);
-        TicketOpeningInfo ticketOpeningInfo = (TicketOpeningInfo) customerJsonObject.toBean(customerJsonObject,TicketOpeningInfo.class);
-        logger.info("-----------------saveCustomerBasicInfo...Start----------------------");
-        ResponseJson rjx = this.isValiData(customerBasicInfo);
-        Boolean isSaveSuccess = false;//是否保存成功标识
-        if(rjx.getResultCode() == 500){
-            return rjx;
-        }
-        logger.info("-----------------添加客户信息开始----------------------");
-        try {
-//            customerBasicInfoSaveService.saveCustomerBasicInfo(customerBasicInfo,dockedContactInfoList,channelSaleInfoList,billingInfo,ticketOpeningInfo);
-            isSaveSuccess = true;
-        } catch (RuntimeException e) {
-            isSaveSuccess = false;
-            return new ResponseJson(500, e.getMessage(), 500);
-        }
-        logger.info("-----------------添加客户信息结束----------------------");
-        if (!isSaveSuccess) {
-            return new ResponseJson(500, "添加客户信息失败!", 500);
-        }else{
-            return new ResponseJson(200, "添加客户信息成功!", 200);
-        }
-    }
-
-    /**
-     * 跳转到修改客户信息页面
-     *
-     * @return
-     */
-    @RequiresPermissions("customerBasic:save:customerInfo")
-    @RequestMapping(value = "/update_customer_info")
-    public ModelAndView updateCustomerInfo(HttpServletRequest request) throws Exception{
-        ModelAndView mv = new ModelAndView("customerInfoAdmin/update_customer_info");
-        String customerId = request.getParameter("customerId");
-        boolean isSuccess = false;
-        if (!StringUtils.isNotEmpty(customerId)) {
-            return mv;
-        }
-        int queryCustomerId = Integer.valueOf(customerId);
-        CustomerBasicInfo customerBasicInfo = new CustomerBasicInfo();
-        List<DockedContactInfo> dockedContactInfoList = new ArrayList<DockedContactInfo>();
-        List<ChannelSaleInfo> channelSaleInfoList = new ArrayList<ChannelSaleInfo>();
-        BillingInfo billingInfo = new BillingInfo();
-        TicketOpeningInfo ticketOpeningInfo = new TicketOpeningInfo();
-        logger.info("-----------------修改客户信息开始----------------------");
-        try {
-            customerBasicInfo = customerBasicInfoSaveService.queryCustomerBasicInfoByCustomerId(queryCustomerId);
-            dockedContactInfoList = customerBasicInfoSaveService.queryDockedContactInfoListByCustomerId(queryCustomerId);
-            channelSaleInfoList = customerBasicInfoSaveService.queryChannelSaleInfoListByCustomerId(queryCustomerId);
-            billingInfo = customerBasicInfoSaveService.queryBillingInfoByCustomerId(queryCustomerId);
-            ticketOpeningInfo = customerBasicInfoSaveService.queryTicketOpeningInfoByCustomerId(queryCustomerId);
-            isSuccess = true;
-        }catch (Exception e){
-            isSuccess = false;
-            logger.error("跳转修改页面失败:"+e.getMessage());
-        }
-        logger.info("----------------修改客户信息结束----------------------");
-        if(!isSuccess){
-            return mv;
-        }else{
-            mv.addObject("customerBasicInfo", customerBasicInfo);
-            mv.addObject("dockedContactInfoList", dockedContactInfoList);
-            mv.addObject("channelSaleInfoList", channelSaleInfoList);
-            mv.addObject("billingInfo", billingInfo);
-            mv.addObject("ticketOpeningInfo", ticketOpeningInfo);
-        }
-        return mv;
-    }
-
-    /**
-     * 查询所有省份
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_provinceList")
-    public ResponseJson queryProvinceList(HttpServletRequest request) {
-        //Province province = new Province();
-        String provinceId =  request.getParameter("provinceListInfo");
-        List<Province> provinceList = null;
-        provinceList = customerBasicInfoSaveService.queryProvinceList(provinceId);
-        if (provinceList != null || provinceList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("provinceList", provinceList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 根据省份代号查询所有城市
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_cityList")
-    public ResponseJson queryCityList(HttpServletRequest request) {
-        //Province province = new Province();
-        String provinceId =  request.getParameter("provinceId");
-        List<City> cityList = null;
-        cityList = customerBasicInfoSaveService.queryCityList(provinceId);
-        if (cityList != null || cityList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("cityList", cityList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 查询所有渠道类别
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_channelCategoryList")
-    public ResponseJson queryChannelCategoryList(HttpServletRequest request) {
-        String channelCategoryId =  request.getParameter("channelCategoryId");
-        List<ChannelDivisionInfo> channelCategoryList = null;
-        channelCategoryList = customerBasicInfoSaveService.queryChannelCategoryList(channelCategoryId);
-        if (channelCategoryList != null || channelCategoryList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("channelCategoryList", channelCategoryList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 根据渠道类别查询渠道类型
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_channelTypeList")
-    public ResponseJson queryChannelTypeList(HttpServletRequest request) {
-        String channelCategoryId =  request.getParameter("channelCategoryId");
-        List<ChannelDivisionInfo> channelTypeList = null;
-        channelTypeList = customerBasicInfoSaveService.queryChannelTypeList(channelCategoryId);
-        if (channelTypeList != null || channelTypeList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("channelTypeList", channelTypeList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 初始化销售产品
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_promotingProductsList")
-    public ResponseJson queryPromotingProductsList(HttpServletRequest request) {
-        String promotingProductsInfo =  request.getParameter("promotingProductsInfo");
-        List<Product> promotingProductsList = null;
-        promotingProductsList = customerBasicInfoSaveService.queryPromotingProductsList(promotingProductsInfo);
-        if (promotingProductsList != null || promotingProductsList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("promotingProductsList", promotingProductsList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 根据销售产品初始化价格
-     *
-     * @return
-     */
-    @ResponseBody
-    @RequestMapping(value = "/query_supplyPriceList")
-    public ResponseJson querySupplyPriceList(HttpServletRequest request) {
-        String promotingProductsId =  request.getParameter("promotingProductsId");
-        List<ProductColor> supplyPriceList = null;
-        supplyPriceList = customerBasicInfoSaveService.querySupplyPriceList(promotingProductsId);
-        if (supplyPriceList != null || supplyPriceList.size() > 0) {
-            ResponseJson rj =new ResponseJson(200, "查询成功", 200);
-            rj.addResponseKeyValue("supplyPriceList", supplyPriceList);
-            return rj;
-        } else {
-            return new ResponseJson(500, "查询失败", 500);
-        }
-    }
-
-    /**
-     * 验证方法
-     *
-     * @param customerBasicInfo
-     * @return
-     */
-    public ResponseJson isValiData(CustomerBasicInfo customerBasicInfo) {
-        ResponseJson rj = new ResponseJson();
-        if(customerBasicInfo == null){
-            return new ResponseJson(500, "未填写客户基本信息", 500);
-        }
-        return rj;
-    }
-}

+ 766 - 0
watero-rst-web/src/main/webapp/WEB-INF/views/customer/update_customer_info.ftl

@@ -0,0 +1,766 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+    <#--new style begin-->
+    <meta charset="utf-8">
+    <meta name="renderer" content="webkit|ie-comp|ie-stand">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
+    <meta http-equiv="Cache-Control" content="no-siteapp" />
+    <#include "/base/add_base.ftl">
+    <link href="${path}/common/lib/jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/webuploader/0.1.5/webuploader.css" rel="stylesheet" type="text/css"/>
+    <link href="${path}/common/lib/icheck/icheck.css" rel="stylesheet" type="text/css"/>
+    <style>
+        .tit{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        .tit-2{position: relative;text-align: left;font-size: 16px;padding-left: 10px;}
+        .tit-2:after{content: '';position: absolute;left: 0;top: 20%;height: 60%;width: 3px;background-color: #32a3d8;}
+        #province select{margin-right:10px; width:100px;height: 31px;-webkit-appearance:none !important;appearance:none;background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;padding-left:3px;padding-right: 25px;}
+        .my-btn-search{border: 1px solid #32a3d8;padding: 1px 25px;height: 32px;background-color: #32a3d8;color: #fff;}
+        #suggest, #suggest2 {width:200px}
+        .gray {color:gray}
+        .ac_results {background:#fff;border:1px solid #7f9db9;position: absolute;z-index: 10000;display: none}
+        .ac_results li a {white-space: nowrap;text-decoration:none;display:block;color:#05a;padding:1px 3px}
+        .ac_results li {border:1px solid #fff}
+        .ac_over, .ac_results li a:hover {background:#c8e3fc}
+        .ac_results li a span {float:right}
+        .ac_result_tip {border-bottom:1px dashed #666;padding:3px}
+
+        .select-box{background: url(${path}/common/images/cm/select-1.png) right center no-repeat;background-size: auto 100%;}
+        .select-box select{-webkit-appearance:none !important;background-color: transparent; appearance:none;padding-right: 25px;}
+        .dalog-ask{position: absolute;left:60%;top:0;-webkit-transform: translateY(-30%);transform: translateY(-30%);display: none;background-color: #fff;z-index: 10;}
+        .tag{ width:300px; min-height:300px; border:1px solid #32a3d8; position:relative;background-color: #fff;line-height: 1.5;padding: 10px 12px;}
+        .tag em{display:block; border-width:15px; position:absolute; top:30%; left:-30px;border-style:solid dashed dashed; border-color:transparent  #32a3d8 transparent transparent;font-size:0; line-height:0;}
+        .dalog-ask .ask{color: #000;margin: 10px 0 5px 0;}
+        .dalog-ask .answer{color: #666;margin-bottom: 10px;}
+        .dalog-ask .answer:hover{color: #32a3d8;cursor: pointer;}
+        .time-line-list{list-style: none;width: 100%;margin-left: -20px;}
+        .time-line-list>li{position: relative;float: left; text-align: center;width: 100px;overflow: hidden;white-space: nowrap;word-break: break-all;padding: 2px 0;}
+        .time-line-list .number{display: inline-block; padding: 2px; background: #32a3d8;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list .red{display: inline-block; padding: 2px; background: red;border: 2px solid #fff;box-shadow:0 0 0 1px #32a3d8;width: 20px;height: 20px;color: #fff;line-height: 20px;border-radius: 50%;}
+        .time-line-list>li:before{content:'';position: absolute;height: 1px;width: 30%;right:0;top: 15px; background-color: #32a3d8;}
+        .time-line-list>li:after{content: '';position: absolute;height: 1px;width: 30%;left: 0;top: 15px;background:#32a3d8;}
+        .time-line-list>li:first-child:after,.time-line-list>li:last-child:before{display: none;}
+        .time-line-list .arrow{border-width:7px; position:absolute; left:25%; top:9px;border-style:solid dashed dashed; border-color:transparent  transparent  transparent #32a3d8;font-size:0; line-height:0;}
+        .time-line-list>li:first-child .arrow{display: none;}
+        .table-bg th{background-color: #e2f6ff;}
+        .update-parts>span{margin-right: 10px;padding: 3px 4px;background-color: #effaff;border: 1px solid #32a3d8;}
+        .my-search-input{padding-left: 30px;background: url(${path}/common/images/cm/search.png) 6px center no-repeat;background-size: auto 60%; }
+        .txt-red{color:red}
+    </style>
+    <title>修改客户信息</title>
+</head>
+<body>
+<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页
+    <span class="c-gray en">&gt;</span> 客户信息管理
+    <span class="c-gray en">&gt;</span> 修改客户信息
+    <a class="btn radius r" style="line-height:1.6em;margin-top:3px;background: #32a3d8;color: #fff;border:1px solid #32a3d8;" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a>
+</nav>
+<div class="pd-20 cl">
+    <form action="${path}/admin/customerBasic/updateCustomerInfo" method="post">
+    <#--<form action="${path}/admin/customerBasic/save_customer_info" method="post" class="form form-horizontal" id="form-customerInfoAdmin-add"  onkeydown="if(event.keyCode==13)return false;">-->
+        <input type="hidden" id="saveCustomerInfo" name="saveCustomerInfo" value="">
+        <input type="hidden" id="customerId" name="customerId" value="${customerBasicInfo.customerId!''}">
+        <#--客户基本信息 start-->
+        <div class="row cl">
+            <label class="form-label col-2">
+                <div class="tit-2">客户基本信息</div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>客户类型:</label>
+            <div class="formControls col-4 col-sm-4">
+                 <span class="select-box">
+                        <select name="customerType" class="select">
+                            <#if customerBasicInfo.customerType == 1>
+                                <option value="1">个人</option>
+                            </#if>
+                            <#if customerBasicInfo.customerType == 2>
+                                <option value="2">公司</option>
+                            </#if>
+                        </select>
+                 </span>
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>合作进度:</label>
+            <div class="formControls col-4 col-sm-4">
+                <span class="select-box">
+                        <select name="cooperativeState" class="select">
+                            <#if customerBasicInfo.cooperativeState == 1>
+                                <option value="1">意向合作</option>
+                            </#if>
+                            <#if customerBasicInfo.cooperativeState == 2>
+                                <option value="2">已经合作</option>
+                            </#if>
+                            <#if customerBasicInfo.cooperativeState == 3>
+                                <option value="3">停止合作</option>
+                            </#if>
+                        </select>
+                </span>
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>客户名称:</label>
+            <div class="formControls col-4 col-sm-4">
+                <input type="text" class="input-text trim_input" placeholder="公司/客户 全称" id="customerName" name="customerName" value="${customerBasicInfo.customerName!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2">客户行业:</label>
+            <div class="formControls col-4 col-sm-4">
+                <input type="text" class="input-text trim_input" placeholder="请输入行业名称" id="customerIndustry" name="customerIndustry" value="${customerBasicInfo.customerIndustry!''}">
+            </div>
+        </div>
+        <div class="row cl" style="position: relative;margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>客户地址:</label>
+            <div class="formControls col-4 col-sm-4">
+                <span class="select-box">
+                        <select name="customerProvinceCode" class="select">
+                            <option value="">请选择省份</option>
+                        </select>
+                </span>
+            </div>
+            <div class="formControls col-4 col-sm-4">
+                <span class="select-box">
+                        <select name="customerCityCode" class="select">
+                            <option value="">请选择城市</option>
+                        </select>
+                </span>
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"></label>
+            <div class="formControls col-9 col-sm-9">
+                <input type="text" class="input-text trim_input" placeholder="请输入客户的详细地址" id="customerAddress" name="customerAddress" value="${customerBasicInfo.customerAddress!''}">
+            </div>
+        </div>
+        <#--客户基本信息 end-->
+        <#--对接联系人信息-->
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">对接联系人信息<span style="font-family:'Arial Normal', 'Arial';font-weight:400;font-size:14px;">(请确保真实性,公司将不定期抽验回访)</span></div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl">
+            <div class="formControls col-9">
+                <span class="c-red">*</span>姓名:<input type="text" class="input-text"  style="width:90px;margin-right: 10px; margin-bottom: 10px;" placeholder="联系人姓名" id="contactName" name="contactName">
+                <span class="c-red">*</span>电话:<input type="text" class="input-text"  style="width:90px;margin-right: 10px;margin-bottom: 10px;"  placeholder="联系人电话" id="contactPhone" name="contactPhone">
+                <span class="c-red">*</span>职位/身份:<input type="text" class="input-text"  style="width:90px;margin-right: 10px;margin-bottom: 10px;"  placeholder="职位或身份" id="contactType" name="contactType">
+                <span class="c-red">*</span>联系邮箱:<input type="text" class="input-text"  style="width:90px;margin-right: 10px;margin-bottom: 10px;"  placeholder="邮箱" id="contactEmail" name="contactEmail">
+                <span class="c-red"><button type="button" style="cursor:pointer; float: right;height: 35px;margin-right: 30px;margin-bottom: 10px;" class="my-btn-search" onclick="toAddDockedContactInfo();">保存</button></span>
+            </div>
+            <div class="mt-20" style="margin: 20px;">
+                <input type="hidden" id="dockedContactInfoJson" name="dockedContactInfoJson">
+                <table class="table table-border table-bordered table-bg table-hover table-sort" id="contactTable">
+                    <thead>
+                    <tr class="text-c">
+                        <th width="100">联系人姓名</th>
+                        <th width="100">联系电话</th>
+                        <th width="100">职位/身份</th>
+                        <th width="100">联系邮箱</th>
+                        <th width="100">操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="contactListId">
+                    <#if listDockedContactInfo?? &&  (listDockedContactInfo?size > 0) >
+                        <#list listDockedContactInfo as list>
+                        <tr>
+                            <td>${list.contactName!''}</td>
+                            <td>${list.contactPhone!''}</td>
+                            <td>${list.contactType!''}</td>
+                            <td>${list.contactEmail!''}</td>
+                            <td><a>删除</a></td>
+                        </tr>
+                        </#list>
+                    <#else>
+                    <tr><td colspan="5" class="td-manage text-c" >暂时没有联系人信息,请添加!</td></tr>
+                    </#if>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        <#--客户销售渠道信息备案-->
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">客户销售渠道信息备案</div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl">
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>渠道类别:</label>
+            <div class="formControls col-1 col-sm-1">
+                <span class="select-box">
+                    <select name="channelCategory" id="channelCategory" class="select">
+                    </select>
+                </span>
+            </div>
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>渠道类型:</label>
+            <div class="formControls col-1 col-sm-1">
+                <span class="select-box">
+                    <select name="channelType" id="channelType" class="select">
+                    </select>
+                </span>
+            </div>
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>渠道名称:</label>
+            <div class="formControls col-1 col-sm-1">
+                <input type="text" class="input-text"  style="width:90px;margin-right: 0px;margin-bottom: 10px;"  placeholder="填写具体店名" id="channelName" name="channelName">
+            </div>
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>销售产品:</label>
+            <div class="formControls col-1 col-sm-1">
+                <span class="select-box">
+                    <select name="promotingProducts" id="promotingProducts" class="select">
+                    </select>
+                </span>
+            </div>
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>供货价格:</label>
+            <div class="formControls col-1 col-sm-1">
+                <span class="select-box">
+                    <select name="supplyPrice" id="supplyPrice" class="select">
+                    </select>
+                </span>
+                    <input type="text" class="input-text"  style="width:90px;margin-right: 0px;margin-bottom: 10px;"  placeholder="填写供货价格" id="supplyPrice" name="supplyPrice">
+            </div>
+            <label class="form-label col-1 col-sm-1"><span class="c-red">*</span>账期:</label>
+            <div class="formControls col-1 col-sm-1">
+                <span class="select-box">
+                    <select name="accountPeriod" id="accountPeriod" class="select">
+                        <option value="1">先款</option>
+                        <option value="2">月结</option>
+                        <option value="3">两个月</option>
+                    </select>
+                </span>
+            </div>
+            <button type="button" style="cursor:pointer; float: right;height: 35px;margin-right: 30px;margin-bottom: 10px;" class="my-btn-search" onclick="toAddChannelSaleInfo();">保存</button>
+            <div class="mt-20" style="margin: 20px;">
+                <input type="hidden" id="channelSaleInfoJson" name="channelSaleInfoJson">
+                <table class="table table-border table-bordered table-bg table-hover table-sort" id="saleTable">
+                    <thead>
+                    <tr class="text-c">
+                        <th width="100">渠道类别</th>
+                        <th width="100">渠道类型</th>
+                        <th width="100">渠道/平台名称</th>
+                        <th width="100">销售产品型号</th>
+                        <th width="100">供货价(元)</th>
+                        <th width="100">账期 </th>
+                        <th width="100">操作</th>
+                    </tr>
+                    </thead>
+                    <tbody id="channelSaleListId">
+                    <tr><td colspan="7" class="td-manage text-c" >暂时没有客户销售渠道信息,请添加!</td></tr>
+                    </tbody>
+                </table>
+            </div>
+        </div>
+        <#--付款/退款信息-->
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">付款/退款信息<span style="font-family:'Arial Normal', 'Arial';font-weight:400;font-size:14px;">(请真实有效,用于财务收款确认或退款业务)</span></div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>开户支行:</label>
+            <div class="formControls col-2 col-sm-2">
+                <input type="text" class="input-text trim_input" placeholder="开户支行" id="accountOpeningBranch" name="accountOpeningBranch" value="${billingInfo.accountOpeningBranch!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>账户名称:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="账户名称" id="accountName" name="accountName" value="${billingInfo.accountName!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>账号:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="填写账号" id="accountNum" name="accountNum" value="${billingInfo.accountNum!''}">
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>收款人姓名:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="收款人姓名" id="receivablesName" name="receivablesName" value="${billingInfo.receivablesName!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>收款人手机:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="收款人手机" id="receivablesPhone" name="receivablesPhone" value="${billingInfo.receivablesPhone!''}">
+            </div>
+        </div>
+
+        <#--开票信息-->
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-3">
+                <div class="tit-2">开票信息<span> *是否开票<input type="radio" value="1" checked="checked">开票</input><input type="radio" value="2">不开票</input></span></div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>发票类型:</label>
+            <div class="formControls col-2 col-sm-2">
+                <span class="select-box">
+                    <select name="ticketType" class="select">
+                    <option value="1" <#if ticketOpeningInfo.ticketType == 1>selected</#if>>专票</option>
+                    <option value="2" <#if ticketOpeningInfo.ticketType == 2>selected</#if>>普票</option>
+                    </select>
+                </span>
+            </div>
+                <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>开户支行:</label>
+                <div class="formControls col-2 col-sm-2 skin-minimal">
+                    <input type="text" class="input-text trim_input" placeholder="开户支行名称" id="accountOpeningBranch" name="accountOpeningBranch" value="${ticketOpeningInfo.accountOpeningBranch!''}">
+                </div>
+                <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>开票账户:</label>
+                <div class="formControls col-2 col-sm-2 skin-minimal">
+                    <input type="text" class="input-text trim_input" placeholder="开票账户" id="ticketOpeningAccount" name="ticketOpeningAccount" value="${ticketOpeningInfo.ticketOpeningAccount!''}">
+                </div>
+            </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>企业名称:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="企业名称" id="enterpriseName" name="enterpriseName" value="${ticketOpeningInfo.enterpriseName!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>纳税人识别号:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="纳税人识别号" id="taxpayerIdentificationNum" name="taxpayerIdentificationNum" value="${ticketOpeningInfo.taxpayerIdentificationNum!''}">
+            </div>
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>开票电话:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="开票电话" id="ticketOpeningPhone" name="ticketOpeningPhone" value="${ticketOpeningInfo.ticketOpeningPhone!''}">
+            </div>
+        </div>
+        <div class="row cl" style="margin-bottom: 10px;">
+            <label class="form-label col-2 col-sm-2"><span class="c-red">*</span>企业地址:</label>
+            <div class="formControls col-2 col-sm-2 skin-minimal">
+                <input type="text" class="input-text trim_input" placeholder="企业地址" id="enterpriseAddress" name="enterpriseAddress" value="${ticketOpeningInfo.enterpriseAddress!''}">
+            </div>
+        </div>
+
+        <#--客户备注-->
+
+        <div class="row cl">
+            <label class="form-label col-3">
+                <div class="tit-2">客户备注</div>
+            </label>
+            <div class="formControls col-9">
+            </div>
+        </div>
+
+        <div class="row cl">
+            <label class="form-label">
+            </label>
+            <div class="formControls col-9">
+                <textarea id="customerRemarks" name="customerRemarks" >${customerBasicInfo.customerRemarks!''}</textarea>
+            </div>
+        </div>
+        <#--添加保存按钮-->
+        <!-- Unnamed (矩形) -->
+        <div  class="class="row cl"">
+            <!-- Unnamed ()  style="visibility: visible;"-->
+            <div id="u30" class="my-btn-search" style="cursor:pointer; float: center;height: 35px;margin-right: 30px;margin-bottom: 10px;">
+                <p><span onclick="addCustomerBasicInfo()">添加客户信息</span></p>
+            </div>
+        </div>
+    </form>
+</div>
+
+<#--业务js-->
+<#--<script type="text/javascript" src="${path}/common/js/customerSaveAdmin/save_customer_info.js"></script>-->
+<script>
+    /*初始化页面参数*/
+    $(function () {
+        /* 初始化单选框样式 */
+        //initCheck();
+
+        /*初始化省份(大类)*/
+        initProvince();
+
+        /*初始化渠道类别(大类)*/
+        initChannelCategory();
+
+        /*初始化销售产品(大类)*/
+        initPromotingProducts();
+
+        /*监听省份*/
+        $("[name='customerProvinceCode']").change(function (){
+            initCity($(this).val());
+        })
+
+        /*监听渠道类别*/
+        $("[name='channelCategory']").change(function (){
+            initChannelType($(this).val());
+        })
+
+        /*监听销售产品*/
+        $("[name='promotingProducts']").change(function (){
+            initSupplyPrice($(this).val());
+        })
+    })
+
+    /*业务逻辑js控制 start*/
+    $(document).on('click', '.dalog-ask .answer', function() {
+        var customerProvinceCode = $(this).find(".customerProvinceCode").val();
+        $("select[name='complaintId']").val(customerProvinceCode);
+        initCity(customerProvinceCode); //根据省份初始化城市
+        $(".dalog-ask").hide();
+    });
+
+    /*初始化省份*/
+    function initProvince() {
+        //默认查询参数为空
+        var provinceListInfo = null;
+        $.ajax({
+            type: "POST",
+            data: {
+                provinceId : provinceListInfo
+            },
+            url: "${path}/admin/customerBasic/query_provinceList",
+            async: true,
+            success: function(data){
+                var html = '<option value="">请选择省份</option>';
+                var id;
+                if (data.returnCode == 200) {
+                    for(var i=0;i<data.returnMsg.provinceList.length;i++){
+                        provinceListInfo = data.returnMsg.provinceList[i];
+                        if(i == 0 ){
+                            id = provinceListInfo.provinceId;
+                        }
+                        html += '<option value="'+ provinceListInfo.provinceId +'">'+ provinceListInfo.province +'</option>';
+                    }
+                }else{
+                    html = '';
+                }
+                $("[name='customerProvinceCode']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*根据省份代号初始化城市*/
+    function initCity(customerProvinceId){
+        var cityListInfo = null;
+        if(customerProvinceId == null || customerProvinceId == ""){
+            var html = '<option value="">请选择城市</option>';
+            $("[name='customerCityCode']").html(html);
+        }else{
+            $.ajax({
+                type: "POST",
+                data: {
+                    provinceId : customerProvinceId
+                },
+                url: "${path}/admin/customerBasic/query_cityList",
+                async: true,
+                success: function(data){
+                    var html = '<option value="">请选择城市</option>';
+                    if (data.returnCode == 200) {
+                        for(var i=0;i<data.returnMsg.cityList.length;i++){
+                            cityListInfo = data.returnMsg.cityList[i];
+                            html += '<option value="'+ cityListInfo.cityId +'">'+ cityListInfo.city +'</option>';
+                        }
+                    }else{
+                        html = '';
+                    }
+                    $("[name='customerCityCode']").html(html);
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+                }
+            });
+        }
+    }
+
+    /*初始化渠道类别*/
+    function initChannelCategory() {
+        //默认查询参数为空
+        var channelCategoryListInfo = null;
+        $.ajax({
+            type: "POST",
+            data: {
+                channelCategoryId : channelCategoryListInfo
+            },
+            url: "${path}/admin/customerBasic/query_channelCategoryList",
+            async: true,
+            success: function(data){
+                var html = '<option value="">请选择渠道类别</option>';
+                var id;
+                if (data.returnCode == 200) {
+                    for(var i=0;i<data.returnMsg.channelCategoryList.length;i++){
+                        channelCategoryListInfo = data.returnMsg.channelCategoryList[i];
+                        if(i == 0 ){
+                            id = channelCategoryListInfo.channelCategory;
+                        }
+                        html += '<option value="'+ channelCategoryListInfo.channelCategory +'">'+ channelCategoryListInfo.channelName +'</option>';
+                    }
+                }else{
+                    html = '';
+                }
+                $("[name='channelCategory']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*根据渠道类别初始化渠道类型*/
+    function initChannelType(channelCategory){
+        var channelTypeListInfo = null;
+       /* if(channelCategory == null || channelCategory == ""){
+            var html = '<option value="">请选择渠道类别</option>';
+            $("[name='channelCategory']").html(html);
+        }else{*/
+            $.ajax({
+                type: "POST",
+                data: {
+                    channelCategoryId : channelCategory
+                },
+                url: "${path}/admin/customerBasic/query_channelTypeList",
+                async: true,
+                success: function(data){
+                    var html = '<option value="">请选择渠道类型</option>';
+                    if (data.returnCode == 200) {
+                        for(var i=0;i<data.returnMsg.channelTypeList.length;i++){
+                            channelTypeListInfo = data.returnMsg.channelTypeList[i];
+                            html += '<option value="'+ channelTypeListInfo.channelName +'">'+ channelTypeListInfo.channelType +'</option>';
+                        }
+                    }else{
+                        html = '';
+                    }
+                    $("[name='channelType']").html(html);
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+                }
+            });
+        //}
+    }
+
+    /*初始化销售产品*/
+    function initPromotingProducts() {
+        var promotingProductsInfo = null;
+        $.ajax({
+            type: "POST",
+            data: {
+                promotingProductsInfo : promotingProductsInfo
+            },
+            url: "${path}/admin/customerBasic/query_promotingProductsList",
+            async: true,
+            success: function(data){
+                var html = '<option value="">请选择销售产品</option>';
+                var id;
+                if (data.returnCode == 200) {
+                    for(var i=0;i<data.returnMsg.promotingProductsList.length;i++){
+                        promotingProductsInfo = data.returnMsg.promotingProductsList[i];
+                        if(i == 0 ){
+                            id = promotingProductsInfo.productId;
+                        }
+                        html += '<option value="'+ promotingProductsInfo.productId +'">'+ promotingProductsInfo.productName +'</option>';
+                    }
+                }else{
+                    html = '';
+                }
+                $("[name='promotingProducts']").html(html);
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+            }
+        });
+    }
+
+    /*初始化产品价格*/
+    function initSupplyPrice(promotingProductsId){
+        //var supplyPriceInfo = null;
+        if(promotingProductsId == null || promotingProductsId == ""){
+            var html = '<option value="">请选择销售产品</option>';
+            $("[name='promotingProducts']").html(html);
+        }else{
+            $.ajax({
+                type: "POST",
+                data: {
+                    promotingProductsId : promotingProductsId
+                },
+                url: "${path}/admin/customerBasic/query_supplyPriceList",
+                async: true,
+                success: function(data){
+                    var html = '<option value="">请选择产品价格</option>';
+                    if (data.returnCode == 200) {
+                        for(var i=0;i<data.returnMsg.supplyPriceList.length;i++){
+                            var supplyPriceInfo = data.returnMsg.supplyPriceList[i];
+                            html += '<option value="'+ supplyPriceInfo.colorId +'">'+ supplyPriceInfo.colorPrice +'</option>';
+                        }
+                    }else{
+                        html = '';
+                    }
+                    $("[name='supplyPrice']").html(html);
+                },
+                error: function(XmlHttpRequest, textStatus, errorThrown){
+                }
+            });
+        }
+    }
+
+    /*保存对接联系人信息到列表*/
+    function toAddDockedContactInfo() {
+        //var dockedContactInfoList =  new Array();
+        var contactName = document.getElementById("contactName").value;
+        var contactPhone = document.getElementById("contactPhone").value;
+        var contactType = document.getElementById("contactType").value;
+        var contactEmail = document.getElementById("contactEmail").value;
+        //var operation = "删除";
+        var operation = "<a href='javascript:;' onclick='deleteContact(this)'>删除</a>";
+        //"<a href='javascript:;' onclick='del(this)'>删除</a>";
+        row = document.getElementById("contactTable").insertRow();
+        if(row!=null){
+            cell=row.insertCell();
+            cell.innerHTML=contactName;
+            cell = row.insertCell();
+            cell.innerHTML=contactPhone;
+            cell = row.insertCell();
+            cell.innerHTML=contactType;
+            cell = row.insertCell();
+            cell.innerHTML=contactEmail;
+            cell = row.insertCell();
+            cell.innerHTML=operation;
+        }
+        return false;
+    }
+    /*保存客户销售信息到列表*/
+    function toAddChannelSaleInfo() {
+        //var channelSaleInfoList =  new Array();
+        var channelCategory = document.getElementById("channelCategory").value;
+        var channelType = document.getElementById("channelType").value;
+        var channelName = document.getElementById("channelName").value;
+        var promotingProducts = document.getElementById("promotingProducts").value;
+        var supplyPrice = document.getElementById("supplyPrice").value;
+        var accountPeriod = document.getElementById("accountPeriod").value;
+        var operation = "删除";
+        //var operation = var operation = "<a href='javascript:;' onclick='deleteChannelSale(this)'>删除</a>";
+        row = document.getElementById("saleTable").insertRow();
+        if(row!=null){
+            cell=row.insertCell();
+            cell.innerHTML=channelCategory;
+            cell = row.insertCell();
+            cell.innerHTML=channelType;
+            cell = row.insertCell();
+            cell.innerHTML=channelName;
+            cell = row.insertCell();
+            cell.innerHTML=promotingProducts;
+            cell = row.insertCell();
+            cell.innerHTML=supplyPrice;
+            cell = row.insertCell();
+            cell.innerHTML=accountPeriod;
+            cell = row.insertCell();
+            cell.innerHTML=operation;
+        }
+        return false;
+    }
+    /*添加客户信息*/
+    function addCustomerBasicInfo() {
+        var customerBasicInfoSaveForm = {};
+        //客户基本信息
+        var customerBasicInfo = {};
+        customerBasicInfo.customerType = $("[name='customerType']").val();
+        customerBasicInfo.cooperativeState = $("[name='cooperativeState']").val();
+        customerBasicInfo.customerName = $("[name='customerName']").val();
+        customerBasicInfo.customerIndustry = $("[name='customerIndustry']").val();
+        customerBasicInfo.customerProvinceCode = $("[name='customerProvinceCode']").val();
+        customerBasicInfo.customerCityCode = $("[name='customerCityCode']").val();
+        customerBasicInfo.customerAddress = $("[name='customerAddress']").val();
+        customerBasicInfo.customerRemarks = $("[name='customerRemarks']").val();
+        //对接联系人信息
+        var dockedContactInfoList =  new Array();
+        $("#contactListId").find("tr").each(function (){
+            var dockedContactInfo = {};
+            dockedContactInfo.contactName = $("[name='contactName']").val();
+            dockedContactInfo.contactPhone = $("[name='contactPhone']").val();
+            dockedContactInfo.contactType = $("[name='contactType']").val();
+            dockedContactInfo.contactEmail = $("[name='contactEmail']").val();
+            dockedContactInfoList.push(dockedContactInfo);
+        })
+        var dockedContactInfoListJson = $("#dockedContactInfoJson").val(JSON.stringify(dockedContactInfoList));
+        //客户销售渠道信息
+        var channelSaleInfoList =  new Array();
+        $("#channelSaleListId").find("tr").each(function (){
+            var channelSaleInfo = {};
+            channelSaleInfo.channelCategory = $("[name='channelCategory']").val();
+            channelSaleInfo.channelType = $("[name='channelType']").val();
+            channelSaleInfo.channelName = $("[name='channelName']").val();
+            channelSaleInfo.promotingProducts = $("[name='promotingProducts']").val();
+            channelSaleInfo.supplyPrice = $("[name='supplyPrice']").val();
+            channelSaleInfo.accountPeriod = $("[name='accountPeriod']").val();
+            channelSaleInfoList.push(channelSaleInfo);
+        })
+        var channelSaleInfoListJson = $("#channelSaleInfoJson").val(JSON.stringify(channelSaleInfoList));
+        //alert("dockedContactInfoList:"+dockedContactInfoList.length);
+        //alert("channelSaleInfoList:"+channelSaleInfoList.length);
+        //付款/退款信息
+        var billingInfo = {};
+        billingInfo.accountOpeningBranch = $("[name='accountOpeningBranch']").val();
+        billingInfo.accountName = $("[name='accountName']").val();
+        billingInfo.accountNum = $("[name='accountNum']").val();
+        billingInfo.receivablesName = $("[name='receivablesName']").val();
+        billingInfo.receivablesPhone = $("[name='receivablesPhone']").val();
+        //开票信息
+        var ticketOpeningInfo = {};
+        ticketOpeningInfo.ticketType = $("[name='ticketType']").val();
+        ticketOpeningInfo.accountOpeningBranch = $("[name='accountOpeningBranch']").val();
+        ticketOpeningInfo.ticketOpeningAccount = $("[name='ticketOpeningAccount']").val();
+        ticketOpeningInfo.enterpriseName = $("[name='enterpriseName']").val();
+        ticketOpeningInfo.taxpayerIdentificationNum = $("[name='taxpayerIdentificationNum']").val();
+        ticketOpeningInfo.ticketOpeningPhone = $("[name='ticketOpeningPhone']").val();
+        ticketOpeningInfo.enterpriseAddress = $("[name='enterpriseAddress']").val();
+        //发送保存请求
+        alert("request ...Start...");
+        customerBasicInfoSaveForm.customerBasicInfo = customerBasicInfo;
+        customerBasicInfoSaveForm.dockedContactInfoList = dockedContactInfoList;
+        customerBasicInfoSaveForm.channelSaleInfoList = channelSaleInfoList;
+        customerBasicInfoSaveForm.billingInfo = billingInfo;
+        customerBasicInfoSaveForm.ticketOpeningInfo = ticketOpeningInfo;
+        var saveStates = "";
+        console.log(customerBasicInfoSaveForm);
+
+        var customerInfoJson = JSON.stringify(customerBasicInfo);
+        var billingInfoJson = JSON.stringify(billingInfo);
+        var ticketOpeningInfoJson = JSON.stringify(ticketOpeningInfo);
+
+        //$.post("${path}/admin/customerBasic/save_customer_info",customerBasicInfoSaveForm, function(res){});
+        $.ajax({
+            type: "POST",
+            data: {
+                customerInfoJson:customerInfoJson,
+                /*dockedContactInfoListJson:dockedContactInfoListJson,
+                channelSaleInfoListJson:dockedContactInfoListJson,*/
+                dockedContactInfoList:dockedContactInfoList,
+                channelSaleInfoList:channelSaleInfoList,
+                billingInfoJson : billingInfoJson,
+                ticketOpeningInfoJson:ticketOpeningInfoJson
+            },
+            url: "${path}/admin/customerBasic/save_customer_info",
+            async: true,
+            success: function(data){
+                if (data.returnCode == 200) {
+                    saveStates = "保存成功";
+                    alert(saveStates);
+                }else{
+                    saveStates = "保存失败";
+                    alert(saveStates);
+                }
+            },
+            error: function(XmlHttpRequest, textStatus, errorThrown){
+                saveStates = "保存失败";
+                alert(saveStates);
+            }
+        });
+    }
+
+    // 删除对接联系人函数
+    function deleteContact(x){
+        $(x).parent().parent().remove();
+        // tr.parentNode.removeChild(tr);
+    }
+    // 删除客户销售渠道信息函数
+    function deleteChannelSale(x){
+        var tr = x.parentNode.parentNode;
+        tr.parentNode.removeChild(tr);
+    }
+    /*业务逻辑js控制 end*/
+</script>
+
+</body>
+</html>