AdminCustomerController.java 83 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018
  1. package com.iamberry.rst.controllers.cm;
  2. import com.iamberry.rst.core.address.City;
  3. import com.iamberry.rst.core.cm.*;
  4. import com.iamberry.rst.core.order.Product;
  5. import com.iamberry.rst.core.order.ProductColor;
  6. import com.iamberry.rst.core.order.ProductType;
  7. import com.iamberry.rst.core.page.PagedResult;
  8. import com.iamberry.rst.core.sys.Admin;
  9. import com.iamberry.rst.faces.address.AddressService;
  10. import com.iamberry.rst.faces.cm.*;
  11. import com.iamberry.rst.faces.order.EfastOrderService;
  12. import com.iamberry.rst.faces.product.ProductService;
  13. import com.iamberry.rst.faces.sms.SmsService;
  14. import com.iamberry.rst.faces.sys.SysService;
  15. import com.iamberry.rst.util.CustomerCommonUtil;
  16. import com.iamberry.rst.util.SmsConfig;
  17. import com.iamberry.rst.utils.AdminUtils;
  18. import com.iamberry.rst.utils.OrderNoUtil;
  19. import com.iamberry.rst.utils.ResultMsg;
  20. import com.iamberry.rst.utils.StitchAttrUtil;
  21. import com.iamberry.wechat.tools.NameUtils;
  22. import com.iamberry.wechat.tools.ResponseJson;
  23. import com.iamberry.wechat.tools.ResultInfo;
  24. import net.sf.json.JSONArray;
  25. import net.sf.json.JSONObject;
  26. import org.apache.commons.codec.binary.Base64;
  27. import org.apache.commons.lang.StringUtils;
  28. import org.apache.shiro.authz.annotation.RequiresPermissions;
  29. import org.slf4j.Logger;
  30. import org.slf4j.LoggerFactory;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.stereotype.Controller;
  33. import org.springframework.web.bind.annotation.RequestMapping;
  34. import org.springframework.web.bind.annotation.RequestParam;
  35. import org.springframework.web.bind.annotation.ResponseBody;
  36. import org.springframework.web.servlet.ModelAndView;
  37. import javax.servlet.http.HttpServletRequest;
  38. import java.text.MessageFormat;
  39. import java.util.*;
  40. /**
  41. * Created by wxm
  42. */
  43. @Controller
  44. @RequestMapping("/admin/customer")
  45. public class AdminCustomerController {
  46. private Logger logger = LoggerFactory.getLogger(AdminCustomerController.class);
  47. @Autowired
  48. private CompanyInfoService companyInfoService;
  49. @Autowired
  50. private StoreInfoService storeInfoService;
  51. @Autowired
  52. private SalesOrderService salesOrderService;
  53. @Autowired
  54. private CustomerService customerService;
  55. @Autowired
  56. private ProductService productService;
  57. @Autowired
  58. private SysService sysService;
  59. @Autowired
  60. private ComplaintTypeInfoService complaintTypeInfoService;
  61. @Autowired
  62. private VisitService visitService;
  63. @Autowired
  64. private QuestionDescribeService questionDescribeService;
  65. @Autowired
  66. private RenewedService renewedService;
  67. @Autowired
  68. private RepairService repairService;
  69. @Autowired
  70. private BackGoodsService backGoodsService;
  71. @Autowired
  72. private FittingsInfoService fittingsInfoService;
  73. @Autowired
  74. private ReissueService reissueService;
  75. @Autowired
  76. private NoreasonBackService noreasonBackService;
  77. @Autowired
  78. private ComplaintQuestionInfoService complaintQuestionInfoService;
  79. @Autowired
  80. private SmsService smsService;
  81. @Autowired
  82. private ComplaintSignclosedInfoService complaintSignclosedInfoService;
  83. @Autowired
  84. private ComplaintSmallClassInfoService complaintSmallClassInfoService;
  85. @Autowired
  86. private CustomerCommonService customerCommonService;
  87. @Autowired
  88. private AddressService addressService;
  89. @Autowired
  90. private PostageService postageService;
  91. @Autowired
  92. private EfastOrderService efastOrderService;
  93. @Autowired
  94. private RelationOrderService relationOrderService;
  95. /**
  96. * 获取客诉列表
  97. *
  98. * @param request
  99. * @return
  100. */
  101. @RequiresPermissions("customer:list:customer")
  102. @RequestMapping("/_customer_list")
  103. public ModelAndView getCustomer(HttpServletRequest request, CustomerInfo customer,
  104. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  105. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  106. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  107. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  108. // PagedResult<Customer> pagedResult = ptsBomService.listCustomer(pageNO, pageSize, ptsBom, totalNum == 0);
  109. // if (totalNum != 0) {
  110. // pagedResult.setTotal(totalNum);
  111. // }
  112. // //获取产品集合,用于页面选择产品
  113. // List<Produce> list = produceService.getProduceList();
  114. // mv.addObject("produceList", list);
  115. // StitchAttrUtil.setModelAndView(customer, mv, "/admin/bom/_bom_list", pagedResult);
  116. return mv;
  117. }
  118. /**
  119. * 跳转到添加客诉页面
  120. *
  121. * @return
  122. */
  123. @RequiresPermissions("customer:add:customer")
  124. @RequestMapping(value = "/to_add_customer")
  125. public ModelAndView toAddCustomer(HttpServletRequest request) {
  126. ModelAndView mv = new ModelAndView("cm/customer/add_customer");
  127. //获取产品集合,用于页面选择产品
  128. // List<Produce> produceList = produceService.getProduceList();
  129. // mv.addObject("produceList", produceList);
  130. return mv;
  131. }
  132. /**
  133. * 跳转到修改客诉页面
  134. *
  135. * @return
  136. */
  137. @RequiresPermissions("customer:update:customer")
  138. @RequestMapping(value = "/to_update_customer")
  139. public ModelAndView toUpdateCustomer(HttpServletRequest request,Integer customerId) {
  140. ModelAndView mv = new ModelAndView("cm/customer/update_customer");
  141. ProductType productType = new ProductType();
  142. //查询产品类型集合
  143. List<ProductType> typeList = productService.listProductType(productType);
  144. //查询客诉类型集合
  145. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  146. //查询跟进客服集合
  147. Admin admin = new Admin();
  148. admin.setAdminDept(3);
  149. admin.setAdminStatus(1);
  150. List<Admin> adminList = sysService.listSelectAdmin(admin);
  151. //获取登录人id
  152. Integer loginAdminId = AdminUtils.getLoginAdminId();
  153. //查询客诉基本信息
  154. CustomerInfo customerInfo = customerService.getCustomerInfo(customerId);
  155. /*客诉信息处理-stast*/
  156. //对于区域处理
  157. if(customerInfo!=null && customerInfo.getCustomerArea() != null){
  158. // String[] customerAreaAndCity = customerInfo.getCustomerArea().split("-");
  159. // customerInfo.setProvinceName(customerAreaAndCity[0]);
  160. // City city
  161. // addressService.listCity(customerAreaAndCity[0]);
  162. // customerInfo.setCityName(customerAreaAndCity[0]);
  163. }
  164. /*客诉信息处理-end*/
  165. CustomerCommon customerCommon = new CustomerCommon();
  166. if(customerInfo.getCustomerIsSolve() != null){
  167. switch (customerInfo.getCustomerIsSolve()){ //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  168. case 3://获取换新
  169. Renewed renewed = new Renewed();
  170. renewed.setCustomerId(customerInfo.getCustomerId());
  171. renewed = renewedService.getRenewed(renewed);
  172. customerCommon = CustomerCommonUtil.getCustomerCommon(3,renewed);
  173. break;
  174. case 4://维修
  175. Repair repair = new Repair();
  176. repair.setCustomerId(customerInfo.getCustomerId());
  177. repair = repairService.getRepair(repair);
  178. customerCommon = CustomerCommonUtil.getCustomerCommon(4,repair);
  179. break;
  180. case 5:
  181. Reissue reissue = new Reissue();
  182. reissue.setCustomerId(customerInfo.getCustomerId());
  183. reissue = reissueService.getReissue(reissue);
  184. customerCommon = CustomerCommonUtil.getCustomerCommon(5,reissue);
  185. break;
  186. case 6:
  187. BackGoods backGoods = new BackGoods();
  188. backGoods.setCustomerId(customerInfo.getCustomerId());
  189. backGoods = backGoodsService.getBackGoods(backGoods);
  190. customerCommon = CustomerCommonUtil.getCustomerCommon(6,backGoods);
  191. break;
  192. case 7:
  193. NoreasonBack noreasonBack = new NoreasonBack();
  194. noreasonBack.setCustomerId(customerInfo.getCustomerId());
  195. noreasonBack = noreasonBackService.getNoreasonBack(noreasonBack);
  196. customerCommon = CustomerCommonUtil.getCustomerCommon(7,noreasonBack);
  197. break;
  198. }
  199. /*查询所有需要寄入寄出的产品*/
  200. customerCommon.setCustomerIsSolve(customerInfo.getCustomerIsSolve());
  201. customerCommon = customerCommonService.getListProduceAndFitting(customerCommon);
  202. // 2018/4/18 页面只会给寄回的赋值,在处理方式为补发的情况下,寄出需要赋值到寄回当中
  203. if(customerInfo.getCustomerIsSolve() == 5){
  204. //售后寄回产品表
  205. List<ClosedProdcue> closedProdcues = new ArrayList<ClosedProdcue>();
  206. for (SendProdcue sendProdcue : customerCommon.getSendProdcues()) {
  207. ClosedProdcue closedProdcue = new ClosedProdcue();
  208. closedProdcue.setRelationId(sendProdcue.getRelationId());
  209. closedProdcue.setProductType(sendProdcue.getProductType());
  210. closedProdcue.setProductId(sendProdcue.getProductId());
  211. closedProdcue.setColorId(sendProdcue.getColorId());
  212. closedProdcue.setClosedProductName(sendProdcue.getSendProduceName());
  213. closedProdcue.setClosedColorName(sendProdcue.getSendColorName());
  214. closedProdcue.setClosedProdcueNumber(sendProdcue.getSendProdcueNumber());
  215. closedProdcues.add(closedProdcue);
  216. }
  217. //售后寄回产品配件表
  218. List<ClosedFitting> closedFittings = new ArrayList<ClosedFitting>();
  219. for (SendFitting sendFitting : customerCommon.getSendFittings()) {
  220. ClosedFitting closedFitting = new ClosedFitting();
  221. closedFitting.setRelationId(sendFitting.getRelationId());
  222. closedFitting.setClosedFittingType(sendFitting.getSendFittingType());
  223. closedFitting.setProductId(sendFitting.getProductId());
  224. closedFitting.setFittingsId(sendFitting.getFittingsId());
  225. closedFitting.setClosedProductName(sendFitting.getSendProductName());
  226. closedFitting.setClosedFittingsName(sendFitting.getSendFittingsName());
  227. closedFitting.setClosedFittingNumber(sendFitting.getSendFittingNumber());
  228. closedFittings.add(closedFitting);
  229. }
  230. customerCommon.setClosedProdcues(closedProdcues);
  231. customerCommon.setClosedFittings(closedFittings);
  232. }
  233. mv.addObject("customerCommon", customerCommon);
  234. if(customerInfo.getTypeId() == 1){
  235. customerInfo.setIsNeedSelectOrder(2); //不需要订单
  236. }else{
  237. customerInfo.setIsNeedSelectOrder(1);
  238. }
  239. /*查询所有的产品,颜色和配件信息*/
  240. // List<Product> productList = productService.listProduce(new Product());
  241. // for(Product product : productList){
  242. // ProductColor productColor = new ProductColor();
  243. // productColor.setColorProductId(product.getProductId());
  244. // List<ProductColor> productColorList = productService.listProduceColor(productColor);
  245. // product.setColorList(productColorList);
  246. //
  247. // FittingsInfo fittingsInfo = new FittingsInfo();
  248. // fittingsInfo.setProductId(product.getProductId());
  249. // List<FittingsInfo> fittingsInfoList = fittingsInfoService.listFittings(fittingsInfo);
  250. // product.setFittingsList(fittingsInfoList);
  251. // }
  252. // mv.addObject("productList", productList);
  253. if(customerInfo.getTypeId() != 1 && (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5 ||
  254. customerInfo.getCustomerIsSolve() == 6 || customerInfo.getCustomerIsSolve() == 7)){
  255. RelationOrder relationOrder = new RelationOrder();
  256. relationOrder.setRelationType(customerCommon.getCustomerIsSolve());
  257. relationOrder.setRelationId(customerCommon.getRelationId());
  258. List<RelationOrder> relationOrderList = relationOrderService.getRelationOrderList(relationOrder);
  259. String[] salesIds = new String[relationOrderList.size()];
  260. for (int k=0; k<relationOrderList.size();k++){
  261. salesIds[k] = String.valueOf(relationOrderList.get(k).getSalesId());
  262. }
  263. SalesOrder so = new SalesOrder();
  264. so.setSalesIds(salesIds);
  265. List<SalesOrder> orderList = salesOrderService.listSalesOrder(so);
  266. for (SalesOrder sor: orderList) {
  267. SalesOrderItem salesOrderItem = new SalesOrderItem();
  268. salesOrderItem.setItemOrderId(sor.getSalesId());
  269. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  270. sor.setSalesOrderItemList(salesOrderItemList);
  271. }
  272. mv.addObject("salesOrderList", orderList);
  273. }else{
  274. mv.addObject("salesOrderList", null);
  275. }
  276. }
  277. if ("2".equals(customerInfo.getCustomerIsVisit())){ //1:不需要回访 2:需要回访
  278. Visit visit = new Visit();
  279. visit.setCustomerId(customerInfo.getCustomerId());
  280. visit = visitService.getVisit(visit);
  281. mv.addObject("visit", visit);
  282. }
  283. //查询关联问题
  284. ComplaintQuestionInfo complaintQuestionInfo = complaintQuestionInfoService.getQuestionById(customerInfo.getQuestionId());
  285. //查询问题小类
  286. ComplaintSmallClassInfo complaintSmallClassInfo = new ComplaintSmallClassInfo();
  287. complaintSmallClassInfo.setComplaintId(complaintQuestionInfo.getComplaintId());
  288. List<ComplaintSmallClassInfo> complaintSmallClassInfoList = complaintSmallClassInfoService.listComplaintSmallClassInfo(complaintSmallClassInfo);
  289. //查询问题大类
  290. ComplaintTypeInfo complaintTypeInfo = new ComplaintTypeInfo();
  291. List<ComplaintTypeInfo> complaintTypeInfoList = complaintTypeInfoService.listComplaintTypeInfo(complaintTypeInfo);
  292. mv.addObject("customerInfo", customerInfo);
  293. mv.addObject("typeList", typeList);
  294. mv.addObject("complaintTypeList", complaintTypeList);
  295. mv.addObject("complaintTypeList", complaintTypeList);
  296. mv.addObject("adminList", adminList);
  297. mv.addObject("loginAdminId", loginAdminId);
  298. mv.addObject("complaintQuestionInfo", complaintQuestionInfo);
  299. mv.addObject("complaintSmallClassInfoList", complaintSmallClassInfoList);
  300. mv.addObject("complaintTypeInfoList", complaintTypeInfoList);
  301. //mv.addObject("questionDescribe", questionDescribe);
  302. return mv;
  303. }
  304. /**
  305. * 查询问题描述
  306. * @return
  307. */
  308. @ResponseBody
  309. @RequiresPermissions("customer:add:customer")
  310. @RequestMapping(value = "/select_question_describe")
  311. public ResponseJson selectQuestionDescribe(HttpServletRequest request, Integer customerId) throws Exception {
  312. if(customerId == null || customerId == 0){
  313. return new ResponseJson(500, "未获取到问题描述", 500);
  314. }
  315. //查询问题描述表
  316. QuestionDescribe questionDescribe = new QuestionDescribe();
  317. questionDescribe.setCustomerId(customerId);
  318. questionDescribe = questionDescribeService.listQuestionDescribe(questionDescribe).get(0);
  319. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  320. rj.addResponseKeyValue("questionDescribe", questionDescribe);
  321. return rj;
  322. }
  323. /**
  324. * 查询问题描述
  325. * @return
  326. */
  327. @ResponseBody
  328. @RequiresPermissions("customer:add:customer")
  329. @RequestMapping(value = "/select_company")
  330. public ResponseJson getCompany(HttpServletRequest request) throws Exception {
  331. //获取销售公司
  332. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  333. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  334. rj.addResponseKeyValue("companyInfoList", companyInfoList);
  335. return rj;
  336. }
  337. /**
  338. * 搜索订单列表弹出框
  339. *
  340. * @return
  341. */
  342. @RequiresPermissions("customer:add:customer")
  343. @RequestMapping(value = "/select_order")
  344. public ModelAndView selectOrder(HttpServletRequest request) {
  345. ModelAndView mv = new ModelAndView("cm/customer/order_list");
  346. //获取销售公司
  347. List<CompanyInfo> companyInfoList = companyInfoService.listCompanyInfo(new CompanyInfo());
  348. mv.addObject("companyInfoList", companyInfoList);
  349. return mv;
  350. }
  351. /**
  352. * 添加订单列表弹出框
  353. *
  354. * @return
  355. */
  356. @RequiresPermissions("customer:add:customer")
  357. @RequestMapping(value = "/add_order")
  358. public ModelAndView addOder(HttpServletRequest request) {
  359. ModelAndView mv = new ModelAndView("cm/customer/order_add");
  360. return mv;
  361. }
  362. /**
  363. * 添加订单
  364. *
  365. * @return
  366. */
  367. @ResponseBody
  368. @RequiresPermissions("customer:add:customer")
  369. @RequestMapping(value = "/add_order_info")
  370. public ResponseJson addOrderInfo(HttpServletRequest request, SalesOrder salesOrder, String itemJson) throws Exception {
  371. List<SalesOrderItem> list = new ArrayList<>();
  372. JSONArray jsonArray = JSONArray.fromObject(itemJson);
  373. list = (List) JSONArray.toCollection(jsonArray, SalesOrderItem.class);
  374. Integer salesAmount = 0;
  375. for (int i = 0; i < list.size(); i++) {
  376. SalesOrderItem salesOrderItem = list.get(i);
  377. if (salesOrderItem.getItemIsSource() == 1) { //产品来源 1:产品颜色表,2:配件表
  378. Product product = productService.getProductById(salesOrderItem.getItemColorId());
  379. ProductColor productColor = productService.getProduceColor(salesOrderItem.getItemColorId());
  380. salesOrderItem.setItemProductType(product.getProductType());
  381. salesOrderItem.setItemProductName(product.getProductName());
  382. salesOrderItem.setItemProductPic(productColor.getColorPicture());
  383. salesOrderItem.setItemProductColor(productColor.getColorName());
  384. salesOrderItem.setItemColorBar(productColor.getColorBar());
  385. salesOrderItem.setItemProductPrice(productColor.getColorPrice());
  386. salesOrderItem.setItemProductDiscount(productColor.getColorDiscount());
  387. salesOrderItem.setItemIsSource(1);
  388. salesAmount += productColor.getColorDiscount();
  389. } else if (salesOrderItem.getItemIsSource() == 2) {
  390. Product product = productService.getProductByFittingsId(salesOrderItem.getItemProductId());
  391. FittingsInfo fittingsInfo = fittingsInfoService.getFittingsById(salesOrderItem.getItemColorId());
  392. salesOrderItem.setItemProductType(product.getProductType());
  393. salesOrderItem.setItemProductName(product.getProductName());
  394. salesOrderItem.setItemProductColor(fittingsInfo.getFittingsName());
  395. salesOrderItem.setItemColorBar(fittingsInfo.getFittingsBar());
  396. salesOrderItem.setItemProductPrice(fittingsInfo.getFittingsPrice());
  397. salesOrderItem.setItemProductDiscount(fittingsInfo.getFittingsDiscount());
  398. salesOrderItem.setItemIsSource(2);
  399. salesAmount += fittingsInfo.getFittingsDiscount();
  400. }
  401. }
  402. salesOrder.setSalesOpenId("0");
  403. salesOrder.setSalesAmount(salesAmount);
  404. salesOrder.setSalesPayMoney(salesAmount);
  405. salesOrder.setSalesOrderStatus(1);
  406. salesOrder.setSalesCreateTime(new Date());
  407. //salesOrder.setSalesPayTime(new Date());
  408. salesOrder.setSalesLastMoney(salesAmount);
  409. salesOrder.setSalesWaitMoney(0);
  410. salesOrder.setSalesPayMoney(salesAmount);
  411. salesOrder.setSalesSalesTime(new Date());
  412. salesOrder.setSalesDiscountMoney(salesAmount);
  413. salesOrder.setSalesPledgeMoney(0);
  414. salesOrder.setSalesRemainDeposit(0);
  415. salesOrder.setSalesType(1);
  416. salesOrder.setSalesStatus(1);//确认状态:0(未确认)1(确认)2(挂起)3(作废)
  417. salesOrder.setSalesShippingStatus(1); //发货状态: 0(未发货)1(已发货,即已扫描出库)3(备货中)*****+++
  418. salesOrder.setSalesPayStatus(2); //已付款
  419. salesOrder.setSalesProcessStatus(0); //单据状态:0(正常单)1(问题单)
  420. salesOrder.setSalesIsSend(0); //0:否 1:是 是否通知配货
  421. salesOrder.setSalesIsLocked(0); //是否锁定 0:否 1:是
  422. salesOrder.setSalesIsSeparate(0); //是否缺货 0:否 1:是
  423. salesOrder.setSalesShippingFee(0); //邮费
  424. Integer adminId = AdminUtils.getLoginAdminId();
  425. String orderCode = OrderNoUtil.createOrderCode(adminId);
  426. salesOrder.setSalesDealCode(orderCode);
  427. salesOrder.setSalesOrderId(orderCode);
  428. //salesOrder = salesOrderService.addOrderAndIteminfo(salesOrder,list);
  429. salesOrder.setSalesOrderItemList(list);
  430. try {
  431. Integer flag = customerService.addOrder(salesOrder);
  432. } catch (RuntimeException e) {
  433. return new ResponseJson(500, "添加订单失败--"+ e.getMessage(), 500);
  434. }
  435. Integer orderId = salesOrder.getSalesId();
  436. ResponseJson rj = new ResponseJson(200, "添加订单成功", 200);
  437. rj.addResponseKeyValue("orderId", orderId);
  438. return rj;
  439. }
  440. /**
  441. * 获取店铺集合
  442. *
  443. * @param request
  444. * @param storeInfo
  445. * @return
  446. */
  447. @ResponseBody
  448. @RequiresPermissions("customer:add:customer")
  449. @RequestMapping(value = "/select_storeInfo")
  450. public ResponseJson listStoreInfo(HttpServletRequest request, StoreInfo storeInfo) {
  451. storeInfo.setStoreStatus(1);
  452. List<StoreInfo> storeInfoList = storeInfoService.listStore(storeInfo);
  453. if (storeInfoList == null || storeInfoList.size() < 1) {
  454. return new ResponseJson(500, "查询失败", 500);
  455. } else {
  456. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  457. rj.addResponseKeyValue("storeInfoList", storeInfoList);
  458. return rj;
  459. }
  460. }
  461. /**
  462. * 获取订单集合
  463. *
  464. * @param request
  465. * @param salesOrder
  466. * @return
  467. */
  468. @ResponseBody
  469. @RequiresPermissions("customer:add:customer")
  470. @RequestMapping(value = "/select_salesOrder")
  471. public ResponseJson listOrder(HttpServletRequest request, SalesOrder salesOrder,String ids,
  472. @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize,
  473. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  474. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) {
  475. if(ids!= null && ids.indexOf("_") > -1){
  476. String[] salesIds = ids.split("_");
  477. salesOrder.setSalesIds(salesIds);
  478. }
  479. //分页获取订单信息
  480. PagedResult<SalesOrder> pagedResult = salesOrderService.listSalesOrderPage(pageNO, pageSize, salesOrder, totalNum == 0);
  481. List<SalesOrder> salesOrderList = pagedResult.getDataList();
  482. for (SalesOrder order : salesOrderList) {
  483. SalesOrderItem salesOrderItem = new SalesOrderItem();
  484. salesOrderItem.setItemOrderId(order.getSalesId());
  485. List<SalesOrderItem> salesOrderItemList = salesOrderService.listSalesOrderItem(salesOrderItem);
  486. order.setSalesOrderItemList(salesOrderItemList);
  487. }
  488. if (salesOrderList == null || salesOrderList.size() < 1) {
  489. return new ResponseJson(500, "查询失败", 500);
  490. } else {
  491. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  492. rj.addResponseKeyValue("salesOrderList", salesOrderList);
  493. return rj;
  494. }
  495. }
  496. /**
  497. * 分页查询客诉列表信息
  498. *
  499. * @param request
  500. * @param customerInfo
  501. * @param pageSize
  502. * @param pageNO
  503. * @param totalNum
  504. * @return
  505. * @throws Exception
  506. */
  507. @RequiresPermissions("customer:select:customer")
  508. @RequestMapping("/select_customer_list")
  509. public ModelAndView selectCustomerList(HttpServletRequest request, CustomerInfo customerInfo,
  510. @RequestParam(value = "isFirst", defaultValue = "2", required = false) Integer isFirst,
  511. @RequestParam(value = "pageSize", defaultValue = "10", required = false) Integer pageSize,
  512. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  513. @RequestParam(value = "totalNum", defaultValue = "0", required = false) Integer totalNum) throws Exception {
  514. long x = new Date().getTime();
  515. ModelAndView mv = new ModelAndView("cm/customer/custome_list");
  516. if(customerInfo.getAdminId() == null && isFirst == 1){
  517. //获取登录员工id
  518. Integer adminId = AdminUtils.getLoginAdminId();
  519. customerInfo.setAdminId(adminId);
  520. }
  521. PagedResult<CustomerInfo> pagedResult = customerService.listCustomer(pageNO, pageSize, customerInfo, totalNum == 0);
  522. if (totalNum != 0) {
  523. pagedResult.setTotal(totalNum);
  524. }
  525. ProductType productType = new ProductType();
  526. //查询产品类型集合
  527. List<ProductType> typeList = productService.listProductType(productType);
  528. //查询客诉类型集合
  529. List<ComplaintTypeInfo> complaintTypeList = complaintTypeInfoService.listComplaintTypeInfo(new ComplaintTypeInfo());
  530. //查询客诉类型集合
  531. List<ComplaintSmallClassInfo> complaintSmallClassInfoList = complaintSmallClassInfoService.listComplaintSmallClassInfo(new ComplaintSmallClassInfo());
  532. //查询问题集合 第 30 条bug
  533. // List<QuestionDescribe> questionDescribeList = questionDescribeService.listQuestionDescribe(new QuestionDescribe());
  534. //查询跟进客服集合
  535. Admin admin = new Admin();
  536. admin.setAdminDept(3);
  537. admin.setAdminStatus(1);
  538. List<Admin> adminList = sysService.listSelectAdmin(admin);
  539. //获取登录人id
  540. Integer loginAdminId = AdminUtils.getLoginAdminId();
  541. mv.addObject("complaintSmallClassInfoList", complaintSmallClassInfoList);
  542. mv.addObject("loginAdminId", loginAdminId);
  543. mv.addObject("typeList", typeList);
  544. mv.addObject("complaintTypeList", complaintTypeList);
  545. mv.addObject("adminList", adminList);
  546. customerInfo.setVisit(null);
  547. customerInfo.setCustomerCommon(null);
  548. customerInfo.setComplaintDetectList(null);
  549. StitchAttrUtil.setModelAndView(customerInfo, mv, "/admin/customer/select_customer_list", pagedResult);
  550. long y = new Date().getTime();
  551. System.out.println("使用时间:"+(y-x));
  552. return mv;
  553. }
  554. /**
  555. * 进入客诉基本信息页面
  556. *
  557. * @param request
  558. * @return
  559. * @throws Exception
  560. */
  561. @RequiresPermissions("customer:select:customer")
  562. @RequestMapping("/_customer_info")
  563. public ModelAndView toCustomerInfo(HttpServletRequest request) throws Exception {
  564. ModelAndView mv = new ModelAndView("cm/customer/custome_detail");
  565. String customerId = request.getParameter("customerId");
  566. mv.addObject("customerId", customerId);
  567. return mv;
  568. }
  569. /**
  570. * 查询客诉基本信息
  571. *
  572. * @param request
  573. * @return
  574. * @throws Exception
  575. */
  576. @ResponseBody
  577. @RequiresPermissions("customer:select:customer")
  578. @RequestMapping("/get_customer_info")
  579. public ResponseJson getCustomerInfo(HttpServletRequest request) throws Exception {
  580. String customerId = request.getParameter("customerId");
  581. if (!StringUtils.isNotEmpty(customerId)) {
  582. return new ResponseJson(500, "该客诉信息不存在!", 500);
  583. }
  584. CustomerInfo customerInfo = new CustomerInfo();
  585. customerInfo.setCustomerId(Integer.parseInt(customerId));
  586. Map<String, Object> map = customerService.getCustomerInfo(customerInfo);
  587. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  588. rj.addResponseKeyValue("customerCommon", map.get("customerCommon"));
  589. rj.addResponseKeyValue("customer", map.get("customer"));
  590. rj.addResponseKeyValue("orderList", map.get("orderList"));
  591. return rj;
  592. }
  593. /**
  594. * 进入添加回访页面
  595. *
  596. * @param request
  597. * @return
  598. * @throws Exception
  599. */
  600. @RequiresPermissions("customer:select:customer")
  601. @RequestMapping("/_add_visit")
  602. public ModelAndView toAddVisit(HttpServletRequest request) throws Exception {
  603. ModelAndView mv = new ModelAndView("cm/customer/add_visit");
  604. String customerId = request.getParameter("customerId");
  605. //查询跟进客服集合
  606. Admin admin = new Admin();
  607. admin.setAdminDept(3);
  608. admin.setAdminStatus(1);
  609. List<Admin> adminList = sysService.listSelectAdmin(admin);
  610. //获取登录人id
  611. Integer loginAdminId = AdminUtils.getLoginAdminId();
  612. mv.addObject("loginAdminId", loginAdminId);
  613. mv.addObject("customerId", customerId);
  614. mv.addObject("adminList", adminList);
  615. return mv;
  616. }
  617. /**
  618. * 添加回访信息
  619. *
  620. * @param request
  621. * @param visit
  622. * @return
  623. */
  624. @ResponseBody
  625. @RequiresPermissions("customer:add:visit")
  626. @RequestMapping("/add_visit_info")
  627. public ResponseJson addVisitInfo(HttpServletRequest request, Visit visit) throws Exception {
  628. String visitAdminId = request.getParameter("visitAdminId");
  629. if (!StringUtils.isNotEmpty(visitAdminId)) {
  630. return new ResponseJson(500, "请选择回访人!", 500);
  631. }
  632. Integer loginAdminId = AdminUtils.getLoginAdminId();
  633. visit.setAdminId(loginAdminId);
  634. visit.setDesignatedAdminId(Integer.parseInt(visitAdminId));
  635. visit.setVisitStatus(1);
  636. visit.setVisitCreateTime(new Date());
  637. int num = visitService.addVisitInfo(visit, visit.getCustomerId());
  638. if (num > 0) {
  639. return new ResponseJson(200, "修改成功!", 200);
  640. } else {
  641. return new ResponseJson(500, "修改失败!", 500);
  642. }
  643. }
  644. /**
  645. * 修改客诉状态为已解决
  646. *
  647. * @param request
  648. * @return
  649. */
  650. @ResponseBody
  651. @RequiresPermissions("customer:update:customerIsSolve")
  652. @RequestMapping("/update_customerIsSolve")
  653. public ResponseJson updateCustomerIsSolve(HttpServletRequest request) throws Exception {
  654. String customerId = request.getParameter("customerId");
  655. if (!StringUtils.isNotEmpty(customerId)) {
  656. return new ResponseJson(500, "该客诉信息不存在!", 500);
  657. }
  658. //根据id获取客诉信息
  659. CustomerInfo customer = customerService.getCustomerInfo(Integer.parseInt(customerId));
  660. if (customer == null) {
  661. return new ResponseJson(500, "该客诉信息不存在!", 500);
  662. }
  663. if (customer.getCustomerIsSolve().intValue() != 2) {
  664. return new ResponseJson(500, "该客诉信息不能修改为已解决状态!", 500);
  665. }
  666. CustomerInfo customerInfo = new CustomerInfo();
  667. customerInfo.setCustomerId(Integer.parseInt(customerId));
  668. customerInfo.setCustomerIsSolve(1);
  669. //修改客诉信息
  670. int num = customerService.updateCustomerInfo(customerInfo);
  671. if (num > 0) {
  672. return new ResponseJson(200, "修改成功!", 200);
  673. } else {
  674. return new ResponseJson(500, "修改失败!", 500);
  675. }
  676. }
  677. /**
  678. * 查询客服
  679. *
  680. * @param request
  681. * @return
  682. */
  683. @ResponseBody
  684. @RequiresPermissions("customer:add:customer")
  685. @RequestMapping("/select_sys_admin")
  686. public ResponseJson selectSysAdmin(HttpServletRequest request) throws Exception {
  687. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  688. Integer adminId = AdminUtils.getLoginAdminId();
  689. Admin admin = new Admin();
  690. admin.setAdminDept(3);
  691. admin.setAdminStatus(1);
  692. List<Admin> adminList = sysService.listSelectAdmin(admin);
  693. if (adminList.size() > 0) {
  694. rj.addResponseKeyValue("adminList", adminList);
  695. rj.addResponseKeyValue("adminId", adminId);
  696. return rj;
  697. } else {
  698. return new ResponseJson(500, "查询失败!", 500);
  699. }
  700. }
  701. /**
  702. * 查询产品类型
  703. *
  704. * @param request
  705. * @return
  706. */
  707. @ResponseBody
  708. @RequiresPermissions("customer:add:customer")
  709. @RequestMapping("/select_produce_type")
  710. public ResponseJson selectProduceType(HttpServletRequest request) throws Exception {
  711. ResponseJson rj = new ResponseJson(200, "修改成功!", 200);
  712. ProductType productType = new ProductType();
  713. productType.setTypeStatus(1);
  714. List<ProductType> productTypeList = productService.listProductType(productType);
  715. if (productTypeList != null && productTypeList.size() > 0) {
  716. rj.addResponseKeyValue("productTypeList", productTypeList);
  717. return rj;
  718. } else {
  719. return new ResponseJson(500, "查询失败!", 500);
  720. }
  721. }
  722. /**
  723. * 查询产品
  724. *
  725. * @param request
  726. * @return
  727. */
  728. @ResponseBody
  729. @RequiresPermissions("customer:add:customer")
  730. @RequestMapping("/select_produce")
  731. public ResponseJson selectProduce(HttpServletRequest request) {
  732. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  733. Product product = new Product();
  734. List<Product> productList = productService.listProduce(product);
  735. for (Product pro : productList) {
  736. ProductColor productColor = new ProductColor();
  737. productColor.setColorProductId(pro.getProductId());
  738. List<ProductColor> productColorList = productService.listProduceColor(productColor);
  739. pro.setColorList(productColorList);
  740. }
  741. if (productList != null && productList.size() > 0) {
  742. rj.addResponseKeyValue("productList", productList);
  743. return rj;
  744. } else {
  745. return new ResponseJson(500, "查询失败!", 500);
  746. }
  747. }
  748. /**
  749. * 查询产品
  750. *
  751. * @param request
  752. * @return
  753. */
  754. @ResponseBody
  755. @RequiresPermissions("customer:add:customer")
  756. @RequestMapping("/select_produce_fittings")
  757. public ResponseJson selectProduceFittings(HttpServletRequest request, FittingsInfo fittingsInfo) {
  758. ResponseJson rj = new ResponseJson(200, "查询成功!", 200);
  759. List<FittingsInfo> produceFittingsList = fittingsInfoService.listFittings(fittingsInfo);
  760. if (produceFittingsList != null && produceFittingsList.size() > 0) {
  761. rj.addResponseKeyValue("produceFittingsList", produceFittingsList);
  762. return rj;
  763. } else {
  764. return new ResponseJson(500, "查询失败!", 500);
  765. }
  766. }
  767. /**
  768. * 添加客诉
  769. *
  770. * @param request
  771. * @return
  772. */
  773. @ResponseBody
  774. @RequiresPermissions("customer:add:customer")
  775. @RequestMapping("/save_customer")
  776. public ResponseJson addCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
  777. String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
  778. ResponseJson rjx = this.isValiData(customerInfo);
  779. if(rjx.getResultCode() == 500){
  780. return rjx;
  781. }
  782. Integer customerIsSolve = customerInfo.getCustomerIsSolve(); //处理类型
  783. String phone = customerInfo.getCustomerTel(); //手机号码
  784. Integer typeCompany = customerInfo.getTypeCompany(); // 所属商城 1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
  785. Integer flag = 0;
  786. if(customerInfo.getIsNeedSelectOrder() == 1){ ////1:需要有订单 2:不需要有订单
  787. JSONArray jsonArray;
  788. List<SendProdcue> sendProdcueList;
  789. List<SendFitting> sendFittingList;
  790. List<ClosedProdcue> closedProdcueList;
  791. List<ClosedFitting> closedFittingList;
  792. jsonArray = JSONArray.fromObject(sendProdcuesJson);
  793. sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
  794. jsonArray = JSONArray.fromObject(sendFittingsJson);
  795. sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
  796. jsonArray = JSONArray.fromObject(closedProdcuesJson);
  797. closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
  798. jsonArray = JSONArray.fromObject(closedFittingsJson);
  799. closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
  800. customerCommon.setSendProdcues(sendProdcueList);
  801. customerCommon.setSendFittings(sendFittingList);
  802. customerCommon.setClosedProdcues(closedProdcueList);
  803. customerCommon.setClosedFittings(closedFittingList);
  804. }
  805. customerInfo.setCustomerCommon(customerCommon);
  806. String orderId = "";
  807. if (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5) {
  808. Integer adminId = AdminUtils.getLoginAdminId();
  809. orderId = OrderNoUtil.createOrderCode(adminId);
  810. }
  811. customerInfo.setTransactionNumber(orderId);
  812. Integer customerId = customerInfo.getCustomerId();
  813. logger.info("-----------------添加客诉开始----------------------");
  814. try {
  815. flag = customerService.saveCustomerInfo(customerInfo, salesOrder);
  816. } catch (RuntimeException e) {
  817. e.printStackTrace();
  818. return new ResponseJson(500, e.getMessage(), 500);
  819. }catch (Exception e){
  820. e.printStackTrace();
  821. return new ResponseJson(500,"添加失败", 500);
  822. }
  823. customerId = customerInfo.getCustomerId();
  824. logger.info("-----------------添加客诉结束----------------------");
  825. if (flag < 1) {
  826. return new ResponseJson(500, "添加客诉失败!", 500);
  827. }
  828. String msg = "";
  829. //处理结果: 1:已解决 2:未解决 3:换新 4:维修 5:补发 6:退货 7:无理由退货
  830. if (customerIsSolve == 3 || customerIsSolve == 4 || customerIsSolve == 5 || customerIsSolve == 6 || customerIsSolve == 7) {
  831. String solveMsg = "";
  832. switch (customerIsSolve) {
  833. case 3:
  834. solveMsg = "为您更换新机";
  835. break;
  836. case 4:
  837. solveMsg = "为您维修机器";
  838. break;
  839. case 5:
  840. solveMsg = "为您补发产品";
  841. break;
  842. case 6:
  843. solveMsg = "为您办理退货";
  844. break;
  845. case 7:
  846. solveMsg = "为您办理退货";
  847. break;
  848. }
  849. String addCustomerSuccessMsg = "";
  850. String typeMsg = "";
  851. switch (typeCompany) {
  852. case 1:
  853. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_WATERO;
  854. typeMsg = "美国WaterO售后";
  855. break;
  856. case 2:
  857. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_SHANGDUO;
  858. typeMsg = "上朵售后";
  859. break;
  860. case 3:
  861. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_YULIA;
  862. typeMsg = "YULIA售后";
  863. break;
  864. case 4:
  865. addCustomerSuccessMsg = SmsConfig.ADD_CUSTOMER_SUCCESS_AIBERLE;
  866. typeMsg = "爱贝源售后";
  867. break;
  868. }
  869. // Object [] msg = new Object[]{solveMsg,typeMsg};
  870. // String text = MessageFormat.format(addCustomerSuccessMsg, msg);
  871. // logger.info("添加客诉成功后,给 "+ phone +" 手机用户发送短信:" + text );
  872. // String result = smsService.sendOtherCMS(phone, text);
  873. //
  874. // if (!"SUCCESS".equals(result)) {
  875. // return new ResponseJson(505, "添加客诉发送短信失败,失败原因:" + result + "<br>客诉信息发送失败并不影响客诉添加。客诉编号为:"+ customerId, 505);
  876. // }
  877. msg = ",请前往Efast进行换货/退货操作。";
  878. }
  879. return new ResponseJson(200, "录入客诉成功!客诉编号:" + customerId + msg, 200);
  880. }
  881. /**
  882. * 修改客诉
  883. *
  884. * @param request
  885. * @return
  886. */
  887. @ResponseBody
  888. @RequiresPermissions("customer:update:customer")
  889. @RequestMapping("/update_customer")
  890. public ResponseJson updateCustomer(HttpServletRequest request, CustomerInfo customerInfo, SalesOrder salesOrder, CustomerCommon customerCommon,
  891. String sendProdcuesJson, String sendFittingsJson, String closedProdcuesJson, String closedFittingsJson) throws Exception {
  892. ResponseJson rjx = this.isValiData(customerInfo);
  893. if(rjx.getResultCode() == 500){
  894. return rjx;
  895. }
  896. Integer flag = 0;
  897. Integer customerIsSolve = customerInfo.getCustomerIsSolve(); //处理类型
  898. String phone = customerInfo.getCustomerTel(); //手机号码
  899. Integer typeCompany = customerInfo.getTypeCompany(); // 所属商城 1:美国watero; 2:上朵电动牙刷 3:优尼雅净水机
  900. if(customerInfo.getIsNeedSelectOrder() == 1){
  901. JSONArray jsonArray;
  902. List<SendProdcue> sendProdcueList;
  903. List<SendFitting> sendFittingList;
  904. List<ClosedProdcue> closedProdcueList;
  905. List<ClosedFitting> closedFittingList;
  906. jsonArray = JSONArray.fromObject(sendProdcuesJson);
  907. sendProdcueList = (List) JSONArray.toCollection(jsonArray, SendProdcue.class);
  908. jsonArray = JSONArray.fromObject(sendFittingsJson);
  909. sendFittingList = (List) JSONArray.toCollection(jsonArray, SendFitting.class);
  910. jsonArray = JSONArray.fromObject(closedProdcuesJson);
  911. closedProdcueList = (List) JSONArray.toCollection(jsonArray, ClosedProdcue.class);
  912. jsonArray = JSONArray.fromObject(closedFittingsJson);
  913. closedFittingList = (List) JSONArray.toCollection(jsonArray, ClosedFitting.class);
  914. customerCommon.setSendProdcues(sendProdcueList);
  915. customerCommon.setSendFittings(sendFittingList);
  916. customerCommon.setClosedProdcues(closedProdcueList);
  917. customerCommon.setClosedFittings(closedFittingList);
  918. }
  919. customerInfo.setCustomerCommon(customerCommon);
  920. String orderId = "";
  921. if (customerInfo.getCustomerIsSolve() == 3 || customerInfo.getCustomerIsSolve() == 4 || customerInfo.getCustomerIsSolve() == 5) {
  922. Integer adminId = AdminUtils.getLoginAdminId();
  923. orderId = OrderNoUtil.createOrderCode(adminId);
  924. }
  925. customerInfo.setTransactionNumber(orderId);
  926. Integer customerId = customerInfo.getCustomerId();
  927. logger.info("-----------------修改客诉开始----------------------");
  928. try {
  929. flag = customerService.updateCustomerInfo(customerInfo, salesOrder);
  930. } catch (RuntimeException e) {
  931. e.printStackTrace();
  932. return new ResponseJson(500, e.getMessage(), 500);
  933. }catch (Exception e){
  934. e.printStackTrace();
  935. return new ResponseJson(500,"修改失败", 500);
  936. }
  937. customerId = customerInfo.getCustomerId();
  938. logger.info("-----------------修改客诉结束----------------------");
  939. if (flag < 1) {
  940. return new ResponseJson(500, "修改客诉失败!", 500);
  941. }
  942. return new ResponseJson(200, "修改客诉成功!客诉编号为:" + customerId, 200);
  943. }
  944. /**
  945. * 验证方法
  946. *
  947. * @param customerInfo
  948. * @return
  949. */
  950. public ResponseJson isValiData(CustomerInfo customerInfo) {
  951. ResponseJson rj = new ResponseJson();
  952. if(customerInfo.getAdminId() == null){
  953. return new ResponseJson(500, "未填写客诉id", 500);
  954. }
  955. return rj;
  956. }
  957. /**
  958. * 发送短信
  959. *
  960. * @param request
  961. * @return
  962. */
  963. @ResponseBody
  964. @RequiresPermissions("customer:add:customer")
  965. @RequestMapping("/send_phone_sms")
  966. public ResponseJson sendPhoneSms(HttpServletRequest request, String type, String phone, Integer typeCompany, ComplaintQuestionInfo complaintQuestionInfo) throws Exception {
  967. String url = NameUtils.getConfig("website");
  968. Integer flag = 1;
  969. if (typeCompany == null || typeCompany == 0) {
  970. return new ResponseJson(500, "未获取到产品类型!", 500);
  971. }
  972. String con = "";
  973. if (type != null && !"".equals(type)) {
  974. if ("p".equals(type)) { //problem" 问题处理; mailAddress:邮寄地址;
  975. if (complaintQuestionInfo.getQuestionId() == null || "".equals(complaintQuestionInfo.getQuestionId())) {
  976. complaintQuestionInfo.setQuestionState(1);
  977. complaintQuestionInfo.setQuestionIsQcDetect(0);
  978. complaintQuestionInfo = complaintQuestionInfoService.insertBackInfo(complaintQuestionInfo);
  979. } else {
  980. complaintQuestionInfo.setSmallClassId(null); //不能修改小类类型
  981. flag = complaintQuestionInfoService.updateQuestionById(complaintQuestionInfo);
  982. if (flag < 1) {
  983. return new ResponseJson(500, "问题修改失败!", 500);
  984. }
  985. }
  986. url += "/" + complaintQuestionInfo.getQuestionId()+"/"+typeCompany;
  987. switch (typeCompany) {
  988. case 1:
  989. con = SmsConfig.SEND_PRODUCT_SEND_WATERO;
  990. break;
  991. case 2:
  992. con = SmsConfig.SEND_PRODUCT_SEND_SHANGDUO;
  993. break;
  994. case 3:
  995. con = SmsConfig.SEND_PRODUCT_SEND_YULIA;
  996. break;
  997. case 4:
  998. con = SmsConfig.SEND_PRODUCT_SEND_AIBERLE;
  999. break;
  1000. }
  1001. } else if ("m".equals(type)) {
  1002. if (complaintQuestionInfo.getQuestionId() == null) {
  1003. return new ResponseJson(500, "未获取到邮寄信息!", 500);
  1004. }
  1005. complaintQuestionInfo.setQuestionName(null);
  1006. complaintQuestionInfo.setSmallClassId(null);
  1007. url += "/5";
  1008. switch (typeCompany) {
  1009. case 1:
  1010. con = SmsConfig.SEND_PRODUCT_SMS_WATERO;
  1011. break;
  1012. case 2:
  1013. con = SmsConfig.SEND_PRODUCT_SMS_SHANGDUO;
  1014. break;
  1015. case 3:
  1016. con = SmsConfig.SEND_PRODUCT_SMS_YULIA;
  1017. break;
  1018. case 4:
  1019. con = SmsConfig.SEND_PRODUCT_SMS_AIBERLE;
  1020. break;
  1021. }
  1022. }
  1023. }
  1024. String userPhone = encodePhoneNumber(phone);
  1025. String text = MessageFormat.format(con, url);
  1026. logger.info("给 " + phone + " 手机用户发送短信:" + text);
  1027. String result = smsService.sendOtherCMS(phone, text);
  1028. if ("SUCCESS".equals(result)) {
  1029. return new ResponseJson(200, "发送短信成功!", 200);
  1030. } else {
  1031. return new ResponseJson(500, "发送短信失败,失败原因:" + result, 500);
  1032. }
  1033. }
  1034. String encodePhoneNumber(String number)
  1035. {
  1036. int encnum = Integer.parseInt(number.substring(2));
  1037. int prefix = (number.charAt(1) - '2') /2; // '3'=>0, '5'=>1, '[67]'=>2, '8'=>3
  1038. encnum |= (prefix <<= 30);
  1039. final byte[] raw = new byte[4];
  1040. raw[0] = (byte)(encnum >>> 24);
  1041. raw[1] = (byte)(encnum >>> 16);
  1042. raw[2] = (byte)(encnum >>> 8);
  1043. raw[3] = (byte) encnum;
  1044. return Base64.encodeBase64URLSafeString(raw);
  1045. }
  1046. /**
  1047. * 进入回访完成页面
  1048. *
  1049. * @param request
  1050. * @return
  1051. * @throws Exception
  1052. */
  1053. @RequiresPermissions("customer:update:visit")
  1054. @RequestMapping("/_update_visit_info")
  1055. public ModelAndView toUpdateVisitFinish(HttpServletRequest request) throws Exception {
  1056. ModelAndView mv = new ModelAndView("cm/customer/visit_finish");
  1057. String customerId = request.getParameter("customerId");
  1058. mv.addObject("customerId", customerId);
  1059. return mv;
  1060. }
  1061. /**
  1062. * 添加回访完成内容
  1063. *
  1064. * @param request
  1065. * @param visit
  1066. * @return
  1067. */
  1068. @ResponseBody
  1069. @RequiresPermissions("customer:update:visit")
  1070. @RequestMapping("/update_visit_finish")
  1071. public ResponseJson updateVisitFinish(HttpServletRequest request, Visit visit) throws Exception {
  1072. String customerId = request.getParameter("finish_customerId");
  1073. if (!StringUtils.isNotEmpty(customerId)) {
  1074. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1075. }
  1076. visit.setCustomerId(Integer.parseInt(customerId));
  1077. visit.setVisitStatus(2);
  1078. //修改回访信息内容
  1079. int num = visitService.updateVisit(visit);
  1080. if (num > 0) {
  1081. return new ResponseJson(200, "添加成功!", 200);
  1082. } else {
  1083. return new ResponseJson(500, "添加失败!", 500);
  1084. }
  1085. }
  1086. /**
  1087. * 进入回访信息详情
  1088. *
  1089. * @param request
  1090. * @return
  1091. * @throws Exception
  1092. */
  1093. @RequiresPermissions("customer:get:visit")
  1094. @RequestMapping("/_visit_info")
  1095. public ModelAndView toVisitInfo(HttpServletRequest request) throws Exception {
  1096. ModelAndView mv = new ModelAndView("cm/customer/visit_detail");
  1097. String customerId = request.getParameter("customerId");
  1098. // 1:未回访,2:已回访
  1099. String num = request.getParameter("num");
  1100. if (!StringUtils.isNotEmpty(num)) {
  1101. num = "2";
  1102. }
  1103. mv.addObject("customerId", customerId);
  1104. mv.addObject("num", num);
  1105. return mv;
  1106. }
  1107. /**
  1108. * 获取回访信息详情
  1109. *
  1110. * @param request
  1111. * @return
  1112. */
  1113. @ResponseBody
  1114. @RequiresPermissions("customer:get:visit")
  1115. @RequestMapping("/get_visit_info")
  1116. public ResponseJson getVisitInfo(HttpServletRequest request) throws Exception {
  1117. String customerId = request.getParameter("customerId");
  1118. if (!StringUtils.isNotEmpty(customerId)) {
  1119. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1120. }
  1121. Visit visit = new Visit();
  1122. visit.setCustomerId(Integer.parseInt(customerId));
  1123. //查询回访信息集合
  1124. List<Visit> visitList = visitService.listVisit(visit);
  1125. if (visitList == null || visitList.size() == 0) {
  1126. return new ResponseJson(500, "该客诉没有回访信息!", 500);
  1127. }
  1128. visit = visitList.get(0);
  1129. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1130. rj.addResponseKeyValue("visit", visit);
  1131. return rj;
  1132. }
  1133. /**
  1134. * 进入问题描述页面
  1135. *
  1136. * @param request
  1137. * @return
  1138. * @throws Exception
  1139. */
  1140. @RequiresPermissions("customer:get:describe")
  1141. @RequestMapping("/_question_describe")
  1142. public ModelAndView toQuestionDescribe(HttpServletRequest request) throws Exception {
  1143. ModelAndView mv = new ModelAndView("cm/customer/describe_detail");
  1144. String customerId = request.getParameter("customerId");
  1145. mv.addObject("customerId", customerId);
  1146. return mv;
  1147. }
  1148. /**
  1149. * 获取问题描述信息
  1150. *
  1151. * @param request
  1152. * @return
  1153. */
  1154. @ResponseBody
  1155. @RequiresPermissions("customer:get:describe")
  1156. @RequestMapping("/get_describe_info")
  1157. public ResponseJson getDescribeInfo(HttpServletRequest request) throws Exception {
  1158. String customerId = request.getParameter("customerId");
  1159. if (!StringUtils.isNotEmpty(customerId)) {
  1160. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1161. }
  1162. QuestionDescribe describe = new QuestionDescribe();
  1163. describe.setCustomerId(Integer.parseInt(customerId));
  1164. //查询问题集合
  1165. List<QuestionDescribe> questionList = questionDescribeService.listQuestionDescribe(describe);
  1166. if (questionList == null || questionList.size() == 0) {
  1167. return new ResponseJson(500, "该客诉信息没有问题描述!", 500);
  1168. }
  1169. describe = questionList.get(0);
  1170. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1171. rj.addResponseKeyValue("describe", describe);
  1172. return rj;
  1173. }
  1174. /**
  1175. * 进入修改换新页面
  1176. *
  1177. * @param request
  1178. * @return
  1179. * @throws Exception
  1180. */
  1181. @RequiresPermissions("customer:update:renewed")
  1182. @RequestMapping("/_update_renewed")
  1183. public ModelAndView toUpdateRenewed(HttpServletRequest request) throws Exception {
  1184. ModelAndView mv = new ModelAndView("cm/customer/update_renewed");
  1185. String customerId = request.getParameter("customerId");
  1186. mv.addObject("customerId", customerId);
  1187. return mv;
  1188. }
  1189. /**
  1190. * 获取换新详情
  1191. *
  1192. * @param request
  1193. * @return
  1194. */
  1195. @ResponseBody
  1196. @RequiresPermissions("customer:get:renewed")
  1197. @RequestMapping("/get_renewed_info")
  1198. public ResponseJson getRenewedInfo(HttpServletRequest request) throws Exception {
  1199. String customerId = request.getParameter("customerId");
  1200. if (!StringUtils.isNotEmpty(customerId)) {
  1201. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1202. }
  1203. Renewed renewed = new Renewed();
  1204. renewed.setCustomerId(Integer.parseInt(customerId));
  1205. renewed.setRenewedState(1);
  1206. //获取换新详情和检测信息
  1207. renewed = customerService.getRenewedInfo(renewed);
  1208. if (renewed == null) {
  1209. return new ResponseJson(500, "该客诉没有换新信息!", 500);
  1210. } else {
  1211. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1212. rj.addResponseKeyValue("renewed", renewed);
  1213. return rj;
  1214. }
  1215. }
  1216. /**
  1217. * 修改换新信息
  1218. *
  1219. * @param request
  1220. * @param renewed
  1221. * @return
  1222. * @throws Exception
  1223. */
  1224. @ResponseBody
  1225. @RequiresPermissions("customer:update:renewed")
  1226. @RequestMapping("/update_renewed_info")
  1227. public ResponseJson updateRenewedInfo(HttpServletRequest request, Renewed renewed) throws Exception {
  1228. /*String closedProducts = request.getParameter("closed_products");
  1229. String closedFittings = request.getParameter("closed_fittings");*/
  1230. String mergeAddress = request.getParameter("merge_address");
  1231. if (!StringUtils.isNotEmpty(renewed.getRenewedId().toString())) {
  1232. return new ResponseJson(500, "该换新信息不能修改!", 500);
  1233. }
  1234. // if (StringUtils.isNotEmpty(renewed.getRenewedBackPostage().toString())) {
  1235. // renewed.setRenewedBackPostage(renewed.getRenewedBackPostage().intValue() * 100);
  1236. // }
  1237. /*if (!StringUtils.isNotEmpty(renewed.getRenewedBackEfastOrderId())) {
  1238. return new ResponseJson(500, "请输入efast订单号!", 500);
  1239. }*/
  1240. if (StringUtils.isNotEmpty(mergeAddress)) {
  1241. renewed.setRenewedSendMergeAddress(mergeAddress);
  1242. }
  1243. if(renewed.getRenewedBackStatus() != null){
  1244. if(renewed.getRenewedBackStatus() != 1){
  1245. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1246. cs.setSignclosedCustomerId(renewed.getCustomerId());
  1247. cs.setSignclosedLogistics(renewed.getRenewedBackLogisticsCompany());
  1248. cs.setSignclosedLogisticsNumber(renewed.getRenewedBackLogisticsNo());
  1249. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1250. }
  1251. }
  1252. //修改换新信息
  1253. int num = renewedService.updateRenewedInfo(renewed, null, null);
  1254. if (num > 0) {
  1255. return new ResponseJson(200, "修改成功!", 200);
  1256. } else {
  1257. return new ResponseJson(500, "修改失败!", 500);
  1258. }
  1259. }
  1260. /**
  1261. * 进入修改维修页面
  1262. *
  1263. * @param request
  1264. * @return
  1265. * @throws Exception
  1266. */
  1267. @RequiresPermissions("customer:update:repair")
  1268. @RequestMapping("/_to_update_repair")
  1269. public ModelAndView toUpdateRepair(HttpServletRequest request) throws Exception {
  1270. ModelAndView mv = new ModelAndView("cm/customer/update_repair");
  1271. String customerId = request.getParameter("customerId");
  1272. mv.addObject("customerId", customerId);
  1273. return mv;
  1274. }
  1275. /**
  1276. * 进入修改维修页面
  1277. *
  1278. * @param request
  1279. * @return
  1280. * @throws Exception
  1281. */
  1282. @ResponseBody
  1283. @RequiresPermissions("customer:update:repair")
  1284. @RequestMapping("/_update_repair")
  1285. public ResponseJson updateRepairUI(HttpServletRequest request) throws Exception {
  1286. String customerId = request.getParameter("customerId");
  1287. if (!StringUtils.isNotEmpty(customerId)) {
  1288. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1289. }
  1290. Repair repair = new Repair();
  1291. repair.setCustomerId(Integer.parseInt(customerId));
  1292. repair.setRepairState(1);
  1293. //获取维修详情和品质检测信息
  1294. repair = customerService.getRepairInfo(repair);
  1295. if (repair == null) {
  1296. return new ResponseJson(500, "该客诉没有维修信息!", 500);
  1297. } else {
  1298. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1299. rj.addResponseKeyValue("repair", repair);
  1300. return rj;
  1301. }
  1302. }
  1303. /**
  1304. * 修改维修处理信息
  1305. *
  1306. * @param request
  1307. * @param repair
  1308. * @return
  1309. * @throws Exception
  1310. */
  1311. @ResponseBody
  1312. @RequiresPermissions("customer:update:repair")
  1313. @RequestMapping("/update_repair_info")
  1314. public ResponseJson updateRepairInfo(HttpServletRequest request, Repair repair) throws Exception {
  1315. if (!StringUtils.isNotEmpty(repair.getRepairId().toString())) {
  1316. return new ResponseJson(500, "该换新信息不能修改!", 500);
  1317. }
  1318. /* String closedProducts = request.getParameter("closed_products");
  1319. String closedFittings = request.getParameter("closed_fittings");*/
  1320. String provinceNumber = request.getParameter("repairProvinceNumber");
  1321. String cityNumber = request.getParameter("repairCityNumber");
  1322. String areaNumber = request.getParameter("repairAreaNumber");
  1323. String mergeAddress = request.getParameter("merge_address");
  1324. if (StringUtils.isNotEmpty(provinceNumber)) {
  1325. repair.setProvinceNumber(Integer.parseInt(provinceNumber));
  1326. }
  1327. if (StringUtils.isNotEmpty(cityNumber)) {
  1328. repair.setCityNumber(Integer.parseInt(cityNumber));
  1329. }
  1330. if (StringUtils.isNotEmpty(areaNumber)) {
  1331. repair.setAreaNumber(Integer.parseInt(areaNumber));
  1332. }
  1333. if (StringUtils.isNotEmpty(mergeAddress)) {
  1334. repair.setRepairSendMergeAddress(mergeAddress);
  1335. }
  1336. // if (StringUtils.isNotEmpty(repair.getRepairBackPostage().toString())) {
  1337. // repair.setRepairBackPostage(repair.getRepairBackPostage().intValue() * 100);
  1338. // }
  1339. /*if (!StringUtils.isNotEmpty(repair.getRepairBackEfastOrderId())) {
  1340. return new ResponseJson(500, "请输入efast订单号!", 500);
  1341. }*/
  1342. if (StringUtils.isNotEmpty(mergeAddress)) {
  1343. repair.setRepairSendMergeAddress(mergeAddress);
  1344. }
  1345. /*SalesOrder order = new SalesOrder();
  1346. order.setSalesOrderStatus(1);
  1347. order.setSalesOrderId(repair.getRepairBackEfastOrderId());
  1348. int count = salesOrderService.getOrderInfoCount(order);
  1349. //判断efast订单是否可查出有效数据
  1350. if (count == 0) {
  1351. return new ResponseJson(500, "该efast订单号无效,请重新输入!", 500);
  1352. }*/
  1353. if(repair.getRepairBackStatus() != null){
  1354. if(repair.getRepairBackStatus() != 1){
  1355. ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1356. cs.setSignclosedCustomerId(repair.getCustomerId());
  1357. cs.setSignclosedLogistics(repair.getRepairBackLogisticsCompany());
  1358. cs.setSignclosedLogisticsNumber(repair.getRepairBackLogisticsNo());
  1359. complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1360. }
  1361. }
  1362. //修改维修信息
  1363. int num = repairService.updateRepairInfo(repair, null, null);
  1364. if (num > 0) {
  1365. return new ResponseJson(200, "修改成功!", 200);
  1366. } else {
  1367. return new ResponseJson(500, "修改失败!", 500);
  1368. }
  1369. }
  1370. /**
  1371. * 进入修改退货页面
  1372. *
  1373. * @param request
  1374. * @return
  1375. * @throws Exception
  1376. */
  1377. @RequiresPermissions("customer:update:backGoods")
  1378. @RequestMapping("/_to_update_book_goods")
  1379. public ModelAndView toUpdateBookGoods(HttpServletRequest request) throws Exception {
  1380. ModelAndView mv = new ModelAndView("cm/customer/update_back_goods");
  1381. String customerId = request.getParameter("customerId");
  1382. mv.addObject("customerId", customerId);
  1383. return mv;
  1384. }
  1385. /**
  1386. * 进入修改售后退货页面
  1387. *
  1388. * @param request
  1389. * @return
  1390. * @throws Exception
  1391. */
  1392. @ResponseBody
  1393. @RequiresPermissions("customer:update:backGoods")
  1394. @RequestMapping("/_update_back_goods")
  1395. public ResponseJson updateBackGoodsUI(HttpServletRequest request) throws Exception {
  1396. String customerId = request.getParameter("customerId");
  1397. if (!StringUtils.isNotEmpty(customerId)) {
  1398. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1399. }
  1400. BackGoods backGoods = new BackGoods();
  1401. backGoods.setCustomerId(Integer.parseInt(customerId));
  1402. //获取售后退货信息
  1403. backGoods = customerService.getBackGoods(backGoods);
  1404. if (backGoods == null) {
  1405. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1406. } else {
  1407. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1408. rj.addResponseKeyValue("backGoods", backGoods);
  1409. return rj;
  1410. }
  1411. }
  1412. /**
  1413. * 修改售后退货信息
  1414. *
  1415. * @param request
  1416. * @param backGoods
  1417. * @return
  1418. * @throws Exception
  1419. */
  1420. @ResponseBody
  1421. @RequiresPermissions("customer:update:backGoods")
  1422. @RequestMapping("/update_back_goods")
  1423. public ResponseJson updateBackGoods(HttpServletRequest request, BackGoods backGoods) throws Exception {
  1424. String closedProducts = request.getParameter("closed_products");
  1425. String closedFittings = request.getParameter("closed_fittings");
  1426. if (!StringUtils.isNotEmpty(backGoods.getBackGoodsId().toString())) {
  1427. return new ResponseJson(500, "该售后退货信息不能修改!", 500);
  1428. }
  1429. // if (StringUtils.isNotEmpty(backGoods.getBackGoodsBackPostage().toString())) {
  1430. // backGoods.setBackGoodsBackPostage(backGoods.getBackGoodsBackPostage().intValue() * 100);
  1431. // }
  1432. // if(backGoods.getBackGoodsBackStatus() != 1){
  1433. // ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1434. // cs.setSignclosedCustomerId(backGoods.getCustomerId());
  1435. // cs.setSignclosedLogistics(backGoods.getBackGoodsBackLogisticsCompany());
  1436. // cs.setSignclosedLogisticsNumber(backGoods.getBackGoodsBackLogisticsNo());
  1437. // complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1438. // }
  1439. int num = backGoodsService.updateBackGoods(backGoods, closedProducts, closedFittings);
  1440. if (num > 0) {
  1441. return new ResponseJson(200, "修改成功!", 200);
  1442. } else {
  1443. return new ResponseJson(500, "修改失败!", 500);
  1444. }
  1445. }
  1446. /**
  1447. * 进入修改补寄页面
  1448. *
  1449. * @param request
  1450. * @return
  1451. * @throws Exception
  1452. */
  1453. @RequiresPermissions("customer:update:reissue")
  1454. @RequestMapping("/_to_update_reissue")
  1455. public ModelAndView toUpdateReissue(HttpServletRequest request) throws Exception {
  1456. ModelAndView mv = new ModelAndView("cm/customer/update_reissue");
  1457. String customerId = request.getParameter("customerId");
  1458. mv.addObject("customerId", customerId);
  1459. return mv;
  1460. }
  1461. /**
  1462. * 进入修改补寄信息页面
  1463. *
  1464. * @param request
  1465. * @return
  1466. */
  1467. @ResponseBody
  1468. @RequiresPermissions("customer:update:reissue")
  1469. @RequestMapping("/get_reissue_info")
  1470. public ResponseJson getReissueInfo(HttpServletRequest request) {
  1471. String customerId = request.getParameter("customerId");
  1472. if (!StringUtils.isNotEmpty(customerId)) {
  1473. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1474. }
  1475. Reissue reissue = new Reissue();
  1476. reissue.setCustomerId(Integer.parseInt(customerId));
  1477. //获取售后补寄信息
  1478. reissue = customerService.getReissue(reissue);
  1479. if (reissue == null) {
  1480. return new ResponseJson(500, "该客诉没有售后退货信息!", 500);
  1481. } else {
  1482. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1483. rj.addResponseKeyValue("reissue", reissue);
  1484. return rj;
  1485. }
  1486. }
  1487. /**
  1488. * 修改售后补寄信息
  1489. *
  1490. * @param request
  1491. * @param reissue
  1492. * @return
  1493. * @throws Exception
  1494. */
  1495. @ResponseBody
  1496. @RequiresPermissions("customer:update:reissue")
  1497. @RequestMapping("/update_reissue_info")
  1498. public ResponseJson updateReissueInfo(HttpServletRequest request, Reissue reissue) throws Exception {
  1499. String provinceNumber = request.getParameter("reissueProvinceNumber");
  1500. String cityNumber = request.getParameter("reissueCityNumber");
  1501. String areaNumber = request.getParameter("reissueAreaNumber");
  1502. String mergeAddress = request.getParameter("merge_address");
  1503. if (!StringUtils.isNotEmpty(reissue.getReissueId().toString())) {
  1504. return new ResponseJson(500, "该售后补寄信息不能修改!", 500);
  1505. }
  1506. if (StringUtils.isNotEmpty(provinceNumber)) {
  1507. reissue.setProvinceNumber(Integer.parseInt(provinceNumber));
  1508. }
  1509. if (StringUtils.isNotEmpty(cityNumber)) {
  1510. reissue.setCityNumber(Integer.parseInt(cityNumber));
  1511. }
  1512. if (StringUtils.isNotEmpty(areaNumber)) {
  1513. reissue.setAreaNumber(Integer.parseInt(areaNumber));
  1514. }
  1515. if (StringUtils.isNotEmpty(mergeAddress)) {
  1516. reissue.setReissueSendMergeAddress(mergeAddress);
  1517. }
  1518. //修改售后补寄信息
  1519. int num = reissueService.updateReissueInfo(reissue);
  1520. if (num > 0) {
  1521. return new ResponseJson(200, "修改成功!", 200);
  1522. } else {
  1523. return new ResponseJson(500, "修改失败!", 500);
  1524. }
  1525. }
  1526. /**
  1527. * 进入修改退货页面
  1528. *
  1529. * @param request
  1530. * @return
  1531. * @throws Exception
  1532. */
  1533. @RequiresPermissions("customer:update:noreason")
  1534. @RequestMapping("/_update_noreason_back")
  1535. public ModelAndView toUpdateNoreasonBack(HttpServletRequest request) throws Exception {
  1536. ModelAndView mv = new ModelAndView("cm/customer/update_noreason_back");
  1537. String customerId = request.getParameter("customerId");
  1538. mv.addObject("customerId", customerId);
  1539. return mv;
  1540. }
  1541. /**
  1542. * 获取无理由退货信息
  1543. *
  1544. * @param request
  1545. * @return
  1546. * @throws Exception
  1547. */
  1548. @ResponseBody
  1549. @RequiresPermissions("customer:update:noreason")
  1550. @RequestMapping("/get_noreason_back")
  1551. public ResponseJson getNoreasonBack(HttpServletRequest request) throws Exception {
  1552. String customerId = request.getParameter("customerId");
  1553. if (!StringUtils.isNotEmpty(customerId)) {
  1554. return new ResponseJson(500, "该客诉信息不存在!", 500);
  1555. }
  1556. NoreasonBack noreasonBack = new NoreasonBack();
  1557. noreasonBack.setCustomerId(Integer.parseInt(customerId));
  1558. noreasonBack.setNoreasonBackState(1);
  1559. //获取无理由退货信息
  1560. noreasonBack = customerService.getNoreasonBack(noreasonBack);
  1561. if (noreasonBack == null) {
  1562. return new ResponseJson(500, "该客诉没有无理由售后退货信息!", 500);
  1563. } else {
  1564. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1565. rj.addResponseKeyValue("noreasonBack", noreasonBack);
  1566. return rj;
  1567. }
  1568. }
  1569. /**
  1570. * 修改售后无理由退货信息
  1571. *
  1572. * @param request
  1573. * @param noreasonBack
  1574. * @return
  1575. * @throws Exception
  1576. */
  1577. @ResponseBody
  1578. @RequiresPermissions("customer:update:noreason")
  1579. @RequestMapping("/update_noreason")
  1580. public ResponseJson updateNoreason(HttpServletRequest request, NoreasonBack noreasonBack) throws Exception {
  1581. String closedProducts = request.getParameter("closed_products");
  1582. String closedFittings = request.getParameter("closed_fittings");
  1583. if (!StringUtils.isNotEmpty(noreasonBack.getNoreasonBackId().toString())) {
  1584. return new ResponseJson(500, "该售后无理由退货信息不能修改!", 500);
  1585. }
  1586. // if (StringUtils.isNotEmpty(noreasonBack.getNoreasonBackBackPostage().toString())) {
  1587. // noreasonBack.setNoreasonBackBackPostage(noreasonBack.getNoreasonBackBackPostage().intValue() * 100);
  1588. // }
  1589. // if(noreasonBack.getNoreasonBackBackStatus() != 1){
  1590. // ComplaintSignclosedInfo cs = new ComplaintSignclosedInfo();
  1591. // cs.setSignclosedCustomerId(noreasonBack.getCustomerId());
  1592. // cs.setSignclosedLogistics(noreasonBack.getNoreasonBackBackLogisticsCompany());
  1593. // cs.setSignclosedLogisticsNumber(noreasonBack.getNoreasonBackBackLogisticsNo());
  1594. // complaintSignclosedInfoService.updateSignclosedByCustomerId(cs);
  1595. // }
  1596. int num = noreasonBackService.updateNoreasonBack(noreasonBack, closedProducts, closedFittings);
  1597. if (num > 0) {
  1598. return new ResponseJson(200, "修改成功!", 200);
  1599. } else {
  1600. return new ResponseJson(500, "修改失败!", 500);
  1601. }
  1602. }
  1603. /**
  1604. * 查询未解决客诉数量
  1605. */
  1606. @ResponseBody
  1607. @RequestMapping(value = "/selectNumberBacklog")
  1608. public ResultMsg selectTodo(HttpServletRequest request){
  1609. ResultMsg msg = new ResultMsg();
  1610. CustomerInfo customerInfo = new CustomerInfo();
  1611. //获取登录员工id
  1612. Admin admin = AdminUtils.getLoginAdmin();
  1613. customerInfo.setAdminId(admin.getAdminId());
  1614. customerInfo.setCustomerIsSolve(2);
  1615. //未解决客诉数量
  1616. Integer notSolvedCustomer = customerService.selectNotSolvedCustomer(customerInfo);
  1617. //需要向工厂确认所有已签收的产品数量
  1618. CustomerCommon customerCommon = new CustomerCommon();
  1619. customerCommon.setAdminId(admin.getAdminId());
  1620. customerCommon.setRelationBackStatus(4);
  1621. Integer amountReceivedCustomer = customerCommonService.listCustomerCommonByStatus(customerCommon);
  1622. //需要填写Efast订单号的客诉数量
  1623. customerCommon.setRelationBackStatus(3);
  1624. Integer noEntryCustomer = customerCommonService.listCustomerCommonByStatus(customerCommon);
  1625. //客诉录入后,三天后未寄回的客诉数量
  1626. customerCommon.setRelationBackStatus(1);
  1627. customerCommon.setRelationCreateTime(new Date());
  1628. Integer notSendCustomer = customerCommonService.listCustomerCommonByStatus(customerCommon);
  1629. Map<String,Integer> numberMap = new HashMap<>();
  1630. numberMap.put("notSolvedCustomer",notSolvedCustomer);
  1631. numberMap.put("amountReceivedCustomer",amountReceivedCustomer);
  1632. numberMap.put("noEntryCustomer",noEntryCustomer);
  1633. numberMap.put("notSendCustomer",notSendCustomer);
  1634. numberMap.put("adminDept",admin.getAdminDept());
  1635. msg.setResultCode(ResultInfo.SUCCESSCODE);
  1636. msg.setStatus(true);
  1637. msg.setData(numberMap);
  1638. return msg;
  1639. }
  1640. /**
  1641. * 根据微信昵称/姓名/电话查询客诉
  1642. *
  1643. * @param request
  1644. * @return
  1645. */
  1646. @ResponseBody
  1647. @RequiresPermissions("customer:list:customer")
  1648. @RequestMapping("/get_custoner_info")
  1649. public ResponseJson getCustonerInfo(HttpServletRequest request,CustomerCommon customerCommon) throws Exception {
  1650. if (customerCommon == null) {
  1651. return new ResponseJson(500, "参数错误!", 500);
  1652. }
  1653. List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
  1654. if(customerCommonList.size() < 1){
  1655. return new ResponseJson(500, "不存在相关客诉信息!", 500);
  1656. } else {
  1657. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1658. rj.addResponseKeyValue("customer", customerCommonList.get(0));
  1659. return rj;
  1660. }
  1661. }
  1662. /**
  1663. * 申请邮费
  1664. * @return
  1665. */
  1666. @ResponseBody
  1667. @RequiresPermissions("customer:applyPostage:customer")
  1668. @RequestMapping(value = "/apply_postage")
  1669. public ResponseJson applyPostage(HttpServletRequest request, Integer customerId) throws Exception {
  1670. CustomerInfo customerInfo = customerService.getCustomerInfo(customerId);
  1671. if(customerInfo == null){
  1672. return new ResponseJson(500, "未获取到客诉", 500);
  1673. }
  1674. CustomerCommon customerCommon = new CustomerCommon();
  1675. customerCommon.setCustomerId(customerId);
  1676. List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
  1677. customerCommon = customerCommonList.get(0);
  1678. if(customerCommon.getRelationBackStatus() == 1){ //1:未寄回 2:已寄回 3:已收货 4:已签收待确认
  1679. return new ResponseJson(500, "请修改寄回状态,并填写寄回信息", 500);
  1680. }
  1681. if(customerCommon.getRelationBackStatus() == 2){ //1:未寄回 2:已寄回 3:已收货 4:已签收待确认
  1682. return new ResponseJson(500, "产品正在寄回中!", 500);
  1683. }
  1684. if(customerCommon.getRelationIsTransfer() == 0){ //relationIsTransfer 是否需要转账邮费 0:不需要 10:需要转账
  1685. return new ResponseJson(500, "请修改邮费转账状态,并填写邮费信息", 500);
  1686. }
  1687. if(customerCommon.getRelationBackPostage() == null || customerCommon.getRelationBackPostage() == 0 //relationBackPostage
  1688. || customerCommon.getRelationAlipay() == null || customerCommon.getRelationAlipayName() == null ){
  1689. return new ResponseJson(500, "请填写邮费信息", 500);
  1690. }
  1691. if(customerInfo.getCompanyId() == null || customerInfo.getCompanyId() == 0 ){
  1692. return new ResponseJson(500, "未正确选择销售公司", 500);
  1693. }
  1694. Postage age = new Postage();
  1695. age.setCustomerId(customerInfo.getCustomerId()); //客诉id
  1696. List<Postage> postageList = postageService.listPostage(age);
  1697. if(postageList != null && postageList.size() > 0){
  1698. return new ResponseJson(500, "该条客诉已在申请邮费中了", 500);
  1699. }
  1700. ResponseJson rj = new ResponseJson(200, "可以申请邮费", 200);
  1701. rj.addResponseKeyValue("customerCommon",customerCommon);
  1702. rj.addResponseKeyValue("customerInfo",customerInfo);
  1703. return rj;
  1704. }
  1705. /**
  1706. * 申请邮费
  1707. * @return
  1708. */
  1709. @ResponseBody
  1710. @RequiresPermissions("customer:applyPostage:customer")
  1711. @RequestMapping(value = "/add_postage")
  1712. public ResponseJson addPostage(HttpServletRequest request, Integer customerId,String postageLogisticsImg) throws Exception {
  1713. CustomerInfo customerInfo = customerService.getCustomerInfo(customerId);
  1714. if(customerInfo == null){
  1715. return new ResponseJson(500, "未获取到客诉", 500);
  1716. }
  1717. CustomerCommon customerCommon = new CustomerCommon();
  1718. customerCommon.setCustomerId(customerId);
  1719. List<CustomerCommon> customerCommonList = customerCommonService.listCustomerCommon(customerCommon);
  1720. customerCommon = customerCommonList.get(0);
  1721. if(customerCommon.getRelationBackStatus() == 1){ //1:未寄回 2:已寄回 3:已收货 4:已签收待确认
  1722. return new ResponseJson(500, "请修改寄回状态,并填写寄回信息", 500);
  1723. }
  1724. if(customerCommon.getRelationBackStatus() == 2){ //1:未寄回 2:已寄回 3:已收货 4:已签收待确认
  1725. return new ResponseJson(500, "产品正在寄回中!", 500);
  1726. }
  1727. if(customerCommon.getRelationIsTransfer() == 0){ //relationIsTransfer 是否需要转账邮费 0:不需要 10:需要转账
  1728. return new ResponseJson(500, "请修改邮费转账状态,并填写邮费信息", 500);
  1729. }
  1730. if(customerCommon.getRelationBackPostage() == null || customerCommon.getRelationBackPostage() == 0 //relationBackPostage
  1731. || customerCommon.getRelationAlipay() == null || customerCommon.getRelationAlipayName() == null ){
  1732. return new ResponseJson(500, "请填写邮费信息", 500);
  1733. }
  1734. if(customerInfo.getCompanyId() == null || customerInfo.getCompanyId() == 0 ){
  1735. return new ResponseJson(500, "未正确选择销售公司", 500);
  1736. }
  1737. Postage age = new Postage();
  1738. age.setCustomerId(customerInfo.getCustomerId()); //客诉id
  1739. List<Postage> postageList = postageService.listPostage(age);
  1740. if(postageList != null && postageList.size() > 0){
  1741. return new ResponseJson(500, "该条客诉已在申请邮费中了", 500);
  1742. }
  1743. String orderId = "";
  1744. for (SalesOrder salesOrder : customerCommon.getSalesOrderList()){
  1745. if("".equals(orderId)){
  1746. orderId = salesOrder.getSalesOrderId();
  1747. }else{
  1748. orderId += ","+salesOrder.getSalesOrderId();
  1749. }
  1750. }
  1751. Integer flag = 0;
  1752. Postage postage = new Postage();
  1753. postage.setCompanyId(customerInfo.getCompanyId()); //销售公司
  1754. postage.setAdminId(customerInfo.getAdminId()); //客服
  1755. postage.setCustomerId(customerInfo.getCustomerId()); //客诉id
  1756. postage.setPostageCustomerStatus(2); //------考虑手动点, 直接变为申请中
  1757. postage.setPostageManagerStatus(1); //------考虑手动点, 直接变为申请中
  1758. postage.setPostageOrderSource(customerInfo.getStoreId()); //店铺id
  1759. postage.setPostageTreatmentMethod(customerCommon.getCustomerIsSolve()); //处理方式
  1760. postage.setSalesOrderId(orderId); //efast订单号
  1761. postage.setPostageClientName(customerCommon.getRelationBackName());
  1762. postage.setPostageClientTel(customerCommon.getRelationBackTel());
  1763. postage.setPostageClientAddress(customerCommon.getRelationSendAddress());
  1764. postage.setPostageLogisticsCompany(customerCommon.getRelationBackLogisticsCompany());
  1765. postage.setPostageLogisticsNo(customerCommon.getRelationBackLogisticsNo());
  1766. postage.setPostageAmount(customerCommon.getRelationBackPostage()); //寄回邮费
  1767. postage.setPostageAlipay(customerCommon.getRelationAlipay()); //支付宝账户
  1768. postage.setPostageAlipayName(customerCommon.getRelationAlipayName()); //支付宝账号名称
  1769. postage.setPostageLogisticsImg(postageLogisticsImg);
  1770. flag = postageService.savePostage(postage);
  1771. if(flag < 1){
  1772. return new ResponseJson(500, "申请失败", 500);
  1773. }
  1774. ResponseJson rj = new ResponseJson(200, "申请成功,请前往邮费转账列表查看", 200);
  1775. return rj;
  1776. }
  1777. /**
  1778. * 根据客诉id查询产品类型
  1779. *
  1780. * @param request
  1781. * @return
  1782. * @throws Exception
  1783. */
  1784. @ResponseBody
  1785. @RequestMapping("/getProductType")
  1786. public ResponseJson getProductType(HttpServletRequest request) throws Exception {
  1787. String customerId = request.getParameter("customerId");
  1788. if (!StringUtils.isNotEmpty(customerId)) {
  1789. return new ResponseJson(500, "查询产品类型失败!", 500);
  1790. }
  1791. //查询客诉产品类型
  1792. ProductType productType = productService.getProductType(Integer.valueOf(customerId));
  1793. if (productType == null) {
  1794. return new ResponseJson(500, "未找到产品类型!", 500);
  1795. } else {
  1796. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1797. rj.addResponseKeyValue("productType", productType);
  1798. return rj;
  1799. }
  1800. }
  1801. /**
  1802. * 根据客户信息查询旧的客诉信息
  1803. *
  1804. * @param request
  1805. * @return
  1806. * @throws Exception
  1807. */
  1808. @ResponseBody
  1809. @RequestMapping("/selectOnCustomer")
  1810. public ResponseJson listOnCustomer(HttpServletRequest request,CustomerInfo customerInfo) throws Exception {
  1811. if (customerInfo == null) {
  1812. return new ResponseJson(500, "查询客诉失败!", 500);
  1813. }
  1814. List<CustomerInfo> onCustomerList = customerService.listOnCustomer(customerInfo);
  1815. if (onCustomerList.size() == 0) {
  1816. return new ResponseJson(500, "未找到客诉!", 500);
  1817. } else {
  1818. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1819. rj.addResponseKeyValue("onCustomerList", onCustomerList);
  1820. return rj;
  1821. }
  1822. }
  1823. /**
  1824. * 根据efast订单号查询efast订单物流信息
  1825. * @param request
  1826. * @return
  1827. * @throws Exception
  1828. */
  1829. @ResponseBody
  1830. @RequestMapping("/getefastOrder")
  1831. public ResponseJson getEfastOrderInfo(HttpServletRequest request,String efastOrderId) throws Exception {
  1832. if (efastOrderId == null) {
  1833. return new ResponseJson(500, "查询失败!", 500);
  1834. }
  1835. JSONObject orderInfo = efastOrderService.getOrderFormEfastByOrderId(efastOrderId);
  1836. if (orderInfo == null) {
  1837. return new ResponseJson(500, "查询失败!", 500);
  1838. } else if (!orderInfo.has("orders")) {
  1839. return new ResponseJson(500, "查询失败!", 500);
  1840. } else {
  1841. ResponseJson rj = new ResponseJson(200, "查询成功", 200);
  1842. rj.addResponseKeyValue("orderInfo", orderInfo.toString());
  1843. return rj;
  1844. }
  1845. }
  1846. }