Java开通会员功能

近期负责的项目中有关于开通会员的功能。简单描述一下开通会员的流程:

调用第三方支付接口购买VIP成功后,修改订单相关信息,再远程调用订单信息表,根据已支付的订单,修改用户表中的会员的状态,和会员到期时间。

会员充值的工具类:

public class MemberTimeDate {

    /**
     * @param beginDate  会员开始的时间
     * @param time   用户充值的月数
     * @return map
     */
    public static synchronized HashMap<String,Object> getVipTime2(Date beginDate, int time){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(beginDate);
        calendar.add(Calendar.MONTH, time);//time,是用户充值的月数
        Date date = calendar.getTime();
        String startDate=sdf.format(beginDate);
        String endDate=sdf.format(date);
        System.out.println("startDate: "+startDate+"   ,"+"购买的会员月份为: "+time+"   ,"+"endDate: "+endDate);
        HashMap<String, Object> map = new  HashMap<String,Object>();
        map.put("startTime", beginDate);
        map.put("endTime", date);
        return map;
    }

    /**
     * @param beginDate  会员开始的时间
     * @param time   用户充值的月数
     * @return date
     */
    public static synchronized Date getVipTime(Date beginDate, int time){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(beginDate);
        calendar.add(Calendar.MONTH, time);//time,是用户充值的月数
        Date date = calendar.getTime();
        String startDate=sdf.format(beginDate);
        String endDate=sdf.format(date);
        System.out.println("startDate: "+startDate+"   ,"+"购买的会员月份为: "+time+"   ,"+"endDate: "+endDate);
        return date;
    }
}

在购买VIP成功后,要判断该用户当前是否为会员:

1、如果用户之前没有充值过会员,就根据现在的系统时间,往后加相应的时长。

2、如果会员已过期,就根据现在的系统时间,往后加相应的时长。

3、如果用户已经是会员,需要获取之前的截止日期,再加上对应的月数作为最终的截止日期。

部分逻辑处理:

            //获取订单中开通会员的时间
            Integer time = isBuyMemberOrder.getPackageTime();

            UserAll userAll = baseMapper.selectById(userId);
            Date memberOutTime = userAll.getMemberOutTime();

            Date date = new Date();
            //开通会员
            if (memberOutTime == null){
                Date vipTime = MemberTimeDate.getVipTime(date, time);
                userAll.setMemberOutTime(vipTime);
            }
            //如果当前时间比会员时间晚,会员过期
            else if (date.after(memberOutTime)){
                Date vipTime = MemberTimeDate.getVipTime(date, time);
                userAll.setMemberOutTime(vipTime);
            }
            //在原会员时间基础上添加
            else if (!date.after(memberOutTime)){
                Date vipTime = MemberTimeDate.getVipTime(memberOutTime, time);
                userAll.setMemberOutTime(vipTime);
            }
            //修改会员状态
            int update = baseMapper.updateById(userAll);

功能设计的很简单,中间或许也存在着不足。希望可以得到大家的指导和建议。

参考原创博客:

https://blog.csdn.net/duan196_118/article/details/106870774

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值