AdminOrderHandlers.java 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038
  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.utils.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. "请确认您的退款申请信息填写无误。\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  574. } catch (Exception e) {
  575. logger.info("订单号:"+ orderId +"的订单驳回退款,发送微信消息失败!");
  576. }
  577. mv.addObject("msgObj", new MessageDto(true, "驳回退款成功!", "驳回退款成功,订单进入待发货状态!"));
  578. return mv;
  579. } else {
  580. mv.addObject("msgObj", new MessageDto(false, "对不起,驳回退款订单失败", "对不起,对不起,驳回退款订单失败,请稍后重试!"));
  581. return mv;
  582. }
  583. } else if (orderUtil.getOrderActin()[5].equals(action)) {
  584. // 同意退款 , 需要回滚积分
  585. if (!orderUtil.orderStatusIntToOrderStatusString(4).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  586. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  587. return mv;
  588. }
  589. order.setSalesStatus(4);
  590. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  591. //将返利表中待入账改为已入账
  592. RebackInfo rabackInfo = new RebackInfo();
  593. rabackInfo.setOrderId(order.getSalesOrderid());
  594. rabackInfo.setStatus(3);
  595. //根据orderId查询订单所有信息
  596. Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId);
  597. Member member = new Member();
  598. //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中
  599. if (orderInfo != null && orderInfo.getBalancePayAmount() != null) {
  600. member.setUserOpenid(orderInfo.getSalesOpenid());
  601. member.setUserIncome(orderInfo.getBalancePayAmount());
  602. adminOrderService.updateUserByUserId(member);
  603. //将数据存入日志中
  604. CashLog cashLog = new CashLog();
  605. cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid());
  606. cashLog.setCashLogsOrderid(orderId);
  607. cashLog.setCashLogsNum(orderInfo.getBalancePayAmount());
  608. cashLog.setCashLogsType(1);
  609. cashLog.setCashLogsIntroduction("退款");
  610. cashLog.setCashLogsResType(5);
  611. cashLog.setCashLogsCreateDate(new Date());
  612. adminOrderService.addCashLog(cashLog);
  613. }
  614. rebackServices.updateStatus(rabackInfo);
  615. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  616. try {
  617. sendMessageUtil.orderApplyRefund("尊敬的朵粉,您的退款申请已通过:",payMoney,itemList.get(0).getItemProductName(),orderId,
  618. "退款金额将在三个工作日内退款到您的支付账户。\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),ResultInfo.ORDER_DETAIL + orderId);
  619. } catch (Exception e) {
  620. logger.info("订单号:"+ orderId +"的订单同意退款,发送微信消息失败!");
  621. }
  622. mv.addObject("msgObj", new MessageDto(true, "订单退款成功", "请联系财务部门,将此订单退款!"));
  623. updateRebate(order, 3);
  624. return mv;
  625. } else {
  626. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  627. return mv;
  628. }
  629. } else {
  630. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  631. return mv;
  632. }
  633. case 4: // 已退款(管理员通过申请退款,此时订单任何人不能操作)
  634. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已退款的订单不能操作!"));
  635. return mv;
  636. case 5: // 已发货(管理员不具有权限)
  637. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,已发货的订单不能操作!"));
  638. return mv;
  639. case 6: // 申请退货中(只有管理员能操作 : 确认退货)
  640. order.setSalesAuditRemark(actionDto.getSalesAuditRemark());
  641. if (!orderUtil.getOrderActin()[6].equals(action) && !orderUtil.getOrderActin()[10].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  642. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  643. return mv;
  644. }
  645. if (!orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())
  646. && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  647. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  648. return mv;
  649. }
  650. // 执行修改操作
  651. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  652. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  653. if (orderUtil.orderStatusIntToOrderStatusString(7).equals(actionDto.getToOrderStatus())) {
  654. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  655. int productNum = 0;
  656. for (OrderItem item : itemList) {
  657. productNum += item.getItemNum();
  658. }
  659. try {
  660. sendMessageUtil.orderApplyReturn("尊敬的朵粉,soodo上朵已通过您的【退货申请】",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
  661. "请您尽快联系客服人员处理,根据客服人员指引将机器寄回。\\r\\n对此结果,soodo上朵深表歉意,我们会继续提升,期待下一次相遇!",currentOrder.getSalesOpenid(),null);
  662. } catch (Exception e) {
  663. logger.info("订单号:"+ orderId +"的订单同意退货,发送微信消息失败!");
  664. }
  665. mv.addObject("msgObj", new MessageDto(true, "订单申请退货成功", "恭喜您!同意订单:" + orderId + "退货,等待收到货物后确认退货!"));
  666. } else {
  667. String payMoney = df.format((float)currentOrder.getSalesYetAmount()/100) + "元";
  668. int productNum = 0;
  669. for (OrderItem item : itemList) {
  670. productNum += item.getItemNum();
  671. }
  672. try {
  673. sendMessageUtil.orderApplyReturn("尊敬的朵粉,您的【退货申请】没有通过",orderId,payMoney,productNum+"件",currentOrder.getSalesReturnDes(),
  674. "请确认您的退货申请信息填写无误。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!",currentOrder.getSalesOpenid(),null);
  675. } catch (Exception e) {
  676. logger.info("订单号:"+ orderId +"的订单驳回退货,发送微信消息失败!");
  677. }
  678. mv.addObject("msgObj", new MessageDto(true, "成功驳回订单退货", "订单:" + orderId + "退货被驳回,状态返回已发货!"));
  679. }
  680. return mv;
  681. } else {
  682. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  683. return mv;
  684. }
  685. case 7: // 退货中(管理员具有操作能力:确认退货)
  686. if (!orderUtil.getOrderActin()[7].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  687. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  688. return mv;
  689. }
  690. if (!orderUtil.orderStatusIntToOrderStatusString(8).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  691. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  692. return mv;
  693. }
  694. // 执行修改操作
  695. order.setSalesStatus(8);
  696. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  697. //将返利表中待入账改为已入账
  698. RebackInfo rabackInfo = new RebackInfo();
  699. rabackInfo.setOrderId(order.getSalesOrderid());
  700. rabackInfo.setStatus(3);
  701. rebackServices.updateStatus(rabackInfo);
  702. //根据orderId查询订单所有信息
  703. Order orderInfo = adminOrderService.getShopOrderByOrderId(orderId);
  704. Member memberInfo = new Member();
  705. //判断该订单是否用过余额支付,如果有,则退款后该支付的余额会退回到用户余额中
  706. if (orderInfo != null && orderInfo.getBalancePayAmount() != null) {
  707. memberInfo.setUserOpenid(orderInfo.getSalesOpenid());
  708. memberInfo.setUserIncome(orderInfo.getBalancePayAmount());
  709. adminOrderService.updateUserByUserId(memberInfo);
  710. //将数据存入日志中
  711. CashLog cashLog = new CashLog();
  712. cashLog.setCashLogsOpenid(orderInfo.getSalesOpenid());
  713. cashLog.setCashLogsOrderid(orderId);
  714. cashLog.setCashLogsNum(orderInfo.getBalancePayAmount());
  715. cashLog.setCashLogsType(1);
  716. cashLog.setCashLogsIntroduction("退货");
  717. cashLog.setCashLogsResType(5);
  718. cashLog.setCashLogsCreateDate(new Date());
  719. adminOrderService.addCashLog(cashLog);
  720. }
  721. mv.addObject("msgObj", new MessageDto(true, "确认订单退货成功", "恭喜您!同意订单:" + orderId + "退货,订单关闭!"));
  722. updateRebate(order, 3);
  723. try {
  724. MQMessage message = new MQMessage();
  725. message.setServiceToMessage(orderId);
  726. message.setServiceOtherMessage(currentOrder.getSalesPostFirm() + "-" + currentOrder.getSalesPostNum());
  727. message.setServiceIsSend(2); // 没有推送的信息
  728. message.setServiceStatus(1); // 推送成功
  729. message.setServiceType(1); // 添加订单信息
  730. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  731. message.setServiceHandlerMethodName("returnOrderInfoToEfast");
  732. mQservice.insertMQMessage(message);
  733. } catch (Exception e) {
  734. // TODO: handle exception
  735. }
  736. //推送金额变动消息
  737. Member member = memberService.getMemberByUserOpenId(currentOrder.getSalesOpenid());
  738. if (member != null || member.getUserResType() != null) {
  739. String toopenid = "";
  740. switch (member.getUserResType().intValue()) {//用户来源
  741. case 2: //用户来源 微代理
  742. WdRelation wdrelation = wdRelationService.getWdRelationByOpenid(currentOrder.getSalesOpenid());
  743. Member fatherMember = memberService.getMemberByUserId(wdrelation.getWdFirst()); //微代理父节点信息
  744. if (fatherMember != null && StringUtils.isNotEmpty(fatherMember.getUserOpenid())) {
  745. toopenid = fatherMember.getUserOpenid();
  746. }
  747. break;
  748. case 3: //用户来源 线下
  749. DealerRelation dealerrelation = dealerRelationService.getDealerRelationById(member.getUserDealers());
  750. int Dealerid = 0;
  751. if (dealerrelation != null) {
  752. if (dealerrelation.getDealerThird() != null) { //第三极
  753. Dealerid = dealerrelation.getDealerThird();
  754. } else if (dealerrelation.getDealerSecond() != null) { //第二级
  755. Dealerid = dealerrelation.getDealerSecond();
  756. } else if (dealerrelation.getDealerFifth() != null) { //第一级
  757. Dealerid = dealerrelation.getDealerFifth();
  758. }
  759. }
  760. PlaceInfo fatherPlace = placeInfoService.getPlaceInfoById(Dealerid);//分销父节点信息
  761. if (fatherPlace != null) {
  762. toopenid = fatherPlace.getOpenid();
  763. }
  764. break;
  765. }
  766. /*try {
  767. //发送消息
  768. String temp = ResultInfo.INCOMEREMINDTEMP;
  769. temp = temp.replaceFirst("firstValueIamberry", ResultInfo.NEXTUSERTUIHUOMESSAGE)
  770. .replaceFirst("accountValueIamberry", URLDecoder.decode(member.getUserNickname(), "UTF-8"))
  771. .replaceFirst("timeValueIamberry", DateTimeUtil.format(new Date(), NameUtils.getConfig("DATE_TIME_FORMAT")))
  772. .replaceFirst("typeValueIamberry", "用户退货")
  773. .replaceFirst("remarkValueIamberry", ResultInfo.INTOSHOP);
  774. sendMessageUtil.sendTemplateMessageToOpenid(temp, toopenid, ResultInfo.TUIHUI_SHIPMENT, 3);
  775. } catch (Exception e) {
  776. }*/
  777. }
  778. return mv;
  779. } else {
  780. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  781. return mv;
  782. }
  783. case 8: // 订单退货,订单关闭(管理员收到货后,确认退货,订单状态修改为此,订单不对外提供操作能力)
  784. mv.addObject("msgObj", new MessageDto(false, "对不起,操作订单失败", "对不起,订单退货,订单关闭,本订单不能操作!"));
  785. return mv;
  786. case 9: // 换货中(管理员对申请换货的订单,确认换货时,订单状态为此,此时只有管理员具有操作权限,只能确认换货,录入物流信息,并重新计算订单关闭的时间,待入账积分的时间要修改)
  787. if (!orderUtil.getOrderActin()[9].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  788. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  789. return mv;
  790. }
  791. if (!orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  792. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  793. return mv;
  794. }
  795. // 执行修改操作
  796. if ("2".equals(currentOrder.getSalesProxyReward().toString())) {
  797. order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish"));
  798. } else {
  799. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  800. }
  801. if (adminOrderService.deliverOrderByOrderId(order)) {
  802. mv.addObject("msgObj", new MessageDto(true, "订单发货成功", "恭喜您!订单:" + orderId + "订单发货成功!"));
  803. try {
  804. MQMessage message = new MQMessage();
  805. message.setServiceToMessage(orderId);
  806. message.setServiceOtherMessage("efast.trade.new.add");
  807. message.setServiceIsSend(2); // 没有推送的信息
  808. message.setServiceStatus(1); // 推送成功
  809. message.setServiceType(1); // 添加订单信息
  810. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  811. message.setServiceHandlerMethodName("exchangeOrderInfoToEfast");
  812. mQservice.insertMQMessage(message);
  813. } catch (Exception e) {
  814. System.out.println("===========pay 201 插入返利到百胜失败==============");
  815. }
  816. return mv;
  817. } else {
  818. mv.addObject("msgObj", new MessageDto(false, "对不起,订单发货失败", "对不起,订单发货失败,请稍后重试!"));
  819. return mv;
  820. }
  821. case 10: // 换货完成,当用户对换货中的订单,点击确认换货时,并录入物流信息,此订单进入已发货状态
  822. break;
  823. case 11: // 在订单为已发货时,用户具有的权限,用户申请换货
  824. if (!orderUtil.getOrderActin()[8].equals(action) && !orderUtil.getOrderActin()[11].equals(action)) {// 判断当前请求操作是否相符, 否则提示不成功
  825. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  826. return mv;
  827. }
  828. if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())
  829. && !orderUtil.orderStatusIntToOrderStatusString(5).equals(actionDto.getToOrderStatus())) {// 判断请求修改的订单状态是否相符,否则提示不成功
  830. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误,请按照系统流程操作!"));
  831. return mv;
  832. }
  833. // 执行修改操作
  834. if (!orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) {
  835. if ("2".equals(currentOrder.getSalesProxyReward().toString())) {
  836. order.setSalesStatus(orderUtil.getOrderStatusByStr("inFinish"));
  837. } else {
  838. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  839. }
  840. } else {
  841. order.setSalesStatus(orderUtil.getOrderStatusByStr(actionDto.getToOrderStatus()));
  842. }
  843. if (adminOrderService.updateOrderStatusByOrderId(order)) {
  844. if (orderUtil.orderStatusIntToOrderStatusString(9).equals(actionDto.getToOrderStatus())) {
  845. try {
  846. sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】通过。",orderId,itemList.get(0).getItemProductName(),
  847. "退款金额将在三个工作日内退款到您的支付账户。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
  848. } catch (Exception e) {
  849. logger.info("订单号:"+ orderId +"的订单同意换货,发送微信消息失败!");
  850. }
  851. mv.addObject("msgObj", new MessageDto(true, "同意换货成功", "恭喜您!同意订单:" + orderId + "换货,请收货后录入物流信息并同意换货!"));
  852. } else {
  853. try {
  854. sendMessageUtil.orderApplyBarter("尊敬的朵粉,您的【换货申请】没有通过。",orderId,itemList.get(0).getItemProductName(),
  855. "退款金额将在三个工作日内退款到您的支付账户。\\r\\n如有问题请致电400-678-1860或直接在微信留言,soodo上朵将第一时间为您服务!(点击查看订单详情)",currentOrder.getSalesOpenid(),null);
  856. } catch (Exception e) {
  857. logger.info("订单号:"+ orderId +"的订单驳回换货,发送微信消息失败!");
  858. }
  859. mv.addObject("msgObj", new MessageDto(true, "驳回换货成功", "您已驳回订单:" + orderId + "换货,订单状态改为已发货!"));
  860. }
  861. return mv;
  862. } else {
  863. mv.addObject("msgObj", new MessageDto(false, "对不起,取消订单失败", "对不起,取消订单失败,请稍后重试!"));
  864. return mv;
  865. }
  866. default: // 报错
  867. mv.addObject("msgObj", new MessageDto(false, "对不起,操作有误", "对不起,您刚才的操作流程有误!"));
  868. return mv;
  869. }
  870. return mv;
  871. }
  872. /**
  873. * 修改返利表的返现状态
  874. *
  875. * @param order
  876. * @param status
  877. */
  878. public void updateRebate(Order order, int status) {
  879. RebackInfo rabackInfo = new RebackInfo();
  880. rabackInfo.setOrderId(order.getSalesOrderid());
  881. rabackInfo.setStatus(status);
  882. LoadRewardTaskService.updateStatus(rabackInfo);
  883. }
  884. @ResponseBody
  885. @RequestMapping("/markRefund/{orderId}")
  886. public ResultMsg markRefund(HttpServletRequest request,
  887. @PathVariable("orderId") String orderId) throws Exception {
  888. ResultMsg msg = new ResultMsg();
  889. //查询该订单的状态
  890. Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
  891. if (order == null) {
  892. msg.setResultCode(ResultInfo.ERRORCODE);
  893. msg.setStatus(false);
  894. msg.setMessage("该订单不存在,请重新操作!");
  895. return msg;
  896. }
  897. //4:已退款,8:订单退货,订单关闭
  898. if (order.getSalesStatus() != 4 && order.getSalesStatus() != 8) {
  899. msg.setResultCode(ResultInfo.ERRORCODE);
  900. msg.setStatus(false);
  901. msg.setMessage("该订单不支持标记已退款!");
  902. return msg;
  903. }
  904. if (order.getSalesIsRfund() != null && order.getSalesIsRfund() == 2) {
  905. msg.setResultCode(ResultInfo.ERRORCODE);
  906. msg.setStatus(false);
  907. msg.setMessage("该订单已标记退款,不能重复标记!");
  908. return msg;
  909. }
  910. Order orderInfo = new Order();
  911. orderInfo.setSalesOrderid(orderId);
  912. orderInfo.setSalesIsRfund(2);
  913. //修改订单退款状态
  914. int num = adminOrderService.updateOrderRfund(orderInfo);
  915. if (num > 0) {
  916. msg.setResultCode(ResultInfo.SUCCESSCODE);
  917. msg.setStatus(true);
  918. } else {
  919. msg.setResultCode(ResultInfo.ERRORCODE);
  920. msg.setStatus(false);
  921. msg.setMessage("标记退款失败,请重新标记!");
  922. }
  923. return msg;
  924. }
  925. /**
  926. * 订单备注
  927. *
  928. * @throws IOException
  929. */
  930. @RequestMapping(value = "/remark/{id}", produces = {"application/json;charset=UTF-8"})
  931. @ResponseBody
  932. public String orderRemark(OrderActionDto actionDto, @PathVariable("id") String orderId, HttpServletResponse response) throws IOException {
  933. String remark = "";
  934. // 订单备注
  935. if (actionDto.getRemarkColor() == null) {
  936. actionDto.setRemarkColor(1);
  937. }
  938. if (actionDto.getRemark() == null || actionDto.getRemark().isEmpty()) {
  939. return "{\"status\":\"false\",\"info\":\"备注信息不能为空!\"}";
  940. }
  941. if (actionDto.getRemark().length() > 100) {
  942. return "{'\"status\":\"false\",\"info\":\"备注信息不能超过100个字符!\"}";
  943. }
  944. //查询该订单的状态
  945. Order order = adminOrderService.selectOrderStatusByOrderId(orderId);
  946. if (null == order) {
  947. return "{\"status\":true,\"info\":\"该订单不存在!\"}";
  948. }
  949. if (!"8".equals(order.getSalesStatus().toString())) {
  950. remark = actionDto.getRemark();
  951. }
  952. // update到数据库
  953. if (adminOrderService.updateOrderAdminRemarkByOrderId(remark, orderId, actionDto.getRemarkColor())) {
  954. return "{\"status\":true,\"info\":\"备注成功!\"}";
  955. } else {
  956. return "{\"status\":\"false\",\"info\":\"备注失败,请稍后重试!\"}";
  957. }
  958. }
  959. }