package com.iamberry.rst.controllers.customer; import com.iamberry.rst.core.address.City; import com.iamberry.rst.core.address.District; 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; import com.iamberry.rst.faces.customer.CustomerBasicService; 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; import org.slf4j.LoggerFactory; 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.ArrayList; import java.util.List; /** * Created by Administrator on 2018/4/20. */ @Controller @RequestMapping("/admin/customerBasic") public class CustomerBasicController { private Logger logger = LoggerFactory.getLogger(CustomerBasicController.class); @Autowired private CustomerBasicService customerBasicService; @Autowired private SysService sysService; /** * 查询客户基本信息列表 * * @return * @author LJK * @date 时间 */ @RequiresPermissions("customerBasic:select_all:customerBasic") @RequestMapping("/listCustomerBasic") public ModelAndView listCustomerBasic(HttpServletRequest request, CustomerBasicInfo customerBasicInfo, @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("customer/customer_basic_list"); //获取登录员工id Integer adminId = AdminUtils.getLoginAdminId(); Admin admin = new Admin(); admin.setAdminId(adminId); admin = sysService.get(admin); if(admin.getAdminDept() == 7 || admin.getAdminDept() == 5){//管理部以及财务部 customerBasicInfo.setIsSelectAll(1); }else if(admin.getAdminDept() == 2){//销售部(业务员) customerBasicInfo.setIsSelectAll(2); } customerBasicInfo.setIdCreateBy(adminId); /* if(customerBasicInfo.getIsLookAll() != null || !customerBasicInfo.getIsLookAll().equals("")){ customerBasicInfo.setIdCreateBy(adminId); }*/ // 封装请求数据 PageRequest pageRequest = new PageRequest<>(customerBasicInfo, pageNO, pageSize, totalNum == 0); // 查询订单列表 PagedResult result = customerBasicService.listCustomerBasic(pageRequest); if (totalNum != 0) { result.setTotal(totalNum); } mv.addObject("adminId",adminId); StitchAttrUtil.setModelAndView(customerBasicInfo, mv, "/admin/customerBasic/listCustomerBasic", result); return mv; } /** * 修改客户状态为已删除 * * @param request * @return */ @ResponseBody @RequiresPermissions("customerBasic:update:customerBasic") @RequestMapping("/update_customerState") public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception { String customerId = request.getParameter("customerId"); if (!StringUtils.isNotEmpty(customerId)) { return new ResponseJson(500, "该客户信息不存在!", 500); } //根据id获取客诉信息 CustomerBasicInfo customerBasicInfo = new CustomerBasicInfo(); customerBasicInfo.setCustomerId(Integer.valueOf(customerId)); customerBasicInfo.setCustomerStatus(1); CustomerBasicInfo Info = customerBasicService.getCustomerBasic(customerBasicInfo); if (Info == null) { return new ResponseJson(500, "该客户信息不存在!", 500); } //修改客户状态 int num = customerBasicService.updateState(customerBasicInfo); if (num > 0) { return new ResponseJson(200, "删除成功!", 200); } else { return new ResponseJson(500, "删除失败!", 500); } } /** * 查询客户详情 * @param request * @return */ @ResponseBody @RequiresPermissions("customerBasic:select:customerBasic") @RequestMapping("/customer_Basic_Detail") public ModelAndView customerBasicDetail(HttpServletRequest request){ ModelAndView mv = new ModelAndView("customer/custome_basic_detail"); 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 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 listChannelDivisionInfo = customerBasicService.listChannelDivisionInfo(Integer.valueOf(customerId)); //渠道销售信息封装 /* List listChannelDivisionInfo = new ArrayList(); for (int i=0;i 0){ for(ChannelDivisionInfo channelDivisionInfo : listChannelDivisionInfo){ List 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 listChannelSale = new ArrayList(); for (int j=0;j 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 listChannelDivisionInfo = customerBasicService.listChannelDivisionInfo(Integer.valueOf(customerId)); List listChannelSaleInfo = customerBasicService.listChannelSaleInfo(channelSaleInfo); mv.addObject("customerBasicInfo",customerBasicInfo); mv.addObject("listDockedContactInfo",listDockedContactInfo); mv.addObject("billingInfo",billingInfo); mv.addObject("ticketOpeningInfo",ticketOpeningInfo); mv.addObject("listChannelSaleInfo",listChannelSaleInfo); 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 { Integer adminId = AdminUtils.getLoginAdminId(); JSONArray jsonArray; List dockedContactInfoList; List 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); customerBasicInfo.setIdCreateBy(adminId); JSONObject billingInfoJsonObject = JSONObject.fromObject(billingInfoJson); BillingInfo billingInfo = (BillingInfo) billingInfoJsonObject.toBean(billingInfoJsonObject,BillingInfo.class); JSONObject ticketOpeningInfoJsonObject = JSONObject.fromObject(ticketOpeningInfoJson); TicketOpeningInfo ticketOpeningInfo = (TicketOpeningInfo) ticketOpeningInfoJsonObject.toBean(ticketOpeningInfoJsonObject,TicketOpeningInfo.class); logger.info("-----------------saveCustomerBasicInfo...Start----------------------"); ResponseJson rjx = this.isValiData(customerBasicInfo); Boolean isSaveSuccess = false;//是否保存成功标识 if(rjx.getResultCode() == 500){ return rjx; } logger.info("-----------------添加客户信息开始----------------------"); try { customerBasicService.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:update: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 dockedContactInfoList = new ArrayList(); List channelSaleInfoList = new ArrayList(); 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; } /** * 修改客户信息 * @param request * @return * @throws Exception */ @ResponseBody @RequiresPermissions("customerBasic:update:customerBasic") @RequestMapping("/update_customer_info") public ResponseJson updateCustomerBasicInfo(HttpServletRequest request,String customerInfoJson,String dockedContactInfoListJson, String channelSaleInfoListJson,String billingInfoJson,String ticketOpeningInfoJson) throws Exception { Integer adminId = AdminUtils.getLoginAdminId(); JSONArray jsonArray; List dockedContactInfoList; List 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); customerBasicInfo.setIdCreateBy(adminId); JSONObject billingInfoJsonObject = JSONObject.fromObject(billingInfoJson); BillingInfo billingInfo = (BillingInfo) billingInfoJsonObject.toBean(billingInfoJsonObject,BillingInfo.class); JSONObject ticketOpeningInfoJsonObject = JSONObject.fromObject(ticketOpeningInfoJson); TicketOpeningInfo ticketOpeningInfo = (TicketOpeningInfo) ticketOpeningInfoJsonObject.toBean(ticketOpeningInfoJsonObject,TicketOpeningInfo.class); ResponseJson rjx = this.isValiData(customerBasicInfo); Boolean isSaveSuccess = false;//是否保存成功标识 if(rjx.getResultCode() == 500){ return rjx; } logger.info("-----------------修改客户信息开始----------------------"); try { customerBasicService.updateCustomerBasicInfo(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 */ @ResponseBody @RequestMapping(value = "/query_provinceList") public ResponseJson queryProvinceList(HttpServletRequest request) { //Province province = new Province(); String provinceId = request.getParameter("provinceListInfo"); List 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 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_districtList") public ResponseJson queryDistrictList(HttpServletRequest request) { //Province province = new Province(); String cityId = request.getParameter("cityId"); List districtList = null; districtList = customerBasicService.queryDistrictList(cityId); if (districtList != null || districtList.size() > 0) { ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("districtList", districtList); 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 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 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 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 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; } /** * 根据销售产品id和渠道id查询最低价 * * @return */ @ResponseBody @RequestMapping(value = "/getLowestPrice") public ResponseJson getLowestPrice(HttpServletRequest request,LowestPriceInfo lowestPriceInfo) { if(lowestPriceInfo != null){ lowestPriceInfo = customerBasicService.getLowestPrice(lowestPriceInfo); } if (lowestPriceInfo != null) { ResponseJson rj =new ResponseJson(200, "查询成功", 200); rj.addResponseKeyValue("lowestPriceInfo", lowestPriceInfo); return rj; } else { return new ResponseJson(500, "查询失败", 500); } } }