Browse Source

Merge branch 'release_real_200809' of https://git.malls.iformall.com/server/formallProject into release_real_200809

release_toaliyun_real
xhxu 5 years ago
parent
commit
f3ceccd2fc
6 changed files with 38 additions and 32 deletions
  1. +2
    -2
      mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java
  2. +4
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java
  3. +25
    -28
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java
  4. +4
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/utils/RedisLock.java
  6. +2
    -1
      mallinkService/src/main/resources/mapper/WxMerchantMapper.xml

+ 2
- 2
mallinkSchedule/src/main/java/com/iformall/schedule/WxCUserTagsSchedule.java View File

@@ -51,10 +51,10 @@ public class WxCUserTagsSchedule {
//活跃时间在10天内的
Calendar startA = Calendar.getInstance();
startA.setTime(curDate);
startA.add(Calendar.DAY_OF_YEAR, -1);
startA.add(Calendar.DAY_OF_YEAR, -10);
wxCUserBasicInfo.setActiveStartTime(startA.getTime());
wxCUserBasicInfo.setActiveEndTime(curDate);
int pageIndex = 1;
int pageIndex = 0;
final int pageSize = 5000;

PageInfo page;


+ 4
- 0
mallinkService/src/main/java/com/iformall/domain/vo/WxMerchantVo.java View File

@@ -5,6 +5,7 @@ import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;
import java.util.List;

@JsonIgnoreProperties(value = {"handler"})
@@ -91,4 +92,7 @@ public class WxMerchantVo extends TenantEntity {

@io.swagger.annotations.ApiModelProperty(value = "客服电话", name = "linkLinePhone")
private String linkLinePhone;
@io.swagger.annotations.ApiModelProperty(value = "置顶时间", name = "topTime")
private Date topTime;
}

+ 25
- 28
mallinkService/src/main/java/com/iformall/service/impl/WxOrderGroupServiceImpl.java View File

@@ -72,32 +72,30 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService {
WxPayOrderMapper wxPayOrderMapper;

private int updateOrderGroup(WxOrderGroup wxOrderGroup,WxOrder order, WxCoupon wxCoupon) {
//锁住人数
long time = System.currentTimeMillis() + RedisLock.LONG_TIMEOUT;
String timeStr = String.valueOf(time);
boolean grouppeopleLock = redisLock.lock("grouppeopleLock_"+order.getOrderGroupId(), timeStr);
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;
wxOrderGroup.setStatus(remainPeople <= 0 ? EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode() : wxOrderGroup.getStatus());
wxOrderGroup.setUpdateDate(new Date());
wxOrderGroup.setRemainPeople(remainPeople);
logger.info("非首次拼团,更新拼团信息, 剩余人数-1");
int row = wxOrderGroupMapper.updateOrderGroup(wxOrderGroup);
if (row != 1) {
//错误,更新状态,定时任务会发起退款,回滚库存
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode());
wxOrderMapper.updateById(order);
redisLock.unlock("grouppeopleLock_"+order.getOrderGroupId(), timeStr);
throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团失败,将稍后退款.");
}else {
redisLock.unlock("grouppeopleLock_"+order.getOrderGroupId(), timeStr);
}
return remainPeople;
//TODO 并发处理 锁住人数
//此处拼团数量应从订单总数查询,支付成功的就算一个,没支付成功的不算. 提高拼团的成功率
if (null != order.getOrderGroupId() && (!order.getOrderGroupId().equals(0L))) {
synchronized(order.getOrderGroupId()) {
int ordercount = wxOrderService.countGroupOrder(order.getOrderGroupId(),true);
Integer remainPeople = wxCoupon.getPressLimitNum()-ordercount-1;
//Integer remainPeople = wxOrderGroup.getRemainPeople()-1;
wxOrderGroup.setStatus(remainPeople <= 0 ? EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode() : wxOrderGroup.getStatus());
wxOrderGroup.setUpdateDate(new Date());
wxOrderGroup.setRemainPeople(remainPeople);
logger.info("非首次拼团,更新拼团信息, 剩余人数-1");
int row = wxOrderGroupMapper.updateOrderGroup(wxOrderGroup);
if (row != 1) {
//错误,更新状态,定时任务会发起退款,回滚库存
order.setOrderStatus(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode());
wxOrderMapper.updateById(order);
throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"参团失败,将稍后退款.");
}
return remainPeople;
}
}else {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"参团错误,非参团订单.");
}
}
@Override
@@ -317,8 +315,7 @@ public class WxOrderGroupServiceImpl implements WxOrderGroupService {
orderList = orderList.parallelStream().filter(o -> {
return o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING.getCode()) ||
o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode()) ||
o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_OVERTIME.getCode()) ||
o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_CANCEL.getCode());
o.getOrderStatus().equals(EnumOrderStatus.ORDER_STATUS_COOPERATING_OVERTIME.getCode());
}).sorted(Comparator.comparing(order -> order.getId())).collect(Collectors.toList());
if (!orderList.isEmpty()) {
List<WxCUserBasicInfo> userList = new ArrayList<>();


+ 4
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java View File

@@ -230,6 +230,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
WxOrder orderParams = new WxOrder();
orderParams.setOrderGroupId(order.getOrderGroupId());
orderParams.setCUserId(user.getId());
List<Integer> orderstatuslist = new ArrayList<Integer>();
orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_COMPLETE.getCode());
orderstatuslist.add(EnumOrderStatus.ORDER_STATUS_COOPERATING_UNPAID.getCode());
orderParams.setStatusS(orderstatuslist);
List<WxOrder> olist = wxOrderMapper.findList(orderParams);
if (olist == null || olist.size() <=0 ) {
throw new MallinkException(ErrorCode.ORDER_GROUP_COOPERATING_FAILD.getCode(),"未查询到参团订单[user:"+user.getId()+",groupId:"+order.getOrderGroupId()+"]");


+ 1
- 1
mallinkService/src/main/java/com/iformall/utils/RedisLock.java View File

@@ -148,7 +148,7 @@ public class RedisLock {
public boolean setOrderGroupComplateLock(long orderGroupId) {
String longstr = stringRedisTemplate.opsForValue().get("orderGroup:complete:"+String.valueOf(orderGroupId));
if (Long.parseLong(longstr) >= 1L) {
if ((!StringUtils.isEmpty(longstr)) && Long.parseLong(longstr) >= 1L) {
return false;
}
Long rs = stringRedisTemplate.opsForValue().increment("orderGroup:complete:"+String.valueOf(orderGroupId), 1);


+ 2
- 1
mallinkService/src/main/resources/mapper/WxMerchantMapper.xml View File

@@ -349,7 +349,7 @@
<sql id="allMerchantVoColumns">
distinct m.id,m.img_url,m.name,m.link_phone,m.status,m.business_id,
m.is_public,m.email,m.title,m.cover_picture,m.sub_business_id,
m.shop_type,m.introduction,m.action_desc,bu.title as business_name,m.link_line_phone
m.shop_type,m.introduction,m.action_desc,bu.title as business_name,m.link_line_phone,m.top_time
</sql>
<select id="getMerchantByCode" parameterType="java.util.Map" resultMap="MerchantVoResultMap">
@@ -396,6 +396,7 @@
<result column="introduction" jdbcType="VARCHAR" property="introduction"/>
<result column="action_desc" jdbcType="VARCHAR" property="actionDesc"/>
<result column="link_line_phone" property="linkLinePhone"/>
<result column="top_time" property="topTime"/>

<collection column="{merchantId=id}" property="shopVoList"
ofType="com.iformall.domain.vo.WxShopVo"


Loading…
Cancel
Save