CartHandlers.java 34 KB

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