diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java index 0ff5470dc..c2bde34ce 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/RetailAppService.java @@ -151,4 +151,7 @@ public interface RetailAppService { JSONObject sendVerifyEmail(JSONObject device); void openimCheck(JSONObject device); + + JSONObject getRefunds(JSONObject device, AppQueryBean appQueryBean); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java index e00666182..98116c2aa 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/core/impls/RetailAppServiceImp.java @@ -38,6 +38,7 @@ import au.com.royalpay.payment.manage.signin.core.SignInAccountService; import au.com.royalpay.payment.manage.signin.core.impls.SignInAccountServiceImpl; import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery; import au.com.royalpay.payment.manage.tradelog.core.TradeLogService; +import au.com.royalpay.payment.manage.tradelog.refund.RefundService; import au.com.royalpay.payment.tools.cms.RoyalPayCMSSupport; import au.com.royalpay.payment.tools.device.DeviceSupport; import au.com.royalpay.payment.tools.device.message.AppMessage; @@ -164,6 +165,8 @@ public class RetailAppServiceImp implements RetailAppService { @Resource private ClientMapper clientMapper; @Resource + private RefundService refundService; + @Resource private ClientModifySupport clientModifySupport; @Resource private ClearingLogMapper clearingLogMapper; @@ -332,11 +335,11 @@ public class RetailAppServiceImp implements RetailAppService { } tradeLogQuery.setClient_ids(appQueryBean.getApp_client_ids().split(",")); JSONObject client = clientManager.getClientInfo(Integer.parseInt(tradeLogQuery.getClient_ids()[0])); - if(client==null){ + if (client == null) { throw new NotFoundException("Client Not Exists"); } device.put("client_moniker", client.getString("client_moniker")); - device.put("client",client); + device.put("client", client); tradeLogService.exportTransFlow(tradeLogQuery, device, httpResponse); } @@ -419,6 +422,16 @@ public class RetailAppServiceImp implements RetailAppService { customerServiceService.checkAndSave(account); } + @Override + public JSONObject getRefunds(JSONObject device, AppQueryBean appQueryBean) { + JSONObject appParam = appQueryBean.toParams(); + JSONObject param = new JSONObject(); + param.put("client_id",device.getIntValue("client_id")); + param.put("start_time",appParam.getDate("begin")); + param.put("end_time",appParam.getDate("end")); + return refundService.listUnionAllApply(param, new PageBounds(appQueryBean.getPage(), appQueryBean.getLimit())); + } + @Override public void updateClient(JSONObject device, AppClientBean appClientBean) { String clientType = device.getString("client_type"); @@ -563,11 +576,11 @@ public class RetailAppServiceImp implements RetailAppService { JSONObject result = PageListUtils.buildPageListResult(logs); if (appQueryBean.getPage() == 1) { if (!logs.isEmpty() && logs.size() > 0) { - JSONObject clearingLog = clearingLogMapper.findById(logs.get(0).getIntValue("clearing_id")); - if(clearingLog.getBoolean("editable")){ - result.put("padding", true); - logs.get(0).put("padding",true); - } + JSONObject clearingLog = clearingLogMapper.findById(logs.get(0).getIntValue("clearing_id")); + if (clearingLog.getBoolean("editable")) { + result.put("padding", true); + logs.get(0).put("padding", true); + } } } return result; @@ -1169,7 +1182,7 @@ public class RetailAppServiceImp implements RetailAppService { JSONObject unReadParams = new JSONObject(); unReadParams.put("client_id", client_id); unReadParams.put("status", 0); - unReadParams.put("is_to_app",1); + unReadParams.put("is_to_app", 1); int counts = noticePartnerMapper.countNoticePartner(unReadParams); notice.put("unReadCounts", counts); notice.put("type", "notice"); @@ -1214,7 +1227,7 @@ public class RetailAppServiceImp implements RetailAppService { String clientType = device.getString("client_type"); deviceSupport.findRegister(clientType); JSONObject bankInfo = clientManager.getBankAccountByClientId(device.getIntValue("client_id")); - bankInfo.put("account_no","***"+ StringUtils.substring(bankInfo.getString("account_no"), -4)); + bankInfo.put("account_no", "***" + StringUtils.substring(bankInfo.getString("account_no"), -4)); return bankInfo; } @@ -1305,7 +1318,7 @@ public class RetailAppServiceImp implements RetailAppService { public JSONObject listDailyTransactions(String dateStr, String timezone, boolean thisDevOnly, JSONObject device, String app_client_ids) { try { JSONObject client = clientManager.getClientInfo(device.getIntValue("client_id")); - if(client==null){ + if (client == null) { return null; } timezone = client.getString("timezone"); diff --git a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java index e22449561..6d3ec3dd2 100644 --- a/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java +++ b/src/main/java/au/com/royalpay/payment/manage/appclient/web/RetailAppController.java @@ -109,6 +109,10 @@ public class RetailAppController { public JSONObject getTradeCommonData(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, AppQueryBean appQueryBean) { return retailAppService.getTradeCommonDate(device, appQueryBean); } + @RequestMapping(value = "/trade/refund", method = RequestMethod.GET) + public JSONObject getRefunds(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, AppQueryBean appQueryBean) { + return retailAppService.getRefunds(device, appQueryBean); + } @RequestMapping(value = "/trade_common_new", method = RequestMethod.GET) public JSONObject getTradeCommonDataNew(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device, AppQueryBean appQueryBean) { diff --git a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.java b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.java index 72ba19086..64ff2ecd8 100644 --- a/src/main/java/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.java +++ b/src/main/java/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.java @@ -1,16 +1,19 @@ package au.com.royalpay.payment.manage.mappers.payment; +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; +import com.github.miemiedev.mybatis.paginator.domain.PageList; + import cn.yixblog.support.mybatis.autosql.annotations.AdvanceSelect; import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper; import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; import cn.yixblog.support.mybatis.autosql.annotations.SqlType; -import com.alibaba.fastjson.JSONObject; -import com.github.miemiedev.mybatis.paginator.domain.PageBounds; -import org.apache.ibatis.annotations.Param; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.List; /** * Created by yixian on 2016-06-25. @@ -55,4 +58,7 @@ public interface RefundMapper { List listRefundDate(@Param("begin") Date begin, @Param("end") Date end); List listClientRefund(JSONObject param); + + PageList listUnionAllApply(JSONObject params, PageBounds pagination); + } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/RefundService.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/RefundService.java index 4ebe34c71..34c68c90a 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/RefundService.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/RefundService.java @@ -1,7 +1,10 @@ package au.com.royalpay.payment.manage.tradelog.refund; import au.com.royalpay.payment.manage.analysis.beans.RefundReviewBean; + import com.alibaba.fastjson.JSONObject; +import com.github.miemiedev.mybatis.paginator.domain.PageBounds; + import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; @@ -44,4 +47,6 @@ public interface RefundService { JSONObject findReviewOrder(String reviewId); JSONObject checkRefundAuditFlag(); + + JSONObject listUnionAllApply(JSONObject params,PageBounds pagination); } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/impls/RefundServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/impls/RefundServiceImpl.java index f37f39041..54635f160 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/impls/RefundServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/refund/impls/RefundServiceImpl.java @@ -87,7 +87,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish throw new RefundExistException(); } if (apply.isEmpty()) { - order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); + order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")) + .subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); return order; } else { if (account != null) { @@ -118,7 +119,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish if (undoRefundOrder != null) { throw new BadRequestException("该笔订单有退款正在处理,请稍后再试!"); } - order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); + order.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")) + .subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); return order; } @@ -143,12 +145,13 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish int clientId = order.getIntValue("client_id"); String currency = order.getString("currency"); - //增加角色审核 + // 增加角色审核 JSONObject client = clientManager.getClientInfo(clientId); Assert.notNull(client, "client not exists"); JSONObject clientConfig = clientConfigService.find(clientId); OperatorType type = account != null ? OperatorType.PARTNER : OperatorType.MANAGER; - boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(account.getIntValue("role")) == PartnerRole.CASHIER && clientConfig.getBooleanValue("enable_refund_auth"); + boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(account.getIntValue("role")) == PartnerRole.CASHIER + && clientConfig.getBooleanValue("enable_refund_auth"); logger.debug("applyer type=" + type + "; require audit=" + requireAudit); paymentApi.clientRefundBalanceCheck(clientId, orderId, currency, feeAmount); @@ -189,9 +192,9 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish BigDecimal realAmount = original ? fee : CurrencyAmountUtils.toAmount(fee, order.getString("currency")); JSONObject refundConfig = checkRefundAuditFlag(); - if (partnerAccount!=null && refundConfig != null && refundConfig.size() > 0 && refundConfig.getBoolean("refundAudit")) { + if (partnerAccount != null && refundConfig != null && refundConfig.size() > 0 && refundConfig.getBoolean("refundAudit")) { if (realAmount.compareTo(refundConfig.getBigDecimal("refundAuditAmount")) > 0) { - //订单需要审核 + // 订单需要审核 boolean casherRefund = reviewNewRefundOrder(orderId, realAmount, remark, partnerAccount, manager); if (casherRefund) { return executeRefund(orderId, realAmount, remark, partnerAccount, manager, order, client); @@ -204,7 +207,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish } - private JSONObject executeRefund(String orderId, BigDecimal amount, String remark, JSONObject partnerAccount, JSONObject manager, JSONObject order, JSONObject client) { + private JSONObject executeRefund(String orderId, BigDecimal amount, String remark, JSONObject partnerAccount, JSONObject manager, JSONObject order, + JSONObject client) { checkOrderUseCustomerCoupon(order, amount); JSONObject clientConfig = clientConfigService.find(client.getIntValue("client_id")); OperatorType type = partnerAccount != null ? OperatorType.PARTNER : OperatorType.MANAGER; @@ -220,12 +224,13 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish operator.put("operator_id", manager.getIntValue("manager_id")); operator.put("operator", manager.getString("display_name")); } - boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(partnerAccount.getIntValue("role")) == PartnerRole.CASHIER && clientConfig.getBooleanValue("enable_refund_auth"); + boolean requireAudit = type == OperatorType.PARTNER && PartnerRole.getRole(partnerAccount.getIntValue("role")) == PartnerRole.CASHIER + && clientConfig.getBooleanValue("enable_refund_auth"); logger.debug("applyer type=" + type + "; require audit=" + requireAudit); return paymentApi.refundOrder(orderId, null, amount, remark, operator, type, requireAudit); } - //订单使用积分商城优惠券,仅支持全额退款 + // 订单使用积分商城优惠券,仅支持全额退款 private void checkOrderUseCustomerCoupon(JSONObject order, BigDecimal feeAmount) { JSONObject couponLogs = couponAccuessLogMapper.findUsedCouponByOrderId(order.getString("order_id")); if (couponLogs != null) { @@ -237,7 +242,7 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish } @Override -// @Transactional + // @Transactional public JSONObject newReviewRefundOrder(String orderId, BigDecimal fee, boolean original, String remark, JSONObject manager) { JSONObject reviewOrder = refundReviewMapper.findUnResolveByOrderId(orderId); reviewOrder.put("status", 1); @@ -338,7 +343,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish private void submitRefund(JSONObject account, JSONObject audition) { JSONObject refundLog = refundMapper.find(audition.getString("refund_id")); - boolean platformAuditFlag = auditRefundAndCommitToPlatform(refundLog.getBigDecimal("amount"), audition.getString("remark"), refundLog.getString("order_id"), account); + boolean platformAuditFlag = auditRefundAndCommitToPlatform(refundLog.getBigDecimal("amount"), audition.getString("remark"), + refundLog.getString("order_id"), account); if (!platformAuditFlag) { paymentApi.submitRefund(audition.getString("refund_id")); } @@ -347,13 +353,12 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish private boolean auditRefundAndCommitToPlatform(BigDecimal amount, String remark, String orderId, JSONObject account) { if (amount.compareTo(BigDecimal.ZERO) > 0) { JSONObject refundConfig = checkRefundAuditFlag(); - if (refundConfig != null && refundConfig.getBoolean("refundAudit") && - amount.compareTo(refundConfig.getBigDecimal("refundAuditAmount")) >= 0) { - //订单需要审核 + if (refundConfig != null && refundConfig.getBoolean("refundAudit") && amount.compareTo(refundConfig.getBigDecimal("refundAuditAmount")) >= 0) { + // 订单需要审核 reviewNewRefundOrder(orderId, amount, remark, account, null); return true; } - //退款 + // 退款 return false; } else { throw new BadRequestException("Refund amount can not be 0"); @@ -411,7 +416,8 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish } review.put("bd_name", bdNameStr.deleteCharAt(bdNameStr.length() - 1).toString()); JSONObject order = orderMapper.find(review.getString("order_id")); - review.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")).subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); + review.put("available", BigDecimal.valueOf(order.getDoubleValue("customer_payment_amount")) + .subtract(BigDecimal.valueOf(order.getDoubleValue("refund_fee"))).doubleValue()); review.put("create_time", order.getDate("create_time")); review.put("channel", order.getString("channel")); return review; @@ -427,6 +433,15 @@ public class RefundServiceImpl implements RefundService, ApplicationEventPublish return refundConfig; } + @Override + public JSONObject listUnionAllApply(JSONObject params, PageBounds pagination) { + if(params.get("cleint_id")==null && params.get("client_ids")==null){ + return null; + } + return PageListUtils.buildPageListResult(refundMapper.listUnionAllApply(params, pagination)); + + } + @Override public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { this.publisher = applicationEventPublisher; diff --git a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.xml b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.xml index 1d4502713..d2c2b55de 100644 --- a/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.xml +++ b/src/main/resources/au/com/royalpay/payment/manage/mappers/payment/RefundMapper.xml @@ -69,4 +69,62 @@ and DATE_FORMAT(create_time,'%Y-%m-%d') = DATE_FORMAT(#{today},'%Y-%m-%d'); + \ No newline at end of file