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

Commit 02c05e7a authored by 张国柄's avatar 张国柄

~API:用户注销:+券数据处理;

~API:用户注销:会员退款兼容处理;
parent db85b59e
...@@ -148,7 +148,6 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -148,7 +148,6 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
memberRefund.setRefundReason(param.getReason()); memberRefund.setRefundReason(param.getReason());
memberRefund.setRenewable(param.getRenewable()); memberRefund.setRenewable(param.getRenewable());
memberRefund.setRefundState(9); memberRefund.setRefundState(9);
memberRefund.setRefundNo(refundNo);
memberRefund.setOperator(ShiroUtils.getLoginName()); memberRefund.setOperator(ShiroUtils.getLoginName());
memberRefund.setCreatedAt(now); memberRefund.setCreatedAt(now);
...@@ -163,14 +162,16 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -163,14 +162,16 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid(); String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisDataSourceUtil.getRedisAdamUtil().get(moKey); ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisDataSourceUtil.getRedisAdamUtil().get(moKey);
int idx = IntStream.range(0, vos.size()) if (!CollectionUtils.isEmpty(vos)) {
.filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo())) int idx = IntStream.range(0, vos.size())
.findFirst().orElse(-1); .filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo()))
AdamMemberOrderVo vo = vos.get(idx); .findFirst().orElse(-1);
vo.setState(4); AdamMemberOrderVo vo = vos.get(idx);
vo.setUpdatedAt(now); vo.setState(4);
vos.set(idx, vo); vo.setUpdatedAt(now);
redisDataSourceUtil.getRedisAdamUtil().set(moKey, vos); vos.set(idx, vo);
redisDataSourceUtil.getRedisAdamUtil().set(moKey, vos);
}
if (memberRefund.getRenewable() == 2) {// 拉黑用户,直接更新用户会员状态信息 if (memberRefund.getRenewable() == 2) {// 拉黑用户,直接更新用户会员状态信息
AdamUserMember updateUserMember = new AdamUserMember(); AdamUserMember updateUserMember = new AdamUserMember();
...@@ -185,19 +186,19 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -185,19 +186,19 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
String umkey = AdamRedisConst.INFO_USER_MEMBER + memberOrder.getUid(); String umkey = AdamRedisConst.INFO_USER_MEMBER + memberOrder.getUid();
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisDataSourceUtil.getRedisAdamUtil().get(umkey); AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisDataSourceUtil.getRedisAdamUtil().get(umkey);
if (null != userMemberVo) {
userMemberVo.setState(2); userMemberVo.setState(2);
userMemberVo.setExpiryAt(now); userMemberVo.setExpiryAt(now);
userMemberVo.setUpdatedAt(now); userMemberVo.setUpdatedAt(now);
redisDataSourceUtil.getRedisAdamUtil().set(umkey, userMemberVo);
redisDataSourceUtil.getRedisAdamUtil().set(umkey, userMemberVo);
List<String> uidBlackList = (List<String>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.BLK_LIST_MEMBER_UID);
List<String> uidBlackList = (List<String>) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.BLK_LIST_MEMBER_UID); if (CollectionUtils.isEmpty(uidBlackList)) {
if (CollectionUtils.isEmpty(uidBlackList)) { uidBlackList = CollectionUtil.arrayListString();
uidBlackList = CollectionUtil.arrayListString(); }
uidBlackList.add(memberOrder.getUid());
redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.BLK_LIST_MEMBER_UID, uidBlackList);
} }
uidBlackList.add(memberOrder.getUid());
redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.BLK_LIST_MEMBER_UID, uidBlackList);
} }
} }
} else { } else {
...@@ -228,6 +229,13 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -228,6 +229,13 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
if (!postResultJNode.get("success").asBoolean()) { if (!postResultJNode.get("success").asBoolean()) {
return AjaxResult.warn("会员退款请求支付中心失败"); return AjaxResult.warn("会员退款请求支付中心失败");
} }
JsonNode dataNode = postResultJNode.get("data");
if (null != dataNode && null != dataNode.get("refundCode") && (null == existsRefund || null == existsRefund.getRepayNo())) {
AdamMemberRefund updateMemberRefund = new AdamMemberRefund();
updateMemberRefund.setRepayNo(dataNode.get("refundCode").asText());
adamMemberRefundMapper.update(updateMemberRefund, Wrappers.lambdaUpdate(AdamMemberRefund.class).eq(AdamMemberRefund::getRefundNo, refundNo));
}
return AjaxResult.success(); return AjaxResult.success();
} }
......
...@@ -395,10 +395,20 @@ public class AdamUserServiceImpl implements IAdamUserService { ...@@ -395,10 +395,20 @@ public class AdamUserServiceImpl implements IAdamUserService {
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.close")); toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.close"));
objsMobileLocate.add(new Object[]{now, uid}); objsMobileLocate.add(new Object[]{now, uid});
/* ---------------------- 用户平台券信息 */
toMqSqls.add(SqlMapping.get("candy_user_coupon.close"));
LinkedList<Object[]> objsCandyUserCoupon = CollectionUtil.linkedListObjectArr();
objsCandyUserCoupon.add(new Object[]{uid});
/* ---------------------- 用户商城券信息 */
toMqSqls.add(SqlMapping.get("goblin_user_coupon.close"));
LinkedList<Object[]> objsGoblinUserCoupon = CollectionUtil.linkedListObjectArr();
objsGoblinUserCoupon.add(new Object[]{uid});
s = System.currentTimeMillis(); s = System.currentTimeMillis();
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UCENTER.getKey(),
MQConst.AdamQueue.SQL_UCENTER.getKey(), SqlMapping.gets(toMqSqls, objsUser, objsThirdPart, objsUserMember, objsRealInfo,
SqlMapping.gets(toMqSqls, objsUser, objsThirdPart, objsUserMember, objsRealInfo, objsAddresses, objsEnters, objsMobileLocate) objsAddresses, objsEnters, objsMobileLocate, objsCandyUserCoupon, objsGoblinUserCoupon)
); );
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} }
......
...@@ -79,4 +79,11 @@ adam_user_mobile_locate.close=UPDATE adam_user_mobile_locate SET `state`=2, upda ...@@ -79,4 +79,11 @@ adam_user_mobile_locate.close=UPDATE adam_user_mobile_locate SET `state`=2, upda
# ---------------------------------------------------- # ----------------------------------------------------
# ----------------------------------------------------
# ----------------------------------------------------
candy_user_coupon.close=UPDATE candy_user_coupon SET state=2,updated_at=sysdate(),operator='close' WHERE uid=? AND state=1
goblin_user_coupon.close=UPDATE goblin_user_coupon SET state=2,updated_at=sysdate(),operator='close' WHERE uid=? AND state=1
# ---------------------------------------------------- # ----------------------------------------------------
\ No newline at end of file
...@@ -7,6 +7,7 @@ import com.liquidnet.common.cache.redis.util.AbstractRedisUtil; ...@@ -7,6 +7,7 @@ import com.liquidnet.common.cache.redis.util.AbstractRedisUtil;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst; import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo; import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo; import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder; import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.entity.AdamMemberRefund; import com.liquidnet.service.adam.entity.AdamMemberRefund;
...@@ -101,8 +102,9 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap ...@@ -101,8 +102,9 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
private void refundSuccProcessing(String orderNo, LocalDateTime now, String refundAmt) { private void refundSuccProcessing(String orderNo, LocalDateTime now, String refundAmt) {
AdamMemberOrder memberOrder = adamMemberOrderMapper.selectOne(Wrappers.lambdaUpdate(AdamMemberOrder.class).eq(AdamMemberOrder::getOrderNo, orderNo)); AdamMemberOrder memberOrder = adamMemberOrderMapper.selectOne(Wrappers.lambdaUpdate(AdamMemberOrder.class).eq(AdamMemberOrder::getOrderNo, orderNo));
LocalDateTime newExpiryAt = null;
List<String> removeUcouponIdList = null; List<String> removeUcouponIdList = null;
LocalDateTime newExpiryAt = null;
boolean syncVo = false;
AbstractRedisUtil redisAdamUtil = redisDataSourceUtil.getRedisAdamUtil(); AbstractRedisUtil redisAdamUtil = redisDataSourceUtil.getRedisAdamUtil();
AbstractRedisUtil redisCandyUtil = redisDataSourceUtil.getRedisCandyUtil(); AbstractRedisUtil redisCandyUtil = redisDataSourceUtil.getRedisCandyUtil();
...@@ -111,13 +113,15 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap ...@@ -111,13 +113,15 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
// 同步更新REDIS会员订单信息 // 同步更新REDIS会员订单信息
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid(); String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisAdamUtil.get(moKey); ArrayList<AdamMemberOrderVo> vos = (ArrayList<AdamMemberOrderVo>) redisAdamUtil.get(moKey);
int idx = IntStream.range(0, vos.size()).filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo())).findFirst().orElse(-1); if (!CollectionUtils.isEmpty(vos)) {
AdamMemberOrderVo vo = vos.get(idx); int idx = IntStream.range(0, vos.size()).filter(i -> vos.get(i).getOrderNo().equals(memberOrder.getOrderNo())).findFirst().orElse(-1);
vo.setState(5); AdamMemberOrderVo vo = vos.get(idx);
vo.setUpdatedAt(now); vo.setState(5);
vos.set(idx, vo); vo.setUpdatedAt(now);
boolean syncVo = redisAdamUtil.set(moKey, vos); vos.set(idx, vo);
log.info("###会员退款回调处理成功:更新REDIS会员订单信息{}[orderNo:{},uid:{}]", syncVo ? "成功" : "失败", orderNo, memberOrder.getUid()); syncVo = redisAdamUtil.set(moKey, vos);
log.info("###会员退款回调处理成功:更新REDIS会员订单信息{}[orderNo:{},uid:{}]", syncVo ? "成功" : "失败", orderNo, memberOrder.getUid());
}
String umKey = AdamRedisConst.INFO_USER_MEMBER.concat(memberOrder.getUid()); String umKey = AdamRedisConst.INFO_USER_MEMBER.concat(memberOrder.getUid());
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisAdamUtil.get(umKey); AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisAdamUtil.get(umKey);
...@@ -127,42 +131,44 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap ...@@ -127,42 +131,44 @@ public class PlatformMemberRefundService extends ServiceImpl<AdamMemberRefundMap
List<CandyUserCouponBasicDto> userCouponBasicDtoList = (List<CandyUserCouponBasicDto>) redisCandyUtil.get(uckey); List<CandyUserCouponBasicDto> userCouponBasicDtoList = (List<CandyUserCouponBasicDto>) redisCandyUtil.get(uckey);
// 同步更新REDIS会员信息 // 同步更新REDIS会员信息
if (userMemberVo.getState() == 1) {// 非拉黑用户,则更新到期时间为减去订单标记的会员有效期的日期 if (null != userMemberVo) {
LocalDateTime expiryAt = userMemberVo.getExpiryAt(); if (userMemberVo.getState() == 1) {// 非拉黑用户,则更新到期时间为减去订单标记的会员有效期的日期
newExpiryAt = expiryAt.minusDays(memberOrder.getDays()); LocalDateTime expiryAt = userMemberVo.getExpiryAt();
newExpiryAt = expiryAt.minusDays(memberOrder.getDays());
LocalDate nowDate = now.toLocalDate();
LocalDate newExpiryDate = newExpiryAt.toLocalDate(); LocalDate nowDate = now.toLocalDate();
if (newExpiryDate.isEqual(nowDate)) {// 新的过期时间如果和当前时间为同一天,则重置到期时间为当天00:00:00 LocalDate newExpiryDate = newExpiryAt.toLocalDate();
newExpiryAt = now.withHour(0).withMinute(0).withSecond(0); if (newExpiryDate.isEqual(nowDate)) {// 新的过期时间如果和当前时间为同一天,则重置到期时间为当天00:00:00
} newExpiryAt = now.withHour(0).withMinute(0).withSecond(0);
}
userMemberVo.setExpiryAt(newExpiryAt);
userMemberVo.setUpdatedAt(now); userMemberVo.setExpiryAt(newExpiryAt);
userMemberVo.setUpdatedAt(now);
syncVo = redisAdamUtil.set(umKey, userMemberVo);
log.info("###会员退款回调处理成功:更新REDIS会员信息{}[orderNo:{},uid:{}]", syncVo ? "成功" : "失败", orderNo, memberOrder.getUid()); syncVo = redisAdamUtil.set(umKey, userMemberVo);
log.info("###会员退款回调处理成功:更新REDIS会员信息{}[orderNo:{},uid:{}]", syncVo ? "成功" : "失败", orderNo, memberOrder.getUid());
// 同步更新MYSQL会员信息
AdamUserMember updateInfoUserMember = new AdamUserMember(); // 同步更新MYSQL会员信息
updateInfoUserMember.setExpiryAt(newExpiryAt); AdamUserMember updateInfoUserMember = new AdamUserMember();
updateInfoUserMember.setUpdatedAt(now); updateInfoUserMember.setExpiryAt(newExpiryAt);
updateInfoUserMember.setComment("R"); updateInfoUserMember.setUpdatedAt(now);
int updateRst = adamUserMemberMapper.update(updateInfoUserMember, Wrappers.lambdaUpdate(AdamUserMember.class).eq(AdamUserMember::getUid, memberOrder.getUid())); updateInfoUserMember.setComment("R");
log.info("###会员退款回调处理成功:更新DB会员信息{}[orderNo:{},uid:{}]", updateRst <= 0 ? "失败" : "成功", orderNo, memberOrder.getUid()); int updateRst = adamUserMemberMapper.update(updateInfoUserMember, Wrappers.lambdaUpdate(AdamUserMember.class).eq(AdamUserMember::getUid, memberOrder.getUid()));
log.info("###会员退款回调处理成功:更新DB会员信息{}[orderNo:{},uid:{}]", updateRst <= 0 ? "失败" : "成功", orderNo, memberOrder.getUid());
if (!CollectionUtils.isEmpty(userCouponBasicDtoList)) {
removeUcouponIdList = userCouponBasicDtoList.stream() if (!CollectionUtils.isEmpty(userCouponBasicDtoList)) {
.filter(r -> (r.getExclusive() == 1 && r.getDuedAt().compareTo(expiryAt) == 0)) removeUcouponIdList = userCouponBasicDtoList.stream()
.map(CandyUserCouponBasicDto::getUcouponId) .filter(r -> (r.getExclusive() == 1 && r.getDuedAt().compareTo(expiryAt) == 0))
.collect(Collectors.toList()); .map(CandyUserCouponBasicDto::getUcouponId)
} .collect(Collectors.toList());
} else if (userMemberVo.getState() == 2) {// 拉黑用户 }
if (!CollectionUtils.isEmpty(userCouponBasicDtoList)) { } else if (userMemberVo.getState() == 2) {// 拉黑用户
removeUcouponIdList = userCouponBasicDtoList.stream() if (!CollectionUtils.isEmpty(userCouponBasicDtoList)) {
.filter(r -> (r.getExclusive() == 1)) removeUcouponIdList = userCouponBasicDtoList.stream()
.map(CandyUserCouponBasicDto::getUcouponId) .filter(r -> (r.getExclusive() == 1))
.collect(Collectors.toList()); .map(CandyUserCouponBasicDto::getUcouponId)
.collect(Collectors.toList());
}
} }
} }
// 同步删除REDIS用户会员权益券信息 // 同步删除REDIS用户会员权益券信息
......
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