yujian
2019-12-13 4ecde6bc2804a8cb286948b461cb9bdecd663554
邀请统计
17个文件已修改
1个文件已添加
374 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/redpack/RedPackWinInviteMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSale.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/mapping/redpack/RedPackWinInviteMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackWinInviteService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleSerivce.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/Constant.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/vo/redpack/RedPackWinProgressVO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/admin/OrderAdminController.java
@@ -216,7 +216,7 @@
            // 查询是否维权
            for (CommonOrderVO order : list) {
                if (order.getUserInfo() == null || order.getUserInfo().getId() == null)
                if (order.getUserId() == null)
                    continue;
                
                // 查询是否维权
@@ -226,7 +226,7 @@
                    order.setWeiQuanState(weiQuanOrder.getState());
                    order.setState(CommonOrder.STATE_WQ);
                    TaoBaoWeiQuanDrawBack drawBack = taoBaoWeiQuanDrawBackService.selectByOrderItemIdAndUid(weiQuanOrder.getOrderItemId(),
                            order.getUserInfo().getId());
                            Long.parseLong(order.getUserId()));
                    if (drawBack != null) {// 已经退款
                        // 计算退款资金
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java
@@ -26,8 +26,8 @@
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum;
import com.yeshi.fanli.entity.redpack.RedPackExchange;
import com.yeshi.fanli.entity.redpack.RedPackWinInvite;
@@ -46,12 +46,14 @@
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.UserInviteUtil;
import com.yeshi.fanli.vo.redpack.RedPackDetailVO;
import com.yeshi.fanli.vo.redpack.RedPackWinInviteVO;
import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO;
import net.sf.json.JSONObject;
@@ -94,7 +96,11 @@
    @Resource
    private RedPackForbidService redPackForbidService;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    /**
     * 统计
     * 
@@ -409,4 +415,76 @@
        }
    }
    /**
     *  该用户邀请进度
     *
     * @param acceptData
     * @param uid  下线UID
     * @param out
     */
    @RequestMapping(value = "getInviteProgress")
    public void getInviteProgress(AcceptData acceptData, Long uid, String callback, PrintWriter out) {
        if (uid == null || uid <= 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "传递参数缺失"));
            return;
        }
        JSONObject data = new JSONObject();
        data.put("list", redPackWinInviteService.getInviteProgressByWorkerId(uid));
        data.put("num", threeSaleSerivce.getTeamOrderNumByWorkerId(uid));
        if (!StringUtil.isNullOrEmpty(callback)) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
        } else {
            out.print(JsonUtil.loadTrueResult(data));
        }
    }
    /**
     *  该用户邀请奖金榜
     *
     * @param acceptData
     * @param uid  下线UID
     * @param out
     */
    @RequestMapping(value = "getInviteReward")
    public void getInviteReward(AcceptData acceptData,Integer page, Long uid, String callback, PrintWriter out) {
        if (uid == null || uid <= 0) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
            return;
        }
        if (page == null || page < 1)
            page = 1;
        List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>();
        List<RedPackWinInvite> list = redPackWinInviteService.getWinTopListByBossId(page, Constant.PAGE_SIZE, uid);
        if (list != null) {
            for (RedPackWinInvite win: list) {
                ThreeSale threeSale = threeSaleSerivce.getNearRelationByBossIdAndWorkerId(uid, win.getTeamUid());
                if (threeSale == null)
                    continue;
                UserInfo userInfo = userInfoService.selectByPKey(win.getTeamUid());
                if (userInfo == null)
                    continue;
                RedPackWinProgressVO progressVO = new RedPackWinProgressVO();
                progressVO.setName(userInfo.getNickName());
                progressVO.setPortrait(userInfo.getPortrait());
                progressVO.setMoney(win.getMoney().setScale(2).toString());
                progressVO.setTime("邀请:" + TimeUtil.formatDate(threeSale.getSucceedTime()));
                listVO.add(progressVO);
            }
        }
        JSONObject data = new JSONObject();
        data.put("list", listVO);
        data.put("count", redPackWinInviteService.countWinTopListByBossId(uid));
        if (!StringUtil.isNullOrEmpty(callback)) {
            out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data)));
        } else {
            out.print(JsonUtil.loadTrueResult(data));
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/ThreeSaleMapper.java
@@ -223,6 +223,17 @@
     */
    ThreeSale getRelationshipByBossIdAndWorkerId(@Param("bossId") Long bossId, @Param("workerId") Long workerId);
    
    /**
     * 最后一次关系记录 -无论
     * @param bossId
     * @param workerId
     * @return
     */
    ThreeSale getNearRelationByBossIdAndWorkerId(@Param("bossId") Long bossId, @Param("workerId") Long workerId);
    /**
     * 根据下级查询成功的邀请关系
     * @param workerId
@@ -272,4 +283,10 @@
     */
    void inviteSeparate(@Param("workerId") Long workerId, @Param("bossId")Long bossId);
    
    /**
     * 队员在该boss 下第几个队员序号
     * @param workerId
     * @return
     */
    long getTeamOrderNumByWorkerId(@Param("workerId") Long workerId);
}
fanli/src/main/java/com/yeshi/fanli/dao/mybatis/redpack/RedPackWinInviteMapper.java
@@ -63,4 +63,23 @@
     */
    BigDecimal getRewardMoney(@Param("uid")Long uid); 
    
    /**
     *  获取奖励记录
     * @param uid
     * @param type
     * @return
     */
    List<RedPackWinInvite> getWinListByBossIdAndTeamUid(@Param("uid")Long uid, @Param("teamUid")Long teamUid);
    /**
     * 邀请奖金排行榜 队员
     * @param uid
     * @return
     */
    List<RedPackWinInvite> getWinTopListByBossId(@Param("start")int start, @Param("count")int count,@Param("uid")Long uid);
    long countWinTopListByBossId(@Param("uid")Long uid);
}
fanli/src/main/java/com/yeshi/fanli/entity/bus/user/ThreeSale.java
@@ -20,8 +20,7 @@
public class ThreeSale {
    public static int EXPIRE_NORMAL = 0;// 正常状态
    public static int EXPIRE_OUTOFDATE = 1;// 过期状态
    public static int EXPIRE_SEPARATE = 2;// 邀请关系脱离
    public static int EXPIRE_OUTOFDATE = 1;// 邀请关系脱离
    public static int STATE_SUCCESS = 1;// 成功
    public static int STATE_NOT_SUCCESS = 0;// 尚未成功
fanli/src/main/java/com/yeshi/fanli/mapping/ThreeSaleMapper.xml
@@ -163,7 +163,7 @@
    </update>
    
    <update id="inviteSeparate">
        update yeshi_ec_threeSale t set t.state = 0,t.expire = 2,t.succeedTime = null,
        update yeshi_ec_threeSale t set t.state = 0,t.expire = 1,
            t.updateTime = <![CDATA[UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) * 1000]]>
        where t.worker_id=#{workerId} AND t.boss_id = #{bossId}
    </update>
@@ -481,6 +481,14 @@
        t.`expire`IS NULL)
        LIMIT 1
    </select>
    <select id="getNearRelationByBossIdAndWorkerId" resultMap="BaseResultMap">
        SELECT * FROM `yeshi_ec_threesale` t
        WHERE t.`boss_id` = #{bossId} AND t.`worker_id` = #{workerId}
        ORDER BY t.`state` DESC, t.`createTime` DESC
        LIMIT 1
    </select>
    <select id="getExpireRecord" resultMap="BaseResultMap">
        SELECT * FROM
@@ -505,4 +513,12 @@
        WHERE t.`worker_id` = #{workerId} AND t.`state` = 1
             <![CDATA[AND t.succeedTime >= #{time}]]>
    </select>
    <select id="getTeamOrderNumByWorkerId" resultType="Long">
        SELECT IFNULL(COUNT(d.`id`),0)  FROM yeshi_ec_threesale d
        LEFT JOIN (SELECT t.`id`,t.`boss_id` FROM `yeshi_ec_threesale` t
                     WHERE t.`state` = 1 AND t.`worker_id` = #{workerId} LIMIT 1)t ON t.`boss_id` = d.`boss_id`
        WHERE d.`id` <![CDATA[<=]]>t.id AND d.`state` = 1
    </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/mapping/redpack/RedPackWinInviteMapper.xml
@@ -100,4 +100,25 @@
      SELECT IFNULL(SUM(d.`rwr_money`),0) FROM yeshi_ec_red_pack_win_invite d
    WHERE d.`rwr_uid` = #{uid}
  </select>
  <select id="getWinListByBossIdAndTeamUid" resultMap="BaseResultMap">
      SELECT * FROM yeshi_ec_red_pack_win_invite d
    WHERE d.`rwr_uid` = #{uid} AND d.`rwr_team_uid` = #{teamUid}
  </select>
  <select id="getWinTopListByBossId" resultMap="BaseResultMap">
      SELECT SUM(d.`rwr_money`)AS rwr_money,d.`rwr_team_uid` FROM `yeshi_ec_red_pack_win_invite` d
    WHERE d.`rwr_uid` = #{uid} AND d.`rwr_type` <![CDATA[<>]]> 'newUserReward'
    GROUP BY d.`rwr_team_uid`
    ORDER BY rwr_money DESC
    LIMIT #{start},#{count}
  </select>
   <select id="countWinTopListByBossId" resultType="Long">
      SELECT IFNULL(COUNT(DISTINCT d.`rwr_team_uid`),0) FROM `yeshi_ec_red_pack_win_invite` d
    WHERE d.`rwr_uid` = 2662782 AND d.`rwr_type` <![CDATA[<>]]> 'newUserReward'
  </select>
</mapper>
fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -697,7 +697,7 @@
            
            // 下单日期是否是符合上线日期
            long downOrderTime = thirdCreateTime.getTime();
            long limitDate = TimeUtil.parse(Constant.COUPON_REWARD_TIME).getTime();
            long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
            if (downOrderTime > limitDate)  {
                // 2.1 开始新版
                rewardCounponLimitTime(order, accountTime);
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
@@ -1,6 +1,7 @@
package com.yeshi.fanli.service.impl.redpack;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -35,10 +36,12 @@
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
import com.yeshi.fanli.util.annotation.redpack.RedPackGetVersionLimit;
import com.yeshi.fanli.util.factory.RedPackDetailFactory;
import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO;
@Service
public class RedPackWinInviteServiceImpl implements RedPackWinInviteService {
@@ -96,7 +99,7 @@
    @Transactional(rollbackFor = Exception.class)
    public void inviteSucceedReward(Long teamUid) throws Exception {
        // 是否在上线之后的邀请关系
        ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME);
        ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME));
        if (threeSale == null)
            return;
@@ -187,7 +190,7 @@
            return;
        // 验证上下级关系
        ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, Constant.RED_PACK_REWARD_TIME);
        ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME));
        if (threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue())
            return;
@@ -331,4 +334,59 @@
                money, "队员(好友)完成第三阶段连续[第" + monthSpace + "个月]", new Gson().toJson(dto));
    }
    @Override
    public List<RedPackWinProgressVO> getInviteProgressByWorkerId(Long uid) {
        List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>();
        ThreeSale threeSale = threeSaleSerivce.selectByWorkerId(uid);
        if (threeSale == null || threeSale.getSucceedTime() == null)
            return listVO;
        UserInfo userInfo = userInfoService.selectByPKey(uid);
        if (userInfo == null)
            return listVO;
        listVO.add(new RedPackWinProgressVO("成功注册", TimeUtil.formatDate(userInfo.getCreatetime())));
        listVO.add(new RedPackWinProgressVO("确立邀请", TimeUtil.formatDate(threeSale.getSucceedTime())));
        // 奖励记录
        List<RedPackWinInvite> listWin = redPackWinInviteMapper.getWinListByBossIdAndTeamUid(threeSale.getBoss().getId(), uid);
        if (listWin == null || listWin.size() == 0)
            return listVO;
        int month = 1;
        for (RedPackWinInvite win: listWin) {
            String time = TimeUtil.formatDate(win.getCreateTime());
            BigDecimal money = win.getMoney().setScale(2);
            if (win.getType() == RedPackWinInviteTypeEnum.oneStageReward) {
                listVO.add(new RedPackWinProgressVO("第一阶段", time, money.toString()));
                continue;
            }
            if (win.getType() == RedPackWinInviteTypeEnum.twoStageReward) {
                listVO.add(new RedPackWinProgressVO("第二阶段", time, money.toString()));
                continue;
            }
            if (win.getType() == RedPackWinInviteTypeEnum.twoStageReward) {
                listVO.add(new RedPackWinProgressVO("第三阶段第" + month + "个月", time, money.toString()));
                month ++;
                continue;
            }
        }
        return listVO;
    }
    @Override
    public List<RedPackWinInvite> getWinTopListByBossId(int page, int count, Long uid) {
        return redPackWinInviteMapper.getWinTopListByBossId(count * (page-1), count, uid);
    }
    @Override
    public long countWinTopListByBossId(Long uid) {
        return redPackWinInviteMapper.countWinTopListByBossId(uid);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -885,7 +885,7 @@
            throw new UserSystemCouponException(1, "该订单不能使用奖励券");
        
        long downOrderTime = thirdCreateTime.getTime();
        long limitDate = TimeUtil.parse(Constant.COUPON_REWARD_TIME).getTime();
        long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
        if (downOrderTime > limitDate) {
            boolean valid = false;
            Date endDay = DateUtil.plusDayDate(Constant.COUPON_REWARD_LIMIT_DAY, accountTime);
fanli/src/main/java/com/yeshi/fanli/service/impl/user/invite/ThreeSaleSerivceImpl.java
@@ -590,6 +590,11 @@
    public ThreeSale selectByWorkerId(Long workerId) {
        return threeSaleMapper.selectSuccessByWorkerId(workerId);
    }
    @Override
    public ThreeSale getNearRelationByBossIdAndWorkerId(Long bossId, Long workerId) {
        return threeSaleMapper.getNearRelationByBossIdAndWorkerId(bossId, workerId);
    }
    @Override
    public List<ThreeSale> getSuccessByDate(Long bossId, Long minTime, Long maxTime) {
@@ -621,4 +626,9 @@
        threeSaleMapper.inviteSeparate(workerId, bossId);
    }
    
    @Override
    public long getTeamOrderNumByWorkerId(Long workerId) {
        return threeSaleMapper.getTeamOrderNumByWorkerId(workerId);
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/user/vip/UserVIPInfoServiceImpl.java
@@ -86,7 +86,7 @@
    @Override
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    public void addUserVIPInfo(UserVIPInfo info) throws UserVIPInfoException {
        if (info.getId() == null) {
            throw new UserVIPInfoException(1, "信息不完整");
@@ -207,7 +207,7 @@
        userOtherMsgNotificationService.teamVIPCallBoss(bossId, "如有疑问请联系我的-人工客服", msgboss);
    }
    
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void rejectVIPApply(Long uid, String reason) throws UserVIPInfoException {
        UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid);
@@ -231,7 +231,7 @@
        userOtherMsgNotificationService.rejectVIPApply(uid, "如有疑问请联系我的-人工客服", msgOther);
    }
    @Transactional
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void applyVIP(Long uid) throws UserVIPInfoException {
        UserVIPInfo userInfo = userVIPInfoMapper.selectByPrimaryKeyForUpdate(uid);
@@ -358,6 +358,7 @@
    
    
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void inviteSeparate(Long workerId, Long bossId) {
        if (workerId == null || bossId == null)
            return;
fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/RedPackWinInviteService.java
@@ -4,6 +4,7 @@
import java.util.List;
import com.yeshi.fanli.entity.redpack.RedPackWinInvite;
import com.yeshi.fanli.vo.redpack.RedPackWinProgressVO;
public interface RedPackWinInviteService {
@@ -45,5 +46,23 @@
     * @return
     */
    public BigDecimal getRewardMoney(Long uid);
    /**
     * 邀请进度 + 奖励
     * @param uid
     * @return
     */
    public List<RedPackWinProgressVO> getInviteProgressByWorkerId(Long uid);
    /**
     * 奖金排行-队员
     * @param uid
     * @return
     */
    public List<RedPackWinInvite> getWinTopListByBossId(int page, int count, Long uid);
    public long countWinTopListByBossId(Long uid);
    
}
fanli/src/main/java/com/yeshi/fanli/service/inter/user/invite/ThreeSaleSerivce.java
@@ -306,4 +306,18 @@
     */
    public void inviteSeparate(Long workerId, Long bossId);
    /*
     * 该队员 在队中排第几
     */
    public long getTeamOrderNumByWorkerId(Long workerId);
    /**
     * 查询最近关系 - 有效则优先
     * @param bossId
     * @param workerId
     * @return
     */
    public ThreeSale getNearRelationByBossIdAndWorkerId(Long bossId, Long workerId);
}
fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -125,8 +125,9 @@
    public static final int AUTO_EXTRACT_MIN_SURPLUS = 2;
    
    // 红包奖励-邀请时间筛选 2019-11-14 11:51:43
    public static final long RED_PACK_REWARD_TIME = 1573703503000L;
    // vip、红包、奖励券倒计时 2.1上线时间
    public static final String VIP_ONLINE_TIME = "2019-12-01";
    // 一阶段:20天数限制  
    public static final int ONE_STAGE_LIMIT_DAYS = 20;
    // 一阶段:立得现金3元 
@@ -171,8 +172,6 @@
    // vip赠送金币
    public static final int VIP_COLDCOIN_NUM = 1800;
    
    // 奖励券倒计时 - 执行时间待确定
    public static final String COUPON_REWARD_TIME = "2019-12-01"; // TODO
    // 奖励券倒计时 - 天数
    public static final int COUPON_REWARD_LIMIT_DAY = 5;  
    
fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -1532,18 +1532,15 @@
            int ax = pX - (inviteCode.length() - 4)*13 ;
            int ay = pY + size +  118;
            
            System.out.println(inviteCode.length());
            int ax_diap = ax;
            int width_diap = 235 + (int) (24.6 * (inviteCode.length() - 4));
            g2d.setColor(Color.white);
            // 画出一个矩形
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.5f));  // 透明度
            g2d.fillRect(ax_diap, ay - 38, width_diap, 50);
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP, 0.65f));  // 透明度
            g2d.fillRect(ax, ay - 38, width_diap, 50);
            // 前半圆
            g2d.fillArc(ax_diap - 25, ay- 38, 50, 50, 90, 180);
            g2d.fillArc(ax - 25, ay- 38, 50, 50, 90, 180);
            // 后半圆
            g2d.fillArc(ax_diap + width_diap - 25, ay- 38, 50, 50, 270, 180);
            g2d.fillArc(ax + width_diap - 25, ay- 38, 50, 50, 270, 180);
            
            g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 1f)); 
            String st = "邀请码:" + inviteCode;
fanli/src/main/java/com/yeshi/fanli/util/TimeUtil.java
@@ -103,6 +103,12 @@
        return 0;
    }
    
    public static String formatDate(long time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm");
        String date = sdf.format(new Date(time));
        return date;
    }
    public static String formatDate(Date time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm");
        String date = sdf.format(time);
fanli/src/main/java/com/yeshi/fanli/vo/redpack/RedPackWinProgressVO.java
New file
@@ -0,0 +1,70 @@
package com.yeshi.fanli.vo.redpack;
import java.io.Serializable;
import com.google.gson.annotations.Expose;
public class RedPackWinProgressVO implements Serializable {
    /**
     *
     */
    private static final long serialVersionUID = 1L;
    @Expose
    private String name;
    @Expose
    private String portrait;
    @Expose
    private String money;
    @Expose
    private String time;
    public RedPackWinProgressVO() {}
    public RedPackWinProgressVO(String name, String time) {
        this.name = name;
        this.time = time;
    }
    public RedPackWinProgressVO(String name, String time, String money) {
        this.name = name;
        this.time = time;
        this.money = money;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPortrait() {
        return portrait;
    }
    public void setPortrait(String portrait) {
        this.portrait = portrait;
    }
    public String getMoney() {
        return money;
    }
    public void setMoney(String money) {
        this.money = money;
    }
    public String getTime() {
        return time;
    }
    public void setTime(String time) {
        this.time = time;
    }
}