From 5f565f14462314e2c22d9405cef110336f97b875 Mon Sep 17 00:00:00 2001 From: hupeng Date: Mon, 10 Sep 2018 13:53:41 +0800 Subject: [PATCH] =?UTF-8?q?[=E6=94=AF=E4=BB=98][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E8=B0=83=E8=AF=95=E5=88=86=E8=B4=A6=E6=8E=A5=E6=94=B6=E6=96=B9?= =?UTF-8?q?=E7=9A=84=E6=B7=BB=E5=8A=A0=E5=92=8C=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WxMerchantController.java | 17 +++++- .../WxProfitSharingReceiverController.java | 2 +- .../WxProfitSharingReceiverService.java | 5 +- .../WxProfitSharingReceiverServiceImpl.java | 54 +++++++++++++++++-- 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java index 6be3711a4..81cd6e654 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxMerchantController.java @@ -4,7 +4,9 @@ import com.github.pagehelper.PageInfo; import com.simple.common.Result; import com.simple.common.ResultData; import com.simple.domain.po.WxMerchant; +import com.simple.domain.po.WxProfitSharingReceiver; import com.simple.service.WxMerchantService; +import com.simple.service.WxProfitSharingReceiverService; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; @@ -23,6 +25,9 @@ public class WxMerchantController extends BaseController { @Autowired private WxMerchantService wxMerchantService; + @Autowired + private WxProfitSharingReceiverService wxProfitSharingReceiverService; + @ApiOperation("分页列表接口") @GetMapping("list") @ApiImplicitParams({ @@ -74,7 +79,17 @@ public class WxMerchantController extends BaseController { @GetMapping("/findById") @ApiImplicitParam(name = "id", value = "id", dataType = "Long", paramType = "query", required = true) public ResultData findById(Long id) { - return new ResultData(Result.SUCCESS, "查询成功", wxMerchantService.getById(id)); + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant = wxMerchantService.getById(id); + if (wxMerchant != null) { + WxProfitSharingReceiver receiver = wxProfitSharingReceiverService.findReceiver(wxMerchant); + if (receiver != null){ + wxMerchant.setAccountId(receiver.getReceiverAccount()); + wxMerchant.setAccountName(receiver.getTrueName()); + wxMerchant.setAccountTypeValue(receiver.getReceiverType()); + } + } + return new ResultData(wxMerchant); } @ApiOperation("停用") diff --git a/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java b/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java index 942a5a99f..f583576a5 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/WxProfitSharingReceiverController.java @@ -81,7 +81,7 @@ public class WxProfitSharingReceiverController extends BaseController { if (merchant == null) return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND); - return wxProfitSharingReceiverService.delReceiver(merchant, receiver); + return wxProfitSharingReceiverService.delReceiver(merchant); } diff --git a/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java b/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java index cdad0e6ee..71301a9cf 100644 --- a/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java +++ b/mallinkService/src/main/java/com/simple/service/WxProfitSharingReceiverService.java @@ -40,10 +40,11 @@ public interface WxProfitSharingReceiverService { */ void deleteById(Long id); + WxProfitSharingReceiver findReceiver(WxMerchant merchant); ResultData addReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver); + ResultData delReceiver(WxMerchant merchant); - ResultData delReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver); - + ResultData updateReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java index 0cb901905..f77d3ded9 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/WxProfitSharingReceiverServiceImpl.java @@ -23,6 +23,7 @@ import com.simple.pay.WxProfitSharingReceiverP; import com.simple.service.WxProfitSharingReceiverService; import com.simple.utils.BeanUtils; import com.simple.utils.Utility; +import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.simple.common.IdWorker; @@ -32,6 +33,8 @@ import com.simple.common.IdWorker; @Service public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiverService { + private Logger logger = Logger.getLogger(WxCouponOrderServiceImpl.class); + final JSONObject errorMap = JSON.parseObject("{" + "\"SYSTEMERROR\":{\"detail\":\"接口返回错误\",\"reason\":\"系统超时\",\"resolution\":\"系统异常,请用相同参数重新调用\"}," + "\"PARAM_ERROR\":{\"detail\":\"参数错误\\t\",\"reason\":\"请求参数未按指引进行填写\",\"resolution\":\"请求参数错误,请重新检查再调用分账接口\"}," + @@ -78,6 +81,16 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv } + @Override + public WxProfitSharingReceiver findReceiver(WxMerchant merchant) { + WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); + receiver.setMerchantId(merchant.getId()); + receiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT.getCode()); + receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); + + return wxProfitSharingReceiverMapper.selectOne(receiver); + } + @Override public ResultData addReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver) { @@ -123,20 +136,24 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); }catch (Exception e) { + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + e.getMessage()); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED, e.getMessage()); } Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); if (!"SUCCESS".equals(return_code)) { + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("return_msg")); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("return_msg")); } String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + returnMap.get("err_code_des")); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), returnMap.get("err_code_des")); } if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage() + "verifyNotifyHMAC"); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_ADD_FAILED.getMessage()); } @@ -145,7 +162,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv } @Override - public ResultData delReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver) { + public ResultData delReceiver(WxMerchant merchant) { WxAppinfo appInfo = new WxAppinfo(); appInfo.setTenantId(merchant.getTenantId()); appInfo.setType(EnumAppType.C.getCode()); @@ -153,6 +170,7 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv appInfo = wxAppinfoMapper.findList(appInfo).get(0); WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId()); + WxProfitSharingReceiver receiver = new WxProfitSharingReceiver(); receiver.setMerchantId(merchant.getId()); receiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT.getCode()); receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); @@ -181,28 +199,56 @@ public class WxProfitSharingReceiverServiceImpl implements WxProfitSharingReceiv String response; try { wxProfitSharingReceiverP.setSign(WxPayment.createSignHMAC(BeanUtils.toStringMap(wxProfitSharingReceiverP), payAccount.getApiKey())); - response = WxProfitSharing.addReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); + response = WxProfitSharing.delReceiver(BeanUtils.toStringMap(wxProfitSharingReceiverP)); }catch (Exception e) { + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + e.getMessage()); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED, e.getMessage()); } Map returnMap = WxPayment.xmlToMap(response); String return_code = returnMap.get("return_code"); if (!"SUCCESS".equals(return_code)) { + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("return_msg")); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("return_msg")); } String result_code = returnMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { + + if (returnMap.get("err_code").contains("USER_NOT_EXIST")) { + receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_INVALID.getCode()); + wxProfitSharingReceiverMapper.updateByPrimaryKeySelective(receiver); + } + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage() + returnMap.get("result_msg")); return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), returnMap.get("result_msg")); } if (!WxPayment.verifyNotifyHMAC(returnMap,payAccount.getApiKey())){ - return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); + logger.error(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getMessage()); + return new ResultData(ErrorCode.PROFIT_SHARING_RECEIVER_DEL_FAILED.getCode(), "verifyNotifyHMAC"); } receiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_INVALID.getCode()); wxProfitSharingReceiverMapper.updateByPrimaryKeySelective(receiver); return new ResultData(returnMap); } - + @Override + public ResultData updateReceiver(WxMerchant merchant, WxProfitSharingReceiver receiver) { + + WxProfitSharingReceiver oldReceiver = new WxProfitSharingReceiver(); + oldReceiver.setMerchantId(merchant.getId()); + oldReceiver.setSharingType(EnumProfitSharingType.PROFIT_SHARING_TYPE_WECHAT.getCode()); + oldReceiver.setStatus(EnumProfitSharingReceiverStatus.PROFIT_SHARING_RECEIVER_STATUS_VALID.getCode()); + oldReceiver.setReceiverAccount(receiver.getReceiverAccount()); + oldReceiver.setReceiverType(receiver.getReceiverType()); + oldReceiver.setTrueName(receiver.getTrueName()); + + oldReceiver = wxProfitSharingReceiverMapper.selectOne(oldReceiver); + + if (oldReceiver == null) { + delReceiver(merchant); + return addReceiver(merchant, receiver); + } + + return new ResultData(); + } }