AdminCustomerController.java 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.cm.*;
  3. import com.iamberry.rst.core.order.*;
  4. import com.iamberry.rst.core.page.PagedResult;
  5. import com.iamberry.rst.core.pts.ProcessNode;
  6. import com.iamberry.rst.core.pts.ProduceProcess;
  7. import com.iamberry.rst.core.sys.Admin;
  8. import com.iamberry.rst.faces.cm.*;
  9. import com.iamberry.rst.faces.order.EfastOrderService;
  10. import com.iamberry.rst.faces.product.ProductService;
  11. import com.iamberry.rst.faces.sms.SmsService;
  12. import com.iamberry.rst.faces.sys.SysService;
  13. import com.iamberry.rst.utils.AdminUtils;
  14. import com.iamberry.rst.utils.OrderNoUtil;
  15. import com.iamberry.rst.utils.StitchAttrUtil;
  16. import com.iamberry.wechat.tools.ResponseJson;
  17. import net.sf.json.JSONArray;
  18. import net.sf.json.JSONObject;
  19. import org.apache.commons.lang.StringUtils;
  20. import org.apache.shiro.authz.annotation.RequiresPermissions;
  21. import org.springframework.beans.factory.annotation.Autowired;
  22. import org.springframework.stereotype.Controller;
  23. import org.springframework.web.bind.annotation.RequestMapping;
  24. import org.springframework.web.bind.annotation.RequestParam;
  25. import org.springframework.web.bind.annotation.ResponseBody;
  26. import org.springframework.web.servlet.ModelAndView;
  27. import javax.servlet.http.HttpServletRequest;
  28. import java.text.MessageFormat;
  29. import java.util.*;
  30. import static com.iamberry.rst.util.SmsConfig.CONFIRM_TEXT;
  31. /**
  32. * Created by wxm
  33. */
  34. @Controller
  35. @RequestMapping("/admin/customer")
  36. public class AdminCustomerController {
  37. @Autowired
  38. private CompanyInfoService companyInfoService;
  39. @Autowired
  40. private StoreInfoService storeInfoService;
  41. @Autowired
  42. private SalesOrderService salesOrderService;
  43. @Autowired
  44. private CustomerService customerService;
  45. @Autowired
  46. private ProductService productService;
  47. @Autowired
  48. private SysService sysService;
  49. @Autowired
  50. private ComplaintTypeInfoService complaintTypeInfoService;
  51. @Autowired
  52. private VisitService visitService;
  53. @Autowired
  54. private QuestionDescribeService questionDescribeService;
  55. @Autowired
  56. private RenewedService renewedService;
  57. @Autowired
  58. private RepairService repairService;
  59. @Autowired
  60. private BackGoodsService backGoodsService;
  61. @Autowired
  62. private FittingsInfoService fittingsInfoService;
  63. @Autowired
  64. private ReissueService reissueService;
  65. @Autowired
  66. private EfastOrderService efastOrderService;
  67. @Autowired
  68. private NoreasonBackService noreasonBackService;
  69. @Autowired
  70. private ComplaintQuestionInfoService complaintQuestionInfoService;
  71. @Autowired
  72. private SmsService smsService;
  73. private Object lock = new Object();
  74. /**
  75. * 获取客诉列表
  76. *
  77. * @param request
  78. * @return
  79. */
  80. @RequiresPermissions("customer:list:customer")
  81. @RequestMapping("/_customer_list")
  82. public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer,
  83. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  84. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  85. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  86. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  87. // PagedResult<Customer> pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0);
  88. // if (totalNum != 0) {
  89. // pagedResult.setTotal(totalNum);
  90. // }
  91. // //获取产品集合,用于页面选择产品
  92. // List<Produce> list = produceService.getProduceList();
  93. // mv.addObject("produceList", list);
  94. // StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult);
  95. return mv;
  96. }
  97. /**
  98. * 跳转到添加客诉页面
  99. *
  100. * @return
  101. */
  102. @RequiresPermissions("customer:add:customer")
  103. @RequestMapping(value = "/to_add_customer")
  104. public ModelAndView toAddCustomer(HttpServletRequest request) {
  105. ModelAndView mv = new ModelAndView("cm/customer/add_customer");
  106. //获取产品集合,用于页面选择产品
  107. // List<Produce> produceList = produceService.getProduceList();
  108. // mv.addObject("produceList", produceList);
  109. return mv;
  110. }
  111. /**
  112. * 搜索订单列表弹出框
  113. *
  114. * @return
  115. */
  116. @RequiresPermissions("customer:add:customer")
  117. @RequestMapping(value = "/select_order")
  118. public ModelAndView selectOrder(HttpServletRequest request) {
  119. ModelAndView mv = new ModelAndView("cm/customer/order_list");
  120. //获取销售公司
  121. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  122. mv.addObject("companyInfoList", companyInfoList);
  123. return mv;
  124. }
  125. /**
  126. * 添加订单列表弹出框
  127. *
  128. * @return
  129. */
  130. @RequiresPermissions("customer:add:customer")
  131. @RequestMapping(value = "/add_order")
  132. public ModelAndView addOder(HttpServletRequest request) {
  133. ModelAndView mv = new ModelAndView("cm/customer/order_add");
  134. return mv;
  135. }
  136. /**
  137. * 添加订单
  138. *
  139. * @return
  140. */
  141. @ResponseBody
  142. @RequiresPermissions("customer:add:customer")
  143. @RequestMapping(value = "/add_order_info")
  144. public ResponseJson addOrderInfo(HttpServletRequest request,SalesOrder salesOrder,String itemJson)throws Exception {
  145. List<SalesOrderItem> list = new ArrayList<>();
  146. JSONArray jsonArray = JSONArray.fromObject(itemJson);
  147. list = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
  148. Integer salesAmount = 0;
  149. for(int i=0;i<list.size();i++){
  150. SalesOrderItem salesOrderItem = list.get(i);
  151. Product product = productService.getProductById(salesOrderItem.getItemProductId());
  152. ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemProductId());
  153. salesOrderItem.setItemProductType(product.getProductType());
  154. salesOrderItem.setItemProductName(product.getProductName());
  155. salesOrderItem.setItemProductPic(productColor.getColorPicture());
  156. salesOrderItem.setItemProductColor(productColor.getColorName());
  157. salesOrderItem.setItemColorBar(productColor.getColorBar());
  158. salesOrderItem.setItemProductPrice(productColor.getColorPrice());
  159. salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
  160. salesOrderItem.setItemIsSource(1);
  161. salesAmount += productColor.getColorDiscount();
  162. }
  163. salesOrder.setSalesOpenId("0");
  164. salesOrder.setSalesAmount(salesAmount);
  165. salesOrder.setSalesPayMoney(salesAmount);
  166. salesOrder.setSalesPayStatus(2);
  167. salesOrder.setSalesShippingStatus(5);
  168. salesOrder.setSalesStatus(0);
  169. salesOrder.setSalesOrderStatus(1);
  170. salesOrder.setSalesCreateTime(new Date());
  171. //salesOrder.setSalesPayTime(new Date());
  172. salesOrder.setSalesShippingFee(0);
  173. salesOrder.setSalesLastMoney(salesAmount);
  174. salesOrder.setSalesWaitMoney(0);
  175. salesOrder.setSalesPayMoney(salesAmount);
  176. salesOrder.setSalesSalesTime(new Date());
  177. salesOrder.setSalesDiscountMoney(salesAmount);
  178. salesOrder.setSalesPledgeMoney(0);
  179. salesOrder.setSalesRemainDeposit(0);
  180. salesOrder.setSalesType(1);
  181. Integer adminId = AdminUtils.getLoginAdminId();
  182. String orderCode = OrderNoUtil.createOrderCode(adminId);
  183. salesOrder.setSalesDealCode(orderCode);
  184. salesOrder.setSalesOrderId(orderCode);
  185. salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
  186. Map<String,Object> map = customerService.sendEfastOrder(salesOrder);
  187. if(map.get("status") == 1){
  188. salesOrder.setSalesOrderId((String) map.get("EfastOrderId"));
  189. }else{
  190. return new ResponseJson(500, "添加订单失败!", 500);
  191. }
  192. Integer orderId =salesOrder.getSalesId();
  193. ResponseJson rj = new ResponseJson(200, "添加成功", 200);
  194. rj.addResponseKeyValue("orderId", orderId);
  195. return rj;
  196. }
  197. /**
  198. * 获取店铺集合
  199. *
  200. * @param request
  201. * @param storeInfo
  202. * @return
  203. */
  204. @ResponseBody
  205. @RequiresPermissions("customer:add:customer")
  206. @RequestMapping(value = "/select_storeInfo")
  207. public ResponseJson listStoreInfo(HttpServletRequest request, StoreInfo storeInfo) {
  208. storeInfo.setStoreStatus(1);
  209. List<StoreInfo> storeInfoList = storeInfoService.listStore(storeInfo);
  210. if (storeInfoList == null || storeInfoList.size() < 1) {
  211. return new ResponseJson(500, "查询失败", 500);
  212. } else {
  213. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  214. rj.addResponseKeyValue("storeInfoList", storeInfoList);
  215. return rj;
  216. }
  217. }
  218. /**
  219. * 获取订单集合
  220. *
  221. * @param request
  222. * @param salesOrder
  223. * @return
  224. */
  225. @ResponseBody
  226. @RequiresPermissions("customer:add:customer")
  227. @RequestMapping(value = "/select_salesOrder")
  228. public ResponseJson listOrder(HttpServletRequest request, SalesOrder salesOrder) {
  229. List<SalesOrder> salesOrderList = salesOrderService.listSalesOrder(salesOrder);
  230. for (SalesOrder order : salesOrderList) {
  231. SalesOrderItem salesOrderItem = new SalesOrderItem();
  232. salesOrderItem.setItemOrderId(order.getSalesId());
  233. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  234. order.setSalesOrderItemList(salesOrderItemList);
  235. }
  236. if (salesOrderList == null || salesOrderList.size() < 1) {
  237. return new ResponseJson(500, "查询失败", 500);
  238. } else {
  239. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  240. rj.addResponseKeyValue("salesOrderList", salesOrderList);
  241. return rj;
  242. }
  243. }
  244. /**
  245. * 分页查询客诉列表信息
  246. *
  247. * @param request
  248. * @param customerInfo
  249. * @param pageSize
  250. * @param pageNO
  251. * @param totalNum
  252. * @return
  253. * @throws Exception
  254. */
  255. @RequiresPermissions("customer:select:customer")
  256. @RequestMapping("/select_customer_list")
  257. public ModelAndView selectCustomerList(HttpServletRequest request, CustomerInfo customerInfo,
  258. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  259. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  260. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  261. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  262. PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
  263. if (totalNum != 0) {
  264. pagedResult.setTotal(totalNum);
  265. }
  266. ProductType productType = new ProductType();
  267. productType.setTypeStatus(1);
  268. //查询产品类型集合
  269. List<ProductType> typeList = productService.listProductType(productType);
  270. //查询客诉类型集合
  271. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  272. //查询跟进客服集合
  273. Admin admin = new Admin();
  274. admin.setAdminStatus(1);
  275. List<Admin> adminList = sysService.listSelectAdmin(admin);
  276. //获取登录人id
  277. Integer loginAdminId = AdminUtils.getLoginAdminId();
  278. mv.addObject("loginAdminId",loginAdminId);
  279. mv.addObject("typeList", typeList);
  280. mv.addObject("complaintTypeList", complaintTypeList);
  281. mv.addObject("adminList", adminList);
  282. customerInfo.setVisit(null);
  283. customerInfo.setCustomerCommon(null);
  284. StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
  285. return mv;
  286. }
  287. /**
  288. * 进入客诉基本信息页面
  289. *
  290. * @param request
  291. * @return
  292. * @throws Exception
  293. */
  294. @RequiresPermissions("customer:select:customer")
  295. @RequestMapping("/_customer_info")
  296. public ModelAndView toCustomerInfo(HttpServletRequest request) throws Exception {
  297. ModelAndView mv = new ModelAndView("cm/customer/custome_detail");
  298. String customerId = request.getParameter("customerId");
  299. mv.addObject("customerId", customerId);
  300. return mv;
  301. }
  302. /**
  303. * 查询客诉基本信息
  304. *
  305. * @param request
  306. * @return
  307. * @throws Exception
  308. */
  309. @ResponseBody
  310. @RequiresPermissions("customer:select:customer")
  311. @RequestMapping("/get_customer_info")
  312. public ResponseJson getCustomerInfo(HttpServletRequest request) throws Exception {
  313. String customerId = request.getParameter("customerId");
  314. if (!StringUtils.isNotEmpty(customerId)) {
  315. return new ResponseJson(500, "该客诉信息不存在!", 500);
  316. }
  317. CustomerInfo customerInfo = new CustomerInfo();
  318. customerInfo.setCustomerId(Integer.parseInt(customerId));
  319. Map<String, Object> map = customerService.getCustomerInfo(customerInfo);
  320. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  321. rj.addResponseKeyValue("customerCommon", map.get("customerCommon"));
  322. rj.addResponseKeyValue("customer", map.get("customer"));
  323. rj.addResponseKeyValue("salesOrder", map.get("salesOrder"));
  324. return rj;
  325. }
  326. /**
  327. * 进入添加回访页面
  328. *
  329. * @param request
  330. * @return
  331. * @throws Exception
  332. */
  333. @RequiresPermissions("customer:select:customer")
  334. @RequestMapping("/_add_visit")
  335. public ModelAndView toAddVisit(HttpServletRequest request) throws Exception {
  336. ModelAndView mv = new ModelAndView("cm/customer/add_visit");
  337. String customerId = request.getParameter("customerId");
  338. //查询跟进客服集合
  339. Admin admin = new Admin();
  340. admin.setAdminStatus(1);
  341. List<Admin> adminList = sysService.listSelectAdmin(admin);
  342. //获取登录人id
  343. Integer loginAdminId = AdminUtils.getLoginAdminId();
  344. mv.addObject("loginAdminId",loginAdminId);
  345. mv.addObject("customerId", customerId);
  346. mv.addObject("adminList", adminList);
  347. return mv;
  348. }
  349. /**
  350. * 添加回访信息
  351. *
  352. * @param request
  353. * @param visit
  354. * @return
  355. */
  356. @ResponseBody
  357. @RequiresPermissions("customer:add:visit")
  358. @RequestMapping("/add_visit_info")
  359. public ResponseJson addVisitInfo(HttpServletRequest request, Visit visit) throws Exception {
  360. String visitAdminId = request.getParameter("visitAdminId");
  361. if (!StringUtils.isNotEmpty(visitAdminId)) {
  362. return new ResponseJson(500, "请选择回访人!", 500);
  363. }
  364. visit.setAdminId(Integer.parseInt(visitAdminId));
  365. visit.setVisitStatus(1);
  366. visit.setVisitCreateTime(new Date());
  367. int num = visitService.addVisitInfo(visit, visit.getCustomerId());
  368. if (num > 0) {
  369. return new ResponseJson(200, "修改成功!", 200);
  370. } else {
  371. return new ResponseJson(500, "修改失败!", 500);
  372. }
  373. }
  374. /**
  375. * 修改客诉状态为已解决
  376. *
  377. * @param request
  378. * @return
  379. */
  380. @ResponseBody
  381. @RequiresPermissions("customer:update:customerIsSolve")
  382. @RequestMapping("/update_customerIsSolve")
  383. public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception {
  384. String customerId = request.getParameter("customerId");
  385. if (!StringUtils.isNotEmpty(customerId)) {
  386. return new ResponseJson(500, "该客诉信息不存在!", 500);
  387. }
  388. //根据id获取客诉信息
  389. CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId));
  390. if (customer == null) {
  391. return new ResponseJson(500, "该客诉信息不存在!", 500);
  392. }
  393. if (customer.getCustomerIsSolve().intValue() != 2) {
  394. return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500);
  395. }
  396. CustomerInfo customerInfo = new CustomerInfo();
  397. customerInfo.setCustomerId(Integer.parseInt(customerId));
  398. customerInfo.setCustomerIsSolve(1);
  399. //修改客诉信息
  400. int num = customerService.updateCustomerInfo(customerInfo);
  401. if (num > 0) {
  402. return new ResponseJson(200, "修改成功!", 200);
  403. } else {
  404. return new ResponseJson(500, "修改失败!", 500);
  405. }
  406. }
  407. /**
  408. * 查询客服
  409. *
  410. * @param request
  411. * @return
  412. */
  413. @ResponseBody
  414. @RequiresPermissions("customer:add:customer")
  415. @RequestMapping("/select_sys_admin")
  416. public ResponseJson selectSysAdmin(HttpServletRequest request) throws Exception {
  417. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  418. Integer adminId = AdminUtils.getLoginAdminId();
  419. Admin admin = new Admin();
  420. List<Admin> adminList = sysService.listSelectAdmin(admin);
  421. if (adminList.size() > 0) {
  422. rj.addResponseKeyValue("adminList", adminList);
  423. rj.addResponseKeyValue("adminId", adminId);
  424. return rj;
  425. } else {
  426. return new ResponseJson(500, "查询失败!", 500);
  427. }
  428. }
  429. /**
  430. * 查询产品类型
  431. *
  432. * @param request
  433. * @return
  434. */
  435. @ResponseBody
  436. @RequiresPermissions("customer:add:customer")
  437. @RequestMapping("/select_produce_type")
  438. public ResponseJson selectProduceType(HttpServletRequest request) throws Exception {
  439. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  440. ProductType productType = new ProductType();
  441. List<ProductType> productTypeList = productService.listProductType(productType);
  442. if (productTypeList != null && productTypeList.size() > 0) {
  443. rj.addResponseKeyValue("productTypeList", productTypeList);
  444. return rj;
  445. } else {
  446. return new ResponseJson(500, "查询失败!", 500);
  447. }
  448. }
  449. /**
  450. * 查询产品
  451. *
  452. * @param request
  453. * @return
  454. */
  455. @ResponseBody
  456. @RequiresPermissions("customer:add:customer")
  457. @RequestMapping("/select_produce")
  458. public ResponseJson selectProduce(HttpServletRequest request) {
  459. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  460. Product product = new Product();
  461. List<Product> productList = productService.listProduce(product);
  462. for (Product pro : productList) {
  463. ProductColor productColor = new ProductColor();
  464. productColor.setColorProductId(pro.getProductId());
  465. List<ProductColor> productColorList = productService.listProduceColor(productColor);
  466. pro.setColorList(productColorList);
  467. }
  468. if (productList != null && productList.size() > 0) {
  469. rj.addResponseKeyValue("productList", productList);
  470. return rj;
  471. } else {
  472. return new ResponseJson(500, "查询失败!", 500);
  473. }
  474. }
  475. /**
  476. * 查询产品
  477. *
  478. * @param request
  479. * @return
  480. */
  481. @ResponseBody
  482. @RequiresPermissions("customer:add:customer")
  483. @RequestMapping("/select_produce_fittings")
  484. public ResponseJson selectProduceFittings(HttpServletRequest request, FittingsInfo fittingsInfo) {
  485. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  486. List<FittingsInfo> produceFittingsList = fittingsInfoService.listFittings(fittingsInfo);
  487. if (produceFittingsList != null && produceFittingsList.size() > 0) {
  488. rj.addResponseKeyValue("produceFittingsList", produceFittingsList);
  489. return rj;
  490. } else {
  491. return new ResponseJson(500, "查询失败!", 500);
  492. }
  493. }
  494. /**
  495. * 添加客诉
  496. *
  497. * @param request
  498. * @return
  499. */
  500. @ResponseBody
  501. @RequiresPermissions("customer:add:customer")
  502. @RequestMapping("/save_customer")
  503. public ResponseJson addCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
  504. String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
  505. Integer flag = 0;
  506. JSONArray jsonArray;
  507. List<SendProdcue> sendProdcueList ;
  508. List<SendFitting> sendFittingList ;
  509. List<ClosedProdcue> closedProdcueList ;
  510. List<ClosedFitting> closedFittingList ;
  511. jsonArray = JSONArray.fromObject(sendProdcuesJson);
  512. sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
  513. jsonArray = JSONArray.fromObject(sendFittingsJson);
  514. sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
  515. jsonArray = JSONArray.fromObject(closedProdcuesJson);
  516. closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
  517. jsonArray = JSONArray.fromObject(closedFittingsJson);
  518. closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
  519. customerCommon.setSendProdcues(sendProdcueList);
  520. customerCommon.setSendFittings(sendFittingList);
  521. customerCommon.setClosedProdcues(closedProdcueList);
  522. customerCommon.setClosedFittings(closedFittingList);
  523. customerInfo.setCustomerCommon(customerCommon);
  524. String orderId = "";
  525. if(customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ){
  526. Integer adminId = AdminUtils.getLoginAdminId();
  527. orderId = OrderNoUtil.createOrderCode(adminId);
  528. }
  529. customerInfo.setTransactionNumber(orderId);
  530. flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
  531. if (flag < 1) {
  532. return new ResponseJson(500, "添加客诉失败!", 500);
  533. } else {
  534. return new ResponseJson(200, "添加客诉成功!", 200);
  535. }
  536. }
  537. /**
  538. * 验证方法
  539. *
  540. * @param customerInfo
  541. * @return
  542. */
  543. public boolean isValiData(CustomerInfo customerInfo) {
  544. boolean flag = true;
  545. // if (customerInfo.getBomName() == null || "".equals(customerInfo.getBomName())) {
  546. // return false;
  547. // }
  548. return flag;
  549. }
  550. /**
  551. * 添加客诉
  552. *
  553. * @param request
  554. * @return
  555. */
  556. @ResponseBody
  557. @RequiresPermissions("customer:add:customer")
  558. @RequestMapping("/send_phone_sms")
  559. public ResponseJson sendPhoneSms(HttpServletRequest request,String type,String phone,ComplaintQuestionInfo complaintQuestionInfo) throws Exception {
  560. String url = "https://rst.iamberry.com/QA";
  561. Integer flag = 1;
  562. if(type != null && !"".equals(type)){
  563. if( "p".equals(type)){
  564. url += "/problem?questionId="+complaintQuestionInfo.getQuestionId();
  565. }else if( "m".equals(type)){
  566. url += "/adress";
  567. }
  568. }
  569. flag = complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
  570. if (flag < 1) {
  571. return new ResponseJson(500, "问题修改失败!", 500);
  572. }
  573. String text = MessageFormat.format(CONFIRM_TEXT, complaintQuestionInfo.getQuestionProfile());
  574. String result = smsService.sendOtherCMS(phone, text);
  575. ResponseJson json = new ResponseJson();
  576. ResponseJson rj = json.addResponseKeyValue(result);
  577. if (rj.getResultCode() != 200) {
  578. return new ResponseJson(500, "发送短信失败!", 500);
  579. } else {
  580. return new ResponseJson(200, "发送短信成功!", 200);
  581. }
  582. }
  583. /**
  584. * 进入回访信息详情
  585. * @param request
  586. * @return
  587. * @throws Exception
  588. */
  589. @RequiresPermissions("customer:get:visit")
  590. @RequestMapping("/_update_visit_info")
  591. public ModelAndView toUpdateVisitFinish(HttpServletRequest request) throws Exception {
  592. ModelAndView mv = new ModelAndView("cm/customer/visit_finish");
  593. String customerId = request.getParameter("customerId");
  594. mv.addObject("customerId", customerId);
  595. return mv;
  596. }
  597. /**
  598. * 添加回访完成内容
  599. *
  600. * @param request
  601. * @param visit
  602. * @return
  603. */
  604. @ResponseBody
  605. @RequiresPermissions("customer:update:visit")
  606. @RequestMapping("/update_visit_finish")
  607. public ResponseJson updateVisitFinish(HttpServletRequest request, Visit visit) throws Exception {
  608. String customerId = request.getParameter("finish_customerId");
  609. if (!StringUtils.isNotEmpty(customerId)) {
  610. return new ResponseJson(500, "该客诉信息不存在!", 500);
  611. }
  612. visit.setCustomerId(Integer.parseInt(customerId));
  613. visit.setVisitStatus(2);
  614. //修改回访信息内容
  615. int num = visitService.updateVisit(visit);
  616. if (num > 0) {
  617. return new ResponseJson(200, "添加成功!", 200);
  618. } else {
  619. return new ResponseJson(500, "添加失败!", 500);
  620. }
  621. }
  622. /**
  623. * 进入回访信息详情
  624. * @param request
  625. * @return
  626. * @throws Exception
  627. */
  628. @RequiresPermissions("customer:get:visit")
  629. @RequestMapping("/_visit_info")
  630. public ModelAndView toVisitInfo(HttpServletRequest request) throws Exception {
  631. ModelAndView mv = new ModelAndView("cm/customer/visit_detail");
  632. String customerId = request.getParameter("customerId");
  633. mv.addObject("customerId", customerId);
  634. return mv;
  635. }
  636. /**
  637. * 获取回访信息详情
  638. *
  639. * @param request
  640. * @return
  641. */
  642. @ResponseBody
  643. @RequiresPermissions("customer:get:visit")
  644. @RequestMapping("/get_visit_info")
  645. public ResponseJson getVisitInfo(HttpServletRequest request) throws Exception {
  646. String customerId = request.getParameter("customerId");
  647. if (!StringUtils.isNotEmpty(customerId)) {
  648. return new ResponseJson(500, "该客诉信息不存在!", 500);
  649. }
  650. Visit visit = new Visit();
  651. visit.setCustomerId(Integer.parseInt(customerId));
  652. //查询回访信息集合
  653. List<Visit> visitList = visitService.listVisit(visit);
  654. if (visitList == null || visitList.size() == 0) {
  655. return new ResponseJson(500, "该客诉没有回访信息!", 500);
  656. }
  657. visit = visitList.get(0);
  658. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  659. rj.addResponseKeyValue("visit", visit);
  660. return rj;
  661. }
  662. /**
  663. * 进入问题描述页面
  664. * @param request
  665. * @return
  666. * @throws Exception
  667. */
  668. @RequiresPermissions("customer:get:describe")
  669. @RequestMapping("/_question_describe")
  670. public ModelAndView toQuestionDescribe(HttpServletRequest request) throws Exception {
  671. ModelAndView mv = new ModelAndView("cm/customer/describe_detail");
  672. String customerId = request.getParameter("customerId");
  673. mv.addObject("customerId", customerId);
  674. return mv;
  675. }
  676. /**
  677. * 获取问题描述信息
  678. *
  679. * @param request
  680. * @return
  681. */
  682. @ResponseBody
  683. @RequiresPermissions("customer:get:describe")
  684. @RequestMapping("/get_describe_info")
  685. public ResponseJson getDescribeInfo(HttpServletRequest request) throws Exception {
  686. String customerId = request.getParameter("customerId");
  687. if (!StringUtils.isNotEmpty(customerId)) {
  688. return new ResponseJson(500, "该客诉信息不存在!", 500);
  689. }
  690. QuestionDescribe describe = new QuestionDescribe();
  691. describe.setCustomerId(Integer.parseInt(customerId));
  692. //查询问题集合
  693. List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
  694. if (questionList == null || questionList.size() == 0) {
  695. return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
  696. }
  697. describe = questionList.get(0);
  698. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  699. rj.addResponseKeyValue("describe", describe);
  700. return rj;
  701. }
  702. /**
  703. * 进入修改换新页面
  704. * @param request
  705. * @return
  706. * @throws Exception
  707. */
  708. @RequiresPermissions("customer:update:renewed")
  709. @RequestMapping("/_update_renewed")
  710. public ModelAndView toUpdateRenewed(HttpServletRequest request) throws Exception {
  711. ModelAndView mv = new ModelAndView("cm/customer/update_renewed");
  712. String customerId = request.getParameter("customerId");
  713. mv.addObject("customerId", customerId);
  714. return mv;
  715. }
  716. /**
  717. * 获取换新详情
  718. *
  719. * @param request
  720. * @return
  721. */
  722. @ResponseBody
  723. @RequiresPermissions("customer:get:renewed")
  724. @RequestMapping("/get_renewed_info")
  725. public ResponseJson getRenewedInfo(HttpServletRequest request) throws Exception {
  726. String customerId = request.getParameter("customerId");
  727. if (!StringUtils.isNotEmpty(customerId)) {
  728. return new ResponseJson(500, "该客诉信息不存在!", 500);
  729. }
  730. Renewed renewed = new Renewed();
  731. renewed.setCustomerId(Integer.parseInt(customerId));
  732. renewed.setRenewedState(1);
  733. //获取换新详情和检测信息
  734. renewed = customerService.getRenewedInfo(renewed);
  735. if (renewed == null) {
  736. return new ResponseJson(500, "该客诉没有换新信息!", 500);
  737. } else {
  738. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  739. rj.addResponseKeyValue("renewed", renewed);
  740. return rj;
  741. }
  742. }
  743. /**
  744. * 修改换新信息
  745. *
  746. * @param request
  747. * @param renewed
  748. * @return
  749. * @throws Exception
  750. */
  751. @ResponseBody
  752. @RequiresPermissions("customer:update:renewed")
  753. @RequestMapping("/update_renewed_info")
  754. public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception {
  755. if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) {
  756. return new ResponseJson(500, "该换新信息不能修改!", 500);
  757. }
  758. if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) {
  759. renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue() * 100);
  760. }
  761. //修改换新信息
  762. int num = renewedService.updateRenewedInfo(renewed);
  763. if (num > 0) {
  764. return new ResponseJson(200, "修改成功!", 200);
  765. } else {
  766. return new ResponseJson(500, "修改失败!", 500);
  767. }
  768. }
  769. /**
  770. * 进入修改换新页面
  771. * @param request
  772. * @return
  773. * @throws Exception
  774. */
  775. @RequiresPermissions("customer:update:repair")
  776. @RequestMapping("/_to_update_repair")
  777. public ModelAndView toUpdateRepair(HttpServletRequest request) throws Exception {
  778. ModelAndView mv = new ModelAndView("cm/customer/update_repair");
  779. String customerId = request.getParameter("customerId");
  780. mv.addObject("customerId", customerId);
  781. return mv;
  782. }
  783. /**
  784. * 进入修改维修页面
  785. *
  786. * @param request
  787. * @return
  788. * @throws Exception
  789. */
  790. @ResponseBody
  791. @RequiresPermissions("customer:update:repair")
  792. @RequestMapping("/_update_repair")
  793. public ResponseJson updateRepairUI(HttpServletRequest request) throws Exception {
  794. String customerId = request.getParameter("customerId");
  795. if (!StringUtils.isNotEmpty(customerId)) {
  796. return new ResponseJson(500, "该客诉信息不存在!", 500);
  797. }
  798. Repair repair = new Repair();
  799. repair.setCustomerId(Integer.parseInt(customerId));
  800. repair.setRepairState(1);
  801. //获取维修详情和品质检测信息
  802. repair = customerService.getRepairInfo(repair);
  803. if (repair == null) {
  804. return new ResponseJson(500, "该客诉没有维修信息!", 500);
  805. } else {
  806. ClosedFitting closedFitting = new ClosedFitting();
  807. closedFitting.setRelationId(repair.getRepairId());
  808. //获取寄回配件集合
  809. List<ClosedFitting> fittingList = renewedService.listClosedFitting(closedFitting);
  810. if (fittingList != null && fittingList.size() > 0) {
  811. repair.setClosedFittings(fittingList);
  812. }
  813. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  814. rj.addResponseKeyValue("repair", repair);
  815. return rj;
  816. }
  817. }
  818. /**
  819. * 修改维修处理信息
  820. *
  821. * @param request
  822. * @param repair
  823. * @return
  824. * @throws Exception
  825. */
  826. @ResponseBody
  827. @RequiresPermissions("customer:update:repair")
  828. @RequestMapping("/update_repair_info")
  829. public ResponseJson updateRepairInfo(HttpServletRequest request, Repair repair) throws Exception {
  830. if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) {
  831. return new ResponseJson(500, "该换新信息不能修改!", 500);
  832. }
  833. String provinceNumber = request.getParameter("repairProvinceNumber");
  834. String cityNumber = request.getParameter("repairCityNumber");
  835. String areaNumber = request.getParameter("repairAreaNumber");
  836. if (StringUtils.isNotEmpty(provinceNumber)) {
  837. repair.setProvinceNumber(Integer.parseInt(provinceNumber));
  838. }
  839. if (StringUtils.isNotEmpty(cityNumber)) {
  840. repair.setCityNumber(Integer.parseInt(cityNumber));
  841. }
  842. if (StringUtils.isNotEmpty(areaNumber)) {
  843. repair.setAreaNumber(Integer.parseInt(areaNumber));
  844. }
  845. if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) {
  846. repair.setRepairBackPostage(repair.getRepairBackPostage().intValue() * 100);
  847. }
  848. //修改维修信息
  849. int num = repairService.updateRepairInfo(repair);
  850. if (num > 0) {
  851. return new ResponseJson(200, "修改成功!", 200);
  852. } else {
  853. return new ResponseJson(500, "修改失败!", 500);
  854. }
  855. }
  856. /**
  857. * 进入修改售后退货页面
  858. *
  859. * @param request
  860. * @return
  861. * @throws Exception
  862. */
  863. @ResponseBody
  864. @RequiresPermissions("customer:update:BackGoods")
  865. @RequestMapping("/_update_back_goods")
  866. public ResponseJson updateBackGoodsUI(HttpServletRequest request) throws Exception {
  867. String customerId = request.getParameter("customerId");
  868. if (!StringUtils.isNotEmpty(customerId)) {
  869. return new ResponseJson(500, "该客诉信息不存在!", 500);
  870. }
  871. BackGoods backGoods = new BackGoods();
  872. backGoods.setCustomerId(Integer.parseInt(customerId));
  873. //获取售后退货信息
  874. backGoods = customerService.getBackGoods(backGoods);
  875. if (backGoods == null) {
  876. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  877. } else {
  878. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  879. rj.addResponseKeyValue("backGoods", backGoods);
  880. return rj;
  881. }
  882. }
  883. /**
  884. * 修改售后退货信息
  885. *
  886. * @param request
  887. * @param backGoods
  888. * @return
  889. * @throws Exception
  890. */
  891. @ResponseBody
  892. @RequiresPermissions("customer:update:backGoods")
  893. @RequestMapping("/update_back_goods")
  894. public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception {
  895. if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) {
  896. return new ResponseJson(500, "该售后退货信息不能修改!", 500);
  897. }
  898. if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) {
  899. backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue() * 100);
  900. }
  901. int num = backGoodsService.updateBackGoods(backGoods);
  902. if (num > 0) {
  903. return new ResponseJson(200, "修改成功!", 200);
  904. } else {
  905. return new ResponseJson(500, "修改失败!", 500);
  906. }
  907. }
  908. /**
  909. * 进入修改补寄信息页面
  910. *
  911. * @param request
  912. * @return
  913. */
  914. @ResponseBody
  915. @RequiresPermissions("customer:update:reissue")
  916. @RequestMapping("/_update_reissue")
  917. public ResponseJson updateReissueUI(HttpServletRequest request) {
  918. String customerId = request.getParameter("customerId");
  919. if (!StringUtils.isNotEmpty(customerId)) {
  920. return new ResponseJson(500, "该客诉信息不存在!", 500);
  921. }
  922. Reissue reissue = new Reissue();
  923. reissue.setCustomerId(Integer.parseInt(customerId));
  924. //获取售后补寄信息
  925. reissue = customerService.getReissue(reissue);
  926. if (reissue == null) {
  927. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  928. } else {
  929. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  930. rj.addResponseKeyValue("reissue", reissue);
  931. return rj;
  932. }
  933. }
  934. /**
  935. * 修改售后补寄信息
  936. *
  937. * @param request
  938. * @param reissue
  939. * @return
  940. * @throws Exception
  941. */
  942. @ResponseBody
  943. @RequiresPermissions("customer:update:reissue")
  944. @RequestMapping("/update_reissue_info")
  945. public ResponseJson updateReissueInfo(HttpServletRequest request, Reissue reissue) throws Exception {
  946. String provinceNumber = request.getParameter("reissueProvinceNumber");
  947. String cityNumber = request.getParameter("reissueCityNumber");
  948. String areaNumber = request.getParameter("reissueAreaNumber");
  949. if (!StringUtils.isNotEmpty(reissue.getReissueId().toString())) {
  950. return new ResponseJson(500, "该售后补寄信息不能修改!", 500);
  951. }
  952. if (StringUtils.isNotEmpty(provinceNumber)) {
  953. reissue.setProvinceNumber(Integer.parseInt(provinceNumber));
  954. }
  955. if (StringUtils.isNotEmpty(cityNumber)) {
  956. reissue.setCityNumber(Integer.parseInt(cityNumber));
  957. }
  958. if (StringUtils.isNotEmpty(areaNumber)) {
  959. reissue.setAreaNumber(Integer.parseInt(areaNumber));
  960. }
  961. //修改售后补寄信息
  962. int num = reissueService.updateReissueInfo(reissue);
  963. if (num > 0) {
  964. return new ResponseJson(200, "修改成功!", 200);
  965. } else {
  966. return new ResponseJson(500, "修改失败!", 500);
  967. }
  968. }
  969. /**
  970. * 获取无理由退货信息
  971. * @param request
  972. * @return
  973. * @throws Exception
  974. */
  975. @ResponseBody
  976. @RequiresPermissions("customer:update:noreason")
  977. @RequestMapping("/_update_noreason")
  978. public ResponseJson toUpdateNoreason(HttpServletRequest request) throws Exception {
  979. String customerId = request.getParameter("customerId");
  980. if (!StringUtils.isNotEmpty(customerId)) {
  981. return new ResponseJson(500, "该客诉信息不存在!", 500);
  982. }
  983. NoreasonBack noreasonBack = new NoreasonBack();
  984. noreasonBack.setCustomerId(Integer.parseInt(customerId));
  985. noreasonBack.setNoreasonBackState(1);
  986. //获取无理由退货信息
  987. noreasonBack = customerService.getNoreasonBack(noreasonBack);
  988. if (noreasonBack == null) {
  989. return new ResponseJson(500, "该客诉没有无理由售后退货信息!", 500);
  990. } else {
  991. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  992. rj.addResponseKeyValue("noreasonBack", noreasonBack);
  993. return rj;
  994. }
  995. }
  996. /**
  997. * 修改售后无理由退货信息
  998. *
  999. * @param request
  1000. * @param noreasonBack
  1001. * @return
  1002. * @throws Exception
  1003. */
  1004. @ResponseBody
  1005. @RequiresPermissions("customer:update:noreason")
  1006. @RequestMapping("/update_noreason")
  1007. public ResponseJson updateNoreason(HttpServletRequest request, NoreasonBack noreasonBack) throws Exception {
  1008. if (!StringUtils.isNotEmpty(noreasonBack.getNoreasonBackId().toString())) {
  1009. return new ResponseJson(500, "该售后无理由退货信息不能修改!", 500);
  1010. }
  1011. if (StringUtils.isNotEmpty(noreasonBack.getNoreasonBackBackPostage().toString())) {
  1012. noreasonBack.setNoreasonBackBackPostage(noreasonBack.getNoreasonBackBackPostage().intValue() * 100);
  1013. }
  1014. int num = noreasonBackService.updateNoreasonBack(noreasonBack);
  1015. if (num > 0) {
  1016. return new ResponseJson(200, "修改成功!", 200);
  1017. } else {
  1018. return new ResponseJson(500, "修改失败!", 500);
  1019. }
  1020. }
  1021. /**
  1022. * 同步百胜订单
  1023. * @return
  1024. * @throws Exception
  1025. */
  1026. @ResponseBody
  1027. @RequiresPermissions("customer:sync:order")
  1028. @RequestMapping("/sync_efast_order")
  1029. public ResponseJson syncEfastOrder() throws Exception {
  1030. int pageNo = 1;
  1031. int pageSize = 20;
  1032. boolean flag = false; //控制是否还需要获取百胜订单信息
  1033. String date = "";
  1034. synchronized (lock) {
  1035. //根据时间排序查询订单信息
  1036. List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
  1037. if (orderList != null && orderList.size() > 0) {
  1038. SalesOrder salesOrder = orderList.get(0);
  1039. date = salesOrder.getSalesCreateTime().toString();
  1040. } else {
  1041. date = "2016-04-01";
  1042. }
  1043. do {
  1044. //批量获取百胜订单信息
  1045. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date);
  1046. if (obj == null) {
  1047. return new ResponseJson(200, "没有可同步订单!", 200);
  1048. }
  1049. int pageSize1 = obj.getInt("page_size"); //百胜返回数据条目数
  1050. if (pageSize <= pageSize1) {
  1051. flag = true;
  1052. pageNo++;
  1053. } else {
  1054. flag = false;
  1055. }
  1056. salesOrderService.addSalesOrderList(obj);
  1057. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  1058. return new ResponseJson(200, "同步成功!", 200);
  1059. }
  1060. }
  1061. }