admin
2021-04-08 d7a3014c38dbb1061cba70e7dbb49d58831e6399
src/main/java/com/yeshi/buwan/controller/api/VIPController.java
@@ -1,6 +1,7 @@
package com.yeshi.buwan.controller.api;
import com.google.gson.*;
import com.yeshi.buwan.domain.system.SystemConfig;
import com.yeshi.buwan.domain.user.LoginUser;
import com.yeshi.buwan.domain.vip.UserVIPInfo;
import com.yeshi.buwan.domain.vip.VIPOrderRecord;
@@ -8,6 +9,7 @@
import com.yeshi.buwan.domain.vip.VIPPriceType;
import com.yeshi.buwan.exception.vip.VIPException;
import com.yeshi.buwan.service.inter.LoginUserService;
import com.yeshi.buwan.service.inter.system.SystemConfigService;
import com.yeshi.buwan.service.inter.vip.VIPPriceService;
import com.yeshi.buwan.service.inter.vip.VIPService;
import com.yeshi.buwan.util.*;
@@ -21,10 +23,12 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.yeshi.utils.annotation.RequestSerializableByKey;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Type;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@@ -45,6 +49,9 @@
    @Resource
    private VIPPriceService vipPriceService;
    @Resource
    private SystemConfigService systemConfigService;
    @RequestMapping("getVIPPriceList")
@@ -71,6 +78,11 @@
            userInfoVO.setId(user.getId());
            userInfoVO.setNickName(user.getName());
            userInfoVO.setPortrait(user.getPortrait());
            if (StringUtil.isNullOrEmpty(userInfoVO.getPortrait())) {
                String portrait = systemConfigService.getConfigValueByKeyCache("default_portrait");
                userInfoVO.setPortrait(portrait);
            }
            if (vipInfo != null && vipInfo.getExpireDate() != null)
                userInfoVO.setVipExpireTime(vipInfo.getExpireDate().getTime());
            root.put("user", new Gson().toJson(userInfoVO));
@@ -78,6 +90,42 @@
        List<VIPPrice> vipPriceList = vipPriceService.listValidPrice();
        root.put("list", gson.toJson(vipPriceList));
        return JsonUtilV2.loadTrueJson(root.toString());
    }
    @RequestMapping("getVIPOrderList")
    @ResponseBody
    public String getVIPOrderList(AcceptData acceptData, String loginUid, int page) {
        Gson gson = new GsonBuilder().registerTypeAdapter(VIPPriceType.class, new JsonSerializer<VIPPriceType>() {
            @Override
            public JsonElement serialize(VIPPriceType value, Type theType, JsonSerializationContext context) {
                if (value == null) {
                    return new JsonPrimitive("");
                } else {
                    return new JsonPrimitive(value.getName());
                }
            }
        }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
            @Override
            public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
                if (value == null) {
                    return new JsonPrimitive("");
                } else {
                    return new JsonPrimitive(TimeUtil.getGernalTime(value.getTime(), "yyyy.MM.dd HH:mm"));
                }
            }
        }).create();
        JSONObject root = new JSONObject();
        List<VIPOrderRecord> list = vipService.listOrderRecord(loginUid, null, page, Constant.pageCount);
        for (VIPOrderRecord record : list) {
            record.setIpInfo(null);
            record.setUpdateTime(null);
        }
        long count = vipService.countOrderRecord(loginUid, null);
        root.put("list", gson.toJson(list));
        root.put("count", count);
        return JsonUtilV2.loadTrueJson(root.toString());
    }
@@ -102,7 +150,7 @@
        }
        if (StringUtil.isNullOrEmpty(user.getPhone())) {
            return JsonUtilV2.loadFalseJson(10001,"请绑定电话号码");
            return JsonUtilV2.loadFalseJson(10001, "请绑定电话号码");
        }
@@ -115,8 +163,10 @@
        VIPOrderRecord record = new VIPOrderRecord();
        record.setUid(loginUid);
        record.setType(vipPrice.getType());
        record.setMoney(vipPrice.getPrice());
        record.setMoney(vipPrice.getActualPrice());
        record.setPayWay(payWay);
        record.setState(VIPOrderRecord.STATE_NOT_PAY);
        record.setIpInfo(IPUtil.getRemotIP(request) + ":" + IPUtil.getRemotePort(request));
        try {
            vipService.addVIPRecord(record);
        } catch (VIPException e) {
@@ -129,12 +179,12 @@
            case VIPOrderRecord
                    .PAY_WAY_ALIPAY: {
                //生成支付宝支付订单
                String form = VipUtil.getVipChargeAlipayForm(orderNo, record.getMoney());
                String form = VipUtil.getVipChargeAlipayForm(record.getId(), orderNo, record.getMoney());
                //暂存2分钟
                String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis());
                redisManager.cacheCommonString(id, form, 120);
                org.json.JSONObject data = new org.json.JSONObject();
                data.put("payUrl", "http://api.ysdq.yeshitv.com:8089/BuWan/alipay/printPayForm?formId=" + id);
                data.put("payUrl", Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id);
                data.put("payWay", payWay);
                return JsonUtilV2.loadTrueJson(data.toString());
            }
@@ -144,7 +194,7 @@
                    .PAY_WAY_WX: {
                //生成微信支付订单
                try {
                    String payUrl = VipUtil.createWXOrder(ip, orderNo, vipPrice.getPrice(), "影视大全VIP-" + vipPrice.getType().getName());
                    String payUrl = VipUtil.createWXOrder(record.getId(), ip, orderNo, vipPrice.getActualPrice(), "影视大全VIP-" + vipPrice.getType().getName());
                    org.json.JSONObject data = new org.json.JSONObject();
                    data.put("payUrl", payUrl);
                    data.put("payWay", payWay);
@@ -159,5 +209,34 @@
        return JsonUtilV2.loadFalseJson("请选择支付方式");
    }
    /**
     * 检查是否支付
     *
     * @param acceptData
     * @param loginUid
     * @param id
     * @return
     */
    @RequestMapping("checkPay")
    @ResponseBody
    @RequestSerializableByKey(key = "'vip-checkPay-'+#id")
    public String checkPay(AcceptData acceptData, String loginUid, String id) {
        VIPOrderRecord record = vipService.getOrderRecord(id);
        if (record == null || !record.getUid().equalsIgnoreCase(loginUid)) {
            return JsonUtilV2.loadFalseJson("记录不存在/不是您的订单");
        }
        record = vipService.checkOrderPayState(id);
        //未支付
        if (record != null && record.getState() != VIPOrderRecord.STATE_PAY) {
            return JsonUtilV2.loadFalseJson(1, "支付未完成");
        }
        JSONObject data = new JSONObject();
        data.put("money", record.getPayMoney() == null ? record.getMoney() : record.getPayMoney());
        return JsonUtilV2.loadTrueJson(data.toString());
    }
}