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.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.WxPaymentClient;
|
import com.ruoyi.payment.api.vo.AliPaymentReq;
|
import com.ruoyi.payment.api.vo.AliPaymentResp;
|
import com.ruoyi.payment.api.vo.PaymentOrder;
|
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;
|
|
/**
|
* <p>
|
* 服务实现类
|
* </p>
|
*
|
* @author 无关风月
|
* @since 2024-08-06
|
*/
|
@Service
|
public class TVipServiceImpl extends ServiceImpl<TVipMapper, TVip> implements TVipService {
|
|
@Autowired
|
private TCouponMapper tCouponMapper;
|
@Resource
|
private OrderClient orderClient;
|
@Resource
|
private AppUserClient appUserClient;
|
|
@Resource
|
private WxPaymentClient wxPaymentClient;
|
@Resource
|
private AliPaymentClient aliPaymentClient;
|
|
|
@Override
|
public PageInfo<TVip> pageList(Integer pageCurr,Integer pageSize) {
|
PageInfo<TVip> pageInfo = new PageInfo<>(pageCurr,pageSize);
|
List<TVip> 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);
|
shopOrder.setPayTime(LocalDateTime.now());
|
orderClient.addVipOrder(shopOrder).getData();
|
|
|
if (payType==1){
|
//调起支付
|
PaymentOrder paymentOrder = new PaymentOrder();
|
paymentOrder.setCode(shopOrder.getCode());
|
paymentOrder.setAmount(shopOrder.getPaymentAmount());
|
paymentOrder.setOpenId(user.getWxOpenid());
|
paymentOrder.setDescription("购买会员");
|
return AjaxResult.success(wxPaymentClient.orderPay(paymentOrder).getData());
|
}else {
|
AliPaymentReq req = new AliPaymentReq();
|
req.setOutTradeNo(shopOrder.getCode());
|
req.setTotalAmount(shopOrder.getPaymentAmount().toString());
|
req.setSubject("充电充值");
|
req.setBuyerOpenId(user.getAliOpenid());
|
req.setBody("充电充值");
|
AliPaymentResp data = aliPaymentClient.payment(req).getData();
|
if(null != data){
|
data.setNotifyUrl(data.getNotifyUrl() + "/payment/callBack/ali/all");
|
return AjaxResult.success(data);
|
}
|
}
|
|
return null;
|
}
|
}
|