package com.yeshi.fanli.service.impl.msg; import java.math.BigDecimal; import java.util.Date; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.google.gson.Gson; import com.yeshi.fanli.dto.msg.MsgOtherCouponActivateDTO; import com.yeshi.fanli.dto.msg.MsgOtherCouponContentDTO; import com.yeshi.fanli.dto.msg.MsgOtherExchangeContentDTO; import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO; import com.yeshi.fanli.dto.msg.MsgOtherRewardIntegralDTO; import com.yeshi.fanli.dto.msg.MsgOtherSystemGiveDTO; import com.yeshi.fanli.dto.msg.MsgOtherTaoLiJinContentDTO; import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail; import com.yeshi.fanli.entity.bus.msg.MsgOtherDetail.MsgTypeOtherTypeEnum; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserSystemCoupon; import com.yeshi.fanli.exception.msg.MsgOtherDetailException; import com.yeshi.fanli.service.inter.msg.MsgOtherDetailService; import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.msg.MsgOtherCouponContentDTOFactory; import com.yeshi.fanli.util.factory.msg.MsgOtherDetailFactory; @Service public class UserOtherMsgNotificationServiceImpl implements UserOtherMsgNotificationService { @Resource private MsgOtherDetailService msgOtherDetailService; private Integer getLeftDay(UserSystemCoupon coupon) { if (coupon != null && coupon.getEndTime() != null) { int cha = TimeUtil.getDayDifferenceCount(new Date(), coupon.getEndTime()); if (cha < 0) return 0; else return cha + 1; } else return null; } @Override public void welfareCouponGet(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponGet(getLeftDay(coupon), coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "至少成功邀请1个队员后可激活")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponActive(UserSystemCoupon coupon, UserInfo worker) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponActive(getLeftDay(coupon), "成功邀请队员:" + worker.getNickName(), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "可在首页-免单商品-选择商品-使用")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponUsing(UserSystemCoupon coupon, String orderId, BigDecimal money) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponUsing(orderId, money, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "实付款-返利=0元购(免单)")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponUsed(UserSystemCoupon coupon, String orderId) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponUsed(orderId, "实付款-返利=0元购(免单)", coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "参与其他活动可获得更多免单券")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponWillOutOfDate(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createWelfareCouponWillOutOfDate(getLeftDay(coupon), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "至少成功邀请1个队员后可激活")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponAlreadyOutOfDate(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createWelfareCouponAlreadyOutOfDate(coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { MsgOtherDetail detail = MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "参与其他活动可获得更多免单券"); detail.setCreateTime(coupon.getEndTime()); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void welfareCouponDrawBack(UserSystemCoupon coupon, String orderId) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponDrawBack(getLeftDay(coupon), orderId, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponWelfareMianDan, "退回后依然可在有效期内使用")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponGet(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createCouponGet(getLeftDay(coupon), coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "首页-免单-选择商品-使用")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponUsing(UserSystemCoupon coupon, String orderId, BigDecimal money) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createCouponUsing(orderId, money, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "实付款-返利=0元购(免单)")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponUsed(UserSystemCoupon coupon, String orderId) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponUsed(orderId, "实付款-返利=0元购(免单)", coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "参与其他活动可获得更多免单券")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponWillOutOfDate(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createWelfareCouponWillOutOfDate(getLeftDay(coupon), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "至少成功邀请1个队员后可激活")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponAlreadyOutOfDate(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createWelfareCouponAlreadyOutOfDate(coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { MsgOtherDetail detail = MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "参与其他活动可获得更多免单券"); detail.setCreateTime(coupon.getEndTime()); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void freeSheetCouponDrawBack(UserSystemCoupon coupon, String orderId) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponDrawBack(getLeftDay(coupon), orderId, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponMianDan, "退回后依然可在有效期内使用")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void rewardCouponGet(UserSystemCoupon coupon, int percent) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createRewardCouponGet(getLeftDay(coupon), coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponReward, "返利订单已到账再返" + percent + "%")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void rewardCouponUsed(UserSystemCoupon coupon, BigDecimal oldFanLiMoney, BigDecimal rewardMoney, String orderId) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createRewardCouponUsed(oldFanLiMoney, rewardMoney, orderId); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponReward, "完成金币任务,兑换更多奖励券")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void rewardCouponWillOutOfDate(UserSystemCoupon coupon, int percent) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createRewardCouponWillOutOfDate( getLeftDay(coupon), coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponReward, "返利订单已到账再返" + percent + "%")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void rewardCouponAlreadyOutOfDate(UserSystemCoupon coupon) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createRewardCouponAlreadyOutOfDate(coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { MsgOtherDetail detail = MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, MsgTypeOtherTypeEnum.couponReward, "完成金币任务,兑换更多奖励券"); detail.setCreateTime(coupon.getEndTime()); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void couponUsingFreeSheet(UserSystemCoupon coupon, String orderId, BigDecimal money, MsgTypeOtherTypeEnum type) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createCouponUsing(orderId, money, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, type, "实付款-返利=0元购(免单)")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void couponUsedFreeSheet(UserSystemCoupon coupon, String orderId, MsgTypeOtherTypeEnum type) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponUsed(orderId, "实付款-返利=0元购(免单)", coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, type, "参与其他活动可获得更多免单券")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void couponDrawBack(UserSystemCoupon coupon, String orderId, MsgTypeOtherTypeEnum type) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory.createWelfareCouponDrawBack(getLeftDay(coupon), orderId, coupon.getStartTime(), coupon.getEndTime()); try { msgOtherDetailService.addMsgOtherDetail(MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, type, "退回后依然可在有效期内使用")); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void outOfDate(UserSystemCoupon coupon, MsgTypeOtherTypeEnum type) { if (coupon == null || coupon.getUid() == null) return; MsgOtherCouponContentDTO dto = MsgOtherCouponContentDTOFactory .createRewardCouponAlreadyOutOfDate(coupon.getSource(), coupon.getStartTime(), coupon.getEndTime()); try { MsgOtherDetail detail = MsgOtherDetailFactory.createCouponMsg(coupon.getUid(), coupon.getId(), dto, type, "参与活动可获取更多奖励券"); detail.setCreateTime(coupon.getEndTime()); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void giveCouponActivateMsg(Long uid, String beiZhu, MsgOtherCouponActivateDTO content) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(content)); detail.setType(MsgTypeOtherTypeEnum.couponActivate); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void taoLiJinMsg(Long uid, String beiZhu, MsgOtherTaoLiJinContentDTO content) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(content)); detail.setType(MsgTypeOtherTypeEnum.taoLiJin); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void tokenGiveMsg(Long uid, String beiZhu, MsgOtherGiveContentDTO content) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(content)); detail.setType(MsgTypeOtherTypeEnum.give); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void exchangeMsg(Long uid, String beiZhu, MsgOtherExchangeContentDTO content) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(content)); detail.setType(MsgTypeOtherTypeEnum.exchange); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void firstOrderRewardMsg(Long uid, String beiZhu, MsgOtherRewardIntegralDTO content) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(content)); detail.setType(MsgTypeOtherTypeEnum.firstOrderReward); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void systemGiveRewardCoupon(Long uid, String beiZhu, MsgOtherSystemGiveDTO dto) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(dto)); detail.setType(MsgTypeOtherTypeEnum.systemGive); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } @Override public void taoLiJinExchangeMsg(Long uid, String beiZhu, MsgOtherRewardIntegralDTO dto) { try { MsgOtherDetail detail = new MsgOtherDetail(); detail.setBeiZhu(beiZhu); detail.setCreateTime(new Date()); detail.setRead(false); detail.setUser(new UserInfo(uid)); detail.setContent(new Gson().toJson(dto)); detail.setType(MsgTypeOtherTypeEnum.taoLiJinExchange); msgOtherDetailService.addMsgOtherDetail(detail); } catch (MsgOtherDetailException e) { e.printStackTrace(); } } }