From 48c15aa3b378905505581dbacff609ef707c8c71 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 10:18:56 +0800 Subject: [PATCH 01/11] fix --- .../controller/mem/WxCUserBasicInfoController.java | 1 - .../main/java/com/iformall/domain/po/WxCUserTags.java | 6 +++++- .../service/impl/WxCUserBasicInfoServiceImpl.java | 9 ++++++--- .../src/main/resources/mapper/WxCUserTagsMapper.xml | 8 ++++---- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java index 8af83d537..25f3ab77a 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/mem/WxCUserBasicInfoController.java @@ -338,7 +338,6 @@ public class WxCUserBasicInfoController extends BaseController { basicInfo.undateFinalTenantId(ifParentUpdateTenantInfo()); wxCUserBasicInfoService.exportData(ifParentUpdateTenantInfo(),basicInfo, request, response); - } @RequestMapping("/exportTemplate") diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserTags.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserTags.java index 0740e4022..228a640c7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserTags.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserTags.java @@ -17,12 +17,16 @@ public class WxCUserTags extends BaseTenantEntity { @io.swagger.annotations.ApiModelProperty(value="c端用户id",name="userId") private Long userId; + @TableField(exist = false) - private List userIds; + private List userIdList; + @io.swagger.annotations.ApiModelProperty(value="",name="tags") private String tags; + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") private Date updateDate; diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index 80e6231ae..88bfa6d16 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -1232,10 +1232,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc basicInfo.undateFinalTenantId(tenantInfo); } list = wxCUserBasicInfoMapper.findVoList(basicInfo); + if (null == list || list.size() <= 0 ) { + return null; + } List userIds = wxCUserBasicInfoMapper.findVoIdsList(basicInfo); - if (null != userIds ) { + if (null != userIds && userIds.size() > 0 ) { WxCUserTags tq = new WxCUserTags(); - tq.setUserIds(userIds); + tq.setUserIdList(userIds); List userTagList = wxCUserTagsMapper.findList(tq); if (null != userTagList) { List tagList = wxTagsMapper.findListAll(); @@ -1253,7 +1256,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService,IExc } } - if (null != list ) { + if (null != list && list.size() > 0 ) { List retList = new ArrayList(); retList.addAll(list); return retList; diff --git a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml index 6f8ec4293..4a77a27ac 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserTagsMapper.xml @@ -47,10 +47,10 @@ - - and user_id in - - #{userIdItem} + + and `user_id` in + + #{uItem} From edbe39bdff9d2655814cbab8c6c6ffd2b2ae9998 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 10:55:07 +0800 Subject: [PATCH 02/11] =?UTF-8?q?=E5=8D=A1=E5=BB=B6=E6=9C=9Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/iformall/mapper/WxCardTransferInfoMapper.java | 6 ++++++ .../java/com/iformall/mapper/WxCouponOrderMapper.java | 2 ++ .../com/iformall/service/impl/WxCouponServiceImpl.java | 9 +++++++++ .../main/resources/mapper/WxCardTransferInfoMapper.xml | 6 ++++++ .../src/main/resources/mapper/WxCouponOrderMapper.xml | 4 ++++ 5 files changed, 27 insertions(+) diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCardTransferInfoMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCardTransferInfoMapper.java index 90a0624ed..c50ba5266 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCardTransferInfoMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCardTransferInfoMapper.java @@ -1,9 +1,15 @@ package com.iformall.mapper; +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxCardTransferInfo; public interface WxCardTransferInfoMapper extends CommonMapper { + void cardDefer(@Param("expiredTime")Date expiredTime,@Param("couponOrderIds")List couponOrderIds); } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 7696aa217..0bf0dd6d2 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -84,4 +84,6 @@ public interface WxCouponOrderMapper extends CommonMapper { //卡延期,将过期的状态变为使用中 void cardDefer(@Param("couponId")Long couponId,@Param("expireTime")Date expireTime); + //查询待延期的idList + List cardDeferCouponOrderId(@Param("couponId")Long couponId); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java index b26ea4c2c..142b10b91 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java @@ -81,6 +81,9 @@ public class WxCouponServiceImpl implements WxCouponService { @Autowired WxCouponOrderMapper wxCouponOrderMapper; + + @Autowired + WxCardTransferInfoMapper wxCardTransferInfoMapper; @Autowired @Qualifier("couponChannelRedisTemplate") @@ -765,11 +768,17 @@ public class WxCouponServiceImpl implements WxCouponService { wxCouponChannelMapper.cardDefer(id, validEndDate); //更新coupon_order的状态,已过期的变为使用中 5-->4 + List couponOrderIds = wxCouponOrderMapper.cardDeferCouponOrderId(id); wxCouponOrderMapper.cardDefer(id,validEndDate); //更新coupon_passwd couponPasswordMapper.updateExpiredTime(id, validEndDate); + //更新wx_card_transfer_info + if (null != couponOrderIds && couponOrderIds.size() > 0 ) { + wxCardTransferInfoMapper.cardDefer(validEndDate, couponOrderIds); + } + return new ResultData(); } diff --git a/mallinkService/src/main/resources/mapper/WxCardTransferInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCardTransferInfoMapper.xml index 840c8120c..aa00bddda 100644 --- a/mallinkService/src/main/resources/mapper/WxCardTransferInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCardTransferInfoMapper.xml @@ -2,4 +2,10 @@ + + update wx_card_transfer_info set expired_time = #{expiredTime},update_date=now() where coupon_order_id in + + #{sItem} + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 4403ed34d..6784aca99 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1397,5 +1397,9 @@ update wx_coupon_order set coupon_order_status = 4,update_date = now(), expired_time= #{expireTime} where coupon_id = #{couponId} and coupon_order_status = 5 + + \ No newline at end of file From 4575385a0e55b8d048826930d8169596d57b7d09 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 11:31:17 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E5=8D=A1=E5=BB=B6=E6=9C=9Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/WxCouponOrderMapper.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 6784aca99..0a21b7505 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -1395,11 +1395,11 @@ - update wx_coupon_order set coupon_order_status = 4,update_date = now(), expired_time= #{expireTime} where coupon_id = #{couponId} and coupon_order_status = 5 + update wx_coupon_order set coupon_order_status = 4,update_date = now(), expired_time= #{expireTime} where coupon_id = #{couponId} and coupon_order_status in (4, 5) \ No newline at end of file From fe5181df88714a1ff4dd2e834cdeb342224a70f2 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 14:27:38 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=86=E8=B4=A6?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/WxMerchantController.java | 3 ++- .../java/com/iformall/service/impl/WxMerchantServiceImpl.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index 52bb55ec6..f2fcd8182 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -127,8 +127,9 @@ public class WxMerchantController extends BaseController { }catch(Exception e) { return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),phone+"匹配C端用户失败,该情况可能是未在C端授权手机号或者用户C端数据存在多个微信对应统一手机号异常数据。"); } + }else { + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(),"当前微信的手机号["+buser.getPhone()+"]不是商户的联系手机号,不能操作。"); } - return new ResultData(ErrorCode.USER_NO_PERMISSION); } public boolean hasPermission() { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index e4b877edd..a1e73c76e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -540,7 +540,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { return wxProfitSharingReceiverService.updateReceiver(wxMerchant, receiver,payWay); } } catch (Exception e) { - logger.error("db failed: 账户操作失败, e:" + e.getMessage()); + logger.error("db failed: 账户操作失败, e:" + e.getMessage(),e); throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); } return new ResultData(Result.SUCCESS, "操作成功"); From 5a78473691cb190fc895f169a5c05c966da7d10c Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 14:50:25 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E5=95=86=E6=88=B7=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/iformall/controller/WxMerchantController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index f2fcd8182..7da6d2aba 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -122,7 +122,7 @@ public class WxMerchantController extends BaseController { if (mUser != null) { return new ResultData(mUser.getOpenId()); } else { - return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),phone+"请在C端完成授权手机号操作。"); + return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),"请用绑定["+phone+"]的微信在C端完成授权手机号操作。"); } }catch(Exception e) { return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),phone+"匹配C端用户失败,该情况可能是未在C端授权手机号或者用户C端数据存在多个微信对应统一手机号异常数据。"); From a551edabd1e1f0c40c11a415e8423e9e36bbea66 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 17:48:32 +0800 Subject: [PATCH 06/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=94=B6=E6=AC=BE?= =?UTF-8?q?=E8=B4=A6=E5=8F=B7=E6=8F=90=E7=A4=BA=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/iformall/controller/WxMerchantController.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index 20751ad81..0187bcd90 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -127,8 +127,9 @@ public class WxMerchantController extends BaseController { }catch(Exception e) { return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),phone+"匹配C端用户失败,该情况可能是未在C端授权手机号或者用户C端数据存在多个微信对应统一手机号异常数据。"); } + }else { + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(),"当前微信["+buser.getOpenId()+"]授权的手机号["+buser.getPhone()+"]不是商户的联系手机号,不能操作."); } - return new ResultData(ErrorCode.USER_NO_PERMISSION); } public boolean hasPermission() { From e5d6320b02472de4c8909638bc6975c6d58668c0 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Wed, 23 Sep 2020 18:28:12 +0800 Subject: [PATCH 07/11] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=88=86=E8=B4=A6?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/iformall/controller/WxMerchantController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index 0187bcd90..5c3a62cae 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -128,7 +128,7 @@ public class WxMerchantController extends BaseController { return new ResultData(ErrorCode.USER_IS_EMPTY.getCode(),phone+"匹配C端用户失败,该情况可能是未在C端授权手机号或者用户C端数据存在多个微信对应统一手机号异常数据。"); } }else { - return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(),"当前微信["+buser.getOpenId()+"]授权的手机号["+buser.getPhone()+"]不是商户的联系手机号,不能操作."); + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(),"当前微信["+buser.getOpenId()+"]在B端授权的手机号["+buser.getPhone()+"]不是商户的联系手机号,不能操作."); } } From a7a32be6cf190514ab888d455098a951d916c0bb Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 27 Sep 2020 16:48:05 +0800 Subject: [PATCH 08/11] fix --- .../iformall/controller/WxCarController.java | 37 +++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java index 192e055d7..2a12fac96 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java @@ -327,29 +327,36 @@ public class WxCarController extends BaseController { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "广场停车场类型非法."); } -// Integer used = ParkCacheUtils.getCarCouponUseCacheLock(redisTemplate, vendor.getMessage(), carNumber); -// if (null != used && 1 == used.intValue()) { -// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "已经使用过停车券,不能叠加使用."); -// } + Integer used = ParkCacheUtils.getCarCouponUseCacheLock(redisTemplate, vendor.getMessage(), carNumber); + + if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) { - ResultData result = etcpHelper.getCoupon(paramMap, park, userCar,carNumber); - ParkCacheUtils.setCarCouponUsedCacheLock(redisTemplate, vendor.getMessage(), carNumber); - return result; + if (null != used && used.intValue() < 1) { + ResultData result = etcpHelper.getCoupon(paramMap, park, userCar,carNumber); + if (result.code == Result.SUCCESS) { + ParkCacheUtils.setCarCouponUsedCacheLock(redisTemplate, vendor.getMessage(), carNumber); + } + return result; + } + return new ResultData(Result.SUCCESS,"已经使用过优惠券, 不能重复使用."); } else { WxCoupon coupon = couponService.getById(userCar.getCouponId()); if (coupon == null) { return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "券为空"); } try { - ResultData rs = parkFactory.getParkService(park.getVendorType()).useCoupon(paramMap, park, userCar, coupon, carNumber); - if (rs.code == Result.SUCCESS) { - etcpHelper.updateWxCouponOrderUsed(userCar, park); - ParkCacheUtils.setCarCouponUsedCacheLock(redisTemplate, vendor.getMessage(), carNumber); - return new ResultData(); - }else { - return new ResultData(rs.code,rs.message); - } + if (null != used && used.intValue() < 1) { + ResultData rs = parkFactory.getParkService(park.getVendorType()).useCoupon(paramMap, park, userCar, coupon, carNumber); + if (rs.code == Result.SUCCESS) { + etcpHelper.updateWxCouponOrderUsed(userCar, park); + ParkCacheUtils.setCarCouponUsedCacheLock(redisTemplate, vendor.getMessage(), carNumber); + return new ResultData(); + }else { + return new ResultData(rs.code,rs.message); + } + } + return new ResultData(Result.SUCCESS,"已经使用过优惠券, 不能重复使用."); } catch (Exception e) { logger.error("park getCoupon error",e); return new ResultData(Result.ERROR,e.getMessage()); From 31fe74d8fa7a190d78dccace20ec6af42f8d760e Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 28 Sep 2020 11:31:27 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=8B=BC=E5=9B=A2?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E5=90=8E=E5=8F=96=E6=B6=88=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/WxOrderGroupServiceImpl.java | 16 ++++++++++++++-- .../main/java/com/iformall/utils/RedisLock.java | 10 ++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index a2ef094a7..e37c2d5f2 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java @@ -79,7 +79,7 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { if (!grouppeopleLock) { throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团锁定失败,请稍后再试。"); } - //此处拼团数量应从订单总数查询,支付成功的就算一个,没支付成功的不算 + //此处拼团数量应从订单总数查询,支付成功的就算一个,没支付成功的不算. 提高拼团的成功率 int ordercount = wxOrderService.countGroupOrder(order.getOrderGroupId(),true); Integer remainPeople = wxCoupon.getPressLimitNum()-ordercount-1; //Integer remainPeople = wxOrderGroup.getRemainPeople()-1; @@ -142,6 +142,8 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { logger.error("更新订单信息失败", e); throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD); } + //此时会出现临界情况,remainPeople是已支付的数量 + //此时如果最后的位置,同时多个人点了,去支付,最先支付的会把后面的取消掉。 if (remainPeople == 0) { actionAfterOrderGroupSuccess(order, orderGroupId); } @@ -191,6 +193,13 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { * @param orderGroupId */ private void actionAfterOrderGroupSuccess(WxOrder order, Long orderGroupId) { + //拼团完成,只能执行一次。 + boolean isFirstSet = redisLock.setOrderGroupComplateLock(orderGroupId); + //如果没有设置成功,则不是第一次处理,后续的忽略,防止并发 + if (!isFirstSet) { + return; + } + // 拼团完成 // 得到所有拼团的order WxOrder wxOrder = new WxOrder(); @@ -224,7 +233,10 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { //去库存 wxOrderService.updateOrderStatus(temp); //拼团取消 - temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_BREAK.getCode()); + //temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_BREAK.getCode()); + + //拼团失败。定时会处理退款 + temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); wxOrderMapper.updateById(temp); } } diff --git a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java index 05b199b7a..48395bc2d 100644 --- a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java +++ b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java @@ -145,4 +145,14 @@ public class RedisLock { } return false; } + + public boolean setOrderGroupComplateLock(long orderGroupId) { + String longstr = stringRedisTemplate.opsForValue().get("orderGroup:complete:"+String.valueOf(orderGroupId)); + if (Long.parseLong(longstr) >= 1L) { + return false; + } + Long rs = stringRedisTemplate.opsForValue().increment("orderGroup:complete:"+String.valueOf(orderGroupId), 1); + return rs <= 1L; + } + } From 1080c2019895b3c0c89adb7395a9bb2ce8def27f Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 28 Sep 2020 16:20:56 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=95=86=E6=88=B7?= =?UTF-8?q?=E6=94=B6=E6=AC=BE=E8=B4=A6=E5=8F=B7=E7=BB=91=E5=AE=9A=E6=8F=90?= =?UTF-8?q?=E7=A4=BA=EF=BC=8C=E6=89=93=E6=A0=87=E7=AD=BE=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E6=8B=BC=E5=9B=A2bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iformall/controller/BaseController.java | 7 +++-- .../schedule/WxCUserTagsSchedule.java | 13 +-------- .../iformall/domain/po/WxCUserBasicInfo.java | 7 ----- .../service/impl/WxOrderGroupServiceImpl.java | 4 +-- .../mapper/WxCUserBasicInfoMapper.xml | 28 ++++--------------- 5 files changed, 12 insertions(+), 47 deletions(-) diff --git a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java index ac1bceb9a..6a4184022 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/BaseController.java @@ -76,10 +76,11 @@ public class BaseController { } public WxMerchantBUser getUser() { - Long userId = getBuser().getUserId(); + WxBuser buser = getBuser(); + Long userId = buser.getUserId(); WxMerchantBUser user = wxMerchantBUserService.getById(userId); if (user == null) { - throw new MallinkException(ErrorCode.USER_IS_EMPTY); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"BUser[id:"+buser.getId()+",userId:"+userId+"]未查询到WxMerchantBUser。请联系管理员或者重新登陆."); } return user; } @@ -88,7 +89,7 @@ public class BaseController { Long id = getBuserId(); WxBuser user = wxBuserService.getById(id); if (user == null) { - throw new MallinkException(ErrorCode.USER_IS_EMPTY); + throw new MallinkException(ErrorCode.USER_IS_EMPTY.getCode(),"BUser[id:"+id+"]未查询到记录, 请重新登陆,并完全授权微信个人信息以及手机号授权."); } return user; } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java index 1c19d066a..3ace0e8f1 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java @@ -48,21 +48,10 @@ public class WxCUserTagsSchedule { wxCUserBasicInfo.setFinalTenantId(mall.getParentTenantId()); } Date curDate = new Date(); - Calendar startC = Calendar.getInstance(); - startC.setTime(curDate); - startC.add(Calendar.DAY_OF_YEAR, -30); - - Calendar endC = Calendar.getInstance(); - endC.setTime(curDate); - endC.add(Calendar.DAY_OF_YEAR, -5); - //5天内未扫描的,且只扫描1个月内未扫描的 - wxCUserBasicInfo.setScanStartTime(startC.getTime()); - wxCUserBasicInfo.setScanEndTime(endC.getTime()); - //活跃时间在10天内的 Calendar startA = Calendar.getInstance(); startA.setTime(curDate); - startA.add(Calendar.DAY_OF_YEAR, -10); + startA.add(Calendar.DAY_OF_YEAR, -1); wxCUserBasicInfo.setActiveStartTime(startA.getTime()); wxCUserBasicInfo.setActiveEndTime(curDate); int pageIndex = 1; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java index c1cb1d851..54743e1ec 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java @@ -110,13 +110,6 @@ public class WxCUserBasicInfo extends TenantEntity { @io.swagger.annotations.ApiModelProperty(value = "状态0正常1锁定", name = "status") private Integer status; - - @io.swagger.annotations.ApiModelProperty(value = "标签扫描时间", name = "tagScanTime") - private Date tagScanTime; - @TableField(exist = false) - private Date scanStartTime; - @TableField(exist = false) - private Date scanEndTime; @TableField(exist = false) @Excel(name="标签",width = 50,orderNum = "10") diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java index e37c2d5f2..203fd4bc5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java @@ -235,8 +235,8 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService { //拼团取消 //temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_BREAK.getCode()); - //拼团失败。定时会处理退款 - temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_FAILD.getCode()); + //拼团取消。定时会处理退款 + temp.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_CANCEL.getCode()); wxOrderMapper.updateById(temp); } } diff --git a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml index b132d1285..74786975b 100644 --- a/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCUserBasicInfoMapper.xml @@ -26,13 +26,12 @@ - distinct wcubi.`id`,wcubi.`phone`,wcubi.`birthdate`,wcubi.`education`,wcubi.`sex`,wcubi.`email`, wcubi.`address`,wcubi.`poins`,wcubi.`tag_id`,wcubi.`create_date`,wcubi.`update_date`, - wcubi.`final_tenant_id`,wcubi.`name`,wcubi.`nick_name`,wcubi.`tag_scan_time`, + wcubi.`final_tenant_id`,wcubi.`name`,wcubi.`nick_name`, wcubi.`avatar_url`,wcubi.`credit`,wcubi.`active_time`,wcubi.`login_count`,wcubi.`act_record` ,(select level from wx_level_config where poins >= points and tenant_id=wcubi.final_tenant_id @@ -40,7 +39,7 @@ - `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`,`tag_scan_time`, + `id`,`phone`,`birthdate`,`education`,`sex`,`email`,`address`,`poins`,`tag_id`, `create_date`,`update_date`,`tenant_id`,`parent_tenant_id`,`name`,`nick_name`,`credit`,`active_time`,`act_record` @@ -108,11 +107,7 @@ and wcubi.`create_date` between #{startTime} and #{endTime} - - - - and wcubi.`tag_scan_time` between #{scanStartTime} and #{scanEndTime} - + and wcubi.`active_time` between #{activeStartTime} and #{activeEndTime} @@ -210,10 +205,6 @@ and wcubi.`create_date` between #{basicInfo.startTime} and #{basicInfo.endTime} - - - - and wcubi.`tag_scan_time` between #{basicInfo.scanStartTime} and #{basicInfo.scanEndTime} @@ -406,7 +397,7 @@ distinct cub.id,cub.phone,cub.birthdate,cub.education,cub.sex,cub.email,cub.address,cub.poins,cub.tag_id, - cub.create_date,cub.update_date,cub.name,cub.level,cub.nick_name,cub.score_date,cub.final_tenant_id,cub.tag_scan_time + cub.create_date,cub.update_date,cub.name,cub.level,cub.nick_name,cub.score_date,cub.final_tenant_id