CartHandlers.java 33 KB

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