From 316bd41f13fd6a48055ea265a8a206dd11fd0e72 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 6 Aug 2020 17:46:47 +0800 Subject: [PATCH] update --- .../iformall/domain/po/WxCUserBasicInfo.java | 24 +++++------- .../domain/po/base/BaseTenantEntity.java | 8 ++++ .../impl/WxCUserBasicInfoServiceImpl.java | 6 +-- .../service/impl/WxPayOrderServiceImpl.java | 27 +++++++++++-- .../pay/service/pay/CPassivePayService.java | 6 +-- .../{CreateCUser.java => CreateUser.java} | 2 +- .../maPay/WxMiniMaPayAdapterService.java | 38 +++++++++---------- 7 files changed, 64 insertions(+), 47 deletions(-) rename mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/{CreateCUser.java => CreateUser.java} (89%) diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java index 459ba09ed..dee5c64a7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxCUserBasicInfo.java @@ -5,7 +5,7 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonIgnore; -import com.iformall.domain.po.base.BaseTenantEntity; +import com.iformall.domain.po.base.BaseEntity; import com.iformall.domain.po.base.TenantEntity; import lombok.Data; @@ -22,13 +22,14 @@ import java.util.Objects; @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) -public class WxCUserBasicInfo extends TenantEntity { +public class WxCUserBasicInfo extends BaseEntity { protected Long id; @JsonIgnore protected Date scoreDate; + @io.swagger.annotations.ApiModelProperty(value="如果是集团版的,存集团版的tenantId,如果是商场,则存商场",name="sex") private String finalTenantId; @Excel(name="姓名",width = 20,orderNum = "1") @@ -169,18 +170,11 @@ public class WxCUserBasicInfo extends TenantEntity { return Objects.hash(this.phone); } - public void undateFinalTenantId(){ - setFinalTenantId(getTenantId()); - if(StringUtils.isNotBlank(getParentTenantId())){ - setFinalTenantId(getParentTenantId()); - } - } - - public void undateFinalTenantId(TenantEntity tenantEntity){ - setFinalTenantId(tenantEntity.getTenantId()); - if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){ - setFinalTenantId(tenantEntity.getParentTenantId()); - } - } +// public void undateFinalTenantId(TenantEntity tenantEntity){ +// setFinalTenantId(tenantEntity.getTenantId()); +// if(StringUtils.isNotBlank(tenantEntity.getParentTenantId())){ +// setFinalTenantId(tenantEntity.getParentTenantId()); +// } +// } } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java index 085d1b320..3119cf4ff 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/base/BaseTenantEntity.java @@ -34,6 +34,14 @@ public class BaseTenantEntity extends BaseEntity { setParentTenantId(info.getParentTenantId()); } } + + public void updateTenantInfoByUserInfo(WxCUserBasicInfo userBase) { + log.info("info.tenantId:"+info.getTenantId()+". info.parentTenantId:"+info.getParentTenantId()+"."); + setTenantId(info.getTenantId()); + if (StringUtils.isNotBlank(info.getParentTenantId())) { + setParentTenantId(info.getParentTenantId()); + } + } public void updateTenantInfo(BaseTenantEntity info) { setTenantId(info.getTenantId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java index 1ae58aebd..cbbb51179 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCUserBasicInfoServiceImpl.java @@ -542,13 +542,13 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { @Override public List findByPhone(TenantEntity tenantEntity, String phone) { WxCUserBasicInfo basicQ = new WxCUserBasicInfo(); - basicQ.updateTenantInfo(tenantEntity); + basicQ.undateFinalTenantId(tenantEntity); basicQ.setPhone(phone); List basicInfos = wxCUserBasicInfoMapper.selectList(new QueryWrapper(basicQ)); if (basicInfos != null && basicInfos.size() > 0) { WxCUserBasicInfo wxCUserBasicInfo = basicInfos.get(0); if (wxCUserBasicInfo.getPoins() != null) { - List levelList = wxLevelConfigService.getByTenantId(wxCUserBasicInfo.getTenantId()); + List levelList = wxLevelConfigService.getByTenantId(wxCUserBasicInfo.getFinalTenantId()); String level = WxLevelConfigService.DEFAULT_LEVEL; for(WxLevelConfig levelConfig: levelList) { if (wxCUserBasicInfo.getPoins() >= levelConfig.getPoints()) { @@ -749,7 +749,7 @@ public class WxCUserBasicInfoServiceImpl implements WxCUserBasicInfoService { WxCUserBasicInfo userBase = new WxCUserBasicInfo(); - userBase.updateTenantInfo(tenantEntity); + userBase.undateFinalTenantId(tenantEntity); userBase.setName(uBase.getName()); if (uBase.getSex() == null) { userBase.setSex(0); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 79865876b..5adbebc47 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -23,7 +23,7 @@ import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CDrivingPayService; import com.iformall.service.pay.service.pay.CPassivePayService; import com.iformall.service.pay.service.pay.PayAdapterService; -import com.iformall.service.pay.service.pay.entity.CreateCUser; +import com.iformall.service.pay.service.pay.entity.GetUser; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.service.pay.service.share.entity.ShareNotifyAdapterResult; @@ -480,10 +480,23 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { //支付失败,更新record,支付成功,则调用 if (payResult.isSuccess()) { - handleMicroOrderPaySuccess(payResult.getData(), payResult.getTransactionId(),payWay,record,user, appInfo, params); + try { + handleMicroOrderPaySuccess(payResult.getData(), payResult.getTransactionId(),payWay,record,user, appInfo, params); + }catch(Exception e) { + logger.error("do handleMicroOrderPaySuccess() error.",e); + try { + record.setFailReason("do handleMicroOrderPaySuccess() error."+e.getMessage()); + wxPayOrderMapper.updateById(record); + } catch (Exception ex) { + logger.error("pay order update error: " + ex.getMessage()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + throw new MallinkException(ErrorCode.DB_FAIL); + } return new ResultData(Result.SUCCESS, "创建支付订单成功", payResult.getData()); }else { try { + record.setFailReason(payResult.getMsg()); wxPayOrderMapper.updateById(record); } catch (Exception e) { logger.error("pay order update error: " + record.toString()); @@ -769,7 +782,12 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo()); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); } - + if (null != cUserId) { + WxOrder __order = new WxOrder(); + __order.setId(order.getId()); + __order.setCUserId(cUserId); + wxOrderMapper.updateById(__order); + } // 修改支付订单状态 WxPayOrder updateOrder = new WxPayOrder(); @@ -843,8 +861,9 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { @Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class}) public void handleMicroOrderPaySuccess(Object result,String transcationId,EnumPayWay payWay, WxPayOrder record ,WxMerchantBUser user,WxAppinfo appInfo,PayExtraParam params) { //B端操作,需要生成cUser - CreateCUser cUser = null; + GetUser cUser = null; try { + 11111111111111111 cUser = payServiceFactory.getCPassivePayService(payWay.getCode()).createCUserAfterPay(result, appInfo); } catch (Exception e1) { logger.error("创建C端用户失败: " ,e1); diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/CPassivePayService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/CPassivePayService.java index 33e736907..8a9ba5b6d 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/CPassivePayService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/CPassivePayService.java @@ -8,7 +8,7 @@ import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; import com.iformall.enums.EnumPayShare; import com.iformall.service.pay.entity.PayExtraParam; -import com.iformall.service.pay.service.pay.entity.CreateCUser; +import com.iformall.service.pay.service.pay.entity.CreateUser; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; /** @@ -18,7 +18,7 @@ import com.iformall.service.pay.service.pay.entity.PayAdapterResult; public interface CPassivePayService extends PayAdapterService{ /** - * 支付成功之后生成用户 + * 支付成功之后查询会员 * @param result 支付API或者查询API 接口返回的对象 * @param payAccount * @param order @@ -29,6 +29,6 @@ public interface CPassivePayService extends PayAdapterService{ * @param params * @throws Exception */ - public CreateCUser createCUserAfterPay(Object result,WxAppinfo appInfo) throws Exception; + public CreateUser createCUserAfterPay(Object result,WxAppinfo appInfo) throws Exception; } diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateCUser.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateUser.java similarity index 89% rename from mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateCUser.java rename to mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateUser.java index 344609316..875db1b1b 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateCUser.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/entity/CreateUser.java @@ -9,7 +9,7 @@ import lombok.Data; @Data @AllArgsConstructor -public class CreateCUser implements Serializable{ +public class CreateUser implements Serializable{ private static final long serialVersionUID = 877618734961866171L; diff --git a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java index 3ca324e2f..a51f635a9 100644 --- a/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/pay/service/pay/wx/miniApp/maPay/WxMiniMaPayAdapterService.java @@ -8,8 +8,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.iformall.common.ErrorCode; +import com.iformall.common.IdWorker; import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxCUser; +import com.iformall.domain.po.WxCUserBasicInfo; import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxPayAccount; import com.iformall.domain.po.WxPayOrder; @@ -17,6 +19,7 @@ import com.iformall.enums.EnumPayMode; import com.iformall.enums.EnumPayShare; import com.iformall.enums.EnumUserIsSubscribe; import com.iformall.exception.MallinkException; +import com.iformall.mapper.WxCUserBasicInfoMapper; import com.iformall.mapper.WxCUserMapper; import com.iformall.pay.WxMicroPayOrderP; import com.iformall.pay.WxMicroPayOrderSP; @@ -25,7 +28,7 @@ import com.iformall.pay.WxPayment; import com.iformall.service.WxCUserService; import com.iformall.service.pay.entity.PayExtraParam; import com.iformall.service.pay.service.pay.CPassivePayService; -import com.iformall.service.pay.service.pay.entity.CreateCUser; +import com.iformall.service.pay.service.pay.entity.CreateUser; import com.iformall.service.pay.service.pay.entity.PayAdapterResult; import com.iformall.service.pay.service.pay.entity.PayQueryAdapterResult; import com.iformall.service.pay.service.pay.wx.BaseWxPayAdapterService; @@ -196,9 +199,11 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement WxCUserMapper wxCUserMapper; @Autowired WxCUserService wxCUserService; + @Autowired + WxCUserBasicInfoMapper wxCUserBasicInfoMapper; @Override - public CreateCUser createCUserAfterPay(Object result,WxAppinfo appInfo) throws Exception { + public CreateUser createCUserAfterPay(Object result,WxAppinfo appInfo) throws Exception { // add c_user, 收银台支付和券支付可能不是同一个人 Date curDate = new Date(); WxCUser userQ = new WxCUser(); @@ -207,28 +212,19 @@ public class WxMiniMaPayAdapterService extends BaseWxPayAdapterService implement String isSubscribe = returnMap.get("sub_is_subscribe"); userQ.setOpenId(openId); userQ.setAppId(appInfo.getAppId()); + WxCUser user1 = wxCUserMapper.findByOpenId(userQ); if (user1 == null) { - userQ.setCreateDate(curDate); - userQ.setUpdateDate(curDate); - if ("N".equalsIgnoreCase(isSubscribe)) { - userQ.setIsSubscribe(EnumUserIsSubscribe.NO.getCode()); - } else { - userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); - } - wxCUserService.saveOrUpdate(userQ); - } else { - userQ.setId(user1.getId()); - userQ.setUpdateDate(curDate); - userQ.setLoginCount(user1.getLoginCount()); - if ("N".equalsIgnoreCase(isSubscribe)) { - userQ.setIsSubscribe(EnumUserIsSubscribe.NO.getCode()); - } else { - userQ.setIsSubscribe(EnumUserIsSubscribe.YES.getCode()); - } - wxCUserService.saveOrUpdate(userQ); + user1 = new WxCUser(); + user1.setAppId(appInfo.getAppId()); + user1.setOpenId(openId); + 1111111111111111 + user1.updateTenantInfo(appInfo); + wxCUserService.saveOrUpdate(user1); + }else { + } - return new CreateCUser(userQ.getId(),userQ.getUserId()); + return null; } @Override