admin
2020-04-14 5b16b6d8c05f97845f864d0a36f5b7443533962e
资金明细整改
10个文件已修改
304 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserMoneyController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDetailServiceImpl.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/money/TeamEincomeManager.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserMoneyController.java
@@ -215,7 +215,6 @@
        vo.setMonthExtractMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate, 1).abs());
        
        if (!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            // 上月收入
            typeList.clear();
@@ -254,7 +253,6 @@
            vo.setMonthRecievedMoney(
                    userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        
            minDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(timeStamp, "yyyy-MM"), "yyyy-MM"));
            Calendar ca = Calendar.getInstance();
            ca.setTime(new Date(timeStamp));
@@ -284,7 +282,7 @@
            typeList.add(UserMoneyDetailTypeEnum.hongbao);
            typeList.add(UserMoneyDetailTypeEnum.hongbaoDeduct);
            typeList.add(UserMoneyDetailTypeEnum.subsidy);
            typeList.add(UserMoneyDetailTypeEnum.orderTeamDividents);
            typeList.add(UserMoneyDetailTypeEnum.teamReward);
            vo.setTotalRecievedMoney(
                    userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
        }
@@ -325,11 +323,11 @@
        typeList.add(UserMoneyDetailTypeEnum.inviteAndShare);
        if (VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            typeList.add(UserMoneyDetailTypeEnum.subsidy);
            typeList.add(UserMoneyDetailTypeEnum.orderTeamDividents);
            typeList.add(UserMoneyDetailTypeEnum.teamReward);
        }
        vo.setTotalInviteMoney(
                userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs());
                    
        GsonBuilder builder = new GsonBuilder();
        builder.registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
@@ -350,7 +348,8 @@
        if (extractingMoney.compareTo(new BigDecimal(0)) > 0)
            vo.setExtractingMoneyInfo("提现中:¥" + extractingMoney.setScale(2, RoundingMode.HALF_UP));
        
        if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion()) && !VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
        if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion())
                && !VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion())) {
            // 获取是否绑定了微信
            if (!StringUtil.isNullOrEmpty(user.getWxUnionId())) {
                vo.setBindingWX(true);
fanli/src/main/java/com/yeshi/fanli/entity/money/UserMoneyDetail.java
@@ -28,6 +28,7 @@
    public enum UserMoneyDetailTypeEnum {
        share("分享奖金", "http://img.flqapp.com/resource/money_detail/icon_share.png", ""),
        invite("团队奖金", "http://img.flqapp.com/resource/money_detail/icon_invite.png", ""),
        inviteAndShare("奖金收入", "http://img.flqapp.com/resource/money_detail/icon_share.png", ""),
        fanli("返利到账", "http://img.flqapp.com/resource/money_detail/icon_fanli.png", ""),
        fanliWeiQuan("返利扣除",
@@ -57,7 +58,21 @@
        extractAutoWX("自动提现", "http://img.flqapp.com/resource/money_detail/icon_extract.png", ""),
        extractAutoWXRefund("自动提现失败", "http://img.flqapp.com/resource/money_detail/icon_extract.png", ""),
        subsidy("额外补贴", "http://img.flqapp.com/resource/msg/icon_msg_subsidy.png", ""),
        orderTeamDividents("团队分红", "http://img.flqapp.com/resource/msg/icon_msg_team_reward.png", "");
        teamReward("团队收益", "http://img.flqapp.com/resource/money_detail/icon_invite.png", ""),
        fanliNew("自购返利", "http://img.flqapp.com/resource/money_detail/icon_fanli.png", ""),
        orderRewardNew("返利再返", "http://img.flqapp.com/resource/money_detail/icon_order_reward.png", ""),
        shareNew("分享奖金", "http://img.flqapp.com/resource/money_detail/icon_share.png", ""),
        systemEqualizeNew("系统补齐", "http://img.flqapp.com/resource/money_detail/icon_system.png", ""),
        fanliWeiQuanNew("返利退回",
                "http://img.flqapp.com/resource/money_detail/icon_fanli.png",
                "http://apph5.banliapp.com/AppPage/1.8.0/all_help_content.html?id=214"),
        extractNew("提现", "http://img.flqapp.com/resource/money_detail/icon_extract.png", ""),
        extractVerifyNew("提现验证", "http://img.flqapp.com/resource/money_detail/icon_extract.png", ""),
        systemTakeOff("系统扣除", "http://img.flqapp.com/resource/money_detail/icon_extract.png", "");
        private final String desc;
        private final String picture;
fanli/src/main/java/com/yeshi/fanli/service/impl/money/UserMoneyDetailServiceImpl.java
@@ -39,7 +39,8 @@
    }
    @Override
    public List<UserMoneyDetailHistoryVO> listUserMoneyDetailForClient(Long uid, Long userMoneyDetailId, Integer type, Date maxTime) {
    public List<UserMoneyDetailHistoryVO> listUserMoneyDetailForClient(Long uid, Long userMoneyDetailId, Integer type,
            Date maxTime) {
        List<UserMoneyDetailHistoryVO> finalList = new ArrayList<>();
        List<UserMoneyDetail> list = null;
        if (userMoneyDetailId == null) {// 首次请求
@@ -74,7 +75,8 @@
        } else {// 二次请求
            int size = 21;
            List<UserMoneyDetail> tempList = userMoneyDetailMapper.selectByUidWithIndexId(uid, userMoneyDetailId, size, type);
            List<UserMoneyDetail> tempList = userMoneyDetailMapper.selectByUidWithIndexId(uid, userMoneyDetailId, size,
                    type);
            Set<Date> dateSet = new HashSet<>();// 用于储存是否在同一时间上面(精确到秒)
            if (tempList.size() > 0) {
                for (UserMoneyDetail umd : tempList) {
@@ -187,8 +189,9 @@
                inType = true;
                break;
            }
        if (inType)
        if (inType) {
            detail.setTitle(detail.getTitle() + "【" + Constant.getSourceName(detail.getOrderType()) + "】");
        }
        return detail;
    }
@@ -250,7 +253,6 @@
            Long sourceIdentifyId) {
        return userMoneyDetailMapper.selectByTypeAndUidAndIdentifyCode(type, uid, sourceIdentifyId);
    }
    
    @Override
    public List<UserMoneyDetail> listQuery(int page, int pageSize, String key, Integer keyType) {
fanli/src/main/java/com/yeshi/fanli/service/impl/money/extract/ExtractServiceImpl.java
@@ -178,7 +178,6 @@
        updateExtract.setId(id);
        updateExtract.setState(Extract.STATE_PROCESSING);
        extractMapper.updateByPrimaryKeySelective(updateExtract);
        // TODO 新版部署后删除
        // 改变资金记录状态
        UserMoneyDetail detail = userMoneyDetailService.selectByTypeAndUidAndIdentifyCode(
                UserMoneyDetailTypeEnum.extract, find.getUserInfo().getId(), find.getId());
@@ -327,7 +326,7 @@
        // 新版资金详情
        UserMoneyDetail userMoneyDetail = null;
        try {
            userMoneyDetail = UserMoneyDetailFactory.createExtract(extract);
            userMoneyDetail = UserMoneyDetailFactory.createExtract(extract, null);
        } catch (UserMoneyDetailException e2) {
            try {
                LogHelper.errorDetailInfo(e2);
@@ -552,6 +551,24 @@
        if (payInfoList != null && payInfoList.size() > 0)
            alipayNo = payInfoList.get(0).getOrderId();
        UserMoneyDetail detailNew = null;
        try {
            detailNew = UserMoneyDetailFactory.createExtract(updateExtract, alipayNo);
        } catch (UserMoneyDetailException e) {
            e.printStackTrace();
        }
        // 外显账户明细
        UserMoneyDetail userMoneyDetail = userMoneyDetailMapper.selectByTypeAndUidAndIdentifyCode(
                UserMoneyDetailTypeEnum.extract, extract.getUserInfo().getId(), extract.getId());
        if (userMoneyDetail != null) {
            UserMoneyDetail detail = new UserMoneyDetail(userMoneyDetail.getId());
            detail.setShow(true);
            detail.setUpdateTime(new Date());
            if (detailNew != null)
                detail.setDescInfo(detailNew.getDescInfo());
            userMoneyDetailMapper.updateByPrimaryKeySelective(detail);
        }
        // 新版通知
        userMoneyMsgNotificationService.extractSuccess(extract, alipayNo);
    }
@@ -716,16 +733,6 @@
            // 更新提现记录审核表
            extractAuditRecordMapper.updateByPrimaryKeySelective(auditRecord);
        }
        // 外显账户明细
        UserMoneyDetail userMoneyDetail = userMoneyDetailMapper.selectByTypeAndUidAndIdentifyCode(
                UserMoneyDetailTypeEnum.extract, extract.getUserInfo().getId(), extract.getId());
        if (userMoneyDetail != null) {
            UserMoneyDetail detail = new UserMoneyDetail(userMoneyDetail.getId());
            detail.setShow(true);
            detail.setUpdateTime(new Date());
            userMoneyDetailMapper.updateByPrimaryKeySelective(detail);
        }
    }
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderMoneySettleServiceImpl.java
@@ -2,7 +2,6 @@
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -710,22 +709,8 @@
        if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
            // 添加新版详情记录
            try {
                // 计算本月的有效订单,失效订单,维权订单
                Calendar ca = Calendar.getInstance();
                Date maxDate = new Date(TimeUtil
                        .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
                ca.add(Calendar.MONTH, -1);
                Date minDate = new Date(TimeUtil
                        .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
                long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
                        minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
                long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
                        minDate, maxDate, Constant.SOURCE_TYPE_TAOBAO);
                UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, Constant.SOURCE_TYPE_TAOBAO,
                        (int) validCount, (int) weiQuanCount, sharemoney, new Date());
                        sharemoney, new Date());
                // 添加资金
                userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
@@ -809,22 +794,8 @@
        if (sharemoney.compareTo(new BigDecimal(0)) > 0) {
            // 添加新版详情记录
            try {
                // 计算本月的有效订单,失效订单,维权订单
                Calendar ca = Calendar.getInstance();
                Date maxDate = new Date(TimeUtil
                        .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
                ca.add(Calendar.MONTH, -1);
                Date minDate = new Date(TimeUtil
                        .convertToTimeTemp(ca.get(Calendar.YEAR) + "-" + (ca.get(Calendar.MONTH) + 1), "yyyy-M"));
                long validCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_JS,
                        minDate, maxDate, sourceType);
                long weiQuanCount = hongBaoV2Mapper.countShareOrderCountByUidAndSettleTime(uid, CommonOrder.STATE_WQ,
                        minDate, maxDate, sourceType);
                UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, (int) validCount,
                        (int) weiQuanCount, sharemoney, new Date());
                UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createShare(uid, sourceType, sharemoney,
                        new Date());
                // 添加资金
                userMoneyService.addUserMoney(uid, sharemoney, userMoneyDetail);
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -43,6 +43,7 @@
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.entity.order.CommonOrder;
import com.yeshi.fanli.entity.order.HongBaoOrder;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
@@ -227,11 +228,10 @@
        return userSystemCouponMapper.countUserCouponList(uid);
    }
    @Override
    @Transactional(rollbackFor=Exception.class)
    public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify) throws UserSystemCouponException, Exception{
    public UserSystemCoupon freeCouponWin(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify)
            throws UserSystemCouponException, Exception {
        if (typeEnum == null || uid == null || StringUtil.isNullOrEmpty(source) || num < 1) {
            throw new UserSystemCouponException(1, "参数不正确");
        }
@@ -292,8 +292,8 @@
            public void run() { 
                if (notify) { // 消息推送
                    try {
                        userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source,
                                num, "成功获得", nowTime, endTime);
                        userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source, num, "成功获得",
                                nowTime, endTime);
                    } catch (Exception e) {
                         e.printStackTrace();
                    }
@@ -317,12 +317,10 @@
       return userSystemCoupon;
    }
    
    @Override
    @Transactional(rollbackFor=Exception.class)
    public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify,
            BigDecimal percent) throws UserSystemCouponException, Exception{
    public UserSystemCoupon rewardCouponWin(Long uid, String source, int num, boolean notify, BigDecimal percent)
            throws UserSystemCouponException, Exception {
        if (uid == null || percent == null|| StringUtil.isNullOrEmpty(source) || num < 1) {
            throw new UserSystemCouponException(1, "参数不正确");
        }
@@ -389,10 +387,6 @@
        
       return userSystemCoupon;
    }
    @Transactional(rollbackFor=Exception.class)
    @Override
@@ -752,7 +746,6 @@
        return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
    }
    
    @Override
    public long countGiveFreeCoupon(Long uid) {
        if (uid == null)
@@ -769,8 +762,6 @@
        return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
    }
    @Override
    public long countUsableRewardCoupon(Long uid) {
@@ -919,10 +910,9 @@
            throw new UserSystemCouponException(1, "亲,很遗憾,售后维权订单不能使用返利奖励券~");
        }
        // 订单
        List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1,1, orderNo, null,
                null, null, sourceType);
        List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1, 1, orderNo, null, null,
                null, sourceType);
        if (listVo == null || listVo.size() == 0) 
            throw new UserSystemCouponException(1, "亲,很遗憾,该订单已不能使用返利奖励券~");
        
@@ -1032,9 +1022,19 @@
            // 2.插入关联
            orderHongBaoMapService.addOrderHongBaoMap(hongBaoV2, order);
            // 计算该订单原有返利
            List<HongBaoOrder> hongBaoOrderlist = hongBaoOrderService
                    .listDetailByOrderIdAndSourceType(order.getOrderId(), order.getOrderType());
            BigDecimal originalMoney = new BigDecimal(0);
            if (hongBaoOrderlist != null)
                for (HongBaoOrder ho : hongBaoOrderlist) {
                    if (ho.getHongBaoV2() != null && ho.getHongBaoV2().getState() == HongBaoV2.STATE_YILINGQU)
                        originalMoney = originalMoney.add(ho.getHongBaoV2().getMoney());
                }
            // 3.插入资金明细,用户余额
            UserMoneyDetail userMoneyDetail = UserMoneyDetailFactory.createOrderReward(order.getOrderId(),
                    order.getOrderType(), money, new UserInfo(uid));
                    order.getOrderType(), money, originalMoney, new UserInfo(uid));
            userMoneyDetailService.addUserMoneyDetail(userMoneyDetail);
            userInfoService.addMoney(new UserInfo(uid), money);
@@ -1357,7 +1357,6 @@
        return userRecordVO;
    }
    @Transactional(rollbackFor=Exception.class)
    @Override
    public void updateStateByDrawback(String orderNo) throws Exception {
@@ -1398,7 +1397,6 @@
        record.setState(UserSystemCouponRecord.STATE_SUCCESS);
        userSystemCouponRecordService.updateByPrimaryKeySelective(record);
    }
    
    @Override
    public List<UserSystemCoupon> getCounponNowInvalid(int count) {
@@ -1474,8 +1472,6 @@
        return isfree;
    }
    /**
     * 随机券比例
@@ -2014,15 +2010,16 @@
                continue;
            }
            try { // 消息推送
                Long uid = userCoupon.getUid();
                String source = userCoupon.getSource();
                 if (baseCoupon.getType() == CouponTypeEnum.freeCoupon || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
                if (baseCoupon.getType() == CouponTypeEnum.freeCoupon
                        || baseCoupon.getType() == CouponTypeEnum.freeCouponBuy) {
                     userOtherMsgNotificationService.freeCouponEndMsg(uid, "自购免单券", source, 1, "已过期");
                 } else if (baseCoupon.getType() == CouponTypeEnum.freeCouponGive) {
                     userOtherMsgNotificationService.freeCouponEndMsg(uid, "赠送免单券", source, 1, "已过期");
                } if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
                }
                if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
                     userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "已过期");
                }
            } catch (Exception e) {
@@ -2200,8 +2197,8 @@
            userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "使用退回", 
                    userCoupon.getStartTime(), userCoupon.getEndTime());
        } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
            userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "使用退回",
                    userCoupon.getStartTime(), userCoupon.getEndTime());
            userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "使用退回", userCoupon.getStartTime(),
                    userCoupon.getEndTime());
        }
    }
@@ -2275,8 +2272,8 @@
                userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "使用退回", 
                        userCoupon.getStartTime(), userCoupon.getEndTime());
            } else if (CouponTypeEnum.rebatePercentCoupon == systemCoupon.getType()) {
                userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "使用退回",
                        userCoupon.getStartTime(), userCoupon.getEndTime());
                userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, 1, "使用退回", userCoupon.getStartTime(),
                        userCoupon.getEndTime());
            }
        }
    }
@@ -2286,12 +2283,12 @@
        // 过期券
        updateInvalidSate(uid);
        
        List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
        List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid,
                CouponTypeEnum.rebatePercentCoupon.name());
        if (listCoupon == null || listCoupon.size() == 0)
            return false;
        return true;
    }
    @Override
    public List<UserSystemCouponVO> listIncludeNotExchange(Long uid) throws Exception {
@@ -2301,8 +2298,8 @@
        // 退回券
        sendBackTimeOutCoupon(uid);
        List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid, CouponTypeEnum.rebatePercentCoupon.name());
        List<UserSystemCouponVO> listCoupon = userSystemCouponMapper.getValidByUidAndType(uid,
                CouponTypeEnum.rebatePercentCoupon.name());
        if (listCoupon == null || listCoupon.size() == 0)
            return null;
@@ -2466,8 +2463,7 @@
                public void run() {
                    Long uid = coupon.getUid();
                    String source = coupon.getSource();
                    userOtherMsgNotificationService.freeCouponWinMsg(uid, "自购免单券", source, 1,
                            "激活成功", nowDate, endTime);
                    userOtherMsgNotificationService.freeCouponWinMsg(uid, "自购免单券", source, 1, "激活成功", nowDate, endTime);
                }
            });
        } catch (Exception e) {
fanli/src/main/java/com/yeshi/fanli/service/manger/money/TeamEincomeManager.java
@@ -13,10 +13,12 @@
import com.yeshi.fanli.entity.money.UserMoneyDetail;
import com.yeshi.fanli.exception.ParamsException;
import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
import com.yeshi.fanli.exception.money.UserMoneyDetailException;
import com.yeshi.fanli.service.inter.money.TeamEincomeRecordService;
import com.yeshi.fanli.service.inter.money.UserMoneyService;
import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
import com.yeshi.fanli.util.factory.money.TeamEincomeRecordFactory;
/**
@@ -90,6 +92,7 @@
    }
    /**
     * @throws UserMoneyDetailException
     * 到账到用户余额
     * @Title: addTOUserAccount
     * @Description: 
@@ -99,7 +102,7 @@
     * @throws
     */
    @Transactional(rollbackFor = Exception.class)
    public void addTOUserAccount(Date preSendTime, Long uid) {
    public void addTOUserAccount(Date preSendTime, Long uid) throws UserMoneyDetailException {
        Date now = new Date();
        List<TeamEincomeRecord> list = teamEincomeRecordService.listCanRecieveRecord(preSendTime, uid);
        BigDecimal money = new BigDecimal(0);
@@ -109,8 +112,8 @@
            teamEincomeRecordService.setRecieved(record.getId());
        }
        // TODO 到账
        UserMoneyDetail detail = null;
        UserMoneyDetail detail = UserMoneyDetailFactory.createTeamReward(uid, money, preSendTime);
        userMoneyService.addUserMoney(uid, money, detail);
        // 发送消息
        BigDecimal balance = userMoneyService.getBalance(uid);
fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java
@@ -79,6 +79,9 @@
    @Transactional(rollbackFor = Exception.class)
    public void addDividentsSourceOrder(List<CommonOrder> commonOrderList) throws TeamDividentsSourceOrderException {
        if (commonOrderList.get(0).getThirdCreateTime().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
            return;
        UserLevelEnum level = UserLevelUtil.getByOrderRank(commonOrderList.get(0).getUrank());
        if (level == null)
            level = UserLevelEnum.daRen;
@@ -91,7 +94,6 @@
        } catch (ParamsException e) {
            throw new TeamDividentsSourceOrderException(101, "参数不完整");
        }
    }
    /**
fanli/src/main/java/com/yeshi/fanli/util/account/UserUtil.java
@@ -177,6 +177,17 @@
            }
        }
        return account;
    }
    public static String filterAlipayName(String name) {
        String st = "";
        for (int i = 0; i < name.length(); i++) {
            if (i == 0)
                st += name.charAt(i);
            else
                st += "*";
        }
        return st;
    }
    public static String filterOrderId(String orderId) {
fanli/src/main/java/com/yeshi/fanli/util/factory/UserMoneyDetailFactory.java
@@ -42,9 +42,9 @@
        detail.setIdentifyCode(StringUtil
                .Md5(UserMoneyDetailTypeEnum.fanli.name() + "-" + uid + "-" + orderType + "-" + orderId + "-" + hbIds));
        detail.setMoney(money);
        detail.setTitle(UserMoneyDetailTypeEnum.fanli.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.fanli);
        detail.setDescInfo("订单号:" + orderId);
        detail.setTitle(UserMoneyDetailTypeEnum.fanliNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.fanliNew);
        detail.setDescInfo(Constant.getSourceName(orderType) + ":" + orderId);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        detail.setOrderType(orderType);
@@ -98,8 +98,8 @@
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createShare(Long uid, int orderType, int validCount, int weiQuanCount,
            BigDecimal money, Date time) throws UserMoneyDetailException {
    public static UserMoneyDetail createShare(Long uid, int orderType, BigDecimal money, Date time)
            throws UserMoneyDetailException {
        if (money == null)
            throw new UserMoneyDetailException(1, "返利金额为空");
@@ -113,16 +113,16 @@
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy.M");
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年M月");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(
                StringUtil.Md5(UserMoneyDetailTypeEnum.share.name() + "-" + orderType + "-" + uid + "-" + timeF));
        detail.setMoney(money);
        detail.setTitle(timeF + UserMoneyDetailTypeEnum.share.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.share);
        detail.setDescInfo(String.format("有效订单:%s笔  维权订单:%s笔", validCount, weiQuanCount));
        detail.setTitle(UserMoneyDetailTypeEnum.shareNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.shareNew);
        detail.setDescInfo(Constant.getSourceName(orderType) + ":" + timeF);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        detail.setOrderType(orderType);
@@ -202,11 +202,11 @@
        detail.setIdentifyCode(StringUtil
                .Md5(UserMoneyDetailTypeEnum.fanliWeiQuan.name() + "-" + uid + "-" + drawBack.getOrderItemId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setTitle(UserMoneyDetailTypeEnum.fanliWeiQuan.getDesc());
        detail.setSubTitle("订单售后");
        detail.setType(UserMoneyDetailTypeEnum.fanliWeiQuan);
        detail.setTitle(UserMoneyDetailTypeEnum.fanliWeiQuanNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.fanliWeiQuanNew);
        detail.setSourceIdentifyId(drawBack.getId());
        detail.setDescInfo("订单号:" + drawBack.getOrderId());
        detail.setDescInfo(
                Constant.getSourceName(Constant.SOURCE_TYPE_TAOBAO) + ":" + drawBack.getOrderId() + "-部分商品售后");
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        detail.setOrderType(Constant.SOURCE_TYPE_TAOBAO);
@@ -299,7 +299,7 @@
     * @param extract
     * @return
     */
    public static UserMoneyDetail createExtract(Extract extract) throws UserMoneyDetailException {
    public static UserMoneyDetail createExtract(Extract extract, String alipayNo) throws UserMoneyDetailException {
        if (extract == null)
            throw new UserMoneyDetailException(1, "提现记录不能为空");
        if (extract.getId() == null)
@@ -309,14 +309,18 @@
        if (extract.getUserInfo() == null || extract.getUserInfo().getId() == null)
            throw new UserMoneyDetailException(1, "提现用户不能为空");
        if (alipayNo != null && alipayNo.length() > 10)
            alipayNo = "*" + alipayNo.substring(alipayNo.length() - 10, alipayNo.length());
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extract.name() + ":" + extract.getId()));
        detail.setMoney(new BigDecimal("0").subtract(extract.getMoney()));
        detail.setSourceIdentifyId(extract.getId());
        detail.setTitle(UserMoneyDetailTypeEnum.extract.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extract);
        detail.setTitle(UserMoneyDetailTypeEnum.extractNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extractNew);
        detail.setUpdateTime(new Date());
        detail.setDescInfo("支付宝订单号:" + alipayNo);
        detail.setUserInfo(extract.getUserInfo());
        detail.setShow(false);
        return detail;
@@ -344,10 +348,44 @@
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.extractVerify.name() + ":" + aa.getId()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setSourceIdentifyId(aa.getId());
        detail.setTitle(UserMoneyDetailTypeEnum.extractVerify.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extractVerify);
        detail.setTitle(UserMoneyDetailTypeEnum.extractVerifyNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.extractVerifyNew);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(aa.getUid()));
        detail.setDescInfo(String.format("支付宝:%s -姓名-%s", UserUtil.filterAlipayAccount(aa.getAccount()),
                UserUtil.filterAlipayName(aa.getName())));
        return detail;
    }
    /**
     * 系统扣除
     * @Title: createSystemTakeOff
     * @Description:
     * @param uid
     * @param money
     * @param desc
     * @return
     * @throws UserMoneyDetailException
     * UserMoneyDetail 返回类型
     * @throws
     */
    public static UserMoneyDetail createSystemTakeOff(Long uid, BigDecimal money, String desc)
            throws UserMoneyDetailException {
        if (uid == null)
            throw new UserMoneyDetailException(1, "UID不能为空");
        if (money == null)
            throw new UserMoneyDetailException(1, "金额不能为空");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(
                StringUtil.Md5(uid + "-" + UserMoneyDetailTypeEnum.systemTakeOff.name() + System.currentTimeMillis()));
        detail.setMoney(new BigDecimal("0").subtract(money));
        detail.setTitle(UserMoneyDetailTypeEnum.systemTakeOff.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.systemTakeOff);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        detail.setDescInfo(desc);
        return detail;
    }
@@ -462,8 +500,8 @@
     * @return
     * @throws UserMoneyDetailException
     */
    public static UserMoneyDetail createOrderReward(String orderId, int orderType, BigDecimal money, UserInfo user)
            throws UserMoneyDetailException {
    public static UserMoneyDetail createOrderReward(String orderId, int orderType, BigDecimal money,
            BigDecimal originalMoney, UserInfo user) throws UserMoneyDetailException {
        if (StringUtil.isNullOrEmpty(orderId))
            throw new UserMoneyDetailException(1, "订单号不能为空");
        if (user == null)
@@ -475,12 +513,12 @@
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.hongbao.name() + "-" + "老版本" + "-" + orderId));
        detail.setMoney(money);
        detail.setTitle(UserMoneyDetailTypeEnum.orderReward.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.orderReward);
        detail.setTitle(UserMoneyDetailTypeEnum.orderRewardNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.orderRewardNew);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(user);
        detail.setOrderType(orderType);
        detail.setDescInfo("订单号:" + orderId);
        detail.setDescInfo(Constant.getSourceName(orderType) + ":" + orderId + "-原返利:" + originalMoney);
        return detail;
    }
@@ -528,8 +566,8 @@
        detail.setIdentifyCode(StringUtil.Md5(
                UserMoneyDetailTypeEnum.systemEqualize.name() + "-" + System.currentTimeMillis() + "-" + user.getId()));
        detail.setMoney(money);
        detail.setTitle(UserMoneyDetailTypeEnum.systemEqualize.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.systemEqualize);
        detail.setTitle(UserMoneyDetailTypeEnum.systemEqualizeNew.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.systemEqualizeNew);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(user);
        if (!StringUtil.isNullOrEmpty(desc)) {
@@ -602,8 +640,8 @@
    }
    /**
     * 团队分红
     * @Title: createOrderTeamDividents
     * 团队收益
     * @Title: createTeamReward
     * @Description: 
     * @param uid
     * @param money
@@ -613,7 +651,8 @@
     * UserMoneyDetail 返回类型
     * @throws
     */
    public static UserMoneyDetail createOrderTeamDividents(Long uid, BigDecimal money, Date time)
    public static UserMoneyDetail createTeamReward(Long uid, BigDecimal money, Date time)
            throws UserMoneyDetailException {
        if (money == null)
            throw new UserMoneyDetailException(1, "返利金额为空");
@@ -628,16 +667,15 @@
        ca.setTime(time);
        ca.add(Calendar.MONTH, -1);
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy.M");
        String timeF = TimeUtil.getGernalTime(ca.getTimeInMillis(), "yyyy年M月");
        UserMoneyDetail detail = new UserMoneyDetail();
        detail.setCreateTime(new Date());
        detail.setIdentifyCode(
                StringUtil.Md5(UserMoneyDetailTypeEnum.orderTeamDividents.name() + "-" + uid + "-" + timeF));
        detail.setIdentifyCode(StringUtil.Md5(UserMoneyDetailTypeEnum.teamReward.name() + "-" + uid + "-" + timeF));
        detail.setMoney(money);
        detail.setTitle(timeF + UserMoneyDetailTypeEnum.orderTeamDividents.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.orderTeamDividents);
        detail.setDescInfo("团队分红");
        detail.setTitle(UserMoneyDetailTypeEnum.teamReward.getDesc());
        detail.setType(UserMoneyDetailTypeEnum.teamReward);
        detail.setDescInfo(timeF);
        detail.setUpdateTime(new Date());
        detail.setUserInfo(new UserInfo(uid));
        return detail;