| | |
| | | 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; |
| | |
| | | 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; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private MemberRidesMapper memberRidesMapper; |
| | | |
| | | @Autowired |
| | | private MemberMapper memberMapper; |
| | | @Autowired |
| | | private BaseParamMapper baseParamMapper; |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public HomeResponse getHome(String memberId){ |
| | | HomeResponse homeResponse = new HomeResponse(); |
| | | homeResponse.setParkName(systemDictDataBiz.queryByCode(Constants.MINI_PROGRAMME,Constants.PROJECT_NAME).getCode()); |
| | |
| | | .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; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | |
| | | |
| | | 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(); |
| | | } |
| | | } |
| | | // 对于通过多个代理的情况,第一个IP为客户端真实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; |
| | | } |
| | | |
| | | |
| | | } |