/src/main/java/com/changyu/foryou/controller/OrderController.java

https://github.com/xiaowei1118/java_server · Java · 1616 lines · 1154 code · 182 blank · 280 comment · 222 complexity · 40e8a79f49fdb556d5ce6f9496af836f MD5 · raw file

  1. package com.changyu.foryou.controller;
  2. import java.text.DecimalFormat;
  3. import java.util.ArrayList;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9. import javax.servlet.http.HttpServletRequest;
  10. import org.slf4j.Logger;
  11. import org.slf4j.LoggerFactory;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.beans.factory.annotation.Qualifier;
  14. import org.springframework.stereotype.Controller;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RequestMethod;
  17. import org.springframework.web.bind.annotation.RequestParam;
  18. import org.springframework.web.bind.annotation.ResponseBody;
  19. import com.alibaba.fastjson.JSON;
  20. import com.alibaba.fastjson.JSONArray;
  21. import com.changyu.foryou.model.BigOrder;
  22. import com.changyu.foryou.model.Campus;
  23. import com.changyu.foryou.model.CartGood;
  24. import com.changyu.foryou.model.DeliverChildOrder;
  25. import com.changyu.foryou.model.DeliverOrder;
  26. import com.changyu.foryou.model.Order;
  27. import com.changyu.foryou.model.PCOrder;
  28. import com.changyu.foryou.model.Preferential;
  29. import com.changyu.foryou.model.Receiver;
  30. import com.changyu.foryou.model.SmallOrder;
  31. import com.changyu.foryou.model.SuperAdminOrder;
  32. import com.changyu.foryou.model.TogetherOrder;
  33. import com.changyu.foryou.model.TradeInfo;
  34. import com.changyu.foryou.payment.ChargeInterface;
  35. import com.changyu.foryou.service.CampusService;
  36. import com.changyu.foryou.service.FoodService;
  37. import com.changyu.foryou.service.OrderService;
  38. import com.changyu.foryou.service.PreferentialService;
  39. import com.changyu.foryou.service.PushService;
  40. import com.changyu.foryou.service.ReceiverService;
  41. import com.changyu.foryou.service.UserService;
  42. import com.changyu.foryou.tools.CalendarTool;
  43. import com.changyu.foryou.tools.Constants;
  44. import com.pingplusplus.model.Charge;
  45. import com.pingplusplus.model.Refund;
  46. /**
  47. * 处理订单控制器
  48. *
  49. * @author 殿下
  50. */
  51. @Controller
  52. @RequestMapping("/order")
  53. public class OrderController {
  54. private OrderService orderService;
  55. private UserService userService;
  56. private FoodService foodService;
  57. private ReceiverService receiverService;
  58. private CampusService campusService;
  59. private PushService pushService;
  60. @Autowired()
  61. @Qualifier("preferentialService")
  62. private PreferentialService preferentialService;
  63. @Autowired
  64. public void setReceiverService(ReceiverService receiverService) {
  65. this.receiverService = receiverService;
  66. }
  67. @Autowired
  68. public void setCampusService(CampusService campusService) {
  69. this.campusService = campusService;
  70. }
  71. public PushService getPushService() {
  72. return pushService;
  73. }
  74. @Autowired
  75. public void setPushService(PushService pushService) {
  76. this.pushService = pushService;
  77. }
  78. @Autowired
  79. public void setUserServce(UserService userService) {
  80. this.userService = userService;
  81. }
  82. @Autowired
  83. public void setFoodService(FoodService foodService) {
  84. this.foodService = foodService;
  85. }
  86. protected static final Logger LOG = LoggerFactory
  87. .getLogger(OrderController.class);
  88. @Autowired
  89. public void setOrderService(OrderService orderService) {
  90. this.orderService = orderService;
  91. }
  92. /**
  93. * 生成购物车订单
  94. *
  95. * @param phoneId
  96. * @param foodId
  97. * @param foodCount
  98. * @param foodSpecial
  99. * @return
  100. */
  101. @RequestMapping("/createOrder")
  102. public @ResponseBody
  103. Map<String, Object> createOrder(
  104. @RequestParam Integer campusId, @RequestParam String phoneId,
  105. @RequestParam Long foodId, @RequestParam Integer foodCount) {
  106. Map<String, Object> map = new HashMap<String, Object>();
  107. try {
  108. Order order = new Order(campusId, phoneId, foodId, foodCount);
  109. Long orderId = order.getOrderId();
  110. List<Order> oldOrders = orderService.selectOrder(order);
  111. // 待优化。。。。。。。将delete和insert改为一次操作
  112. if (oldOrders.size() != 0) {
  113. order.setOrderCount(foodCount
  114. + oldOrders.get(0).getOrderCount());
  115. orderService.deleteCartGood(order);
  116. }
  117. int flag = orderService.insertSelectiveOrder(order);
  118. if (flag != -1 && flag != 0) {
  119. map.put("orderId", orderId);
  120. map.put(Constants.STATUS, Constants.SUCCESS);
  121. map.put(Constants.MESSAGE, "生成订单成功");
  122. } else {
  123. map.put(Constants.STATUS, Constants.FAILURE);
  124. map.put(Constants.MESSAGE, "生成订单失败");
  125. }
  126. } catch (Exception e) {
  127. e.getStackTrace();
  128. map.put(Constants.STATUS, Constants.FAILURE);
  129. map.put(Constants.MESSAGE, "生成订单失败");
  130. }
  131. return map;
  132. }
  133. /**
  134. * 获取下达的所有订单
  135. *
  136. * @param phoneId ,status
  137. * @return
  138. */
  139. @RequestMapping("/getOrderInMine")
  140. public @ResponseBody
  141. Map<String, Object> getOrderInMine(
  142. @RequestParam String phoneId, Short status, Integer page,
  143. Integer limit) {
  144. Map<String, Object> map = new HashMap<String, Object>();
  145. List<TogetherOrder> togetherOrdersList = new ArrayList<TogetherOrder>();
  146. try {
  147. Map<String, Object> paramMap = new HashMap<String, Object>();
  148. paramMap.put("phoneId", phoneId);
  149. paramMap.put("status", status);
  150. List<Integer> count = new ArrayList<Integer>();
  151. for (int i = 1; i <= 5; i++) {
  152. paramMap.put("status", i);
  153. List<String> togetherId = orderService.getTogetherId(paramMap);
  154. count.add(togetherId.size());
  155. }
  156. map.put("waitPay", count.get(0));
  157. map.put("hasPaid", count.get(1));
  158. map.put("delivering", count.get(2));
  159. map.put("waitComment", count.get(3));
  160. map.put("done", count.get(4));
  161. if (limit != null && page != null) {
  162. paramMap.put("limit", limit);
  163. paramMap.put("offset", (page - 1) * limit);
  164. }
  165. paramMap.put("status", status);
  166. List<String> togetherIds = orderService.getTogetherId(paramMap);
  167. //System.out.println(JSON.toJSONString(togetherIds));
  168. if (togetherIds.size() != 0) {
  169. for (String togetherId : togetherIds) {
  170. TogetherOrder togetherOrder = new TogetherOrder(); // 一单
  171. togetherOrder.setTogetherId(togetherId);
  172. paramMap.put("togetherId", togetherId);
  173. List<SmallOrder> orderList = orderService
  174. .getOrderListInMine(paramMap); // 一单里面的小订单
  175. togetherOrder.setSmallOrders(orderList);
  176. togetherOrder.setPayWay(orderList.get(0).getPayWay());
  177. togetherOrder.setTotalPrice(orderList.get(0).getTotalPrice());
  178. Short totalStatus = 0;
  179. if (orderList.get(0).getStatus() != 4) {
  180. totalStatus = orderList.get(0).getStatus();
  181. } else {
  182. totalStatus = 5;
  183. for (int i = 0; i < orderList.size(); i++) {
  184. if (orderList.get(i).getIsRemarked() == 0) {
  185. totalStatus = 4;
  186. }
  187. }
  188. }
  189. togetherOrder.setStatus(totalStatus);
  190. togetherOrder.setTogetherDate(orderList.get(0)
  191. .getTogetherDate());
  192. togetherOrdersList.add(togetherOrder);
  193. }
  194. //根据phoneId获取各个状态订单数量
  195. /*for (int i = 1; i <= 5; i++) {
  196. MiniOrder order = new MiniOrder();
  197. order.setStatus(Short.parseShort(i+""));
  198. if(i==1||i==2||i==3){
  199. paramMap.put("status", i);
  200. }
  201. else if(i==4){
  202. paramMap.put("status", 4);
  203. paramMap.put("isRemarked", 0);
  204. }
  205. else if(i==5){
  206. paramMap.put("status", 4);
  207. paramMap.put("isRemarked", 1);
  208. }
  209. order.setOrderCount(orderService.getMiniOrderByPhone(paramMap));
  210. statusList.add(order);
  211. }*/
  212. /*map.put("statusList", statusList);*/
  213. map.put(Constants.STATUS, Constants.SUCCESS);
  214. map.put(Constants.MESSAGE, "获取订单成功");
  215. map.put("orderList", JSON.parse(JSON
  216. .toJSONStringWithDateFormat(togetherOrdersList,
  217. "yyyy-MM-dd")));
  218. } else {
  219. map.put(Constants.STATUS, Constants.SUCCESS);
  220. map.put(Constants.MESSAGE, "暂无订单");
  221. }
  222. } catch (Exception e) {
  223. e.printStackTrace();
  224. map.put(Constants.STATUS, Constants.FAILURE);
  225. map.put(Constants.MESSAGE, "获取订单失败");
  226. }
  227. return map;
  228. }
  229. /**
  230. * 弃用 获取下达的代发货订单
  231. *
  232. * @param phoneId
  233. * @return
  234. */
  235. @RequestMapping("/getOrderInMineWait2Deliver")
  236. public @ResponseBody
  237. Map<String, Object> getOrderInMineWait2Deliver(
  238. @RequestParam String phoneId) {
  239. Map<String, Object> map = new HashMap<String, Object>();
  240. try {
  241. List<SmallOrder> orderList = orderService
  242. .getOrderListInMineWait2Deliver(phoneId);
  243. if (orderList.size() != 0) {
  244. map.put(Constants.STATUS, Constants.SUCCESS);
  245. map.put(Constants.MESSAGE, "获取代发货订单成功");
  246. map.put("orderList", orderList);
  247. } else {
  248. map.put(Constants.STATUS, Constants.SUCCESS);
  249. map.put(Constants.MESSAGE, "暂无代发货订单");
  250. }
  251. } catch (Exception e) {
  252. e.getStackTrace();
  253. map.put(Constants.STATUS, Constants.FAILURE);
  254. map.put(Constants.MESSAGE, "获取代发货订单失败");
  255. }
  256. return map;
  257. }
  258. /**
  259. * 弃用 获取下达的正在配送订单
  260. *
  261. * @param phoneId
  262. * @return
  263. */
  264. @RequestMapping("/getOrderInMineDeliver")
  265. public @ResponseBody
  266. Map<String, Object> getOrderInMineDeliver(
  267. @RequestParam String phoneId) {
  268. Map<String, Object> map = new HashMap<String, Object>();
  269. try {
  270. List<SmallOrder> orderList = orderService
  271. .getOrderListInMineDeliver(phoneId);
  272. if (orderList.size() != 0) {
  273. map.put(Constants.STATUS, Constants.SUCCESS);
  274. map.put(Constants.MESSAGE, "获取正在配送订单成功");
  275. map.put("orderList", orderList);
  276. } else {
  277. map.put(Constants.STATUS, Constants.SUCCESS);
  278. map.put(Constants.MESSAGE, "暂无订单配送中");
  279. }
  280. } catch (Exception e) {
  281. e.getStackTrace();
  282. map.put(Constants.STATUS, Constants.FAILURE);
  283. map.put(Constants.MESSAGE, "获取配送订单失败");
  284. }
  285. return map;
  286. }
  287. /**
  288. * 弃用 获取完成订单
  289. *
  290. * @param phoneId
  291. * @return
  292. */
  293. @RequestMapping("/getOrderInMineFinish")
  294. public @ResponseBody
  295. Map<String, Object> getOrderInMineFinish(
  296. @RequestParam String phoneId) {
  297. Map<String, Object> map = new HashMap<String, Object>();
  298. try {
  299. List<SmallOrder> orderList = orderService
  300. .getOrderListInMineFinish(phoneId);
  301. if (orderList.size() != 0) {
  302. map.put(Constants.STATUS, Constants.SUCCESS);
  303. map.put(Constants.MESSAGE, "获取完成订单成功");
  304. map.put("orderList", orderList);
  305. } else {
  306. map.put(Constants.STATUS, Constants.SUCCESS);
  307. map.put(Constants.MESSAGE, "暂无完成订单");
  308. }
  309. } catch (Exception e) {
  310. e.getStackTrace();
  311. map.put(Constants.STATUS, Constants.FAILURE);
  312. map.put(Constants.MESSAGE, "获取完成订单失败");
  313. }
  314. return map;
  315. }
  316. /**
  317. * 获取购物车里面的收藏订单(未完成订单)
  318. *
  319. * @param phoneId 手机号
  320. * @return
  321. */
  322. @RequestMapping("/getUserOrder")
  323. public @ResponseBody
  324. Map<String, Object> getUserOrder(
  325. @RequestParam String phoneId, @RequestParam Integer campusId,
  326. Integer limit, Integer page) {
  327. Map<String, Object> map = new HashMap<String, Object>();
  328. try {
  329. Map<String, Object> paramMap = new HashMap<String, Object>();
  330. paramMap.put("phoneId", phoneId);
  331. paramMap.put("campusId", campusId);
  332. if (limit != null && page != null) {
  333. paramMap.put("limit", limit);
  334. paramMap.put("offset", (page - 1) * limit);
  335. }
  336. List<CartGood> orderList = orderService.getOrderList(paramMap);
  337. if (orderList != null && orderList.size() != 0) {
  338. for (CartGood cartGood : orderList) {
  339. if (cartGood.getIsDiscount() != 0) {
  340. cartGood.setDiscountPrice(cartGood.getDiscountPrice()); // 获取折扣价
  341. }
  342. paramMap.put("foodId", cartGood.getFoodId());
  343. paramMap.put("campusId", campusId);
  344. }
  345. map.put(Constants.STATUS, Constants.SUCCESS);
  346. map.put(Constants.MESSAGE, "获取购物车订单成功");
  347. map.put("orderList", orderList);
  348. } else {
  349. map.put(Constants.STATUS, Constants.SUCCESS);
  350. map.put(Constants.MESSAGE, "购物车里暂时还没有订单哦,亲");
  351. }
  352. } catch (Exception e) {
  353. e.getStackTrace();
  354. map.put(Constants.STATUS, Constants.FAILURE);
  355. map.put(Constants.MESSAGE, "获取购物车订单失败");
  356. }
  357. return map;
  358. }
  359. /**
  360. * 删除购物车中的某一订单
  361. *
  362. * @param orderId
  363. * @return
  364. */
  365. @RequestMapping("/deleteUserOrder")
  366. public @ResponseBody
  367. Map<String, Object> deleteUserOrder(
  368. @RequestParam Long orderId, @RequestParam String phoneId) {
  369. Map<String, Object> map = new HashMap<String, Object>();
  370. try {
  371. int flag = orderService.deleteUserOrder(orderId, phoneId);
  372. if (flag != -1 && flag != 0) {
  373. map.put(Constants.STATUS, Constants.SUCCESS);
  374. map.put(Constants.MESSAGE, "删除订单成功");
  375. } else {
  376. map.put(Constants.STATUS, Constants.FAILURE);
  377. map.put(Constants.MESSAGE, "删除订单失败");
  378. }
  379. } catch (Exception e) {
  380. e.getStackTrace();
  381. map.put(Constants.STATUS, Constants.FAILURE);
  382. map.put(Constants.MESSAGE, "删除订单失败");
  383. }
  384. return map;
  385. }
  386. /**
  387. * 删除多条订单,订单号用逗号隔开
  388. *
  389. * @param orderId
  390. * @param phoneId
  391. * @return
  392. */
  393. @RequestMapping("/deleteAllUserOrder")
  394. public @ResponseBody
  395. Map<String, Object> deleteAllUserOrder(
  396. @RequestParam String orderId, @RequestParam String phoneId) {
  397. Map<String, Object> map = new HashMap<String, Object>();
  398. try {
  399. int flag = 0;
  400. String[] orderIdStrings = orderId.split(",");
  401. for (String oneOrderId : orderIdStrings) {
  402. if (oneOrderId != null && !oneOrderId.trim().equals("")) {
  403. flag = orderService.deleteUserOrder(
  404. Long.valueOf(oneOrderId), phoneId);
  405. if (flag == -1 || flag == 0) {
  406. map.put(Constants.STATUS, Constants.FAILURE);
  407. map.put(Constants.MESSAGE, "删除订单失败");
  408. break;
  409. }
  410. }
  411. }
  412. if (flag != -1 && flag != 0) {
  413. map.put(Constants.STATUS, Constants.SUCCESS);
  414. map.put(Constants.MESSAGE, "删除订单成功");
  415. }
  416. } catch (Exception e) {
  417. e.getStackTrace();
  418. map.put(Constants.STATUS, Constants.FAILURE);
  419. map.put(Constants.MESSAGE, "删除订单失败");
  420. }
  421. return map;
  422. }
  423. /**
  424. * 编辑订单的个数
  425. *
  426. * @param orderId 订单号
  427. * @param orderCount 订单数
  428. * @return
  429. */
  430. @RequestMapping("/editUserOrder")
  431. public @ResponseBody
  432. Map<String, Object> editUserOrder(
  433. @RequestParam Long orderId, @RequestParam String phoneId,
  434. @RequestParam Integer orderCount) {
  435. Map<String, Object> map = new HashMap<String, Object>();
  436. try {
  437. int flag = orderService.editUserOrder(orderId, phoneId, orderCount);
  438. if (flag != 0 && flag != -1) {
  439. map.put(Constants.STATUS, Constants.SUCCESS);
  440. map.put(Constants.MESSAGE, "编辑订单成功");
  441. } else {
  442. map.put(Constants.STATUS, Constants.FAILURE);
  443. map.put(Constants.MESSAGE, "编辑订单失败");
  444. }
  445. } catch (Exception e) {
  446. e.getStackTrace();
  447. map.put(Constants.STATUS, Constants.FAILURE);
  448. map.put(Constants.MESSAGE, "编辑订单失败");
  449. }
  450. return map;
  451. }
  452. /**
  453. * 获取成功订单
  454. *
  455. * @param phoneId 用户手机号
  456. * @return
  457. */
  458. @RequestMapping("/getUserSuccessOrder")
  459. public @ResponseBody
  460. Map<String, Object> getUserSuccessOrder(
  461. @RequestParam String phoneId) {
  462. Map<String, Object> map = new HashMap<String, Object>();
  463. try {
  464. List<Order> orderList = orderService.getOrderSuccessList(phoneId);
  465. if (orderList != null && orderList.size() != 0) {
  466. map.put(Constants.STATUS, Constants.SUCCESS);
  467. map.put(Constants.MESSAGE, "获取订单成功");
  468. map.put("orderList", orderList);
  469. } else {
  470. map.put(Constants.STATUS, Constants.SUCCESS);
  471. map.put(Constants.MESSAGE, "暂时还没有订单哦,亲");
  472. }
  473. } catch (Exception e) {
  474. e.getStackTrace();
  475. map.put(Constants.STATUS, Constants.FAILURE);
  476. map.put(Constants.MESSAGE, "获取订单失败");
  477. }
  478. return map;
  479. }
  480. /**
  481. * 改变订单至下单状态
  482. *
  483. * @param phoneId
  484. * @param orderId
  485. * @param message 留言
  486. * @param reserveTime 预约送达时间
  487. * @return
  488. */
  489. @RequestMapping("/orderToBuy")
  490. public @ResponseBody
  491. Map<String, Object> changeOrderStatus2Buy(
  492. @RequestParam String phoneId, @RequestParam String orderId,
  493. @RequestParam String rank, String reserveTime, String message, @RequestParam Short payWay,
  494. @RequestParam Float totalPrice, Integer preferentialsId, HttpServletRequest request) {
  495. Map<String, Object> map = new HashMap<String, Object>();
  496. Map<String, Object> paramMap = new HashMap<String, Object>();
  497. try {
  498. Calendar calendar = Calendar.getInstance();
  499. String[] orderString = orderId.split(","); //传过来的orderId是一个以逗号隔开d字符串
  500. int flag = 0;
  501. String togetherId = phoneId + String.valueOf(new Date().getTime());
  502. paramMap.put("orderId", orderString[0]);
  503. paramMap.put("phoneId", phoneId);
  504. Campus campus = campusService.getCampus(paramMap); //根据订单获取该校区的详细情况
  505. Integer campusId = campus.getCampusId();
  506. //判断该校区是否正在营业
  507. if (campus.getStatus() == 0) {
  508. map.put(Constants.STATUS, Constants.FAILURE);
  509. map.put(Constants.MESSAGE, campus.getCloseReason());
  510. return map;
  511. }
  512. Calendar runOpenTime = Calendar.getInstance();
  513. runOpenTime.setTime(campus.getOpenTime());
  514. Calendar runCloseTime = Calendar.getInstance();
  515. runCloseTime.setTime(campus.getCloseTime());
  516. //判断是否超出校区营业时间
  517. int openHour = runOpenTime.get(Calendar.HOUR_OF_DAY);
  518. int openMinute = runOpenTime.get(Calendar.MINUTE);
  519. int closeHour = runCloseTime.get(Calendar.HOUR_OF_DAY);
  520. int closeMinute = runCloseTime.get(Calendar.MINUTE);
  521. if (calendar.get(Calendar.HOUR_OF_DAY) > closeHour
  522. || (calendar.get(Calendar.HOUR_OF_DAY) == closeHour && calendar.get(Calendar.MINUTE) > closeMinute)
  523. || calendar.get(Calendar.HOUR_OF_DAY) < openHour
  524. || (calendar.get(Calendar.HOUR_OF_DAY) == openHour && calendar.get(Calendar.MINUTE) < runOpenTime.get(openMinute))
  525. ) {
  526. StringBuffer message2 = new StringBuffer();
  527. message2.append("fou优该校区的营业时间为" + openHour + ":");
  528. if (openMinute < 10) {
  529. message2.append("0" + openMinute);
  530. } else {
  531. message2.append(openMinute);
  532. }
  533. message2.append("--" + closeHour + ":");
  534. if (openMinute < 10) {
  535. message2.append("0" + closeMinute);
  536. } else {
  537. message2.append(closeMinute);
  538. }
  539. map.put(Constants.STATUS, Constants.FAILURE);
  540. map.put(Constants.MESSAGE, message2.toString());
  541. return map;
  542. }
  543. DecimalFormat df = new DecimalFormat("####.0");
  544. Float serverPrice = orderService.getPriceDiscounted(orderString, campusId, phoneId);
  545. if (Math.abs(serverPrice - totalPrice) >= 1) { //判断客户端价格和服务器端价格是否一致
  546. map.put(Constants.STATUS, Constants.FAILURE);
  547. map.put(Constants.MESSAGE, "价格有误");
  548. System.out.println(serverPrice);
  549. return map;
  550. }
  551. //写入单价操作
  552. for (String id : orderString) {
  553. float price = 0f;
  554. paramMap.put("orderId", id);
  555. SmallOrder smallOrder = orderService.getOrderById(paramMap);
  556. if (smallOrder.getIsDiscount() == 1) {
  557. price = (smallOrder.getDiscountPrice() * smallOrder.getOrderCount());
  558. } else {
  559. price = smallOrder.getPrice() * smallOrder.getOrderCount();
  560. }
  561. flag = orderService.changeOrderStatus2Buy(phoneId, id,
  562. togetherId, rank, reserveTime, message, payWay, price, totalPrice);
  563. Order order = orderService.selectOneOrder(phoneId, id); // 获取该笔订单的消息
  564. paramMap.put("foodId", order.getFoodId());
  565. paramMap.put("orderCount", order.getOrderCount());
  566. paramMap.put("campusId", campus.getCampusId());
  567. foodService.changeFoodCount(paramMap); // 增加销量,减少存货
  568. if (flag == 0 || flag == -1) {
  569. break;
  570. }
  571. }
  572. String channel;
  573. if (payWay == 1) {
  574. channel = "alipay";
  575. } else {
  576. channel = "wx";
  577. }
  578. if (flag != -1 && flag != 0) {
  579. map.put(Constants.STATUS, Constants.SUCCESS);
  580. map.put(Constants.MESSAGE, "下单成功,即将开始配送!");
  581. String clientIp = getIpAddr(request);
  582. Charge charge = ChargeInterface.charge(channel, togetherId, (Float.parseFloat(df.format(totalPrice))), clientIp);
  583. map.put("charge", charge); //支付
  584. map.put("totalPrice", df.format(totalPrice));
  585. } else {
  586. map.put(Constants.STATUS, Constants.FAILURE);
  587. map.put(Constants.MESSAGE, "下单失败,请重新开始下单");
  588. }
  589. } catch (Exception e) {
  590. e.getStackTrace();
  591. map.put(Constants.STATUS, Constants.FAILURE);
  592. map.put(Constants.MESSAGE, "下单失败,请重新开始下单");
  593. }
  594. return map;
  595. }
  596. /**
  597. * 改变订单至配送状态
  598. *
  599. * @param adminPhone
  600. * @param togetherId
  601. * @return
  602. */
  603. @Deprecated
  604. @RequestMapping("/orderToDeliver")
  605. public @ResponseBody
  606. Map<String, Object> changeOrderStatus2Deliver(
  607. @RequestParam String adminPhone,
  608. @RequestParam final String togetherId) {
  609. Map<String, Object> map = new HashMap<String, Object>();
  610. try {
  611. int flag = orderService.changeOrderStatus2Deliver(adminPhone,
  612. togetherId);
  613. if (flag != -1 && flag != 0) {
  614. map.put(Constants.STATUS, Constants.SUCCESS);
  615. map.put(Constants.MESSAGE, "正在配送中!");
  616. // 开启线程访问服务器进行推送
  617. new Thread(new Runnable() {
  618. public void run() { //推送
  619. String userPhone = userService.getUserPhone(togetherId);
  620. System.out.println(userPhone);
  621. pushService.sendPush(userPhone,
  622. "您有一笔订单正在配送中,请稍候。感谢您对For优的支持", 1);
  623. }
  624. }).start();
  625. } else {
  626. map.put(Constants.STATUS, Constants.FAILURE);
  627. map.put(Constants.MESSAGE, "点击配送失败,请重试");
  628. }
  629. } catch (Exception e) {
  630. e.getStackTrace();
  631. map.put(Constants.STATUS, Constants.FAILURE);
  632. map.put(Constants.MESSAGE, "点击配送失败,请重试!");
  633. }
  634. return map;
  635. }
  636. /**
  637. * 修改订单状态至完成
  638. *
  639. * @param adminPhone
  640. * @param togetherId
  641. * @return
  642. */
  643. @Deprecated
  644. @RequestMapping("/orderToFinish")
  645. public @ResponseBody
  646. Map<String, Object> changeOrderStatus2Finish(
  647. @RequestParam String adminPhone, @RequestParam String togetherId) {
  648. Map<String, Object> map = new HashMap<String, Object>();
  649. try {
  650. int flag = orderService.changeOrderStatus2Finish(adminPhone,
  651. togetherId);
  652. if (flag != -1 && flag != 0) {
  653. map.put(Constants.STATUS, Constants.SUCCESS);
  654. map.put(Constants.MESSAGE, "订单完成,谢谢您的惠顾!");
  655. final String userPhone = userService.getUserPhone(togetherId);
  656. new Thread(new Runnable() {
  657. public void run() { //推送
  658. pushService.sendPush(userPhone,
  659. "您有一笔订单已完成交易,赶快去评价吧!For优欢迎您下次惠顾", 1);
  660. }
  661. }).start();
  662. } else {
  663. map.put(Constants.STATUS, Constants.FAILURE);
  664. map.put(Constants.MESSAGE, "点击完成订单失败,请重试");
  665. }
  666. } catch (Exception e) {
  667. e.getStackTrace();
  668. map.put(Constants.STATUS, Constants.FAILURE);
  669. map.put(Constants.MESSAGE, "点击完成订单失败,请重试");
  670. }
  671. return map;
  672. }
  673. /**
  674. * 超级管理员获取待发货单信息
  675. *
  676. * @param isSelected
  677. * @return
  678. */
  679. @RequestMapping("/superAdminGetOrder")
  680. public @ResponseBody
  681. Map<String, Object> superAdminGetOrder(
  682. @RequestParam Integer isSelected, @RequestParam Integer campusId,
  683. Integer limit, Integer page) {
  684. Map<String, Object> map = new HashMap<String, Object>();
  685. Map<String, Object> requestMap = new HashMap<String, Object>();
  686. requestMap.put("isSelected", isSelected);
  687. requestMap.put("campusId", campusId);
  688. requestMap.put("tag", 1); //订单有效
  689. //System.out.println(isSelected);
  690. if (page != null && limit != null) {
  691. requestMap.put("limit", limit);
  692. requestMap.put("offset", (page - 1) * limit);
  693. }
  694. try {
  695. List<SuperAdminOrder> orders = orderService
  696. .superAdminGetOrder(requestMap);
  697. map.put(Constants.STATUS, Constants.SUCCESS);
  698. map.put(Constants.MESSAGE, "获取订单成功!");
  699. map.put("orderList", JSONArray.parse(JSON
  700. .toJSONStringWithDateFormat(orders, "yyyy-MM-dd")));
  701. } catch (Exception e) {
  702. map.put(Constants.STATUS, Constants.FAILURE);
  703. map.put(Constants.MESSAGE, "获取订单失败!");
  704. }
  705. return map;
  706. }
  707. /**
  708. * 给某一订单设置配送员
  709. *
  710. * @param togetherId
  711. * @param adminPhone
  712. * @return
  713. */
  714. @RequestMapping("/setDeliverAdmin")
  715. public @ResponseBody
  716. Map<String, Object> setDeliverAdmin(
  717. @RequestParam String togetherId,
  718. @RequestParam final String adminPhone) {
  719. Map<String, Object> map = new HashMap<String, Object>();
  720. try {
  721. int flag1 = orderService.setDeliverAdmin(togetherId, adminPhone); // 设置配送员
  722. //修改大订单状态为3(配送中)
  723. Map<String, Object> paramMap = new HashMap<String, Object>();
  724. paramMap.put("togetherId", togetherId);
  725. paramMap.put("status", 3);
  726. int flag2 = orderService.modifyOrderStatus(paramMap);
  727. if (flag1 != -1 && flag1 != 0 && flag2 != -1 && flag2 != 0) {
  728. map.put(Constants.STATUS, Constants.SUCCESS);
  729. map.put(Constants.MESSAGE, "设置配送员成功!");
  730. new Thread(new Runnable() {
  731. public void run() {
  732. // 推送
  733. pushService.sendPush(adminPhone,
  734. "For优提醒您,一笔新订单已达到,请及时配送,辛苦您了。", 1);
  735. }
  736. }).start();
  737. } else {
  738. map.put(Constants.STATUS, Constants.FAILURE);
  739. map.put(Constants.MESSAGE, "设置配送员失败!");
  740. }
  741. } catch (Exception e) {
  742. map.put(Constants.STATUS, Constants.FAILURE);
  743. map.put(Constants.MESSAGE, "设置配送员失败!");
  744. }
  745. return map;
  746. }
  747. /**
  748. * 配送员获取配送订单
  749. *
  750. * @param phoneId
  751. * @return
  752. */
  753. @RequestMapping("/DeliverAdminGetOrder")
  754. public @ResponseBody
  755. Map<String, Object> deliverGetOrder(
  756. @RequestParam String phoneId, @RequestParam Integer campusId,
  757. Integer limit, Integer page) {
  758. Map<String, Object> map = new HashMap<String, Object>();
  759. Map<String, Object> requestMap = new HashMap<String, Object>();
  760. requestMap.put("phoneId", phoneId);
  761. requestMap.put("campusId", campusId);
  762. if (page != null && limit != null) {
  763. requestMap.put("offset", (page - 1) * limit);
  764. requestMap.put("limit", limit);
  765. }
  766. try {
  767. // 获取一笔订单列表
  768. List<DeliverOrder> deliverOrders = orderService
  769. .deliverGetOrder(requestMap);
  770. if (deliverOrders.size() <= 0) {
  771. map.put(Constants.STATUS, Constants.FAILURE);
  772. map.put(Constants.MESSAGE, "订单列表为空,请检查phoneId和campusId是否正确。如正确,则当前没有要配送的订单");
  773. } else {
  774. for (DeliverOrder deliverOrder : deliverOrders) {
  775. String togetherId = deliverOrder.getTogetherId();
  776. // 获取订单食品集
  777. List<DeliverChildOrder> deliverChildOrders = orderService
  778. .getDeliverChildOrders(togetherId);
  779. Float priceFloat = 0f;
  780. priceFloat = orderService.getTotalPriceByTogetherId(togetherId);
  781. // // 获取该笔订单总价
  782. // for (DeliverChildOrder deliverChildOrder : deliverChildOrders) {
  783. // if (deliverChildOrder.getIsDiscount() == 0) {
  784. // priceFloat += deliverChildOrder.getPrice()
  785. // * deliverChildOrder.getOrderCount();
  786. // } else {
  787. // priceFloat += deliverChildOrder.getDiscountPrice()
  788. // * deliverChildOrder.getOrderCount();
  789. // }
  790. // }
  791. deliverOrder.setTotalPrice(priceFloat);
  792. deliverOrder.setOrderList(deliverChildOrders);
  793. }
  794. map.put(Constants.STATUS, Constants.SUCCESS);
  795. map.put(Constants.MESSAGE, "获取配送订单成功!");
  796. map.put("orderList", JSONArray.parse(JSON
  797. .toJSONStringWithDateFormat(deliverOrders, "yyyy-MM-dd")));
  798. }
  799. } catch (Exception e) {
  800. map.put(Constants.STATUS, Constants.FAILURE);
  801. map.put(Constants.MESSAGE, "获取配送订单失败!");
  802. }
  803. return map;
  804. }
  805. /**
  806. * pc端获取简单的订单列表
  807. *
  808. * @param status
  809. * @param limit
  810. * @param offset
  811. * @param search
  812. * @return
  813. */
  814. @RequestMapping(value = "/getPCSimpleOrder")
  815. public @ResponseBody
  816. Map<String, Object> getPcOrders(Short status, @RequestParam Integer campusId,
  817. Integer limit, Integer offset, String search) {
  818. Map<String, Object> map = new HashMap<String, Object>();
  819. Map<String, Object> paramMap = new HashMap<String, Object>();
  820. paramMap.put("campusId", campusId);
  821. paramMap.put("limit", limit);
  822. paramMap.put("offset", offset);
  823. paramMap.put("search", search);
  824. paramMap.put("status", status);
  825. List<PCOrder> lists = orderService.getPCSimpleOrders(paramMap);
  826. DecimalFormat df = new DecimalFormat("####.00");
  827. for (PCOrder order : lists) {
  828. // 如果是完成订单,直接显示交易价格,否则计算应收取的价格
  829. if (order.getPrice() == null) {
  830. if (order.getIsDiscount() == 0) {
  831. order.setPrice(Float.parseFloat(df.format(order
  832. .getFoodPrice() * order.getOrderCount())));
  833. } else {
  834. order.setPrice(Float.parseFloat(df.format(order
  835. .getDiscountPrice() * order.getOrderCount())));
  836. }
  837. }
  838. }
  839. JSONArray jsonArray = JSONArray.parseArray(JSON
  840. .toJSONStringWithDateFormat(lists, "yyyy-MM-dd"));
  841. long totalCount = orderService.getPCSimpleOrdersCount(paramMap);
  842. map.put("rows", jsonArray);
  843. map.put("total", totalCount);
  844. return map;
  845. }
  846. /**
  847. * 设置无效订单
  848. *
  849. * @param togetherId
  850. * @return
  851. */
  852. @RequestMapping(value = "/setOrderInvalid", method = RequestMethod.POST)
  853. public @ResponseBody
  854. Map<String, Object> setOrderInvalid(
  855. @RequestParam String togetherId) {
  856. Map<String, Object> resultMap = new HashMap<String, Object>();
  857. try {
  858. Map<String, Object> parameterMap = new HashMap<>();
  859. parameterMap.put("togetherId", togetherId);
  860. int flag = orderService.setOrderInvalid(parameterMap);
  861. if (flag != -1) {
  862. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  863. resultMap.put(Constants.MESSAGE, "订单已取消");
  864. } else {
  865. resultMap.put(Constants.STATUS, Constants.FAILURE);
  866. resultMap.put(Constants.MESSAGE, "订单取消失败,请重试");
  867. }
  868. } catch (Exception e) {
  869. e.printStackTrace();
  870. resultMap.put(Constants.STATUS, Constants.FAILURE);
  871. resultMap.put(Constants.MESSAGE, "订单取消失败,请重试");
  872. }
  873. return resultMap;
  874. }
  875. /**
  876. * 获取某日订单所有订单详情
  877. *
  878. * @param date
  879. * @return
  880. */
  881. @RequestMapping(value = "getOrdersByDate")
  882. @ResponseBody
  883. public Map<String, Object> getOrdersByDate(String date,
  884. @RequestParam Integer campusId, Integer limit, Integer page) {
  885. Map<String, Object> resultMap = new HashMap<String, Object>();
  886. DecimalFormat df = new DecimalFormat("####.00");
  887. try {
  888. if (date.equals("") || date.equals("null"))
  889. date = null;
  890. else
  891. date = date.replace("年", "-").replace("月", "-")
  892. .replace("日", "");
  893. Map<String, Object> paramMap = new HashMap<String, Object>();
  894. paramMap.put("date", date);
  895. paramMap.put("campusId", campusId);
  896. if (page != null && limit != null) {
  897. paramMap.put("limit", limit);
  898. paramMap.put("offset", (page - 1) * limit);
  899. }
  900. System.out.println(date);
  901. List<DeliverOrder> deliverOrders = orderService
  902. .selectOrdersByDate(paramMap);
  903. Float totalPrice = 0f;
  904. for (DeliverOrder deliverOrder : deliverOrders) {
  905. String togetherId = deliverOrder.getTogetherId();
  906. System.out.println(JSON.toJSON(deliverOrder.getTogetherDate()));
  907. // 获取订单食品集
  908. paramMap.put("togetherId", togetherId);
  909. List<DeliverChildOrder> deliverChildOrders = orderService
  910. .getAllChildOrders(paramMap);
  911. Float priceFloat = 0f;
  912. // 获取该笔订单总价
  913. for (DeliverChildOrder deliverChildOrder : deliverChildOrders) {
  914. /*if (deliverChildOrder.getIsDiscount() == 0) {
  915. priceFloat += deliverChildOrder.getPrice()
  916. * deliverChildOrder.getOrderCount();
  917. } else {
  918. priceFloat += deliverChildOrder.getDiscountPrice()
  919. * deliverChildOrder.getOrderCount();
  920. }*/
  921. priceFloat += deliverChildOrder.getPrice();
  922. }
  923. totalPrice += priceFloat;
  924. deliverOrder.setTotalPrice(Float.parseFloat(df
  925. .format(priceFloat)));
  926. deliverOrder.setOrderList(deliverChildOrders);
  927. }
  928. resultMap.put("total_price", df.format(totalPrice));
  929. resultMap.put("counts", deliverOrders.size());
  930. resultMap.put("orderList", JSONArray.parse(JSON
  931. .toJSONStringWithDateFormat(deliverOrders,
  932. "yyyy-MM-dd HH:mm:ss")));
  933. } catch (Exception e) {
  934. e.printStackTrace();
  935. }
  936. return resultMap;
  937. }
  938. /**
  939. * 根据togetherId获取大订单信息
  940. *
  941. * @param togetherId
  942. */
  943. @RequestMapping("getBigOrderById")
  944. @ResponseBody
  945. public Map<String, Object> getBigOrderById(@RequestParam String togetherId) {
  946. Map<String, Object> resultMap = new HashMap<String, Object>();
  947. Map<String, Object> paramMap = new HashMap<String, Object>();
  948. Short status = 0;
  949. paramMap.put("togetherId", togetherId);
  950. BigOrder bigOrder = new BigOrder();
  951. bigOrder.setTogetherId(togetherId);
  952. List<SmallOrder> orders = orderService.getOrdersById(paramMap);
  953. Integer campusId = orders.get(0).getCampusId();
  954. String campusName = campusService.getCampusName(campusId);
  955. if (orders.size() > 0 && orders != null) {
  956. if (orders.get(0).getStatus() != 4) {
  957. status = orders.get(0).getStatus();
  958. } else {
  959. status = 5;
  960. for (int i = 0; i < orders.size(); i++) {
  961. if (orders.get(i).getIsRemarked() == 0) {
  962. status = 4;
  963. }
  964. }
  965. }
  966. Receiver receiver = receiverService.getReceiver(paramMap);
  967. receiver.setAddress(campusName + receiver.getAddress());
  968. Date date = orders.get(0).getTogetherDate();
  969. bigOrder.setDate(date);
  970. //System.out.println(orders.get(0).getPayWay());
  971. bigOrder.setPayWay(orders.get(0).getPayWay());
  972. Float sum = orders.get(0).getTotalPrice();
  973. if (sum != null) {
  974. DecimalFormat df = new DecimalFormat("0.0");
  975. bigOrder.setTotalPrice(df.format(sum));
  976. }
  977. bigOrder.setOrders(orders);
  978. bigOrder.setReceiver(receiver);
  979. bigOrder.setStatus(status);
  980. resultMap.put("BigOrder",
  981. JSONArray.parse(JSON.toJSONStringWithDateFormat(bigOrder,
  982. "yyyy-MM-dd HH:mm:ss")));
  983. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  984. resultMap.put(Constants.MESSAGE, "获取大订单信息成功");
  985. } else {
  986. resultMap.put(Constants.STATUS, Constants.FAILURE);
  987. resultMap.put(Constants.MESSAGE, "没有这个大订单");
  988. }
  989. return resultMap;
  990. }
  991. /**
  992. * 修改订单状态
  993. *
  994. * @param orderId
  995. * @param status
  996. * @param togetherId
  997. * @return
  998. */
  999. @RequestMapping("modifyOrderStatus")
  1000. public @ResponseBody
  1001. Map<String, Object> modifyOrderStatus(@RequestParam final String togetherId, @RequestParam Short status, Long orderId) {
  1002. Map<String, Object> resultMap = new HashMap<String, Object>();
  1003. Map<String, Object> requestMap = new HashMap<String, Object>();
  1004. try {
  1005. requestMap.put("togetherId", togetherId);
  1006. requestMap.put("status", status);
  1007. final String userPhone = orderService.getUserPhone(requestMap); //获取用户手机号
  1008. //final String adminPhone=orderService.getAdminPhone(requestMap); //获取配送员手机号
  1009. Integer flag = null;
  1010. switch (status) {
  1011. case 0:
  1012. //购物车
  1013. //flag = orderService.modifyOrderStatus(requestMap);
  1014. break;
  1015. case 1:
  1016. //待付款
  1017. //flag = orderService.modifyOrderStatus(requestMap);
  1018. break;
  1019. case 2:
  1020. //待确认
  1021. flag = orderService.modifyOrderStatus(requestMap);
  1022. break;
  1023. case 3:
  1024. //配送中
  1025. flag = orderService.modifyOrderStatus(requestMap);
  1026. new Thread(new Runnable() {
  1027. @Override
  1028. public void run() {
  1029. //推送
  1030. pushService.sendPush(userPhone,
  1031. "您有一笔订单正在配送中,请稍候。感谢您对For优的支持", 1);
  1032. }
  1033. }).start();
  1034. break;
  1035. case 4:
  1036. //待评价
  1037. flag = orderService.modifyOrderStatus(requestMap);
  1038. new Thread(new Runnable() {
  1039. @Override
  1040. public void run() {
  1041. //推送
  1042. pushService.sendPush(userPhone, "您有一笔订单已经完成,赶快去评价吧。感谢您对For优的支持", 1);
  1043. }
  1044. }).start();
  1045. break;
  1046. case 5:
  1047. //小订单已完成
  1048. requestMap.put("orderId", orderId);
  1049. requestMap.put("isRemarked", 1);
  1050. requestMap.put("status", 4);
  1051. flag = orderService.modifyOrderStatus(requestMap);
  1052. break;
  1053. default:
  1054. break;
  1055. }
  1056. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1057. resultMap.put(Constants.MESSAGE, "更改状态成功");
  1058. resultMap.put("flag", flag);
  1059. } catch (Exception e) {
  1060. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1061. resultMap.put(Constants.MESSAGE, "更改状态失败");
  1062. }
  1063. return resultMap;
  1064. }
  1065. /**
  1066. * 删除订单(status=4)
  1067. *
  1068. * @param togetherId
  1069. */
  1070. @RequestMapping("/deleteOrder")
  1071. public @ResponseBody
  1072. Map<String, Object> deleteOrder(@RequestParam String togetherId) {
  1073. Map<String, Object> resultMap = new HashMap<String, Object>();
  1074. Map<String, Object> paramMap = new HashMap<String, Object>();
  1075. paramMap.put("togetherId", togetherId);
  1076. List<SmallOrder> orders = orderService.getOrdersById(paramMap);
  1077. if (orders.size() > 0) {
  1078. orderService.deleteOrder(paramMap);
  1079. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1080. resultMap.put(Constants.MESSAGE, "删除订单成功");
  1081. } else {
  1082. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1083. resultMap.put(Constants.MESSAGE, "订单不存在,删除订单失败");
  1084. }
  1085. return resultMap;
  1086. }
  1087. /**
  1088. * 商品详情处立即购买
  1089. *
  1090. * @param campusId
  1091. * @param phoneId
  1092. * @param foodId
  1093. * @param foodCount
  1094. * @return
  1095. */
  1096. @RequestMapping("/purchaseImmediately")
  1097. public @ResponseBody
  1098. Map<String, Object> purchaseImmediately(
  1099. @RequestParam Integer campusId, @RequestParam String phoneId,
  1100. @RequestParam Long foodId, @RequestParam Integer foodCount) {
  1101. Map<String, Object> resultMap = new HashMap<String, Object>();
  1102. Map<String, Object> paramMap = new HashMap<String, Object>();
  1103. try {
  1104. Order order = new Order(campusId, phoneId, foodId, foodCount);
  1105. order.setStatus((short) 7);
  1106. paramMap.put("orderId", order.getOrderId());
  1107. int flag = orderService.insertSelectiveOrder(order);
  1108. if (flag == -1 || flag == 0) {
  1109. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1110. resultMap.put(Constants.MESSAGE, "生成订单失败");
  1111. }
  1112. SmallOrder smallOrder = orderService.getOrderById(paramMap);
  1113. resultMap.put("order", smallOrder);
  1114. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1115. resultMap.put(Constants.MESSAGE, "订单详情:");
  1116. } catch (Exception e) {
  1117. e.printStackTrace();
  1118. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1119. resultMap.put(Constants.MESSAGE, "生成订单失败");
  1120. }
  1121. return resultMap;
  1122. }
  1123. /**
  1124. * 根据id获取满减信息
  1125. *
  1126. * @param preferentialId
  1127. * @return
  1128. */
  1129. @RequestMapping("/getPreferentialById")
  1130. public @ResponseBody
  1131. Map<String, Object> getPreferentialById(@RequestParam Integer preferentialId) {
  1132. Map<String, Object> resultMap = new HashMap<String, Object>();
  1133. Preferential preferential = orderService.getPreferentialById(preferentialId);
  1134. resultMap.put("preferential", preferential);
  1135. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1136. resultMap.put(Constants.MESSAGE, "获取成功");
  1137. return resultMap;
  1138. }
  1139. /**
  1140. * 获取满减信息
  1141. *
  1142. * @return
  1143. */
  1144. @RequestMapping("/getPreferentials")
  1145. public @ResponseBody
  1146. Map<String, Object> getPreferentialList(@RequestParam Integer campusId) {
  1147. Map<String, Object> paramMap = new HashMap<String, Object>();
  1148. paramMap.put("campusId", campusId);
  1149. Map<String, Object> resultMap = new HashMap<String, Object>();
  1150. List<Preferential> preferentials = orderService.getPreferential(paramMap);
  1151. resultMap.put("preferential", preferentials);
  1152. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1153. resultMap.put(Constants.MESSAGE, "获取成功");
  1154. return resultMap;
  1155. }
  1156. //获取客户端ip
  1157. public String getIpAddr(HttpServletRequest request) {
  1158. String ip = request.getHeader("x-forwarded-for");
  1159. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  1160. ip = request.getHeader("Proxy-Client-IP");
  1161. }
  1162. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  1163. ip = request.getHeader("WL-Proxy-Client-IP");
  1164. }
  1165. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  1166. ip = request.getHeader("HTTP_CLIENT_IP");
  1167. }
  1168. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  1169. ip = request.getHeader("HTTP_X_FORWARDED_FOR");
  1170. }
  1171. if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
  1172. ip = request.getRemoteAddr();
  1173. }
  1174. return ip;
  1175. }
  1176. /**
  1177. * 取消订单并退款
  1178. *
  1179. * @param togetherId
  1180. * @return
  1181. */
  1182. @RequestMapping("/cancelOrderWithRefund")
  1183. public @ResponseBody
  1184. Map<String, Object> cancelOrderWithRefund(@RequestParam String togetherId) {
  1185. Map<String, Object> map = new HashMap<String, Object>();
  1186. try {
  1187. Map<String, Object> paramMap = new HashMap<String, Object>();
  1188. paramMap.put("togetherId", togetherId);
  1189. Integer flag = orderService.cancelOrderWithRefund(paramMap);
  1190. if (flag != -1) {
  1191. map.put(Constants.STATUS, Constants.SUCCESS);
  1192. map.put(Constants.MESSAGE, "取消订单成功,退款受理中,请耐心等待");
  1193. } else {
  1194. map.put(Constants.STATUS, Constants.SUCCESS);
  1195. map.put(Constants.MESSAGE, "取消订单失败,请重试");
  1196. }
  1197. } catch (Exception e) {
  1198. map.put(Constants.STATUS, Constants.SUCCESS);
  1199. map.put(Constants.MESSAGE, "取消订单失败,请重试");
  1200. }
  1201. return map;
  1202. }
  1203. /**
  1204. * 获取退款订单
  1205. *
  1206. * @param campusId
  1207. * @return
  1208. */
  1209. @RequestMapping("/getRefundOrder")
  1210. public @ResponseBody
  1211. JSONArray getRefundOrder(Integer campusId, Integer type) {
  1212. Map<String, Object> paramMap = new HashMap<String, Object>();
  1213. if (type == 1) {
  1214. paramMap.put("status", 10);
  1215. } else if (type == 0) {
  1216. paramMap.put("status", 9);
  1217. paramMap.put("campusId", campusId);
  1218. }
  1219. List<SuperAdminOrder> refundOrders = orderService.getPCOrders(paramMap);
  1220. System.out.println(refundOrders);
  1221. return JSONArray.parseArray(JSON.toJSONStringWithDateFormat(refundOrders, "yyyy-MM-dd"));
  1222. }
  1223. /**
  1224. * 获取退款订单
  1225. *
  1226. * @param campusId
  1227. * @return
  1228. */
  1229. @RequestMapping("/getInvalideOrder")
  1230. public @ResponseBody
  1231. JSONArray getInvalidOrder(Integer campusId) {
  1232. Map<String, Object> paramMap = new HashMap<String, Object>();
  1233. paramMap.put("campusId", campusId);
  1234. List<SuperAdminOrder> refundOrders = orderService.getPCInvalidOrders(paramMap); //PC获取无效订单
  1235. return JSONArray.parseArray(JSON.toJSONStringWithDateFormat(refundOrders, "yyyy-MM-dd"));
  1236. }
  1237. /**
  1238. * 取消退款
  1239. *
  1240. * @return
  1241. */
  1242. @RequestMapping("/cancelRefund")
  1243. public @ResponseBody
  1244. Map<String, Object> cancelRefund(@RequestParam String togetherId) {
  1245. Map<String, Object> resultMap = new HashMap<>();
  1246. try {
  1247. Map<String, Object> paramMap = new HashMap<>();
  1248. paramMap.put("togetherId", togetherId);
  1249. int flag = orderService.updateCancelRefund(paramMap);
  1250. if (flag == -1) {
  1251. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1252. resultMap.put(Constants.MESSAGE, "取消失败");
  1253. } else {
  1254. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1255. resultMap.put(Constants.MESSAGE, "取消成功");
  1256. }
  1257. } catch (Exception e) {
  1258. e.getStackTrace();
  1259. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1260. resultMap.put(Constants.MESSAGE, "取消失败");
  1261. }
  1262. return resultMap;
  1263. }
  1264. /**
  1265. * 总校区管理员确认退款
  1266. *
  1267. * @param togetherId
  1268. * @param totalPrice
  1269. * @return
  1270. */
  1271. @RequestMapping("/refund")
  1272. public @ResponseBody
  1273. Map<String, Object> refund(@RequestParam String togetherId, Float totalPrice) {
  1274. Map<String, Object> resultMap = new HashMap<>();
  1275. try {
  1276. Map<String, Object> paramMap = new HashMap<String, Object>();
  1277. paramMap.put("togetherId", togetherId);
  1278. Float price = orderService.getTotalPriceByTogetherId(togetherId);
  1279. if (Math.abs(price - totalPrice) > 0.1) {
  1280. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1281. resultMap.put(Constants.MESSAGE, "退款失败");
  1282. } else {
  1283. String chargeId = orderService.getChargeId(paramMap);
  1284. if (chargeId != null) {
  1285. Refund refund = ChargeInterface.Refund(chargeId, price);
  1286. if (refund != null) {
  1287. resultMap.put("refund", refund);
  1288. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1289. resultMap.put(Constants.MESSAGE, "操作成功");
  1290. } else {
  1291. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1292. resultMap.put(Constants.MESSAGE, "操作失败");
  1293. }
  1294. } else {
  1295. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1296. resultMap.put(Constants.MESSAGE, "操作失败");
  1297. }
  1298. }
  1299. } catch (Exception e) {
  1300. e.getStackTrace();
  1301. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1302. resultMap.put(Constants.MESSAGE, "退款失败");
  1303. }
  1304. return resultMap;
  1305. }
  1306. /**
  1307. * 校区管理员确认退款
  1308. *
  1309. * @param togetherId s * @return
  1310. */
  1311. @RequestMapping("/confirmRefund")
  1312. public @ResponseBody
  1313. Map<String, Object> confirmRefund(String togetherId) {
  1314. Map<String, Object> resultMap = new HashMap<>();
  1315. try {
  1316. Map<String, Object> paramMap = new HashMap<String, Object>();
  1317. paramMap.put("togetherId", togetherId);
  1318. int flag = orderService.updateRefundStatus(paramMap); //将状态置为10
  1319. if (flag != -1) {
  1320. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1321. resultMap.put(Constants.MESSAGE, "修改成功");
  1322. } else {
  1323. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1324. resultMap.put(Constants.MESSAGE, "修改失败");
  1325. }
  1326. } catch (Exception e) {
  1327. e.getStackTrace();
  1328. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1329. resultMap.put(Constants.MESSAGE, "修改失败");
  1330. }
  1331. return resultMap;
  1332. }
  1333. /**
  1334. * 获取销量和销售额
  1335. *
  1336. * @param campusId
  1337. * @return
  1338. */
  1339. @RequestMapping("getSalesInfoByCampusId")
  1340. @ResponseBody
  1341. public JSONArray getSalesByDate(@RequestParam Integer campusId, String month) {
  1342. Map<String, Object> paramMap = new HashMap<String, Object>();
  1343. Date dateStart;
  1344. Date dateEnd;
  1345. List<TradeInfo> tradeList = new ArrayList<TradeInfo>();
  1346. paramMap.put("campusId", campusId);
  1347. //System.out.println("month="+month);
  1348. //如果month不为空,说明切换了月份;但是注意month为本月的时候,此时是下面的情况
  1349. if (month != null && !month.equals(null) && !month.equals("") && !CalendarTool.checkIsThisMonth(month)) {
  1350. Map<String, Date> dateMap = CalendarTool.getFirstAndLastDayOfMonth(month);
  1351. dateStart = dateMap.get("monthStart");
  1352. dateEnd = dateMap.get("monthEnd");
  1353. paramMap.put("dateStart", dateStart);
  1354. paramMap.put("dateEnd", dateEnd);
  1355. TradeInfo monthInfo = new TradeInfo();
  1356. monthInfo.setInfoDateType("当月");
  1357. monthInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap));//获取指定时间段和指定校区的订单总数
  1358. monthInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段和指定校区的订单交易额
  1359. paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
  1360. monthInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区和指定支付方式的订单交易额
  1361. paramMap.put("payWay", 2);
  1362. monthInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
  1363. tradeList.add(monthInfo);
  1364. return (JSONArray) JSON.toJSON(tradeList);
  1365. }
  1366. //当天订单数、销售额-
  1367. dateStart = CalendarTool.getTodayStart();
  1368. dateEnd = CalendarTool.getTodayEnd();
  1369. paramMap.put("dateStart", dateStart);
  1370. paramMap.put("dateEnd", dateEnd);
  1371. TradeInfo todayInfo = new TradeInfo();
  1372. todayInfo.setInfoDateType("今天");
  1373. todayInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap)); //获取指定时间段和指定校区的订单总数
  1374. todayInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap)); //获取指定时间段和指定校区的订单交易额
  1375. paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
  1376. todayInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
  1377. paramMap.put("payWay", 2);
  1378. todayInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
  1379. tradeList.add(todayInfo);
  1380. paramMap.remove("payWay");
  1381. //本周订单数、销售额
  1382. dateStart = CalendarTool.getMondayOfThisWeek();
  1383. dateEnd = CalendarTool.getSundayOfThisWeek();
  1384. paramMap.put("dateStart", dateStart);
  1385. paramMap.put("dateEnd", dateEnd);
  1386. TradeInfo weekInfo = new TradeInfo();
  1387. weekInfo.setInfoDateType("本周");
  1388. weekInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap));//获取指定时间段和指定校区的订单总数
  1389. weekInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段和指定校区的订单交易额
  1390. paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
  1391. weekInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区和指定支付方式的订单交易额
  1392. paramMap.put("payWay", 2);
  1393. weekInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
  1394. tradeList.add(weekInfo);
  1395. paramMap.remove("payWay");
  1396. //本月订单数、销售额
  1397. dateStart = CalendarTool.getFirstDayOfThisMonth();
  1398. dateEnd = CalendarTool.getLastDayOfThisMonth();
  1399. paramMap.put("dateStart", dateStart);
  1400. paramMap.put("dateEnd", dateEnd);
  1401. TradeInfo monthInfo = new TradeInfo();
  1402. monthInfo.setInfoDateType("本月");
  1403. monthInfo.setOrderCount(orderService.getSalesInfoByCampusId(paramMap));//获取指定时间段和指定校区的订单总数
  1404. monthInfo.setTradeVolume(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段和指定校区的订单交易额
  1405. paramMap.put("payWay", 1); //payWay:0,没有; 1,支付宝; 2,微信
  1406. monthInfo.setTradeVolumeAliPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区和指定支付方式的订单交易额
  1407. paramMap.put("payWay", 2);
  1408. monthInfo.setTradeVolumeWeChatPay(orderService.getTradeVolumeByCampusId(paramMap));//获取指定时间段、指定校区、指定支付方式的订单交易额
  1409. tradeList.add(monthInfo);
  1410. return (JSONArray) JSON.toJSON(tradeList);
  1411. }
  1412. @RequestMapping("/deleteOrderTrue")
  1413. @ResponseBody
  1414. public Map<String, Object> deleteOrderTrue(@RequestParam String togetherId) {
  1415. Map<String, Object> resultMap = new HashMap<String, Object>();
  1416. try {
  1417. Map<String, Object> paramMap = new HashMap<String, Object>();
  1418. paramMap.put("togetherId", togetherId);
  1419. int flag = orderService.deleteOrderTrue(paramMap);
  1420. if (flag != -1) {
  1421. resultMap.put(Constants.STATUS, Constants.SUCCESS);
  1422. resultMap.put(Constants.MESSAGE, "删除成功");
  1423. } else {
  1424. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1425. resultMap.put(Constants.MESSAGE, "删除失败");
  1426. }
  1427. } catch (Exception e) {
  1428. e.getStackTrace();
  1429. resultMap.put(Constants.STATUS, Constants.FAILURE);
  1430. resultMap.put(Constants.MESSAGE, "删除失败");
  1431. }
  1432. return resultMap;
  1433. }
  1434. }