main^2
黄海 11 months ago
parent 7f186dba53
commit 0ef0c50154

@ -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);

@ -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<Record> list = ym.getRefundIds(userId);
return ResultVO.success(list);

@ -0,0 +1,73 @@
#### 原始需求
- 没有参加充值活动并且账户余额小于50元后台可以设置,系统自动退款原路返回。
- 个人用户----用户充值 ---- 充电消费----余额到用户钱包,可以下次消费,如果没有参加充值送券活动,则该笔充值可以申请退款。后骒审核信息无误,可以原路退回。
#### 开发思路
- 微信小程序端调用 /financeapi/userRefund/recDataListNew 获取可以退款的订单列表。
><h3><font color='red'>解释:原来就有的接口,必须小程序来调用</font></h3>
- 微信小程序将拿到的订单ids传递给后端接口 xxxxx:
接口逻辑如下:
(1) 获取允许退款的余额阀值,如果小于这个阀值才可以自动退款
(2) 没有参加过充值活动的
删除一些无效ID后生成一个新的ids列表返回给微信小程序,告诉小程序,这些是真的可以自动恳求的订单。
- 微信小程序循环所有ids,调用 /financeapi/userRefund/apply 发起此笔订单的退款申请,这样,在数据库中就生成了这些有效的退款申请单。
><h3><font color='red'>解释:原来就有的接口,必须小程序来调用</font></h3>
- 微信小程序调用 后端接口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
```

@ -1,172 +0,0 @@
- 没有参加充值活动并且账户余额小于50元后台可以设置,系统自动退款原路返回。
- 个人用户----用户充值 ---- 充电消费----余额到用户钱包,可以下次消费,如果没有参加充值送券活动,则该笔充值可以申请退款。后骒审核信息无误,可以原路退回。
```
D:\dsWork\YltProject\Ylt\ms-finance\src\main\java\com\charge\finance\controller\RecManageController.java
```
```java
/**
* @param
* @return PageInfo<AccountRechargeListVO>
*/
@ApiOperation(value = "退款分页列表",response = AccountRechargeListVO.class)
@GetMapping(value = "/refundInfo")
public ResultVO<PageInfo<AccountRechargeListVO>> refundInfo(RechargeQueryDTO queryDTO) {
PageInfo<AccountRechargeListVO> refundPage = rechargeService.refundPage(queryDTO);
return ResultVO.success(refundPage);
}
```
```xml
<select id="refundPage" resultType="com.charge.finance.vo.AccountRechargeListVO">
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
refund_state IN ( 1, 2, 3, 4 )
GROUP BY te.id
ORDER BY te.id DESC
</select>
```
$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的才可以进行处理
```
Loading…
Cancel
Save