admin
2021-04-14 759f8df85ddb840682f91bad31e874fa0b58c075
订单系统修改
13个文件已修改
1个文件已添加
391 ■■■■■ 已修改文件
src/main/java/com/yeshi/buwan/controller/api/VIPController.java 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/controller/api/VideoInfoController.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/dto/order/PPTVVideoPrice.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/dto/order/PayWayInfoDTO.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/pptv/PPTVApiUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/imp/juhe/PPTVServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/inter/juhe/PPTVService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/inter/order/OrderService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/service/manager/GoldCornManager.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/util/StringUtil.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/util/user/VipUtil.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/domain/vip/OrderRecord.hbm.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/test/java/com/hxh/spring/test/ConfigTest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/yeshi/buwan/controller/api/VIPController.java
@@ -3,9 +3,14 @@
import com.google.gson.*;
import com.yeshi.buwan.domain.user.LoginUser;
import com.yeshi.buwan.domain.vip.*;
import com.yeshi.buwan.dto.order.PPTVVideoPrice;
import com.yeshi.buwan.dto.order.PayWayInfoDTO;
import com.yeshi.buwan.exception.PPTVException;
import com.yeshi.buwan.exception.goldcorn.GoldCornException;
import com.yeshi.buwan.exception.order.OrderException;
import com.yeshi.buwan.exception.order.PayException;
import com.yeshi.buwan.exception.vip.VIPException;
import com.yeshi.buwan.pptv.entity.PPTVSeries;
import com.yeshi.buwan.pptv.entity.VideoPPTVMap;
import com.yeshi.buwan.service.inter.LoginUserService;
import com.yeshi.buwan.service.inter.juhe.PPTVService;
@@ -29,6 +34,8 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@@ -125,12 +132,12 @@
        }).create();
        JSONObject root = new JSONObject();
        List<OrderRecord> list = orderService.listOrderRecord(loginUid, OrderType.vip,null, page, Constant.pageCount);
        List<OrderRecord> list = orderService.listOrderRecord(loginUid, OrderType.vip, null, page, Constant.pageCount);
        for (OrderRecord record : list) {
            record.setIpInfo(null);
            record.setUpdateTime(null);
        }
        long count = orderService.countOrderRecord(loginUid,  OrderType.vip,null);
        long count = orderService.countOrderRecord(loginUid, OrderType.vip, null);
        root.put("list", gson.toJson(list));
        root.put("count", count);
        return JsonUtilV2.loadTrueJson(root.toString());
@@ -173,13 +180,21 @@
        String ip = IPUtil.getRemotIP(request);
        OrderRecord record = new OrderRecord();
        VIPPrice vipPrice = null;
        if (orderType == OrderType.video) {
            //视频
            VideoPPTVMap map = pptvService.selectVideoPPTVMapByInfoId(infoId);
            if (map == null) {
                return JsonUtilV2.loadFalseJson("影片不存在");
            }
            PPTVSeries pptvSeries = pptvService.selectSeriesByInfoId(infoId);
            if (pptvSeries == null) {
                return JsonUtilV2.loadFalseJson("影片不存在");
            }
            record.setRemarks(pptvSeries.getName());
        } else {
            vipPrice = vipPriceService.selectByPrimaryKey(priceId);
            if (vipPrice == null) {
@@ -187,15 +202,19 @@
            }
        }
        OrderRecord record = new OrderRecord();
        record.setUid(loginUid);
        if (vipPrice != null)
        if (vipPrice != null) {
            record.setType(vipPrice.getType());
            record.setMoney(vipPrice.getActualPrice());
        } else {
            PPTVVideoPrice price = new Gson().fromJson(systemConfigService.getConfigValueByKeyCache("videoPrice"), PPTVVideoPrice.class);
            record.setMoney(price.getActualPrice().subtract(new BigDecimal(goldCorn).divide(new BigDecimal(100), 2, RoundingMode.UP)));
        }
        record.setOrderType(orderType);
        record.setVideoInfoId(infoId);
        record.setGoldCorn(goldCorn);
        record.setMoney(vipPrice.getActualPrice());
        record.setPayWay(payWay);
        record.setState(OrderRecord.STATE_NOT_PAY);
        record.setIpInfo(IPUtil.getRemotIP(request) + ":" + IPUtil.getRemotePort(request));
@@ -207,49 +226,24 @@
        }
        PayWayInfoDTO payResult = null;
        try {
            orderService.payOrder(record);
            payResult = orderService.payOrder(record);
        } catch (OrderException e) {
            e.printStackTrace();
            return JsonUtilV2.loadFalseJson(e.getMessage());
        } catch (GoldCornException e) {
            e.printStackTrace();
            return JsonUtilV2.loadFalseJson(e.getMessage());
        } catch (PayException e) {
            e.printStackTrace();
            return JsonUtilV2.loadFalseJson(e.getMessage());
        } catch (VIPException e) {
            return JsonUtilV2.loadFalseJson(e.getMessage());
        } catch (PPTVException e) {
            return JsonUtilV2.loadFalseJson(e.getMessage());
        }
        String orderNo = VIPOrderUtil.getOutOrderNo(record.getOrderType(), record.getId());
        switch (payWay) {
            case OrderRecord
                    .PAY_WAY_ALIPAY: {
                //生成支付宝支付订单
                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", Constant.HOST + "/BuWan/alipay/printPayForm?formId=" + id);
                data.put("payWay", payWay);
                return JsonUtilV2.loadTrueJson(data.toString());
            }
            case OrderRecord
                    .PAY_WAY_WX: {
                //生成微信支付订单
                try {
                    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);
                    return JsonUtilV2.loadTrueJson(data.toString());
                } catch (Exception e) {
                    logger.error("生成微信支付订单出错", e);
                    return JsonUtilV2.loadFalseJson("生成微信支付订单出错");
                }
            }
        }
        return JsonUtilV2.loadFalseJson("请选择支付方式");
        return JsonUtilV2.loadTrueJson(new Gson().toJson(payResult));
    }
    /**
src/main/java/com/yeshi/buwan/controller/api/VideoInfoController.java
@@ -5,6 +5,7 @@
import com.yeshi.buwan.domain.VideoInfo;
import com.yeshi.buwan.domain.user.LoginUser;
import com.yeshi.buwan.domain.vip.*;
import com.yeshi.buwan.dto.order.PPTVVideoPrice;
import com.yeshi.buwan.exception.goldcorn.GoldCornException;
import com.yeshi.buwan.exception.order.OrderException;
import com.yeshi.buwan.exception.order.PayException;
@@ -37,9 +38,7 @@
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;
import java.util.*;
@Controller
@RequestMapping("api/v2/videoinfo")
@@ -62,6 +61,9 @@
    @Resource
    private GoldCornManager goldCornManager;
    @Resource
    private SystemConfigService systemConfigService;
    private String getDurationDesc(int duration) {
        int h = duration / (60 * 60);
@@ -94,11 +96,23 @@
            return JsonUtilV2.loadFalseJson("当前影片不能购买");
        }
        Set<String> typeSets = new HashSet<>();
        try {
            String[] sts = series.getProgramcategory().split(",");
            for (String st : sts) {
                typeSets.add(st.split("-")[0]);
            }
            typeSets.remove("好莱坞");
            typeSets.remove("院线");
        } catch (Exception e) {
        }
        PPTVSimpleVideoInfo videoInfo = new PPTVSimpleVideoInfo();
        videoInfo.setInfoId(series.getInfoID());
        videoInfo.setName(series.getName());
        videoInfo.setPicture(series.getCover());
        videoInfo.setCategory(series.getProgramcategory().replace("-电视剧", "").replace("-电影", "").replace("-动漫", "").replace("-少儿", ""));
        videoInfo.setCategory(com.yeshi.buwan.util.StringUtil.join(typeSets, " "));
        videoInfo.setActors(series.getActor());
        videoInfo.setDirectors(series.getDirector());
        if (series.getSeries() != null && series.getSeries().size() > 0 && !StringUtil.isNullOrEmpty(series.getSeries().get(0).getDuration()))
@@ -109,10 +123,12 @@
        JSONObject data = new JSONObject();
        data.put("video", gson.toJson(videoInfo));
        PPTVVideoPrice price = new Gson().fromJson(systemConfigService.getConfigValueByKeyCache("videoPrice"), PPTVVideoPrice.class);
        //加载价格信息
        JSONObject priceInfo=new JSONObject();
        priceInfo.put("discount","6折");
        priceInfo.put("actualPrice","3.9");
        JSONObject priceInfo = new JSONObject();
        priceInfo.put("discount", price.getTag());
        priceInfo.put("actualPrice",price.getActualPrice());
        data.put("price", priceInfo);
        if (!StringUtil.isNullOrEmpty(loginUid)) {
src/main/java/com/yeshi/buwan/dto/order/PPTVVideoPrice.java
New file
@@ -0,0 +1,45 @@
package com.yeshi.buwan.dto.order;
import java.math.BigDecimal;
/**
 * PPTV单片价格
 */
public class PPTVVideoPrice {
    //原价
    private BigDecimal price;
    //真实价格
    private BigDecimal actualPrice;
    //标签
    private String tag;
    public PPTVVideoPrice(BigDecimal price, BigDecimal actualPrice, String tag) {
        this.price = price;
        this.actualPrice = actualPrice;
        this.tag = tag;
    }
    public BigDecimal getPrice() {
        return price;
    }
    public void setPrice(BigDecimal price) {
        this.price = price;
    }
    public BigDecimal getActualPrice() {
        return actualPrice;
    }
    public void setActualPrice(BigDecimal actualPrice) {
        this.actualPrice = actualPrice;
    }
    public String getTag() {
        return tag;
    }
    public void setTag(String tag) {
        this.tag = tag;
    }
}
src/main/java/com/yeshi/buwan/dto/order/PayWayInfoDTO.java
@@ -1,6 +1,7 @@
package com.yeshi.buwan.dto.order;
public class PayWayInfoDTO {
    //0-表示支付成功
    private int payWay;
    private String payUrl;
src/main/java/com/yeshi/buwan/pptv/PPTVApiUtil.java
@@ -254,6 +254,9 @@
     * @return
     */
    public static boolean buyGoods(String openId, String orderNo, String goodsNo, Date orderTime) {
        if (1 > 0) {
            return false;
        }
        Map<String, String> params = new HashMap<>();
        params.put("openId", openId);
        params.put("canal", CHANNEL_ID);
src/main/java/com/yeshi/buwan/service/imp/juhe/PPTVServiceImpl.java
@@ -290,6 +290,11 @@
        return pptvSeriesDao.findOne(query);
    }
    @Override
    public PPTVSeries selectSeriesByInfoId(String infoId) {
        return pptvSeriesDao.get(infoId);
    }
    /**
     * 删除剧集
     *
src/main/java/com/yeshi/buwan/service/imp/order/OrderServiceImpl.java
@@ -62,7 +62,7 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public OrderRecord createOrder(OrderRecord record) throws OrderException {
        if (record.getMoney() == null || record.getType() == null || record.getOrderType() == null || record.getUid() == null) {
        if (record.getMoney() == null || (record.getType() == null && record.getVideoInfoId() == null) || record.getOrderType() == null || record.getUid() == null) {
            throw new OrderException(1, "参数不完整");
        }
@@ -73,6 +73,25 @@
        if (record.getCreateTime() == null) {
            record.setCreateTime(new Date());
        }
        if (record.getPayWay() == OrderRecord.PAY_WAY_WX) {
            if (record.getGoldCorn() != null && record.getGoldCorn() > 0) {
                if (record.getMoney().compareTo(new BigDecimal("0")) == 0) {
                    record.setPayWay(OrderRecord.PAY_WAY_GOLDCORN);
                } else {
                    record.setPayWay(OrderRecord.PAY_WAY_WX_GOLDCORN);
                }
            }
        } else if (record.getPayWay() == OrderRecord.PAY_WAY_ALIPAY) {
            if (record.getGoldCorn() != null && record.getGoldCorn() > 0) {
                if (record.getMoney().compareTo(new BigDecimal("0")) == 0) {
                    record.setPayWay(OrderRecord.PAY_WAY_GOLDCORN);
                } else {
                    record.setPayWay(OrderRecord.PAY_WAY_ALIPAY_GOLDCORN);
                }
            }
        }
        record.setMoneyPay(false);
        record.setGoldCornPay(false);
@@ -85,8 +104,7 @@
    @Transactional(rollbackFor = Exception.class)
//    @GlobalTransactional(timeoutMills = 30000, name = "buwan-order", rollbackFor = Exception.class)
    @Override
    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException {
        //TODO 影视豆支付
    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException, VIPException, PPTVException {
        String orderNo = VIPOrderUtil.getOutOrderNo(record.getOrderType(), record.getId());
        switch (record.getPayWay()) {
            case OrderRecord
@@ -97,12 +115,16 @@
                } catch (Exception e) {
                    throw new GoldCornException(1, "影视豆扣除出错");
                }
                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
                orderLogger.info("订单影视豆支付成功:id-{}", record.getId());
            case OrderRecord
                    .PAY_WAY_ALIPAY: {
                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
                }
                //生成支付宝支付订单
                String form = VipUtil.getVipChargeAlipayForm(record.getId(), orderNo, record.getMoney());
                String form = VipUtil.getVipChargeAlipayForm(record.getId(), record.getOrderType(), orderNo, record.getMoney());
                //暂存2分钟
                String id = StringUtil.Md5(UUID.randomUUID().toString() + "#" + System.currentTimeMillis());
                redisManager.cacheCommonString(id, form, 120);
@@ -115,12 +137,17 @@
                    .PAY_WAY_WX_GOLDCORN:
                try {
                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
                } catch (Exception e) {
                    throw new GoldCornException(1, "影视豆扣除出错");
                }
                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
                orderLogger.info("订单影视豆支付成功:id-{} 类型-{}", record.getId(), record.getOrderType().name());
            case OrderRecord
                    .PAY_WAY_WX: {
                if (record.getMoney() != null && record.getMoney().compareTo(new BigDecimal(0)) == 0) {
                    return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
                }
                //生成微信支付订单
                try {
                    String title = "";
@@ -141,12 +168,13 @@
            case OrderRecord.PAY_WAY_GOLDCORN: {
                try {
                    goldCornManager.consumeGoldCorn(record, record.getGoldCorn());
                    orderLogger.info("订单影视豆支付成功:id-{}", record.getId());
                } catch (Exception e) {
                    throw new GoldCornException(1, "影视豆扣除出错");
                }
                orderLogger.info("订单影视豆支付成功:id-{}", record.getId());
                paySuccess(record.getId(), OrderRecord.PAY_WAY_GOLDCORN, null, new Date());
                return new PayWayInfoDTO(0, VipUtil.getPaySuccessUrl(record.getId()));
            }
            break;
        }
        throw new OrderException(1, "支付方式不存在");
    }
@@ -186,69 +214,67 @@
        //修改记录
        Query query = session.createSQLQuery("select * from wk_vip_order_record r where r.id=? for update").addEntity(OrderRecord.class).setCacheable(false).setParameter(0, id);
        List<OrderRecord> list = query.list();
        if (list != null && list.size() > 0) {
            OrderRecord record = list.get(0);
            if (record.getState() != OrderRecord.STATE_NOT_PAY)
                throw new VIPException(1, "订单未处于待支付状态");
            if (record.getPayWay() != OrderRecord.PAY_WAY_GOLDCORN) {
                record.setPayMoney(payMoney);
                record.setMoneyPay(true);
            } else {
                record.setGoldCornPay(true);
            }
            record.setPayTime(payTime);
            record.setUpdateTime(new Date());
            record.setState(getPayState(record));
            //已经支付成功
            if (record.getState() == OrderRecord.STATE_PAY) {
                session.createSQLQuery("insert into wk_vip_order_pay_success(id,create_time) value(?,now())").setParameter(0, id).executeUpdate();
            }
            if (record.getOrderType() == OrderType.vip) {
                Date[] expireDate = addExpireTime(session, record.getUid(), payTime, record.getType());
                record.setVipStartTime(expireDate[0]);
                record.setVipEndTime(expireDate[1]);
                if (expireDate == null) {
                    throw new VIPException(2, "添加用户会员时间出错");
                }
                session.update(record);
                if (record.getState() == OrderRecord.STATE_PAY) {
                    orderLogger.info("订单全部支付成功:id-{}", id);
                    //购买VIP
                    pptvVipManager.buyVIP(record);
                    orderLogger.info("购买VIP成功:id-{}", id);
                } else {
                    orderLogger.info("订单部分支付成功:id-{}", id);
                }
            } else if (record.getOrderType() == OrderType.video) {
                record.setVipStartTime(payTime);
                //7天之内有效
                record.setVipEndTime(new Date(payTime.getTime() + 1000 * 60 * 60L * 24 * 7));
                session.update(record);
                //单片购买成功(7天有效期)
                if (record.getState() == OrderRecord.STATE_PAY) {
                    orderLogger.info("订单全部支付成功:id-{}", id);
                    //购买单片
                    pptvVipManager.buyVideo(record);
                    orderLogger.info("购买单片成功:id-{}", id);
                } else {
                    orderLogger.info("订单部分支付成功:id-{}", id);
                }
            }
            return record;
        } else {
        if (list == null || list.size() == 0)
            throw new VIPException(10, "订单不存在");
        OrderRecord record = list.get(0);
        if (record.getState() != OrderRecord.STATE_NOT_PAY)
            throw new VIPException(1, "订单未处于待支付状态");
        if (payWay != OrderRecord.PAY_WAY_GOLDCORN) {
            record.setPayMoney(payMoney);
            record.setMoneyPay(true);
        } else {
            record.setGoldCornPay(true);
        }
        record.setPayTime(payTime);
        record.setUpdateTime(new Date());
        record.setState(getPayState(record));
        //已经支付成功
        if (record.getState() == OrderRecord.STATE_PAY) {
            session.createSQLQuery("insert into wk_vip_order_pay_success(id,create_time) value(?,now())").setParameter(0, id).executeUpdate();
        }
        if (record.getOrderType() == OrderType.vip) {
            Date[] expireDate = addExpireTime(session, record.getUid(), payTime, record.getType());
            record.setVipStartTime(expireDate[0]);
            record.setVipEndTime(expireDate[1]);
            if (expireDate == null) {
                throw new VIPException(2, "添加用户会员时间出错");
            }
            session.update(record);
            if (record.getState() == OrderRecord.STATE_PAY) {
                orderLogger.info("订单全部支付成功:id-{}", id);
                //购买VIP
                pptvVipManager.buyVIP(record);
                orderLogger.info("购买VIP成功:id-{}", id);
            } else {
                orderLogger.info("订单部分支付成功:id-{}", id);
            }
        } else if (record.getOrderType() == OrderType.video) {
            record.setVipStartTime(payTime);
            //7天之内有效
            record.setVipEndTime(new Date(payTime.getTime() + 1000 * 60 * 60L * 24 * 7));
            session.update(record);
            //单片购买成功(7天有效期)
            if (record.getState() == OrderRecord.STATE_PAY) {
                orderLogger.info("订单全部支付成功:id-{}", id);
                //购买单片
                pptvVipManager.buyVideo(record);
                orderLogger.info("购买单片成功:id-{}", id);
            } else {
                orderLogger.info("订单部分支付成功:id-{}", id);
            }
        }
        return record;
    }
src/main/java/com/yeshi/buwan/service/inter/juhe/PPTVService.java
@@ -88,4 +88,7 @@
    public PPTVSeries selectSeriesBySeriesCode(String cid);
    public PPTVSeries selectSeriesByInfoId(String infoId);
}
src/main/java/com/yeshi/buwan/service/inter/order/OrderService.java
@@ -60,7 +60,7 @@
     *
     * @param record
     */
    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException;
    public PayWayInfoDTO payOrder(OrderRecord record) throws OrderException, GoldCornException, PayException, VIPException, PPTVException;
    /**
src/main/java/com/yeshi/buwan/service/manager/GoldCornManager.java
@@ -28,6 +28,10 @@
    @Reference(version = "1.0", check = false)
    private GoldCornBalanceService goldCornBalanceService;
    public void init(String uid) throws Exception {
        goldCornBalanceService.init(getAppCode(), getUid(uid));
    }
    /**
     * 获取金币系统的用户ID
@@ -55,7 +59,10 @@
    public long getBalance(String uid) {
        try {
            Long count = goldCornBalanceService.getBalance(getAppCode(), getUid(uid));
            return count==null?0:count;
            if (count == null) {
                init(uid);
            }
            return count == null ? 0 : count;
        } catch (Exception e) {
            e.printStackTrace();
        }
src/main/java/com/yeshi/buwan/util/StringUtil.java
@@ -9,7 +9,9 @@
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.DateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -55,6 +57,18 @@
        String st = "";
        for (int i = 0; i < srcList.size(); i++) {
            st += srcList.get(i) + seperate;
        }
        if (st.endsWith(seperate)) {
            st = st.substring(0, st.length() - seperate.length());
        }
        return st;
    }
    public static String join(Collection srcList, String seperate) {
        String st = "";
        for (Iterator<String> its = srcList.iterator(); its.hasNext(); ) {
            st += its.next() + seperate;
        }
        if (st.endsWith(seperate)) {
            st = st.substring(0, st.length() - seperate.length());
@@ -174,15 +188,15 @@
        } else {
            Gson gson = new GsonBuilder().enableComplexMapKeySerialization().excludeFieldsWithoutExposeAnnotation()
                    .setDateFormat(DateFormat.LONG).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
                @Override
                public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
                    if (value == null) {
                        return new JsonPrimitive("0");
                    } else {
                        return new JsonPrimitive(value.getTime());
                    }
                }
            }).setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)// 会把字段首字母大写
                        @Override
                        public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
                            if (value == null) {
                                return new JsonPrimitive("0");
                            } else {
                                return new JsonPrimitive(value.getTime());
                            }
                        }
                    }).setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)// 会把字段首字母大写
                    .setPrettyPrinting().setVersion(1.0).create();
            String st = gson.toJson(o);
            return Utils.JsonFilter(st);
src/main/java/com/yeshi/buwan/util/user/VipUtil.java
@@ -1,6 +1,7 @@
package com.yeshi.buwan.util.user;
import com.alipay.api.AlipayApiException;
import com.yeshi.buwan.domain.vip.OrderType;
import com.yeshi.buwan.util.Constant;
import org.apache.commons.io.IOUtils;
import org.yeshi.utils.alipay.AlipayH5PayUtil;
@@ -73,11 +74,14 @@
     * @param money
     * @return
     */
    public static String getVipChargeAlipayForm(String id, String orderNo, BigDecimal money) {
    public static String getVipChargeAlipayForm(String id, OrderType orderType, String orderNo, BigDecimal money) {
        try {
            String goodsTitle = "影视大全会员充值";
            String returnUrl = "http://vip.ysdq.yeshitv.com/pay_success.html?id=" + id;
            String notifyUrl = Constant.HOST+ "/BuWan/alipay/pay";
            if (orderType == OrderType.video) {
                goodsTitle = "影视大全单片购买";
            }
            String returnUrl = getPaySuccessUrl(id);
            String notifyUrl = Constant.HOST + "/BuWan/alipay/pay";
            AlipayAppInfo appInfo = getAlipayApp();
            String form = AlipayH5PayUtil.createOrderForm(appInfo, orderNo, money, goodsTitle, returnUrl, notifyUrl);
            return form;
@@ -85,6 +89,11 @@
            e.printStackTrace();
        }
        return null;
    }
    public static String getPaySuccessUrl(String id) {
        return "http://vip.ysdq.yeshitv.com/pay_success.html?id=" + id;
    }
@@ -102,7 +111,7 @@
        WXPlaceOrderParams params = new WXPlaceOrderParams();
        params.setIp(ip);
        params.setOrderNo(orderNo);
        params.setNotifyUrl( Constant.HOST+ "/BuWan/wx/pay/vip");
        params.setNotifyUrl(Constant.HOST + "/BuWan/wx/pay/vip");
        params.setFee(money);
        params.setBody(title);
        params.setApp(getWXAPP());
src/main/resources/domain/vip/OrderRecord.hbm.xml
@@ -42,6 +42,7 @@
        <property name="videoInfoId" column="video_info_id" type="string"></property>
        <property name="moneyPay" column="money_pay" type="boolean"></property>
        <property name="goldCornPay" column="gold_corn_pay" type="boolean"></property>
        <property name="remarks" column="remarks" type="string"></property>
    </class>
src/test/java/com/hxh/spring/test/ConfigTest.java
@@ -9,6 +9,7 @@
import com.yeshi.buwan.domain.jump.JumpTypeEnum;
import com.yeshi.buwan.domain.system.DetailSystemConfig;
import com.yeshi.buwan.domain.system.SystemConfig;
import com.yeshi.buwan.dto.order.PPTVVideoPrice;
import com.yeshi.buwan.job.AdJob;
import com.yeshi.buwan.service.imp.DetailSystemConfigService;
import com.yeshi.buwan.service.inter.system.SystemConfigService;
@@ -63,10 +64,10 @@
        systemConfig = new SystemConfig();
        systemConfig.setBeizhu("");
        systemConfig.setKey("thirdUidPrefix");
        systemConfig.setName("第三方用户ID的前缀");
        systemConfig.setKey("videoPrice");
        systemConfig.setName("单片价格");
        try {
            systemConfig.setValue("buwan-");
            systemConfig.setValue(new Gson().toJson(new PPTVVideoPrice(new BigDecimal("5"), new BigDecimal(3), "6折")));
        } catch (Exception e) {
            e.printStackTrace();
        }