CartHandlers.java 31 KB

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