Bläddra i källkod

用户退款申请
后台退款处理

skyline 2 år sedan
förälder
incheckning
198c8304bb

+ 1 - 12
admin/src/main/java/com/kym/admin/controller/CustomController.java

@@ -8,7 +8,6 @@ import com.kym.entity.admin.queryParams.CustomChargeOrdersQueryParam;
 import com.kym.service.miniapp.ChargeOrderService;
 import com.kym.service.miniapp.PayLogService;
 import com.kym.service.miniapp.UserService;
-import com.kym.service.wechat.WxPayService;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -24,13 +23,11 @@ public class CustomController {
     private final UserService customUserService;
     private final ChargeOrderService customChargeOrders;
     private final PayLogService payLogService;
-    private final WxPayService wxPayService;
 
-    public CustomController(UserService customUserService, ChargeOrderService customChargeOrders, PayLogService payLogService, WxPayService wxPayService) {
+    public CustomController(UserService customUserService, ChargeOrderService customChargeOrders, PayLogService payLogService) {
         this.customUserService = customUserService;
         this.customChargeOrders = customChargeOrders;
         this.payLogService = payLogService;
-        this.wxPayService = wxPayService;
     }
 
     @SaCheckPermission("user.list")
@@ -64,12 +61,4 @@ public class CustomController {
         return R.success(payLogService.listRecharge(params, pageNum, pageSize));
     }
 
-    @SysLog("处理用户微信退款")
-    @GetMapping("/customWxRefund/{refundLogId}")
-    public R<?> customWxRefund(@PathVariable("refundLogId") long refundLogId) {
-        wxPayService.wxRefund(refundLogId);
-        return R.success();
-    }
-
-
 }

+ 42 - 0
admin/src/main/java/com/kym/admin/controller/FinanceController.java

@@ -0,0 +1,42 @@
+package com.kym.admin.controller;
+
+import com.kym.common.R;
+import com.kym.common.annotation.SysLog;
+import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.service.miniapp.RefundLogService;
+import com.kym.service.wechat.WxPayService;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author skyline
+ * @description 财务
+ * @date 2023-09-14 16:21
+ */
+@RestController
+@RequestMapping("/finance")
+public class FinanceController {
+
+    private final WxPayService wxPayService;
+
+    private final RefundLogService refundLogService;
+
+    public FinanceController(WxPayService wxPayService, RefundLogService refundLogService) {
+        this.wxPayService = wxPayService;
+        this.refundLogService = refundLogService;
+    }
+
+    @SysLog("退款申请列表")
+    @GetMapping("/listRefundLog")
+    R<?> listRefundLog(@ModelAttribute CommonQueryParam params) {
+        return R.success(refundLogService.listRefundLog(params));
+    }
+
+    @SysLog("处理用户微信退款")
+    @GetMapping("/customWxRefund/{refundLogId}")
+    R<?> customWxRefund(@PathVariable("refundLogId") long refundLogId) {
+        wxPayService.wxRefund(refundLogId);
+        return R.success();
+    }
+
+
+}

+ 5 - 1
entity/src/main/java/com/kym/entity/admin/queryParams/CommonQueryParam.java

@@ -9,6 +9,10 @@ import lombok.Data;
  */
 @Data
 public class CommonQueryParam extends PageParams {
+    /**
+     * id
+     */
+    private Long id;
     /**
      * 手机号
      */
@@ -24,5 +28,5 @@ public class CommonQueryParam extends PageParams {
     /**
      * 状态
      */
-    private Integer status;
+    private Object status;
 }

+ 89 - 0
entity/src/main/java/com/kym/entity/miniapp/vo/RefundVo.java

@@ -0,0 +1,89 @@
+package com.kym.entity.miniapp.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author skyline
+ * @description 退款
+ * @date 2023-09-14 16:27
+ */
+@Data
+@Accessors(chain = true)
+public class RefundVo {
+
+    /**
+     * id
+     */
+    private Long refundLogId;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 手机号
+     */
+    private String mobilePhone;
+
+    /**
+     * 余额
+     */
+    private int balance;
+
+    /**
+     * 冻结金额
+     */
+    private int frozenAmount;
+
+    /**
+     * 商户退款单号
+     */
+    private String outRefundNo;
+
+    /**
+     * 商户订单号
+     */
+    private String outTradeNo;
+
+    /**
+     * 退款渠道
+     */
+    private String channel;
+
+    /**
+     * 退款入账账户
+     */
+    private String userReceivedAccount;
+
+    /**
+     * 退款成功时间
+     */
+    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime successTime;
+
+    /**
+     * 退款状态:SUCCESS:退款成功 CLOSED:退款关闭 PROCESSING:退款处理中 ABNORMAL:退款异常
+     */
+    private String status;
+
+    /**
+     * 订单金额
+     */
+    private Integer total;
+
+    /**
+     * 退款金额
+     */
+    private Integer refund;
+
+    /**
+     * 用户支付币种
+     */
+    private String currency;
+
+}

+ 7 - 2
mapper/src/main/java/com/kym/mapper/miniapp/RefundLogMapper.java

@@ -1,7 +1,12 @@
 package com.kym.mapper.miniapp;
 
-import com.kym.entity.miniapp.RefundLog;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.miniapp.RefundLog;
+import com.kym.entity.miniapp.vo.RefundVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +17,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2023-09-11
  */
 public interface RefundLogMapper extends BaseMapper<RefundLog> {
-
+    List<RefundVo> listRefundLog(@Param("params") CommonQueryParam params);
 }

+ 62 - 1
mapper/src/main/resources/mappers/miniapp/RefundLogMapper.xml

@@ -19,9 +19,70 @@
         <result column="currency" property="currency" />
     </resultMap>
 
+    <resultMap id="RefundVoMap" type="com.kym.entity.miniapp.vo.RefundVo">
+        <result column="id" property="refundLogId" />
+        <result column="user_id" property="userId" />
+        <result column="mobile_phone" property="mobilePhone" />
+        <result column="balance" property="balance" />
+        <result column="frozenAmount" property="frozenAmount" />
+        <result column="out_refund_no" property="outRefundNo" />
+        <result column="out_trade_no" property="outTradeNo" />
+        <result column="channel" property="channel" />
+        <result column="user_received_account" property="userReceivedAccount" />
+        <result column="success_time" property="successTime" />
+        <result column="status" property="status" />
+        <result column="total" property="total" />
+        <result column="refund" property="refund" />
+        <result column="currency" property="currency" />
+    </resultMap>
+
     <!-- 通用查询结果列 -->
     <sql id="Base_Column_List">
-        user_id, refund_id, out_refund_no, transaction_id, out_trade_no, channel, user_received_account, success_time, status, funds_account, total, refund, currency
+        id,user_id, refund_id, out_refund_no, transaction_id, out_trade_no, channel, user_received_account, success_time, status, funds_account, total, refund, currency,create_time,update_time
     </sql>
 
+
+    <select id="listRefundLog" resultMap="RefundVoMap" parameterType="com.kym.entity.admin.queryParams.CommonQueryParam">
+        SELECT
+            t1.id,
+            t4.user_id,
+            t4.mobile_phone,
+            t4.balance,
+            t4.frozen_amount,
+            t1.out_refund_no,
+            t1.out_trade_no,
+            t1.channel,
+            t1.user_received_account,
+            t1.success_time,
+            t1.`status`,
+            t1.`total`,
+            t1.`refund`,
+            t1.`channel`,
+            t1.`currency`
+        FROM
+            t_refund_log t1
+                LEFT JOIN
+            (SELECT
+                 t2.id user_id,
+                 t2.mobile_phone,
+                 t3.balance,
+                 t3.frozen_amount
+             FROM
+                 t_user t2
+                     LEFT JOIN t_account t3
+                               ON t2.id = t3.user_id) t4
+            ON t1.user_id = t4.user_id
+        <where>
+            <if test="params.mobilePhone != null">
+                and t4.mobile_phone = #{params.mobilePhone}
+            </if>
+            <if test="params.status != null">
+                and t1.status = #{params.status}
+            </if>
+            <if test="params.id != null">
+                and t1.id = #{params.id}
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 2 - 1
service/src/main/java/com/kym/service/enplus/impl/EnNotifyServiceImpl.java

@@ -76,7 +76,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
     @DS("db-admin")
     public String handleNotificationStationStatus(JSONObject json) {
         var data = enPlusService.signValidation(json);
-        LOGGER.info("【EN+推送】收到充电桩设备状态变化推送:\n{},解密数据:\\n{}\"", json, data);
+        LOGGER.info("【EN+推送】收到充电桩设备状态变化推送:\n{} \n 解密数据:{}", json, data);
         // 更新数据库,存入redis,发送邮件通知
         var connectorStatusInfo = JSONObject.parseObject(data).getJSONObject("ConnectorStatusInfo").toJavaObject(EnConnectorStatusInfo.class);
         if (connectorStatusInfo.getStatus() == 0) {
@@ -90,6 +90,7 @@ public class EnNotifyServiceImpl implements EnNotifyService {
                     .setOfflineStatus(connectorStatusInfo.getStatus());
             monitorLogService.save(monitorLog);
             redisTemplate.opsForValue().set(RedisKeys.OFFLINE.concat(connectorStatusInfo.getConnectorId()), "", 1, TimeUnit.DAYS);
+            // TODO: 2023-09-14 通知后面改队列处理,统计站点离线总数量 
             MailUtil.send(notifyEmail, "【设备离线通知】", "站点:%s,设备%s离线"
                     .formatted(kymCache.getStationName(monitorLog.getStationId()), kymCache.getShortId(monitorLog.getSn())), false);
         } else {

+ 4 - 1
service/src/main/java/com/kym/service/miniapp/RefundLogService.java

@@ -1,7 +1,10 @@
 package com.kym.service.miniapp;
 
+import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.RefundLog;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.kym.entity.miniapp.vo.RefundVo;
 
 /**
  * <p>
@@ -12,5 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2023-09-11
  */
 public interface RefundLogService extends IService<RefundLog> {
-
+    PageBean<RefundVo> listRefundLog(CommonQueryParam params);
 }

+ 13 - 1
service/src/main/java/com/kym/service/miniapp/impl/RefundLogServiceImpl.java

@@ -1,9 +1,14 @@
 package com.kym.service.miniapp.impl;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.kym.entity.admin.queryParams.CommonQueryParam;
+import com.kym.entity.common.PageBean;
 import com.kym.entity.miniapp.RefundLog;
+import com.kym.entity.miniapp.vo.RefundVo;
 import com.kym.mapper.miniapp.RefundLogMapper;
 import com.kym.service.miniapp.RefundLogService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
 /**
@@ -15,6 +20,13 @@ import org.springframework.stereotype.Service;
  * @since 2023-09-11
  */
 @Service
+@DS("db-miniapp")
 public class RefundLogServiceImpl extends ServiceImpl<RefundLogMapper, RefundLog> implements RefundLogService {
 
+    @Override
+    public PageBean<RefundVo> listRefundLog(CommonQueryParam params) {
+        PageHelper.startPage(params.getPageNum(), params.getPageSize());
+        var list = baseMapper.listRefundLog(params);
+        return new PageBean<>(list);
+    }
 }