AdminOrderHandlers.java 58 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040
  1. package com.iamberry.wechat.handles.admin;
  2. import com.iamberry.app.tool.log.RatFWLogger;
  3. import com.iamberry.wechat.core.entity.OrderUtil;
  4. import com.iamberry.wechat.core.entity.ResultMsg;
  5. import com.iamberry.wechat.core.entity.drp.PlaceInfo;
  6. import com.iamberry.wechat.core.entity.member.CashLog;
  7. import com.iamberry.wechat.core.entity.member.Member;
  8. import com.iamberry.wechat.core.entity.mq.MQMessage;
  9. import com.iamberry.wechat.core.entity.order.MessageDto;
  10. import com.iamberry.wechat.core.entity.order.Order;
  11. import com.iamberry.wechat.core.entity.order.OrderActionDto;
  12. import com.iamberry.wechat.core.entity.order.OrderItem;
  13. import com.iamberry.wechat.core.entity.reback.RebackInfo;
  14. import com.iamberry.wechat.core.entity.relationship.DealerRelation;
  15. import com.iamberry.wechat.core.entity.relationship.WdRelation;
  16. import com.iamberry.wechat.face.drp.PlaceInfoService;
  17. import com.iamberry.wechat.face.efast.EfastRentService;
  18. import com.iamberry.wechat.face.member.MemberService;
  19. import com.iamberry.wechat.face.order.AdminOrderService;
  20. import com.iamberry.wechat.face.order.CodeService;
  21. import com.iamberry.wechat.face.reback.LoadRewardTaskService;
  22. import com.iamberry.wechat.face.reback.RebackServices;
  23. import com.iamberry.wechat.face.relationship.DealerRelationService;
  24. import com.iamberry.wechat.face.relationship.WdRelationService;
  25. import com.iamberry.wechat.handles.mq.MQServiceProxy;
  26. import com.iamberry.wechat.tools.NameUtils;
  27. import com.iamberry.wechat.tools.ResultInfo;
  28. import com.iamberry.wechat.tools.SendMessageUtil;
  29. import org.apache.commons.collections.map.HashedMap;
  30. import org.apache.commons.lang3.StringUtils;
  31. import org.springframework.beans.factory.annotation.Autowired;
  32. import org.springframework.stereotype.Controller;
  33. import org.springframework.web.bind.annotation.PathVariable;
  34. import org.springframework.web.bind.annotation.RequestMapping;
  35. import org.springframework.web.bind.annotation.RequestParam;
  36. import org.springframework.web.bind.annotation.ResponseBody;
  37. import org.springframework.web.servlet.ModelAndView;
  38. import javax.servlet.http.HttpServletRequest;
  39. import javax.servlet.http.HttpServletResponse;
  40. import java.io.IOException;
  41. import java.net.URLDecoder;
  42. import java.text.DecimalFormat;
  43. import java.text.SimpleDateFormat;
  44. import java.util.Date;
  45. import java.util.List;
  46. import java.util.Map;
  47. import static com.iamberry.wechat.service.ImberryConfig.INFORM_SHIPPING;
  48. //import cn.jpush.api.common.connection.IHttpClient.RequestMethod;
  49. @Controller
  50. @RequestMapping("/admin/order")
  51. public class AdminOrderHandlers {
  52. @Autowired
  53. private AdminOrderService adminOrderService;
  54. @Autowired
  55. private OrderUtil orderUtil;
  56. @Autowired
  57. private SendMessageUtil sendMessageUtil;
  58. @Autowired
  59. private MemberService memberService;
  60. @Autowired
  61. private WdRelationService wdRelationService;
  62. @Autowired
  63. private DealerRelationService dealerRelationService;
  64. @Autowired
  65. private PlaceInfoService placeInfoService;
  66. @Autowired
  67. private RatFWLogger logger;
  68. @Autowired
  69. private MQServiceProxy mQservice;
  70. @Autowired
  71. private RebackServices rebackServices;
  72. @Autowired
  73. private EfastRentService efastRentService;
  74. @Autowired
  75. private CodeService codeService;
  76. /**
  77. * 后台进入订单列表功能
  78. *
  79. * @param request
  80. * @param pageSize
  81. * @param pageNO
  82. * @return ModelAndView
  83. * @throws Exception
  84. */
  85. @RequestMapping("/selectShopOrder")
  86. public ModelAndView selectShopOrder(HttpServletRequest request,
  87. @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize,
  88. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO) throws Exception {
  89. ModelAndView mv = new ModelAndView("admin/order/orderList");
  90. String orderStatus = request.getParameter("orderStatus");
  91. if (orderStatus == null || "".equals(orderStatus)) {
  92. orderStatus = "paySuccess";
  93. }
  94. // 订单状态,数字标识
  95. int status = -1;
  96. if (!orderStatus.equals("allOrder")) {
  97. status = orderUtil.getOrderStatusByStr(orderStatus);
  98. }
  99. Order order = new Order();
  100. order.setSalesStatus(status);
  101. order.getPage().setPageSize(pageSize);
  102. order.getPage().setPageNumber(pageNO);
  103. order.getPage().initRecordBegin();
  104. List<Order> orderList = this.adminOrderService.selectShopOrder(order);
  105. // 订单是否按照状态查询的, 用于页面
  106. if (status == -1) {
  107. mv.addObject("orderListIsStatus", false);
  108. for (Order orders : orderList) {
  109. // 用户昵称编码
  110. if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) {
  111. orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
  112. }
  113. // 获取用户的操作权限
  114. orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
  115. orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文
  116. // 遍历订单, 判断用户角色
  117. if (orders.getPlaceOpenID() != null && orders.getPlaceOpenID().equals(orders.getSalesOrderid())) {
  118. // 金牌会员
  119. orders.setUserResource("金牌会员");
  120. } else if (orders.getVipRole() != null && orders.getVipRole().equals("52") && orders.getUserResource().equals("3")) {
  121. // 金牌会员直属下线
  122. orders.setUserResource("金牌会员直属下线");
  123. } else {
  124. // 会员
  125. String role = "会员";
  126. switch (Integer.parseInt(orders.getUserResource())) {
  127. case 47:
  128. role = "合伙人下线";
  129. break;
  130. case 48:
  131. role = "门店下线";
  132. break;
  133. case 49:
  134. role = "微代理下线";
  135. break;
  136. case 51:
  137. role = "VIP会员下线";
  138. break;
  139. case 52:
  140. role = "金牌会员下线";
  141. break;
  142. case 53:
  143. role = "钻石下线";
  144. break;
  145. default:
  146. break;
  147. }
  148. orders.setUserResource(role);
  149. }
  150. }
  151. } else {
  152. mv.addObject("orderListIsStatus", true);
  153. for (Order orders : orderList) {
  154. // 用户昵称编码
  155. if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) {
  156. orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
  157. }
  158. // 获取用户的操作权限
  159. orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
  160. // 遍历订单, 判断用户角色
  161. if (orders.getPlaceOpenID() != null && orders.getPlaceOpenID().equals(orders.getSalesOrderid())) {
  162. // 金牌会员
  163. orders.setUserResource("金牌会员");
  164. } else if (orders.getVipRole() != null && orders.getVipRole().equals("52") && orders.getUserResource().equals("3")) {
  165. // 金牌会员直属下线
  166. orders.setUserResource("金牌会员直属下线");
  167. } else {
  168. // 会员
  169. String role = "会员";
  170. switch (Integer.parseInt(orders.getUserResource())) {
  171. case 47:
  172. role = "合伙人下线";
  173. break;
  174. case 48:
  175. role = "门店下线";
  176. break;
  177. case 49:
  178. role = "微代理下线";
  179. break;
  180. case 51:
  181. role = "VIP会员下线";
  182. break;
  183. case 52:
  184. role = "金牌会员下线";
  185. break;
  186. case 53:
  187. role = "钻石下线";
  188. break;
  189. default:
  190. break;
  191. }
  192. orders.setUserResource(role);
  193. }
  194. }
  195. }
  196. mv.addObject("orderList", orderList);
  197. mv.addObject("pageNO", pageNO);
  198. mv.addObject("orderStatus", status);// 订单状态
  199. mv.addObject("url", "/admin/order/selectShopOrder?orderStatus=" + orderStatus + "&pageSize=" + pageSize + "&pageNO=");
  200. mv.addObject("pageSize", this.adminOrderService.selectShopOrderCount(order));
  201. mv.addObject("orderStatusStr", orderUtil.orderStatusIntToOrderStatusString(status));// 订单状态描述(用于选中订单头)
  202. mv.addObject("orderLinkStatus", orderUtil.orderStatusToString(status));// 订单状态描述,中文(显示给用户看)
  203. mv.addObject("statusUrl", "/admin/order/selectShopOrder?bid=&sid=");
  204. return mv;
  205. }
  206. /**
  207. * 同步订单状态
  208. * @param request
  209. * @param orderId
  210. * @param type 1:销售订单,2:代理商采购订单
  211. * @throws Exception
  212. */
  213. @ResponseBody
  214. @RequestMapping("/select_efast_order/{orderId}/{type}")
  215. public ResultMsg selectEfastOrder(HttpServletRequest request,
  216. @PathVariable("orderId") String orderId,
  217. @PathVariable("type") Integer type) throws Exception {
  218. //efast的订单编号
  219. String efastOrderId = request.getParameter("efastOrderId");
  220. ResultMsg msg = new ResultMsg();
  221. if (!cn.jpush.api.utils.StringUtils.isNotEmpty(orderId) || type == null) {
  222. msg.setMessage("订单号或类型为空!");
  223. msg.setResultCode(ResultInfo.ERRORCODE);
  224. msg.setStatus(false);
  225. return msg;
  226. }
  227. //获取队列中的map集合
  228. Map<String, Object> queuesMap = new HashedMap();
  229. String id = efastOrderId;
  230. String EsastType = "1";
  231. //查询efast系统该订单的状态
  232. Map<String, Object> map = efastRentService.getEfastSendOrderInfo(id,EsastType);
  233. if (!(boolean) map.get("status")) {
  234. msg.setData("");
  235. msg.setMessage(map.get("result").toString());
  236. msg.setResultCode(ResultInfo.ERRORCODE);
  237. msg.setStatus(false);
  238. return msg;
  239. }
  240. //获取订单信息
  241. Order or = adminOrderService.getShopOrderByOrderId(orderId);
  242. Order order = new Order();
  243. order.setSalesOrderid(orderId);
  244. order.setSalesStatus(5);
  245. order.setSalesPostFirm((String) map.get("postFirm"));
  246. order.setSalesPostNum((String) map.get("postNum"));
  247. order.setOldStatus(2);
  248. order.setSalesOpenid(or.getSalesOpenid());
  249. //order.set
  250. int flag = adminOrderService.updateOrderDeliver(order);
  251. if (flag < 1){
  252. msg.setMessage("修改订单状态失败");
  253. msg.setResultCode(ResultInfo.ERRORCODE);
  254. msg.setStatus(false);
  255. return msg;
  256. }
  257. Member member = memberService.getMemberByUserOpenId(or.getSalesOpenid());
  258. if (member == null || 1 == member.getUserStatus() || 0 == member.getUserStatus()){ //未关注或者取消关注的,将发送手机短信
  259. logger.info("短信通知:"+ or.getSalesOpenid() +" 用户的订单已发货");
  260. String phone = or.getSalesAddressTel();
  261. codeService.informShipping(phone,INFORM_SHIPPING);
  262. }else if(2 == member.getUserStatus()){ //已关注的用户推送信息到公众号
  263. logger.info("公众号推送物流信息: "+ or.getSalesOpenid() +" 用户的订单已发货");
  264. //消息内容
  265. String data = ResultInfo.ORDERPACKAGETEMP;
  266. data = data.replaceFirst("firstValueOrder", ResultInfo.SHIPMENTMESSAGE)
  267. .replaceFirst("orderIdValueOrder", orderId)
  268. .replaceFirst("orderValuePackageId", SendMessageUtil.hashmap.get(map.get("postFirm")) + ":" + map.get("postNum"))
  269. .replaceFirst("orderRemarkValue", ResultInfo.INTOSHOP);
  270. sendMessageUtil.sendTemplateMessageToOpenid(data, or.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2);
  271. }
  272. msg.setMessage(NameUtils.getConfig("SUCCESSINFO"));
  273. msg.setResultCode(ResultInfo.SUCCESSCODE);
  274. msg.setStatus(true);
  275. return msg;
  276. }
  277. /**
  278. * 订单详细信息
  279. *
  280. * @param request
  281. * @param orderId
  282. * @return ModelAndView
  283. * @throws Exception
  284. */
  285. @RequestMapping("/getShopOrderByOrderId/{orderId}")
  286. public ModelAndView getShopOrderByOrderId(HttpServletRequest request,
  287. @PathVariable("orderId") String orderId) throws Exception {
  288. ModelAndView mv = new ModelAndView("admin/order/order");
  289. if (null != orderId && !"".equals(orderId)) {
  290. Order order = this.adminOrderService.getShopOrderByOrderId(orderId);
  291. List<OrderItem> orderItemList = this.adminOrderService.getShopOrderItemByOrderId(orderId);
  292. // 用户昵称编码
  293. if (order.getUserNickname() != null && !order.getUserNickname().isEmpty()) {
  294. order.setUserNickname(URLDecoder.decode(order.getUserNickname(), "UTF-8"));
  295. }
  296. // 获取用户的操作权限
  297. order.setOperations(orderUtil.orderStatusToOperation(order.getSalesStatus(), order.getSalesOrderid(), order.getSalesIsRfund()));
  298. order.setOrderLinkStatus(orderUtil.orderStatusToString(order.getSalesStatus())); // 订单状态描述,中文
  299. if (order.getSalesStatus() == 2) {
  300. // 给百胜推送信息
  301. try {
  302. MQMessage message = new MQMessage();
  303. message.setServiceToMessage(orderId);
  304. message.setServiceOtherMessage("efast.trade.detail.get");
  305. message.setServiceIsSend(2); // 没有推送的信息
  306. message.setServiceStatus(1); // 推送成功
  307. message.setServiceType(1); // 添加订单信息
  308. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  309. message.setServiceHandlerMethodName("selectEfastSendOrderInfo");
  310. mQservice.insertMQMessage(message);
  311. } catch (Exception e) {
  312. // TODO: handle exception
  313. }
  314. } else if (order.getSalesStatus() == 8) {
  315. // 给百胜推送信息
  316. try {
  317. MQMessage message = new MQMessage();
  318. message.setServiceToMessage(orderId);
  319. message.setServiceOtherMessage("efast.order.return.info.fetch");
  320. message.setServiceIsSend(2); // 没有推送的信息
  321. message.setServiceStatus(1); // 推送成功
  322. message.setServiceType(1); // 添加订单信息
  323. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  324. message.setServiceHandlerMethodName("selectEfastReturnOrderInfo");
  325. mQservice.insertMQMessage(message);
  326. } catch (Exception e) {
  327. // TODO: handle exception
  328. }
  329. }
  330. mv.addObject("order", order);
  331. mv.addObject("orderItemList", orderItemList);
  332. }
  333. return mv;
  334. }
  335. @RequestMapping(value = "/selectShopOrderByOrderId")
  336. public ModelAndView selectShopOrderByOrderId(HttpServletRequest request,
  337. @RequestParam(value = "pageSize", defaultValue = "20", required = false) Integer pageSize,
  338. @RequestParam(value = "pageNO", defaultValue = "1", required = false) Integer pageNO,
  339. OrderActionDto actionDto) throws Exception {
  340. ModelAndView mv = new ModelAndView("admin/order/orderList");
  341. Order order = new Order();
  342. String orderStatus = request.getParameter("orderStatus");
  343. //url需要进行拼接,拼接的内容是页面上的时间条件
  344. StringBuffer url = new StringBuffer("/admin/order/selectShopOrderByOrderId?orderStatus=" + actionDto.getOrderStatus());
  345. // 判断是否输入数据
  346. if (!(actionDto.getText() == null || actionDto.getText().isEmpty())) {
  347. url.append("&text=" + actionDto.getText());
  348. }
  349. //分页并带条件查询接收参数
  350. String beginTime = request.getParameter("beginDate");
  351. String endTime = request.getParameter("endDate");
  352. SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
  353. String salesAddressTel = request.getParameter("salesAddressTel");
  354. String salesAddressName = request.getParameter("salesAddressName");
  355. String salesAddressInfo = request.getParameter("salesAddressInfo");
  356. if (salesAddressTel != null && !"".equals(salesAddressTel)) {
  357. order.setSalesAddressTel(salesAddressTel);
  358. mv.addObject("salesAddressTel", salesAddressTel);
  359. url.append("&salesAddressTel=" + salesAddressTel);
  360. }
  361. if (salesAddressName != null && !"".equals(salesAddressName)) {
  362. order.setSalesAddressName(salesAddressName);
  363. mv.addObject("salesAddressName", salesAddressName);
  364. url.append("&salesAddressName=" + salesAddressName);
  365. }
  366. if (salesAddressInfo != null && !"".equals(salesAddressInfo)) {
  367. order.setSalesAddressInfo(salesAddressInfo);
  368. mv.addObject("salesAddressInfo", salesAddressInfo);
  369. url.append("&salesAddressInfo=" + salesAddressInfo);
  370. }
  371. if (null != beginTime && !"".equals(beginTime)) {
  372. if (!request.getMethod().equalsIgnoreCase("post")) {
  373. actionDto.setBeginDate(format.parse(new String(beginTime.getBytes("ISO-8859-1"), "UTF-8")));
  374. } else {
  375. actionDto.setBeginDate(format.parse(beginTime));
  376. }
  377. }
  378. if (null != endTime && !"".equals(endTime)) {
  379. if (!request.getMethod().equalsIgnoreCase("post")) {
  380. actionDto.setEndDate(format.parse(new String(endTime.getBytes("ISO-8859-1"), "UTF-8")));
  381. } else {
  382. actionDto.setEndDate(format.parse(endTime));
  383. }
  384. }
  385. if (null != actionDto.getBeginDate()) {
  386. url.append("&beginDate=" + format.format(actionDto.getBeginDate()));
  387. mv.addObject("beginDate", format.format(actionDto.getBeginDate()));
  388. }
  389. if (null != actionDto.getEndDate()) {
  390. url.append("&endDate=" + format.format(actionDto.getEndDate()));
  391. mv.addObject("endDate", format.format(actionDto.getEndDate()));
  392. }
  393. url.append("&pageSize=" + pageSize + "&pageNO=");
  394. if (orderStatus == null || "".equals(orderStatus)) {
  395. orderStatus = "paySuccess";
  396. }
  397. // 订单状态,数字标识
  398. int status = -1;
  399. if (!orderStatus.equals("allOrder")) {
  400. status = orderUtil.getOrderStatusByStr(orderStatus);
  401. }
  402. order.setSalesStatus(status);
  403. order.setSalesOrderid(actionDto.getText());
  404. order.setBeginDate(actionDto.getBeginDate());
  405. order.setEndDate(actionDto.getEndDate());
  406. order.getPage().setPageSize(pageSize);
  407. order.getPage().setPageNumber(pageNO);
  408. order.getPage().initRecordBegin();
  409. List<Order> orderList = this.adminOrderService.selectShopOrderByOrderId(order);
  410. // 订单是否按照状态查询的, 用于页面
  411. if (status == -1) {
  412. mv.addObject("orderListIsStatus", false);
  413. for (Order orders : orderList) {
  414. // 用户昵称编码
  415. if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) {
  416. orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
  417. }
  418. // 获取用户的操作权限
  419. orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
  420. orders.setOrderLinkStatus(orderUtil.orderStatusToString(orders.getSalesStatus())); // 订单状态描述,中文
  421. }
  422. } else {
  423. mv.addObject("orderListIsStatus", true);
  424. for (Order orders : orderList) {
  425. // 用户昵称编码
  426. if (orders.getUserNickname() != null && !orders.getUserNickname().isEmpty()) {
  427. orders.setUserNickname(URLDecoder.decode(orders.getUserNickname(), "UTF-8"));
  428. }
  429. // 获取用户的操作权限
  430. orders.setOperations(orderUtil.orderStatusToOperation(orders.getSalesStatus(), orders.getSalesOrderid(), orders.getSalesIsRfund()));
  431. }
  432. }
  433. // 时间区间的处理
  434. String beginDateTime = "";
  435. SimpleDateFormat simple = null;
  436. if (actionDto.getBeginDate() != null) {
  437. simple = new SimpleDateFormat("yyyy-MM-dd");
  438. beginDateTime = simple.format(actionDto.getBeginDate());
  439. }
  440. String endDate = "";
  441. if (actionDto.getEndDate() != null) {
  442. if (simple == null) {
  443. simple = new SimpleDateFormat("yyyy-MM-dd");
  444. }
  445. endDate = simple.format(actionDto.getEndDate());
  446. }
  447. mv.addObject("orderList", orderList);
  448. mv.addObject("pageNO", pageNO);
  449. mv.addObject("orderStatus", status);// 订单状态
  450. mv.addObject("url", url.toString());
  451. mv.addObject("pageSize", this.adminOrderService.selectShopOrderCount(order));
  452. mv.addObject("orderStatusStr", orderUtil.orderStatusIntToOrderStatusString(status));// 订单状态描述(用于选中订单头)
  453. mv.addObject("orderLinkStatus", orderUtil.orderStatusToString(status));// 订单状态描述,中文(显示给用户看)
  454. mv.addObject("statusUrl", "/admin/order/selectShopOrderByOrderId?bid=&sid=");
  455. mv.addObject("beginDate", beginDateTime);
  456. mv.addObject("endDate", endDate);
  457. mv.addObject("selectInput", actionDto.getText());
  458. return mv;
  459. }
  460. /**
  461. * 操作订单
  462. *
  463. * @return
  464. * @throws Exception
  465. */
  466. @RequestMapping("/{action}/{orderId}")
  467. public synchronized ModelAndView actionOrder(
  468. @PathVariable("action") String action,
  469. @PathVariable("orderId") String orderId,
  470. OrderActionDto actionDto
  471. ) throws Exception {
  472. ModelAndView mv = new ModelAndView("admin/msg/msg");
  473. DecimalFormat df=new DecimalFormat("0.00");
  474. Order order = new Order();
  475. order.setSalesOrderid(orderId);
  476. // 订单状态,数字标识
  477. order.setSalesPostFirm(actionDto.getPostFirm());
  478. order.setSalesPostNum(actionDto.getPostNum());
  479. // 判断当前的订单,是否支持希望进行的操作
  480. Order currentOrder = adminOrderService.selectOrderStatusByOrderId(orderId);
  481. //获取当前订单订单项
  482. List<OrderItem> itemList = adminOrderService.getShopOrderItemByOrderId(orderId);
  483. Integer orderStatus = currentOrder.getSalesStatus();
  484. order.setOldStatus(orderStatus);
  485. order.setSalesOpenid(currentOrder.getSalesOpenid());
  486. if (!orderUtil.orderStatusIntToOrderStatusString(orderStatus).equals(actionDto.getOrderStatus())) {
  487. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  488. return mv;
  489. }
  490. switch (orderStatus) {
  491. case 0: // 取消的订单,不支持任何修改订单状态的操作
  492. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,取消的订单不能操作!"));
  493. return mv;
  494. case 1: // 待支付(管理员存在操作权限:取消订单,如果取消订单,订单状态修改为0)
  495. if (!orderUtil.getOrderActin()[0].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  496. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  497. return mv;
  498. }
  499. if (!orderUtil.orderStatusIntToOrderStatusString(0).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  500. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  501. return mv;
  502. }
  503. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  504. // 执行修改操作
  505. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  506. mv.addObject("msgObj", new MessageDto(true, "取消订单成功", "恭喜您!订单:" + orderId + "取消成功,本订单将不能操作!"));
  507. return mv;
  508. } else {
  509. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  510. return mv;
  511. }
  512. case 2: // 已支付、待发货(管理员的操作为:确认发货)
  513. if (!orderUtil.getOrderActin()[2].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  514. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  515. return mv;
  516. }
  517. if (!orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  518. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  519. return mv;
  520. }
  521. // 执行修改操作
  522. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  523. if (adminOrderService.deliverOrderByOrderId(order)) {
  524. mv.addObject("msgObj", new MessageDto(true, "操作成功", "订单已发货"));
  525. //logger.info("准备为用户推送模版信息!");
  526. // 给百胜推送信息
  527. /* try {
  528. MQMessage message = new MQMessage();
  529. message.setServiceToMessage(orderId);
  530. message.setServiceOtherMessage(actionDto.getPostFirm() + "-" + actionDto.getPostNum());
  531. message.setServiceIsSend(2); // 没有推送的信息
  532. message.setServiceStatus(1); // 推送成功
  533. message.setServiceType(1); // 添加订单信息
  534. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  535. message.setServiceHandlerMethodName("sendOrderInfoToEfast");
  536. mQservice.insertMQMessage(message);
  537. } catch (Exception e) {
  538. // TODO: handle exception
  539. }*/
  540. //给用户发送消息-已发货的通知
  541. try {
  542. sendMessageUtil.orderSendSuccess("尊敬的朵粉,您的订单已发货,物流信息:",orderId,SendMessageUtil.hashmap.get(actionDto.getPostFirm()),
  543. actionDto.getPostNum(),currentOrder.getSalesAddressInfo(),"如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
  544. } catch (Exception e) {
  545. logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
  546. }
  547. /*//消息内容
  548. String data = ResultInfo.ORDERPACKAGETEMP;
  549. data = data.replaceFirst("firstValueOrder", ResultInfo.SHIPMENTMESSAGE)
  550. .replaceFirst("orderIdValueOrder", orderId)
  551. .replaceFirst("orderValuePackageId", SendMessageUtil.hashmap.get(actionDto.getPostFirm()) + ":" + actionDto.getPostNum())
  552. .replaceFirst("orderRemarkValue", ResultInfo.INTOSHOP);
  553. sendMessageUtil.sendTemplateMessageToOpenid(data, currentOrder.getSalesOpenid(), ResultInfo.PAGE_SHIPMENT + orderId, 2);*/
  554. return mv;
  555. } else {
  556. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  557. return mv;
  558. }
  559. case 3: // 退款申请中(管理员可以操作:确认退款、驳回退款)
  560. order.setSalesAuditRemark(actionDto.getSalesAuditRemark());
  561. // 只有两种操作 : 确认退款、驳回退款
  562. if (orderUtil.getOrderActin()[4].equals(action)) {
  563. // 驳回退款
  564. if (!orderUtil.orderStatusIntToOrderStatusString(2).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  565. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  566. return mv;
  567. }
  568. order.setSalesStatus(2);
  569. if (adminOrderService.updateOrderStatusByOrderId(order)) {// 驳回退款
  570. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  571. try {
  572. //sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请被退回。",payMoney,itemList.get(0).getItemProductName(),orderId,
  573. // "请确认您的退款申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  574. sendMessageUtil.refundToDismiss("尊敬的朵粉,您的退款申请被退回。",payMoney,itemList.get(0).getItemProductName(),orderId,
  575. "请确认您的退款申请信息填写无误。 如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  576. } catch (Exception e) {
  577. logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
  578. }
  579. mv.addObject("msgObj", new MessageDto(true, "驳回退款成功!", "驳回退款成功,订单进入待发货状态!"));
  580. return mv;
  581. } else {
  582. mv.addObject("msgObj", new MessageDto(false, "对不起,驳回退款订单失败", "对不起,对不起,驳回退款订单失败,请稍后重试!"));
  583. return mv;
  584. }
  585. } else if (orderUtil.getOrderActin()[5].equals(action)) {
  586. // 同意退款 , 需要回滚积分
  587. if (!orderUtil.orderStatusIntToOrderStatusString(4).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  588. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  589. return mv;
  590. }
  591. order.setSalesStatus(4);
  592. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  593. //将返利表中待入账改为已入账
  594. RebackInfo rabackInfo = new RebackInfo();
  595. rabackInfo.setOrderId(order.getSalesOrderid());
  596. rabackInfo.setStatus(3);
  597. //根据orderId查询订单所有信息
  598. Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId);
  599. Member member = new Member();
  600. //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中
  601. if (orderInfo != null && orderInfo.getBalancePayAmount() != null) {
  602. member.setUserOpenid(orderInfo.getSalesOpenid());
  603. member.setUserIncome(orderInfo.getBalancePayAmount());
  604. adminOrderService.updateUserByUserId(member);
  605. //将数据存入日志中
  606. CashLog cashLog = new CashLog();
  607. cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid());
  608. cashLog.setCashLogsOrderid(orderId);
  609. cashLog.setCashLogsNum(orderInfo.getBalancePayAmount());
  610. cashLog.setCashLogsType(1);
  611. cashLog.setCashLogsIntroduction("退款");
  612. cashLog.setCashLogsResType(5);
  613. cashLog.setCashLogsCreateDate(new Date());
  614. adminOrderService.addCashLog(cashLog);
  615. }
  616. rebackServices.updateStatus(rabackInfo);
  617. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  618. try {
  619. sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请已通过。",payMoney,itemList.get(0).getItemProductName(),orderId,
  620. "退款金额将在三个工作日内退款到您的支付账户。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  621. } catch (Exception e) {
  622. logger.info("订单号:"+ orderId +"的订单同意退款,发送微信消息失败!");
  623. }
  624. mv.addObject("msgObj", new MessageDto(true, "订单退款成功", "请联系财务部门,将此订单退款!"));
  625. updateRebate(order, 3);
  626. return mv;
  627. } else {
  628. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  629. return mv;
  630. }
  631. } else {
  632. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  633. return mv;
  634. }
  635. case 4: // 已退款(管理员通过申请退款,此时订单任何人不能操作)
  636. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已退款的订单不能操作!"));
  637. return mv;
  638. case 5: // 已发货(管理员不具有权限)
  639. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已发货的订单不能操作!"));
  640. return mv;
  641. case 6: // 申请退货中(只有管理员能操作 : 确认退货)
  642. order.setSalesAuditRemark(actionDto.getSalesAuditRemark());
  643. if (!orderUtil.getOrderActin()[6].equals(action) && !orderUtil.getOrderActin()[10].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  644. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  645. return mv;
  646. }
  647. if (!orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())
  648. && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  649. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  650. return mv;
  651. }
  652. // 执行修改操作
  653. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  654. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  655. if (orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())) {
  656. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  657. int productNum = 0;
  658. for (OrderItem item : itemList) {
  659. productNum += item.getItemNum();
  660. }
  661. try {
  662. sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已通过您的【退货申请】",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
  663. "请您尽快联系客服人员处理,根据客服人员指引将机器寄回。对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  664. } catch (Exception e) {
  665. logger.info("订单号:"+ orderId +"的订单同意退货,发送微信消息失败!");
  666. }
  667. mv.addObject("msgObj", new MessageDto(true, "订单申请退货成功", "恭喜您!同意订单:" + orderId + "退货,等待收到货物后确认退货!"));
  668. } else {
  669. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  670. int productNum = 0;
  671. for (OrderItem item : itemList) {
  672. productNum += item.getItemNum();
  673. }
  674. try {
  675. sendMessageUtil.orderApplyReturn("尊敬的朵粉,您的【退货申请】没有通过。",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
  676. "请确认您的退货申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  677. } catch (Exception e) {
  678. logger.info("订单号:"+ orderId +"的订单驳回退货,发送微信消息失败!");
  679. }
  680. mv.addObject("msgObj", new MessageDto(true, "成功驳回订单退货", "订单:" + orderId + "退货被驳回,状态返回已发货!"));
  681. }
  682. return mv;
  683. } else {
  684. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  685. return mv;
  686. }
  687. case 7: // 退货中(管理员具有操作能力:确认退货)
  688. if (!orderUtil.getOrderActin()[7].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  689. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  690. return mv;
  691. }
  692. if (!orderUtil.orderStatusIntToOrderStatusString(8).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  693. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  694. return mv;
  695. }
  696. // 执行修改操作
  697. order.setSalesStatus(8);
  698. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  699. //将返利表中待入账改为已入账
  700. RebackInfo rabackInfo = new RebackInfo();
  701. rabackInfo.setOrderId(order.getSalesOrderid());
  702. rabackInfo.setStatus(3);
  703. rebackServices.updateStatus(rabackInfo);
  704. //根据orderId查询订单所有信息
  705. Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId);
  706. Member memberInfo = new Member();
  707. //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中
  708. if (orderInfo != null && orderInfo.getBalancePayAmount() != null) {
  709. memberInfo.setUserOpenid(orderInfo.getSalesOpenid());
  710. memberInfo.setUserIncome(orderInfo.getBalancePayAmount());
  711. adminOrderService.updateUserByUserId(memberInfo);
  712. //将数据存入日志中
  713. CashLog cashLog = new CashLog();
  714. cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid());
  715. cashLog.setCashLogsOrderid(orderId);
  716. cashLog.setCashLogsNum(orderInfo.getBalancePayAmount());
  717. cashLog.setCashLogsType(1);
  718. cashLog.setCashLogsIntroduction("退货");
  719. cashLog.setCashLogsResType(5);
  720. cashLog.setCashLogsCreateDate(new Date());
  721. adminOrderService.addCashLog(cashLog);
  722. }
  723. mv.addObject("msgObj", new MessageDto(true, "确认订单退货成功", "恭喜您!同意订单:" + orderId + "退货,订单关闭!"));
  724. updateRebate(order, 3);
  725. try {
  726. MQMessage message = new MQMessage();
  727. message.setServiceToMessage(orderId);
  728. message.setServiceOtherMessage(currentOrder.getSalesPostFirm() + "-" + currentOrder.getSalesPostNum());
  729. message.setServiceIsSend(2); // 没有推送的信息
  730. message.setServiceStatus(1); // 推送成功
  731. message.setServiceType(1); // 添加订单信息
  732. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  733. message.setServiceHandlerMethodName("returnOrderInfoToEfast");
  734. mQservice.insertMQMessage(message);
  735. } catch (Exception e) {
  736. // TODO: handle exception
  737. }
  738. //推送金额变动消息
  739. Member member = memberService.getMemberByUserOpenId(currentOrder.getSalesOpenid());
  740. if (member != null || member.getUserResType() != null) {
  741. String toopenid = "";
  742. switch (member.getUserResType().intValue()) {//用户来源
  743. case 2: //用户来源 微代理
  744. WdRelation wdrelation = wdRelationService.getWdRelationByOpenid(currentOrder.getSalesOpenid());
  745. Member fatherMember = memberService.getMemberByUserId(wdrelation.getWdFirst()); //微代理父节点信息
  746. if (fatherMember != null && StringUtils.isNotEmpty(fatherMember.getUserOpenid())) {
  747. toopenid = fatherMember.getUserOpenid();
  748. }
  749. break;
  750. case 3: //用户来源 线下
  751. DealerRelation dealerrelation = dealerRelationService.getDealerRelationById(member.getUserDealers());
  752. int Dealerid = 0;
  753. if (dealerrelation != null) {
  754. if (dealerrelation.getDealerThird() != null) { //第三极
  755. Dealerid = dealerrelation.getDealerThird();
  756. } else if (dealerrelation.getDealerSecond() != null) { //第二级
  757. Dealerid = dealerrelation.getDealerSecond();
  758. } else if (dealerrelation.getDealerFifth() != null) { //第一级
  759. Dealerid = dealerrelation.getDealerFifth();
  760. }
  761. }
  762. PlaceInfo fatherPlace = placeInfoService.getPlaceInfoById(Dealerid);//分销父节点信息
  763. if (fatherPlace != null) {
  764. toopenid = fatherPlace.getOpenid();
  765. }
  766. break;
  767. }
  768. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  769. int productNum = 0;
  770. for (OrderItem item : itemList) {
  771. productNum += item.getItemNum();
  772. }
  773. try {
  774. sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已收到您寄回的产品",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
  775. "退款金额将在三个工作日内退款到您的支付账户。对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  776. } catch (Exception e) {
  777. logger.info("订单号:"+ orderId +"的订单退货,后台确认收货,发送微信消息失败!");
  778. }
  779. }
  780. return mv;
  781. } else {
  782. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  783. return mv;
  784. }
  785. case 8: // 订单退货,订单关闭(管理员收到货后,确认退货,订单状态修改为此,订单不对外提供操作能力)
  786. mv.addObject("msgObj", new MessageDto(false, "对不起,操作订单失败", "对不起,订单退货,订单关闭,本订单不能操作!"));
  787. return mv;
  788. case 9: // 换货中(管理员对申请换货的订单,确认换货时,订单状态为此,此时只有管理员具有操作权限,只能确认换货,录入物流信息,并重新计算订单关闭的时间,待入账积分的时间要修改)
  789. if (!orderUtil.getOrderActin()[9].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  790. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  791. return mv;
  792. }
  793. if (!orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  794. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  795. return mv;
  796. }
  797. // 执行修改操作
  798. if ("2".equals(currentOrder.getSalesProxyReward().toString())) {
  799. order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish"));
  800. } else {
  801. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  802. }
  803. if (adminOrderService.deliverOrderByOrderId(order)) {
  804. mv.addObject("msgObj", new MessageDto(true, "订单发货成功", "恭喜您!订单:" + orderId + "订单发货成功!"));
  805. try {
  806. MQMessage message = new MQMessage();
  807. message.setServiceToMessage(orderId);
  808. message.setServiceOtherMessage("efast.trade.new.add");
  809. message.setServiceIsSend(2); // 没有推送的信息
  810. message.setServiceStatus(1); // 推送成功
  811. message.setServiceType(1); // 添加订单信息
  812. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  813. message.setServiceHandlerMethodName("exchangeOrderInfoToEfast");
  814. mQservice.insertMQMessage(message);
  815. } catch (Exception e) {
  816. System.out.println("===========pay 201 插入返利到百胜失败==============");
  817. }
  818. return mv;
  819. } else {
  820. mv.addObject("msgObj", new MessageDto(false, "对不起,订单发货失败", "对不起,订单发货失败,请稍后重试!"));
  821. return mv;
  822. }
  823. case 10: // 换货完成,当用户对换货中的订单,点击确认换货时,并录入物流信息,此订单进入已发货状态
  824. break;
  825. case 11: // 在订单为已发货时,用户具有的权限,用户申请换货
  826. if (!orderUtil.getOrderActin()[8].equals(action) && !orderUtil.getOrderActin()[11].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  827. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  828. return mv;
  829. }
  830. if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())
  831. && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  832. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  833. return mv;
  834. }
  835. // 执行修改操作
  836. if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) {
  837. if ("2".equals(currentOrder.getSalesProxyReward().toString())) {
  838. order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish"));
  839. } else {
  840. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  841. }
  842. } else {
  843. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  844. }
  845. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  846. if (orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) {
  847. try {
  848. sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】通过。",orderId,itemList.get(0).getItemProductName(),
  849. "如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  850. } catch (Exception e) {
  851. logger.info("订单号:"+ orderId +"的订单同意换货,发送微信消息失败!");
  852. }
  853. mv.addObject("msgObj", new MessageDto(true, "同意换货成功", "恭喜您!同意订单:" + orderId + "换货,请收货后录入物流信息并同意换货!"));
  854. } else {
  855. try {
  856. sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】没有通过。",orderId,itemList.get(0).getItemProductName(),
  857. "请确认您的换货申请信息填写无误。如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  858. } catch (Exception e) {
  859. logger.info("订单号:"+ orderId +"的订单驳回换货,发送微信消息失败!");
  860. }
  861. mv.addObject("msgObj", new MessageDto(true, "驳回换货成功", "您已驳回订单:" + orderId + "换货,订单状态改为已发货!"));
  862. }
  863. return mv;
  864. } else {
  865. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  866. return mv;
  867. }
  868. default: // 报错
  869. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误!"));
  870. return mv;
  871. }
  872. return mv;
  873. }
  874. /**
  875. * 修改返利表的返现状态
  876. *
  877. * @param order
  878. * @param status
  879. */
  880. public void updateRebate(Order order, int status) {
  881. RebackInfo rabackInfo = new RebackInfo();
  882. rabackInfo.setOrderId(order.getSalesOrderid());
  883. rabackInfo.setStatus(status);
  884. LoadRewardTaskService.updateStatus(rabackInfo);
  885. }
  886. @ResponseBody
  887. @RequestMapping("/markRefund/{orderId}")
  888. public ResultMsg markRefund(HttpServletRequest request,
  889. @PathVariable("orderId") String orderId) throws Exception {
  890. ResultMsg msg = new ResultMsg();
  891. //查询该订单的状态
  892. Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
  893. if (order == null) {
  894. msg.setResultCode(ResultInfo.ERRORCODE);
  895. msg.setStatus(false);
  896. msg.setMessage("该订单不存在,请重新操作!");
  897. return msg;
  898. }
  899. //4:已退款,8:订单退货,订单关闭
  900. if (order.getSalesStatus() != 4 && order.getSalesStatus() != 8) {
  901. msg.setResultCode(ResultInfo.ERRORCODE);
  902. msg.setStatus(false);
  903. msg.setMessage("该订单不支持标记已退款!");
  904. return msg;
  905. }
  906. if (order.getSalesIsRfund() != null && order.getSalesIsRfund() == 2) {
  907. msg.setResultCode(ResultInfo.ERRORCODE);
  908. msg.setStatus(false);
  909. msg.setMessage("该订单已标记退款,不能重复标记!");
  910. return msg;
  911. }
  912. Order orderInfo = new Order();
  913. orderInfo.setSalesOrderid(orderId);
  914. orderInfo.setSalesIsRfund(2);
  915. //修改订单退款状态
  916. int num = adminOrderService.updateOrderRfund(orderInfo);
  917. if (num > 0) {
  918. msg.setResultCode(ResultInfo.SUCCESSCODE);
  919. msg.setStatus(true);
  920. } else {
  921. msg.setResultCode(ResultInfo.ERRORCODE);
  922. msg.setStatus(false);
  923. msg.setMessage("标记退款失败,请重新标记!");
  924. }
  925. return msg;
  926. }
  927. /**
  928. * 订单备注
  929. *
  930. * @throws IOException
  931. */
  932. @RequestMapping(value = "/remark/{id}", produces = {"application/json;charset=UTF-8"})
  933. @ResponseBody
  934. public String orderRemark(OrderActionDto actionDto, @PathVariable("id") String orderId, HttpServletResponse response) throws IOException {
  935. String remark = "";
  936. // 订单备注
  937. if (actionDto.getRemarkColor() == null) {
  938. actionDto.setRemarkColor(1);
  939. }
  940. if (actionDto.getRemark() == null || actionDto.getRemark().isEmpty()) {
  941. return "{\"status\":\"false\",\"info\":\"备注信息不能为空!\"}";
  942. }
  943. if (actionDto.getRemark().length() > 100) {
  944. return "{'\"status\":\"false\",\"info\":\"备注信息不能超过100个字符!\"}";
  945. }
  946. //查询该订单的状态
  947. Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
  948. if (null == order) {
  949. return "{\"status\":true,\"info\":\"该订单不存在!\"}";
  950. }
  951. if (!"8".equals(order.getSalesStatus().toString())) {
  952. remark = actionDto.getRemark();
  953. }
  954. // update到数据库
  955. if (adminOrderService.updateOrderAdminRemarkByOrderId(remark, orderId, actionDto.getRemarkColor())) {
  956. return "{\"status\":true,\"info\":\"备注成功!\"}";
  957. } else {
  958. return "{\"status\":\"false\",\"info\":\"备注失败,请稍后重试!\"}";
  959. }
  960. }
  961. }