AdminCustomerController.java 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.cm.*;
  3. import com.iamberry.rst.core.order.ProductType;
  4. import com.iamberry.rst.core.page.PagedResult;
  5. import com.iamberry.rst.core.sys.Admin;
  6. import com.iamberry.rst.faces.cm.*;
  7. import com.iamberry.rst.faces.product.ProductService;
  8. import com.iamberry.rst.faces.sys.SysService;
  9. import com.iamberry.rst.utils.StitchAttrUtil;
  10. import com.iamberry.rst.faces.address.AddressService;
  11. import com.iamberry.rst.faces.cm.CompanyInfoService;
  12. import com.iamberry.rst.faces.cm.SalesOrderService;
  13. import com.iamberry.rst.faces.cm.StoreInfoService;
  14. import com.iamberry.wechat.tools.ResponseJson;
  15. import org.apache.commons.lang.StringUtils;
  16. import org.apache.shiro.authz.annotation.RequiresPermissions;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.stereotype.Controller;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RequestParam;
  21. import org.springframework.web.bind.annotation.ResponseBody;
  22. import org.springframework.web.servlet.ModelAndView;
  23. import javax.servlet.http.HttpServletRequest;
  24. import java.util.Date;
  25. import java.util.HashMap;
  26. import java.util.List;
  27. import java.util.Map;
  28. /**
  29. * Created by wxm
  30. */
  31. @Controller
  32. @RequestMapping("/admin/customer")
  33. public class AdminCustomerController {
  34. @Autowired
  35. private CompanyInfoService companyInfoService;
  36. @Autowired
  37. private StoreInfoService storeInfoService;
  38. @Autowired
  39. private SalesOrderService salesOrderService;
  40. @Autowired
  41. private CustomerService customerService;
  42. @Autowired
  43. private ProductService productService;
  44. @Autowired
  45. private SysService sysService;
  46. @Autowired
  47. private ComplaintTypeInfoService complaintTypeInfoService;
  48. @Autowired
  49. private VisitService visitService;
  50. @Autowired
  51. private QuestionDescribeService questionDescribeService;
  52. public AdminCustomerController() {
  53. }
  54. /**
  55. * 获取客诉列表
  56. *
  57. * @param request
  58. * @return
  59. */
  60. @RequiresPermissions("customer:list:customer")
  61. @RequestMapping("/_customer_list")
  62. public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer,
  63. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  64. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  65. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  66. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  67. // PagedResult<Customer> pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0);
  68. // if (totalNum != 0) {
  69. // pagedResult.setTotal(totalNum);
  70. // }
  71. // //获取产品集合,用于页面选择产品
  72. // List<Produce> list = produceService.getProduceList();
  73. // mv.addObject("produceList", list);
  74. // StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult);
  75. return mv;
  76. }
  77. /**
  78. * 跳转到添加客诉页面
  79. *
  80. * @return
  81. */
  82. @RequiresPermissions("customer:add:customer")
  83. @RequestMapping(value = "/to_add_customer")
  84. public ModelAndView toAddCustomer(HttpServletRequest request) {
  85. ModelAndView mv = new ModelAndView("cm/customer/add_customer");
  86. //获取产品集合,用于页面选择产品
  87. // List<Produce> produceList = produceService.getProduceList();
  88. // mv.addObject("produceList", produceList);
  89. return mv;
  90. }
  91. /**
  92. * 搜索订单列表弹出框
  93. *
  94. * @return
  95. */
  96. @RequiresPermissions("customer:add:customer")
  97. @RequestMapping(value = "/select_order")
  98. public ModelAndView selectOrder(HttpServletRequest request) {
  99. ModelAndView mv = new ModelAndView("cm/customer/order_list");
  100. //获取销售公司
  101. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  102. mv.addObject("companyInfoList", companyInfoList);
  103. return mv;
  104. }
  105. /**
  106. * 获取店铺集合
  107. * @param request
  108. * @param storeInfo
  109. * @return
  110. */
  111. @ResponseBody
  112. @RequiresPermissions("customer:add:customer")
  113. @RequestMapping(value = "/select_storeInfo")
  114. public ResponseJson listStoreInfo(HttpServletRequest request,StoreInfo storeInfo) {
  115. storeInfo.setStoreStatus(1);
  116. List<StoreInfo> storeInfoList = storeInfoService.listStore(storeInfo);
  117. if (storeInfoList == null || storeInfoList.size() < 1) {
  118. return new ResponseJson(500, "查询失败", 500);
  119. } else {
  120. ResponseJson rj =new ResponseJson(200, "查询成功", 200);
  121. rj.addResponseKeyValue("storeInfoList", storeInfoList);
  122. return rj;
  123. }
  124. }
  125. /**
  126. * 获取订单集合
  127. * @param request
  128. * @param salesOrder
  129. * @return
  130. */
  131. @ResponseBody
  132. @RequiresPermissions("customer:add:customer")
  133. @RequestMapping(value = "/select_salesOrder")
  134. public ResponseJson listOrder(HttpServletRequest request,SalesOrder salesOrder) {
  135. List<SalesOrder> salesOrderList = salesOrderService.listSalesOrder(salesOrder);
  136. for(SalesOrder order : salesOrderList){
  137. SalesOrderItem salesOrderItem = new SalesOrderItem();
  138. salesOrderItem.setItemOrderId(order.getSalesId());
  139. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  140. order.setSalesOrderItemList(salesOrderItemList);
  141. }
  142. if (salesOrderList == null || salesOrderList.size() < 1) {
  143. return new ResponseJson(500, "查询失败", 500);
  144. } else {
  145. ResponseJson rj =new ResponseJson(200, "查询成功", 200);
  146. rj.addResponseKeyValue("salesOrderList", salesOrderList);
  147. return rj;
  148. }
  149. }
  150. /**
  151. * 分页查询客诉列表信息
  152. * @param request
  153. * @param customerInfo
  154. * @param pageSize
  155. * @param pageNO
  156. * @param totalNum
  157. * @return
  158. * @throws Exception
  159. */
  160. @RequiresPermissions("customer:select:customer")
  161. @RequestMapping("/select_customer_list")
  162. public ModelAndView selectCustomerList(HttpServletRequest request,CustomerInfo customerInfo,
  163. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  164. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  165. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception{
  166. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  167. PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
  168. if (totalNum != 0) {
  169. pagedResult.setTotal(totalNum);
  170. }
  171. ProductType productType = new ProductType();
  172. productType.setTypeStatus(1);
  173. //查询产品类型集合
  174. List<ProductType> typeList = productService.listProductType(productType);
  175. //查询客诉类型集合
  176. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  177. //查询跟进客服集合
  178. Admin admin = new Admin();
  179. admin.setAdminStatus(1);
  180. List<Admin> adminList = sysService.listSelectAdmin(admin);
  181. mv.addObject("typeList",typeList);
  182. mv.addObject("complaintTypeList",complaintTypeList);
  183. mv.addObject("adminList",adminList);
  184. StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
  185. return mv;
  186. }
  187. /**
  188. * 添加回访信息
  189. * @param request
  190. * @param visit
  191. * @return
  192. */
  193. @ResponseBody
  194. @RequiresPermissions("customer:add:visit")
  195. @RequestMapping("/add_visit_info")
  196. public ResponseJson addVisitInfo(HttpServletRequest request,Visit visit) {
  197. String visitAdminId = request.getParameter("visitAdminId");
  198. if (!StringUtils.isNotEmpty(visitAdminId)) {
  199. return new ResponseJson(500, "请选择回访人!", 500);
  200. }
  201. visit.setAdminId(Integer.parseInt(visitAdminId));
  202. visit.setVisitStatus(1);
  203. visit.setVisitCreateTime(new Date());
  204. int num = visitService.addVisitInfo(visit, visit.getCustomerId());
  205. if (num > 0) {
  206. return new ResponseJson(200, "修改成功!", 200);
  207. } else {
  208. return new ResponseJson(500, "修改失败!", 500);
  209. }
  210. }
  211. /**
  212. * 修改客诉状态为已解决
  213. * @param request
  214. * @return
  215. */
  216. @ResponseBody
  217. @RequiresPermissions("customer:update:customerIsSolve")
  218. @RequestMapping("/update_customerIsSolve")
  219. public ResponseJson updateCustomerIsSolve(HttpServletRequest request) {
  220. String customerId = request.getParameter("customerId");
  221. if (!StringUtils.isNotEmpty(customerId)) {
  222. return new ResponseJson(500, "该客诉信息不存在!", 500);
  223. }
  224. //根据id获取客诉信息
  225. CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId));
  226. if (customer == null) {
  227. return new ResponseJson(500, "该客诉信息不存在!", 500);
  228. }
  229. if (customer.getCustomerIsSolve().intValue() != 2) {
  230. return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500);
  231. }
  232. CustomerInfo customerInfo = new CustomerInfo();
  233. customerInfo.setCustomerId(Integer.parseInt(customerId));
  234. customerInfo.setCustomerIsSolve(1);
  235. //修改客诉信息
  236. int num = customerService.updateCustomerInfo(customerInfo);
  237. if (num > 0) {
  238. return new ResponseJson(200, "修改成功!", 200);
  239. } else {
  240. return new ResponseJson(500, "修改失败!", 500);
  241. }
  242. }
  243. /**
  244. * 添加回访完成内容
  245. * @param request
  246. * @param visit
  247. * @return
  248. */
  249. @ResponseBody
  250. @RequiresPermissions("customer:update:visit")
  251. @RequestMapping("/update_visit_finish")
  252. public ResponseJson updateVisitFinish(HttpServletRequest request,Visit visit) {
  253. String customerId = request.getParameter("finish_customerId");
  254. if (!StringUtils.isNotEmpty(customerId)) {
  255. return new ResponseJson(500, "该客诉信息不存在!", 500);
  256. }
  257. visit.setCustomerId(Integer.parseInt(customerId));
  258. visit.setVisitStatus(2);
  259. //修改回访信息内容
  260. int num = visitService.updateVisit(visit);
  261. if (num > 0) {
  262. return new ResponseJson(200, "添加成功!", 200);
  263. } else {
  264. return new ResponseJson(500, "添加失败!", 500);
  265. }
  266. }
  267. /**
  268. * 获取回访信息详情
  269. * @param request
  270. * @return
  271. */
  272. @ResponseBody
  273. @RequiresPermissions("customer:get:visit")
  274. @RequestMapping("/get_visit_info")
  275. public ResponseJson getVisitInfo(HttpServletRequest request) {
  276. String customerId = request.getParameter("customerId");
  277. if (!StringUtils.isNotEmpty(customerId)) {
  278. return new ResponseJson(500, "该客诉信息不存在!", 500);
  279. }
  280. Visit visit = new Visit();
  281. visit.setCustomerId(Integer.parseInt(customerId));
  282. //查询回访信息集合
  283. List<Visit> visitList = visitService.listVisit(visit);
  284. if (visitList == null || visitList.size() == 0) {
  285. return new ResponseJson(500, "该客诉没有回访信息!", 500);
  286. }
  287. visit = visitList.get(0);
  288. ResponseJson rj =new ResponseJson(200, "查询成功", 200);
  289. rj.addResponseKeyValue("visit", visit);
  290. return rj;
  291. }
  292. /**
  293. * 获取问题描述信息
  294. * @param request
  295. * @return
  296. */
  297. @ResponseBody
  298. @RequiresPermissions("customer:get:describe")
  299. @RequestMapping("/get_describe_info")
  300. public ResponseJson getDescribeInfo(HttpServletRequest request) {
  301. String customerId = request.getParameter("customerId");
  302. if (!StringUtils.isNotEmpty(customerId)) {
  303. return new ResponseJson(500, "该客诉信息不存在!", 500);
  304. }
  305. QuestionDescribe describe = new QuestionDescribe();
  306. describe.setCustomerId(Integer.parseInt(customerId));
  307. //查询问题集合
  308. List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
  309. if (questionList == null || questionList.size() == 0) {
  310. return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
  311. }
  312. describe = questionList.get(0);
  313. ResponseJson rj =new ResponseJson(200, "查询成功", 200);
  314. rj.addResponseKeyValue("describe", describe);
  315. return rj;
  316. }
  317. }