AdminCustomerController.java 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365
  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. // }
  216. } catch (RuntimeException e) {
  217. return new ResponseJson(500, "添加订单成功--"+ e.getMessage(), 500);
  218. }
  219. Integer orderId = salesOrder.getSalesId();
  220. ResponseJson rj = new ResponseJson(200, "添加订单成功", 200);
  221. rj.addResponseKeyValue("orderId", orderId);
  222. return rj;
  223. }
  224. /**
  225. * 获取店铺集合
  226. *
  227. * @param request
  228. * @param storeInfo
  229. * @return
  230. */
  231. @ResponseBody
  232. @RequiresPermissions("customer:add:customer")
  233. @RequestMapping(value = "/select_storeInfo")
  234. public ResponseJson listStoreInfo(HttpServletRequest request, StoreInfo storeInfo) {
  235. storeInfo.setStoreStatus(1);
  236. List<StoreInfo> storeInfoList = storeInfoService.listStore(storeInfo);
  237. if (storeInfoList == null || storeInfoList.size() < 1) {
  238. return new ResponseJson(500, "查询失败", 500);
  239. } else {
  240. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  241. rj.addResponseKeyValue("storeInfoList", storeInfoList);
  242. return rj;
  243. }
  244. }
  245. /**
  246. * 获取订单集合
  247. *
  248. * @param request
  249. * @param salesOrder
  250. * @return
  251. */
  252. @ResponseBody
  253. @RequiresPermissions("customer:add:customer")
  254. @RequestMapping(value = "/select_salesOrder")
  255. public ResponseJson listOrder(HttpServletRequest request, SalesOrder salesOrder) {
  256. List<SalesOrder> salesOrderList = salesOrderService.listSalesOrder(salesOrder);
  257. for (SalesOrder order : salesOrderList) {
  258. SalesOrderItem salesOrderItem = new SalesOrderItem();
  259. salesOrderItem.setItemOrderId(order.getSalesId());
  260. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  261. order.setSalesOrderItemList(salesOrderItemList);
  262. }
  263. if (salesOrderList == null || salesOrderList.size() < 1) {
  264. return new ResponseJson(500, "查询失败", 500);
  265. } else {
  266. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  267. rj.addResponseKeyValue("salesOrderList", salesOrderList);
  268. return rj;
  269. }
  270. }
  271. /**
  272. * 分页查询客诉列表信息
  273. *
  274. * @param request
  275. * @param customerInfo
  276. * @param pageSize
  277. * @param pageNO
  278. * @param totalNum
  279. * @return
  280. * @throws Exception
  281. */
  282. @RequiresPermissions("customer:select:customer")
  283. @RequestMapping("/select_customer_list")
  284. public ModelAndView selectCustomerList(HttpServletRequest request, CustomerInfo customerInfo,
  285. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  286. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  287. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  288. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  289. PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
  290. if (totalNum != 0) {
  291. pagedResult.setTotal(totalNum);
  292. }
  293. ProductType productType = new ProductType();
  294. //查询产品类型集合
  295. List<ProductType> typeList = productService.listProductType(productType);
  296. //查询客诉类型集合
  297. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  298. //查询跟进客服集合
  299. Admin admin = new Admin();
  300. admin.setAdminStatus(1);
  301. List<Admin> adminList = sysService.listSelectAdmin(admin);
  302. //获取登录人id
  303. Integer loginAdminId = AdminUtils.getLoginAdminId();
  304. mv.addObject("loginAdminId", loginAdminId);
  305. mv.addObject("typeList", typeList);
  306. mv.addObject("complaintTypeList", complaintTypeList);
  307. mv.addObject("adminList", adminList);
  308. customerInfo.setVisit(null);
  309. customerInfo.setCustomerCommon(null);
  310. customerInfo.setComplaintDetectList(null);
  311. StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
  312. return mv;
  313. }
  314. /**
  315. * 进入客诉基本信息页面
  316. *
  317. * @param request
  318. * @return
  319. * @throws Exception
  320. */
  321. @RequiresPermissions("customer:select:customer")
  322. @RequestMapping("/_customer_info")
  323. public ModelAndView toCustomerInfo(HttpServletRequest request) throws Exception {
  324. ModelAndView mv = new ModelAndView("cm/customer/custome_detail");
  325. String customerId = request.getParameter("customerId");
  326. mv.addObject("customerId", customerId);
  327. return mv;
  328. }
  329. /**
  330. * 查询客诉基本信息
  331. *
  332. * @param request
  333. * @return
  334. * @throws Exception
  335. */
  336. @ResponseBody
  337. @RequiresPermissions("customer:select:customer")
  338. @RequestMapping("/get_customer_info")
  339. public ResponseJson getCustomerInfo(HttpServletRequest request) throws Exception {
  340. String customerId = request.getParameter("customerId");
  341. if (!StringUtils.isNotEmpty(customerId)) {
  342. return new ResponseJson(500, "该客诉信息不存在!", 500);
  343. }
  344. CustomerInfo customerInfo = new CustomerInfo();
  345. customerInfo.setCustomerId(Integer.parseInt(customerId));
  346. Map<String, Object> map = customerService.getCustomerInfo(customerInfo);
  347. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  348. rj.addResponseKeyValue("customerCommon", map.get("customerCommon"));
  349. rj.addResponseKeyValue("customer", map.get("customer"));
  350. rj.addResponseKeyValue("salesOrder", map.get("salesOrder"));
  351. return rj;
  352. }
  353. /**
  354. * 进入添加回访页面
  355. *
  356. * @param request
  357. * @return
  358. * @throws Exception
  359. */
  360. @RequiresPermissions("customer:select:customer")
  361. @RequestMapping("/_add_visit")
  362. public ModelAndView toAddVisit(HttpServletRequest request) throws Exception {
  363. ModelAndView mv = new ModelAndView("cm/customer/add_visit");
  364. String customerId = request.getParameter("customerId");
  365. //查询跟进客服集合
  366. Admin admin = new Admin();
  367. admin.setAdminStatus(1);
  368. List<Admin> adminList = sysService.listSelectAdmin(admin);
  369. //获取登录人id
  370. Integer loginAdminId = AdminUtils.getLoginAdminId();
  371. mv.addObject("loginAdminId", loginAdminId);
  372. mv.addObject("customerId", customerId);
  373. mv.addObject("adminList", adminList);
  374. return mv;
  375. }
  376. /**
  377. * 添加回访信息
  378. *
  379. * @param request
  380. * @param visit
  381. * @return
  382. */
  383. @ResponseBody
  384. @RequiresPermissions("customer:add:visit")
  385. @RequestMapping("/add_visit_info")
  386. public ResponseJson addVisitInfo(HttpServletRequest request, Visit visit) throws Exception {
  387. String visitAdminId = request.getParameter("visitAdminId");
  388. if (!StringUtils.isNotEmpty(visitAdminId)) {
  389. return new ResponseJson(500, "请选择回访人!", 500);
  390. }
  391. visit.setAdminId(Integer.parseInt(visitAdminId));
  392. visit.setVisitStatus(1);
  393. visit.setVisitCreateTime(new Date());
  394. int num = visitService.addVisitInfo(visit, visit.getCustomerId());
  395. if (num > 0) {
  396. return new ResponseJson(200, "修改成功!", 200);
  397. } else {
  398. return new ResponseJson(500, "修改失败!", 500);
  399. }
  400. }
  401. /**
  402. * 修改客诉状态为已解决
  403. *
  404. * @param request
  405. * @return
  406. */
  407. @ResponseBody
  408. @RequiresPermissions("customer:update:customerIsSolve")
  409. @RequestMapping("/update_customerIsSolve")
  410. public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception {
  411. String customerId = request.getParameter("customerId");
  412. if (!StringUtils.isNotEmpty(customerId)) {
  413. return new ResponseJson(500, "该客诉信息不存在!", 500);
  414. }
  415. //根据id获取客诉信息
  416. CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId));
  417. if (customer == null) {
  418. return new ResponseJson(500, "该客诉信息不存在!", 500);
  419. }
  420. if (customer.getCustomerIsSolve().intValue() != 2) {
  421. return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500);
  422. }
  423. CustomerInfo customerInfo = new CustomerInfo();
  424. customerInfo.setCustomerId(Integer.parseInt(customerId));
  425. customerInfo.setCustomerIsSolve(1);
  426. //修改客诉信息
  427. int num = customerService.updateCustomerInfo(customerInfo);
  428. if (num > 0) {
  429. return new ResponseJson(200, "修改成功!", 200);
  430. } else {
  431. return new ResponseJson(500, "修改失败!", 500);
  432. }
  433. }
  434. /**
  435. * 查询客服
  436. *
  437. * @param request
  438. * @return
  439. */
  440. @ResponseBody
  441. @RequiresPermissions("customer:add:customer")
  442. @RequestMapping("/select_sys_admin")
  443. public ResponseJson selectSysAdmin(HttpServletRequest request) throws Exception {
  444. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  445. Integer adminId = AdminUtils.getLoginAdminId();
  446. Admin admin = new Admin();
  447. List<Admin> adminList = sysService.listSelectAdmin(admin);
  448. if (adminList.size() > 0) {
  449. rj.addResponseKeyValue("adminList", adminList);
  450. rj.addResponseKeyValue("adminId", adminId);
  451. return rj;
  452. } else {
  453. return new ResponseJson(500, "查询失败!", 500);
  454. }
  455. }
  456. /**
  457. * 查询产品类型
  458. *
  459. * @param request
  460. * @return
  461. */
  462. @ResponseBody
  463. @RequiresPermissions("customer:add:customer")
  464. @RequestMapping("/select_produce_type")
  465. public ResponseJson selectProduceType(HttpServletRequest request) throws Exception {
  466. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  467. ProductType productType = new ProductType();
  468. productType.setTypeStatus(1);
  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. ResponseJson rjx = this.isValiData(customerInfo);
  534. if(rjx.getResultCode() == 500){
  535. return rjx;
  536. }
  537. Integer flag = 0;
  538. JSONArray jsonArray;
  539. List<SendProdcue> sendProdcueList;
  540. List<SendFitting> sendFittingList;
  541. List<ClosedProdcue> closedProdcueList;
  542. List<ClosedFitting> closedFittingList;
  543. Integer customerIsSolve = customerInfo.getCustomerIsSolve(); //处理类型
  544. String phone = customerInfo.getCustomerTel(); //手机号码
  545. Integer typeCompany = customerInfo.getTypeCompany(); // 所属商城 1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
  546. jsonArray = JSONArray.fromObject(sendProdcuesJson);
  547. sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
  548. jsonArray = JSONArray.fromObject(sendFittingsJson);
  549. sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
  550. jsonArray = JSONArray.fromObject(closedProdcuesJson);
  551. closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
  552. jsonArray = JSONArray.fromObject(closedFittingsJson);
  553. closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
  554. customerCommon.setSendProdcues(sendProdcueList);
  555. customerCommon.setSendFittings(sendFittingList);
  556. customerCommon.setClosedProdcues(closedProdcueList);
  557. customerCommon.setClosedFittings(closedFittingList);
  558. customerInfo.setCustomerCommon(customerCommon);
  559. String orderId = "";
  560. if (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5) {
  561. Integer adminId = AdminUtils.getLoginAdminId();
  562. orderId = OrderNoUtil.createOrderCode(adminId);
  563. }
  564. customerInfo.setTransactionNumber(orderId);
  565. logger.info("-----------------添加客诉开始----------------------");
  566. try {
  567. flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
  568. } catch (RuntimeException e) {
  569. return new ResponseJson(500, e.getMessage(), 500);
  570. }
  571. logger.info("-----------------添加客诉结束----------------------");
  572. if (flag < 1) {
  573. return new ResponseJson(500, "添加客诉失败!", 500);
  574. }
  575. //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  576. if (customerIsSolve == 3 || customerIsSolve == 4 || customerIsSolve == 5 || customerIsSolve == 6 || customerIsSolve == 7) {
  577. String solveMsg = "";
  578. switch (customerIsSolve) {
  579. case 3:
  580. solveMsg = "为您更换新机";
  581. break;
  582. case 4:
  583. solveMsg = "为您维修机器";
  584. break;
  585. case 5:
  586. solveMsg = "为您补发产品";
  587. break;
  588. case 6:
  589. solveMsg = "为您办理退货";
  590. break;
  591. case 7:
  592. solveMsg = "为您办理退货";
  593. break;
  594. }
  595. String addCustomerSuccessMsg = "";
  596. String typeMsg = "";
  597. switch (typeCompany) {
  598. case 1:
  599. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_WATERO;
  600. typeMsg = "美国WaterO售后";
  601. break;
  602. case 2:
  603. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_SHANGDUO;
  604. typeMsg = "上朵售后";
  605. break;
  606. case 3:
  607. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_YULIA;
  608. typeMsg = "YULIA售后";
  609. break;
  610. }
  611. Object [] msg = new Object[]{solveMsg,typeMsg};
  612. String text = MessageFormat.format(addCustomerSuccessMsg, msg);
  613. logger.info("添加客诉成功后,给 "+ phone +" 手机用户发送短信:" + text );
  614. String result = smsService.sendOtherCMS(phone, text);
  615. if (!"SUCCESS".equals(result)) {
  616. return new ResponseJson(505, "添加客诉发送短信失败,失败原因:" + result + "<br>客诉信息发送失败并不影响客诉添加。", 505);
  617. }
  618. }
  619. return new ResponseJson(200, "添加客诉成功!", 200);
  620. }
  621. /**
  622. * 验证方法
  623. *
  624. * @param customerInfo
  625. * @return
  626. */
  627. public ResponseJson isValiData(CustomerInfo customerInfo) {
  628. ResponseJson rj = new ResponseJson();
  629. if(customerInfo.getAdminId() == null){
  630. return new ResponseJson(500, "未填写客诉id", 500);
  631. }
  632. return rj;
  633. }
  634. /**
  635. * 添加客诉
  636. *
  637. * @param request
  638. * @return
  639. */
  640. @ResponseBody
  641. @RequiresPermissions("customer:add:customer")
  642. @RequestMapping("/send_phone_sms")
  643. public ResponseJson sendPhoneSms(HttpServletRequest request, String type, String phone, Integer typeCompany, ComplaintQuestionInfo complaintQuestionInfo) throws Exception {
  644. String url = NameUtils.getConfig("website");
  645. Integer flag = 1;
  646. if (typeCompany == null || typeCompany == 0) {
  647. return new ResponseJson(500, "未获取到产品类型!", 500);
  648. }
  649. String con = "";
  650. if (type != null && !"".equals(type)) {
  651. if ("p".equals(type)) { //problem" 问题处理; mailAddress:邮寄地址;
  652. if (complaintQuestionInfo.getQuestionId() == null || "".equals(complaintQuestionInfo.getQuestionId())) {
  653. complaintQuestionInfo.setQuestionState(1);
  654. complaintQuestionInfo.setQuestionIsQcDetect(0);
  655. complaintQuestionInfo = complaintQuestionInfoService.insertBackInfo(complaintQuestionInfo);
  656. } else {
  657. complaintQuestionInfo.setSmallClassId(null); //不能修改小类类型
  658. flag = complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
  659. if (flag < 1) {
  660. return new ResponseJson(500, "问题修改失败!", 500);
  661. }
  662. }
  663. url += "/" + complaintQuestionInfo.getQuestionId();
  664. switch (typeCompany) {
  665. case 1:
  666. con = SmsConfig.SEND_PRODUCT_SEND_WATERO;
  667. break;
  668. case 2:
  669. con = SmsConfig.SEND_PRODUCT_SEND_SHANGDUO;
  670. break;
  671. case 3:
  672. con = SmsConfig.SEND_PRODUCT_SEND_YULIA;
  673. break;
  674. }
  675. } else if ("m".equals(type)) {
  676. if (complaintQuestionInfo.getQuestionId() == null) {
  677. return new ResponseJson(500, "未获取到邮寄信息!", 500);
  678. }
  679. complaintQuestionInfo.setQuestionName(null);
  680. complaintQuestionInfo.setSmallClassId(null);
  681. url += "/5";
  682. switch (typeCompany) {
  683. case 1:
  684. con = SmsConfig.SEND_PRODUCT_SMS_WATERO;
  685. break;
  686. case 2:
  687. con = SmsConfig.SEND_PRODUCT_SMS_SHANGDUO;
  688. break;
  689. case 3:
  690. con = SmsConfig.SEND_PRODUCT_SMS_YULIA;
  691. break;
  692. }
  693. }
  694. }
  695. String text = MessageFormat.format(con, url);
  696. logger.info("给 " + phone + " 手机用户发送短信:" + text);
  697. String result = smsService.sendOtherCMS(phone, text);
  698. if ("SUCCESS".equals(result)) {
  699. return new ResponseJson(200, "发送短信成功!", 200);
  700. } else {
  701. return new ResponseJson(500, "发送短信失败,失败原因:" + result, 500);
  702. }
  703. }
  704. /**
  705. * 进入回访完成页面
  706. *
  707. * @param request
  708. * @return
  709. * @throws Exception
  710. */
  711. @RequiresPermissions("customer:update:visit")
  712. @RequestMapping("/_update_visit_info")
  713. public ModelAndView toUpdateVisitFinish(HttpServletRequest request) throws Exception {
  714. ModelAndView mv = new ModelAndView("cm/customer/visit_finish");
  715. String customerId = request.getParameter("customerId");
  716. mv.addObject("customerId", customerId);
  717. return mv;
  718. }
  719. /**
  720. * 添加回访完成内容
  721. *
  722. * @param request
  723. * @param visit
  724. * @return
  725. */
  726. @ResponseBody
  727. @RequiresPermissions("customer:update:visit")
  728. @RequestMapping("/update_visit_finish")
  729. public ResponseJson updateVisitFinish(HttpServletRequest request, Visit visit) throws Exception {
  730. String customerId = request.getParameter("finish_customerId");
  731. if (!StringUtils.isNotEmpty(customerId)) {
  732. return new ResponseJson(500, "该客诉信息不存在!", 500);
  733. }
  734. visit.setCustomerId(Integer.parseInt(customerId));
  735. visit.setVisitStatus(2);
  736. //修改回访信息内容
  737. int num = visitService.updateVisit(visit);
  738. if (num > 0) {
  739. return new ResponseJson(200, "添加成功!", 200);
  740. } else {
  741. return new ResponseJson(500, "添加失败!", 500);
  742. }
  743. }
  744. /**
  745. * 进入回访信息详情
  746. *
  747. * @param request
  748. * @return
  749. * @throws Exception
  750. */
  751. @RequiresPermissions("customer:get:visit")
  752. @RequestMapping("/_visit_info")
  753. public ModelAndView toVisitInfo(HttpServletRequest request) throws Exception {
  754. ModelAndView mv = new ModelAndView("cm/customer/visit_detail");
  755. String customerId = request.getParameter("customerId");
  756. // 1:未回访,2:已回访
  757. String num = request.getParameter("num");
  758. if (!StringUtils.isNotEmpty(num)) {
  759. num = "2";
  760. }
  761. mv.addObject("customerId", customerId);
  762. mv.addObject("num", num);
  763. return mv;
  764. }
  765. /**
  766. * 获取回访信息详情
  767. *
  768. * @param request
  769. * @return
  770. */
  771. @ResponseBody
  772. @RequiresPermissions("customer:get:visit")
  773. @RequestMapping("/get_visit_info")
  774. public ResponseJson getVisitInfo(HttpServletRequest request) throws Exception {
  775. String customerId = request.getParameter("customerId");
  776. if (!StringUtils.isNotEmpty(customerId)) {
  777. return new ResponseJson(500, "该客诉信息不存在!", 500);
  778. }
  779. Visit visit = new Visit();
  780. visit.setCustomerId(Integer.parseInt(customerId));
  781. //查询回访信息集合
  782. List<Visit> visitList = visitService.listVisit(visit);
  783. if (visitList == null || visitList.size() == 0) {
  784. return new ResponseJson(500, "该客诉没有回访信息!", 500);
  785. }
  786. visit = visitList.get(0);
  787. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  788. rj.addResponseKeyValue("visit", visit);
  789. return rj;
  790. }
  791. /**
  792. * 进入问题描述页面
  793. *
  794. * @param request
  795. * @return
  796. * @throws Exception
  797. */
  798. @RequiresPermissions("customer:get:describe")
  799. @RequestMapping("/_question_describe")
  800. public ModelAndView toQuestionDescribe(HttpServletRequest request) throws Exception {
  801. ModelAndView mv = new ModelAndView("cm/customer/describe_detail");
  802. String customerId = request.getParameter("customerId");
  803. mv.addObject("customerId", customerId);
  804. return mv;
  805. }
  806. /**
  807. * 获取问题描述信息
  808. *
  809. * @param request
  810. * @return
  811. */
  812. @ResponseBody
  813. @RequiresPermissions("customer:get:describe")
  814. @RequestMapping("/get_describe_info")
  815. public ResponseJson getDescribeInfo(HttpServletRequest request) throws Exception {
  816. String customerId = request.getParameter("customerId");
  817. if (!StringUtils.isNotEmpty(customerId)) {
  818. return new ResponseJson(500, "该客诉信息不存在!", 500);
  819. }
  820. QuestionDescribe describe = new QuestionDescribe();
  821. describe.setCustomerId(Integer.parseInt(customerId));
  822. //查询问题集合
  823. List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
  824. if (questionList == null || questionList.size() == 0) {
  825. return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
  826. }
  827. describe = questionList.get(0);
  828. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  829. rj.addResponseKeyValue("describe", describe);
  830. return rj;
  831. }
  832. /**
  833. * 进入修改换新页面
  834. *
  835. * @param request
  836. * @return
  837. * @throws Exception
  838. */
  839. @RequiresPermissions("customer:update:renewed")
  840. @RequestMapping("/_update_renewed")
  841. public ModelAndView toUpdateRenewed(HttpServletRequest request) throws Exception {
  842. ModelAndView mv = new ModelAndView("cm/customer/update_renewed");
  843. String customerId = request.getParameter("customerId");
  844. mv.addObject("customerId", customerId);
  845. return mv;
  846. }
  847. /**
  848. * 获取换新详情
  849. *
  850. * @param request
  851. * @return
  852. */
  853. @ResponseBody
  854. @RequiresPermissions("customer:get:renewed")
  855. @RequestMapping("/get_renewed_info")
  856. public ResponseJson getRenewedInfo(HttpServletRequest request) throws Exception {
  857. String customerId = request.getParameter("customerId");
  858. if (!StringUtils.isNotEmpty(customerId)) {
  859. return new ResponseJson(500, "该客诉信息不存在!", 500);
  860. }
  861. Renewed renewed = new Renewed();
  862. renewed.setCustomerId(Integer.parseInt(customerId));
  863. renewed.setRenewedState(1);
  864. //获取换新详情和检测信息
  865. renewed = customerService.getRenewedInfo(renewed);
  866. if (renewed == null) {
  867. return new ResponseJson(500, "该客诉没有换新信息!", 500);
  868. } else {
  869. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  870. rj.addResponseKeyValue("renewed", renewed);
  871. return rj;
  872. }
  873. }
  874. /**
  875. * 修改换新信息
  876. *
  877. * @param request
  878. * @param renewed
  879. * @return
  880. * @throws Exception
  881. */
  882. @ResponseBody
  883. @RequiresPermissions("customer:update:renewed")
  884. @RequestMapping("/update_renewed_info")
  885. public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception {
  886. String closedProducts = request.getParameter("closed_products");
  887. String closedFittings = request.getParameter("closed_fittings");
  888. String mergeAddress = request.getParameter("merge_address");
  889. if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) {
  890. return new ResponseJson(500, "该换新信息不能修改!", 500);
  891. }
  892. if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) {
  893. renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue() * 100);
  894. }
  895. if (!StringUtils.isNotEmpty(renewed.getRenewedBackEfastOrderId())) {
  896. return new ResponseJson(500, "请输入efast订单号!", 500);
  897. }
  898. if (StringUtils.isNotEmpty(mergeAddress)) {
  899. renewed.setRenewedSendMergeAddress(mergeAddress);
  900. }
  901. //修改换新信息
  902. int num = renewedService.updateRenewedInfo(renewed, closedProducts, closedFittings);
  903. if (num > 0) {
  904. return new ResponseJson(200, "修改成功!", 200);
  905. } else {
  906. return new ResponseJson(500, "修改失败!", 500);
  907. }
  908. }
  909. /**
  910. * 进入修改维修页面
  911. *
  912. * @param request
  913. * @return
  914. * @throws Exception
  915. */
  916. @RequiresPermissions("customer:update:repair")
  917. @RequestMapping("/_to_update_repair")
  918. public ModelAndView toUpdateRepair(HttpServletRequest request) throws Exception {
  919. ModelAndView mv = new ModelAndView("cm/customer/update_repair");
  920. String customerId = request.getParameter("customerId");
  921. mv.addObject("customerId", customerId);
  922. return mv;
  923. }
  924. /**
  925. * 进入修改维修页面
  926. *
  927. * @param request
  928. * @return
  929. * @throws Exception
  930. */
  931. @ResponseBody
  932. @RequiresPermissions("customer:update:repair")
  933. @RequestMapping("/_update_repair")
  934. public ResponseJson updateRepairUI(HttpServletRequest request) throws Exception {
  935. String customerId = request.getParameter("customerId");
  936. if (!StringUtils.isNotEmpty(customerId)) {
  937. return new ResponseJson(500, "该客诉信息不存在!", 500);
  938. }
  939. Repair repair = new Repair();
  940. repair.setCustomerId(Integer.parseInt(customerId));
  941. repair.setRepairState(1);
  942. //获取维修详情和品质检测信息
  943. repair = customerService.getRepairInfo(repair);
  944. if (repair == null) {
  945. return new ResponseJson(500, "该客诉没有维修信息!", 500);
  946. } else {
  947. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  948. rj.addResponseKeyValue("repair", repair);
  949. return rj;
  950. }
  951. }
  952. /**
  953. * 修改维修处理信息
  954. *
  955. * @param request
  956. * @param repair
  957. * @return
  958. * @throws Exception
  959. */
  960. @ResponseBody
  961. @RequiresPermissions("customer:update:repair")
  962. @RequestMapping("/update_repair_info")
  963. public ResponseJson updateRepairInfo(HttpServletRequest request, Repair repair) throws Exception {
  964. if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) {
  965. return new ResponseJson(500, "该换新信息不能修改!", 500);
  966. }
  967. String closedProducts = request.getParameter("closed_products");
  968. String closedFittings = request.getParameter("closed_fittings");
  969. String provinceNumber = request.getParameter("repairProvinceNumber");
  970. String cityNumber = request.getParameter("repairCityNumber");
  971. String areaNumber = request.getParameter("repairAreaNumber");
  972. String mergeAddress = request.getParameter("merge_address");
  973. if (StringUtils.isNotEmpty(provinceNumber)) {
  974. repair.setProvinceNumber(Integer.parseInt(provinceNumber));
  975. }
  976. if (StringUtils.isNotEmpty(cityNumber)) {
  977. repair.setCityNumber(Integer.parseInt(cityNumber));
  978. }
  979. if (StringUtils.isNotEmpty(areaNumber)) {
  980. repair.setAreaNumber(Integer.parseInt(areaNumber));
  981. }
  982. if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) {
  983. repair.setRepairBackPostage(repair.getRepairBackPostage().intValue() * 100);
  984. }
  985. if (!StringUtils.isNotEmpty(repair.getRepairBackEfastOrderId())) {
  986. return new ResponseJson(500, "请输入efast订单号!", 500);
  987. }
  988. if (StringUtils.isNotEmpty(mergeAddress)) {
  989. repair.setRepairSendMergeAddress(mergeAddress);
  990. }
  991. /*SalesOrder order = new SalesOrder();
  992. order.setSalesOrderStatus(1);
  993. order.setSalesOrderId(repair.getRepairBackEfastOrderId());
  994. int count = salesOrderService.getOrderInfoCount(order);
  995. //判断efast订单是否可查出有效数据
  996. if (count == 0) {
  997. return new ResponseJson(500, "该efast订单号无效,请重新输入!", 500);
  998. }*/
  999. //修改维修信息
  1000. int num = repairService.updateRepairInfo(repair, closedProducts, closedFittings);
  1001. if (num > 0) {
  1002. return new ResponseJson(200, "修改成功!", 200);
  1003. } else {
  1004. return new ResponseJson(500, "修改失败!", 500);
  1005. }
  1006. }
  1007. /**
  1008. * 进入修改退货页面
  1009. *
  1010. * @param request
  1011. * @return
  1012. * @throws Exception
  1013. */
  1014. @RequiresPermissions("customer:update:backGoods")
  1015. @RequestMapping("/_to_update_book_goods")
  1016. public ModelAndView toUpdateBookGoods(HttpServletRequest request) throws Exception {
  1017. ModelAndView mv = new ModelAndView("cm/customer/update_back_goods");
  1018. String customerId = request.getParameter("customerId");
  1019. mv.addObject("customerId", customerId);
  1020. return mv;
  1021. }
  1022. /**
  1023. * 进入修改售后退货页面
  1024. *
  1025. * @param request
  1026. * @return
  1027. * @throws Exception
  1028. */
  1029. @ResponseBody
  1030. @RequiresPermissions("customer:update:backGoods")
  1031. @RequestMapping("/_update_back_goods")
  1032. public ResponseJson updateBackGoodsUI(HttpServletRequest request) throws Exception {
  1033. String customerId = request.getParameter("customerId");
  1034. if (!StringUtils.isNotEmpty(customerId)) {
  1035. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1036. }
  1037. BackGoods backGoods = new BackGoods();
  1038. backGoods.setCustomerId(Integer.parseInt(customerId));
  1039. //获取售后退货信息
  1040. backGoods = customerService.getBackGoods(backGoods);
  1041. if (backGoods == null) {
  1042. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1043. } else {
  1044. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1045. rj.addResponseKeyValue("backGoods", backGoods);
  1046. return rj;
  1047. }
  1048. }
  1049. /**
  1050. * 修改售后退货信息
  1051. *
  1052. * @param request
  1053. * @param backGoods
  1054. * @return
  1055. * @throws Exception
  1056. */
  1057. @ResponseBody
  1058. @RequiresPermissions("customer:update:backGoods")
  1059. @RequestMapping("/update_back_goods")
  1060. public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception {
  1061. String closedProducts = request.getParameter("closed_products");
  1062. String closedFittings = request.getParameter("closed_fittings");
  1063. if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) {
  1064. return new ResponseJson(500, "该售后退货信息不能修改!", 500);
  1065. }
  1066. if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) {
  1067. backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue() * 100);
  1068. }
  1069. int num = backGoodsService.updateBackGoods(backGoods, closedProducts, closedFittings);
  1070. if (num > 0) {
  1071. return new ResponseJson(200, "修改成功!", 200);
  1072. } else {
  1073. return new ResponseJson(500, "修改失败!", 500);
  1074. }
  1075. }
  1076. /**
  1077. * 进入修改补寄页面
  1078. *
  1079. * @param request
  1080. * @return
  1081. * @throws Exception
  1082. */
  1083. @RequiresPermissions("customer:update:reissue")
  1084. @RequestMapping("/_to_update_reissue")
  1085. public ModelAndView toUpdateReissue(HttpServletRequest request) throws Exception {
  1086. ModelAndView mv = new ModelAndView("cm/customer/update_reissue");
  1087. String customerId = request.getParameter("customerId");
  1088. mv.addObject("customerId", customerId);
  1089. return mv;
  1090. }
  1091. /**
  1092. * 进入修改补寄信息页面
  1093. *
  1094. * @param request
  1095. * @return
  1096. */
  1097. @ResponseBody
  1098. @RequiresPermissions("customer:update:reissue")
  1099. @RequestMapping("/get_reissue_info")
  1100. public ResponseJson getReissueInfo(HttpServletRequest request) {
  1101. String customerId = request.getParameter("customerId");
  1102. if (!StringUtils.isNotEmpty(customerId)) {
  1103. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1104. }
  1105. Reissue reissue = new Reissue();
  1106. reissue.setCustomerId(Integer.parseInt(customerId));
  1107. //获取售后补寄信息
  1108. reissue = customerService.getReissue(reissue);
  1109. if (reissue == null) {
  1110. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1111. } else {
  1112. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1113. rj.addResponseKeyValue("reissue", reissue);
  1114. return rj;
  1115. }
  1116. }
  1117. /**
  1118. * 修改售后补寄信息
  1119. *
  1120. * @param request
  1121. * @param reissue
  1122. * @return
  1123. * @throws Exception
  1124. */
  1125. @ResponseBody
  1126. @RequiresPermissions("customer:update:reissue")
  1127. @RequestMapping("/update_reissue_info")
  1128. public ResponseJson updateReissueInfo(HttpServletRequest request, Reissue reissue) throws Exception {
  1129. String provinceNumber = request.getParameter("reissueProvinceNumber");
  1130. String cityNumber = request.getParameter("reissueCityNumber");
  1131. String areaNumber = request.getParameter("reissueAreaNumber");
  1132. String mergeAddress = request.getParameter("merge_address");
  1133. if (!StringUtils.isNotEmpty(reissue.getReissueId().toString())) {
  1134. return new ResponseJson(500, "该售后补寄信息不能修改!", 500);
  1135. }
  1136. if (StringUtils.isNotEmpty(provinceNumber)) {
  1137. reissue.setProvinceNumber(Integer.parseInt(provinceNumber));
  1138. }
  1139. if (StringUtils.isNotEmpty(cityNumber)) {
  1140. reissue.setCityNumber(Integer.parseInt(cityNumber));
  1141. }
  1142. if (StringUtils.isNotEmpty(areaNumber)) {
  1143. reissue.setAreaNumber(Integer.parseInt(areaNumber));
  1144. }
  1145. if (StringUtils.isNotEmpty(mergeAddress)) {
  1146. reissue.setReissueSendMergeAddress(mergeAddress);
  1147. }
  1148. //修改售后补寄信息
  1149. int num = reissueService.updateReissueInfo(reissue);
  1150. if (num > 0) {
  1151. return new ResponseJson(200, "修改成功!", 200);
  1152. } else {
  1153. return new ResponseJson(500, "修改失败!", 500);
  1154. }
  1155. }
  1156. /**
  1157. * 进入修改退货页面
  1158. *
  1159. * @param request
  1160. * @return
  1161. * @throws Exception
  1162. */
  1163. @RequiresPermissions("customer:update:noreason")
  1164. @RequestMapping("/_update_noreason_back")
  1165. public ModelAndView toUpdateNoreasonBack(HttpServletRequest request) throws Exception {
  1166. ModelAndView mv = new ModelAndView("cm/customer/update_noreason_back");
  1167. String customerId = request.getParameter("customerId");
  1168. mv.addObject("customerId", customerId);
  1169. return mv;
  1170. }
  1171. /**
  1172. * 获取无理由退货信息
  1173. *
  1174. * @param request
  1175. * @return
  1176. * @throws Exception
  1177. */
  1178. @ResponseBody
  1179. @RequiresPermissions("customer:update:noreason")
  1180. @RequestMapping("/get_noreason_back")
  1181. public ResponseJson getNoreasonBack(HttpServletRequest request) throws Exception {
  1182. String customerId = request.getParameter("customerId");
  1183. if (!StringUtils.isNotEmpty(customerId)) {
  1184. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1185. }
  1186. NoreasonBack noreasonBack = new NoreasonBack();
  1187. noreasonBack.setCustomerId(Integer.parseInt(customerId));
  1188. noreasonBack.setNoreasonBackState(1);
  1189. //获取无理由退货信息
  1190. noreasonBack = customerService.getNoreasonBack(noreasonBack);
  1191. if (noreasonBack == null) {
  1192. return new ResponseJson(500, "该客诉没有无理由售后退货信息!", 500);
  1193. } else {
  1194. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1195. rj.addResponseKeyValue("noreasonBack", noreasonBack);
  1196. return rj;
  1197. }
  1198. }
  1199. /**
  1200. * 修改售后无理由退货信息
  1201. *
  1202. * @param request
  1203. * @param noreasonBack
  1204. * @return
  1205. * @throws Exception
  1206. */
  1207. @ResponseBody
  1208. @RequiresPermissions("customer:update:noreason")
  1209. @RequestMapping("/update_noreason")
  1210. public ResponseJson updateNoreason(HttpServletRequest request, NoreasonBack noreasonBack) throws Exception {
  1211. String closedProducts = request.getParameter("closed_products");
  1212. String closedFittings = request.getParameter("closed_fittings");
  1213. if (!StringUtils.isNotEmpty(noreasonBack.getNoreasonBackId().toString())) {
  1214. return new ResponseJson(500, "该售后无理由退货信息不能修改!", 500);
  1215. }
  1216. if (StringUtils.isNotEmpty(noreasonBack.getNoreasonBackBackPostage().toString())) {
  1217. noreasonBack.setNoreasonBackBackPostage(noreasonBack.getNoreasonBackBackPostage().intValue() * 100);
  1218. }
  1219. int num = noreasonBackService.updateNoreasonBack(noreasonBack, closedProducts, closedFittings);
  1220. if (num > 0) {
  1221. return new ResponseJson(200, "修改成功!", 200);
  1222. } else {
  1223. return new ResponseJson(500, "修改失败!", 500);
  1224. }
  1225. }
  1226. /**
  1227. * 同步百胜订单
  1228. *
  1229. * @return
  1230. * @throws Exception
  1231. */
  1232. @ResponseBody
  1233. @RequiresPermissions("customer:sync:order")
  1234. @RequestMapping("/sync_efast_order")
  1235. public ResponseJson syncEfastOrder() throws Exception {
  1236. int pageNo = 1;
  1237. int pageSize = 20;
  1238. boolean flag = false; //控制是否还需要获取百胜订单信息
  1239. String date = "";
  1240. synchronized (lock) {
  1241. //根据时间排序查询订单信息
  1242. List<SalesOrder> orderList = salesOrderService.listSalesOrder(new SalesOrder());
  1243. if (orderList != null && orderList.size() > 0) {
  1244. SalesOrder salesOrder = orderList.get(0);
  1245. date = salesOrder.getSalesCreateTime().toString();
  1246. } else {
  1247. date = "2016-04-01";
  1248. }
  1249. do {
  1250. //批量获取百胜订单信息
  1251. JSONObject obj = efastOrderService.listOrderInfoFormEfast(pageNo, pageSize, date);
  1252. if (obj == null) {
  1253. return new ResponseJson(200, "没有可同步订单!", 200);
  1254. }
  1255. int pageSize1 = obj.getInt("page_size"); //百胜返回数据条目数
  1256. if (pageSize <= pageSize1) {
  1257. flag = true;
  1258. pageNo++;
  1259. } else {
  1260. flag = false;
  1261. }
  1262. salesOrderService.addSalesOrderList(obj);
  1263. } while (flag); //百胜返回条目数如果等于设置的分页条目数,则继续查询下一页
  1264. return new ResponseJson(200, "同步成功!", 200);
  1265. }
  1266. }
  1267. }