admin
2019-03-06 3245e47e12d352c9cd8ba8ee7429e649a6d257c1
券使用前验证
1个文件已修改
386 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java 386 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserSystemCouponServiceImpl.java
@@ -27,7 +27,6 @@
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.push.PushCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
@@ -69,10 +68,10 @@
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
    @Resource
    private RedisManager redisManager;
    @Resource
    private UserSystemCouponMapper userSystemCouponMapper;
@@ -111,19 +110,19 @@
    @Resource
    private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
    @Resource
    private UserInfoExtraService userInfoExtraService;
    @Resource
    private ThreeSaleSerivce threeSaleSerivce;
    @Resource
    private UserOtherMsgNotificationService userOtherMsgNotificationService;
    @Resource
    private DeviceLotteryRecordService deviceLotteryRecordService;
    @Resource
    private CommonOrderCountService commonOrderCountService;
@@ -156,7 +155,7 @@
    public List<UserSystemCoupon> getUserCouponBySource(Long uid, String source) {
        return userSystemCouponMapper.getUserCouponBySource(uid, source);
    }
    @Override
    public long countUserCouponList(Long uid) {
        return userSystemCouponMapper.countUserCouponList(uid);
@@ -164,17 +163,18 @@
    @Override
    @Transactional
    public void insertUserCoupon(Long uid, String couponType, String source)throws UserSystemCouponException,Exception{
    public void insertUserCoupon(Long uid, String couponType, String source)
            throws UserSystemCouponException, Exception {
        if (couponType == null || uid == null) {
            throw new UserSystemCouponException(1, "参数不正确");
        }
        SystemCoupon coupon= systemCouponService.getCouponByType(couponType);
        }
        SystemCoupon coupon = systemCouponService.getCouponByType(couponType);
        if (coupon == null) {
            throw new UserSystemCouponException(1, "券类型不正确");
        }
        }
        int stateActivated = 1;
        if (coupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
            // 福利券状态
@@ -184,12 +184,12 @@
                stateActivated = 0;
            }
        }
        // 结束日期
        String endDay = DateUtil.plusDay(coupon.getExpiryDay(), new Date());
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        Date endTime = format.parse(endDay);
        UserSystemCoupon userCoupon = new UserSystemCoupon();
        userCoupon.setUid(uid);
        userCoupon.setSource(source);
@@ -202,7 +202,7 @@
        userCoupon.setUpdateTime(new Date());
        // 插入数据库
        insertSelective(userCoupon);
        executor.execute(new Runnable() {
            @Override
            public void run() {
@@ -214,18 +214,17 @@
                    } else {
                        userInfoExtra.setCouponNews(userInfoExtra.getCouponNews() + 1);
                    }
                    try {
                        userInfoExtraService.saveUserInfoExtra(userInfoExtra);
                    } catch (UserInfoExtraException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        // 消息推送
        try {
            if (coupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
@@ -233,10 +232,10 @@
            } else if (coupon.getType() == CouponTypeEnum.freeCoupon) {
                userOtherMsgNotificationService.freeSheetCouponGet(userCoupon);
            } else if (coupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
                userOtherMsgNotificationService.rewardCouponGet(userCoupon,coupon.getPercent().intValue());
                userOtherMsgNotificationService.rewardCouponGet(userCoupon, coupon.getPercent().intValue());
            }
        } catch(Exception e) {
        } catch (Exception e) {
            try {
                LogHelper.errorDetailInfo(e);
            } catch (Exception e1) {
@@ -245,7 +244,6 @@
        }
    }
    @Transactional
    @Override
    public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid)
@@ -254,12 +252,12 @@
        if (uid == null) {
            return null;
        }
        // 更新过期券
        updateCounponInvalid(uid);
        // 退回券
        sendBackTimeOutCoupon(uid);
        List<UserSystemCouponVO> listVO = userSystemCouponMapper.getUserCouponVOList(start, count, uid);
        if (listVO == null || listVO.size() == 0) {
            return listVO;
@@ -276,7 +274,7 @@
     * 
     * @param listVO
     */
    public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid) throws Exception{
    public void listDataFactory(List<UserSystemCouponVO> listVO, Long uid) throws Exception {
        for (UserSystemCouponVO userCouponVO : listVO) {
@@ -300,15 +298,15 @@
            // 使用状态
            Integer state = userCouponVO.getState();
            // 券类型
            CouponTypeEnum type = systemCoupon.getType();
            // 按钮跳转
            Map<String, Object> jumpBtn = null;
            Integer stateActivated = userCouponVO.getStateActivated();
            if (stateActivated == null || stateActivated == 0) {
                // 显示规则
                userCouponVO.setCouponRule(systemCoupon.getRemark());
@@ -320,20 +318,21 @@
                }
                jumpBtn = new HashMap<String, Object>();
                // 邀请队员界面
                /*
                 * Map<String, Object> jumpLink = new HashMap<String, Object>();
                 *UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
                 * if (userInfoExtra != null && userInfoExtra.getInviteCode() != null &&
                 * userInfoExtra.getInviteCode().trim().length() > 0) { // 邀请激活成功界面
                 * jumpLink.put("url", configService.get("invite_activation_success_url") +
                 * UserInfoExtra userInfoExtra =
                 * userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra
                 * != null && userInfoExtra.getInviteCode() != null &&
                 * userInfoExtra.getInviteCode().trim().length() > 0) { //
                 * 邀请激活成功界面 jumpLink.put("url",
                 * configService.get("invite_activation_success_url") +
                 * "?alert=true"); } else { // 激活邀请码界面 jumpLink.put("url",
                 * configService.get("invite_activation_url")); }
                 *    jumpBtn.put("params", jumpLink);
                 * jumpBtn.put("params", jumpLink);
                 */
                jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("invite"));
            } else if (stateActivated == 1) {
@@ -345,7 +344,7 @@
                    if (CouponTypeEnum.freeCoupon == type || CouponTypeEnum.welfareFreeCoupon == type) {
                        // 免单券、 福利免单券
                        // 免单商品列表
                        jumpLink.put("url", configService.get("free_goods_list"));
@@ -356,24 +355,24 @@
                    } else if (CouponTypeEnum.rebatePercentCoupon == type) {
                        // 返利奖励券- 跳转至订单到账界面
                        jumpLink.put("state", "2");
                        jumpBtn = new HashMap<String, Object>();
                        jumpBtn.put("params", jumpLink);
                        // 跳转订单列表
                        jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("orderList"));
                    }
                } else if (UserSystemCoupon.STATE_IN_USE == state) {
                    // 使用中
                    userCouponVO.setInUseExplain(configService.get("free_coupon_using-help"));
                }
            }
            // 券失效图片替换
            if (UserSystemCoupon.STATE_END_USE == state || UserSystemCoupon.STATE_OVERDUE == state) {
                userCouponVO.setCouponPicture(systemCoupon.getPictureInvalid());
            }
            }
            userCouponVO.setJumpBtn(jumpBtn);
            String couponTerm = "有效期:";
@@ -440,7 +439,6 @@
            userCouponVO.setCouponRule(systemCoupon.getRule());
            userCouponVO.setCouponPictureInvalid(systemCoupon.getPictureInvalid());
            int differentDays = 0;
            String couponTerm = "有效期:";
            Date startTime = userCouponVO.getStartTime();
@@ -448,7 +446,7 @@
            if (endTime != null && startTime != null) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
                couponTerm = couponTerm + sdf.format(startTime) + "-" + sdf.format(endTime);
                SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
                differentDays = DateUtil.daysBetween(sdf2.format(new Date()), sdf2.format(endTime)) + 1;
                if (differentDays < 0) {
@@ -461,22 +459,22 @@
            // 剩余天数
            Map<String, Object> remainDays = new HashMap<String, Object>();
            remainDays.put("content", "还剩" + differentDays + "天过期");
            String  remainDaysFontColor = "";
            String remainDaysFontColor = "";
            Integer stateActivated = userCouponVO.getStateActivated();
            if (stateActivated == null || stateActivated == 0) {
                userCouponVO.setState(0);
                userCouponVO.setCouponEffect("待激活");
                userCouponVO.setCouponPicture(systemCoupon.getPictureInvalid());
                remainDaysFontColor = "#CCCCCC";
            } else {
                userCouponVO.setCouponPicture(systemCoupon.getPicture());
                remainDaysFontColor = "#F14242";
            }
            remainDays.put("fontColor", remainDaysFontColor);
            userCouponVO.setRemainDays(remainDays);
        }
@@ -514,12 +512,12 @@
        if (uid == null) {
            throw new UserSystemCouponException(1, "用户未登录");
        }
        // 更新过期券
        updateCounponInvalid(uid);
        // 退回券
        sendBackTimeOutCoupon(uid);
        // 订单相关的券
        List<SystemCoupon> couponList = systemCouponService.getOrderCouponList();
        if (couponList == null || couponList.size() == 0) {
@@ -531,21 +529,22 @@
    @Transactional
    @Override
    public List<UserSystemCouponVO> getGoodsCouponList(Long uid, Long auctionId) throws UserSystemCouponException, Exception {
    public List<UserSystemCouponVO> getGoodsCouponList(Long uid, Long auctionId)
            throws UserSystemCouponException, Exception {
        if (uid == null) {
            throw new UserSystemCouponException(1, "用户未登录");
        }
        if (auctionId == null) {
            throw new UserSystemCouponException(1, "商品ID为空");
        }
        // 更新过期券
        updateCounponInvalid(uid);
        // 退回券
        sendBackTimeOutCoupon(uid);
        // 商品相关的券
        List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
        if (couponList == null || couponList.size() == 0) {
@@ -553,31 +552,31 @@
        }
        List<UserSystemCouponVO> list = getEnableListByCouponId(uid, null, couponList);
        // 获取商品详情
        TaoBaoGoodsBrief taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
        if (taoBaoGoodsBrief != null) {
            BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(taoBaoGoodsBrief);
            // 券后价 大于10元 不能免单
            if (quanPrice.compareTo(new BigDecimal(10)) > 0) {
                if (list != null && list.size() > 0) {
                    for (UserSystemCouponVO userCouponVO: list) {
                    for (UserSystemCouponVO userCouponVO : list) {
                        // 显示不能使用
                        userCouponVO.setState(0);
                        userCouponVO.setCouponPicture(userCouponVO.getCouponPictureInvalid());
                        Map<String, Object> map = userCouponVO.getRemainDays();
                        if (map != null) {
                            map.put("fontColor", "#CCCCCC");
                        }
                        userCouponVO.setRemainDays(map);
                    }
                }
            }
        }
        return list;
    }
@@ -597,12 +596,15 @@
            throw new UserSystemCouponException(1, "券数据不正确");
        }
        
        if (userSystemCoupon.getUid().longValue() != uid) {
            throw new UserSystemCouponException(1, "不属于该用户的券");
        }
        Integer state = userSystemCoupon.getState();
        Integer stateActivated = userSystemCoupon.getStateActivated();
        if (UserSystemCoupon.STATE_CAN_USE != state || 1 != stateActivated) {
            throw new UserSystemCouponException(1, "该券不能被使用");
        }
        Long couponUid = userSystemCoupon.getUid();
        if (!uid.equals(couponUid)) {
@@ -620,7 +622,7 @@
                && baseCoupon.getType() != CouponTypeEnum.welfareFreeCoupon) {
            throw new UserSystemCouponException(1, "券类型不匹配");
        }
        Date date = new Date();
        // 更新券使用
        userSystemCoupon.setState(UserSystemCoupon.STATE_IN_USE); // 正在匹配
@@ -638,19 +640,19 @@
        couponRecord.setCreateTime(date);
        couponRecord.setUpdateTime(date);
        userSystemCouponRecordService.insertSelective(couponRecord);
        // 消息推送
        try {
            if (baseCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
                //userOtherMsgNotificationService.welfareCouponUsing(userSystemCoupon,order.get);
                // userOtherMsgNotificationService.welfareCouponUsing(userSystemCoupon,order.get);
            } else if (baseCoupon.getType() == CouponTypeEnum.freeCoupon) {
                //userOtherMsgNotificationService.freeSheetCouponUsing(userSystemCoupon);
                // userOtherMsgNotificationService.freeSheetCouponUsing(userSystemCoupon);
            }
        } catch(Exception e) {
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
        }
    }
    @Transactional
@@ -666,7 +668,11 @@
        if (userSystemCoupon == null) {
            throw new UserSystemCouponException(1, "券信息不存在");
        }
        if (userSystemCoupon.getUid().longValue() != uid) {
            throw new UserSystemCouponException(1, "不属于该用户的券");
        }
        Integer state = userSystemCoupon.getState();
        Integer stateActivated = userSystemCoupon.getStateActivated();
        if (UserSystemCoupon.STATE_CAN_USE != state || 1 != stateActivated) {
@@ -686,7 +692,6 @@
            throw new UserSystemCouponException(1, "券类型不匹配");
        }
        if (orderNo == null || orderNo.trim().length() == 0) {
            throw new UserSystemCouponException(1, "订单号不存在");
        }
@@ -696,7 +701,6 @@
        if (orderVO == null) {
            throw new UserSystemCouponException(1, "订单信息获取失败");
        }
        BigDecimal hongBao = orderVO.getHongBao();
        // 红包状态
@@ -762,11 +766,11 @@
            couponRecord.setCreateTime(date);
            couponRecord.setUpdateTime(date);
            userSystemCouponRecordService.insertSelective(couponRecord);
            // 消息推送
            try {
                userOtherMsgNotificationService.rewardCouponUsed(userSystemCoupon, hongBao, money, orderNo);
            } catch(Exception e) {
            } catch (Exception e) {
                LogHelper.errorDetailInfo(e);
            }
        }
@@ -808,17 +812,17 @@
        }
        Long uid = userSystemCoupon.getUid();
        CommonOrderVO commonOrderVO= commonOrderService.getCommonOrderByOrderNo(userSystemCoupon.getUid(),
                orderNo, CommonOrder.STATE_JS);
        CommonOrderVO commonOrderVO = commonOrderService.getCommonOrderByOrderNo(userSystemCoupon.getUid(), orderNo,
                CommonOrder.STATE_JS);
        if (commonOrderVO == null) {
            throw new UserSystemCouponException(1, "订单信息获取失败");
        }
        // 获取奖励金额
        BigDecimal couponMoney = orderHongBaoMapService.getCouponHongbaoByOrderNo(orderNo, uid);
        UserSystemCouponRecordVO userRecordVO = new UserSystemCouponRecordVO();
        userRecordVO.setCouponMoneyState("已到账");
        userRecordVO.setCommonOrder(commonOrderVO);
@@ -851,7 +855,6 @@
        return userRecordVO;
    }
    @Override
    public UserSystemCouponRecordVO getFreeCouponRecord(String orderNo) throws UserSystemCouponException, Exception {
@@ -1052,54 +1055,53 @@
        return userRecordVO;
    }
    @Transactional
    @Override
    public void activatedWelfareFreeCoupon(Long uid, String fromNickName) {
        LogHelper.test("券激活:"+uid);
        LogHelper.test("券激活:" + uid);
        if (uid == null) {
            return;
        }
        // 福利免单券
        String welfareFree = CouponTypeEnum.welfareFreeCoupon.name();
        SystemCoupon systemCoupon = systemCouponService.getCouponByType(welfareFree);
        if (systemCoupon == null) {
            return;
        }
        // 验证是否失效
        updateCounponInvalid(uid);
        // 待活福利免单券
        List<UserSystemCoupon> list = userSystemCouponMapper.getCouponByTypeAndNotActivated(uid, systemCoupon.getId());
        if (list == null || list.size() == 0) {
            return;
        }
        for (UserSystemCoupon userSystemCoupon: list) {
        for (UserSystemCoupon userSystemCoupon : list) {
            // 激活
            UserSystemCoupon update=new UserSystemCoupon();
            UserSystemCoupon update = new UserSystemCoupon();
            update.setId(userSystemCoupon.getId());
            update.setStateActivated(1);
            update.setUpdateTime(new Date());
            userSystemCouponMapper.updateByPrimaryKeySelective(update);
            Integer state = userSystemCoupon.getState();
            if (UserSystemCoupon.STATE_OVERDUE == state) {
                continue; // 已失效不做消息推送
            }
            // 消息推送
            try {
                UserInfo userInfo = new UserInfo();
                userInfo.setId(uid);
                userInfo.setNickName(fromNickName);
                userOtherMsgNotificationService.welfareCouponActive(userSystemCoupon, userInfo);
            } catch(Exception e) {
            } catch (Exception e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
@@ -1108,11 +1110,11 @@
            }
        }
    }
    @Transactional
    @Override
    public void updateStateByDrawback(String orderNo) throws Exception {
        if (orderNo == null || orderNo.trim().length() == 0) {
            return;
        }
@@ -1121,20 +1123,20 @@
        if (record == null) {
            return;
        }
        record.setOrderNo(orderNo);
        record.setUpdateTime(new Date());
        record.setState(UserSystemCouponRecord.STATE_FAIL_DRAWBACK);
        userSystemCouponRecordService.updateByPrimaryKeySelective(record);
        // 券退回
        sendBackCoupon(record.getUserSystemCoupon(), record);
    }
    @Transactional
    @Override
    public void updateStateByArrivalAccount(String orderNo) throws Exception {
        if (orderNo == null || orderNo.trim().length() == 0) {
            return;
        }
@@ -1143,18 +1145,18 @@
        if (record == null) {
            return;
        }
        record.setOrderNo(orderNo);
        record.setUpdateTime(new Date());
        record.setState(UserSystemCouponRecord.STATE_SUCCESS);
        userSystemCouponRecordService.updateByPrimaryKeySelective(record);
        // 消息推送
        if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
            userOtherMsgNotificationService.welfareCouponUsed(record.getUserSystemCoupon(), orderNo);
        } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
            userOtherMsgNotificationService.freeSheetCouponUsed(record.getUserSystemCoupon(), orderNo);
        }
        }
    }
    @Transactional
@@ -1164,22 +1166,22 @@
        if (list == null || list.size() == 0) {
            return;
        }
        for (UserSystemCoupon userSystemCoupon: list) {
        for (UserSystemCoupon userSystemCoupon : list) {
            // 更新券已过期
            userSystemCoupon.setState(UserSystemCoupon.STATE_OVERDUE);
            userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
            SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
            if (systemCoupon == null) {
                continue;
            }
            SystemCoupon baseCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
            if (baseCoupon == null || baseCoupon.getId() == null) {
                continue;
            }
            // 消息推送
            try {
                if (baseCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
@@ -1189,8 +1191,8 @@
                } else if (baseCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
                    userOtherMsgNotificationService.rewardCouponAlreadyOutOfDate(userSystemCoupon);
                }
            } catch(Exception e) {
            } catch (Exception e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
@@ -1199,32 +1201,32 @@
            }
        }
    }
    @Transactional
    @Override
    public void  sendBackTimeOutCoupon(Long uid) {
    public void sendBackTimeOutCoupon(Long uid) {
        // 超过120秒 未被匹配的券
        List<UserSystemCouponRecord> list = userSystemCouponRecordService.getCouponByUsingTimeOut(uid, 120L);
        if (list == null || list.size() == 0) {
            return;
        }
        for (UserSystemCouponRecord couponRecord: list) {
        for (UserSystemCouponRecord couponRecord : list) {
            // 更新状态:匹配超时
            couponRecord.setState(UserSystemCouponRecord.STATE_WAIT_TIME_OUT);
            couponRecord.setUpdateTime(new Date());
            userSystemCouponRecordService.updateByPrimaryKeySelective(couponRecord);
            UserSystemCoupon userSystemCoupon = couponRecord.getUserSystemCoupon();
            int expiryDay = 15;
            SystemCoupon systemCoupon = userSystemCoupon.getSystemCoupon();
            SystemCoupon coupon= systemCouponService.selectByPrimaryKey(systemCoupon.getId());
            SystemCoupon coupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
            if (coupon != null) {
                expiryDay = coupon.getExpiryDay();
            }
            }
            // 结束日期
            Date endTime = null;
            try {
@@ -1237,7 +1239,7 @@
            // 状态初始化
            userSystemCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
            userSystemCoupon.setUseTime(null);
            // 有效期时间重新定义
            userSystemCoupon.setStartTime(new Date());
            userSystemCoupon.setEndTime(endTime);
@@ -1245,29 +1247,29 @@
            userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
        }
    }
    @Transactional
    @Override
    public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment,
            Long auctionId) throws  Exception{
    public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId)
            throws Exception {
        boolean isfree = false;
        if (uid == null || payment == null || auctionId == null || orderNo == null ||
                orderNo.trim().length() == 0 ) {
        if (uid == null || payment == null || auctionId == null || orderNo == null || orderNo.trim().length() == 0) {
            throw new Exception("传递参数不能为空");
        }
        // 查询等待匹配的券记录
        List<UserSystemCouponRecord> list = userSystemCouponRecordService.getRecordByState(uid, UserSystemCouponRecord.STATE_WAIT);
        List<UserSystemCouponRecord> list = userSystemCouponRecordService.getRecordByState(uid,
                UserSystemCouponRecord.STATE_WAIT);
        if (list == null || list.size() == 0) {
            return  isfree;
            return isfree;
        }
        // 匹配
        boolean matching = false;
        UserSystemCouponRecord record = null;
        for (UserSystemCouponRecord userSystemCouponRecord : list) {
            Long goodId = userSystemCouponRecord.getGoodId();
            if (auctionId.equals(goodId)) {
@@ -1276,57 +1278,58 @@
                break;
            }
        }
        // 商品匹配成功
        if (matching) {
            record.setOrderNo(orderNo);
            record.setUpdateTime(new Date());
            UserSystemCoupon userSystemCoupon = record.getUserSystemCoupon();
            if (payment.compareTo(new BigDecimal(10)) > 0) {
                // 更新记录 -- 金额不匹配  大10元
                // 更新记录 -- 金额不匹配 大10元
                record.setState(UserSystemCouponRecord.STATE_FAIL_RULE);
                userSystemCouponRecordService.updateByPrimaryKeySelective(record);
                // 退回券
                sendBackCoupon(userSystemCoupon, record);
            } else {
                // 免单匹配成功
                isfree = true;
                //更新记录--免单中
                // 更新记录--免单中
                record.setState(UserSystemCouponRecord.STATE_FREE_ON);
                userSystemCouponRecordService.updateByPrimaryKeySelective(record);
                // 券结束使用
                userSystemCoupon.setState(UserSystemCoupon.STATE_END_USE);
                userSystemCoupon.setUpdateTime(new Date());
                userSystemCouponMapper.updateByPrimaryKeySelective(userSystemCoupon);
                String couponType = record.getCouponType();
                if (couponType == null || couponType.trim().length() == 0) {
                    throw new Exception("券类型未被记录");
                }
                 if (CouponTypeEnum.welfareFreeCoupon.name().equals(couponType)) {
                    userOtherMsgNotificationService.welfareCouponUsing(userSystemCoupon,orderNo,payment);
                if (CouponTypeEnum.welfareFreeCoupon.name().equals(couponType)) {
                    userOtherMsgNotificationService.welfareCouponUsing(userSystemCoupon, orderNo, payment);
                } else if (CouponTypeEnum.freeCoupon.name().equals(couponType)) {
                    userOtherMsgNotificationService.freeSheetCouponUsing(userSystemCoupon, orderNo, payment);
                }
                }
            }
        }
        return isfree;
    }
    /**
     * 退回券 初始数据
     *
     * @param userSystemCoupon
     */
    public void sendBackCoupon(UserSystemCoupon userSystemCoupon, UserSystemCouponRecord record) throws Exception{
    public void sendBackCoupon(UserSystemCoupon userSystemCoupon, UserSystemCouponRecord record) throws Exception {
        int expiryDay = 15;
@@ -1351,55 +1354,53 @@
        // 有效期时间重新定义
        userSystemCoupon.setStartTime(new Date());
        userSystemCoupon.setEndTime(endTime);
        userSystemCoupon.setUpdateTime(new Date());
        userSystemCouponMapper.updateByPrimaryKey(userSystemCoupon);
        if (CouponTypeEnum.welfareFreeCoupon.name().equals(record.getCouponType())) {
            userOtherMsgNotificationService.welfareCouponDrawBack(userSystemCoupon, record.getOrderNo());
        } else if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())) {
            userOtherMsgNotificationService.freeSheetCouponDrawBack(userSystemCoupon, record.getOrderNo());
        }
        }
    }
    @Override
    @Transactional
    public void copyLotteryPrize(Long uid, int platform, String device) throws Exception {
        if (uid == null || device == null) {
            return;
        }
        // 未登陆之前抽奖记录
        List<DeviceLotteryRecord> list = deviceLotteryRecordService.listByPlatformAndDevice(platform, device);
        if (list == null || list.size() == 0) {
            return;
        }
        // 获取额外信息
        UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
        // 已经抽过奖的或者已经进入过抽奖页面的
        if (userInfoExtra != null && userInfoExtra.getLotteryNewbies() != null) {
            return;
        }
        // 是否有过订单:返利、分享订单
        boolean hasOrder = commonOrderCountService.hasRebateAndShareOrder(uid);
        if (hasOrder) {
            return;
        }
        int coupon = 0;
        for (DeviceLotteryRecord reviceLotteryRecord: list) {
        for (DeviceLotteryRecord reviceLotteryRecord : list) {
            // 删除记录
            deviceLotteryRecordService.deleteByPrimaryKey(reviceLotteryRecord.getId());
            Long systemCouponId = reviceLotteryRecord.getSystemCouponId();
            if (systemCouponId == null) {
                continue;
@@ -1408,7 +1409,7 @@
            if (systemCoupon == null) {
                continue;
            }
            int stateActivated = 1;
            if (systemCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
                // 福利券状态
@@ -1418,12 +1419,12 @@
                    stateActivated = 0;
                }
            }
            // 结束日期
            String endDay = DateUtil.plusDay(systemCoupon.getExpiryDay(), new Date());
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            Date endTime = format.parse(endDay);
            UserSystemCoupon userCoupon = new UserSystemCoupon();
            userCoupon.setUid(uid);
            userCoupon.setSource(UserSystemCoupon.SOURCE_CHOUJIANG);
@@ -1436,10 +1437,10 @@
            userCoupon.setUpdateTime(new Date());
            // 插入数据库
            insertSelective(userCoupon);
            // 券数量
            coupon ++;
            coupon++;
            // 消息推送
            try {
                if (systemCoupon.getType() == CouponTypeEnum.welfareFreeCoupon) {
@@ -1447,10 +1448,10 @@
                } else if (systemCoupon.getType() == CouponTypeEnum.freeCoupon) {
                    userOtherMsgNotificationService.freeSheetCouponGet(userCoupon);
                } else if (systemCoupon.getType() == CouponTypeEnum.rebatePercentCoupon) {
                    userOtherMsgNotificationService.rewardCouponGet(userCoupon,systemCoupon.getPercent().intValue());
                    userOtherMsgNotificationService.rewardCouponGet(userCoupon, systemCoupon.getPercent().intValue());
                }
            } catch(Exception e) {
            } catch (Exception e) {
                try {
                    LogHelper.errorDetailInfo(e);
                } catch (Exception e1) {
@@ -1458,13 +1459,13 @@
                }
            }
        }
        if(userInfoExtra == null) {
        if (userInfoExtra == null) {
            userInfoExtra = new UserInfoExtra();
            userInfoExtra.setUserInfo(new UserInfo(uid));
        }
        userInfoExtra.setLotteryNewbies(Constant.MAX_COUNT_LOTTERY_NEWBIES-list.size());
        userInfoExtra.setLotteryNewbies(Constant.MAX_COUNT_LOTTERY_NEWBIES - list.size());
        Integer couponNews = userInfoExtra.getCouponNews();
        if (couponNews == null) {
            userInfoExtra.setCouponNews(coupon);
@@ -1472,8 +1473,7 @@
            userInfoExtra.setCouponNews(couponNews + coupon);
        }
        userInfoExtraService.saveUserInfoExtra(userInfoExtra);
    }
}