Преглед изворни кода

[支付][新增]:支付检查是否超限

release_toaliyun_real
Stormeye.Wu пре 7 година
родитељ
комит
096d1bce74
5 измењених фајлова са 53 додато и 11 уклоњено
  1. +1
    -1
      mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java
  2. +4
    -3
      mallinkService/src/main/java/com/simple/common/ErrorCode.java
  3. +10
    -0
      mallinkService/src/main/java/com/simple/domain/po/WxOrder.java
  4. +31
    -6
      mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java
  5. +7
    -1
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 1
- 1
mallinkCApi/src/main/java/com/simple/controller/WxOrderController.java Прегледај датотеку

@@ -47,8 +47,8 @@ public class WxOrderController extends BaseController {
return new ResultData(order);
}catch (MallinkException e) {
logger.error(e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());
}
return new ResultData();
}

@ApiOperation("取消订单")


+ 4
- 3
mallinkService/src/main/java/com/simple/common/ErrorCode.java Прегледај датотеку

@@ -72,9 +72,10 @@ public enum ErrorCode{
* 订单
*/
REMAIN_IS_EMPTY(3000, "库存不足"),
ORDER_IS_FAIL(3001, "订单创建失败"),
ORDER_IS_NOT_FIND(3002, "订单不存在"),
ORDER_IS_NOT_PAY(3003, "订单已不能进行支付"),
ORDER_IS_LIMITED(3001, "购买超限"),
ORDER_IS_FAIL(3002, "订单创建失败"),
ORDER_IS_NOT_FIND(3003, "订单不存在"),
ORDER_IS_NOT_PAY(3004, "订单已不能进行支付"),

/**
* 微信


+ 10
- 0
mallinkService/src/main/java/com/simple/domain/po/WxOrder.java Прегледај датотеку

@@ -72,6 +72,9 @@ public class WxOrder implements Serializable {
/*更新时间**/
@io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate")
private Date updateDate;
/*支付描述,订单支付时用**/
@io.swagger.annotations.ApiModelProperty(value="支付描述,订单支付时用",name="detail")
private String detail;
public Long getOrderNumber() {
return orderNumber;
}
@@ -132,6 +135,12 @@ public class WxOrder implements Serializable {
public void setUpdateDate(Date _updateDate) {
updateDate = _updateDate;
}
public String getDetail() {
return detail;
}
public void setDetail(String _detail) {
detail = _detail;
}



@@ -148,6 +157,7 @@ public class WxOrder implements Serializable {
,OrderStatus_ASC("`orderStatus` ASC"),OrderStatus_DESC("`orderStatus` DESC")
,CreateDate_ASC("`createDate` ASC"),CreateDate_DESC("`createDate` DESC")
,UpdateDate_ASC("`updateDate` ASC"),UpdateDate_DESC("`updateDate` DESC")
,Detail_ASC("`detail` ASC"),Detail_DESC("`detail` DESC")
;
private String value;
Field(String value){


+ 31
- 6
mallinkService/src/main/java/com/simple/service/impl/WxOrderServiceImpl.java Прегледај датотеку

@@ -87,22 +87,43 @@ public class WxOrderServiceImpl implements WxOrderService {
Date curr = new Date();
Date valid_date = null;

// 检查 优惠券 库存
if (coupon.getRemainInventory() <= 0) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券库存为0, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY);
}

// check 购买是否超限
try {
// 检查 优惠券 库存
if (coupon.getRemainInventory() <= 0) {
WxCouponOrder query = new WxCouponOrder();
query.setCouponId(couponId);
query.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
List<WxCouponOrder> list = wxCouponOrderMapper.findList(query);
if (list.size() >= coupon.getUseLimitQuantity()) {
//解锁
redisLock.unlock(couponIdStr, timeStr);

logger.error("此券库存为0, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.REMAIN_IS_EMPTY);
throw new MallinkException(ErrorCode.ORDER_IS_LIMITED);
}
}catch (Exception e) {
//解锁
redisLock.unlock(couponIdStr, timeStr);
logger.error("此券购买数量检查出问题了, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}



try {
// 减库存
coupon.setRemainInventory(coupon.getRemainInventory() - 1);
wxCouponMapper.updateByPrimaryKeySelective(coupon);
//解锁
redisLock.unlock(couponIdStr, timeStr);
} catch (RuntimeException e) {
//解锁
redisLock.unlock(couponIdStr, timeStr);

logger.error("此券减库存失败, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
}
@@ -118,6 +139,10 @@ public class WxOrderServiceImpl implements WxOrderService {
WxOrder record = new WxOrder();


// body
// tenant_id + merchant_id + title + subtitle


try {
// 保存订单
record.setId(orderNumber);


+ 7
- 1
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Прегледај датотеку

@@ -13,10 +13,11 @@
<result column="order_status" jdbcType="INTEGER" property="orderStatus" />
<result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
<result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
<result column="detail" jdbcType="VARCHAR" property="detail" />
</resultMap>
<sql id="allColumns">
`id`,`order_number`,`tenant_id`,`c_user_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`
`id`,`order_number`,`tenant_id`,`c_user_id`,`b_user_id`,`payment_type`,`payment`,`payment_time`,`order_status`,`create_date`,`update_date`,`detail`
</sql>

<sql id="dynamicWhereConditions">
@@ -75,6 +76,11 @@
<if test=" null != updateDate ">
and `update_date` = #{updateDate}
</if>
<if test=" null != detail ">
and `detail` like concat('%', #{detail},'%')
</if>
<if test=" null != ids ">
and id in


Loading…
Откажи
Сачувај