AdminCustomerController.java 51 KB

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