Browse Source

[POS][修改]:POS核销及核销取消

release_toaliyun_real
Stormeye Wu 6 years ago
parent
commit
f77f305ca0
8 changed files with 70 additions and 23 deletions
  1. +23
    -20
      mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java
  2. +27
    -1
      mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/common/ErrorCode.java
  4. +3
    -0
      mallinkService/src/main/java/com/iformall/domain/po/ThDevInfo.java
  5. +1
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java
  6. +4
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java
  7. +3
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java
  8. +8
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml

+ 23
- 20
mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java View File

@@ -476,6 +476,7 @@ public class PosServiceImpl implements PosService {
}
try {
cancelPreVerify(couponOrderCVo, buUserId, posOrderId);
return retMap;
} catch (MallinkException e) {
logger.error(e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
@@ -487,6 +488,7 @@ public class PosServiceImpl implements PosService {
logger.info("券已被核销: " + couponOrderIdStr);
try {
cancelVerify(couponOrderCVo, buUserId, posOrderId);
return retMap;
} catch (MallinkException e) {
logger.error(e.getMessage());
throw new MallinkException(e.getErrorCode(), e.getMessage());
@@ -688,11 +690,12 @@ public class PosServiceImpl implements PosService {
creditHistory.setCouponId(couponOrderCVo.getCouponId());
int num = creditHistoryService.cancelCredit(creditHistory);
if (num <= 1) {
logger.error("核销积分历史回退失败: " + creditHistory.toString());
return;
logger.warn("核销积分历史回退: " + creditHistory.toString());
}
} catch (Exception e) {
logger.error("核销积分历史回退:" + e.getMessage());
String errMessage = "核销积分历史回退:" + e.getMessage();
logger.error(errMessage);
throw new MallinkException(500, errMessage);
}
// 2. 成长值历史回退
try {
@@ -703,11 +706,12 @@ public class PosServiceImpl implements PosService {
scoreHistory.setOrderId(couponOrderCVo.getOrderId());
int num = scoreRulesService.cancelScore(scoreHistory);
if (num <= 1) {
logger.error("核销成长值历史回退失败: " + scoreHistory.toString());
return;
logger.warn("核销成长值历史回退: " + scoreHistory.toString());
}
} catch (Exception e) {
logger.error("核销成长值历史回退:" + e.getMessage());
String errMessage = "核销成长值历史回退:" + e.getMessage();
logger.error(errMessage);
throw new MallinkException(500, errMessage);
}

// 3. update posOrderId
@@ -718,29 +722,28 @@ public class PosServiceImpl implements PosService {
posCouponOrderVerify.setState(EnumEnableType.Enable.getCode());
List<PosCouponOrderVerify> posCouponOrderVerifyList = posCouponOrderVerifyService.getList(posCouponOrderVerify);
if (posCouponOrderVerifyList.size() == 1) {
try {
PosCouponOrderVerify updateOrder = new PosCouponOrderVerify();
updateOrder.setId(posCouponOrderVerify.getId());
updateOrder.setState(EnumEnableType.Disable.getCode());
updateOrder.setUpdateDate(new Date());
posCouponOrderVerifyService.saveOrUpdate(updateOrder);
} catch (Exception e) {
logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
posCouponOrderVerify = posCouponOrderVerifyList.get(0);
if (posCouponOrderVerify != null) {
try {
posCouponOrderVerifyService.deleteById(posCouponOrderVerify.getId());
} catch(Exception e){
logger.error("db failed: couponOrder-" + couponOrderCVo.getId() + ", e:" + e.getMessage());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage());
}
}
} else {
logger.error(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderId);
throw new MallinkException(ErrorCode.VERIFY_PRE_POS_ORDER_NOT_EQUAL);
logger.error(ErrorCode.VERIFY_POS_ORDER_NOT_EQUAL.getMessage() + ": " + posOrderId);
throw new MallinkException(ErrorCode.VERIFY_POS_ORDER_NOT_EQUAL);
}
// 4. update couponOrder
int num = 0;
try {
WxCouponOrder couponOrder = new WxCouponOrder();
couponOrder.setId(couponOrderCVo.getId());
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()); //1核销
couponOrder.setBUserId(buUserId);
couponOrder.setTenantId(couponOrderCVo.getTenantId());
couponOrder.setCouponOrderStatus(EnumCouponOrderStatus.COUPON_ORDER_USE_WAIT.getCode());
couponOrder.setUpdateDate(new Date());
num = couponOrderMapper.updateVerifyCouponOrder(couponOrder);
num = couponOrderMapper.cancelVerifyCouponOrder(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());


+ 27
- 1
mallinkPosApi/src/test/java/com/iformall/pos/test/PosAppTest.java View File

@@ -149,7 +149,7 @@ public class PosAppTest {
}

@Test
public void couponOrderIndependForVerifyTest() throws Exception {
public void couponOrderIndependentVerifyTest() throws Exception {
Map<String, String> reqObj = new HashMap<>();
reqObj.put(WxPayConstant.DEV_ID, devId);
reqObj.put(WxPayConstant.TENANT_ID, "456");
@@ -173,4 +173,30 @@ public class PosAppTest {
System.out.println("response sign: " + resSigned);
Assert.assertEquals(resSigned, true);
}

@Test
public void couponOrderVerifyCancelTest() 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("/couponOrderVerifyCancel")
.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/common/ErrorCode.java View File

@@ -281,6 +281,7 @@ public enum ErrorCode{
VERIFY_PRE_POS_ORDER_IS_EMPTY(12052, "预核销POS订单ID为空"),
VERIFY_PRE_POS_ORDER_NOT_EQUAL(12053, "预核销POS订单不一致,请先取消上次预核销"),
VERIFY_BUSER_MERCHANT_NOT_BELONG(12054, "核销员不属于此商户"),
VERIFY_POS_ORDER_NOT_EQUAL(12055, "核销POS订单不一致,请先取消上次预核销"),
MSG_REPEAT_SEND(12061, "短信重复发送"),
VERIFY_COUPON_ORDER_MERCHANT_IS_NULL(12062, "卡券核销失败,请查看适用门店"),



+ 3
- 0
mallinkService/src/main/java/com/iformall/domain/po/ThDevInfo.java View File

@@ -1,6 +1,8 @@
package com.iformall.domain.po;

import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.*;
import java.util.*;
import javax.persistence.Transient;
@@ -9,6 +11,7 @@ import javax.persistence.Id;

@Table(name = "th_dev_info")
@Data
@EqualsAndHashCode(callSuper = true)
public class ThDevInfo extends BaseEntity {
@Id


+ 1
- 0
mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java View File

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

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

//统一的计数接口
int findCount(WxCouponOrder wxCouponOrder);


+ 4
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxCreditHistoryServiceImpl.java View File

@@ -246,10 +246,12 @@ public class WxCreditHistoryServiceImpl implements WxCreditHistoryService {
if (wxCreditHistory != null) {
num = wxCreditHistoryMapper.deleteByPrimaryKey(wxCreditHistory.getId());
if (num != 1) {
logger.error("删除积分历史出错"+ wxCreditHistory.toString());
String errMessage = "删除积分历史出错";
logger.error(errMessage + wxCreditHistory.toString());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), errMessage);
}
} else {
logger.error("未找到积分历史");
logger.info("未找到积分历史");
return 0;
}
// 2. user


+ 3
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxScoreRulesServiceImpl.java View File

@@ -2,11 +2,13 @@ package com.iformall.service.impl;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.domain.po.*;
import com.iformall.enums.EnumBusiness;
import com.iformall.enums.EnumScoreRules;
import com.iformall.enums.EnumScoreType;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCUserBasicInfoMapper;
import com.iformall.mapper.WxCUserMapper;
import com.iformall.mapper.WxScoreHistoryMapper;
@@ -198,6 +200,7 @@ public class WxScoreRulesServiceImpl implements WxScoreRulesService {
num = wxScoreHistoryMapper.deleteByPrimaryKey(history.getId());
if (num != 1) {
logger.error("删除成长值历史出错"+ history.toString());
throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "删除成长值历史出错");
}
} else {
logger.error("未找到成长值历史");


+ 8
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml View File

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

<update id="cancelVerifyCouponOrder" parameterType="com.iformall.domain.po.WxCouponOrder">
update wx_coupon_order
set `coupon_order_status` = #{couponOrderStatus},
`b_user_id` = null,
`update_date` = #{updateDate}
where `tenant_id`=#{tenantId} and id=#{id}
</update>

<select id="couponDataMap" resultType="com.iformall.domain.vo.MarkingCouponDataReportVo" parameterType="hashmap">
SELECT DATE_FORMAT(create_date,'%m/%d') as createTime,
COUNT(DISTINCT c_user_id) as couponUserCount,


Loading…
Cancel
Save