CartHandlers.java 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948
  1. package com.iamberry.wechat.handles.cart;
  2. import java.text.SimpleDateFormat;
  3. import java.util.*;
  4. import javax.servlet.http.HttpServletRequest;
  5. import com.iamberry.wechat.core.entity.order.OrderItem;
  6. import com.iamberry.wechat.core.entity.product.SalesUserGift;
  7. import com.iamberry.wechat.tools.*;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.bind.annotation.ResponseBody;
  14. import com.iamberry.wechat.core.entity.PaperBean;
  15. import com.iamberry.wechat.core.entity.ResultMsg;
  16. import com.iamberry.wechat.core.entity.WechatUtils;
  17. import com.iamberry.wechat.core.entity.admin.ShopSystemRule;
  18. import com.iamberry.wechat.core.entity.cart.CartDto;
  19. import com.iamberry.wechat.core.entity.cart.SendPayDto;
  20. import com.iamberry.wechat.core.entity.cart.ShopOrderAndItemDto;
  21. import com.iamberry.wechat.core.entity.cart.ShopOrderItemDto;
  22. import com.iamberry.wechat.core.entity.cart.ShopSalesOrderDto;
  23. import com.iamberry.wechat.core.entity.coupon.CouponItem;
  24. import com.iamberry.wechat.core.entity.coupon.CouponType;
  25. import com.iamberry.wechat.core.entity.member.Member;
  26. import com.iamberry.wechat.core.entity.mq.MQMessage;
  27. import com.iamberry.wechat.core.entity.order.Order;
  28. import com.iamberry.wechat.core.entity.pay.PayResult;
  29. import com.iamberry.wechat.face.admin.SystemService;
  30. import com.iamberry.wechat.face.cart.CartService;
  31. import com.iamberry.wechat.face.coupon.CouponItemService;
  32. import com.iamberry.wechat.face.home.HomeService;
  33. import com.iamberry.wechat.face.member.MemberService;
  34. import com.iamberry.wechat.face.order.AdminOrderService;
  35. import com.iamberry.wechat.face.pay.PayService;
  36. import com.iamberry.wechat.handles.mq.MQServiceProxy;
  37. /**
  38. * @company 深圳爱贝源科技有限公司
  39. * @website www.iamberry.com
  40. * @author 献
  41. * @tel 18271840547
  42. * @date 2016年11月3日
  43. * @explain 购物车Handler
  44. */
  45. @Controller
  46. @RequestMapping("/wechat/cart")
  47. public class CartHandlers {
  48. @Autowired
  49. private CartService cartService;
  50. @Autowired
  51. private WechatUtils wechatUtils;
  52. @Autowired
  53. private HomeService homeService;
  54. @Autowired
  55. private SystemService systemService;
  56. @Autowired
  57. private ValidatorUtil validatorUtil;
  58. @Autowired
  59. private AdminOrderService adminOrderService;
  60. @Autowired
  61. private PayService payService;
  62. @Autowired
  63. private MQServiceProxy mQservice;
  64. @Autowired
  65. private MemberService memberService;
  66. @Autowired
  67. private CouponItemService couponItemService;
  68. /**
  69. * 进入购物车页面
  70. * @param request
  71. * @return ResultMsg
  72. * @throws Exception
  73. */
  74. @ResponseBody
  75. @RequestMapping(value = "/selectCartByOpenId",method = RequestMethod.POST)
  76. public ResultMsg selectCartByOpenId(HttpServletRequest request) throws Exception {
  77. ResultMsg remsg = new ResultMsg();
  78. Member member = wechatUtils.getUserBySession(request);
  79. List<CartDto> cartList = cartService.selectCartByOpenId(member.getUserOpenid());
  80. /*
  81. * 金额统计
  82. */
  83. Integer total = 0;
  84. if (null != cartList && cartList.size() > 0) {
  85. for (CartDto cartDto : cartList) {
  86. if (cartDto.getProductStatus() != null && cartDto.getProductStatus() == 1) { // 产品状态:在售
  87. total += cartDto.getCartNum() * cartDto.getProductPrice();
  88. }
  89. }
  90. }
  91. /*
  92. * 组装数据
  93. */
  94. Map<String, Object> map = new HashMap<String, Object>();
  95. map.put("cartList", cartList);
  96. map.put("total", total);
  97. map.put("isShow", ResultInfo.ISSHOW);
  98. map.put("cartDesc", ResultInfo.CARTDESC);
  99. map.put("cart_url", ResultInfo.CART_URL);
  100. remsg.setMessage(ResultInfo.SUCCESSINFO);
  101. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  102. remsg.setStatus(true);
  103. remsg.setData(map);
  104. return remsg;
  105. }
  106. /**
  107. * 获取购物车数量
  108. * @param request
  109. * @return
  110. * @throws Exception
  111. */
  112. @ResponseBody
  113. @RequestMapping("/getCartNumByCartOpenId")
  114. public ResultMsg getCartNumByCartOpenId(HttpServletRequest request) throws Exception {
  115. ResultMsg remsg=new ResultMsg();
  116. Member member = wechatUtils.getUserBySession(request);
  117. if (member == null || member.getUserOpenid() == null || "null".equals(member.getUserOpenid())) {
  118. remsg.setMessage(ResultInfo.SUCCESSINFO);
  119. remsg.setStatus(true);
  120. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  121. remsg.setData(0);
  122. return remsg;
  123. }
  124. String openId = member.getUserOpenid();
  125. Integer cartNum = this.cartService.getCartNumByCartOpenId(openId);
  126. remsg.setMessage(ResultInfo.SUCCESSINFO);
  127. remsg.setStatus(true);
  128. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  129. remsg.setData(cartNum);
  130. return remsg;
  131. }
  132. /**
  133. * 首页添加商品到购物车
  134. * @param productId
  135. * @param cartNum
  136. * @param request
  137. * @return ResultMsg
  138. */
  139. @ResponseBody
  140. @RequestMapping("/addProductToCart")
  141. public ResultMsg addProductToCart(@RequestParam("productId") String productId,
  142. @RequestParam("productColorId") String productColorId,
  143. @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum,
  144. HttpServletRequest request) throws Exception {
  145. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  146. CartDto cartDto = new CartDto();
  147. ResultMsg remsg=new ResultMsg();
  148. Integer cid = 0;
  149. if (productColorId != null && !"".equals(productColorId) && !"null".equals(productColorId) && StaticInfo.pattern.matcher(productColorId).find()) {
  150. cid = Integer.parseInt(productColorId);
  151. } else {
  152. if (productColorId == null || "".equals(productColorId)) {
  153. remsg.setMessage(ResultInfo.ERRORINFO);
  154. remsg.setResultCode(ResultInfo.ERRORCODE);
  155. remsg.setStatus(false);
  156. return remsg;
  157. }
  158. try {
  159. String productIdString = StaticInfo.md5.decrypt(productColorId);
  160. cid = Integer.parseInt(productIdString);
  161. } catch (Exception e) {
  162. remsg.setMessage(ResultInfo.ERRORINFO);
  163. remsg.setResultCode(ResultInfo.ERRORCODE);
  164. remsg.setStatus(false);
  165. return remsg;
  166. }
  167. return remsg;
  168. }
  169. cartDto.setCartOpenId(openId);
  170. cartDto.setCartColorId(cid);
  171. //根据颜色id和商品id查询购物车中是否存在
  172. CartDto cart = cartService.getCartByCartProductId(cartDto);
  173. if (null != cart) {
  174. cartDto.setCartNum(cartNum + cart.getCartNum());
  175. //存在,则修改数量
  176. Integer num = cartService.updateCartByOpenId(cartDto);
  177. if (num > 0) {
  178. remsg.setMessage(ResultInfo.SUCCESSINFO);
  179. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  180. remsg.setData(cart.getCartId());
  181. remsg.setStatus(true);
  182. } else {
  183. remsg.setMessage(ResultInfo.ERRORINFO);
  184. remsg.setResultCode(ResultInfo.ERRORCODE);
  185. remsg.setStatus(false);
  186. }
  187. } else {
  188. cartDto.setCartNum(cartNum);
  189. //不存在,则添加商品信息
  190. Integer num = cartService.addProductToCart(cartDto);
  191. if (num > 0) {
  192. remsg.setMessage(ResultInfo.SUCCESSINFO);
  193. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  194. remsg.setData(num);
  195. remsg.setStatus(true);
  196. } else {
  197. remsg.setMessage(ResultInfo.ERRORINFO);
  198. remsg.setResultCode(ResultInfo.ERRORCODE);
  199. remsg.setStatus(false);
  200. }
  201. }
  202. return remsg;
  203. }
  204. /**
  205. * 点击加号按钮添加商品到购物车
  206. * @param request
  207. * @param productId
  208. * @param cartNum
  209. * @return ResultMsg
  210. * @throws Exception
  211. */
  212. @ResponseBody
  213. @RequestMapping(value = "/addCart",method = RequestMethod.GET)
  214. public ResultMsg addCart(HttpServletRequest request,@RequestParam("productId") Integer productId,
  215. @RequestParam("productColorId") String productColorId,
  216. @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
  217. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  218. ResultMsg remsg=new ResultMsg();
  219. Integer cid = 0;
  220. if (productColorId != null && !"".equals(productColorId) && !"null".equals(productColorId) && StaticInfo.pattern.matcher(productColorId).find()) {
  221. cid = Integer.parseInt(productColorId);
  222. }else{
  223. remsg.setMessage(ResultInfo.ERRORINFO);
  224. remsg.setResultCode(ResultInfo.ERRORCODE);
  225. remsg.setStatus(false);
  226. return remsg;
  227. }
  228. CartDto cartDto = new CartDto();
  229. cartDto.setCartOpenId(openId);
  230. cartDto.setCartColorId(cid);
  231. Integer productNum = cartService.getCartNumByOpenId(cartDto);
  232. cartDto.setCartNum(productNum + cartNum);
  233. Integer num = cartService.updateCartByOpenId(cartDto);
  234. if (num > 0) {
  235. remsg.setMessage(ResultInfo.SUCCESSINFO);
  236. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  237. remsg.setStatus(true);
  238. } else {
  239. remsg.setMessage(ResultInfo.ERRORINFO);
  240. remsg.setResultCode(ResultInfo.ERRORCODE);
  241. remsg.setStatus(false);
  242. }
  243. return remsg;
  244. }
  245. /**
  246. * 点击减号按钮删除商品
  247. * @param request
  248. * @param productColorId
  249. * @param cartNum
  250. * @return ResultMsg
  251. * @throws Exception
  252. */
  253. @ResponseBody
  254. @RequestMapping(value = "/deleteCart",method = RequestMethod.GET)
  255. public ResultMsg deleteCart(HttpServletRequest request,@RequestParam("productColorId") Integer productColorId,
  256. @RequestParam(value = "cartNum", required = false, defaultValue = "1") Integer cartNum) throws Exception {
  257. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  258. ResultMsg remsg=new ResultMsg();
  259. CartDto cartDto = new CartDto();
  260. cartDto.setCartOpenId(openId);
  261. cartDto.setCartColorId(productColorId);
  262. Integer productNum = cartService.getCartNumByOpenId(cartDto);
  263. Integer num = 0;
  264. if (productNum > 1) {
  265. cartDto.setCartNum(productNum - cartNum);
  266. num = cartService.updateCartByOpenId(cartDto);
  267. } else {
  268. this.deleteCartByProductId(request,productColorId);
  269. }
  270. if (num > 0) {
  271. remsg.setMessage(ResultInfo.SUCCESSINFO);
  272. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  273. remsg.setStatus(true);
  274. } else {
  275. remsg.setMessage(ResultInfo.ERRORINFO);
  276. remsg.setResultCode(ResultInfo.ERRORCODE);
  277. remsg.setStatus(false);
  278. }
  279. return remsg;
  280. }
  281. /**
  282. * 点击垃圾桶按钮删除购物车物品信息
  283. * @param request
  284. * @return ResultMsg
  285. */
  286. @ResponseBody
  287. @RequestMapping(value = "/deleteCartByProductId",method = RequestMethod.GET)
  288. public ResultMsg deleteCartByProductId(HttpServletRequest request,@RequestParam("productColorId") Integer productColorId) throws Exception{
  289. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  290. CartDto cartDto = new CartDto();
  291. ResultMsg remsg=new ResultMsg();
  292. cartDto.setCartOpenId(openId);
  293. cartDto.setCartColorId(productColorId);
  294. if (cartService.deleteCartByCartId(cartDto) >= 1) {
  295. remsg.setMessage(ResultInfo.SUCCESSINFO);
  296. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  297. remsg.setStatus(true);
  298. } else {
  299. remsg.setMessage(ResultInfo.ERRORINFO);
  300. remsg.setResultCode(ResultInfo.ERRORCODE);
  301. remsg.setStatus(false);
  302. }
  303. return remsg;
  304. }
  305. /**
  306. *
  307. * 查询订单列表页面
  308. * @param request
  309. * @param pageSize
  310. * @param pageNO
  311. * @param salesStatus
  312. * @param text
  313. * @return ResultMsg
  314. * @throws Exception
  315. */
  316. @ResponseBody
  317. @RequestMapping(value = "/selectShopOrder")
  318. public ResultMsg selectShopOrder(HttpServletRequest request,
  319. @RequestParam(value= "pageSize",defaultValue= "10" ,required=false) Integer pageSize,
  320. @RequestParam(value = "pageNO", defaultValue = "1") Integer pageNO,
  321. @RequestParam(value = "salesStatus",defaultValue = "")String salesStatus,
  322. @RequestParam(value = "text",defaultValue = "")String text) throws Exception {
  323. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  324. String beginDate = request.getParameter("beginDate");
  325. PaperBean bean = new PaperBean();
  326. ResultMsg remsg=new ResultMsg();
  327. if (null != salesStatus && !"".equals(salesStatus)) {
  328. bean.setStatus(salesStatus);
  329. }
  330. if (null != text && !"".equals(text)) {
  331. bean.setStr(text);
  332. }
  333. if (null != beginDate && !"".equals(beginDate)) {
  334. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  335. bean.setBeginDate(sdf.parse(beginDate));
  336. }
  337. bean.setText(openId);
  338. bean.setPaperData(pageNO, pageSize);
  339. List<ShopOrderAndItemDto> shopOrderList = cartService.selectShopOrder(bean);
  340. //查询订单列表时同步百胜信息
  341. if (null != shopOrderList && shopOrderList.size() > 0) {
  342. for (ShopOrderAndItemDto orderDto : shopOrderList) {
  343. List<SalesUserGift> giftList = new ArrayList<SalesUserGift>();
  344. //将赠品和订单项区分开
  345. List<OrderItem> orderItemList = orderDto.getOrderItemList();
  346. if (orderItemList == null || orderItemList.size() == 0) {
  347. remsg.setResultCode(ResultInfo.ERRORCODE);
  348. remsg.setStatus(false);
  349. return remsg;
  350. }
  351. Iterator it = orderItemList.iterator();
  352. //将所有赠品筛选出来
  353. while (it.hasNext()) {
  354. OrderItem item = (OrderItem)it.next();
  355. if (item.getItemProductDiscount() == 0) {
  356. SalesUserGift gift = new SalesUserGift();
  357. gift.setGiftName(item.getItemProductName());
  358. gift.setGiftColorName(item.getItemProductColor());
  359. gift.setUserGiftCount(item.getItemNum());
  360. gift.setUserColorId(item.getItemGiftSource());
  361. gift.setUserGiftColor(item.getItemColorId());
  362. giftList.add(gift);
  363. it.remove();
  364. }
  365. }
  366. //将赠品添加到对应的机器上
  367. for (OrderItem item : orderItemList) {
  368. List<SalesUserGift> gifts = new ArrayList<SalesUserGift>();
  369. for (int i = 0;i < giftList.size();i++) {
  370. SalesUserGift gift = giftList.get(i);
  371. if (item.getItemColorId() == gift.getUserColorId()) {
  372. gifts.add(gift);
  373. }
  374. }
  375. item.setSalesUserGiftList(gifts);
  376. }
  377. MQMessage message = new MQMessage();
  378. if ("2".equals(orderDto.getSalesStatus())) {
  379. message.setServiceToMessage(orderDto.getSalesOrderid());
  380. message.setServiceOtherMessage("efast.trade.detail.get");
  381. message.setServiceIsSend(2); // 没有推送的信息
  382. message.setServiceStatus(1); // 推送成功
  383. message.setServiceType(1); // 添加订单信息
  384. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  385. message.setServiceHandlerMethodName("selectEfastSendOrderInfo");
  386. mQservice.insertMQMessage(message);
  387. } else if ("8".equals(orderDto.getSalesStatus())) {
  388. message.setServiceToMessage(orderDto.getSalesOrderid());
  389. message.setServiceOtherMessage("efast.order.return.info.fetch");
  390. message.setServiceIsSend(2); // 没有推送的信息
  391. message.setServiceStatus(1); // 推送成功
  392. message.setServiceType(1); // 添加订单信息
  393. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  394. message.setServiceHandlerMethodName("selectEfastReturnOrderInfo");
  395. mQservice.insertMQMessage(message);
  396. }
  397. }
  398. }
  399. Integer pageCount = cartService.getOrderNumByOpenId(bean);
  400. int count = pageCount % pageSize == 0? pageCount/pageSize:(pageCount/pageSize)+1;
  401. Map<String,Object> map = new HashMap<String,Object>();
  402. map.put("pageCount", count);
  403. map.put("orderList", shopOrderList);
  404. remsg.setMessage(ResultInfo.SUCCESSINFO);
  405. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  406. remsg.setStatus(true);
  407. remsg.setData(map);
  408. return remsg;
  409. }
  410. /**
  411. * 查询订单详情
  412. * @param request
  413. * @return
  414. * @throws Exception
  415. */
  416. @ResponseBody
  417. @RequestMapping("/getShopOrderByOrderId")
  418. public ResultMsg getShopOrderByOrderId(HttpServletRequest request) throws Exception{
  419. String orderId = request.getParameter("orderId");
  420. ResultMsg remsg=new ResultMsg();
  421. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  422. ShopSalesOrderDto shopSalesOrderDto = null;
  423. List<ShopOrderItemDto> orderItemList = new ArrayList<ShopOrderItemDto>();
  424. CouponType couponType = null;
  425. CouponItem couponItem = new CouponItem();
  426. if (orderId != null && !"".equals(orderId)) {
  427. shopSalesOrderDto = cartService.getShopOrderByOrderId(orderId, openId);
  428. //查询优惠券信息
  429. if (null != shopSalesOrderDto.getSalesCouponReceiveId() && !"".equals(shopSalesOrderDto.getSalesCouponReceiveId())) {
  430. couponItem.setCouponItemId(shopSalesOrderDto.getSalesCouponReceiveId());
  431. couponItem.setCouponItemUseropenid(openId);
  432. couponType = cartService.getCouponReduceByItemId(couponItem);
  433. }
  434. if (null != couponType) {
  435. int money = 0;
  436. switch (couponType.getCouponType()) {
  437. case 1:
  438. money = couponType.getCouponReduce();
  439. break;
  440. case 2:
  441. money = shopSalesOrderDto.getSalesAmount() - shopSalesOrderDto.getSalesAmount() * couponType.getCouponReduce()/100;
  442. break;
  443. }
  444. shopSalesOrderDto.setCouponReduce(money);
  445. }
  446. List<SalesUserGift> giftList = new ArrayList<SalesUserGift>();
  447. //将赠品和订单项区分开
  448. orderItemList = cartService.selectShopOrderItem(orderId);
  449. if (orderItemList == null || orderItemList.size() == 0) {
  450. remsg.setResultCode(ResultInfo.ERRORCODE);
  451. remsg.setStatus(false);
  452. return remsg;
  453. }
  454. Iterator it = orderItemList.iterator();
  455. //将所有赠品筛选出来
  456. while (it.hasNext()) {
  457. ShopOrderItemDto item = (ShopOrderItemDto)it.next();
  458. if (item.getItemProductDiscount() == 0) {
  459. SalesUserGift gift = new SalesUserGift();
  460. gift.setGiftName(item.getItemProductName());
  461. gift.setGiftColorName(item.getItemProductColor());
  462. gift.setUserGiftCount(item.getItemNum());
  463. gift.setUserColorId(item.getItemGiftSource());
  464. gift.setUserGiftColor(item.getItemColorId());
  465. giftList.add(gift);
  466. it.remove();
  467. }
  468. }
  469. //将赠品添加到对应的机器上
  470. for (ShopOrderItemDto item : orderItemList) {
  471. List<SalesUserGift> gifts = new ArrayList<SalesUserGift>();
  472. for (int i = 0;i < giftList.size();i++) {
  473. SalesUserGift gift = giftList.get(i);
  474. if (item.getItemColorId() == gift.getUserColorId()) {
  475. gifts.add(gift);
  476. }
  477. }
  478. item.setSalesUserGiftList(gifts);
  479. }
  480. shopSalesOrderDto.setOrderItemList(orderItemList);
  481. }
  482. if (shopSalesOrderDto == null) {
  483. shopSalesOrderDto = new ShopSalesOrderDto();
  484. }
  485. if ("5".equals(shopSalesOrderDto.getSalesStatus())) {
  486. // 给百胜推送信息
  487. try {
  488. MQMessage message = new MQMessage();
  489. message.setServiceToMessage(orderId);
  490. message.setServiceOtherMessage("efast.trade.detail.get");
  491. message.setServiceIsSend(2); // 没有推送的信息
  492. message.setServiceStatus(1); // 推送成功
  493. message.setServiceType(1); // 添加订单信息
  494. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  495. message.setServiceHandlerMethodName("selectEfastSendOrderInfo");
  496. mQservice.insertMQMessage(message);
  497. } catch (Exception e) {
  498. // TODO: handle exception
  499. }
  500. } else if ("8".equals(shopSalesOrderDto.getSalesStatus())) {
  501. // 给百胜推送信息
  502. try {
  503. MQMessage message = new MQMessage();
  504. message.setServiceToMessage(orderId);
  505. message.setServiceOtherMessage("efast.trade.detail.get");
  506. message.setServiceIsSend(2); // 没有推送的信息
  507. message.setServiceStatus(1); // 推送成功
  508. message.setServiceType(1); // 添加订单信息
  509. message.setServiceHandlerObjectName("efastOrderServiceImpl");
  510. message.setServiceHandlerMethodName("selectEfastReturnOrderInfo");
  511. mQservice.insertMQMessage(message);
  512. } catch (Exception e) {
  513. // TODO: handle exception
  514. }
  515. }
  516. remsg.setData(shopSalesOrderDto);
  517. remsg.setMessage(ResultInfo.SUCCESSINFO);
  518. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  519. remsg.setStatus(true);
  520. return remsg;
  521. }
  522. /**
  523. * 订单页面支付方法
  524. * @param request
  525. * @return
  526. * @throws Exception
  527. */
  528. @ResponseBody
  529. @RequestMapping("/orderPay")
  530. public ResultMsg orderPay(HttpServletRequest request) throws Exception {
  531. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  532. String orderId = request.getParameter("orderId");
  533. ResultMsg msg=new ResultMsg();
  534. Order order = new Order();
  535. order.setSalesOrderid(orderId);
  536. order.setSalesOpenid(openId);
  537. ShopSalesOrderDto shopSalesOrderDto = null;
  538. SendPayDto dto = new SendPayDto();
  539. dto.setSuccess(false);
  540. List<ShopOrderItemDto> orderItemList = new ArrayList<ShopOrderItemDto>();
  541. if (orderId != null && !"".equals(orderId)) {
  542. shopSalesOrderDto = cartService.getShopOrderByOrderId(orderId, openId);
  543. orderItemList = cartService.selectShopOrderItem(orderId);
  544. Member member = memberService.getMemberByUserOpenId(openId);
  545. //获取账户余额,判断是否在可用范围内
  546. int balancePayAmount=shopSalesOrderDto.getBalancePayAmount();
  547. int total = shopSalesOrderDto.getSalesYetAmount();
  548. //判断余额支付金额是否大于用户余额
  549. if(balancePayAmount>0 && member.getUserIncome()>balancePayAmount){
  550. total = total - balancePayAmount > 0 ? total - balancePayAmount : 0;
  551. }else if(balancePayAmount>0 && member.getUserIncome()<balancePayAmount){
  552. msg.setMessage(ResultInfo.NO_ENOUGH_FOR_PAY);
  553. return msg;
  554. }
  555. // 发起支付
  556. PayResult result = payService.requestPay(openId, orderId, total, orderItemList.get(0).getItemProductName() + "...", NameUtils.WECHAT_ORDER_BACK);
  557. if (result.isPaySuccess()) {
  558. dto.setInfo(result.getPayData());
  559. dto.setSuccess(true);
  560. dto.setOrderId(orderId);
  561. } else {
  562. dto.setInfo(result.getPayData());
  563. dto.setOrderId(orderId);
  564. }
  565. } else {
  566. shopSalesOrderDto = new ShopSalesOrderDto();
  567. }
  568. msg.setResultCode(ResultInfo.SUCCESSCODE);
  569. msg.setMessage(ResultInfo.SUCCESSINFO);
  570. msg.setData(dto);
  571. msg.setStatus(true);
  572. return msg;
  573. }
  574. /**
  575. * 取消订单
  576. * @param request
  577. * @param orderId
  578. * @return ResultMsg
  579. * @throws Exception
  580. */
  581. @ResponseBody
  582. @RequestMapping("/cancelOrder")
  583. public ResultMsg cancelOrder(HttpServletRequest request,
  584. @RequestParam(value = "orderId",defaultValue = "")String orderId,
  585. @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception{
  586. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  587. ResultMsg remsg=new ResultMsg();
  588. if (null != orderId && !"".equals(orderId)) {
  589. ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
  590. if (orderDto != null) {
  591. if (!openId.equals(orderDto.getSalesOpenid())) {
  592. remsg.setMessage(ResultInfo.ERRORINFO);
  593. remsg.setResultCode(ResultInfo.ERRORCODE);
  594. remsg.setStatus(false);
  595. return remsg;
  596. }
  597. if (Integer.parseInt(orderDto.getSalesStatus()) != 1) {
  598. remsg.setMessage(ResultInfo.ERRORINFO);
  599. remsg.setResultCode(ResultInfo.ERRORCODE);
  600. remsg.setStatus(false);
  601. return remsg;
  602. }
  603. } else {
  604. remsg.setMessage(ResultInfo.ERRORINFO);
  605. remsg.setResultCode(ResultInfo.ERRORCODE);
  606. remsg.setStatus(false);
  607. return remsg;
  608. }
  609. if (null != orderDto.getSalesCouponReceiveId() && !"".equals(orderDto.getSalesCouponReceiveId())) {
  610. CouponItem couponItem = new CouponItem();
  611. couponItem.setCouponItemId(orderDto.getSalesCouponReceiveId());
  612. couponItem.setCouponItemUseropenid(openId);
  613. couponItem.setCouponUseStatus(1);
  614. couponItem.setOldCouponUseStatus(7);
  615. couponItemService.updateCouponItemById(couponItem);
  616. }
  617. Order order = new Order();
  618. order.setSalesStatus(0);
  619. order.setSalesOrderid(orderId);
  620. order.setOldStatus(status);
  621. adminOrderService.updateOrderStatusByOrderId(order);
  622. remsg.setMessage(ResultInfo.SUCCESSINFO);
  623. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  624. remsg.setStatus(true);
  625. return remsg;
  626. } else {
  627. remsg.setMessage(ResultInfo.ERRORINFO);
  628. remsg.setResultCode(ResultInfo.ERRORCODE);
  629. remsg.setStatus(false);
  630. return remsg;
  631. }
  632. }
  633. /**
  634. * 订单退货或退款
  635. * @param request
  636. * @param orderId
  637. * @param remark
  638. * @param status
  639. * @return
  640. * @throws Exception
  641. */
  642. @ResponseBody
  643. @RequestMapping("/returnOrder")
  644. public ResultMsg returnOrder(HttpServletRequest request,
  645. @RequestParam(value = "orderId",defaultValue = "")String orderId,
  646. @RequestParam(value = "remark",defaultValue = "")String remark,
  647. @RequestParam(value = "returnOrderId",defaultValue = "")String returnOrderId,
  648. @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception {
  649. ResultMsg remsg=new ResultMsg();
  650. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  651. Order order = new Order();
  652. order.setSalesOrderid(orderId);
  653. order.setOldStatus(status);
  654. ShopSystemRule shopSystemRule = this.adminOrderService.getReluByRid(102);
  655. if (null != orderId && !"".equals(orderId)) {
  656. ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
  657. if (orderDto != null) {
  658. if (!openId.equals(orderDto.getSalesOpenid())) {
  659. remsg.setMessage(ResultInfo.ERRORINFO);
  660. remsg.setResultCode(ResultInfo.ERRORCODE);
  661. remsg.setStatus(false);
  662. return remsg;
  663. }
  664. //判断该订单是否被锁定,如果被锁定,则不能退款或是退换货
  665. if (orderDto.getSalesLockType() != null && "2".equals(orderDto.getSalesLockType().toString())) {
  666. remsg.setMessage(ResultInfo.ERRORINFO);
  667. remsg.setResultCode(ResultInfo.ERRORCODE);
  668. remsg.setStatus(false);
  669. return remsg;
  670. }
  671. //判断该订单是否可以退款
  672. if (status == 2) {
  673. if (Integer.parseInt(orderDto.getSalesStatus()) != status) {
  674. remsg.setMessage(ResultInfo.ERRORINFO);
  675. remsg.setResultCode(ResultInfo.ERRORCODE);
  676. remsg.setStatus(false);
  677. return remsg;
  678. } else {
  679. order.setSalesStatus(3);
  680. order.setSalesReturnDes(remark);
  681. cartService.updateOrderByOrderId(order);
  682. remsg.setMessage(ResultInfo.SUCCESSINFO);
  683. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  684. remsg.setStatus(true);
  685. return remsg;
  686. }
  687. }
  688. //判断该订单是否可以退货
  689. if (status == 5) {
  690. if (Integer.parseInt(orderDto.getSalesStatus()) != status) {
  691. remsg.setMessage(ResultInfo.ERRORINFO);
  692. remsg.setResultCode(ResultInfo.ERRORCODE);
  693. remsg.setStatus(false);
  694. return remsg;
  695. } else {
  696. // 7天内用户可以退货
  697. if ((new Date().getTime() - orderDto.getSalesSendDate().getTime()) > shopSystemRule.getRuleNum() * (1000*3600*24)) {
  698. remsg.setMessage(ResultInfo.ERRORINFO);
  699. remsg.setResultCode(ResultInfo.ERRORCODE);
  700. remsg.setStatus(false);
  701. return remsg;
  702. } else {
  703. order.setSalesStatus(6);
  704. order.setSalesReturnDes(remark);
  705. order.setSalesChangeOrderid(returnOrderId);
  706. cartService.updateOrderByOrderId(order);
  707. remsg.setMessage(ResultInfo.SUCCESSINFO);
  708. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  709. remsg.setStatus(true);
  710. return remsg;
  711. }
  712. }
  713. }
  714. } else {
  715. remsg.setMessage(ResultInfo.ERRORINFO);
  716. remsg.setResultCode(ResultInfo.ERRORCODE);
  717. remsg.setStatus(false);
  718. return remsg;
  719. }
  720. }
  721. return remsg;
  722. }
  723. /**
  724. * 订单换货
  725. * @param request
  726. * @param orderId
  727. * @return
  728. */
  729. @ResponseBody
  730. @RequestMapping("/exchangeOrder")
  731. public ResultMsg exchangeOrder(HttpServletRequest request,
  732. @RequestParam(value = "orderId",defaultValue = "")String orderId,
  733. @RequestParam(value = "status",defaultValue = "-1") Integer status,
  734. @RequestParam(value = "changeOrderId",defaultValue = "") String changeOrderId) throws Exception{
  735. ResultMsg remsg=new ResultMsg();
  736. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  737. Order order = new Order();
  738. order.setSalesOrderid(orderId);
  739. order.setSalesChangeOrderid(changeOrderId);
  740. order.setOldStatus(status);
  741. ShopSystemRule shopSystemRule = this.adminOrderService.getReluByRid(103);
  742. if (null != orderId && !"".equals(orderId)) {
  743. ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
  744. if (orderDto != null) {
  745. if (!openId.equals(orderDto.getSalesOpenid())) {
  746. remsg.setMessage(ResultInfo.ERRORINFO);
  747. remsg.setResultCode(ResultInfo.ERRORCODE);
  748. remsg.setStatus(false);
  749. return remsg;
  750. }
  751. if (Integer.parseInt(orderDto.getSalesStatus()) != 5 && Integer.parseInt(orderDto.getSalesStatus()) != 12) {
  752. remsg.setMessage(ResultInfo.ERRORINFO);
  753. remsg.setResultCode(ResultInfo.ERRORCODE);
  754. remsg.setStatus(false);
  755. return remsg;
  756. } else {
  757. // 1年内用户可以换货
  758. if ((new Date().getTime() - orderDto.getSalesSendDate().getTime()) >= shopSystemRule.getRuleNum() * (1000*3600*24)) {
  759. remsg.setMessage(ResultInfo.ERRORINFO);
  760. remsg.setResultCode(ResultInfo.ERRORCODE);
  761. remsg.setStatus(false);
  762. return remsg;
  763. } else {
  764. order.setSalesStatus(11);
  765. adminOrderService.updateOrderStatusByOrderId(order);
  766. remsg.setMessage(ResultInfo.SUCCESSINFO);
  767. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  768. remsg.setStatus(true);
  769. return remsg;
  770. }
  771. }
  772. } else {
  773. remsg.setMessage(ResultInfo.ERRORINFO);
  774. remsg.setResultCode(ResultInfo.ERRORCODE);
  775. remsg.setStatus(false);
  776. return remsg;
  777. }
  778. }
  779. return remsg;
  780. }
  781. /**
  782. * 确认收货
  783. * @param request
  784. * @param orderId
  785. * @param status
  786. * @return
  787. * @throws Exception
  788. */
  789. @ResponseBody
  790. @RequestMapping("/confirm_receipt")
  791. public ResultMsg confirmReceipt(HttpServletRequest request,
  792. @RequestParam(value = "orderId",defaultValue = "")String orderId,
  793. @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception {
  794. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  795. ResultMsg remsg=new ResultMsg();
  796. if (null != orderId && !"".equals(orderId)) {
  797. ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
  798. if (orderDto != null) {
  799. if (!openId.equals(orderDto.getSalesOpenid())) {
  800. remsg.setMessage("您没有权限,无法操作该订单!");
  801. remsg.setResultCode(ResultInfo.ERRORCODE);
  802. remsg.setStatus(false);
  803. return remsg;
  804. }
  805. if (Integer.parseInt(orderDto.getSalesStatus()) != 5) {
  806. remsg.setMessage("该订单不支持确认收货!");
  807. remsg.setResultCode(ResultInfo.ERRORCODE);
  808. remsg.setStatus(false);
  809. return remsg;
  810. }
  811. } else {
  812. remsg.setMessage("该订单无效,请重新确认!");
  813. remsg.setResultCode(ResultInfo.ERRORCODE);
  814. remsg.setStatus(false);
  815. return remsg;
  816. }
  817. Order order = new Order();
  818. order.setSalesStatus(12);
  819. order.setSalesOrderid(orderId);
  820. order.setOldStatus(status);
  821. //修改订单状态
  822. boolean flag = adminOrderService.updateOrderStatusByOrderId(order);
  823. if (flag) {
  824. remsg.setMessage("确认成功!");
  825. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  826. remsg.setStatus(true);
  827. } else {
  828. remsg.setMessage("确认失败,请重新操作!");
  829. remsg.setResultCode(ResultInfo.ERRORCODE);
  830. remsg.setStatus(false);
  831. }
  832. return remsg;
  833. } else {
  834. remsg.setMessage("订单号为空,请重新输入!");
  835. remsg.setResultCode(ResultInfo.ERRORCODE);
  836. remsg.setStatus(false);
  837. return remsg;
  838. }
  839. }
  840. /**
  841. * 提醒发货
  842. * @param request
  843. * @param orderId
  844. * @param status
  845. * @return
  846. * @throws Exception
  847. */
  848. @ResponseBody
  849. @RequestMapping("/warn_send")
  850. public ResultMsg warnSend(HttpServletRequest request,
  851. @RequestParam(value = "orderId",defaultValue = "")String orderId,
  852. @RequestParam(value = "status",defaultValue = "-1") Integer status) throws Exception {
  853. String openId = wechatUtils.getUserBySession(request).getUserOpenid();
  854. ResultMsg remsg = new ResultMsg();
  855. if (orderId == null || "".equals(orderId)) {
  856. remsg.setResultCode(ResultInfo.ERRORCODE);
  857. remsg.setStatus(false);
  858. return remsg;
  859. }
  860. ShopSalesOrderDto orderDto = this.cartService.getOpenIdAndStatus(orderId);
  861. if (orderDto != null) {
  862. if (!openId.equals(orderDto.getSalesOpenid())) {
  863. remsg.setMessage(ResultInfo.ERRORINFO);
  864. remsg.setResultCode(ResultInfo.ERRORCODE);
  865. remsg.setStatus(false);
  866. return remsg;
  867. }
  868. if (Integer.parseInt(orderDto.getSalesStatus()) != 2) {
  869. remsg.setMessage(ResultInfo.ERRORINFO);
  870. remsg.setResultCode(ResultInfo.ERRORCODE);
  871. remsg.setStatus(false);
  872. return remsg;
  873. }
  874. } else {
  875. remsg.setMessage(ResultInfo.ERRORINFO);
  876. remsg.setResultCode(ResultInfo.ERRORCODE);
  877. remsg.setStatus(false);
  878. return remsg;
  879. }
  880. Order order = new Order();
  881. order.setSalesOrderid(orderId);
  882. order.setOldStatus(status);
  883. int num = cartService.updateSendWarnNum(order);
  884. if (num > 0) {
  885. remsg.setMessage("提醒发货成功!");
  886. remsg.setResultCode(ResultInfo.SUCCESSCODE);
  887. remsg.setStatus(true);
  888. } else {
  889. remsg.setMessage("提醒发货失败!");
  890. remsg.setResultCode(ResultInfo.ERRORCODE);
  891. remsg.setStatus(false);
  892. }
  893. return remsg;
  894. }
  895. }