package com.ruoyi.other.service.impl; import java.time.LocalDateTime; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.ruoyi.account.api.feignClient.AppUserClient; import com.ruoyi.account.api.model.TAppUser; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.OrderCodeUtil; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.order.api.feignClient.OrderClient; import com.ruoyi.order.api.model.TVipOrder; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TVip; import com.ruoyi.other.api.feignClient.OtherClient; import com.ruoyi.other.api.feignClient.VipClient; import com.ruoyi.other.mapper.TCouponMapper; import com.ruoyi.other.mapper.TVipMapper; import com.ruoyi.other.service.TVipService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.payment.api.feignClient.AliPaymentClient; import com.ruoyi.payment.api.feignClient.IcbcPaymentClient; import com.ruoyi.payment.api.vo.AliPaymentReq; import com.ruoyi.payment.api.vo.AliPaymentResp; import com.ruoyi.payment.api.vo.IcbcPaymentReq; import com.ruoyi.payment.api.vo.IcbcPaymentResp; import org.apache.poi.util.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; /** *

* 服务实现类 *

* * @author 无关风月 * @since 2024-08-06 */ @Service public class TVipServiceImpl extends ServiceImpl implements TVipService { @Autowired private TCouponMapper tCouponMapper; @Resource private OrderClient orderClient; @Resource private AppUserClient appUserClient; @Resource private IcbcPaymentClient icbcPaymentClient; @Resource private AliPaymentClient aliPaymentClient; @Override public PageInfo pageList(Integer pageCurr,Integer pageSize) { PageInfo pageInfo = new PageInfo<>(pageCurr,pageSize); List list = this.baseMapper.pageList(pageInfo); for (TVip tVip : list) { String coupon = tVip.getCoupon(); if (StringUtils.hasLength(coupon)){ JSONArray jsonArray = JSONObject.parseArray(coupon); StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Integer id = jsonObject.getInteger("id"); Integer number = jsonObject.getInteger("number"); TCoupon tCoupon = tCouponMapper.selectById(id); if (tCoupon!=null){ stringBuilder.append(tCoupon.getName()).append("*").append(number).append(";"); } } tVip.setCouponName(stringBuilder.toString()); } } pageInfo.setRecords(list); return pageInfo; } @Resource private VipClient vipClient; @Override public Object vipInfoPay(TVip byId, BigDecimal payMoney, Integer payType,BigDecimal discountMoney,BigDecimal discount,Integer buyType, Long userId) { TAppUser user = appUserClient.getUserById(userId).getData(); //生成会员购买订单 TVipOrder shopOrder = new TVipOrder(); shopOrder.setCode(OrderCodeUtil.getOrderCode("HY")); shopOrder.setType(1); shopOrder.setAppUserId(userId); shopOrder.setType(1); shopOrder.setVipId(byId.getId()); shopOrder.setTitle(byId.getName()); if (buyType==1){ shopOrder.setTitle(byId.getName()+"月卡"); }else if (buyType==2){ shopOrder.setTitle(byId.getName()+"季卡"); }else { shopOrder.setTitle(byId.getName()+"年卡"); } shopOrder.setVipType(buyType); shopOrder.setOrderAmount(payMoney.add(discountMoney)); shopOrder.setDiscount(discount); shopOrder.setDiscountAmount(discountMoney); shopOrder.setPaymentAmount(payMoney); shopOrder.setPaymentStatus(1); shopOrder.setPaymentType(payType == 1 ? 3 : payType); shopOrder.setPayTime(LocalDateTime.now()); shopOrder.setDelFlag(false); R longR = orderClient.addVipOrder(shopOrder); if(200 != longR.getCode()){ return AjaxResult.error(longR.getMsg()); } if (payType==1){ IcbcPaymentReq paymentReq = new IcbcPaymentReq(); paymentReq.setOutTradeNo(shopOrder.getCode()); paymentReq.setAmount(shopOrder.getPaymentAmount()); paymentReq.setOpenId(user.getWxOpenid()); paymentReq.setPaymentType(1); paymentReq.setSubject("购买会员"); paymentReq.setBody(shopOrder.getTitle()); R paymentResult = icbcPaymentClient.payment(paymentReq); if (paymentResult == null || paymentResult.getCode() != 200 || paymentResult.getData() == null) { return AjaxResult.error(paymentResult == null ? "工行支付无响应" : paymentResult.getMsg()); } IcbcPaymentResp paymentResp = paymentResult.getData(); if (!"SUCCESS".equals(paymentResp.getStatus())) { return AjaxResult.error(paymentResp.getRawResponse()); } return AjaxResult.success(paymentResp); }else { AliPaymentReq req = new AliPaymentReq(); req.setOutTradeNo(shopOrder.getCode()); req.setTotalAmount(shopOrder.getPaymentAmount().toString()); req.setSubject("充电充值"); req.setBuyerOpenId(user.getAliOpenid()); req.setBody("充电充值"); req.setNotifyUrl("/payment/ali/callBack"); AliPaymentResp data = aliPaymentClient.payment(req).getData(); if(null != data){ return AjaxResult.success(data); } } return null; } }