Browse Source

Merge branch 'master' of http://git.iamberry.com/hexiugang/iamberry-common-parent

# Conflicts:
#	watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
wangxiaoming 7 years ago
parent
commit
1500f66919
27 changed files with 552 additions and 89 deletions
  1. 27 27
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/BackGoods.java
  2. 36 0
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java
  3. 27 27
      watero-rst-core/src/main/java/com.iamberry.rst.core/cm/NoreasonBack.java
  4. 11 1
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java
  5. 8 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java
  6. 7 0
      watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java
  7. 94 1
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java
  8. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/BackGoodsMapper.java
  9. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java
  10. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/NoreasonBackMapper.java
  11. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java
  12. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java
  13. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RepairMapper.java
  14. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml
  15. 55 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml
  16. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/noreasonBackMapper.xml
  17. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml
  18. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml
  19. 9 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml
  20. 6 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java
  21. 8 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java
  22. 13 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml
  23. 5 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java
  24. 3 0
      watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml
  25. 54 2
      watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java
  26. 1 1
      watero-rst-web/src/main/resources/watero-rst-ioc.xml
  27. 98 30
      watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl

+ 27 - 27
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/BackGoods.java

@@ -13,7 +13,7 @@ public class BackGoods  implements Serializable {
 
     private Integer signclosedId;
 
-    private Boolean backGoodsBackStatus;
+    private Integer backGoodsBackStatus;
 
     private String backGoodsBackName;
 
@@ -29,16 +29,40 @@ public class BackGoods  implements Serializable {
 
     private String backGoodsDesc;
 
-    private Boolean backGoodsState;
+    private Integer backGoodsState;
 
     private String backGoodsAlipay;
 
-    private Boolean backGoodsIsTransfer;
+    private Integer backGoodsIsTransfer;
 
     private Date backGoodsCreateTime;
 
     private Date backGoodsUpdateTime;
 
+    public Integer getBackGoodsBackStatus() {
+        return backGoodsBackStatus;
+    }
+
+    public void setBackGoodsBackStatus(Integer backGoodsBackStatus) {
+        this.backGoodsBackStatus = backGoodsBackStatus;
+    }
+
+    public Integer getBackGoodsState() {
+        return backGoodsState;
+    }
+
+    public void setBackGoodsState(Integer backGoodsState) {
+        this.backGoodsState = backGoodsState;
+    }
+
+    public Integer getBackGoodsIsTransfer() {
+        return backGoodsIsTransfer;
+    }
+
+    public void setBackGoodsIsTransfer(Integer backGoodsIsTransfer) {
+        this.backGoodsIsTransfer = backGoodsIsTransfer;
+    }
+
     public Integer getBackGoodsId() {
         return backGoodsId;
     }
@@ -71,14 +95,6 @@ public class BackGoods  implements Serializable {
         this.signclosedId = signclosedId;
     }
 
-    public Boolean getBackGoodsBackStatus() {
-        return backGoodsBackStatus;
-    }
-
-    public void setBackGoodsBackStatus(Boolean backGoodsBackStatus) {
-        this.backGoodsBackStatus = backGoodsBackStatus;
-    }
-
     public String getBackGoodsBackName() {
         return backGoodsBackName;
     }
@@ -135,14 +151,6 @@ public class BackGoods  implements Serializable {
         this.backGoodsDesc = backGoodsDesc == null ? null : backGoodsDesc.trim();
     }
 
-    public Boolean getBackGoodsState() {
-        return backGoodsState;
-    }
-
-    public void setBackGoodsState(Boolean backGoodsState) {
-        this.backGoodsState = backGoodsState;
-    }
-
     public String getBackGoodsAlipay() {
         return backGoodsAlipay;
     }
@@ -151,14 +159,6 @@ public class BackGoods  implements Serializable {
         this.backGoodsAlipay = backGoodsAlipay == null ? null : backGoodsAlipay.trim();
     }
 
-    public Boolean getBackGoodsIsTransfer() {
-        return backGoodsIsTransfer;
-    }
-
-    public void setBackGoodsIsTransfer(Boolean backGoodsIsTransfer) {
-        this.backGoodsIsTransfer = backGoodsIsTransfer;
-    }
-
     public Date getBackGoodsCreateTime() {
         return backGoodsCreateTime;
     }

+ 36 - 0
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/CustomerInfo.java

@@ -56,6 +56,42 @@ public class CustomerInfo  implements Serializable {
     private Integer detectState;        //检测状态
     private Integer typeId;             //产品类型
     private String typeName;            //产品类型名称
+    private String adminName;           //客服名称
+    private Date salesTime;             //购买日期
+    private Integer backStatus;         //寄回状态
+    private Integer sendStatus;         //寄送状态
+
+    public Integer getBackStatus() {
+        return backStatus;
+    }
+
+    public void setBackStatus(Integer backStatus) {
+        this.backStatus = backStatus;
+    }
+
+    public Integer getSendStatus() {
+        return sendStatus;
+    }
+
+    public void setSendStatus(Integer sendStatus) {
+        this.sendStatus = sendStatus;
+    }
+
+    public Date getSalesTime() {
+        return salesTime;
+    }
+
+    public void setSalesTime(Date salesTime) {
+        this.salesTime = salesTime;
+    }
+
+    public String getAdminName() {
+        return adminName;
+    }
+
+    public void setAdminName(String adminName) {
+        this.adminName = adminName;
+    }
 
     public Integer getTypeId() {
         return typeId;

+ 27 - 27
watero-rst-core/src/main/java/com.iamberry.rst.core/cm/NoreasonBack.java

@@ -13,7 +13,7 @@ public class NoreasonBack  implements Serializable {
 
     private Integer signclosedId;
 
-    private Boolean noreasonBackBackStatus;
+    private Integer noreasonBackBackStatus;
 
     private String noreasonBackBackName;
 
@@ -29,11 +29,11 @@ public class NoreasonBack  implements Serializable {
 
     private String noreasonBackDesc;
 
-    private Boolean noreasonBackState;
+    private Integer noreasonBackState;
 
     private String noreasonBackAlipay;
 
-    private Boolean noreasonBackIsTransfer;
+    private Integer noreasonBackIsTransfer;
 
     private Date noreasonBackCreateTime;
 
@@ -71,14 +71,6 @@ public class NoreasonBack  implements Serializable {
         this.signclosedId = signclosedId;
     }
 
-    public Boolean getNoreasonBackBackStatus() {
-        return noreasonBackBackStatus;
-    }
-
-    public void setNoreasonBackBackStatus(Boolean noreasonBackBackStatus) {
-        this.noreasonBackBackStatus = noreasonBackBackStatus;
-    }
-
     public String getNoreasonBackBackName() {
         return noreasonBackBackName;
     }
@@ -135,14 +127,6 @@ public class NoreasonBack  implements Serializable {
         this.noreasonBackDesc = noreasonBackDesc == null ? null : noreasonBackDesc.trim();
     }
 
-    public Boolean getNoreasonBackState() {
-        return noreasonBackState;
-    }
-
-    public void setNoreasonBackState(Boolean noreasonBackState) {
-        this.noreasonBackState = noreasonBackState;
-    }
-
     public String getNoreasonBackAlipay() {
         return noreasonBackAlipay;
     }
@@ -151,14 +135,6 @@ public class NoreasonBack  implements Serializable {
         this.noreasonBackAlipay = noreasonBackAlipay == null ? null : noreasonBackAlipay.trim();
     }
 
-    public Boolean getNoreasonBackIsTransfer() {
-        return noreasonBackIsTransfer;
-    }
-
-    public void setNoreasonBackIsTransfer(Boolean noreasonBackIsTransfer) {
-        this.noreasonBackIsTransfer = noreasonBackIsTransfer;
-    }
-
     public Date getNoreasonBackCreateTime() {
         return noreasonBackCreateTime;
     }
@@ -174,4 +150,28 @@ public class NoreasonBack  implements Serializable {
     public void setNoreasonBackUpdateTime(Date noreasonBackUpdateTime) {
         this.noreasonBackUpdateTime = noreasonBackUpdateTime;
     }
+
+    public Integer getNoreasonBackBackStatus() {
+        return noreasonBackBackStatus;
+    }
+
+    public void setNoreasonBackBackStatus(Integer noreasonBackBackStatus) {
+        this.noreasonBackBackStatus = noreasonBackBackStatus;
+    }
+
+    public Integer getNoreasonBackState() {
+        return noreasonBackState;
+    }
+
+    public void setNoreasonBackState(Integer noreasonBackState) {
+        this.noreasonBackState = noreasonBackState;
+    }
+
+    public Integer getNoreasonBackIsTransfer() {
+        return noreasonBackIsTransfer;
+    }
+
+    public void setNoreasonBackIsTransfer(Integer noreasonBackIsTransfer) {
+        this.noreasonBackIsTransfer = noreasonBackIsTransfer;
+    }
 }

+ 11 - 1
watero-rst-interface/src/main/java/com/iamberry/rst/faces/cm/CustomerService.java

@@ -1,9 +1,19 @@
 package com.iamberry.rst.faces.cm;
 
+import com.iamberry.rst.core.cm.CustomerInfo;
+import com.iamberry.rst.core.page.PagedResult;
+
+import java.util.List;
+
 /**
  * 客诉基本信息
  */
 public interface CustomerService {
 
-
+    /**
+     *  查询客诉基本信息列表
+     * @param customerInfo
+     * @return
+     */
+    PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum);
 }

+ 8 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/product/ProductService.java

@@ -2,6 +2,7 @@ package com.iamberry.rst.faces.product;
 
 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.core.product.Gift;
 import com.iamberry.rst.core.product.OrderGift;
 
@@ -58,4 +59,11 @@ public interface ProductService {
      * @return
      */
     Product getProduce(String productId);
+
+    /**
+     * 根据条件查询产品类型列表
+     * @param productType
+     * @return
+     */
+    List<ProductType> listProductType(ProductType productType);
 }

+ 7 - 0
watero-rst-interface/src/main/java/com/iamberry/rst/faces/sys/SysService.java

@@ -56,6 +56,13 @@ public interface SysService {
     PagedResult<Admin> listAdmin(PageRequest<Admin> pageRequest);
 
     /**
+     * 不分页查询管理员
+     * @param admin
+     * @return
+     */
+    List<Admin> listSelectAdmin(Admin admin);
+
+    /**
      * 获取管理员信息
      * @param admin
      * @return

+ 94 - 1
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/CustomerServiceImpl.java

@@ -1,4 +1,97 @@
 package com.iamberry.rst.service.cm;
 
-public class CustomerServiceImpl {
+import com.github.pagehelper.PageHelper;
+import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.pts.PtsSupplier;
+import com.iamberry.rst.faces.cm.CustomerService;
+import com.iamberry.rst.service.cm.mapper.*;
+import com.iamberry.rst.util.PageUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class CustomerServiceImpl implements CustomerService {
+
+    @Autowired
+    private CustomerInfoMapper customerInfoMapper;
+    @Autowired
+    private RepairMapper repairMapper;
+    @Autowired
+    private BackGoodsMapper backGoodsMapper;
+    @Autowired
+    private NoreasonBackMapper noreasonBackMapper;
+    @Autowired
+    private ReissueMapper reissueMapper;
+    @Autowired
+    private RenewedMapper renewedMapper;
+
+    @Override
+    public PagedResult<CustomerInfo> listCustomer(int pageNO, int pageSize, CustomerInfo customerInfo, boolean isTotalNum) {
+        PageHelper.startPage(pageNO, pageSize, isTotalNum);
+        //查询客诉列表
+        List<CustomerInfo> customerList = customerInfoMapper.listCustomer(customerInfo);
+        //查询售后维修集合
+        List<Repair> repairList = repairMapper.listRepair(new Repair());
+        //查询售后退货集合
+        List<BackGoods> backGoodsList = backGoodsMapper.listBackGoods(new BackGoods());
+        //查询售后无理由退货集合
+        List<NoreasonBack> noreasonBackList = noreasonBackMapper.listNoreasonBack(new NoreasonBack());
+        //查询售后补发集合
+        List<Reissue> reissueList = reissueMapper.listReissue(new Reissue());
+        //查询售后换新集合
+        List<Renewed> renewedList = renewedMapper.listRenewed(new Renewed());
+
+        if (customerList != null && customerList.size() > 0) {
+            for (CustomerInfo customer : customerList) {
+                switch (customer.getCustomerIsSolve().intValue()) {
+                    case 3: //换新
+                        for (Renewed renewed : renewedList) {
+                            if (renewed.getCustomerId().intValue() == customer.getCustomerId()) {
+                                customer.setBackStatus(renewed.getRenewedBackStatus());
+                                customer.setSendStatus(renewed.getRenewedSendStatus());
+                                break;
+                            }
+                        }
+                        break;
+                    case 4: //维修
+                        for (Repair repair : repairList) {
+                            if (repair.getCustomerId().intValue() == customer.getCustomerId()) {
+                                customer.setBackStatus(repair.getRepairBackStatus());
+                                customer.setSendStatus(repair.getRepairSendStatus());
+                                break;
+                            }
+                        }
+                        break;
+                    case 5: //补发
+                        for (Reissue reissue : reissueList) {
+                            if (reissue.getCustomerId().intValue() == customer.getCustomerId()) {
+                                customer.setSendStatus(reissue.getReissueSendStatus());
+                                break;
+                            }
+                        }
+                        break;
+                    case 6: //退货
+                        for (BackGoods backGoods : backGoodsList) {
+                            if (backGoods.getCustomerId().intValue() == customer.getCustomerId()) {
+                                customer.setBackStatus(backGoods.getBackGoodsBackStatus());
+                                break;
+                            }
+                        }
+                        break;
+                    case 7: //无理由退货
+                        for (NoreasonBack noreasonBack : noreasonBackList) {
+                            if (noreasonBack.getCustomerId().intValue() == customer.getCustomerId()) {
+                                customer.setBackStatus(noreasonBack.getNoreasonBackBackStatus());
+                                break;
+                            }
+                        }
+                        break;
+                }
+            }
+        }
+        return PageUtil.getPage(customerList);
+    }
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/BackGoodsMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.BackGoods;
 
+import java.util.List;
+
 
 public interface BackGoodsMapper {
     int deleteByPrimaryKey(Integer backGoodsId);
@@ -15,4 +17,11 @@ public interface BackGoodsMapper {
     int updateByPrimaryKeySelective(BackGoods record);
 
     int updateByPrimaryKey(BackGoods record);
+
+    /**
+     * 查询售后退货集合
+     * @param backGoods
+     * @return
+     */
+    List<BackGoods> listBackGoods(BackGoods backGoods);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/CustomerInfoMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.CustomerInfo;
 
+import java.util.List;
+
 public interface CustomerInfoMapper {
     int deleteByPrimaryKey(Integer customerId);
 
@@ -14,4 +16,11 @@ public interface CustomerInfoMapper {
     int updateByPrimaryKeySelective(CustomerInfo record);
 
     int updateByPrimaryKey(CustomerInfo record);
+
+    /**
+     *  查询客诉基本信息列表
+     * @param customerInfo
+     * @return
+     */
+    List<CustomerInfo> listCustomer(CustomerInfo customerInfo);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/NoreasonBackMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.NoreasonBack;
 
+import java.util.List;
+
 public interface NoreasonBackMapper {
     int deleteByPrimaryKey(Integer noreasonBackId);
 
@@ -14,4 +16,11 @@ public interface NoreasonBackMapper {
     int updateByPrimaryKeySelective(NoreasonBack record);
 
     int updateByPrimaryKey(NoreasonBack record);
+
+    /**
+     * 查询售后无理由退货集合
+     * @param noreasonBack
+     * @return
+     */
+    List<NoreasonBack> listNoreasonBack(NoreasonBack noreasonBack);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/ReissueMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.Reissue;
 
+import java.util.List;
+
 public interface ReissueMapper {
     int deleteByPrimaryKey(Integer reissueId);
 
@@ -14,4 +16,11 @@ public interface ReissueMapper {
     int updateByPrimaryKeySelective(Reissue record);
 
     int updateByPrimaryKey(Reissue record);
+
+    /**
+     * 查询售后补发集合
+     * @param reissue
+     * @return
+     */
+    List<Reissue> listReissue(Reissue reissue);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RenewedMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.Renewed;
 
+import java.util.List;
+
 public interface RenewedMapper {
     int deleteByPrimaryKey(Integer renewedId);
 
@@ -14,4 +16,11 @@ public interface RenewedMapper {
     int updateByPrimaryKeySelective(Renewed record);
 
     int updateByPrimaryKey(Renewed record);
+
+    /**
+     * 查询售后换新集合
+     * @param renewed
+     * @return
+     */
+    List<Renewed> listRenewed(Renewed renewed);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/RepairMapper.java

@@ -2,6 +2,8 @@ package com.iamberry.rst.service.cm.mapper;
 
 import com.iamberry.rst.core.cm.Repair;
 
+import java.util.List;
+
 public interface RepairMapper {
     int deleteByPrimaryKey(Integer repairId);
 
@@ -14,4 +16,11 @@ public interface RepairMapper {
     int updateByPrimaryKeySelective(Repair record);
 
     int updateByPrimaryKey(Repair record);
+
+    /**
+     * 查询售后维修集合
+     * @param repair
+     * @return
+     */
+    List<Repair> listRepair(Repair repair);
 }

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/backGoodsMapper.xml

@@ -32,6 +32,15 @@
     from tb_rst_back_goods
     where back_goods_id = #{backGoodsId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询售后退货集合 -->
+  <select id="listBackGoods" resultType="BackGoods" parameterType="BackGoods">
+    select
+      *
+    from
+      tb_rst_back_goods
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_back_goods
     where back_goods_id = #{backGoodsId,jdbcType=INTEGER}

+ 55 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/customerInfoMapper.xml

@@ -35,6 +35,61 @@
     delete from tb_rst_customer_info
     where customer_id = #{customerId,jdbcType=INTEGER}
   </delete>
+
+  <!-- 查询客诉基本信息列表 -->
+  <select id="listCustomer" parameterType="CustomerInfo" resultType="CustomerInfo">
+    select
+      c.customer_id customerId,
+      c.customer_source_type customerSourceType,
+      a.admin_name adminName,
+      c.customer_name customerName,
+      c.customer_tel customerTel,
+      c.customer_source_type customerSourceType,
+      c.customer_source customerSource,
+      t.type_name typeName,
+      ct.complaint_class_name complaintClassName,
+      sc.small_class_name smallClassName,
+      d.describe_title describeTitle,
+      sc.company_name companyName,
+      si.store_name storeName,
+      c.customer_area customerArea,
+      c.customer_in_TDS customerInTDS,
+      c.customer_out_TDS customerOutTDS,
+      c.customer_is_solve customerIsSolve,
+      c.customer_is_visit customerIsVisit,
+      c.customer_create_time customerCreateTime
+    from
+      tb_rst_customer_info c
+    LEFT JOIN tb_rst_question_describe d ON c.customer_id = d.customer_id
+    LEFT JOIN tb_rst_product_type t ON c.type_id = t.type_id
+    LEFT JOIN tb_rst_complaint_question q ON c.question_id = q.question_id
+    LEFT JOIN tb_rst_complaint_small_class s ON q.small_class_id = s.small_class_id
+    LEFT JOIN tb_rst_complaint_type ct ON s.complaint_id = ct.complaint_id
+    LEFT JOIN tb_rst_sales_company sc ON c.company_id = sc.company_id
+    LEFT JOIN tb_rst_store_info si ON c.store_id = si.store_id
+    LEFT JOIN tb_rst_sys_admin a ON c.admin_id = a.admin_id
+    <where>
+      <if test="customerName != null and customerName != ''">
+        customer_name = #{customerName}
+      </if>
+      <if test="customerTel != null and customerTel != ''">
+        and customer_tel = #{customerTel}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        customer_name = #{customerName}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        customer_name = #{customerName}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        customer_name = #{customerName}
+      </if>
+      <if test="customerName != null and customerName != ''">
+        customer_name = #{customerName}
+      </if>
+    </where>
+  </select>
+
   <insert id="insert" parameterType="CustomerInfo" >
     insert into tb_rst_customer_info (customer_id, admin_id, question_id, 
       company_id, store_id, customer_source_type, 

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/noreasonBackMapper.xml

@@ -33,6 +33,15 @@
     from tb_rst_noreason_back
     where noreason_back_id = #{noreasonBackId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询售后无理由退货集合 -->
+  <select id="listNoreasonBack" resultType="NoreasonBack" parameterType="NoreasonBack">
+    select
+      *
+    from
+      tb_rst_noreason_back
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_noreason_back
     where noreason_back_id = #{noreasonBackId,jdbcType=INTEGER}

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/reissueMapper.xml

@@ -33,6 +33,15 @@
     from tb_rst_reissue
     where reissue_id = #{reissueId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询售后补发集合 -->
+  <select id="listReissue" resultType="Reissue" parameterType="Reissue">
+    select
+      *
+    from
+      tb_rst_reissue
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_reissue
     where reissue_id = #{reissueId,jdbcType=INTEGER}

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/renewedMapper.xml

@@ -46,6 +46,15 @@
     from tb_rst_renewed
     where renewed_id = #{renewedId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询售后换新集合 -->
+  <select id="listRenewed" resultType="Renewed" parameterType="Renewed">
+    select
+      *
+    from
+      tb_rst_renewed
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_renewed
     where renewed_id = #{renewedId,jdbcType=INTEGER}

+ 9 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/cm/mapper/repairMapper.xml

@@ -45,6 +45,15 @@
     from tb_rst_repair
     where repair_id = #{repairId,jdbcType=INTEGER}
   </select>
+
+  <!-- 查询售后维修集合 -->
+  <select id="listRepair" resultType="Repair" parameterType="Repair">
+    select
+      *
+    from
+      tb_rst_repair
+  </select>
+
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
     delete from tb_rst_repair
     where repair_id = #{repairId,jdbcType=INTEGER}

+ 6 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/ProductServiceImpl.java

@@ -2,6 +2,7 @@ package com.iamberry.rst.service.product;
 
 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.core.product.Gift;
 import com.iamberry.rst.core.product.OrderGift;
 import com.iamberry.rst.faces.product.ProductService;
@@ -111,4 +112,9 @@ public class ProductServiceImpl implements ProductService {
     public Product getProduce(String productId) {
         return productMapper.getProduce(productId);
     }
+
+    @Override
+    public List<ProductType> listProductType(ProductType productType) {
+        return productMapper.listProductType(productType);
+    }
 }

+ 8 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/ProductMapper.java

@@ -2,6 +2,7 @@ package com.iamberry.rst.service.product.mapper;
 
 import com.iamberry.rst.core.order.ProductColor;
 import com.iamberry.rst.core.order.Product;
+import com.iamberry.rst.core.order.ProductType;
 import com.iamberry.rst.core.product.OrderGift;
 
 import java.util.List;
@@ -39,4 +40,11 @@ public interface ProductMapper {
      * @return
      */
     Product getProduce(String productId);
+
+    /**
+     * 根据条件查询产品类型列表
+     * @param productType
+     * @return
+     */
+    List<ProductType> listProductType(ProductType productType);
 }

+ 13 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/product/mapper/productMapper.xml

@@ -52,6 +52,19 @@
         </where>
     </select>
 
+    <!-- 根据条件查询产品类型集合 -->
+    <select id="listProductType" parameterType="ProductType" resultType="ProductType">
+      select
+        *
+      from
+        tb_rst_product_type
+      <where>
+          <if test="typeStatus != null and typeStatus != ''">
+              type_status = #{typeStatus}
+          </if>
+      </where>
+    </select>
+
     <select id="listProduce"  resultType="product">
         select * from tb_rst_product_info where product_type = 1
     </select>

+ 5 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/SysServiceImpl.java

@@ -122,4 +122,9 @@ public class SysServiceImpl implements SysService {
     public List<Admin> listGetAdmin(Admin admin) {
         return sysMapper.listAdmin(admin);
     }
+
+    @Override
+    public List<Admin> listSelectAdmin(Admin admin) {
+        return sysMapper.listAdmin(admin);
+    }
 }

+ 3 - 0
watero-rst-service/src/main/java/com/iamberry/rst/service/sys/mapper/sysMapper.xml

@@ -138,6 +138,9 @@
 			<if test="adminId != null">
 				AND admin_id = #{adminId}
 			</if>
+			<if test="adminStatus != null">
+				AND admin_status = #{adminStatus}
+			</if>
 		</where>
 	</select>
 

+ 54 - 2
watero-rst-web/src/main/java/com/iamberry/rst/controllers/cm/AdminCustomerController.java

@@ -1,6 +1,13 @@
 package com.iamberry.rst.controllers.cm;
 
 import com.iamberry.rst.core.cm.*;
+import com.iamberry.rst.core.order.ProductType;
+import com.iamberry.rst.core.page.PagedResult;
+import com.iamberry.rst.core.sys.Admin;
+import com.iamberry.rst.faces.cm.*;
+import com.iamberry.rst.faces.product.ProductService;
+import com.iamberry.rst.faces.sys.SysService;
+import com.iamberry.rst.utils.StitchAttrUtil;
 import com.iamberry.rst.faces.address.AddressService;
 import com.iamberry.rst.faces.cm.CompanyInfoService;
 import com.iamberry.rst.faces.cm.SalesOrderService;
@@ -15,7 +22,9 @@ import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Created by wxm
@@ -26,12 +35,18 @@ public class AdminCustomerController {
 
     @Autowired
     private CompanyInfoService companyInfoService;
-
     @Autowired
     private StoreInfoService storeInfoService;
-
     @Autowired
     private SalesOrderService salesOrderService;
+    @Autowired
+    private CustomerService customerService;
+    @Autowired
+    private ProductService productService;
+    @Autowired
+    private SysService sysService;
+    @Autowired
+    private ComplaintTypeInfoService complaintTypeInfoService;
 
 
 
@@ -145,5 +160,42 @@ public class AdminCustomerController {
         }
     }
 
+    /**
+     * 分页查询客诉列表信息
+     * @param request
+     * @param customerInfo
+     * @param pageSize
+     * @param pageNO
+     * @param totalNum
+     * @return
+     * @throws Exception
+     */
+    @RequiresPermissions("customer:select:customer")
+    @RequestMapping("/select_customer_list")
+    public ModelAndView selectCustomerList(HttpServletRequest request,CustomerInfo customerInfo,
+                                           @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
+                                           @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
+                                           @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception{
+        ModelAndView mv = new ModelAndView("cm/customer/custome_list");
+        PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
+        if (totalNum != 0) {
+            pagedResult.setTotal(totalNum);
+        }
+        ProductType productType = new ProductType();
+        productType.setTypeStatus(1);
+        //查询产品类型集合
+        List<ProductType> typeList = productService.listProductType(productType);
+        //查询客诉类型集合
+        List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
+        //查询跟进客服集合
+        Admin admin = new Admin();
+        admin.setAdminStatus(1);
+        List<Admin> adminList = sysService.listSelectAdmin(admin);
+        mv.addObject("typeList",typeList);
+        mv.addObject("complaintTypeList",complaintTypeList);
+        mv.addObject("adminList",adminList);
+        StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
+        return mv;
+    }
 }
 

+ 1 - 1
watero-rst-web/src/main/resources/watero-rst-ioc.xml

@@ -26,7 +26,7 @@
     <aop:aspectj-autoproxy proxy-target-class="true"/>
 
 	<!-- 开启注解启动定时器 -->
-    <task:annotation-driven/>
+    <!--<task:annotation-driven/>-->
 
 	<!-- DataSource -->
 	<import resource="classpath:watero-rst-db.xml"/>

+ 98 - 30
watero-rst-web/src/main/webapp/WEB-INF/views/cm/customer/custome_list.ftl

@@ -30,35 +30,74 @@
 </nav>
 <div class="page-container">
     <div class="text-c">
-        <form action="${path}/admin/customer/_customer_list" method="post">
-            <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddCustomer();">增加Customer</button>
-            <#--<select class="my-select" name="produceId" style="height: 36px;width: 150px">
-                <option value ="">所有产品</option>
-                <#if produceList?? &&  (produceList?size > 0) >
-                    <#list produceList as produce>
-                        <option value ="${produce.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+        <form action="${path}/admin/customer/select_customer_list" method="post">
+            <button type="button" style="cursor:pointer; float: left;" class="my-btn-search" onclick="toAddCustomer();">新建客诉</button>
+            <input type="text" class="my-input"  style="width:100px;margin-right: 0px;" value="${customerId!}" placeholder="客户问题" id="customerId" name="customerId">
+            <input type="text" class="my-input"  style="width:100px;margin-right: 0px;" value="${customerId!}" placeholder="客户电话号码" id="customerId" name="customerId">
+            <input type="text" class="my-input"  style="width:100px;margin-right: 0px;" value="${customerId!}" placeholder="请输入问题描述" id="customerId" name="customerId">
+            <select class="my-select" name="customerSource" id="customerSource" style="height: 36px;width: 100px;margin: 0px;padding: 6px 10px 6px 15px;">
+                <option value="">来源</option>
+                <option value="1" <#if customerInfo.customerSourceType??><#if customerInfo.customerSourceType == "1" >selected="selected"</#if></#if>>400电话</option>
+                <option value="2" <#if customerInfo.customerSourceType??><#if customerInfo.customerSourceType == "2" >selected="selected"</#if></#if>>微信公众号</option>
+                <option value="3" <#if customerInfo.customerSourceType??><#if customerInfo.customerSourceType == "3" >selected="selected"</#if></#if>>其他</option>
+            </select>
+            <select class="my-select" name="typeId" id="typeId" style="height: 36px;width: 100px;margin: 0px;padding: 6px 10px 6px 15px;">
+                <option value ="">客诉产品</option>
+                <#if typeList?? &&  (typeList?size > 0) >
+                    <#list typeList as type>
+                        <option value ="${type.typeId!}" <#if customerInfo.typeId??><#if customerInfo.typeId ==type.typeId >selected="selected"</#if></#if>>${type.typeName!}</option>
                     </#list>
                 </#if>
-            </select>-->
-           <#-- <input type="text" class="my-input"  style="width:150px" value="${customerId!}" placeholder="Customer单编号" id="customerId" name="customerId">-->
+            </select>
+            <select class="my-select" name="produceId" style="height: 36px;width: 100px;margin: 0px;padding: 6px 10px 6px 15px;">
+                <option value ="">客诉类型</option>
+                <#if complaintTypeList?? &&  (complaintTypeList?size > 0) >
+                    <#list complaintTypeList as complaint>
+                        <option value ="${complaint.complaintId!}" <#if customerInfo.adminId??><#if customerInfo.adminId ==admin.adminId >selected="selected"</#if></#if>>${complaint.complaintClassName!}</option>
+                    </#list>
+                </#if>
+            <#--<#if typeList?? &&  (typeList?size > 0) >
+                <#list typeList as type>
+                    <option value ="${type.produceId!}" <#if produceId??><#if produceId ==produce.produceId >selected="selected"</#if></#if>>${produce.produceName!}</option>
+                </#list>
+            </#if>-->
+            </select>
+            <select class="my-select" name="customerIsVisit" style="height: 36px;width: 100px;margin: 0px;padding: 6px 10px 6px 15px;">
+                <option value ="">是否需要回访</option>
+                <option value ="1" <#if customerInfo.customerIsVisit??><#if customerInfo.customerIsVisit == "1" >selected="selected"</#if></#if>>不需要回访</option>
+                <option value ="2" <#if customerInfo.customerIsVisit??><#if customerInfo.customerIsVisit == "2" >selected="selected"</#if></#if>>需要回访</option>
+            </select>
+            <select class="my-select" name="adminId" style="height: 36px;width: 100px;margin: 0px;padding: 6px 10px 6px 15px;">
+                <option value ="">跟进客服</option>
+                <#if adminList?? &&  (adminList?size > 0) >
+                    <#list adminList as admin>
+                        <option value ="${admin.adminId!}" <#if customerInfo.adminId??><#if customerInfo.adminId ==admin.adminId >selected="selected"</#if></#if>>${admin.adminName!}</option>
+                    </#list>
+                </#if>
+            </select>
             <button type="submit" class="btn" style="background: #32a3d8;color: #fff;-webkit-transform:translateY(-5%);" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜索</button>
         </form>
     </div>
 
-    <#--<div class="mt-20">
+    <div class="mt-20">
         <table class="table table-border table-bordered table-bg table-hover table-sort">
         <thead>
         <tr class="text-c">
-            &lt;#&ndash;<th width="50">Customer编号</th>&ndash;&gt;
-            <th width="60">所属产品</th>
-            <th width="100">customer名称</th>
-            <th width="80">硬件版本</th>
-            <th width="80">零件总数量</th>
-            <th width="80">零件总成本(元)</th>
-            <th width="80">零件总重(g)</th>
-            <th width="100">备注</th>
-            <th width="80">最近修改时间</th>
-            <th width="80">添加时间</th>
+            <th width="50">跟进客服</th>
+            <th width="60">姓名</th>
+            <th width="100">电话</th>
+            <th width="80">来源入口</th>
+            <th width="80">客诉产品</th>
+            <th width="80">客诉类型</th>
+            <th width="80">问题类型</th>
+            <th width="100">问题简述</th>
+            <th width="80">销售</th>
+            <th width="80">购买日期</th>
+            <th width="80">区域</th>
+            <th width="80">TDS</th>
+            <th width="80">处理结果</th>
+            <th width="80">需要回访</th>
+            <th width="80">客诉时间</th>
             <th width="80">操作</th>
         </tr>
         </thead>
@@ -66,15 +105,44 @@
             <#if page.dataList?? &&  (page.dataList?size > 0) >
                     <#list page.dataList as customer>
                         <tr class="text-c">
-                            &lt;#&ndash;<td>${customer.customerId!''}</td>&ndash;&gt;
-                            <td>${customer.produceName!''}</td>
+                            <td>${customer.adminName!''}</td>
                             <td>${customer.customerName!''}</td>
-                            <td>${customer.customerVersion!''}</td>
-                            <td>${customer.componentsQuantity!'0'}</td>
-                            <td><#if customer.allComponentsCost?? >${customer.allComponentsCost/100}</#if></td>
-                            <td><#if customer.allComponentsWeight?? >${customer.allComponentsWeight}</#if></td>
-                            <td>${customer.customerRemarks!''}</td>
-                            <td>${(customer.customerUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                            <td>${customer.customerTel!''}</td>
+                            <td>
+                                <#if customer.customerSourceType == 1>
+                                    400电话
+                                <#elseif customer.customerSourceType == 2>
+                                    微信公众号
+                                <#elseif customer.customerSourceType == 3>
+                                    ${customer.customerSource!''}
+                                </#if>
+                            </td>
+                            <td>${customer.typeName!''}</td>
+                            <td>${customer.complaintClassName!''}</td>
+                            <td>${customer.smallClassName!''}</td>
+                            <td>${customer.describeTitle!''}</td>
+                            <td>${customer.companyName!''}-${customer.storeName!''}</td>
+                            <td>${(customer.salesTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
+                            <td>${customer.customerArea!''}</td>
+                            <td>进${customer.customerInTDS!'0'}出${customer.customerOutTDS!'0'}</td>
+                            <td>
+                                <#if customer.customerIsSolve == 1>
+                                    已解决
+                                <#elseif customer.customerIsSolve == 2>
+                                    未解决
+                                <#elseif customer.customerIsSolve == 3>
+                                    换新
+                                <#elseif customer.customerIsSolve == 4>
+                                    维修
+                                <#elseif customer.customerIsSolve == 5>
+                                    补发
+                                <#elseif customer.customerIsSolve == 6>
+                                    退货
+                                <#elseif customer.customerIsSolve == 7>
+                                    无理由退货
+                                </#if>
+                            </td>
+                            <td>${customer.customerIsVisit!''}</td>
                             <td>${(customer.customerCreateTime?string("yyyy-MM-dd HH:mm:ss"))!''}</td>
                             <td>
                                 <a style="text-decoration:none" href="javascript:void(0);" title="编辑" onclick="admin_update_customer(${customer.customerId!''})">
@@ -91,10 +159,10 @@
             </#if>
         </tbody>
     </table>
-    </div>-->
+    </div>
 </div>
 <tfoot>
-<#--<#include "/base/page_util.ftl">-->
+<#include "/base/page_util.ftl">
 </tfoot>
 <script>
     /**