Browse Source

//..hexiao

release_toaliyun_real
xhxu 2 years ago
parent
commit
5619992732
8 changed files with 74 additions and 85 deletions
  1. +4
    -0
      mallinkAdmin/src/main/resources/db/migration/V2023070100001_merchant_permission.sql
  2. +1
    -1
      mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java
  3. +1
    -1
      mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java
  4. +2
    -2
      mallinkSchedule/src/main/java/com/iformall/schedule/CouponOrderExpiringSchedule.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java
  6. +4
    -9
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java
  7. +60
    -70
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java
  8. +1
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java

+ 4
- 0
mallinkAdmin/src/main/resources/db/migration/V2023070100001_merchant_permission.sql View File

@@ -0,0 +1,4 @@
INSERT INTO `mallink`.`mall_permission`(`id`, `name`, `parent_id`, `available`, `permission`, `resource_type`, `module_color`, `module_color_num`, `url`, `icon`, `version_type`, `sort`) VALUES (226, '区域商户管理', 202, 'Y', NULL, 1, NULL, NULL, 'regionMerchantList', NULL, 0, 222);


UPDATE `mallink`.`mall_sale_type` SET `menus` = '[1, 2, 4, 5, 6, 50, 105, 110, 201, 205, 202, 210, 211, 212, 221, 222, 223, 224, 226, 251, 261, 409, 410, 411, 416, 502, 504, 505, 506, 507, 511, 512, 521, 522, 523, 591, 592, 595, 601, 602, 605, 606, 610, 612, 615, 622, 676, 680, 711, 716, 901, 902, 904, 907, 5502, 60201, 61202, 61501, 61502]' WHERE `id` = 13;

+ 1
- 1
mallinkBApi/src/main/java/com/iformall/controller/WxCouponOrderController.java View File

@@ -391,7 +391,7 @@ public class WxCouponOrderController extends BaseController {
WxCouponOrder couponOrder = null;
try {
wxCouponOrder.setVerifyRemark(verifyRemark);
couponOrder = wxCouponOrderService.verify(wxCouponOrder, wxMerchantBUser, EnumCouponVerifyType.VERIFY_B);
couponOrder = wxCouponOrderService.verify(wxCouponOrder, null, EnumCouponVerifyType.VERIFY_B,wxMerchantBUser);
} catch (MallinkException e) {
logger.error("核销异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());


+ 1
- 1
mallinkCApi/src/main/java/com/iformall/controller/WxCouponOrderController.java View File

@@ -557,7 +557,7 @@ public class WxCouponOrderController extends BaseController {
}
WxCouponOrder couponOrder = null;
try {
couponOrder = wxCouponOrderService.verify(wxCouponOrder,null,EnumCouponVerifyType.VERIFY_C);
couponOrder = wxCouponOrderService.verify(wxCouponOrder,null,EnumCouponVerifyType.VERIFY_C,null);
} catch (MallinkException e) {
logger.error("核销异常: " + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage());


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

@@ -117,7 +117,7 @@ public class CouponOrderExpiringSchedule {

@Scheduled(cron = "0 0 5 * * ?") // 每天凌晨00:05
// @Scheduled(cron = "*/10 * * * * ?") // 测试10秒中一次
public void couponOrderGoodsVerifySchedule() {//14天确认收 系统自动核销
public void couponOrderGoodsVerifySchedule() {//14天确认收 系统自动核销

List<WxMall> malls = getMalls();
for (WxMall mall: malls) {
@@ -126,7 +126,7 @@ public class CouponOrderExpiringSchedule {
list.stream().forEach(co -> {
WxCouponOrder couponOrder = null;
try {
couponOrder = wxCouponOrderService.verify(co,null,EnumCouponVerifyType.VERIFY_C_AUTO);
couponOrder = wxCouponOrderService.verify(co,null,EnumCouponVerifyType.VERIFY_C_AUTO,null);
} catch (MallinkException e) {
logger.error("核销异常: " + e.getMessage());
} catch (Exception e) {


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxCouponOrderService.java View File

@@ -58,7 +58,7 @@ public interface WxCouponOrderService {
* @param couponOrder
* @param bUser 核销人(登录用户)
*/
WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser, EnumCouponVerifyType couponVerifyType);
WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchant merchant, EnumCouponVerifyType couponVerifyType, WxMerchantBUser bUser);
WxCouponOrder verifyByEquiment(Long couponOrderId,String tenantId,String parentTenantId,String remark);


+ 4
- 9
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderReservationServiceImpl.java View File

@@ -114,8 +114,6 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva
if(bUser == null){
return new ResultData(ErrorCode.USER_IS_EMPTY);
}
record.setBtenantId(bUser.getTenantId());
record.setMerchantId(bUser.getMerchantId());
record.setBuserName(bUser.getName());
record.setBuserPhone(bUser.getPhone());
}
@@ -158,9 +156,7 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva

@Override
public void finishReservation(WxCouponOrder couponOrder) {
if(!EnumCouponOrderStatus.COUPON_ORDER_USED.getCode().equals(couponOrder.getCouponOrderStatus())){
return;
}

Long id = wxCouponOrderReservationMapper.getIdByCouponOrder(couponOrder.getId(), couponOrder.getTenantId());
if(id == null){
return;
@@ -169,10 +165,9 @@ public class WxCouponOrderReservationServiceImpl implements WxCouponOrderReserva
updReservation.setId(id);
updReservation.updateTenantInfo(couponOrder);
updReservation.setStatus(EnumCouponOrderReservationStatus.reservation_finish.getCode());
if(couponOrder.getBUserId() != null && couponOrder.getBMerchantId() != 0){
updReservation.setBtenantId(couponOrder.getBTenantId());
updReservation.setBuserId(couponOrder.getBUserId());
}
updReservation.setBtenantId(couponOrder.getBTenantId());
updReservation.setMerchantId(couponOrder.getMerchantId());
updReservation.setBuserId(couponOrder.getBUserId());
updReservation.setFinishTime(couponOrder.getUpdateDate());
this.saveOrUpdate(updReservation);
}


+ 60
- 70
mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java View File

@@ -1383,14 +1383,18 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
List<WxCouponOrderBVo> bolist = handleQueryResult(cUserEntry,list,wxCouponOrder);
excelService.exportCsv(bolist, null, filename, WxCouponOrderBVo.class, filename + ".csv", response, false);
}
@Override
@Override
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
public WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchantBUser bUser, EnumCouponVerifyType couponVerifyType) {
public WxCouponOrder verify(WxCouponOrder couponOrder, WxMerchant merchant, EnumCouponVerifyType couponVerifyType, WxMerchantBUser bUser) {
if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) && bUser == null){
logger.error("B端核销未传入门店");
logger.error("B端核销未传入核销人");
throw new MallinkException(ErrorCode.VERIFY_ERROR);
}
// if(EnumCouponVerifyType.VERIFY_C.equals(couponVerifyType) && cUser == null){
// logger.error("C端核销未传入核销人");
// throw new MallinkException(ErrorCode.VERIFY_ERROR);
// }

// 1. 获取券信息
WxCoupon wxCoupon = wxCouponMapper.selectById(couponOrder.getCouponId(),couponOrder.getTenantId());
@@ -1408,66 +1412,53 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_INVALID);
}
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.COUPON_ORDER_USED.getCode()) {
logger.error("已核销过的券: couponOrder-" + couponOrder.getId());
logger.error("已核销: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_USED);
}
if (couponOrder.getCouponOrderStatus() == EnumCouponOrderStatus.POS_PRE_VERIFY.getCode()) {
logger.error("预核销: couponOrder-" + couponOrder.getId());
logger.error("已预核销: couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_IS_PRE_VERIFY);
}

//核销tenant
//核销tenant和核销商户
TenantEntity mallTenantEntity = new TenantEntity();
if(bUser != null){
mallTenantEntity.updateTenantInfo(bUser);
}else{
Long merchantId = null;
if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){
if(merchant != null){
mallTenantEntity.updateTenantInfo(merchant);
merchantId = merchant.getId();
}else{
mallTenantEntity.updateTenantInfo(bUser);
merchantId = bUser.getMerchantId();
}
}else{
mallTenantEntity.updateTenantInfo(wxCoupon);
}

// 2. 检查适用门店
Long merchantId = null;
if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){
//可配送商品
WxCouponMerchant wxCouponMerchant = new WxCouponMerchant();
wxCouponMerchant.updateTenantInfo(mallTenantEntity);
wxCouponMerchant.setProductId(wxCoupon.getId());
wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode());
WxCouponMerchant cm = null;
try{
cm = wxCouponMerchantMapper.selectOne(new QueryWrapper<>(wxCouponMerchant));
}catch (Exception e){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
if(cm == null){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
if(EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType) && !verifyMerchant(bUser,cm.getMerchantId())){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
merchantId = cm.getMerchantId();
}else if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){
if (StringUtils.isBlank(wxCoupon.getGiftList())){
logger.error("券包: coupon-" + wxCoupon.getId() + "数据异常" + "couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_DATE_ERROR);
}
// if(!EnumCouponVerifyType.VERIFY_AUTO.equals(couponVerifyType)){
// throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT);
// }
}else{
if(!EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){
throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT);
}
WxCouponMerchant wxCouponMerchant = new WxCouponMerchant();
wxCouponMerchant.updateTenantInfo(mallTenantEntity);
wxCouponMerchant.setProductId(wxCoupon.getId());
wxCouponMerchant.setStatus(EnumCouponMerchantStatus.COUPON_MERCHANT_STATUS_VALID.getCode());
List<WxCouponMerchant> couponMerchantList = wxCouponMerchantMapper.findList(wxCouponMerchant);
if (!couponMerchantList.stream().anyMatch(cm -> verifyMerchant(bUser,cm.getMerchantId()))) {
logger.error("券: coupon-" + wxCoupon.getId() + "核销: couponMerchantId-" + bUser.getMerchantId());
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
merchantId = bUser.getMerchantId();
}
// 检查适用门店
if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){
if (StringUtils.isBlank(wxCoupon.getGiftList())){
logger.error("券包: coupon-" + wxCoupon.getId() + "数据异常" + "couponOrder-" + couponOrder.getId());
throw new MallinkException(ErrorCode.COUPON_ORDER_DATE_ERROR);
}
}else {
List<Long> couponMerchantIds = wxCouponMerchantMapper.findMerchantIdListByProduct(wxCoupon.getId(), mallTenantEntity.getTenantId());
if(EnumCouponType.COUPON_DISTRIBUTION.getCode().equals(wxCoupon.getType())){
if(couponMerchantIds.size() != 1){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
if(merchantId != null && !merchantId.equals(couponMerchantIds.get(0))){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
merchantId = couponMerchantIds.get(0);
}else{
if(!EnumCouponVerifyType.VERIFY_B.equals(couponVerifyType)){
throw new MallinkException(ErrorCode.VERIFY_COUPON_TYPE_NOT_SUPPORT);
}
if(!couponMerchantIds.contains(merchantId)){
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL);
}
}
}

if(merchantId != null){
WxPayOrder wxPayOrderQ = new WxPayOrder();
@@ -1483,12 +1474,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL.getCode(),"当前商户没有配置分账账号。");
}
}
// else if(wxPayOrder != null && EnumPayMchType.DIRECT.getCode().equals(wxPayOrder.getMchType())){
// merchantId = wxPayOrder.getChildOrderShare(couponOrder.getOrderId()).getMerchantId();
// if (null == merchantId) {
// throw new MallinkException(ErrorCode.VERIFY_COUPON_ORDER_MERCHANT_IS_NULL.getCode(),"订单支付信息未包含商户");
// }
// }
}

int num = 0;
@@ -1521,10 +1506,12 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
logger.error("核销异常:updatete num " + num);
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "updatete num " + num);
}

//发券包子券
if(EnumCouponType.COUPON_GIFT.getCode().equals(wxCoupon.getType())){
try {
List<Long> longs = JSON.parseArray(wxCoupon.getGiftList(), Long.class);
//发券包子券
wxOrderService.sendSubCouponToUser(couponOrder,longs);
} catch (MallinkException e) {
throw e;
@@ -1533,7 +1520,17 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
}
}

if(EnumCouponType.COUPON_DOUYIN_GO_HOME.getCode().equals(wxCoupon.getType())){
//完成预约
try{
wxCouponOrderReservationService.finishReservation(couponOrder);
}catch(Exception e){
throw new MallinkException(ErrorCode.VERIFY_ERROR.getCode(), "完成预约失败");
}
}

doAfterVerify(couponOrder, bUser, wxCoupon);

return couponOrder;
}

@@ -1599,7 +1596,7 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {
WxCouponOrder couponOrder = null;
try {
wxCouponOrder.setVerifyRemark(remark);
couponOrder = this.verify(wxCouponOrder, wxMerchantBUser, EnumCouponVerifyType.VERIFY_B);
couponOrder = this.verify(wxCouponOrder, null, EnumCouponVerifyType.VERIFY_B,wxMerchantBUser);
} catch (MallinkException e) {
logger.error("核销异常: " ,e);
throw new MallinkException(e.getErrorCode(), e.getMessage());
@@ -1768,13 +1765,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService {

@Override
public void actionAfterVerify(WxCouponOrder couponOrder, WxMerchant merchant) {
//完成预约
try{
wxCouponOrderReservationService.finishReservation(couponOrder);
}catch(Exception e){
logger.error("完成预约失败"+e.getMessage(),e);
}

try {
boolean mulityShare = true;
if(EnumComposeOrder.isSingle(couponOrder.getComposeOrderType())){


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java View File

@@ -2245,7 +2245,7 @@ public class WxOrderServiceImpl implements WxOrderService {
if (null != couponorderlist && couponorderlist.size() > 0 ) {
WxCouponOrder couponOrder = couponorderlist.get(0);
try {
wxCouponOrderService.verify(couponOrder,null,EnumCouponVerifyType.VERIFY_AUTO);
wxCouponOrderService.verify(couponOrder,null,EnumCouponVerifyType.VERIFY_AUTO,null);
} catch (Exception e) {
logger.error("系统券包核销异常:" + e.getMessage(),e);
}


Loading…
Cancel
Save