| | |
| | | package com.yeshi.fanli.service.impl.user;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.context.annotation.Lazy;
|
| | | import org.springframework.core.task.TaskExecutor;
|
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
| | | import org.springframework.scheduling.annotation.Async;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | | import org.springframework.transaction.support.DefaultTransactionDefinition;
|
| | | import org.yeshi.utils.DateUtil;
|
| | | import org.yeshi.utils.entity.DateInfo;
|
| | |
|
| | | import com.aliyun.openservices.ons.api.Message;
|
| | | import com.aliyun.openservices.ons.api.Producer;
|
| | | import com.aliyun.openservices.ons.api.SendResult;
|
| | | import com.aliyun.openservices.ons.api.transaction.LocalTransactionExecuter;
|
| | | import com.aliyun.openservices.ons.api.transaction.TransactionProducer;
|
| | |
| | | import com.yeshi.fanli.dao.mybatis.user.UserSystemCouponMapper;
|
| | | import com.yeshi.fanli.dto.mq.user.UserTopicTagEnum;
|
| | | import com.yeshi.fanli.dto.mq.user.body.UserSystemCouponUseMQMsg;
|
| | | import com.yeshi.fanli.entity.SystemEnum;
|
| | | import com.yeshi.fanli.entity.accept.AcceptData;
|
| | | import com.yeshi.fanli.entity.bus.user.HongBaoV2;
|
| | | import com.yeshi.fanli.entity.bus.user.Order;
|
| | | import com.yeshi.fanli.entity.bus.user.TokenRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.*;
|
| | | import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfo;
|
| | | import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCouponActivate;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
|
| | | import com.yeshi.fanli.entity.bus.user.UserSystemCouponRecord;
|
| | | 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;
|
| | |
| | | import com.yeshi.fanli.service.inter.money.UserMoneyDetailService;
|
| | | import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderCountService;
|
| | | import com.yeshi.fanli.service.inter.order.CommonOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoOrderService;
|
| | | import com.yeshi.fanli.service.inter.order.HongBaoV2Service;
|
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMapService;
|
| | | import com.yeshi.fanli.service.inter.order.OrderService;
|
| | | import com.yeshi.fanli.service.inter.push.PushCouponRecordService;
|
| | | import com.yeshi.fanli.service.inter.push.PushCouponService;
|
| | | import com.yeshi.fanli.service.inter.user.TokenRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponActivateService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService;
|
| | | import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
|
| | | import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
|
| | | import com.yeshi.fanli.service.inter.order.*;
|
| | | import com.yeshi.fanli.service.inter.user.*;
|
| | | import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.TokenUtil;
|
| | | import com.yeshi.fanli.util.VersionUtil;
|
| | | import com.yeshi.fanli.service.manger.msg.RocketMQManager;
|
| | | import com.yeshi.fanli.util.*;
|
| | | import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService;
|
| | | import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
|
| | | import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
|
| | |
| | | import com.yeshi.fanli.vo.order.CommonOrderVO;
|
| | | import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO;
|
| | | import com.yeshi.fanli.vo.user.UserSystemCouponVO;
|
| | |
|
| | | import net.sf.json.JSONObject;
|
| | | import org.springframework.context.annotation.Lazy;
|
| | | import org.springframework.core.task.TaskExecutor;
|
| | | import org.springframework.jdbc.datasource.DataSourceTransactionManager;
|
| | | import org.springframework.scheduling.annotation.Async;
|
| | | import org.springframework.stereotype.Service;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | | import org.springframework.transaction.support.DefaultTransactionDefinition;
|
| | | import org.yeshi.utils.DateUtil;
|
| | | import org.yeshi.utils.entity.DateInfo;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | | import java.math.BigDecimal;
|
| | | import java.text.ParseException;
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.*;
|
| | |
|
| | | @Service
|
| | | public class UserSystemCouponServiceImpl implements UserSystemCouponService {
|
| | |
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | |
|
| | | @Resource
|
| | | private ThreeSaleSerivce threeSaleSerivce;
|
| | |
|
| | | @Resource
|
| | | private UserOtherMsgNotificationService userOtherMsgNotificationService;
|
| | |
|
| | | @Lazy
|
| | | @Resource
|
| | | private CommonOrderCountService commonOrderCountService;
|
| | |
|
| | | @Resource
|
| | | @Lazy
|
| | | private PushCouponService pushCouponService;
|
| | |
|
| | | @Resource
|
| | | private PushCouponRecordService pushCouponRecordService;
|
| | |
|
| | | @Resource
|
| | | private TokenRecordService tokenRecordService;
|
| | |
| | | @Resource
|
| | | private UserSystemCouponActivateService userSystemCouponActivateService;
|
| | |
|
| | | @Resource(name = "producer")
|
| | | private Producer producer;
|
| | | |
| | | @Resource
|
| | | private RocketMQManager rocketMQManager;
|
| | |
|
| | | @Resource
|
| | | private UserInviteService userInviteService;
|
| | |
|
| | |
| | | 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{
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | 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, "参数不正确");
|
| | | }
|
| | | |
| | |
|
| | | SystemCoupon coupon = systemCouponService.getCouponByType(typeEnum.name());
|
| | | if (coupon == null) {
|
| | | throw new UserSystemCouponException(1, "券类型不正确");
|
| | | }
|
| | | |
| | |
|
| | | // 激活状态
|
| | | int stateActivated = 0;
|
| | | // 自购免单券、赠送免单券可直接使用
|
| | | if (coupon.getType() == CouponTypeEnum.freeCouponBuy || coupon.getType() == CouponTypeEnum.freeCouponGive) {
|
| | | stateActivated = 1;
|
| | | }
|
| | | |
| | |
|
| | | // 有效时长
|
| | | Integer expiryDay = null;
|
| | | if (stateActivated == 0)
|
| | | expiryDay = coupon.getActivateDay();
|
| | | if (expiryDay == null || expiryDay == 0)
|
| | | expiryDay = coupon.getExpiryDay();
|
| | | |
| | |
|
| | | // 计算结束日期
|
| | | Date nowTime = new Date();
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, nowTime);
|
| | |
| | | endDay += " 23:59:59";
|
| | | }
|
| | | Date endTime = format.parse(endDay);
|
| | | |
| | |
|
| | | UserSystemCoupon userSystemCoupon = null;
|
| | | for (int i = 0; i < num; i ++) {
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | for (int i = 0; i < num; i++) {
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUid(uid);
|
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | |
| | | if (typeEnum == CouponTypeEnum.freeCoupon) {
|
| | | userSystemCouponActivateService.addActivateRecord(userCoupon.getId());
|
| | | }
|
| | | |
| | |
|
| | | if (num == 1) {
|
| | | userSystemCoupon = userCoupon;
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | | }
|
| | |
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() { |
| | | 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();
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | // 福利中心红点
|
| | | UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (extra != null) {
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | updateExtra.setId(extra.getId());
|
| | | if (extra.getCouponNews() == null) {
|
| | | updateExtra.setCouponNews(1);
|
| | |
| | | }
|
| | | }
|
| | | });
|
| | | |
| | | return userSystemCoupon;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | return userSystemCoupon;
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | 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) {
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public UserSystemCoupon freeCouponWinBySystem(Long uid, CouponTypeEnum typeEnum, String source, int num, boolean notify,
|
| | | Integer expiryDay, Integer activated) throws UserSystemCouponException, Exception {
|
| | | if (typeEnum == null || uid == null || StringUtil.isNullOrEmpty(source) || num < 1) {
|
| | | throw new UserSystemCouponException(1, "参数不正确");
|
| | | }
|
| | | |
| | |
|
| | | SystemCoupon coupon = systemCouponService.getCouponByType(typeEnum.name());
|
| | | if (coupon == null) {
|
| | | throw new UserSystemCouponException(1, "券类型不正确");
|
| | | }
|
| | |
|
| | | // 激活状态
|
| | | // 自购免单券、赠送免单券可直接使用
|
| | | if (coupon.getType() == CouponTypeEnum.freeCouponBuy || coupon.getType() == CouponTypeEnum.freeCouponGive) {
|
| | | activated = 1;
|
| | | }
|
| | |
|
| | | // 有效时长
|
| | | if (expiryDay == null) {
|
| | | if (activated == 0)
|
| | | expiryDay = coupon.getActivateDay();
|
| | | if (expiryDay == null || expiryDay == 0)
|
| | | expiryDay = coupon.getExpiryDay();
|
| | | }
|
| | |
|
| | | // 计算结束日期
|
| | | Date nowTime = new Date();
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, nowTime);
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
| | | if (endDay != null && endDay.trim().length() > 0) {
|
| | | endDay += " 23:59:59";
|
| | | }
|
| | | Date endTime = format.parse(endDay);
|
| | |
|
| | | UserSystemCoupon userSystemCoupon = null;
|
| | | for (int i = 0; i < num; i++) {
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUid(uid);
|
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | | userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | | userCoupon.setStateActivated(activated);
|
| | | userCoupon.setStartTime(nowTime);
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setCreateTime(nowTime);
|
| | | userCoupon.setUpdateTime(nowTime);
|
| | | userSystemCouponMapper.insertSelective(userCoupon);
|
| | | // 需要激活券
|
| | | if (typeEnum == CouponTypeEnum.freeCoupon) {
|
| | | userSystemCouponActivateService.addActivateRecord(userCoupon.getId());
|
| | | }
|
| | |
|
| | | if (num == 1) {
|
| | | userSystemCoupon = userCoupon;
|
| | | }
|
| | | }
|
| | |
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | if (notify) { // 消息推送
|
| | | try {
|
| | | userOtherMsgNotificationService.freeCouponWinMsg(uid, typeEnum.getDesc(), source, num, "成功获得",
|
| | | nowTime, endTime);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | |
|
| | | // 福利中心红点
|
| | | UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (extra != null) {
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | updateExtra.setId(extra.getId());
|
| | | if (extra.getCouponNews() == null) {
|
| | | updateExtra.setCouponNews(1);
|
| | | } else {
|
| | | updateExtra.setCouponNews(extra.getCouponNews() + 1);
|
| | | }
|
| | | userInfoExtraService.updateByPrimaryKeySelective(updateExtra);
|
| | | }
|
| | | }
|
| | | });
|
| | |
|
| | | return userSystemCoupon;
|
| | | }
|
| | | |
| | | @Override
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | 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, "参数不正确");
|
| | | }
|
| | |
|
| | | String name = CouponTypeEnum.rebatePercentCoupon.name();
|
| | | SystemCoupon coupon = systemCouponService.getCouponByTypeAndPercent(name, percent);
|
| | | if (coupon == null) {
|
| | | throw new UserSystemCouponException(1, "券类型不正确");
|
| | | }
|
| | | |
| | |
|
| | | // 计算结束日期
|
| | | Date nowTime = new Date();
|
| | | Integer expiryDay = coupon.getExpiryDay();
|
| | |
| | | endDay += " 23:59:59";
|
| | | }
|
| | | Date endTime = format.parse(endDay);
|
| | | |
| | |
|
| | | UserSystemCoupon userSystemCoupon = null;
|
| | | for (int i = 0; i < num; i ++) {
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | for (int i = 0; i < num; i++) {
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUid(uid);
|
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | |
| | | userSystemCouponMapper.insertSelective(userCoupon);
|
| | | if (num == 1) {
|
| | | userSystemCoupon = userCoupon;
|
| | | }
|
| | | }
|
| | | |
| | | }
|
| | | }
|
| | |
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() { |
| | | public void run() {
|
| | | if (notify) { // 消息推送
|
| | | try {
|
| | | userOtherMsgNotificationService.rewardCouponWinMsg(uid, source, num, "成功获得", nowTime, endTime);
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | // 福利中心红点
|
| | | UserInfoExtra extra = userInfoExtraService.getUserInfoExtra(uid);
|
| | | if (extra != null) {
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | UserInfoExtra updateExtra = new UserInfoExtra();
|
| | | updateExtra.setId(extra.getId());
|
| | | if (extra.getCouponNews() == null) {
|
| | | updateExtra.setCouponNews(1);
|
| | |
| | | }
|
| | | }
|
| | | });
|
| | | |
| | | return userSystemCoupon;
|
| | | }
|
| | | |
| | | |
| | | |
| | | |
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | return userSystemCoupon;
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getUserCouponVOList(long start, int count, Long uid, boolean changeJump)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
| | | if (userInfoExtra != null) {
|
| | | inviteCode = userInfoExtra.getInviteCode();
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | for (UserSystemCouponVO userCouponVO : listVO) {
|
| | |
|
| | |
| | | // 免单券、 福利免单券
|
| | |
|
| | | // 免单商品列表
|
| | | jumpLink.put("url", configService.get(ConfigKeyEnum.freeGoodsList.getKey()));
|
| | | jumpLink.put("url", configService.getValue(ConfigKeyEnum.freeGoodsList.getKey(),system));
|
| | |
|
| | | jumpBtn = new HashMap<String, Object>();
|
| | | jumpBtn.put("params", jumpLink);
|
| | |
| | |
|
| | | } else if (UserSystemCoupon.STATE_IN_USE == state) {
|
| | | // 使用中
|
| | | userCouponVO.setInUseExplain(configService.get(ConfigKeyEnum.freeCouponUsingHelp.getKey()));
|
| | | userCouponVO.setInUseExplain(configService.getValue(ConfigKeyEnum.freeCouponUsingHelp.getKey(),system));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getEnableListByCouponId(Long uid, Integer activated, List<SystemCoupon> couponList)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
|
| | | public List<UserSystemCouponVO> getEnableListByCouponId(Long uid, Integer activated, List<SystemCoupon> couponList) {
|
| | | List<Long> listCouponId = new ArrayList<Long>();
|
| | | for (SystemCoupon systemCoupon : couponList) {
|
| | | listCouponId.add(systemCoupon.getId());
|
| | | }
|
| | |
|
| | | List<UserSystemCouponVO> listVO = userSystemCouponMapper.getEnableListByCouponId(uid, activated, listCouponId);
|
| | |
|
| | | if (listVO == null || listVO.size() == 0) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
|
| | | SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
|
| | | for (UserSystemCouponVO userCouponVO : listVO) {
|
| | |
|
| | | SystemCoupon systemCoupon = userCouponVO.getSystemCoupon();
|
| | | if (systemCoupon == null) {
|
| | | continue; // 券信息不完整
|
| | | }
|
| | |
|
| | | for (SystemCoupon coupon : couponList) {
|
| | | if (coupon.getId().equals(systemCoupon.getId()) || coupon.getId() == systemCoupon.getId()) {
|
| | | systemCoupon = coupon;
|
| | |
| | | Date startTime = userCouponVO.getStartTime();
|
| | | Date endTime = userCouponVO.getEndTime();
|
| | | 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;
|
| | | |
| | | try {
|
| | | differentDays = DateUtil.daysBetween(sdf2.format(new Date()), sdf2.format(endTime)) + 1;
|
| | | } catch (ParseException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | if (differentDays < 0) {
|
| | | differentDays = 0;
|
| | | }
|
| | |
| | | return hasCoupon;
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getOrderCouponList(Long uid) throws UserSystemCouponException, Exception {
|
| | |
|
| | |
| | | return getEnableListByCouponId(uid, 1, couponList);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getFreeCouponList(Long uid) {
|
| | | // 过期券
|
| | | updateInvalidSate(uid);
|
| | |
|
| | | // 退回券
|
| | | sendBackTimeOutCoupon(uid);
|
| | |
|
| | | // 商品相关的券
|
| | | List<SystemCoupon> couponList = systemCouponService.getGoodsCouponList();
|
| | | if (couponList == null || couponList.size() == 0) {
|
| | | return null;
|
| | | }
|
| | | return getEnableListByCouponId(uid, null, couponList);
|
| | | }
|
| | |
|
| | | |
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getGoodsCouponList(Long uid, Long auctionId)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
| | |
|
| | | return list;
|
| | | }
|
| | |
|
| | | |
| | | @Override
|
| | | public long countUsableFreeCouponForBuy(Long uid) {
|
| | | if (uid == null)
|
| | |
| | |
|
| | | return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public long countGiveFreeCoupon(Long uid) {
|
| | | if (uid == null)
|
| | |
| | |
|
| | | return userSystemCouponMapper.countUsableByUid(uid, listCouponId);
|
| | | }
|
| | |
|
| | | |
| | |
|
| | | @Override
|
| | | public long countUsableRewardCoupon(Long uid) {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | if (weiquan) {
|
| | | throw new UserSystemCouponException(1, "亲,很遗憾,售后维权订单不能使用返利奖励券~");
|
| | | }
|
| | |
|
| | | |
| | | // 订单
|
| | | List<CommonOrderVO> listVo = commonOrderService.listGroupOrderNoByUid(0, 1, uid, 2, 1,1, orderNo, null, |
| | | null, null, sourceType);
|
| | | if (listVo == null || listVo.size() == 0) |
| | | 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, "亲,很遗憾,该订单已不能使用返利奖励券~");
|
| | | |
| | |
|
| | | CommonOrderVO orderVO = listVo.get(0);
|
| | | |
| | |
|
| | | // 2.1新版
|
| | | Date thirdCreateTime = orderVO.getThirdCreateTime();
|
| | | Date accountTime = orderVO.getAccountTime();
|
| | | if (thirdCreateTime == null || accountTime == null) |
| | | if (thirdCreateTime == null || accountTime == null)
|
| | | throw new UserSystemCouponException(1, "该订单不能使用奖励券");
|
| | | |
| | |
|
| | | long downOrderTime = thirdCreateTime.getTime();
|
| | | long limitDate = TimeUtil.convertDateToTemp(Constant.VIP_ONLINE_TIME);
|
| | | if (downOrderTime > limitDate) {
|
| | |
| | | valid = true;
|
| | | }
|
| | | }
|
| | | |
| | |
|
| | | if (!valid)
|
| | | throw new UserSystemCouponException(1, "该订单不能使用奖励券");
|
| | | }
|
| | |
|
| | | BigDecimal hongBao = orderVO.getHongBao();
|
| | | |
| | | // 红包状态
|
| | | Integer hongBaoState = orderVO.getHongBaoState();
|
| | | // 红包类型
|
| | |
| | | if (order == null)
|
| | | throw new UserSystemCouponException(1, "该订单不存在");
|
| | |
|
| | | // 使用奖励券 金额额限制
|
| | | if (hongBao.compareTo(Constant.REWARD_COUPON_LIMIT_MONEY) > 0){
|
| | | throw new UserSystemCouponException(1, "该订单不能使用奖励券");
|
| | | }
|
| | | |
| | | /* 奖金计算 以及相关红包信息处理 */
|
| | |
|
| | | // 转换成小数点
|
| | |
| | |
|
| | | UserSystemCouponUseMQMsg mqMsg = new UserSystemCouponUseMQMsg(userSystemCoupon.getId(), order.getOrderId(),
|
| | | sourceType, systemCoupon.getType().name());
|
| | | |
| | |
|
| | | if (Constant.IS_TEST) {
|
| | | useRewardCouponCore(userSystemCoupon, money, hongBao, uid, order);
|
| | | } else { // 事务消息
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void useRewardCouponCore(UserSystemCoupon userSystemCoupon, BigDecimal money, BigDecimal hongBao, Long uid,
|
| | | Order order) throws Exception {
|
| | | org.springframework.transaction.TransactionStatus transactionStatus = transactionManager
|
| | |
| | | // 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);
|
| | |
|
| | |
| | | couponRecord.setUpdateTime(date);
|
| | | userSystemCouponRecordService.insertSelective(couponRecord);
|
| | |
|
| | | // 插入资金通知
|
| | | userMoneyMsgNotificationService.orderReward(uid, order.getOrderId(), order.getOrderType(), money,
|
| | | userInfoService.selectByPKey(uid).getMyHongBao());
|
| | | // 消息推送
|
| | | int goodsCount = 0;
|
| | | String orderId = order.getOrderId();
|
| | | Integer orderType = order.getOrderType();
|
| | | List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(orderType, orderId);
|
| | | if (orderList != null && orderList.size() > 0) {
|
| | | for (CommonOrder co : orderList) {
|
| | | goodsCount += co.getCount();
|
| | | }
|
| | | }
|
| | | |
| | | // 资金消息
|
| | | UserInfo userInfo = userInfoService.selectByPKey(uid);
|
| | | userMoneyMsgNotificationService.rewardCounponReceived(uid, orderId, orderType, goodsCount,
|
| | | money, userInfo.getMyHongBao(), order.getThirdCreateTime());
|
| | | |
| | | // 券使用成功消息
|
| | | try {
|
| | | userOtherMsgNotificationService.rewardCouponEndMsg(uid, userSystemCoupon.getSource(), 1, "使用成功");
|
| | | } catch (Exception e) {
|
| | |
| | |
|
| | | // 查询记录
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,
|
| | | UserSystemCouponRecord.STATE_SUCCESS);
|
| | | sourceType, UserSystemCouponRecord.STATE_SUCCESS);
|
| | | if (record == null) {
|
| | | throw new UserSystemCouponException(1, "没有使用券记录");
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | Long uid = userSystemCoupon.getUid();
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | CommonOrderVO commonOrderVO = commonOrderService.getCommonOrderByOrderNo(userSystemCoupon.getUid(), orderNo,
|
| | | CommonOrder.STATE_JS, sourceType);
|
| | |
| | | userRecordVO.setJumpWelfare(jumpWelfare);
|
| | |
|
| | | // 跳转奖励券规则
|
| | | userRecordVO.setRuleLink(configService.get(ConfigKeyEnum.rewardCouponHelp.getKey()));
|
| | |
|
| | | String rewardCouponRemark = configService.get(ConfigKeyEnum.rewardCouponRemark.getKey());
|
| | | userRecordVO.setRuleLink(configService.getValue(ConfigKeyEnum.rewardCouponHelp.getKey(),system));
|
| | | String rewardCouponRemark = configService.getValue(ConfigKeyEnum.rewardCouponRemark.getKey(),system);
|
| | | if (rewardCouponRemark != null && rewardCouponRemark.trim().length() > 0) {
|
| | | userRecordVO.setRemark(JSONObject.fromObject(rewardCouponRemark));
|
| | | }
|
| | |
| | | }
|
| | |
|
| | | // 查询记录
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, null);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, null);
|
| | | if (record == null) {
|
| | | throw new UserSystemCouponException(1, "没有使用券记录");
|
| | | }
|
| | |
| | | if (baseCoupon == null || baseCoupon.getId() == null) {
|
| | | throw new UserSystemCouponException(1, "未找到券基本信息");
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(userSystemCoupon.getUid());
|
| | |
|
| | | // 订单
|
| | | CommonOrderVO orderVO = commonOrderService.getCommonOrderByOrderNo(userSystemCoupon.getUid(), orderNo, null,
|
| | |
| | | String progressMsg = "";
|
| | | String progressColor = "";
|
| | | // 跳转奖励券规则
|
| | | userRecordVO.setRuleLink(configService.get(ConfigKeyEnum.freeCouponHelp.getKey()));
|
| | | userRecordVO.setRuleLink(configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(),system));
|
| | |
|
| | | // 进度: 1 灰色 2 红色 3 绿色
|
| | | String progressState1 = "3";
|
| | |
| | |
|
| | | jumpDetail = jumpDetailV2Service.getByTypeCache("welfareCore");
|
| | |
|
| | | rewardCouponRemark = configService.get(ConfigKeyEnum.freeCouponBackRemark.getKey());
|
| | | rewardCouponRemark = configService.getValue(ConfigKeyEnum.freeCouponBackRemark.getKey(),system);
|
| | |
|
| | | } else if (UserSystemCouponRecord.STATE_FAIL_DRAWBACK == stateRecord) {
|
| | | // 退款
|
| | |
| | |
|
| | | jumpDetail = jumpDetailV2Service.getByTypeCache("welfareCore");
|
| | |
|
| | | rewardCouponRemark = configService.get(ConfigKeyEnum.freeCouponBackRemark.getKey());
|
| | | rewardCouponRemark = configService.getValue(ConfigKeyEnum.freeCouponBackRemark.getKey(),system);
|
| | |
|
| | | } else if (UserSystemCouponRecord.STATE_FREE_ON == stateRecord) {
|
| | | // 免单中
|
| | |
| | | progressMsg = "免单发起,等待收货";
|
| | | }
|
| | |
|
| | | rewardCouponRemark = configService.get(ConfigKeyEnum.freeCouponRemark.getKey());
|
| | | rewardCouponRemark = configService.getValue(ConfigKeyEnum.freeCouponRemark.getKey(),system);
|
| | |
|
| | | } else if (UserSystemCouponRecord.STATE_SUCCESS == stateRecord) {
|
| | | // 免单成功
|
| | |
| | |
|
| | | jumpDetail = jumpDetailV2Service.getByTypeCache("capitalDetails");
|
| | |
|
| | | rewardCouponRemark = configService.get(ConfigKeyEnum.freeCouponRemark.getKey());
|
| | | rewardCouponRemark = configService.getValue(ConfigKeyEnum.freeCouponRemark.getKey(),system);
|
| | | }
|
| | | userRecordVO.setProgressState(progressState);
|
| | | userRecordVO.setPayMoney(payMoney);
|
| | |
| | | return userRecordVO;
|
| | | }
|
| | |
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void updateStateByDrawback(String orderNo) throws Exception {
|
| | | public void updateStateByDrawback(String orderNo, Integer sourceType) throws Exception {
|
| | |
|
| | | if (orderNo == null || orderNo.trim().length() == 0) {
|
| | | return;
|
| | | }
|
| | |
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, null);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, null);
|
| | | 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(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public void updateStateByArrivalAccount(String orderNo) throws Exception {
|
| | |
|
| | | public void updateStateByArrivalAccount(String orderNo, Integer sourceType) throws Exception {
|
| | | if (orderNo == null || orderNo.trim().length() == 0) {
|
| | | return;
|
| | | }
|
| | |
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo, 2);
|
| | | UserSystemCouponRecord record = userSystemCouponRecordService.getRecordByOrderNo(orderNo,sourceType, 2);
|
| | | if (record == null) {
|
| | | return;
|
| | | }
|
| | |
|
| | | record.setOrderNo(orderNo);
|
| | | record.setUpdateTime(new Date());
|
| | | record.setState(UserSystemCouponRecord.STATE_SUCCESS);
|
| | | userSystemCouponRecordService.updateByPrimaryKeySelective(record);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | public List<UserSystemCoupon> getCounponNowInvalid(int count) {
|
| | | return userSystemCouponMapper.getCounponNowInvalid(count);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long auctionId)
|
| | | public boolean updateCouponRecordUsed(Long uid, String orderNo, BigDecimal payment, Long gId,Integer sourceType)
|
| | | throws Exception {
|
| | |
|
| | | boolean isfree = false;
|
| | |
|
| | | if (uid == null || payment == null || auctionId == null || orderNo == null || orderNo.trim().length() == 0) {
|
| | | if (uid == null || payment == null || gId == null || orderNo == null || orderNo.trim().length() == 0) {
|
| | | throw new Exception("传递参数不能为空");
|
| | | }
|
| | |
|
| | | |
| | | boolean isfree = false;
|
| | | // 查询等待匹配的券记录
|
| | | List<UserSystemCouponRecord> list = userSystemCouponRecordService.getRecordByState(uid,
|
| | | UserSystemCouponRecord.STATE_WAIT);
|
| | |
| | |
|
| | | for (UserSystemCouponRecord userSystemCouponRecord : list) {
|
| | | Long goodId = userSystemCouponRecord.getGoodId();
|
| | | if (auctionId.equals(goodId)) {
|
| | | Integer goodSource = userSystemCouponRecord.getGoodSource();
|
| | | if (goodSource == null)
|
| | | continue;
|
| | | |
| | | if (gId.equals(goodId) && goodSource == sourceType) {
|
| | | matching = true; // 匹配成功
|
| | | record = userSystemCouponRecord;
|
| | | break;
|
| | |
| | |
|
| | | // 商品匹配成功
|
| | | if (matching) {
|
| | |
|
| | | record.setGoodSource(sourceType);
|
| | | record.setOrderNo(orderNo);
|
| | | record.setUpdateTime(new Date());
|
| | |
|
| | |
| | |
|
| | | return isfree;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | /**
|
| | | * 随机券比例
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | public void exchangeCoupon(Long uid, String couponType, String source, BigDecimal percent)
|
| | | throws UserSystemCouponException, Exception {
|
| | | if (couponType == null || uid == null) {
|
| | | throw new UserSystemCouponException(1, "参数不正确");
|
| | | }
|
| | |
|
| | | SystemCoupon coupon = null;
|
| | | if (couponType.equals(CouponTypeEnum.rebatePercentCoupon.name())) {
|
| | | coupon = systemCouponService.getCouponByTypeAndPercent(couponType, percent);
|
| | | } else {
|
| | | coupon = systemCouponService.getCouponByType(couponType);
|
| | | }
|
| | |
|
| | | if (coupon == null) {
|
| | | throw new UserSystemCouponException(1, "券类型不正确");
|
| | | }
|
| | |
|
| | | int stateActivated = 1;
|
| | | if (couponType == CouponTypeEnum.freeCoupon.name()) {
|
| | | stateActivated = 0; //
|
| | | } else if (couponType == CouponTypeEnum.welfareFreeCoupon.name()
|
| | | && threeSaleSerivce.countSuccessFirstTeam(uid) <= 0) {
|
| | | stateActivated = 0; // 无下级队员 --待激活
|
| | | }
|
| | |
|
| | | Integer expiryDay = null;
|
| | | if (stateActivated == 0)
|
| | | expiryDay = coupon.getActivateDay();
|
| | |
|
| | | if (expiryDay == null || expiryDay == 0)
|
| | | expiryDay = coupon.getExpiryDay();
|
| | |
|
| | | // 计算结束日期:今天在内 减去一天
|
| | | String endDay = DateUtil.plusDay(expiryDay - 1, new Date());
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
| | | if (endDay != null && endDay.trim().length() > 0) {
|
| | | endDay += " 23:59:59";
|
| | | }
|
| | | Date endTime = format.parse(endDay);
|
| | |
|
| | | UserSystemCoupon userCoupon = new UserSystemCoupon();
|
| | | userCoupon.setUid(uid);
|
| | | userCoupon.setSource(source);
|
| | | userCoupon.setSystemCoupon(coupon);
|
| | | userCoupon.setStateActivated(stateActivated);
|
| | | userCoupon.setStartTime(new Date());
|
| | | userCoupon.setEndTime(endTime);
|
| | | userCoupon.setGive(false);
|
| | | userCoupon.setCreateTime(new Date());
|
| | | userCoupon.setUpdateTime(new Date());
|
| | | userCoupon.setState(UserSystemCoupon.STATE_CAN_USE);
|
| | |
|
| | | insertSelective(userCoupon);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor=Exception.class)
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | @Override
|
| | | public List<UserSystemCouponVO> getCouponList(AcceptData acceptData, long start, int count, Long uid)
|
| | | throws UserSystemCouponException, Exception {
|
| | |
| | | if (listVO == null || listVO.size() == 0) {
|
| | | return listVO;
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | // 是否激活邀请码
|
| | | String inviteCode = null;
|
| | |
| | | // 统计待激活数量
|
| | | if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
|
| | | int activateCount = userSystemCouponActivateService.getActivateCount(userCouponVO.getId());
|
| | | String activateNum = configService.get(ConfigKeyEnum.freeCouponActivateNum.getKey());
|
| | | String activateNum = configService.getValue(ConfigKeyEnum.freeCouponActivateNum.getKey(),system);
|
| | | userCouponVO.setCouponEffect(
|
| | | "(" + activateCount + "/" + Integer.parseInt(activateNum) + ")待激活");
|
| | | }
|
| | |
| | | userCouponVO.setState(UserSystemCoupon.STATE_GIVE_ONLY);
|
| | | } else if (CouponTypeEnum.freeCoupon == type || CouponTypeEnum.welfareFreeCoupon == type
|
| | | || CouponTypeEnum.freeCouponBuy == type) {
|
| | | jumpLink.put("url", configService.get(ConfigKeyEnum.freeGoodsList.getKey()));
|
| | | jumpLink.put("url", configService.getValue(ConfigKeyEnum.freeGoodsList.getKey(),system));
|
| | | jumpBtn = new HashMap<String, Object>();
|
| | | jumpBtn.put("params", jumpLink);
|
| | | jumpBtn.put("jumpDetail", jumpDetailV2Service.getByTypeCache("web"));
|
| | |
| | | TokenTypeEnum tokenType = null;
|
| | | if (CouponTypeEnum.freeCouponGive == type) {
|
| | | userCouponVO.setState(UserSystemCoupon.STATE_GIVE_IN);
|
| | | tips = configService.get(ConfigKeyEnum.giveFreeCouponTips.getKey());
|
| | | tips = configService.getValue(ConfigKeyEnum.giveFreeCouponTips.getKey(),system);
|
| | | tokenType = TokenTypeEnum.freeCoupon;
|
| | | }
|
| | |
|
| | | if (CouponTypeEnum.rebatePercentCoupon == type) {
|
| | | userCouponVO.setState(UserSystemCoupon.STATE_GIVE_IN);
|
| | | tips = configService.get(ConfigKeyEnum.giveRebatePercentCouponTips.getKey());
|
| | | tips = configService.getValue(ConfigKeyEnum.giveRebatePercentCouponTips.getKey(),system);
|
| | | tokenType = TokenTypeEnum.rebatePercentCoupon;
|
| | | }
|
| | |
|
| | |
| | | tips = tips.replace("{APP名称}", projectChineseName);
|
| | | }
|
| | | tips = tips.replace("{口令}", tokenRecord.getToken()).replace("{下载链接}",
|
| | | configService.get(ConfigKeyEnum.appDownLink.getKey()));
|
| | | configService.getValue(ConfigKeyEnum.appDownLink.getKey(),system));
|
| | | userCouponVO.setGiveTips(tips);
|
| | | }
|
| | |
|
| | |
| | | if (type != CouponTypeEnum.freeCouponGive && type != CouponTypeEnum.rebatePercentCoupon)
|
| | | throw new UserSystemCouponException(1, "该券不支持赠送");
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | String tips = null;
|
| | | TokenTypeEnum tokenTypeEnum = null;
|
| | | if (type == CouponTypeEnum.freeCouponGive) {
|
| | | tokenTypeEnum = TokenTypeEnum.freeCoupon;
|
| | | tips = configService.get(ConfigKeyEnum.giveFreeCouponTips.getKey());
|
| | | tips = configService.getValue(ConfigKeyEnum.giveFreeCouponTips.getKey(),system);
|
| | | } else if (type == CouponTypeEnum.rebatePercentCoupon) {
|
| | | tokenTypeEnum = TokenTypeEnum.rebatePercentCoupon;
|
| | | tips = configService.get(ConfigKeyEnum.giveRebatePercentCouponTips.getKey());
|
| | | tips = configService.getValue(ConfigKeyEnum.giveRebatePercentCouponTips.getKey(),system);
|
| | | } else {
|
| | | throw new UserSystemCouponException(1, "该券不支持赠送");
|
| | | }
|
| | |
| | | tips = tips.replace("{APP名称}", projectChineseName);
|
| | | }
|
| | | tips = tips.replace("{口令}", tokenRecord.getToken()).replace("{下载链接}",
|
| | | configService.get(ConfigKeyEnum.appDownLink.getKey()));
|
| | | configService.getValue(ConfigKeyEnum.appDownLink.getKey(),system));
|
| | |
|
| | | return createUserCouponVOo(userSystemCoupon, systemCoupon, record, tips);
|
| | | }
|
| | |
| | | while (tips.contains("{APP名称}")) {
|
| | | tips = tips.replace("{APP名称}", projectChineseName);
|
| | | }
|
| | | tips = tips.replace("{口令}", token).replace("{下载链接}", configService.get(ConfigKeyEnum.appDownLink.getKey()));
|
| | | tips = tips.replace("{口令}", token).replace("{下载链接}", configService.getValue(ConfigKeyEnum.appDownLink.getKey(),system));
|
| | |
|
| | | UserSystemCouponVO couponVO = createUserCouponVOo(userSystemCoupon, systemCoupon, giveRecord, tips);
|
| | |
|
| | |
| | | msg.setCouponType(type.name());
|
| | | Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.systemCouponDrawback, msg);
|
| | | // 延迟一分钟
|
| | | message.setStartDeliverTime(endTime.getTime() + 1000 * 60);
|
| | | try {
|
| | | producer.send(message);
|
| | | rocketMQManager.sendNormalMsg(message,1000 * 60L, null);
|
| | | } catch (Exception e) {
|
| | | throw new UserSystemCouponException(1, "创建赠送信息失败");
|
| | | }
|
| | |
| | | continue;
|
| | | }
|
| | |
|
| | | |
| | | try { // 消息推送
|
| | | Long uid = userCoupon.getUid();
|
| | | String source = userCoupon.getSource();
|
| | | 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) {
|
| | | userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "已过期");
|
| | | 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) {
|
| | | userOtherMsgNotificationService.rewardCouponEndMsg(uid, source, 1, "已过期");
|
| | | }
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | |
| | |
|
| | | /**
|
| | | * 退回券 初始数据
|
| | | * |
| | | * @param userSystemCoupon
|
| | | * @param userCoupon
|
| | | * @param record
|
| | | * @throws Exception
|
| | | */
|
| | | public void sendBackCoupon(UserSystemCoupon userCoupon, UserSystemCouponRecord record) throws Exception {
|
| | | if (userCoupon == null)
|
| | |
| | | Long uid = userCoupon.getUid();
|
| | | String source = userCoupon.getSource();
|
| | | Date startTime = userCoupon.getStartTime();
|
| | | if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType()) |
| | | if (CouponTypeEnum.freeCoupon.name().equals(record.getCouponType())
|
| | | || CouponTypeEnum.freeCouponBuy.name().equals(record.getCouponType())) {
|
| | | userOtherMsgNotificationService.freeCouponWinMsg(uid, "自购免单券", source, 1, "使用退回", startTime, endTime);
|
| | | }
|
| | |
| | | String source = userCoupon.getSource();
|
| | | CouponTypeEnum type = systemCoupon.getType();
|
| | | if (CouponTypeEnum.freeCouponGive == type) {
|
| | | userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "使用退回", |
| | | 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());
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | String source = userCoupon.getSource();
|
| | | CouponTypeEnum type = systemCoupon.getType();
|
| | | if (CouponTypeEnum.freeCouponGive == type) {
|
| | | userOtherMsgNotificationService.freeCouponWinMsg(uid, type.getDesc(), source, 1, "使用退回", |
| | | 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());
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | public boolean getValidRebateCoupon(Long uid) {
|
| | | // 过期券
|
| | | 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 {
|
| | |
| | | // 退回券
|
| | | 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;
|
| | |
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | // 激活数量
|
| | | boolean result = false;
|
| | | int limitNum = Integer.parseInt(configService.get(ConfigKeyEnum.freeCouponActivateNum.getKey()));
|
| | | int limitNum = Integer.parseInt(configService.getValue(ConfigKeyEnum.freeCouponActivateNum.getKey(),system));
|
| | |
|
| | | Integer state = couponActivate.getState();
|
| | | int count = couponActivate.getCount();
|
| | |
| | | * 激活券
|
| | | *
|
| | | * @param coupon
|
| | | * @param activateNum
|
| | | */
|
| | | @Transactional
|
| | | private void activateFreeCoupon(UserSystemCoupon coupon, int limitNum) {
|
| | |
| | | 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) {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | |
|
| | | }
|