| | |
| | | package com.yeshi.fanli.service.impl.user;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.text.ParseException;
|
| | | 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.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.service.manger.msg.RocketMQManager;
|
| | | 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.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;
|
| | |
| | | inviteCode = userInfoExtra.getInviteCode();
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | for (UserSystemCouponVO userCouponVO : listVO) {
|
| | |
|
| | | SystemCoupon systemCoupon = userCouponVO.getSystemCoupon();
|
| | |
| | | // 免单券、 福利免单券
|
| | |
|
| | | // 免单商品列表
|
| | | 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));
|
| | | }
|
| | | }
|
| | |
|
| | |
| | |
|
| | | 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));
|
| | | }
|
| | |
| | | throw new UserSystemCouponException(1, "未找到券基本信息");
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(userSystemCoupon.getUid());
|
| | |
|
| | | // 订单
|
| | | CommonOrderVO orderVO = commonOrderService.getCommonOrderByOrderNo(userSystemCoupon.getUid(), orderNo, null,
|
| | | sourceType);
|
| | |
| | | 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 listVO;
|
| | | }
|
| | |
|
| | | SystemEnum system=userInfoService.getUserSystem(uid);
|
| | |
|
| | | // 是否激活邀请码
|
| | | String inviteCode = null;
|
| | | UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
|
| | |
| | | // 统计待激活数量
|
| | | 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);
|
| | |
|
| | |
| | |
|
| | | /**
|
| | | * 退回券 初始数据
|
| | | * |
| | | * @param userSystemCoupon
|
| | | * @param userCoupon
|
| | | * @param record
|
| | | * @throws Exception
|
| | | */
|
| | | public void sendBackCoupon(UserSystemCoupon userCoupon, UserSystemCouponRecord record) throws Exception {
|
| | | if (userCoupon == 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) {
|