liujie
21 小时以前 0f4459e4201fdc19185b7dd03215871f036acd70
ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/TVipServiceImpl.java
@@ -1,10 +1,37 @@
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.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>
@@ -17,4 +44,100 @@
@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());
        shopOrder.setDelFlag(false);
        R<Long> longR = orderClient.addVipOrder(shopOrder);
        if(200 != longR.getCode()){
            return AjaxResult.error(longR.getMsg());
        }
        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("充电充值");
            req.setNotifyUrl("/payment/ali/callBack");
            AliPaymentResp data = aliPaymentClient.payment(req).getData();
            if(null != data){
                return AjaxResult.success(data);
            }
        }
        return null;
    }
}