CartHandlers.java 31 KB

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