Selaa lähdekoodia

商户注券->更新库存操作

release_toaliyun_real
Burce 6 vuotta sitten
vanhempi
commit
da4be1a069
6 muutettua tiedostoa jossa 29 lisäystä ja 23 poistoa
  1. +7
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java
  2. +4
    -4
      mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java
  3. +11
    -12
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java
  4. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java
  5. +3
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java
  6. +2
    -2
      mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml

+ 7
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxCouponSend.java Näytä tiedosto

@@ -41,6 +41,13 @@ public class WxCouponSend extends BaseEntity {
@Transient @Transient
public static final String KEY_MERCHANT_SEND = "merchantSend" ; public static final String KEY_MERCHANT_SEND = "merchantSend" ;


/**
* limit 商户注券数
*/
@JsonIgnore
@Transient
public static final String KEY_MERCHANT_REMAIN = "merchantRemain" ;

/** /**
* 排序-商户购券数 * 排序-商户购券数
*/ */


+ 4
- 4
mallinkService/src/main/java/com/iformall/service/WxCouponSendService.java Näytä tiedosto

@@ -77,19 +77,19 @@ public interface WxCouponSendService {
* 商户注券 库存减少 * 商户注券 库存减少
* *
* @param id 券ID * @param id 券ID
* @param merchantSend 当前已发数
* @param merchantRemain 当前库存
* @param number 减少数量 * @param number 减少数量
*/ */
void reduceMerchantSend(Long id, Integer merchantSend, Integer number);
void reduceMerchantSend(Long id, Integer merchantRemain, Integer number);


/** /**
* 商户注券 库存退回 * 商户注券 库存退回
* *
* @param id 券ID * @param id 券ID
* @param merchantSend 当前已发数
* @param merchantRemain 当前库存
* @param number 回退数量 * @param number 回退数量
*/ */
void backMerchantRemainInventory(Long id, Integer merchantSend, Integer number);
void backMerchantRemainInventory(Long id, Integer merchantRemain, Integer number);


void handSel(WxCouponSend wxCouponSend, WxCUser user) ; void handSel(WxCouponSend wxCouponSend, WxCUser user) ;




+ 11
- 12
mallinkService/src/main/java/com/iformall/service/impl/WxCouponSendServiceImpl.java Näytä tiedosto

@@ -131,6 +131,7 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
merchantLnventory = jo.getIntValue(WxCouponSend.KEY_MERCHANT_LNVENTORY); merchantLnventory = jo.getIntValue(WxCouponSend.KEY_MERCHANT_LNVENTORY);
merchantIdStr = jo.getString("id"); merchantIdStr = jo.getString("id");
jo.put(WxCouponSend.KEY_MERCHANT_SEND,0) ; jo.put(WxCouponSend.KEY_MERCHANT_SEND,0) ;
jo.put(WxCouponSend.KEY_MERCHANT_REMAIN,merchantLnventory) ;
record.setConditions(jo.toJSONString()); record.setConditions(jo.toJSONString());
} catch (Exception e) { } catch (Exception e) {
logger.error(" updateInvalid 解析异常:{}", e.getMessage()); logger.error(" updateInvalid 解析异常:{}", e.getMessage());
@@ -181,20 +182,18 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
if (Objects.isNull(wxCouponOfDb)) { if (Objects.isNull(wxCouponOfDb)) {
throw new MallinkException(ErrorCode.COUPON_IS_EMPTY); throw new MallinkException(ErrorCode.COUPON_IS_EMPTY);
} }
//查询商家
int merchantLnventory = 0, merchantSend = 0;
//查询商家库存和
int merchantRemain = 0;
try { try {
JSONObject jo = JSONObject.parseObject(record.getConditions()); JSONObject jo = JSONObject.parseObject(record.getConditions());
merchantLnventory = jo.getIntValue(WxCouponSend.KEY_MERCHANT_LNVENTORY);
merchantSend = jo.getIntValue(WxCouponSend.KEY_MERCHANT_SEND);
merchantRemain = jo.getIntValue(WxCouponSend.KEY_MERCHANT_REMAIN);
} catch (Exception e) { } catch (Exception e) {
logger.error(" updateInvalid 解析异常:{}", e.getMessage()); logger.error(" updateInvalid 解析异常:{}", e.getMessage());
} }
if (0 >= merchantLnventory || 0 > merchantSend) {
throw new MallinkException(ErrorCode.COUPON_SEND_LIMIT_VERIFY);
}
//退回coupon库存 //退回coupon库存
wxCouponService.backRemainInventory(queryById.getId(), wxCouponOfDb.getRemainInventory(), merchantLnventory - merchantSend);
if(merchantRemain!=0) {
wxCouponService.backRemainInventory(queryById.getId(), wxCouponOfDb.getRemainInventory(), merchantRemain);
}
} }
wxCouponSendMapper.updateByPrimaryKeySelective(record); wxCouponSendMapper.updateByPrimaryKeySelective(record);
} }
@@ -569,16 +568,16 @@ public class WxCouponSendServiceImpl implements WxCouponSendService {
} }


@Override @Override
public void reduceMerchantSend(Long id, Integer merchantSend, Integer number) {
int num = wxCouponSendMapper.reduceMerchantSend(id, merchantSend, number);
public void reduceMerchantSend(Long id, Integer merchantRemain, Integer number) {
int num = wxCouponSendMapper.reduceMerchantSend(id, merchantRemain, number);
if (num == 0) { if (num == 0) {
throw new MallinkException(ErrorCode.ORDER_IS_FAIL); throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
} }
} }


@Override @Override
public void backMerchantRemainInventory(Long id, Integer merchantSend, Integer number) {
int num = wxCouponSendMapper.backMerchantSend(id, merchantSend, number);
public void backMerchantRemainInventory(Long id, Integer merchantRemain, Integer number) {
int num = wxCouponSendMapper.backMerchantSend(id, merchantRemain, number);
if (num == 0) { if (num == 0) {
throw new MallinkException(ErrorCode.ORDER_IS_FAIL); throw new MallinkException(ErrorCode.ORDER_IS_FAIL);
} }


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxCouponServiceImpl.java Näytä tiedosto

@@ -655,8 +655,8 @@ import java.util.stream.Collectors;


@Override @Override
@Transactional(isolation= Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class}) @Transactional(isolation= Isolation.SERIALIZABLE, propagation = Propagation.REQUIRED, rollbackFor = {Exception.class})
public void backRemainInventory(Long id, Integer remainInventory, Integer number) {
int num = wxCouponMapper.backRemainInventory(id, remainInventory, number);
public void backRemainInventory(Long id, Integer merchantSend, Integer number) {
int num = wxCouponMapper.backRemainInventory(id, merchantSend, number);
if (num == 0) { if (num == 0) {
throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL); throw new MallinkException(ErrorCode.REMAIN_BACK_FAIL);
} }


+ 3
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java Näytä tiedosto

@@ -321,10 +321,10 @@ public class WxOrderServiceImpl implements WxOrderService {


JSONObject jo = JSONObject.parseObject(wxCouponSendVo.getConditions()) ; JSONObject jo = JSONObject.parseObject(wxCouponSendVo.getConditions()) ;
int merchantLnventory = jo.getIntValue(WxCouponSend.KEY_MERCHANT_LNVENTORY) ; int merchantLnventory = jo.getIntValue(WxCouponSend.KEY_MERCHANT_LNVENTORY) ;
int merchantSend = jo.getIntValue(WxCouponSend.KEY_MERCHANT_SEND);
int merchantRemain = jo.getIntValue(WxCouponSend.KEY_MERCHANT_REMAIN);


// 检查 优惠券 库存 // 检查 优惠券 库存
if (merchantLnventory - merchantSend <= 0) {
if (merchantRemain <= 0) {
//解锁 //解锁
redisLock.unlock(couponIdStr, timeStr); redisLock.unlock(couponIdStr, timeStr);
logger.error("此券库存为0, couponId: " + couponIdStr); logger.error("此券库存为0, couponId: " + couponIdStr);
@@ -366,7 +366,7 @@ public class WxOrderServiceImpl implements WxOrderService {


try { try {
// 减库存 // 减库存
wxCouponSendService.reduceMerchantSend(wxCouponSendVo.getId(), merchantSend, 1);
wxCouponSendService.reduceMerchantSend(wxCouponSendVo.getId(), merchantRemain, 1);
} catch (RuntimeException e) { } catch (RuntimeException e) {
logger.error("此券减库存失败, couponId: " + couponIdStr); logger.error("此券减库存失败, couponId: " + couponIdStr);
throw new MallinkException(ErrorCode.ORDER_IS_FAIL); throw new MallinkException(ErrorCode.ORDER_IS_FAIL);


+ 2
- 2
mallinkService/src/main/resources/mapper/WxCouponSendMapper.xml Näytä tiedosto

@@ -164,9 +164,9 @@
((c.status = 1) or (c.valid_type = 1 and c.valid_end_date &lt; now())) ((c.status = 1) or (c.valid_type = 1 and c.valid_end_date &lt; now()))
</update> </update>
<update id="reduceMerchantSend"> <update id="reduceMerchantSend">
update wx_coupon_send SET conditions = JSON_SET(conditions,'$.merchantSend',#{merchantSend} + #{number}) where id = #{id} and conditions->'$.merchantSend' = #{merchantSend}
update wx_coupon_send SET conditions = JSON_SET(conditions,'$.merchantRemain',#{merchantRemain} - #{number}) where id = #{id} and conditions->'$.merchantRemain' = #{merchantRemain}
</update> </update>
<update id="backMerchantSend"> <update id="backMerchantSend">
update wx_coupon_send SET conditions = JSON_SET(conditions,'$.merchantSend',#{merchantSend} - #{number}) where id = #{id} and conditions->'$.merchantSend' = #{merchantSend}
update wx_coupon_send SET conditions = JSON_SET(conditions,'$.merchantRemain',#{merchantRemain} + #{number}) where id = #{id} and conditions->'$.merchantRemain' = #{merchantRemain}
</update> </update>
</mapper> </mapper>

Ladataan…
Peruuta
Tallenna