Java开通会员功能 |
您所在的位置:网站首页 › 会员的功能 › Java开通会员功能 |
近期负责的项目中有关于开通会员的功能。简单描述一下开通会员的流程: 调用第三方支付接口购买VIP成功后,修改订单相关信息,再远程调用订单信息表,根据已支付的订单,修改用户表中的会员的状态,和会员到期时间。 会员充值的工具类: public class MemberTimeDate { /** * @param beginDate 会员开始的时间 * @param time 用户充值的月数 * @return map */ public static synchronized HashMap 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 map = new HashMap(); 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 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |