AdminCustomerController.java 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.cm.*;
  3. import com.iamberry.rst.core.order.Product;
  4. import com.iamberry.rst.core.order.ProductColor;
  5. import com.iamberry.rst.core.order.ProductType;
  6. import com.iamberry.rst.core.page.PagedResult;
  7. import com.iamberry.rst.core.sys.Admin;
  8. import com.iamberry.rst.faces.cm.*;
  9. import com.iamberry.rst.faces.product.ProductService;
  10. import com.iamberry.rst.faces.sms.SmsService;
  11. import com.iamberry.rst.faces.sys.SysService;
  12. import com.iamberry.rst.util.SmsConfig;
  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.NameUtils;
  17. import com.iamberry.wechat.tools.ResponseJson;
  18. import net.sf.json.JSONArray;
  19. import org.apache.commons.codec.binary.Base64;
  20. import org.apache.commons.lang.StringUtils;
  21. import org.apache.shiro.authz.annotation.RequiresPermissions;
  22. import org.slf4j.Logger;
  23. import org.slf4j.LoggerFactory;
  24. import org.springframework.beans.factory.annotation.Autowired;
  25. import org.springframework.stereotype.Controller;
  26. import org.springframework.web.bind.annotation.RequestMapping;
  27. import org.springframework.web.bind.annotation.RequestParam;
  28. import org.springframework.web.bind.annotation.ResponseBody;
  29. import org.springframework.web.servlet.ModelAndView;
  30. import javax.servlet.http.HttpServletRequest;
  31. import java.text.MessageFormat;
  32. import java.util.ArrayList;
  33. import java.util.Date;
  34. import java.util.List;
  35. import java.util.Map;
  36. /**
  37. * Created by wxm
  38. */
  39. @Controller
  40. @RequestMapping("/admin/customer")
  41. public class AdminCustomerController {
  42. private Logger logger = LoggerFactory.getLogger(AdminCustomerController.class);
  43. @Autowired
  44. private CompanyInfoService companyInfoService;
  45. @Autowired
  46. private StoreInfoService storeInfoService;
  47. @Autowired
  48. private SalesOrderService salesOrderService;
  49. @Autowired
  50. private CustomerService customerService;
  51. @Autowired
  52. private ProductService productService;
  53. @Autowired
  54. private SysService sysService;
  55. @Autowired
  56. private ComplaintTypeInfoService complaintTypeInfoService;
  57. @Autowired
  58. private VisitService visitService;
  59. @Autowired
  60. private QuestionDescribeService questionDescribeService;
  61. @Autowired
  62. private RenewedService renewedService;
  63. @Autowired
  64. private RepairService repairService;
  65. @Autowired
  66. private BackGoodsService backGoodsService;
  67. @Autowired
  68. private FittingsInfoService fittingsInfoService;
  69. @Autowired
  70. private ReissueService reissueService;
  71. @Autowired
  72. private NoreasonBackService noreasonBackService;
  73. @Autowired
  74. private ComplaintQuestionInfoService complaintQuestionInfoService;
  75. @Autowired
  76. private SmsService smsService;
  77. @Autowired
  78. private ComplaintSignclosedInfoService complaintSignclosedInfoService;
  79. /**
  80. * 获取客诉列表
  81. *
  82. * @param request
  83. * @return
  84. */
  85. @RequiresPermissions("customer:list:customer")
  86. @RequestMapping("/_customer_list")
  87. public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer,
  88. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  89. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  90. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  91. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  92. // PagedResult<Customer> pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0);
  93. // if (totalNum != 0) {
  94. // pagedResult.setTotal(totalNum);
  95. // }
  96. // //获取产品集合,用于页面选择产品
  97. // List<Produce> list = produceService.getProduceList();
  98. // mv.addObject("produceList", list);
  99. // StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult);
  100. return mv;
  101. }
  102. /**
  103. * 跳转到添加客诉页面
  104. *
  105. * @return
  106. */
  107. @RequiresPermissions("customer:add:customer")
  108. @RequestMapping(value = "/to_add_customer")
  109. public ModelAndView toAddCustomer(HttpServletRequest request) {
  110. ModelAndView mv = new ModelAndView("cm/customer/add_customer");
  111. //获取产品集合,用于页面选择产品
  112. // List<Produce> produceList = produceService.getProduceList();
  113. // mv.addObject("produceList", produceList);
  114. return mv;
  115. }
  116. /**
  117. * 跳转到修改客诉页面
  118. *
  119. * @return
  120. */
  121. @RequiresPermissions("customer:update:customer")
  122. @RequestMapping(value = "/to_update_customer")
  123. public ModelAndView toUpdateCustomer(HttpServletRequest request,Integer customerId) {
  124. ModelAndView mv = new ModelAndView("cm/customer/update_customer");
  125. ProductType productType = new ProductType();
  126. //查询产品类型集合
  127. List<ProductType> typeList = productService.listProductType(productType);
  128. //查询客诉类型集合
  129. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  130. //查询跟进客服集合
  131. Admin admin = new Admin();
  132. admin.setAdminStatus(1);
  133. List<Admin> adminList = sysService.listSelectAdmin(admin);
  134. //获取登录人id
  135. Integer loginAdminId = AdminUtils.getLoginAdminId();
  136. //查询客诉基本信息
  137. CustomerInfo customerInfo = customerService.getCustomerInfo(customerId);
  138. if(customerInfo.getCustomerIsSolve() != null){
  139. CustomerCommon customerCommon = new CustomerCommon();
  140. switch (customerInfo.getCustomerIsSolve()){ //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  141. case 3://获取换新
  142. Renewed renewed = new Renewed();
  143. renewed.setCustomerId(customerInfo.getCustomerId());
  144. renewed = renewedService.getRenewed(renewed);
  145. customerCommon.getCustomerCommon(3,renewed);
  146. break;
  147. case 4://维修
  148. Repair repair = new Repair();
  149. repair.setCustomerId(customerInfo.getCustomerId());
  150. repair = repairService.getRepair(repair);
  151. customerCommon.getCustomerCommon(4,repair);
  152. case 5:
  153. Reissue reissue = new Reissue();
  154. reissue.setCustomerId(customerInfo.getCustomerId());
  155. reissue = reissueService.getReissue(reissue);
  156. customerCommon.getCustomerCommon(5,reissue);
  157. case 6:
  158. BackGoods backGoods = new BackGoods();
  159. backGoods.setCustomerId(customerInfo.getCustomerId());
  160. backGoods = backGoodsService.getBackGoods(backGoods);
  161. customerCommon.getCustomerCommon(6,backGoods);
  162. case 7:
  163. NoreasonBack noreasonBack = new NoreasonBack();
  164. noreasonBack.setCustomerId(customerInfo.getCustomerId());
  165. noreasonBack = noreasonBackService.getNoreasonBack(noreasonBack);
  166. customerCommon.getCustomerCommon(7,noreasonBack);
  167. }
  168. mv.addObject("customerCommon", customerCommon);
  169. }
  170. if ("2".equals(customerInfo.getCustomerIsVisit())){ //1:不需要回访 2:需要回访
  171. Visit visit = new Visit();
  172. visit.setCustomerId(customerInfo.getCustomerId());
  173. visit = visitService.getVisit(visit);
  174. mv.addObject("visit", visit);
  175. }
  176. mv.addObject("typeList", typeList);
  177. mv.addObject("complaintTypeList", complaintTypeList);
  178. mv.addObject("complaintTypeList", complaintTypeList);
  179. mv.addObject("adminList", adminList);
  180. mv.addObject("loginAdminId", loginAdminId);
  181. return mv;
  182. }
  183. /**
  184. * 搜索订单列表弹出框
  185. *
  186. * @return
  187. */
  188. @RequiresPermissions("customer:add:customer")
  189. @RequestMapping(value = "/select_order")
  190. public ModelAndView selectOrder(HttpServletRequest request) {
  191. ModelAndView mv = new ModelAndView("cm/customer/order_list");
  192. //获取销售公司
  193. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  194. mv.addObject("companyInfoList", companyInfoList);
  195. return mv;
  196. }
  197. /**
  198. * 添加订单列表弹出框
  199. *
  200. * @return
  201. */
  202. @RequiresPermissions("customer:add:customer")
  203. @RequestMapping(value = "/add_order")
  204. public ModelAndView addOder(HttpServletRequest request) {
  205. ModelAndView mv = new ModelAndView("cm/customer/order_add");
  206. return mv;
  207. }
  208. /**
  209. * 添加订单
  210. *
  211. * @return
  212. */
  213. @ResponseBody
  214. @RequiresPermissions("customer:add:customer")
  215. @RequestMapping(value = "/add_order_info")
  216. public ResponseJson addOrderInfo(HttpServletRequest request, SalesOrder salesOrder, String itemJson) throws Exception {
  217. List<SalesOrderItem> list = new ArrayList<>();
  218. JSONArray jsonArray = JSONArray.fromObject(itemJson);
  219. list = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
  220. Integer salesAmount = 0;
  221. for (int i = 0; i < list.size(); i++) {
  222. SalesOrderItem salesOrderItem = list.get(i);
  223. if (salesOrderItem.getItemIsSource() == 1) { //产品来源 1:产品颜色表,2:配件表
  224. Product product = productService.getProductById(salesOrderItem.getItemProductId());
  225. ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemProductId());
  226. salesOrderItem.setItemProductType(product.getProductType());
  227. salesOrderItem.setItemProductName(product.getProductName());
  228. salesOrderItem.setItemProductPic(productColor.getColorPicture());
  229. salesOrderItem.setItemProductColor(productColor.getColorName());
  230. salesOrderItem.setItemColorBar(productColor.getColorBar());
  231. salesOrderItem.setItemProductPrice(productColor.getColorPrice());
  232. salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
  233. salesOrderItem.setItemIsSource(1);
  234. salesAmount += productColor.getColorDiscount();
  235. } else if (salesOrderItem.getItemIsSource() == 2) {
  236. Product product = productService.getProductById(salesOrderItem.getItemProductId());
  237. FittingsInfo fittingsInfo = fittingsInfoService.getFittingsById(salesOrderItem.getItemColorId());
  238. salesOrderItem.setItemProductType(product.getProductType());
  239. salesOrderItem.setItemProductName(product.getProductName());
  240. salesOrderItem.setItemProductColor(fittingsInfo.getFittingsName());
  241. salesOrderItem.setItemColorBar(fittingsInfo.getFittingsBar());
  242. salesOrderItem.setItemProductPrice(fittingsInfo.getFittingsPrice());
  243. salesOrderItem.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  244. salesOrderItem.setItemIsSource(2);
  245. salesAmount += fittingsInfo.getFittingsDiscount();
  246. }
  247. }
  248. salesOrder.setSalesOpenId("0");
  249. salesOrder.setSalesAmount(salesAmount);
  250. salesOrder.setSalesPayMoney(salesAmount);
  251. salesOrder.setSalesOrderStatus(1);
  252. salesOrder.setSalesCreateTime(new Date());
  253. //salesOrder.setSalesPayTime(new Date());
  254. salesOrder.setSalesLastMoney(salesAmount);
  255. salesOrder.setSalesWaitMoney(0);
  256. salesOrder.setSalesPayMoney(salesAmount);
  257. salesOrder.setSalesSalesTime(new Date());
  258. salesOrder.setSalesDiscountMoney(salesAmount);
  259. salesOrder.setSalesPledgeMoney(0);
  260. salesOrder.setSalesRemainDeposit(0);
  261. salesOrder.setSalesType(1);
  262. salesOrder.setSalesStatus(0);//确认状态:0(未确认)1(确认)2(挂起)3(作废)
  263. salesOrder.setSalesShippingStatus(0); //发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)
  264. salesOrder.setSalesPayStatus(2); //已付款
  265. salesOrder.setSalesProcessStatus(0); //单据状态:0(正常单)1(问题单)
  266. salesOrder.setSalesIsSend(0); //0:否 1:是 是否通知配货
  267. salesOrder.setSalesIsLocked(0); //是否锁定 0:否 1:是
  268. salesOrder.setSalesIsSeparate(0); //是否缺货 0:否 1:是
  269. salesOrder.setSalesShippingFee(0); //邮费
  270. Integer adminId = AdminUtils.getLoginAdminId();
  271. String orderCode = OrderNoUtil.createOrderCode(adminId);
  272. salesOrder.setSalesDealCode(orderCode);
  273. salesOrder.setSalesOrderId(orderCode);
  274. //salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
  275. salesOrder.setSalesOrderItemList(list);
  276. try {
  277. Map<String, Object> map = customerService.sendEfastOrder(salesOrder);
  278. // if (map.get("status") == 1) {
  279. // salesOrder.setSalesOrderId((String) map.get("EfastOrderId"));
  280. // }
  281. } catch (RuntimeException e) {
  282. return new ResponseJson(500, "添加订单成功--"+ e.getMessage(), 500);
  283. }
  284. Integer orderId = salesOrder.getSalesId();
  285. ResponseJson rj = new ResponseJson(200, "添加订单成功", 200);
  286. rj.addResponseKeyValue("orderId", orderId);
  287. return rj;
  288. }
  289. /**
  290. * 获取店铺集合
  291. *
  292. * @param request
  293. * @param storeInfo
  294. * @return
  295. */
  296. @ResponseBody
  297. @RequiresPermissions("customer:add:customer")
  298. @RequestMapping(value = "/select_storeInfo")
  299. public ResponseJson listStoreInfo(HttpServletRequest request, StoreInfo storeInfo) {
  300. storeInfo.setStoreStatus(1);
  301. List<StoreInfo> storeInfoList = storeInfoService.listStore(storeInfo);
  302. if (storeInfoList == null || storeInfoList.size() < 1) {
  303. return new ResponseJson(500, "查询失败", 500);
  304. } else {
  305. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  306. rj.addResponseKeyValue("storeInfoList", storeInfoList);
  307. return rj;
  308. }
  309. }
  310. /**
  311. * 获取订单集合
  312. *
  313. * @param request
  314. * @param salesOrder
  315. * @return
  316. */
  317. @ResponseBody
  318. @RequiresPermissions("customer:add:customer")
  319. @RequestMapping(value = "/select_salesOrder")
  320. public ResponseJson listOrder(HttpServletRequest request, SalesOrder salesOrder) {
  321. List<SalesOrder> salesOrderList = salesOrderService.listSalesOrder(salesOrder);
  322. for (SalesOrder order : salesOrderList) {
  323. SalesOrderItem salesOrderItem = new SalesOrderItem();
  324. salesOrderItem.setItemOrderId(order.getSalesId());
  325. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  326. order.setSalesOrderItemList(salesOrderItemList);
  327. }
  328. if (salesOrderList == null || salesOrderList.size() < 1) {
  329. return new ResponseJson(500, "查询失败", 500);
  330. } else {
  331. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  332. rj.addResponseKeyValue("salesOrderList", salesOrderList);
  333. return rj;
  334. }
  335. }
  336. /**
  337. * 分页查询客诉列表信息
  338. *
  339. * @param request
  340. * @param customerInfo
  341. * @param pageSize
  342. * @param pageNO
  343. * @param totalNum
  344. * @return
  345. * @throws Exception
  346. */
  347. @RequiresPermissions("customer:select:customer")
  348. @RequestMapping("/select_customer_list")
  349. public ModelAndView selectCustomerList(HttpServletRequest request, CustomerInfo customerInfo,
  350. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  351. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  352. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  353. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  354. PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
  355. if (totalNum != 0) {
  356. pagedResult.setTotal(totalNum);
  357. }
  358. ProductType productType = new ProductType();
  359. //查询产品类型集合
  360. List<ProductType> typeList = productService.listProductType(productType);
  361. //查询客诉类型集合
  362. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  363. //查询跟进客服集合
  364. Admin admin = new Admin();
  365. admin.setAdminStatus(1);
  366. List<Admin> adminList = sysService.listSelectAdmin(admin);
  367. //获取登录人id
  368. Integer loginAdminId = AdminUtils.getLoginAdminId();
  369. mv.addObject("loginAdminId", loginAdminId);
  370. mv.addObject("typeList", typeList);
  371. mv.addObject("complaintTypeList", complaintTypeList);
  372. mv.addObject("adminList", adminList);
  373. customerInfo.setVisit(null);
  374. customerInfo.setCustomerCommon(null);
  375. customerInfo.setComplaintDetectList(null);
  376. StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
  377. return mv;
  378. }
  379. /**
  380. * 进入客诉基本信息页面
  381. *
  382. * @param request
  383. * @return
  384. * @throws Exception
  385. */
  386. @RequiresPermissions("customer:select:customer")
  387. @RequestMapping("/_customer_info")
  388. public ModelAndView toCustomerInfo(HttpServletRequest request) throws Exception {
  389. ModelAndView mv = new ModelAndView("cm/customer/custome_detail");
  390. String customerId = request.getParameter("customerId");
  391. mv.addObject("customerId", customerId);
  392. return mv;
  393. }
  394. /**
  395. * 查询客诉基本信息
  396. *
  397. * @param request
  398. * @return
  399. * @throws Exception
  400. */
  401. @ResponseBody
  402. @RequiresPermissions("customer:select:customer")
  403. @RequestMapping("/get_customer_info")
  404. public ResponseJson getCustomerInfo(HttpServletRequest request) throws Exception {
  405. String customerId = request.getParameter("customerId");
  406. if (!StringUtils.isNotEmpty(customerId)) {
  407. return new ResponseJson(500, "该客诉信息不存在!", 500);
  408. }
  409. CustomerInfo customerInfo = new CustomerInfo();
  410. customerInfo.setCustomerId(Integer.parseInt(customerId));
  411. Map<String, Object> map = customerService.getCustomerInfo(customerInfo);
  412. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  413. rj.addResponseKeyValue("customerCommon", map.get("customerCommon"));
  414. rj.addResponseKeyValue("customer", map.get("customer"));
  415. rj.addResponseKeyValue("salesOrder", map.get("salesOrder"));
  416. return rj;
  417. }
  418. /**
  419. * 进入添加回访页面
  420. *
  421. * @param request
  422. * @return
  423. * @throws Exception
  424. */
  425. @RequiresPermissions("customer:select:customer")
  426. @RequestMapping("/_add_visit")
  427. public ModelAndView toAddVisit(HttpServletRequest request) throws Exception {
  428. ModelAndView mv = new ModelAndView("cm/customer/add_visit");
  429. String customerId = request.getParameter("customerId");
  430. //查询跟进客服集合
  431. Admin admin = new Admin();
  432. admin.setAdminStatus(1);
  433. List<Admin> adminList = sysService.listSelectAdmin(admin);
  434. //获取登录人id
  435. Integer loginAdminId = AdminUtils.getLoginAdminId();
  436. mv.addObject("loginAdminId", loginAdminId);
  437. mv.addObject("customerId", customerId);
  438. mv.addObject("adminList", adminList);
  439. return mv;
  440. }
  441. /**
  442. * 添加回访信息
  443. *
  444. * @param request
  445. * @param visit
  446. * @return
  447. */
  448. @ResponseBody
  449. @RequiresPermissions("customer:add:visit")
  450. @RequestMapping("/add_visit_info")
  451. public ResponseJson addVisitInfo(HttpServletRequest request, Visit visit) throws Exception {
  452. String visitAdminId = request.getParameter("visitAdminId");
  453. if (!StringUtils.isNotEmpty(visitAdminId)) {
  454. return new ResponseJson(500, "请选择回访人!", 500);
  455. }
  456. Integer loginAdminId = AdminUtils.getLoginAdminId();
  457. visit.setAdminId(loginAdminId);
  458. visit.setDesignatedAdminId(Integer.parseInt(visitAdminId));
  459. visit.setVisitStatus(1);
  460. visit.setVisitCreateTime(new Date());
  461. int num = visitService.addVisitInfo(visit, visit.getCustomerId());
  462. if (num > 0) {
  463. return new ResponseJson(200, "修改成功!", 200);
  464. } else {
  465. return new ResponseJson(500, "修改失败!", 500);
  466. }
  467. }
  468. /**
  469. * 修改客诉状态为已解决
  470. *
  471. * @param request
  472. * @return
  473. */
  474. @ResponseBody
  475. @RequiresPermissions("customer:update:customerIsSolve")
  476. @RequestMapping("/update_customerIsSolve")
  477. public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception {
  478. String customerId = request.getParameter("customerId");
  479. if (!StringUtils.isNotEmpty(customerId)) {
  480. return new ResponseJson(500, "该客诉信息不存在!", 500);
  481. }
  482. //根据id获取客诉信息
  483. CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId));
  484. if (customer == null) {
  485. return new ResponseJson(500, "该客诉信息不存在!", 500);
  486. }
  487. if (customer.getCustomerIsSolve().intValue() != 2) {
  488. return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500);
  489. }
  490. CustomerInfo customerInfo = new CustomerInfo();
  491. customerInfo.setCustomerId(Integer.parseInt(customerId));
  492. customerInfo.setCustomerIsSolve(1);
  493. //修改客诉信息
  494. int num = customerService.updateCustomerInfo(customerInfo);
  495. if (num > 0) {
  496. return new ResponseJson(200, "修改成功!", 200);
  497. } else {
  498. return new ResponseJson(500, "修改失败!", 500);
  499. }
  500. }
  501. /**
  502. * 查询客服
  503. *
  504. * @param request
  505. * @return
  506. */
  507. @ResponseBody
  508. @RequiresPermissions("customer:add:customer")
  509. @RequestMapping("/select_sys_admin")
  510. public ResponseJson selectSysAdmin(HttpServletRequest request) throws Exception {
  511. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  512. Integer adminId = AdminUtils.getLoginAdminId();
  513. Admin admin = new Admin();
  514. List<Admin> adminList = sysService.listSelectAdmin(admin);
  515. if (adminList.size() > 0) {
  516. rj.addResponseKeyValue("adminList", adminList);
  517. rj.addResponseKeyValue("adminId", adminId);
  518. return rj;
  519. } else {
  520. return new ResponseJson(500, "查询失败!", 500);
  521. }
  522. }
  523. /**
  524. * 查询产品类型
  525. *
  526. * @param request
  527. * @return
  528. */
  529. @ResponseBody
  530. @RequiresPermissions("customer:add:customer")
  531. @RequestMapping("/select_produce_type")
  532. public ResponseJson selectProduceType(HttpServletRequest request) throws Exception {
  533. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  534. ProductType productType = new ProductType();
  535. productType.setTypeStatus(1);
  536. List<ProductType> productTypeList = productService.listProductType(productType);
  537. if (productTypeList != null && productTypeList.size() > 0) {
  538. rj.addResponseKeyValue("productTypeList", productTypeList);
  539. return rj;
  540. } else {
  541. return new ResponseJson(500, "查询失败!", 500);
  542. }
  543. }
  544. /**
  545. * 查询产品
  546. *
  547. * @param request
  548. * @return
  549. */
  550. @ResponseBody
  551. @RequiresPermissions("customer:add:customer")
  552. @RequestMapping("/select_produce")
  553. public ResponseJson selectProduce(HttpServletRequest request) {
  554. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  555. Product product = new Product();
  556. List<Product> productList = productService.listProduce(product);
  557. for (Product pro : productList) {
  558. ProductColor productColor = new ProductColor();
  559. productColor.setColorProductId(pro.getProductId());
  560. List<ProductColor> productColorList = productService.listProduceColor(productColor);
  561. pro.setColorList(productColorList);
  562. }
  563. if (productList != null && productList.size() > 0) {
  564. rj.addResponseKeyValue("productList", productList);
  565. return rj;
  566. } else {
  567. return new ResponseJson(500, "查询失败!", 500);
  568. }
  569. }
  570. /**
  571. * 查询产品
  572. *
  573. * @param request
  574. * @return
  575. */
  576. @ResponseBody
  577. @RequiresPermissions("customer:add:customer")
  578. @RequestMapping("/select_produce_fittings")
  579. public ResponseJson selectProduceFittings(HttpServletRequest request, FittingsInfo fittingsInfo) {
  580. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  581. List<FittingsInfo> produceFittingsList = fittingsInfoService.listFittings(fittingsInfo);
  582. if (produceFittingsList != null && produceFittingsList.size() > 0) {
  583. rj.addResponseKeyValue("produceFittingsList", produceFittingsList);
  584. return rj;
  585. } else {
  586. return new ResponseJson(500, "查询失败!", 500);
  587. }
  588. }
  589. /**
  590. * 添加客诉
  591. *
  592. * @param request
  593. * @return
  594. */
  595. @ResponseBody
  596. @RequiresPermissions("customer:add:customer")
  597. @RequestMapping("/save_customer")
  598. public ResponseJson addCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
  599. String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
  600. ResponseJson rjx = this.isValiData(customerInfo);
  601. if(rjx.getResultCode() == 500){
  602. return rjx;
  603. }
  604. Integer flag = 0;
  605. JSONArray jsonArray;
  606. List<SendProdcue> sendProdcueList;
  607. List<SendFitting> sendFittingList;
  608. List<ClosedProdcue> closedProdcueList;
  609. List<ClosedFitting> closedFittingList;
  610. Integer customerIsSolve = customerInfo.getCustomerIsSolve(); //处理类型
  611. String phone = customerInfo.getCustomerTel(); //手机号码
  612. Integer typeCompany = customerInfo.getTypeCompany(); // 所属商城 1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
  613. jsonArray = JSONArray.fromObject(sendProdcuesJson);
  614. sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
  615. jsonArray = JSONArray.fromObject(sendFittingsJson);
  616. sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
  617. jsonArray = JSONArray.fromObject(closedProdcuesJson);
  618. closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
  619. jsonArray = JSONArray.fromObject(closedFittingsJson);
  620. closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
  621. customerCommon.setSendProdcues(sendProdcueList);
  622. customerCommon.setSendFittings(sendFittingList);
  623. customerCommon.setClosedProdcues(closedProdcueList);
  624. customerCommon.setClosedFittings(closedFittingList);
  625. customerInfo.setCustomerCommon(customerCommon);
  626. String orderId = "";
  627. if (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5) {
  628. Integer adminId = AdminUtils.getLoginAdminId();
  629. orderId = OrderNoUtil.createOrderCode(adminId);
  630. }
  631. customerInfo.setTransactionNumber(orderId);
  632. Integer customerId = customerInfo.getCustomerId();
  633. logger.info("-----------------添加客诉开始----------------------");
  634. try {
  635. flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
  636. } catch (RuntimeException e) {
  637. return new ResponseJson(500, e.getMessage(), 500);
  638. }
  639. customerId = customerInfo.getCustomerId();
  640. logger.info("-----------------添加客诉结束----------------------");
  641. if (flag < 1) {
  642. return new ResponseJson(500, "添加客诉失败!", 500);
  643. }
  644. //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  645. if (customerIsSolve == 3 || customerIsSolve == 4 || customerIsSolve == 5 || customerIsSolve == 6 || customerIsSolve == 7) {
  646. String solveMsg = "";
  647. switch (customerIsSolve) {
  648. case 3:
  649. solveMsg = "为您更换新机";
  650. break;
  651. case 4:
  652. solveMsg = "为您维修机器";
  653. break;
  654. case 5:
  655. solveMsg = "为您补发产品";
  656. break;
  657. case 6:
  658. solveMsg = "为您办理退货";
  659. break;
  660. case 7:
  661. solveMsg = "为您办理退货";
  662. break;
  663. }
  664. String addCustomerSuccessMsg = "";
  665. String typeMsg = "";
  666. switch (typeCompany) {
  667. case 1:
  668. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_WATERO;
  669. typeMsg = "美国WaterO售后";
  670. break;
  671. case 2:
  672. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_SHANGDUO;
  673. typeMsg = "上朵售后";
  674. break;
  675. case 3:
  676. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_YULIA;
  677. typeMsg = "YULIA售后";
  678. break;
  679. }
  680. Object [] msg = new Object[]{solveMsg,typeMsg};
  681. String text = MessageFormat.format(addCustomerSuccessMsg, msg);
  682. logger.info("添加客诉成功后,给 "+ phone +" 手机用户发送短信:" + text );
  683. String result = smsService.sendOtherCMS(phone, text);
  684. if (!"SUCCESS".equals(result)) {
  685. return new ResponseJson(505, "添加客诉发送短信失败,失败原因:" + result + "<br>客诉信息发送失败并不影响客诉添加。客诉编号为:"+ customerId, 505);
  686. }
  687. }
  688. return new ResponseJson(200, "添加客诉成功!客诉编号为:" + customerId, 200);
  689. }
  690. /**
  691. * 验证方法
  692. *
  693. * @param customerInfo
  694. * @return
  695. */
  696. public ResponseJson isValiData(CustomerInfo customerInfo) {
  697. ResponseJson rj = new ResponseJson();
  698. if(customerInfo.getAdminId() == null){
  699. return new ResponseJson(500, "未填写客诉id", 500);
  700. }
  701. return rj;
  702. }
  703. /**
  704. * 发送短信
  705. *
  706. * @param request
  707. * @return
  708. */
  709. @ResponseBody
  710. @RequiresPermissions("customer:add:customer")
  711. @RequestMapping("/send_phone_sms")
  712. public ResponseJson sendPhoneSms(HttpServletRequest request, String type, String phone, Integer typeCompany, ComplaintQuestionInfo complaintQuestionInfo) throws Exception {
  713. String url = NameUtils.getConfig("website");
  714. Integer flag = 1;
  715. if (typeCompany == null || typeCompany == 0) {
  716. return new ResponseJson(500, "未获取到产品类型!", 500);
  717. }
  718. String con = "";
  719. if (type != null && !"".equals(type)) {
  720. if ("p".equals(type)) { //problem" 问题处理; mailAddress:邮寄地址;
  721. if (complaintQuestionInfo.getQuestionId() == null || "".equals(complaintQuestionInfo.getQuestionId())) {
  722. complaintQuestionInfo.setQuestionState(1);
  723. complaintQuestionInfo.setQuestionIsQcDetect(0);
  724. complaintQuestionInfo = complaintQuestionInfoService.insertBackInfo(complaintQuestionInfo);
  725. } else {
  726. complaintQuestionInfo.setSmallClassId(null); //不能修改小类类型
  727. flag = complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
  728. if (flag < 1) {
  729. return new ResponseJson(500, "问题修改失败!", 500);
  730. }
  731. }
  732. url += "/" + complaintQuestionInfo.getQuestionId();
  733. switch (typeCompany) {
  734. case 1:
  735. con = SmsConfig.SEND_PRODUCT_SEND_WATERO;
  736. break;
  737. case 2:
  738. con = SmsConfig.SEND_PRODUCT_SEND_SHANGDUO;
  739. break;
  740. case 3:
  741. con = SmsConfig.SEND_PRODUCT_SEND_YULIA;
  742. break;
  743. }
  744. } else if ("m".equals(type)) {
  745. if (complaintQuestionInfo.getQuestionId() == null) {
  746. return new ResponseJson(500, "未获取到邮寄信息!", 500);
  747. }
  748. complaintQuestionInfo.setQuestionName(null);
  749. complaintQuestionInfo.setSmallClassId(null);
  750. url += "/5";
  751. switch (typeCompany) {
  752. case 1:
  753. con = SmsConfig.SEND_PRODUCT_SMS_WATERO;
  754. break;
  755. case 2:
  756. con = SmsConfig.SEND_PRODUCT_SMS_SHANGDUO;
  757. break;
  758. case 3:
  759. con = SmsConfig.SEND_PRODUCT_SMS_YULIA;
  760. break;
  761. }
  762. }
  763. }
  764. String userPhone = encodePhoneNumber(phone);
  765. String text = MessageFormat.format(con, url);
  766. logger.info("给 " + phone + " 手机用户发送短信:" + text);
  767. String result = smsService.sendOtherCMS(phone, text);
  768. if ("SUCCESS".equals(result)) {
  769. return new ResponseJson(200, "发送短信成功!", 200);
  770. } else {
  771. return new ResponseJson(500, "发送短信失败,失败原因:" + result, 500);
  772. }
  773. }
  774. String encodePhoneNumber(String number)
  775. {
  776. int encnum = Integer.parseInt(number.substring(2));
  777. int prefix = (number.charAt(1) - '2') /2; // '3'=>0, '5'=>1, '[67]'=>2, '8'=>3
  778. encnum |= (prefix <<= 30);
  779. final byte[] raw = new byte[4];
  780. raw[0] = (byte)(encnum >>> 24);
  781. raw[1] = (byte)(encnum >>> 16);
  782. raw[2] = (byte)(encnum >>> 8);
  783. raw[3] = (byte) encnum;
  784. return Base64.encodeBase64URLSafeString(raw);
  785. }
  786. /**
  787. * 进入回访完成页面
  788. *
  789. * @param request
  790. * @return
  791. * @throws Exception
  792. */
  793. @RequiresPermissions("customer:update:visit")
  794. @RequestMapping("/_update_visit_info")
  795. public ModelAndView toUpdateVisitFinish(HttpServletRequest request) throws Exception {
  796. ModelAndView mv = new ModelAndView("cm/customer/visit_finish");
  797. String customerId = request.getParameter("customerId");
  798. mv.addObject("customerId", customerId);
  799. return mv;
  800. }
  801. /**
  802. * 添加回访完成内容
  803. *
  804. * @param request
  805. * @param visit
  806. * @return
  807. */
  808. @ResponseBody
  809. @RequiresPermissions("customer:update:visit")
  810. @RequestMapping("/update_visit_finish")
  811. public ResponseJson updateVisitFinish(HttpServletRequest request, Visit visit) throws Exception {
  812. String customerId = request.getParameter("finish_customerId");
  813. if (!StringUtils.isNotEmpty(customerId)) {
  814. return new ResponseJson(500, "该客诉信息不存在!", 500);
  815. }
  816. visit.setCustomerId(Integer.parseInt(customerId));
  817. visit.setVisitStatus(2);
  818. //修改回访信息内容
  819. int num = visitService.updateVisit(visit);
  820. if (num > 0) {
  821. return new ResponseJson(200, "添加成功!", 200);
  822. } else {
  823. return new ResponseJson(500, "添加失败!", 500);
  824. }
  825. }
  826. /**
  827. * 进入回访信息详情
  828. *
  829. * @param request
  830. * @return
  831. * @throws Exception
  832. */
  833. @RequiresPermissions("customer:get:visit")
  834. @RequestMapping("/_visit_info")
  835. public ModelAndView toVisitInfo(HttpServletRequest request) throws Exception {
  836. ModelAndView mv = new ModelAndView("cm/customer/visit_detail");
  837. String customerId = request.getParameter("customerId");
  838. // 1:未回访,2:已回访
  839. String num = request.getParameter("num");
  840. if (!StringUtils.isNotEmpty(num)) {
  841. num = "2";
  842. }
  843. mv.addObject("customerId", customerId);
  844. mv.addObject("num", num);
  845. return mv;
  846. }
  847. /**
  848. * 获取回访信息详情
  849. *
  850. * @param request
  851. * @return
  852. */
  853. @ResponseBody
  854. @RequiresPermissions("customer:get:visit")
  855. @RequestMapping("/get_visit_info")
  856. public ResponseJson getVisitInfo(HttpServletRequest request) throws Exception {
  857. String customerId = request.getParameter("customerId");
  858. if (!StringUtils.isNotEmpty(customerId)) {
  859. return new ResponseJson(500, "该客诉信息不存在!", 500);
  860. }
  861. Visit visit = new Visit();
  862. visit.setCustomerId(Integer.parseInt(customerId));
  863. //查询回访信息集合
  864. List<Visit> visitList = visitService.listVisit(visit);
  865. if (visitList == null || visitList.size() == 0) {
  866. return new ResponseJson(500, "该客诉没有回访信息!", 500);
  867. }
  868. visit = visitList.get(0);
  869. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  870. rj.addResponseKeyValue("visit", visit);
  871. return rj;
  872. }
  873. /**
  874. * 进入问题描述页面
  875. *
  876. * @param request
  877. * @return
  878. * @throws Exception
  879. */
  880. @RequiresPermissions("customer:get:describe")
  881. @RequestMapping("/_question_describe")
  882. public ModelAndView toQuestionDescribe(HttpServletRequest request) throws Exception {
  883. ModelAndView mv = new ModelAndView("cm/customer/describe_detail");
  884. String customerId = request.getParameter("customerId");
  885. mv.addObject("customerId", customerId);
  886. return mv;
  887. }
  888. /**
  889. * 获取问题描述信息
  890. *
  891. * @param request
  892. * @return
  893. */
  894. @ResponseBody
  895. @RequiresPermissions("customer:get:describe")
  896. @RequestMapping("/get_describe_info")
  897. public ResponseJson getDescribeInfo(HttpServletRequest request) throws Exception {
  898. String customerId = request.getParameter("customerId");
  899. if (!StringUtils.isNotEmpty(customerId)) {
  900. return new ResponseJson(500, "该客诉信息不存在!", 500);
  901. }
  902. QuestionDescribe describe = new QuestionDescribe();
  903. describe.setCustomerId(Integer.parseInt(customerId));
  904. //查询问题集合
  905. List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
  906. if (questionList == null || questionList.size() == 0) {
  907. return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
  908. }
  909. describe = questionList.get(0);
  910. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  911. rj.addResponseKeyValue("describe", describe);
  912. return rj;
  913. }
  914. /**
  915. * 进入修改换新页面
  916. *
  917. * @param request
  918. * @return
  919. * @throws Exception
  920. */
  921. @RequiresPermissions("customer:update:renewed")
  922. @RequestMapping("/_update_renewed")
  923. public ModelAndView toUpdateRenewed(HttpServletRequest request) throws Exception {
  924. ModelAndView mv = new ModelAndView("cm/customer/update_renewed");
  925. String customerId = request.getParameter("customerId");
  926. mv.addObject("customerId", customerId);
  927. return mv;
  928. }
  929. /**
  930. * 获取换新详情
  931. *
  932. * @param request
  933. * @return
  934. */
  935. @ResponseBody
  936. @RequiresPermissions("customer:get:renewed")
  937. @RequestMapping("/get_renewed_info")
  938. public ResponseJson getRenewedInfo(HttpServletRequest request) throws Exception {
  939. String customerId = request.getParameter("customerId");
  940. if (!StringUtils.isNotEmpty(customerId)) {
  941. return new ResponseJson(500, "该客诉信息不存在!", 500);
  942. }
  943. Renewed renewed = new Renewed();
  944. renewed.setCustomerId(Integer.parseInt(customerId));
  945. renewed.setRenewedState(1);
  946. //获取换新详情和检测信息
  947. renewed = customerService.getRenewedInfo(renewed);
  948. if (renewed == null) {
  949. return new ResponseJson(500, "该客诉没有换新信息!", 500);
  950. } else {
  951. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  952. rj.addResponseKeyValue("renewed", renewed);
  953. return rj;
  954. }
  955. }
  956. /**
  957. * 修改换新信息
  958. *
  959. * @param request
  960. * @param renewed
  961. * @return
  962. * @throws Exception
  963. */
  964. @ResponseBody
  965. @RequiresPermissions("customer:update:renewed")
  966. @RequestMapping("/update_renewed_info")
  967. public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception {
  968. String closedProducts = request.getParameter("closed_products");
  969. String closedFittings = request.getParameter("closed_fittings");
  970. String mergeAddress = request.getParameter("merge_address");
  971. if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) {
  972. return new ResponseJson(500, "该换新信息不能修改!", 500);
  973. }
  974. // if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) {
  975. // renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue() * 100);
  976. // }
  977. if (!StringUtils.isNotEmpty(renewed.getRenewedBackEfastOrderId())) {
  978. return new ResponseJson(500, "请输入efast订单号!", 500);
  979. }
  980. if (StringUtils.isNotEmpty(mergeAddress)) {
  981. renewed.setRenewedSendMergeAddress(mergeAddress);
  982. }
  983. if(renewed.getRenewedBackStatus() != 1){
  984. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  985. cs.setSignclosedCustomerId(renewed.getCustomerId());
  986. cs.setSignclosedLogistics(renewed.getRenewedBackLogisticsCompany());
  987. cs.setSignclosedLogisticsNumber(renewed.getRenewedBackLogisticsNo());
  988. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  989. }
  990. //修改换新信息
  991. int num = renewedService.updateRenewedInfo(renewed, closedProducts, closedFittings);
  992. if (num > 0) {
  993. return new ResponseJson(200, "修改成功!", 200);
  994. } else {
  995. return new ResponseJson(500, "修改失败!", 500);
  996. }
  997. }
  998. /**
  999. * 进入修改维修页面
  1000. *
  1001. * @param request
  1002. * @return
  1003. * @throws Exception
  1004. */
  1005. @RequiresPermissions("customer:update:repair")
  1006. @RequestMapping("/_to_update_repair")
  1007. public ModelAndView toUpdateRepair(HttpServletRequest request) throws Exception {
  1008. ModelAndView mv = new ModelAndView("cm/customer/update_repair");
  1009. String customerId = request.getParameter("customerId");
  1010. mv.addObject("customerId", customerId);
  1011. return mv;
  1012. }
  1013. /**
  1014. * 进入修改维修页面
  1015. *
  1016. * @param request
  1017. * @return
  1018. * @throws Exception
  1019. */
  1020. @ResponseBody
  1021. @RequiresPermissions("customer:update:repair")
  1022. @RequestMapping("/_update_repair")
  1023. public ResponseJson updateRepairUI(HttpServletRequest request) throws Exception {
  1024. String customerId = request.getParameter("customerId");
  1025. if (!StringUtils.isNotEmpty(customerId)) {
  1026. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1027. }
  1028. Repair repair = new Repair();
  1029. repair.setCustomerId(Integer.parseInt(customerId));
  1030. repair.setRepairState(1);
  1031. //获取维修详情和品质检测信息
  1032. repair = customerService.getRepairInfo(repair);
  1033. if (repair == null) {
  1034. return new ResponseJson(500, "该客诉没有维修信息!", 500);
  1035. } else {
  1036. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1037. rj.addResponseKeyValue("repair", repair);
  1038. return rj;
  1039. }
  1040. }
  1041. /**
  1042. * 修改维修处理信息
  1043. *
  1044. * @param request
  1045. * @param repair
  1046. * @return
  1047. * @throws Exception
  1048. */
  1049. @ResponseBody
  1050. @RequiresPermissions("customer:update:repair")
  1051. @RequestMapping("/update_repair_info")
  1052. public ResponseJson updateRepairInfo(HttpServletRequest request, Repair repair) throws Exception {
  1053. if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) {
  1054. return new ResponseJson(500, "该换新信息不能修改!", 500);
  1055. }
  1056. String closedProducts = request.getParameter("closed_products");
  1057. String closedFittings = request.getParameter("closed_fittings");
  1058. String provinceNumber = request.getParameter("repairProvinceNumber");
  1059. String cityNumber = request.getParameter("repairCityNumber");
  1060. String areaNumber = request.getParameter("repairAreaNumber");
  1061. String mergeAddress = request.getParameter("merge_address");
  1062. if (StringUtils.isNotEmpty(provinceNumber)) {
  1063. repair.setProvinceNumber(Integer.parseInt(provinceNumber));
  1064. }
  1065. if (StringUtils.isNotEmpty(cityNumber)) {
  1066. repair.setCityNumber(Integer.parseInt(cityNumber));
  1067. }
  1068. if (StringUtils.isNotEmpty(areaNumber)) {
  1069. repair.setAreaNumber(Integer.parseInt(areaNumber));
  1070. }
  1071. // if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) {
  1072. // repair.setRepairBackPostage(repair.getRepairBackPostage().intValue() * 100);
  1073. // }
  1074. if (!StringUtils.isNotEmpty(repair.getRepairBackEfastOrderId())) {
  1075. return new ResponseJson(500, "请输入efast订单号!", 500);
  1076. }
  1077. if (StringUtils.isNotEmpty(mergeAddress)) {
  1078. repair.setRepairSendMergeAddress(mergeAddress);
  1079. }
  1080. /*SalesOrder order = new SalesOrder();
  1081. order.setSalesOrderStatus(1);
  1082. order.setSalesOrderId(repair.getRepairBackEfastOrderId());
  1083. int count = salesOrderService.getOrderInfoCount(order);
  1084. //判断efast订单是否可查出有效数据
  1085. if (count == 0) {
  1086. return new ResponseJson(500, "该efast订单号无效,请重新输入!", 500);
  1087. }*/
  1088. if(repair.getRepairBackStatus() != 1){
  1089. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1090. cs.setSignclosedCustomerId(repair.getCustomerId());
  1091. cs.setSignclosedLogistics(repair.getRepairBackLogisticsCompany());
  1092. cs.setSignclosedLogisticsNumber(repair.getRepairBackLogisticsNo());
  1093. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1094. }
  1095. //修改维修信息
  1096. int num = repairService.updateRepairInfo(repair, closedProducts, closedFittings);
  1097. if (num > 0) {
  1098. return new ResponseJson(200, "修改成功!", 200);
  1099. } else {
  1100. return new ResponseJson(500, "修改失败!", 500);
  1101. }
  1102. }
  1103. /**
  1104. * 进入修改退货页面
  1105. *
  1106. * @param request
  1107. * @return
  1108. * @throws Exception
  1109. */
  1110. @RequiresPermissions("customer:update:backGoods")
  1111. @RequestMapping("/_to_update_book_goods")
  1112. public ModelAndView toUpdateBookGoods(HttpServletRequest request) throws Exception {
  1113. ModelAndView mv = new ModelAndView("cm/customer/update_back_goods");
  1114. String customerId = request.getParameter("customerId");
  1115. mv.addObject("customerId", customerId);
  1116. return mv;
  1117. }
  1118. /**
  1119. * 进入修改售后退货页面
  1120. *
  1121. * @param request
  1122. * @return
  1123. * @throws Exception
  1124. */
  1125. @ResponseBody
  1126. @RequiresPermissions("customer:update:backGoods")
  1127. @RequestMapping("/_update_back_goods")
  1128. public ResponseJson updateBackGoodsUI(HttpServletRequest request) throws Exception {
  1129. String customerId = request.getParameter("customerId");
  1130. if (!StringUtils.isNotEmpty(customerId)) {
  1131. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1132. }
  1133. BackGoods backGoods = new BackGoods();
  1134. backGoods.setCustomerId(Integer.parseInt(customerId));
  1135. //获取售后退货信息
  1136. backGoods = customerService.getBackGoods(backGoods);
  1137. if (backGoods == null) {
  1138. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1139. } else {
  1140. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1141. rj.addResponseKeyValue("backGoods", backGoods);
  1142. return rj;
  1143. }
  1144. }
  1145. /**
  1146. * 修改售后退货信息
  1147. *
  1148. * @param request
  1149. * @param backGoods
  1150. * @return
  1151. * @throws Exception
  1152. */
  1153. @ResponseBody
  1154. @RequiresPermissions("customer:update:backGoods")
  1155. @RequestMapping("/update_back_goods")
  1156. public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception {
  1157. String closedProducts = request.getParameter("closed_products");
  1158. String closedFittings = request.getParameter("closed_fittings");
  1159. if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) {
  1160. return new ResponseJson(500, "该售后退货信息不能修改!", 500);
  1161. }
  1162. // if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) {
  1163. // backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue() * 100);
  1164. // }
  1165. if(backGoods.getBackGoodsBackStatus() != 1){
  1166. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1167. cs.setSignclosedCustomerId(backGoods.getCustomerId());
  1168. cs.setSignclosedLogistics(backGoods.getBackGoodsBackLogisticsCompany());
  1169. cs.setSignclosedLogisticsNumber(backGoods.getBackGoodsBackLogisticsNo());
  1170. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1171. }
  1172. int num = backGoodsService.updateBackGoods(backGoods, closedProducts, closedFittings);
  1173. if (num > 0) {
  1174. return new ResponseJson(200, "修改成功!", 200);
  1175. } else {
  1176. return new ResponseJson(500, "修改失败!", 500);
  1177. }
  1178. }
  1179. /**
  1180. * 进入修改补寄页面
  1181. *
  1182. * @param request
  1183. * @return
  1184. * @throws Exception
  1185. */
  1186. @RequiresPermissions("customer:update:reissue")
  1187. @RequestMapping("/_to_update_reissue")
  1188. public ModelAndView toUpdateReissue(HttpServletRequest request) throws Exception {
  1189. ModelAndView mv = new ModelAndView("cm/customer/update_reissue");
  1190. String customerId = request.getParameter("customerId");
  1191. mv.addObject("customerId", customerId);
  1192. return mv;
  1193. }
  1194. /**
  1195. * 进入修改补寄信息页面
  1196. *
  1197. * @param request
  1198. * @return
  1199. */
  1200. @ResponseBody
  1201. @RequiresPermissions("customer:update:reissue")
  1202. @RequestMapping("/get_reissue_info")
  1203. public ResponseJson getReissueInfo(HttpServletRequest request) {
  1204. String customerId = request.getParameter("customerId");
  1205. if (!StringUtils.isNotEmpty(customerId)) {
  1206. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1207. }
  1208. Reissue reissue = new Reissue();
  1209. reissue.setCustomerId(Integer.parseInt(customerId));
  1210. //获取售后补寄信息
  1211. reissue = customerService.getReissue(reissue);
  1212. if (reissue == null) {
  1213. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1214. } else {
  1215. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1216. rj.addResponseKeyValue("reissue", reissue);
  1217. return rj;
  1218. }
  1219. }
  1220. /**
  1221. * 修改售后补寄信息
  1222. *
  1223. * @param request
  1224. * @param reissue
  1225. * @return
  1226. * @throws Exception
  1227. */
  1228. @ResponseBody
  1229. @RequiresPermissions("customer:update:reissue")
  1230. @RequestMapping("/update_reissue_info")
  1231. public ResponseJson updateReissueInfo(HttpServletRequest request, Reissue reissue) throws Exception {
  1232. String provinceNumber = request.getParameter("reissueProvinceNumber");
  1233. String cityNumber = request.getParameter("reissueCityNumber");
  1234. String areaNumber = request.getParameter("reissueAreaNumber");
  1235. String mergeAddress = request.getParameter("merge_address");
  1236. if (!StringUtils.isNotEmpty(reissue.getReissueId().toString())) {
  1237. return new ResponseJson(500, "该售后补寄信息不能修改!", 500);
  1238. }
  1239. if (StringUtils.isNotEmpty(provinceNumber)) {
  1240. reissue.setProvinceNumber(Integer.parseInt(provinceNumber));
  1241. }
  1242. if (StringUtils.isNotEmpty(cityNumber)) {
  1243. reissue.setCityNumber(Integer.parseInt(cityNumber));
  1244. }
  1245. if (StringUtils.isNotEmpty(areaNumber)) {
  1246. reissue.setAreaNumber(Integer.parseInt(areaNumber));
  1247. }
  1248. if (StringUtils.isNotEmpty(mergeAddress)) {
  1249. reissue.setReissueSendMergeAddress(mergeAddress);
  1250. }
  1251. //修改售后补寄信息
  1252. int num = reissueService.updateReissueInfo(reissue);
  1253. if (num > 0) {
  1254. return new ResponseJson(200, "修改成功!", 200);
  1255. } else {
  1256. return new ResponseJson(500, "修改失败!", 500);
  1257. }
  1258. }
  1259. /**
  1260. * 进入修改退货页面
  1261. *
  1262. * @param request
  1263. * @return
  1264. * @throws Exception
  1265. */
  1266. @RequiresPermissions("customer:update:noreason")
  1267. @RequestMapping("/_update_noreason_back")
  1268. public ModelAndView toUpdateNoreasonBack(HttpServletRequest request) throws Exception {
  1269. ModelAndView mv = new ModelAndView("cm/customer/update_noreason_back");
  1270. String customerId = request.getParameter("customerId");
  1271. mv.addObject("customerId", customerId);
  1272. return mv;
  1273. }
  1274. /**
  1275. * 获取无理由退货信息
  1276. *
  1277. * @param request
  1278. * @return
  1279. * @throws Exception
  1280. */
  1281. @ResponseBody
  1282. @RequiresPermissions("customer:update:noreason")
  1283. @RequestMapping("/get_noreason_back")
  1284. public ResponseJson getNoreasonBack(HttpServletRequest request) throws Exception {
  1285. String customerId = request.getParameter("customerId");
  1286. if (!StringUtils.isNotEmpty(customerId)) {
  1287. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1288. }
  1289. NoreasonBack noreasonBack = new NoreasonBack();
  1290. noreasonBack.setCustomerId(Integer.parseInt(customerId));
  1291. noreasonBack.setNoreasonBackState(1);
  1292. //获取无理由退货信息
  1293. noreasonBack = customerService.getNoreasonBack(noreasonBack);
  1294. if (noreasonBack == null) {
  1295. return new ResponseJson(500, "该客诉没有无理由售后退货信息!", 500);
  1296. } else {
  1297. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1298. rj.addResponseKeyValue("noreasonBack", noreasonBack);
  1299. return rj;
  1300. }
  1301. }
  1302. /**
  1303. * 修改售后无理由退货信息
  1304. *
  1305. * @param request
  1306. * @param noreasonBack
  1307. * @return
  1308. * @throws Exception
  1309. */
  1310. @ResponseBody
  1311. @RequiresPermissions("customer:update:noreason")
  1312. @RequestMapping("/update_noreason")
  1313. public ResponseJson updateNoreason(HttpServletRequest request, NoreasonBack noreasonBack) throws Exception {
  1314. String closedProducts = request.getParameter("closed_products");
  1315. String closedFittings = request.getParameter("closed_fittings");
  1316. if (!StringUtils.isNotEmpty(noreasonBack.getNoreasonBackId().toString())) {
  1317. return new ResponseJson(500, "该售后无理由退货信息不能修改!", 500);
  1318. }
  1319. // if (StringUtils.isNotEmpty(noreasonBack.getNoreasonBackBackPostage().toString())) {
  1320. // noreasonBack.setNoreasonBackBackPostage(noreasonBack.getNoreasonBackBackPostage().intValue() * 100);
  1321. // }
  1322. if(noreasonBack.getNoreasonBackBackStatus() != 1){
  1323. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1324. cs.setSignclosedCustomerId(noreasonBack.getCustomerId());
  1325. cs.setSignclosedLogistics(noreasonBack.getNoreasonBackBackLogisticsCompany());
  1326. cs.setSignclosedLogisticsNumber(noreasonBack.getNoreasonBackBackLogisticsNo());
  1327. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1328. }
  1329. int num = noreasonBackService.updateNoreasonBack(noreasonBack, closedProducts, closedFittings);
  1330. if (num > 0) {
  1331. return new ResponseJson(200, "修改成功!", 200);
  1332. } else {
  1333. return new ResponseJson(500, "修改失败!", 500);
  1334. }
  1335. }
  1336. }