package com.iamberry.rst.controllers.cm; import com.iamberry.rst.core.cm.*; 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.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.AdminUtils; import com.iamberry.rst.utils.StitchAttrUtil; import com.iamberry.rst.faces.cm.CompanyInfoService; import com.iamberry.rst.faces.cm.SalesOrderService; import com.iamberry.rst.faces.cm.StoreInfoService; import com.iamberry.rst.utils.produceUtil; import com.iamberry.wechat.tools.ResponseJson; import org.apache.commons.lang.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import java.util.Date; import java.util.List; /** * Created by wxm */ @Controller @RequestMapping("/admin/customer") 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; @Autowired private VisitService visitService; @Autowired private QuestionDescribeService questionDescribeService; @Autowired private RenewedService renewedService; @Autowired private RepairService repairService; @Autowired private BackGoodsService backGoodsService; @Autowired private FittingsInfoService fittingsInfoService; /** * 获取客诉列表 * * @param request * @return */ @RequiresPermissions("customer:list:customer") @RequestMapping("/_customer_list") public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer, @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) { ModelAndView mv = new ModelAndView("cm/customer/custome_list"); // PagedResult pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0); // if (totalNum != 0) { // pagedResult.setTotal(totalNum); // } // //获取产品集合,用于页面选择产品 // List list = produceService.getProduceList(); // mv.addObject("produceList", list); // StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult); return mv; } /** * 跳转到添加客诉页面 * * @return */ @RequiresPermissions("customer:add:customer") @RequestMapping(value = "/to_add_customer") public ModelAndView toAddCustomer(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cm/customer/add_customer"); //获取产品集合,用于页面选择产品 // List produceList = produceService.getProduceList(); // mv.addObject("produceList", produceList); return mv; } /** * 搜索订单列表弹出框 * * @return */ @RequiresPermissions("customer:add:customer") @RequestMapping(value = "/select_order") public ModelAndView selectOrder(HttpServletRequest request) { ModelAndView mv = new ModelAndView("cm/customer/order_list"); //获取销售公司 List companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo()); mv.addObject("companyInfoList", companyInfoList); return mv; } /** * 获取店铺集合 * @param request * @param storeInfo * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping(value = "/select_storeInfo") public ResponseJson listStoreInfo(HttpServletRequest request,StoreInfo storeInfo) { storeInfo.setStoreStatus(1); List storeInfoList = storeInfoService.listStore(storeInfo); if (storeInfoList == null || storeInfoList.size() < 1) { return new ResponseJson(500, "查询失败", 500); } else { ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("storeInfoList", storeInfoList); return rj; } } /** * 获取订单集合 * @param request * @param salesOrder * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping(value = "/select_salesOrder") public ResponseJson listOrder(HttpServletRequest request,SalesOrder salesOrder) { List salesOrderList = salesOrderService.listSalesOrder(salesOrder); for(SalesOrder order : salesOrderList){ SalesOrderItem salesOrderItem = new SalesOrderItem(); salesOrderItem.setItemOrderId(order.getSalesId()); List salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem); order.setSalesOrderItemList(salesOrderItemList); } if (salesOrderList == null || salesOrderList.size() < 1) { return new ResponseJson(500, "查询失败", 500); } else { ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("salesOrderList", salesOrderList); return rj; } } /** * 分页查询客诉列表信息 * @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 pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0); if (totalNum != 0) { pagedResult.setTotal(totalNum); } ProductType productType = new ProductType(); productType.setTypeStatus(1); //查询产品类型集合 List typeList = productService.listProductType(productType); //查询客诉类型集合 List complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo()); //查询跟进客服集合 Admin admin = new Admin(); admin.setAdminStatus(1); List 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; } /** * 添加回访信息 * @param request * @param visit * @return */ @ResponseBody @RequiresPermissions("customer:add:visit") @RequestMapping("/add_visit_info") public ResponseJson addVisitInfo(HttpServletRequest request,Visit visit) throws Exception { String visitAdminId = request.getParameter("visitAdminId"); if (!StringUtils.isNotEmpty(visitAdminId)) { return new ResponseJson(500, "请选择回访人!", 500); } visit.setAdminId(Integer.parseInt(visitAdminId)); visit.setVisitStatus(1); visit.setVisitCreateTime(new Date()); int num = visitService.addVisitInfo(visit, visit.getCustomerId()); if (num > 0) { return new ResponseJson(200, "修改成功!", 200); } else { return new ResponseJson(500, "修改失败!", 500); } } /** * 修改客诉状态为已解决 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:update:customerIsSolve") @RequestMapping("/update_customerIsSolve") public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } //根据id获取客诉信息 CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId)); if (customer == null) { return new ResponseJson(500, "该客诉信息不存在!", 500); } if (customer.getCustomerIsSolve().intValue() != 2) { return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500); } CustomerInfo customerInfo = new CustomerInfo(); customerInfo.setCustomerId(Integer.parseInt(customerId)); customerInfo.setCustomerIsSolve(1); //修改客诉信息 int num = customerService.updateCustomerInfo(customerInfo); if (num > 0) { return new ResponseJson(200, "修改成功!", 200); } else { return new ResponseJson(500, "修改失败!", 500); } } /** * 查询客服 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping("/select_sys_admin") public ResponseJson selectSysAdmin(HttpServletRequest request) throws Exception { ResponseJson rj = new ResponseJson(200, "修改成功!", 200); Integer adminId = AdminUtils.getLoginAdminId(); Admin admin = new Admin(); List adminList = sysService.listSelectAdmin(admin); if (adminList.size()> 0) { rj.addResponseKeyValue("adminList",adminList); rj.addResponseKeyValue("adminId",adminId); return rj; } else { return new ResponseJson(500, "查询失败!", 500); } } /** * 查询产品类型 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping("/select_produce_type") public ResponseJson selectProduceType(HttpServletRequest request) throws Exception { ResponseJson rj = new ResponseJson(200, "修改成功!", 200); ProductType productType = new ProductType(); List productTypeList = productService.listProductType(productType); if (productTypeList != null && productTypeList.size()> 0) { rj.addResponseKeyValue("productTypeList",productTypeList); return rj; } else { return new ResponseJson(500, "查询失败!", 500); } } /** * 查询产品 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping("/select_produce") public ResponseJson selectProduce(HttpServletRequest request) { ResponseJson rj = new ResponseJson(200, "查询成功!", 200); Product product = new Product(); List productList = productService.listProduce(product); for(Product pro : productList){ ProductColor productColor = new ProductColor(); productColor.setColorProductId(pro.getProductId()); List productColorList = productService.listProduceColor(productColor); pro.setColorList(productColorList); } if (productList != null && productList.size()> 0) { rj.addResponseKeyValue("productList",productList); return rj; } else { return new ResponseJson(500, "查询失败!", 500); } } /** * 查询产品 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:add:customer") @RequestMapping("/select_produce_fittings") public ResponseJson selectProduceFittings(HttpServletRequest request,FittingsInfo fittingsInfo) { ResponseJson rj = new ResponseJson(200, "查询成功!", 200); List produceFittingsList = fittingsInfoService.listFittings(fittingsInfo); if (produceFittingsList != null && produceFittingsList.size()> 0) { rj.addResponseKeyValue("produceFittingsList",produceFittingsList); return rj; } else { return new ResponseJson(500, "查询失败!", 500); } } /** * 添加回访完成内容 * @param request * @param visit * @return */ @ResponseBody @RequiresPermissions("customer:update:visit") @RequestMapping("/update_visit_finish") public ResponseJson updateVisitFinish(HttpServletRequest request,Visit visit) throws Exception { String customerId = request.getParameter("finish_customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } visit.setCustomerId(Integer.parseInt(customerId)); visit.setVisitStatus(2); //修改回访信息内容 int num = visitService.updateVisit(visit); if (num > 0) { return new ResponseJson(200, "添加成功!", 200); } else { return new ResponseJson(500, "添加失败!", 500); } } /** * 获取回访信息详情 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:get:visit") @RequestMapping("/get_visit_info") public ResponseJson getVisitInfo(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } Visit visit = new Visit(); visit.setCustomerId(Integer.parseInt(customerId)); //查询回访信息集合 List visitList = visitService.listVisit(visit); if (visitList == null || visitList.size() == 0) { return new ResponseJson(500, "该客诉没有回访信息!", 500); } visit = visitList.get(0); ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("visit", visit); return rj; } /** * 获取问题描述信息 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:get:describe") @RequestMapping("/get_describe_info") public ResponseJson getDescribeInfo(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } QuestionDescribe describe = new QuestionDescribe(); describe.setCustomerId(Integer.parseInt(customerId)); //查询问题集合 List questionList = questionDescribeService.listQuestionDescribe(describe); if (questionList == null || questionList.size() == 0) { return new ResponseJson(500, "该客诉信息没有问题描述!", 500); } describe = questionList.get(0); ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("describe", describe); return rj; } /** * 获取换新详情 * @param request * @return */ @ResponseBody @RequiresPermissions("customer:get:renewed") @RequestMapping("/get_renewed_info") public ResponseJson getRenewedInfo(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } Renewed renewed = new Renewed(); renewed.setCustomerId(Integer.parseInt(customerId)); renewed.setRenewedState(1); //获取换新详情和检测信息 renewed = renewedService.getRenewedInfo(renewed); if (renewed == null) { return new ResponseJson(500, "该客诉没有换新信息!", 500); } else { ClosedFitting closedFitting = new ClosedFitting(); closedFitting.setRelationId(renewed.getRenewedId()); //获取寄回配件集合 List fittingList = renewedService.listClosedFitting(closedFitting); if (fittingList != null && fittingList.size() > 0) { renewed.setClosedFittings(fittingList); } ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("renewed", renewed); return rj; } } /** * 修改换新信息 * @param request * @param renewed * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customer:update:renewed") @RequestMapping("/update_renewed_info") public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception { if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) { return new ResponseJson(500, "该换新信息不能修改!", 500); } if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) { renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue()*100); } //修改换新信息 int num = renewedService.updateRenewedInfo(renewed); if (num > 0) { return new ResponseJson(200, "修改成功!", 200); } else { return new ResponseJson(500, "修改失败!", 500); } } /** * 进入修改维修页面 * @param request * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customer:update:repair") @RequestMapping("/_update_repair") public ResponseJson updateRepairUI(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } Repair repair = new Repair(); repair.setCustomerId(Integer.parseInt(customerId)); repair.setRepairState(1); //获取维修详情和品质检测信息 repair = repairService.getRepairInfo(repair); if (repair == null) { return new ResponseJson(500, "该客诉没有维修信息!", 500); } else { ClosedFitting closedFitting = new ClosedFitting(); closedFitting.setRelationId(repair.getRepairId()); //获取寄回配件集合 List fittingList = renewedService.listClosedFitting(closedFitting); if (fittingList != null && fittingList.size() > 0) { repair.setClosedFittings(fittingList); } ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("repair", repair); return rj; } } /** * 修改维修处理信息 * @param request * @param repair * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customer:update:repair") @RequestMapping("/update_repair_info") public ResponseJson updateRepairInfo(HttpServletRequest request, Repair repair) throws Exception { if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) { return new ResponseJson(500, "该换新信息不能修改!", 500); } String provinceNumber = request.getParameter("repairProvinceNumber"); String cityNumber = request.getParameter("repairCityNumber"); String areaNumber = request.getParameter("repairAreaNumber"); if (StringUtils.isNotEmpty(provinceNumber)) { repair.setProvinceNumber(Integer.parseInt(provinceNumber)); } if (StringUtils.isNotEmpty(cityNumber)) { repair.setCityNumber(Integer.parseInt(cityNumber)); } if (StringUtils.isNotEmpty(areaNumber)) { repair.setAreaNumber(Integer.parseInt(areaNumber)); } if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) { repair.setRepairBackPostage(repair.getRepairBackPostage().intValue()*100); } //修改维修信息 int num = repairService.updateRepairInfo(repair); if (num > 0) { return new ResponseJson(200, "修改成功!", 200); } else { return new ResponseJson(500, "修改失败!", 500); } } /** * 进入修改售后退货页面 * @param request * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customer:update:BackGoods") @RequestMapping("/_update_back_goods") public ResponseJson updateBackGoodsUI(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客诉信息不存在!", 500); } BackGoods backGoods = new BackGoods(); backGoods.setCustomerId(Integer.parseInt(customerId)); //获取售后退货信息 backGoods = customerService.getBackGoods(backGoods); if (backGoods == null) { return new ResponseJson(500, "该客诉没有售后退货信息!", 500); } else { ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("backGoods", backGoods); return rj; } } /** * 修改售后退货信息 * @param request * @param backGoods * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customer:update:BackGoods") @RequestMapping("/update_back_goods") public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception { if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) { return new ResponseJson(500, "该售后退货信息不能修改!", 500); } if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) { backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue()*100); } int num = backGoodsService.updateBackGoods(backGoods); if (num > 0) { return new ResponseJson(200, "修改成功!", 200); } else { return new ResponseJson(500, "修改失败!", 500); } } }