diff --git a/Ylt/ms-finance/src/main/java/com/charge/finance/api/UserRefundController.java b/Ylt/ms-finance/src/main/java/com/charge/finance/api/UserRefundController.java index 689b07b..2def756 100644 --- a/Ylt/ms-finance/src/main/java/com/charge/finance/api/UserRefundController.java +++ b/Ylt/ms-finance/src/main/java/com/charge/finance/api/UserRefundController.java @@ -117,7 +117,6 @@ public class UserRefundController { if (StringUtils.isBlank(userId)) { return ResultVO.custom("用户信息为空,获取可退款订单失败"); } - return ResultVO.success(userRefundService.recDataListNew(userId)); } catch (Exception e) { logger.warn("recDataListNew 方法出现异常,原因:", e); diff --git a/Ylt/ms-task/src/main/java/com/charge/task/controller/YltControllerForWx.java b/Ylt/ms-task/src/main/java/com/charge/task/controller/YltControllerForWx.java index 3cc9a8b..46f751b 100644 --- a/Ylt/ms-task/src/main/java/com/charge/task/controller/YltControllerForWx.java +++ b/Ylt/ms-task/src/main/java/com/charge/task/controller/YltControllerForWx.java @@ -12,6 +12,7 @@ import com.charge.util.SignUtils; import com.jfinal.kit.Kv; import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.Record; +import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -192,6 +193,9 @@ public class YltControllerForWx { public ResultVO getRefundIds(HttpServletRequest request) { //获取当前登录人员信息 String userId = request.getHeader("userId"); + if (StringUtils.isBlank(userId)) { + return ResultVO.custom("用户信息为空,获取可退款订单失败",-1); + } //有哪些可以退款的订单 List list = ym.getRefundIds(userId); return ResultVO.success(list); diff --git a/业务梳理/自动退款逻辑.md b/业务梳理/自动退款逻辑.md new file mode 100644 index 0000000..15420e3 --- /dev/null +++ b/业务梳理/自动退款逻辑.md @@ -0,0 +1,73 @@ + + +#### 原始需求 + +- 没有参加充值活动,并且,账户余额小于50元(后台可以设置),系统自动退款原路返回。 +- 个人用户----用户充值 ---- 充电消费----余额到用户钱包,可以下次消费,如果没有参加充值送券活动,则该笔充值可以申请退款。后骒审核信息无误,可以原路退回。 + + + +#### 开发思路 + +- 微信小程序端调用 /financeapi/userRefund/recDataListNew 获取可以退款的订单列表。 + +>

解释:原来就有的接口,必须小程序来调用

+ + + +- 微信小程序将拿到的订单ids传递给后端接口 xxxxx: + +​ 接口逻辑如下: + +​ (1) 获取允许退款的余额阀值,如果小于这个阀值才可以自动退款 + +​ (2) 没有参加过充值活动的 + +​ 删除一些无效ID后,生成一个新的ids列表返回给微信小程序,告诉小程序,这些是真的可以自动恳求的订单。 + + + +- 微信小程序循环所有ids,调用 /financeapi/userRefund/apply 发起此笔订单的退款申请,这样,在数据库中就生成了这些有效的退款申请单。 + +>

解释:原来就有的接口,必须小程序来调用

+ + + +- 微信小程序调用 后端接口yyyyy,将ids作为参数让后端接口把此人的所有已申请的退款记录通过审核。 + +```html +http://10.10.14.77:7003/financeapi/userRefund/agreeV2?rechargeId=431052&memo=%E6%88%91%E5%90%8C%E6%84%8F&rechargeOperer=superadmin&refundFee=171.03 +``` + + + + + +> **下面是相关的一些细节** + +#### 阀值 + +tkMoneyFaZhi + +| tkMoneyFaZhi | 退款金额阀值 | 50 | +| ------------ | ------------ | ---- | +| | | | + +- + +``` +D:\dsWork\YltProject\Ylt\ms-finance\src\main\java\com\charge\finance\controller\RecManageController.java +``` + +$Q$:如何知道一条充值订单是不是可以退款? + +用户在申请退款时,如果这笔充值参加了活动,用户就不能选择这笔充值退款。 + +$refund\_state$ $6$款状态(0未退款 1已退款 2 退款失败 3退款申请审核 4未退款驳回 5建帮活动不可退款) + +![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408151410729.png) + +```sql +select * from t_account_recharge where user_id=53958 and refund_state=6 order by id desc +``` + diff --git a/业务梳理/退款逻辑.md b/业务梳理/退款逻辑.md deleted file mode 100644 index 1292839..0000000 --- a/业务梳理/退款逻辑.md +++ /dev/null @@ -1,172 +0,0 @@ - - -- 没有参加充值活动,并且,账户余额小于50元(后台可以设置),系统自动退款原路返回。 -- 个人用户----用户充值 ---- 充电消费----余额到用户钱包,可以下次消费,如果没有参加充值送券活动,则该笔充值可以申请退款。后骒审核信息无误,可以原路退回。 - -``` -D:\dsWork\YltProject\Ylt\ms-finance\src\main\java\com\charge\finance\controller\RecManageController.java -``` - -```java -/** - * @param - * @return PageInfo - */ - @ApiOperation(value = "退款分页列表",response = AccountRechargeListVO.class) - @GetMapping(value = "/refundInfo") - public ResultVO> refundInfo(RechargeQueryDTO queryDTO) { - PageInfo refundPage = rechargeService.refundPage(queryDTO); - return ResultVO.success(refundPage); - } -``` - - - -```xml - -``` - - - -$Q$:如何知道一条充值订单是不是可以退款? - -用户在申请退款时,如果这笔充值参加了活动,用户就不能选择这笔充值退款。 - -$refund\_state$ $6$款状态(0未退款 1已退款 2 退款失败 3退款申请审核 4未退款驳回 5建帮活动不可退款) - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408151410729.png) - -```sql -select * from t_account_recharge where user_id=53958 and refund_state=6 order by id desc -``` - - - -![](https://dsideal.obs.cn-north-1.myhuaweicloud.com/HuangHai/BlogImages/202408151401314.png) - - - - - - - -```sql -App支付记录表 t_account_recharge -refund_state -refund_state IN ( 1, 2, 3, 4 ) -退款状态(0未退款 1已退款 2 退款失败 3退款申请审核 4未退款驳回 5建帮活动不可退款) -``` - -​ - -```sql -4200002307202408129671269468 - -# 查看这个充值订单是不是可以退款 -select * from t_account_recharge where outtradeno='4200002307202408129671269468' -refund_state =6 是参加了活动不能退款的 -refund_state =0 是未退款的 -应该检查此充值订单的refund_state 是否为0。 - -# 同时需要满足金额小于一个指定的数值,比如50元 - - - -# 其它充值订单 -4200002345202408109427639311 -4200002227202406207784559922 -``` - - - -tkMoneyFaZhi - -| tkMoneyFaZhi | 退款金额阀值 | 50 | -| ------------ | ------------ | ---- | -| | | | - -```sql - SELECT - ifnull( te.id, '' ) rechargeId, - ifnull( date_format( refund_time, '%Y-%m-%d %H:%i:%s' ), '' ) refundTime, - ifnull( date_format( pay_time, '%Y-%m-%d %H:%i:%s' ), '' ) payTime, - ifnull( refund_money, '' ) refundMoney, - ifnull( refund_state, '' ) refundState, - ifnull( pay_money, '' ) payMoney, - ifnull( tu.id, '' ) userId, - ifnull( tu.phone, '' ) phone, - ifnull( refund_memo, '' ) refundMemo, - ifnull( outtradeno, '' ) outTradeNo, - ifnull( refund_outtradno, '' ) refundOuttradno, - ifnull( refund_operer, '' ) refundOperer, - ifnull( pay_type, '' ) payType, - ifnull( tu.user_type, '' ) userType, - ifnull( te.refund_reason, '' ) refundReason, - ifnull( tu.user_name, '' ) userName, - ifnull( te.refund_apply_time, '' ) refundApplyTime, - ifnull( te.refund_image, '' ) refundImage, - tu.user_owner_id as userOwnerId - FROM - t_account_recharge te - LEFT JOIN t_user tu ON te.user_id = tu.id - LEFT JOIN t_user_card c ON tu.id = c.user_id - WHERE - outtradeno='4200002307202408129671269468' -``` - - - -D:\dsWork\YltProject\Ylt\ms-finance\src\main\java\com\charge\finance\service\impl\RefundBalanceServiceImpl.java - -``` - /** - * 后台退款-消费平账接口 - */ - @Override - @Transactional(propagation= Propagation.REQUIRED,isolation= Isolation.DEFAULT) - public ResultVO operateAccount(AdminFinanceDTO adminFinanceDTO) -``` - -``` --- App支付记录表 --- 退款状态(0未退款 1已退款 2 退款失败 3退款申请审核 4未退款驳回 5建帮活动不可退款 6活动充值) -select * from t_account_recharge where user_id=95001 and refund_state=0 order by id desc ; - -select * from t_account_recharge where memo='充值活动充值'; -select * from t_account_recharge where refund_state=6 and memo='充值活动充值'; -select * from t_account_recharge where refund_state=6 and memo<>'充值活动充值'; - --- 结论: --- 1、看refund_state=6 ,memo不靠谱 --- 2、从上面的情况来看,refund_state=0的才可以进行处理 -``` -