From 3ad4b75ed464d8bfb2c567803569cc27e68d804a Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期日, 08 十月 2023 15:03:57 +0800 Subject: [PATCH] 111 --- server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 153 insertions(+), 7 deletions(-) diff --git a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java index 65d33fa..888b31f 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/GoodsorderServiceImpl.java @@ -7,13 +7,16 @@ import com.doumee.core.constants.Constants; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.Constants; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; +import com.doumee.core.utils.DateUtil; +import com.doumee.core.utils.ID; import com.doumee.core.utils.Utils; -import com.doumee.dao.business.GoodsorderMapper; +import com.doumee.core.wx.WxMiniConfig; +import com.doumee.dao.business.*; import com.doumee.dao.business.MemberRidesMapper; -import com.doumee.dao.business.MemberRidesMapper; -import com.doumee.dao.business.RefundMapper; import com.doumee.dao.business.join.GoodsorderJoinMapper; import com.doumee.dao.business.model.Bikes; import com.doumee.dao.business.model.Goodsorder; @@ -23,18 +26,29 @@ import com.doumee.dao.business.join.MemberRidesJoinMapper; import com.doumee.dao.business.model.*; import com.doumee.dao.business.web.response.GoodsorderDetailDTO; +import com.doumee.dao.business.web.response.MemberRidesResponse; import com.doumee.dao.business.web.response.PayOrderDTO; import com.doumee.service.business.GoodsorderService; +import com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse; +import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; +import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest; +import com.github.binarywang.wxpay.exception.WxPayException; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.units.qual.A; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; +import java.net.InetAddress; +import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Objects; @@ -54,6 +68,11 @@ @Autowired private MemberRidesMapper memberRidesMapper; + + @Autowired + private MemberMapper memberMapper; + @Autowired + private BaseParamMapper baseParamMapper; @@ -160,6 +179,7 @@ + @Override public HomeResponse getHome(String memberId){ HomeResponse homeResponse = new HomeResponse(); homeResponse.setParkName(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PROJECT_NAME).getCode()); @@ -175,19 +195,32 @@ .eq("member_id",memberId) .eq("status",Constants.goodsorderStatus.pay)); homeResponse.setDepositStatus(status); + homeResponse.setRideStatus(-1); if(homeResponse.getDepositStatus()==Constants.goodsorderStatus.pay) { //鏌ヨ褰撳墠楠戣鐘舵�� MemberRides memberRides = memberRidesMapper.selectOne(new QueryWrapper<MemberRides>().eq("member_id", memberId) .orderByDesc(" create_date ") .last(" limit 1 ")); - if (Objects.isNull(memberRides)) { - + if (!Objects.isNull(memberRides)) { + homeResponse.setRideStatus(memberRides.getStatus()); + MemberRidesResponse memberRidesResponse = new MemberRidesResponse(); + BaseParam baseParam = baseParamMapper.selectById(memberRides.getParamId()); + if(!Objects.isNull(baseParam)){ + memberRidesResponse.setBikeType(baseParam.getName()); + } + memberRidesResponse.setRideStartTime(memberRides.getRentDate()); + memberRidesResponse.setRideEndTime(memberRides.getBackDate()); + memberRidesResponse.setRideTime(DateUtil.betweenMin(memberRidesResponse.getRideStartTime(),memberRidesResponse.getRideEndTime())); + memberRidesResponse.setBikeCode(memberRides.getBikeCode()); + memberRidesResponse.setBasePrice(memberRides.getBasePrice()); + memberRidesResponse.setBaseTime(memberRides.getBaseTime()); + memberRidesResponse.setUnitTime(memberRidesResponse.getUnitTime()); + memberRidesResponse.setUnitPrice(memberRidesResponse.getUnitPrice()); + homeResponse.setMemberRidesResponse(memberRidesResponse); } } return homeResponse; } - - @@ -237,4 +270,117 @@ return null; } + + + @Override + public Object createGoodsOrderPay(String memberId){ + Member member = memberMapper.selectById(memberId); + if(Objects.isNull(member)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鐢ㄦ埛瀵硅薄淇℃伅"); + } + Goodsorder qry = new Goodsorder(); + qry.setStatus(Constants.goodsorderStatus.pay); + qry.setMemberId(memberId); + qry.setIsdeleted(Constants.ZERO); + if(goodsorderMapper.selectCount(new QueryWrapper<>(qry))>Constants.ZERO){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"宸叉敮浠樿繃瀹氶噾锛屾棤娉曢噸澶嶈鎿嶄綔"); + } + Goodsorder goodsorder = new Goodsorder(); + goodsorder.setId(Constants.getUUID()); + goodsorder.setCreateDate(new Date()); + goodsorder.setIsdeleted(Constants.ZERO); + goodsorder.setMemberId(memberId); + goodsorder.setMoney(new BigDecimal(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.RENT_DEPOSIT).getCode())); + goodsorder.setStatus(Constants.goodsorderStatus.waitPay); + goodsorder.setPreOrderid(goodsorder.getId()); + goodsorder.setPayStatus(Constants.goodsorderPayStatus.waitPay); + goodsorder.setPayWay(Constants.ZERO); + this.goodsorderMapper.insert(goodsorder); + //璋冭捣鏀粯 + try { + Object response = null; + WxPayUnifiedOrderRequest request = new WxPayUnifiedOrderRequest(); + request.setBody("鏀粯鎶奸噾"); + request.setAttach("createGoodsOrder"); + request.setOutTradeNo(goodsorder.getId()); +// request.setTotalFee(BaseWxPayRequest.yuanToFen(goodsorder.getMoney().toString())); + request.setTotalFee(1); + request.setSpbillCreateIp(this.getIpAddr()); + request.setTimeStart(DateUtil.DateToString(new Date(), "yyyyMMddHHmmss")); + request.setOpenid(member.getOpenid()); + response = WxMiniConfig.wxPayService.createOrder(request); + return response; + } catch (WxPayException e) { + e.printStackTrace(); + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),e.getMessage()); + } + } + + @Override + public String payNotify(String preOrderId,String paymentNo){ + Goodsorder goodsorder = this.goodsorderMapper.selectById(preOrderId); + if(goodsorder.getStatus()==Constants.goodsorderStatus.pay){ + return WxPayNotifyResponse.success("澶勭悊鎴愬姛!"); + } + goodsorder.setOnlineOrderid(paymentNo); + goodsorder.setPayStatus(Constants.goodsorderPayStatus.pay); + goodsorder.setStatus(Constants.goodsorderStatus.pay); + goodsorder.setPayDate(new Date()); + goodsorder.setEditDate(new Date()); + goodsorderMapper.updateById(goodsorder); + return WxPayNotifyResponse.success("澶勭悊鎴愬姛!"); + } + + + + /** + * 寰楀埌request瀵硅薄 + * + * @return + */ + public HttpServletRequest getRequest() { + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + return request; + } + + public String getIpAddr() { + HttpServletRequest request = this.getRequest(); + String ipAddress = null; + try { + ipAddress = request.getHeader("x-forwarded-for"); + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (ipAddress.equals("127.0.0.1")) { + // 鏍规嵁缃戝崱鍙栨湰鏈洪厤缃殑IP + InetAddress inet = null; + try { + inet = InetAddress.getLocalHost(); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + ipAddress = inet.getHostAddress(); + } + } + // 瀵逛簬閫氳繃澶氫釜浠g悊鐨勬儏鍐碉紝绗竴涓狪P涓哄鎴风鐪熷疄IP,澶氫釜IP鎸夌収','鍒嗗壊 + if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length() + // = 15 + if (ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + } + } catch (Exception e) { + ipAddress = "47.111.178.164"; + } + // ipAddress = this.getRequest().getRemoteAddr(); + + return ipAddress; + } + + } -- Gitblit v1.9.3