CartHandlers.java 31 KB

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