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/mallinkAdmin/src/main/resources/application-dev.yml b/mallinkAdmin/src/main/resources/application-dev.yml index 0756d9947..ede46d98e 100644 --- a/mallinkAdmin/src/main/resources/application-dev.yml +++ b/mallinkAdmin/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true&allowMultiQueries=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true&allowMultiQueries=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -27,7 +27,7 @@ spring: #date-format: yyyy-MM-dd HH:mm:ss # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -87,10 +87,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -144,7 +144,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 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/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java index 52bb55ec6..cd4bd1ffb 100644 --- a/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java +++ b/mallinkBApi/src/main/java/com/iformall/controller/WxMerchantController.java @@ -122,13 +122,14 @@ 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端数据存在多个微信对应统一手机号异常数据。"); } + }else { + return new ResultData(ErrorCode.USER_NO_PERMISSION.getCode(),"当前微信["+buser.getOpenId()+"]在B端授权的手机号["+buser.getPhone()+"]不是商户的联系手机号,不能操作."); } - return new ResultData(ErrorCode.USER_NO_PERMISSION); } public boolean hasPermission() { diff --git a/mallinkBApi/src/main/resources/application-dev.yml b/mallinkBApi/src/main/resources/application-dev.yml index 7c04ff8da..76fe4f591 100644 --- a/mallinkBApi/src/main/resources/application-dev.yml +++ b/mallinkBApi/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -26,7 +26,7 @@ spring: #date-format: yyyy-MM-dd HH:mm:ss # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -140,7 +140,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 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()); diff --git a/mallinkCApi/src/main/resources/application-dev.yml b/mallinkCApi/src/main/resources/application-dev.yml index f39f67791..b2b606aad 100644 --- a/mallinkCApi/src/main/resources/application-dev.yml +++ b/mallinkCApi/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -27,7 +27,7 @@ spring: # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -136,7 +136,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 diff --git a/mallinkCallback/src/main/resources/application-dev.yml b/mallinkCallback/src/main/resources/application-dev.yml index d5a8259d9..dbbcb8bf7 100644 --- a/mallinkCallback/src/main/resources/application-dev.yml +++ b/mallinkCallback/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -27,7 +27,7 @@ spring: #date-format: yyyy-MM-dd HH:mm:ss # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -86,10 +86,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -142,7 +142,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 diff --git a/mallinkMQConsumer/src/main/resources/application-dev.yml b/mallinkMQConsumer/src/main/resources/application-dev.yml index e477418f1..20c8a10d1 100644 --- a/mallinkMQConsumer/src/main/resources/application-dev.yml +++ b/mallinkMQConsumer/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -28,7 +28,7 @@ spring: # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-another-broker-when-not-store-ok: false retry-times-when-send-failed: 2 rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -136,7 +136,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 diff --git a/mallinkPosApi/src/main/resources/application-dev.yml b/mallinkPosApi/src/main/resources/application-dev.yml index cbc7f9d3e..c7930118a 100644 --- a/mallinkPosApi/src/main/resources/application-dev.yml +++ b/mallinkPosApi/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -26,7 +26,7 @@ spring: #date-format: yyyy-MM-dd HH:mm:ss # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -140,7 +140,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 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/mallinkSchedule/src/main/resources/application-dev.yml b/mallinkSchedule/src/main/resources/application-dev.yml index 5e60ffc5a..a34e14dc6 100644 --- a/mallinkSchedule/src/main/resources/application-dev.yml +++ b/mallinkSchedule/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -28,7 +28,7 @@ spring: # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-another-broker-when-not-store-ok: false retry-times-when-send-failed: 2 rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -136,7 +136,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 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/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/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/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/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/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, "操作成功"); 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..203fd4bc5 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_CANCEL.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; + } + } 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 - 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 diff --git a/mallinkSysAdmin/src/main/resources/application-dev.yml b/mallinkSysAdmin/src/main/resources/application-dev.yml index 105e0fc3e..8bf98c784 100644 --- a/mallinkSysAdmin/src/main/resources/application-dev.yml +++ b/mallinkSysAdmin/src/main/resources/application-dev.yml @@ -3,7 +3,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -26,7 +26,7 @@ spring: #date-format: yyyy-MM-dd HH:mm:ss # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-times-when-send-failed: 2 # RABBITMQ rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -137,7 +137,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 diff --git a/mallinkWebSocketServer/src/main/resources/application-dev.yml b/mallinkWebSocketServer/src/main/resources/application-dev.yml index 2cd7b85bc..3d077efcd 100644 --- a/mallinkWebSocketServer/src/main/resources/application-dev.yml +++ b/mallinkWebSocketServer/src/main/resources/application-dev.yml @@ -4,7 +4,7 @@ spring: include: rabbitMQ # JDBC datasource: - url: jdbc:mysql://202.165.179.86:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true + url: jdbc:mysql://101.200.130.134:3306/mallink?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&useAffectedRows=true username: root password: fm2020test type: com.alibaba.druid.pool.DruidDataSource @@ -28,7 +28,7 @@ spring: # REDIS redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600 @@ -85,10 +85,10 @@ spring: retry-another-broker-when-not-store-ok: false retry-times-when-send-failed: 2 rabbitmq: - host: 202.165.179.86 + host: 101.200.130.134 port: 5672 username: fumao - password: f9l98&*%%u7flt33 + password: f9l98 publisher-confirms: true publisher-returns: false virtual-host: / @@ -136,7 +136,7 @@ wechat: componentToken: formall2018 componentAesKey: htKq8EjBMPNndfZQK9JiFojFaqFwFpw42VfeWFtx7HN redis: - host: 202.165.179.86 + host: 101.200.130.134 port: 6379 password: iF0rm@2l2ol9 timeout: 3600