记得上下班打卡 | git大法好,push需谨慎

Commit 209a4d17 authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/new_member' into new_member

parents 4c5827e8 5cd9c7ae
......@@ -13,6 +13,10 @@ import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamMemberOrderMapper;
import com.liquidnet.service.adam.mapper.AdamMemberRefundMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.candy.constant.CandyRedisConst;
import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import com.liquidnet.service.candy.mapper.CandyUserCouponMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -21,6 +25,8 @@ import javax.servlet.http.HttpServletRequest;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@Slf4j
......@@ -30,6 +36,8 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
private AdamMemberOrderMapper adamMemberOrderMapper;
@Autowired
private AdamUserMemberMapper adamUserMemberMapper;
@Autowired
private CandyUserCouponMapper candyUserCouponMapper;
@Autowired
private RedisUtil redisUtil;
......@@ -87,8 +95,10 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
private void refundSuccProcessing(String orderNo, LocalDateTime now) {
AdamMemberOrder memberOrder = adamMemberOrderMapper.selectOne(Wrappers.lambdaUpdate(AdamMemberOrder.class).eq(AdamMemberOrder::getOrderNo, orderNo));
LocalDateTime newExpiryAt = null;
List<String> removeUcouponIdList = null;
{// 同步用户端信息
// 同步更新REDIS会员订单信息
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisUtil.get(moKey);
int idx = IntStream.range(0, vos.size()).filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo())).findFirst().orElse(-1);
......@@ -102,8 +112,14 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
String umKey = AdamRedisConst.INFO_USER_MEMBER.concat(memberOrder.getUid());
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisUtil.get(umKey);
// 用户会员权益券信息
String uckey = CandyRedisConst.BASIC_USER_COUPON.concat(memberOrder.getUid());
List<CandyUserCouponBasicDto> userCouponBasicDtoList = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey);
// 同步更新REDIS会员信息
if (userMemberVo.getState() == 1) {// 非拉黑用户,则更新到期时间为减去订单标记的会员有效期的日期
newExpiryAt = userMemberVo.getExpiryAt().minusDays(memberOrder.getDays());
LocalDateTime expiryAt = userMemberVo.getExpiryAt();
newExpiryAt = expiryAt.minusDays(memberOrder.getDays());
LocalDate nowDate = now.toLocalDate();
LocalDate newExpiryDate = newExpiryAt.toLocalDate();
......@@ -117,20 +133,45 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
syncVo = redisUtil.set(umKey, userMemberVo);
log.info("###会员退款回调处理成功:更新REDIS会员信息{}[orderNo:{},uid:{}]", syncVo ? "成功" : "失败", orderNo, memberOrder.getUid());
AdamUserMember updateInfoUserMember = new AdamUserMember();
updateInfoUserMember.setExpiryAt(newExpiryAt);
updateInfoUserMember.setUpdatedAt(now);
updateInfoUserMember.setComment("R");
int updateRst = adamUserMemberMapper.update(updateInfoUserMember, Wrappers.lambdaUpdate(AdamUserMember.class).eq(AdamUserMember::getUid, memberOrder.getUid()));
log.info("###会员退款回调处理成功:更新DB会员信息{}[orderNo:{},uid:{}]", updateRst <= 0 ? "失败" : "成功", orderNo, memberOrder.getUid());
removeUcouponIdList = userCouponBasicDtoList.stream()
.filter(r -> (r.getExclusive() == 1 && r.getDuedAt().compareTo(expiryAt) == 0))
.map(CandyUserCouponBasicDto::getUcouponId)
.collect(Collectors.toList());
} else if (userMemberVo.getState() == 2) {// 拉黑用户
removeUcouponIdList = userCouponBasicDtoList.stream()
.filter(r -> (r.getExclusive() == 1))
.map(CandyUserCouponBasicDto::getUcouponId)
.collect(Collectors.toList());
}
// 同步删除REDIS用户会员权益券信息
List<String> finalRemoveUcouponIdList = removeUcouponIdList;
userCouponBasicDtoList.removeIf(r -> finalRemoveUcouponIdList.contains(r.getUcouponId()));
redisUtil.set(uckey, userCouponBasicDtoList);
}
// 同步更新MYSQL用户会员权益券信息
LambdaUpdateWrapper<CandyUserCoupon> candyUserCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyUserCoupon.class);
candyUserCouponLambdaUpdateWrapper.in(CandyUserCoupon::getUcouponId, removeUcouponIdList.toArray()).eq(CandyUserCoupon::getState, 1);
CandyUserCoupon updateInfoUserCoupon = new CandyUserCoupon();
updateInfoUserCoupon.setState(2);
updateInfoUserCoupon.setUpdatedAt(now);
updateInfoUserCoupon.setOperator("system.vip.refund");
int updateRst = candyUserCouponMapper.update(updateInfoUserCoupon, candyUserCouponLambdaUpdateWrapper);
log.info("###会员退款回调处理成功:更新DB会员权益券信息{}[orderNo:{},uid:{}]", updateRst <= 0 ? "失败" : "成功", orderNo, memberOrder.getUid());
// 同步更新MYSQL会员信息
AdamUserMember updateInfoUserMember = new AdamUserMember();
updateInfoUserMember.setExpiryAt(newExpiryAt);
updateInfoUserMember.setUpdatedAt(now);
updateInfoUserMember.setComment("R");
updateRst = adamUserMemberMapper.update(updateInfoUserMember, Wrappers.lambdaUpdate(AdamUserMember.class).eq(AdamUserMember::getUid, memberOrder.getUid()));
log.info("###会员退款回调处理成功:更新DB会员信息{}[orderNo:{},uid:{}]", updateRst <= 0 ? "失败" : "成功", orderNo, memberOrder.getUid());
// 同步更新MYSQL会员订单信息
AdamMemberOrder updateInfoMemberOrder = new AdamMemberOrder();
updateInfoMemberOrder.setMid(memberOrder.getMid());
updateInfoMemberOrder.setState(5);
updateInfoMemberOrder.setUpdatedAt(now);
int updateRst = adamMemberOrderMapper.updateById(updateInfoMemberOrder);
updateRst = adamMemberOrderMapper.updateById(updateInfoMemberOrder);
log.info("###会员退款回调处理成功:更新DB订单信息{}[orderNo:{}]", updateRst <= 0 ? "失败" : "成功", orderNo);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment