Просмотр исходного кода

[POS][修改]:code整理

release_toaliyun_real
Stormeye Wu 6 лет назад
Родитель
Сommit
ccdd945933
4 измененных файлов: 123 добавлений и 43 удалений
  1. +76
    -43
      mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
  2. +29
    -0
      mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java
  4. +17
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml

+ 76
- 43
mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java Просмотреть файл

@@ -304,13 +304,13 @@ public class PosServiceImpl implements PosService {
logger.error("已经核销过的券: couponOrder-" + couponOrderCVo.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode())) {
logger.info("券已被预核销: " + couponOrderIdStr);
if (!couponOrderCVo.getBUserId().equals(buUserId)) {
logger.error(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL.getMessage() + ": " + buUserIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL);
}
if (actionType.equals(EnumVerifyActionType.CHECK)) {
if (actionType.equals(EnumVerifyActionType.CHECK)) {
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode())) {
logger.info("券已被预核销: " + couponOrderIdStr);
if (!couponOrderCVo.getBUserId().equals(buUserId)) {
logger.error(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL.getMessage() + ": " + buUserIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL);
}
if (StringUtils.isBlank(posOrderIdStr)) {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_IS_EMPTY.getMessage());
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_IS_EMPTY);
@@ -322,41 +322,45 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(ErrorCode.SYS_PARAMETER_CAST_ERROR.getCode(),
ErrorCode.SYS_PARAMETER_CAST_ERROR.getMessage() + ", pos_order_id:" + posOrderIdStr);
}
}
// check pos order是否一致
PosCouponOrderVerify posCouponOrderVerifyQ = new PosCouponOrderVerify();
posCouponOrderVerifyQ.setTenantId(tenantId);
posCouponOrderVerifyQ.setCouponOrderId(couponOrderId);
posCouponOrderVerifyQ.setPosOrderId(posOrderId);
posCouponOrderVerifyQ.setState(EnumEnableType.Enable.getCode());
List<PosCouponOrderVerify> posCouponOrderVerifyList = posCouponOrderVerifyService.getList(posCouponOrderVerifyQ);
if (posCouponOrderVerifyList.size() != 1) {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL);
}
logger.info("券可以核销: " + couponOrderIdStr);
if (actionType.equals(EnumVerifyActionType.CHECK)) {
// check pos order是否一致
PosCouponOrderVerify posCouponOrderVerifyQ = new PosCouponOrderVerify();
posCouponOrderVerifyQ.setTenantId(tenantId);
posCouponOrderVerifyQ.setCouponOrderId(couponOrderId);
posCouponOrderVerifyQ.setPosOrderId(posOrderId);
posCouponOrderVerifyQ.setState(EnumEnableType.Enable.getCode());
List<PosCouponOrderVerify> posCouponOrderVerifyList = posCouponOrderVerifyService.getList(posCouponOrderVerifyQ);
if (posCouponOrderVerifyList.size() != 1) {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL);
}
logger.info("券可以被核销: " + couponOrderIdStr);
return retMap;
} else if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) {
logger.info("券可以被核销: " + couponOrderIdStr);
return retMap;
}
if (actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT) || actionType.equals(EnumVerifyActionType.VERIFY_PAY)) {
try {
doVerify(couponOrderCVo, wxCoupon, merchantId, buUserId, posOrderId, retMap);
return retMap;
} catch (MallinkException e) {
logger.error(e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error(e.getMessage());
throw new MallinkException(500, e.getMessage());
} else if (actionType.equals(EnumVerifyActionType.PRE_VERIFY)) {
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode())) {
logger.info("券已被预核销: " + couponOrderIdStr);
if (!couponOrderCVo.getBUserId().equals(buUserId)) {
logger.error(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL.getMessage() + ": " + buUserIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL);
}
// check pos order是否一致
PosCouponOrderVerify posCouponOrderVerifyQ = new PosCouponOrderVerify();
posCouponOrderVerifyQ.setTenantId(tenantId);
posCouponOrderVerifyQ.setCouponOrderId(couponOrderId);
posCouponOrderVerifyQ.setPosOrderId(posOrderId);
posCouponOrderVerifyQ.setState(EnumEnableType.Enable.getCode());
List<PosCouponOrderVerify> posCouponOrderVerifyList = posCouponOrderVerifyService.getList(posCouponOrderVerifyQ);
if (posCouponOrderVerifyList.size() != 1) {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL);
}
}
}
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) {
logger.info("券可以核销: " + couponOrderIdStr);
if (actionType.equals(EnumVerifyActionType.CHECK)) {
return retMap;
}
if (actionType.equals(EnumVerifyActionType.PRE_VERIFY)) {
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) {
logger.info("券可以被预核销: " + couponOrderIdStr);
try {
doPreVerify(couponOrderCVo, buUserId, posOrderId);
return retMap;
@@ -368,7 +372,32 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(500, e.getMessage());
}
}
if (actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT) || actionType.equals(EnumVerifyActionType.VERIFY_PAY)) {
} else {
// if (actionType.equals(EnumVerifyActionType.VERIFY_INDEPENT ) ||actionType.equals(EnumVerifyActionType.VERIFY_PAY))
boolean blVerify = false;
if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode())) {
logger.info("券已被预核销: " + couponOrderIdStr);
if (!couponOrderCVo.getBUserId().equals(buUserId)) {
logger.error(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL.getMessage() + ": " + buUserIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_BUSER_NOT_EQUAL);
}
// check pos order是否一致
PosCouponOrderVerify posCouponOrderVerifyQ = new PosCouponOrderVerify();
posCouponOrderVerifyQ.setTenantId(tenantId);
posCouponOrderVerifyQ.setCouponOrderId(couponOrderId);
posCouponOrderVerifyQ.setPosOrderId(posOrderId);
posCouponOrderVerifyQ.setState(EnumEnableType.Enable.getCode());
List<PosCouponOrderVerify> posCouponOrderVerifyList = posCouponOrderVerifyService.getList(posCouponOrderVerifyQ);
if (posCouponOrderVerifyList.size() != 1) {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderIdStr);
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL);
}
blVerify = true;
} else if (couponOrderCVo.getCouponOrderStatus().equals(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode())) {
logger.info("券可以被预核销: " + couponOrderIdStr);
blVerify = true;
}
if (blVerify) {
try {
doVerify(couponOrderCVo, wxCoupon, merchantId, buUserId, posOrderId, retMap);
return retMap;
@@ -381,7 +410,7 @@ public class PosServiceImpl implements PosService {
}
}
}
String errMessage = "核销异常:未知的核销状态" + couponOrderCVo.getCouponOrderStatus();
String errMessage = "核销异常:未知的核销状态-" + couponOrderCVo.getCouponOrderStatus() + ", 核销action-" + actionType.getCode();
logger.error(errMessage);
throw new MallinkException(500, errMessage);
}
@@ -501,7 +530,7 @@ public class PosServiceImpl implements PosService {
throw new MallinkException(e.getErrorCode(), e.getMessage());
}
}
String errMessage = "取消异常:未知的核销状态" + couponOrderCVo.getCouponOrderStatus();
String errMessage = "取消异常:未知的核销状态-" + couponOrderCVo.getCouponOrderStatus()+ ", 核销action-" + actionType.getCode();
logger.error(errMessage);
throw new MallinkException(500, errMessage);
}
@@ -538,15 +567,16 @@ public class PosServiceImpl implements PosService {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.POS_PRE_VERIFY.getCode());
couponOrder.setBUserId(buUserId);
couponOrder.setUpdateDate(new Date());
num = couponOrderMapper.updateVerifyCouponOrder(couponOrder);
num = couponOrderMapper.updateVerifyCouponOrderStatus(couponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
if (num != 1) {
logger.error("核销异常:updatete num " + num);
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}
logger.info("预核销已完成: " + couponOrderCVo.getId());
}

/**
@@ -602,6 +632,7 @@ public class PosServiceImpl implements PosService {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}
logger.info("预核销已取消: " + couponOrderCVo.getId());
}

/**
@@ -641,7 +672,7 @@ public class PosServiceImpl implements PosService {
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销
couponOrder.setBUserId(buUserId);
couponOrder.setUpdateDate(new Date());
num = couponOrderMapper.updateVerifyCouponOrder(couponOrder);
num = couponOrderMapper.updateVerifyCouponOrderStatus(couponOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
@@ -682,6 +713,7 @@ public class PosServiceImpl implements PosService {
} catch (Exception e) {
logger.error("核销积分值异常:" + e.getMessage());
}
logger.info("核销已完成: " + couponOrderCVo.getId());
}

/**
@@ -771,5 +803,6 @@ public class PosServiceImpl implements PosService {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}
logger.info("核销已取消: " + couponOrderCVo.getId());
}
}

+ 29
- 0
mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java Просмотреть файл

@@ -6,8 +6,10 @@ import com.iformall.PosApplication;
import com.iformall.pay.WxPayConstant;
import com.iformall.pay.WxPayment;
import org.junit.Assert;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
@@ -33,6 +35,7 @@ import java.util.Map;
@SpringBootTest(classes = { PosApplication.class})
@ActiveProfiles("dev")
@AutoConfigureMockMvc
@FixMethodOrder(MethodSorters.JVM)
public class PosAppTest {

@Autowired
@@ -251,4 +254,30 @@ public class PosAppTest {
System.out.println("response sign: " + resSigned);
Assert.assertEquals(resSigned, true);
}

@Test
public void couponOrderPayVerifyTest() throws Exception {
Map<String, String> reqObj = new HashMap<>();
reqObj.put(WxPayConstant.DEV_ID, devId);
reqObj.put(WxPayConstant.TENANT_ID, "456");
reqObj.put(WxPayConstant.MERCHANT_ID, "317109453987631104");
reqObj.put(WxPayConstant.BUSER_ID, "317111133332426752");
reqObj.put(WxPayConstant.COUPON_ORDER_ID, "318978990426783744");
reqObj.put(WxPayConstant.NONCE_STR, "1");
reqObj.put(WxPayConstant.POS_ORDER_ID, "1");
reqObj.put(WxPayConstant.SIGN, WxPayment.createSignHMAC(reqObj, devReqKey));
String reqJsonStr = JSONObject.toJSONString(reqObj);
RequestBuilder request = MockMvcRequestBuilders.post("/couponOrderPayVerify")
.contentType(MediaType.APPLICATION_JSON)
.content(reqJsonStr);
MvcResult result = mockMvc.perform(request).andReturn();
String responseStr = result.getResponse().getContentAsString();
System.out.println(responseStr);

ObjectMapper mapper = new ObjectMapper();
Map<String,String> respMap = mapper.readValue(responseStr, Map.class);
boolean resSigned = WxPayment.verifyNotifyHMAC(respMap, devResKey);
System.out.println("response sign: " + resSigned);
Assert.assertEquals(resSigned, true);
}
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java Просмотреть файл

@@ -23,6 +23,7 @@ public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {

// 券包核销
int updateVerifyCouponOrder(WxCouponOrder wxCouponOrder);
int updateVerifyCouponOrderStatus(WxCouponOrder wxCouponOrder);
int cancelVerifyCouponOrder(WxCouponOrder wxCouponOrder);

//统一的计数接口


+ 17
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml Просмотреть файл

@@ -103,6 +103,23 @@
where `tenant_id`=#{tenantId} and id=#{id} and `b_user_id` is null
</update>

<update id="updateVerifyCouponOrderStatus" parameterType="com.iformall.domain.po.WxCouponOrder">
update wx_coupon_order
set `coupon_order_status` = #{couponOrderStatus},
`b_user_id` = #{bUserId},
`update_date` = #{updateDate}
where 1=1
and `tenant_id`=#{tenantId}
and id=#{id}
<if test=" null == #{bUserId} ">
and `b_user_id` is null
</if>
<if test=" null != #{bUserId} ">
and `b_user_id` = #{bUserId}
</if>

</update>

<update id="cancelVerifyCouponOrder" parameterType="com.iformall.domain.po.WxCouponOrder">
update wx_coupon_order
set `coupon_order_status` = #{couponOrderStatus},


Загрузка…
Отмена
Сохранить