From f79275bf06272490e09efe262a2261be1b8e488d Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 28 Jul 2020 16:15:51 +0800 Subject: [PATCH 1/2] update --- .../src/main/resources/application-prod.yml | 2 +- .../java/com/iformall/config/RedisConfig.java | 17 ++++ .../com/iformall/service/WxOrderService.java | 16 ++-- .../service/impl/WxCUserTagsServiceImpl.java | 31 ++++--- .../service/impl/WxOrderServiceImpl.java | 89 ++++++++++--------- 5 files changed, 88 insertions(+), 67 deletions(-) diff --git a/mallinkAdmin/src/main/resources/application-prod.yml b/mallinkAdmin/src/main/resources/application-prod.yml index 26c10ca4f..8de9b67a0 100644 --- a/mallinkAdmin/src/main/resources/application-prod.yml +++ b/mallinkAdmin/src/main/resources/application-prod.yml @@ -54,7 +54,7 @@ spring: keysecret: VfWqGb83qIQrS9us45utskl8itd7ry bucketname: formall filehost: malinkadmin - filedomain: https://formall.oss-accelerate.aliyuncs.com + filedomain: https://formall.oss-cn-beijing.aliyuncs.com # EMAIL mail: host: smtp.exmail.qq.com diff --git a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java index f91b29800..e9135a6a7 100644 --- a/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java +++ b/mallinkCApi/src/main/java/com/iformall/config/RedisConfig.java @@ -106,6 +106,23 @@ public class RedisConfig extends CachingConfigurerSupport { template.setConnectionFactory(connectionFactory); return template; } + + @Bean("cUserBasicInfoRedisTemplate") + public RedisTemplate getCUserBasicInfoRedisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate(); + + Jackson2JsonRedisSerializer j = new Jackson2JsonRedisSerializer(WxCUserBasicInfo.class); + // value值的序列化 + template.setValueSerializer(j); + template.setHashKeySerializer(j); + + // key的序列化 + template.setKeySerializer(new StringRedisSerializer()); + template.setHashKeySerializer(new StringRedisSerializer()); + + template.setConnectionFactory(connectionFactory); + return template; + } @Bean("mallRedisTemplate") public RedisTemplate getMallRedisTemplate(RedisConnectionFactory connectionFactory) { diff --git a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java index 44488d033..ba3be25f8 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOrderService.java @@ -60,7 +60,7 @@ public interface WxOrderService { * @param payment * @return 订单id */ - WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUser cUser, Integer payment); + WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer payment); /** * 商户码-储值卡支付 @@ -185,7 +185,7 @@ public interface WxOrderService { * @param coupon * @return */ - WxOrder saveOrderForCoupon(WxCUser user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress); + WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress); void sendOrderSuccessActionMsg(WxOrder updateOrder); /** @@ -194,9 +194,9 @@ public interface WxOrderService { * @param coupon * @return */ - WxOrder getUnPaidOrder(WxCUser cUser, WxCoupon coupon); + WxOrder getUnPaidOrder(WxCUserBasicInfo cUser, WxCoupon coupon); - int countCouponConditionType1(WxCUser user); + int countCouponConditionType1(WxCUserBasicInfo user); /** * 订单处理 * 1. 检查coupon是否免费 @@ -204,10 +204,10 @@ public interface WxOrderService { boolean checkCouponIsFree(WxCoupon coupon); // 2. 创建免费订单, 领取 couponOrder - WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); + WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); // 3. 创建有价订单 - WxOrder saveNoFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); + WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId); /** * 下订单成功后处理 @@ -215,7 +215,7 @@ public interface WxOrderService { * @param coupon * @param user */ - void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUser user); + void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user); Map summary(WxOrderQueryVo wxOrderQueryVo); @@ -225,7 +225,7 @@ public interface WxOrderService { /** * H5支付后, 券再注入 */ - Long saveOuterOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); + Long saveOuterOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId); int countGroupOrder(Long groupId,boolean ignoreUnPay); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index 2478b08db..c60f38c1d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -348,7 +348,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { } - private List assignTypeId14(WxCUserBasicInfo user, WxCUser param) + private List assignTypeId14(WxCUserBasicInfo user) { List resList = null; Calendar endC = Calendar.getInstance(); @@ -357,13 +357,13 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { startC.setTime(new Date()); startC.add(Calendar.DAY_OF_YEAR, -30); WxCouponOrder wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setCUserId(param.getId()); + wxCouponOrder.setCUserId(user.getId()); wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); wxCouponOrder.setStartTime(startC.getTime()); wxCouponOrder.setEndTime(endC.getTime()); WxCardSpend wxCardSpend = new WxCardSpend(); - wxCardSpend.setOwnerId(param.getId()); + wxCardSpend.setOwnerId(user.getId()); wxCardSpend.setStartdate(startC.getTime()); wxCardSpend.setEnddate(endC.getTime()); @@ -413,7 +413,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } - private List assignTypeId17(WxCUserBasicInfo user, WxCUser param) + private List assignTypeId17(WxCUserBasicInfo user) { List resList = null; Calendar endC = Calendar.getInstance(); @@ -422,14 +422,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { startC.setTime(new Date()); startC.add(Calendar.DAY_OF_YEAR, -30); WxCouponOrder wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setCUserId(param.getId()); + wxCouponOrder.setCUserId(user.getId()); wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); wxCouponOrder.setStartTime(startC.getTime()); wxCouponOrder.setEndTime(endC.getTime()); wxCouponOrder.setBusinessId(EnumBusiness.BUSINESS_ID1.getCode()); WxCardSpend wxCardSpend = new WxCardSpend(); - wxCardSpend.setOwnerId(param.getId()); + wxCardSpend.setOwnerId(user.getId()); wxCardSpend.setStartdate(startC.getTime()); wxCardSpend.setEnddate(endC.getTime()); wxCardSpend.setBusinessId(EnumBusiness.BUSINESS_ID1.getCode()); @@ -480,7 +480,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } - private List assignTypeId18(WxCUserBasicInfo user, WxCUser param) { + private List assignTypeId18(WxCUserBasicInfo user) { List resList = null; final int WORK_DAY = 0; @@ -500,13 +500,13 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { startC.add(Calendar.DAY_OF_YEAR, -30); WxCouponOrder wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setCUserId(param.getId()); + wxCouponOrder.setCUserId(user.getId()); wxCouponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); wxCouponOrder.setStartTime(startC.getTime()); wxCouponOrder.setEndTime(endC.getTime()); WxCardSpend wxCardSpend = new WxCardSpend(); - wxCardSpend.setOwnerId(param.getId()); + wxCardSpend.setOwnerId(user.getId()); wxCardSpend.setStartdate(startC.getTime()); wxCardSpend.setEnddate(endC.getTime()); @@ -573,9 +573,9 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } - private List assignTypeId22(WxCUserBasicInfo user, WxCUser param) { + private List assignTypeId22(WxCUserBasicInfo user) { List resList = null; - int days = (int) ((new Date().getTime() - param.getCreateDate().getTime()) / (1000*3600*24)); + int days = (int) ((new Date().getTime() - user.getCreateDate().getTime()) / (1000*3600*24)); float loginRate = (float)param.getLoginCount()/days; if (loginRate > 1F/4) @@ -658,15 +658,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { } break; case ASSIGN_TAGS_TRIGGER_BUY:{ - WxCUser param = (WxCUser) obj; - WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(param.getUserId()); + WxCUserBasicInfo user = (WxCUserBasicInfo) obj; if (user != null) { //消费类别 - resList = assignTypeId14(user, param); + resList = assignTypeId14(user); //饮食偏好 - resList = assignTypeId17(user, param); + resList = assignTypeId17(user); //消费时段 - resList = assignTypeId18(user, param); + resList = assignTypeId18(user); //消费频度 resList = assignTypeId22(user, param); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index 21a988578..d5f8f8489 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -38,7 +38,7 @@ import com.iformall.common.ResultData; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.dto.WxSharingOrderDto; import com.iformall.domain.po.WxAppinfo; -import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCardInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; @@ -363,7 +363,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param counpon * @return */ - private int getUserOrderGroupCount(WxCUser user, WxCoupon counpon) { + private int getUserOrderGroupCount(WxCUserBasicInfo user, WxCoupon counpon) { // + Order 待支付 try { WxOrder orderQ = new WxOrder(); @@ -388,14 +388,14 @@ public class WxOrderServiceImpl implements WxOrderService { * @param counpon * @return */ - private int getUserOrderCount(WxCUser user, WxCoupon counpon) { + private int getUserOrderCount(WxCUserBasicInfo user, WxCoupon counpon) { // + Order 待支付 try { WxOrder orderQ = new WxOrder(); orderQ.updateTenantInfo(counpon); orderQ.setProductId(counpon.getId()); orderQ.setType(EnumOrderType.COUPON.getCode()); - orderQ.setCUserId(user.getUserId()); + orderQ.setCUserId(user.getId()); List statusS = new ArrayList<>(); statusS.add(EnumOrderStatus.ORDER_STATUS_PRESSING.getCode()); statusS.add(EnumOrderStatus.ORDER_STATUS_PRESS_COMPLETE.getCode()); @@ -480,7 +480,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param counpon * @return */ - private int getUserCouponOrderCount(WxCUser user, WxCoupon counpon) { + private int getUserCouponOrderCount(WxCUserBasicInfo user, WxCoupon counpon) { // + couponOrder ---待使用 try { WxCouponOrder couponOrderQ = new WxCouponOrder(); @@ -506,7 +506,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param couponIdStr * @param wxCouponSendVo */ - private void stockMerchantReduce(WxCUser user, WxCoupon coupon, String couponIdStr, WxCouponSendVo wxCouponSendVo) { + private void stockMerchantReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr, WxCouponSendVo wxCouponSendVo) { long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT; String timeStr = String.valueOf(time); // 库存加锁 @@ -579,7 +579,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param coupon * @param couponIdStr */ - private void stockReduce(WxCUser user, WxCoupon coupon, String couponIdStr) { + private void stockReduce(WxCUserBasicInfo user, WxCoupon coupon, String couponIdStr) { //如果缓存中不存在这个key,则从coupon中取 if(!redisLock.hasCouponStockCache(coupon.getId())) { //此处需要加锁,防止并发设置 @@ -880,7 +880,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUser cUser, Integer payment) { + public WxOrder saveMicroPayOrderV2(WxMerchantBUser user, WxCUserBasicInfo cUser, Integer payment) { // 检查用户 if (user == null) { logger.error("用户不存在"); @@ -979,7 +979,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param order * @param coupon */ - private WxCouponOrder createCouponOrder(WxOrder order, WxCUser user, WxCoupon coupon, Long couponPasswordId) { + private WxCouponOrder createCouponOrder(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId) { Date curr = new Date(); Date valid_date = null; int limit_days = Constant.WX_LIMIT_DAYS; @@ -1049,8 +1049,8 @@ public class WxOrderServiceImpl implements WxOrderService { couponOrder.updateTenantInfo(order); couponOrder.setCouponId(order.getProductId()); couponOrder.setCouponType(coupon.getType()); - couponOrder.setCUserId(user.getUserId()); - couponOrder.setOwnerId(user.getUserId()); + couponOrder.setCUserId(user.getId()); + couponOrder.setOwnerId(user.getId()); couponOrder.setAutoRefund(coupon.getAutoRefund()); couponOrder.setOrderId(order.getOrderNumber()); couponOrder.setExpiredTime(valid_date); @@ -1141,7 +1141,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param order * @param coupon */ - private WxCouponOrder createCouponOrderForOuter(WxOrder order, WxCUser user, WxCoupon coupon, Long couponPasswordId) { + private WxCouponOrder createCouponOrderForOuter(WxOrder order, WxCUserBasicInfo user, WxCoupon coupon, Long couponPasswordId) { Date curr = new Date(); Date valid_date = null; int limit_days = Constant.WX_LIMIT_DAYS; @@ -1222,9 +1222,9 @@ public class WxOrderServiceImpl implements WxOrderService { @Transactional(propagation = Propagation.NESTED, readOnly = false, rollbackFor = {Exception.class}) public WxCouponOrder sendFreeCouponToUser(Long userId, Long couponId, WxCouponSendVo wxCouponSendVo) { // check 用户状态 - WxCUser user = null; + WxCUserBasicInfo user = null; try { - user = wxCUserMapper.selectById(userId); + user = wxCUserBasicInfoMapper.selectById(userId); } catch (Exception e) { logger.error("userId : " + userId + ", e: " + e.getMessage()); } @@ -1321,7 +1321,7 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); } // 检查用户 - WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); + WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); if (user == null) { logger.error("用户不存在, userId: " + updateOrder.getCUserId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY); @@ -1358,12 +1358,12 @@ public class WxOrderServiceImpl implements WxOrderService { return ret; } - private void sendInsideOrderSuccessMsg(WxOrder updateOrder, WxCoupon coupon, WxCUser user) { + private void sendInsideOrderSuccessMsg(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { FmInsideOrderSuccessMsg orderSuccess = new FmInsideOrderSuccessMsg(); orderSuccess.setMsgType(EnumMsgRecordType.INSIDE_ORDER_SUCCESS.getCode()); orderSuccess.updateTenantInfo(updateOrder); orderSuccess.setOrderId(updateOrder.getId()); - orderSuccess.setCUserId(user.getUserId()); + orderSuccess.setCUserId(user.getId()); orderSuccess.setCouponId(coupon.getId()); logger.info(">>>>>>>>>>>send sendInsideOrderSuccessMsg :"+orderSuccess); mqBaseProducer.sendMessage(orderSuccess, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); @@ -1382,11 +1382,16 @@ public class WxOrderServiceImpl implements WxOrderService { throw new MallinkException(ErrorCode.COUPON_IS_TAKE_OFF); } // 检查用户 - WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); - if (user == null) { - logger.error("用户不存在, userId: " + updateOrder.getCUserId()); - throw new MallinkException(ErrorCode.USER_IS_EMPTY); - } + WxCUserBasicInfo basicUser = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); + if (basicUser == null) { + logger.error("会员不存在, userId: " + updateOrder.getCUserId()); + throw new MallinkException(ErrorCode.USER_IS_EMPTY); + } +// WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); +// if (user == null) { +// logger.error("用户不存在, userId: " + updateOrder.getCUserId()); +// throw new MallinkException(ErrorCode.USER_IS_EMPTY); +// } // 记录活动 JSONObject jo = null; @@ -1398,11 +1403,11 @@ public class WxOrderServiceImpl implements WxOrderService { } if (jo != null) { if (jo.getIntValue("type") == EnumCouponConditionType.NEW_MEMBER.getCode()) { - wxCUserBasicInfoMapper.incActRecordById(user.getUserId()); + wxCUserBasicInfoMapper.incActRecordById(basicUser.getId()); } } - sendInsideOrderSuccessMsg(updateOrder, coupon, user); + sendInsideOrderSuccessMsg(updateOrder, coupon, basicUser); } /** @@ -1412,7 +1417,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param coupon * @param user */ - public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUser user) { + public void actionAfterCouponOrderSuccess(WxOrder updateOrder, WxCoupon coupon, WxCUserBasicInfo user) { /// TODO 晚上会定时打一下tag wxCUserTagsService.triggerAssignTags(EnumAssignTagsTrigger.ASSIGN_TAGS_TRIGGER_BUY, user); @@ -1922,11 +1927,11 @@ public class WxOrderServiceImpl implements WxOrderService { } @Autowired - @Qualifier("cuserTokenRedisTemplate") - RedisTemplate cUserTokenRedisTemplate; + @Qualifier("cUserBasicInfoRedisTemplate") + RedisTemplate cUserBasicInfoRedisTemplate; @Override - public WxOrder saveOrderForCoupon(WxCUser user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress) { + public WxOrder saveOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, OrderSaveDto orderSaveDto, boolean isPress) { WxOrder order = null; // 防止同一用户重复抽奖(一分钟内) // 1. 订单保存时 加入redis缓存,key --> action:userId:couponId , 时间1000ms @@ -1935,12 +1940,12 @@ public class WxOrderServiceImpl implements WxOrderService { if (checkCouponIsFree(coupon)) { // 免费券 String key = StringUtils.join("action", ":", user.getId(), coupon.getId()); - boolean hasKey = cUserTokenRedisTemplate.hasKey(key); + boolean hasKey = cUserBasicInfoRedisTemplate.hasKey(key); if (hasKey) { logger.error("用户正在下单,请求异常返回,user: {} " + JSON.toJSONString(user)); throw new MallinkException(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION); } - cUserTokenRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); + cUserBasicInfoRedisTemplate.opsForValue().set(key, user, 1000, TimeUnit.MILLISECONDS); order = saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); if (order != null) { @@ -1976,7 +1981,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { + public WxOrder saveFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { // 1. check user info and coupon info userCouponMerchantCheck(user, coupon); if (coupon.checkIsCreditCoupon()) { @@ -2026,7 +2031,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public Long saveOuterOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { + public Long saveOuterOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, String formId, Long couponPasswordId) { // 1. check user info and coupon info userCouponMerchantCheck(user, coupon); if (coupon.checkIsCreditCoupon()) { @@ -2081,7 +2086,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param user * @param coupon */ - private void saveFreeOrder(WxOrder record, WxCUser user, WxCoupon coupon) { + private void saveFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon) { Date curr = new Date(); // body String bodyStr = ""; @@ -2098,7 +2103,7 @@ public class WxOrderServiceImpl implements WxOrderService { record.updateTenantInfo(coupon); record.setOrderNumber(orderNumber); record.setProductId(coupon.getId()); - record.setCUserId(user.getUserId()); + record.setCUserId(user.getId()); record.setPaymentType(EnumPayType.PAY_PAYMENT.getCode()); record.setDetail(bodyStr); record.setCreateDate(curr); @@ -2107,7 +2112,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderMapper.insert(record); } - private void userCouponMerchantCheck(WxCUser user, WxCoupon coupon) throws MallinkException { + private void userCouponMerchantCheck(WxCUserBasicInfo user, WxCoupon coupon) throws MallinkException { // 检查用户 if (user == null) { logger.error("用户不存在"); @@ -2135,7 +2140,7 @@ public class WxOrderServiceImpl implements WxOrderService { } } - private void creditPay(WxCUser user, WxCoupon coupon) { + private void creditPay(WxCUserBasicInfo user, WxCoupon coupon) { //-------此处为【积分支付】记录增加积分操作------- WxCreditHistory creditHistory = new WxCreditHistory(); //记录操作人类型 操作人id @@ -2144,10 +2149,10 @@ public class WxOrderServiceImpl implements WxOrderService { creditHistory.setOperatorId(user.getOperatorId()); } else { creditHistory.setOperatorType(EnumUserType.CUSER.getCode()); - creditHistory.setOperatorId(user.getUserId()); + creditHistory.setOperatorId(user.getId()); } creditHistory.setCreditNum(coupon.getCreditPrice()); - creditHistory.setCUserId(user.getUserId()); + creditHistory.setCUserId(user.getId()); creditHistory.updateTenantInfo(coupon); creditHistory.setCreditType(EnumScoreType.CHANGE_CREDIT.getCode()); creditHistory.setCouponId(coupon.getId()); @@ -2158,7 +2163,7 @@ public class WxOrderServiceImpl implements WxOrderService { @Override @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) - public WxOrder saveNoFreeOrderForCoupon(WxCUser user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { + public WxOrder saveNoFreeOrderForCoupon(WxCUserBasicInfo user, WxCoupon coupon, Long couponChannelId, boolean isPress, Long orderGroupId, String formId) { // 1. check user info and coupon info userCouponMerchantCheck(user, coupon); if (coupon.checkIsCreditCoupon()) { @@ -2238,7 +2243,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param coupon * @param orderNumber */ - private void firstPress(WxOrder record, WxCUser user, WxCoupon coupon, Long orderNumber) { + private void firstPress(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, Long orderNumber) { // 保存砍价信息 int total = coupon.getPrice() - coupon.getSalePrice(); int left_total = total; @@ -2263,7 +2268,7 @@ public class WxOrderServiceImpl implements WxOrderService { wxOrderMapper.updateById(orderUpdatePress); } - private Long saveNoFreeOrder(WxOrder record, WxCUser user, WxCoupon coupon, boolean isPress) { + private Long saveNoFreeOrder(WxOrder record, WxCUserBasicInfo user, WxCoupon coupon, boolean isPress) { Long orderNumber; Date curr = new Date(); @@ -2302,7 +2307,7 @@ public class WxOrderServiceImpl implements WxOrderService { return orderNumber; } - private void checkOrderGroup(WxCUser user, Long orderGroupId,WxCoupon coupon) { + private void checkOrderGroup(WxCUserBasicInfo user, Long orderGroupId,WxCoupon coupon) { WxOrderGroup group = wxOrderGroupMapper.selectById(orderGroupId); if (group.getStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode())) { logger.error("下订单拼团人数已满>>>" + orderGroupId); From f43e0e9917dd7eedba7961f7e5d3cdccb9fec0e8 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Tue, 28 Jul 2020 16:59:58 +0800 Subject: [PATCH 2/2] fix bug --- .../controller/market/WxOrderController.java | 18 ++++++- .../controller/WxMicroPayController.java | 10 +++- .../WxCouponPasswordController.java | 19 +++++++- .../controller/WxOrderController.java | 15 ++++-- .../java/com/iformall/domain/po/WxCUser.java | 11 +++++ .../service/impl/WxCUserTagsServiceImpl.java | 47 +++++++++---------- .../service/impl/WxOrderServiceImpl.java | 8 ++-- .../FmInsideOrderSuccessMsgServiceImpl.java | 8 ++-- 8 files changed, 97 insertions(+), 39 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java index ed3167048..b4521ed1f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOrderController.java @@ -8,6 +8,7 @@ import com.iformall.common.ResultData; import com.iformall.controller.base.BaseController; import com.iformall.domain.dto.OrderSaveDto; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxOrder; @@ -18,6 +19,7 @@ import com.iformall.enums.EnumCouponChannelStatus; import com.iformall.enums.EnumCouponChannelType; import com.iformall.enums.EnumUserType; import com.iformall.exception.MallinkException; +import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCUserService; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; @@ -56,6 +58,9 @@ public class WxOrderController extends BaseController { @Autowired private WxCouponService wxCouponService; + + @Autowired + private WxCUserBasicInfoService wxCUserBasicInfoService; @ApiOperation("分页列表接口") @GetMapping("list") @@ -166,6 +171,10 @@ public class WxOrderController extends BaseController { try { WxCUser user = wxCUserService.getById(orderSaveDto.getUserId()); + if(null == user) { + logger.error("wxcuser未找到:"+orderSaveDto.getUserId()); + return new ResultData(ErrorCode.COUPON_IS_EMPTY); + } //用于标记当前操作人为A端用户 user.setOperatorType(EnumUserType.MALLUSER.getCode()); user.setOperatorId(getUserId()); @@ -177,8 +186,15 @@ public class WxOrderController extends BaseController { if (!wxOrderService.checkCouponIsFree(coupon)) { return new ResultData(ErrorCode.COUPON_IS_NOT_FREE); } + if(!user.isBasicInfo()) { + return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); + } + WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(orderSaveDto.getUserId()); + if (null == basicInfo) { + return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"会员用户未找到. "+orderSaveDto.getUserId()); + } // 免费券 - order = wxOrderService.saveFreeOrderForCoupon(user, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); + order = wxOrderService.saveFreeOrderForCoupon(basicInfo, coupon, orderSaveDto.getCouponChannelId(), orderSaveDto.getFormId(), null); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java index 067f37c66..f33f2f080 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMicroPayController.java @@ -342,7 +342,15 @@ public class WxMicroPayController extends BaseController { WxOrder order = null; try { - order = wxOrderService.saveMicroPayOrderV2(user, cUser, payment); + if (!cUser.isBasicInfo()) { + return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); + } + WxCUserBasicInfo basicInfo = wxCUserBasicInfoService.getById(cUser.getUserId()); + if ( null == basicInfo) { + logger.error("会员用户未找到."+cUser.getUserId()); + return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"会员用户未找到."+cUser.getUserId()); + } + order = wxOrderService.saveMicroPayOrderV2(user, basicInfo, payment); } catch (MallinkException e) { logger.error("saveMicopayOrder 1" + e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java index 68a87d071..1b518c468 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponPasswordController.java @@ -32,6 +32,9 @@ public class WxCouponPasswordController extends BaseController { @Autowired private WxOrderService orderService; + + @Autowired + private WxCUserBasicInfoService userService; @ApiOperation(value = "根据卡密领卡", notes = "{\"password\":\"String\",\"formId\":\"String\"}") @PostMapping("getCouponOrderByPassword") @@ -59,6 +62,20 @@ public class WxCouponPasswordController extends BaseController { } WxCUser cuUser = getUser(); + if (null == cuUser ) { + return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(), "用户信息失效,请重新登陆"); + } + + if(!cuUser.isBasicInfo()) { + return new ResultData(ErrorCode.USER_IS_NOT_MEMBER); + } + + WxCUserBasicInfo user = userService.getById(cuUser.getUserId()); + if(user == null) { + logger.error("会员用户未找到: " + cuUser.getUserId()); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cuUser.getUserId()); + } + WxCoupon coupon = couponService.getById(couponPassword.getCouponId()); if (coupon == null) { return new ResultData(ErrorCode.COUPON_IS_EMPTY); @@ -75,7 +92,7 @@ public class WxCouponPasswordController extends BaseController { // 3. 领取free coupon try { - WxOrder order = orderService.saveFreeOrderForCoupon(cuUser, coupon, null, formId, couponPassword.getId()); + WxOrder order = orderService.saveFreeOrderForCoupon(user, coupon, null, formId, couponPassword.getId()); } catch (MallinkException e) { setCouponPasswordStatus(couponPassword, EnumCouponPasswordStatus.getEnum(pwdStatus)); logger.error(e.getMessage()); diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 39d4ff565..62b136abb 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -142,7 +142,7 @@ public class WxOrderController extends BaseController { boolean isPress = orderSaveDto.getPress() != null ? orderSaveDto.getPress() : false; try { - WxOrder order = wxOrderService.saveOrderForCoupon(user, coupon, orderSaveDto, isPress); + WxOrder order = wxOrderService.saveOrderForCoupon(wxCUserBasicInfo, coupon, orderSaveDto, isPress); return new ResultData(order); } catch (MallinkException e) { logger.error(e.getMessage()); @@ -167,7 +167,7 @@ public class WxOrderController extends BaseController { if (cUserBasicInfo != null && cUserBasicInfo.getActRecord() > 0) return new ResultData(ErrorCode.COUPON_ONLY_FOR_NEW_MEMBER); - if (wxOrderService.countCouponConditionType1(user) > 0) + if (wxOrderService.countCouponConditionType1(cUserBasicInfo) > 0) return new ResultData(ErrorCode.COUPON_ALREADY_IN_NEW_MEMBER); }else if (jo.getIntValue("type") == EnumCouponConditionType.SCORE_SCOPE.getCode()){ int max = jo.getIntValue("max"); @@ -394,7 +394,16 @@ public class WxOrderController extends BaseController { WxOrder order = null; try { - order = wxOrderService.getUnPaidOrder(getUser(), wxCoupon); + WxCUser cuser = getUser(); + if(!cuser.isBasicInfo()) { + throw new MallinkException(ErrorCode.USER_IS_NOT_MEMBER); + } + WxCUserBasicInfo user = wxCUserBasicInfoService.getById(cuser.getUserId()); + if(user == null) { + logger.error("会员用户未找到: " + cuser.getUserId()); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "会员用户未找到" + cuser.getUserId()); + } + order = wxOrderService.getUnPaidOrder(user, wxCoupon); if (order != null) { return new ResultData(Result.SUCCESS, "查询成功", order); } else { diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java index 4447020e2..a56614e50 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUser.java @@ -155,4 +155,15 @@ public class WxCUser extends TenantEntity { } return this.token; } + + /** + * 是否是会员 + * @return + */ + public boolean isBasicInfo() { + if(null == this.getUserId()) { + return false; + } + return true; + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java index c60f38c1d..7d2ae5f74 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserTagsServiceImpl.java @@ -549,14 +549,14 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { return resList; } - private List assignTypeId21(WxCUserBasicInfo user, WxCUser param) { + private List assignTypeId21(WxCUserBasicInfo user) { List resList = null; Calendar startC = Calendar.getInstance(); startC.setTime(new Date()); startC.add(Calendar.DAY_OF_YEAR, -30); WxCouponOrder wxCouponOrder = new WxCouponOrder(); - wxCouponOrder.setCUserId(param.getId()); + wxCouponOrder.setCUserId(user.getId()); wxCouponOrder.setStartTime(startC.getTime()); wxCouponOrder.setEndTime(new Date()); @@ -577,7 +577,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { List resList = null; int days = (int) ((new Date().getTime() - user.getCreateDate().getTime()) / (1000*3600*24)); - float loginRate = (float)param.getLoginCount()/days; + float loginRate = (float)user.getLoginCount()/days; if (loginRate > 1F/4) resList = assign(user, EnumTag.ID_112); else if (loginRate > 1F/7) @@ -667,7 +667,7 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { //消费时段 resList = assignTypeId18(user); //消费频度 - resList = assignTypeId22(user, param); + resList = assignTypeId22(user); } } break; @@ -693,13 +693,12 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { resList = assignTypeId7(user, param.getPhone()); } //活跃 - resList = assignTypeId21(user, param); + resList = assignTypeId21(user); } } break; case ASSIGN_TAGS_TRIGGER_SCAN: { WxCUserBasicInfo user = (WxCUserBasicInfo) obj; - WxCUser param = wxCUserMapper.selectById(user.getId()); if (user != null) { if (user.getSex() != null) { @@ -723,25 +722,23 @@ public class WxCUserTagsServiceImpl implements WxCUserTagsService { resList = assignTypeId6(user, user.getEducation()); } - if (param != null) { - //消费类别 - resList = assignTypeId14(user, param); - //饮食偏好 - resList = assignTypeId17(user, param); - - //消费时段 - resList = assignTypeId18(user, param); - //消费频度 - resList = assignTypeId22(user, param); - //活跃 - resList = assignTypeId21(user, param); - - //车 - WxCUserCar wxCUserCar = new WxCUserCar(); - wxCUserCar.setCUserId(param.getId()); - if (wxCUserCarMapper.countList(wxCUserCar) > 0) { - resList = assignTypeId11(user); - } + //消费类别 + resList = assignTypeId14(user); + //饮食偏好 + resList = assignTypeId17(user); + + //消费时段 + resList = assignTypeId18(user); + //消费频度 + resList = assignTypeId22(user); + //活跃 + resList = assignTypeId21(user); + + //车 + WxCUserCar wxCUserCar = new WxCUserCar(); + wxCUserCar.setCUserId(user.getId()); + if (wxCUserCarMapper.countList(wxCUserCar) > 0) { + resList = assignTypeId11(user); } } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index d5f8f8489..c14720cb2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -417,7 +417,7 @@ public class WxOrderServiceImpl implements WxOrderService { * @param counpon * @return */ - public WxOrder getUnPaidOrder(WxCUser user, WxCoupon counpon) { + public WxOrder getUnPaidOrder(WxCUserBasicInfo user, WxCoupon counpon) { // + Order 待支付 try { WxOrder orderQ = new WxOrder(); @@ -448,13 +448,13 @@ public class WxOrderServiceImpl implements WxOrderService { * @param user * @return */ - public int countCouponConditionType1(WxCUser user) { + public int countCouponConditionType1(WxCUserBasicInfo user) { // + Order 待支付 try { WxOrder orderQ = new WxOrder(); orderQ.setTenantId(user.getTenantId()); orderQ.setType(EnumOrderType.COUPON.getCode()); - orderQ.setCUserId(user.getUserId()); + orderQ.setCUserId(user.getId()); List statusS = new ArrayList<>(); statusS.add(EnumOrderStatus.ORDER_STATUS_PENDING_PAYMENT.getCode()); statusS.add(EnumOrderStatus.ORDER_STATUS_PAYMENT_SUCCESS.getCode()); @@ -1481,7 +1481,7 @@ public class WxOrderServiceImpl implements WxOrderService { public int microPayOrderSuccess(WxOrder updateOrder) { Date currentDate = new Date(); // C端用户 - WxCUser user = wxCUserMapper.selectById(updateOrder.getCUserId()); + WxCUserBasicInfo user = wxCUserBasicInfoMapper.selectById(updateOrder.getCUserId()); if (user == null) { logger.error("用户不存在, userId: " + updateOrder.getCUserId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY); diff --git a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderSuccessMsgServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderSuccessMsgServiceImpl.java index e062103a3..81e9ea797 100644 --- a/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderSuccessMsgServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/msg/impl/FmInsideOrderSuccessMsgServiceImpl.java @@ -1,14 +1,14 @@ package com.iformall.service.msg.impl; import com.iformall.common.ErrorCode; -import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxCoupon; import com.iformall.domain.po.WxCouponChannel; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.msg.BaseMsg; import com.iformall.domain.po.msg.FmInsideOrderSuccessMsg; import com.iformall.exception.MallinkException; -import com.iformall.service.WxCUserService; +import com.iformall.service.WxCUserBasicInfoService; import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; import com.iformall.service.WxOrderService; @@ -31,7 +31,7 @@ public class FmInsideOrderSuccessMsgServiceImpl implements MsgSendService { private WxOrderService orderService; @Autowired - private WxCUserService userService; + private WxCUserBasicInfoService userService; @Autowired private WxCouponService couponService; @@ -63,7 +63,7 @@ public class FmInsideOrderSuccessMsgServiceImpl implements MsgSendService { throw new MallinkException(ErrorCode.ORDER_COUPON_NOT_MATCH.getCode(), "订单用户不一致" + msg.getOrderId()); } - WxCUser user = userService.getById(msg.getCUserId()); + WxCUserBasicInfo user = userService.getById(msg.getCUserId()); if(user == null) { logger.error("用户未找到: " + msg.getCUserId()); throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(), "用户未找到" + msg.getCUserId());