Ver código fonte

分账列表,站点账户列表修改

skyline 1 ano atrás
pai
commit
235407e777

+ 16 - 15
admin-web/src/router/route.ts

@@ -148,21 +148,7 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                             icon: 'ele-User',
                         },
                     },
-                    {
-                        path: '/station/account',
-                        name: 'adminStationAccount',
-                        component: () => import('/@/views/admin/station/account/index.vue'),
-                        meta: {
-                            title: '站点用户',
-                            isLink: '',
-                            isHide: false,
-                            isKeepAlive: true,
-                            isAffix: false,
-                            isIframe: false,
-                            perm:"equipment.list",
-                            icon: 'ele-User',
-                        },
-                    },
+
                 ]
             },
             {
@@ -240,6 +226,21 @@ export const adminRoutes: Array<RouteRecordRaw> = [
                     perm:"recharge.list",
                 },
             },
+            {
+                path: '/station/account',
+                name: 'adminStationAccount',
+                component: () => import('/@/views/admin/station/account/index.vue'),
+                meta: {
+                    title: '站点账户',
+                    isLink: '',
+                    isHide: false,
+                    isKeepAlive: true,
+                    isAffix: false,
+                    isIframe: false,
+                    perm:"equipment.list",
+                    icon: 'ele-Wallet',
+                },
+            },
             {
                 path: '/org',
                 name: 'adminOrg',

+ 26 - 6
admin-web/src/views/admin/finance/splitRecord.vue

@@ -129,10 +129,30 @@
             <template v-else-if="['createTime','udpateTime'].includes(field.prop)">
               {{ u.fmt.fmtDateTime(row[field.prop]) }}
             </template>
+            <template v-else-if="'toStationId'===field.prop">
+              <div>
+                {{ row.toStationId }}
+              </div>
+              <hr/>
+              <div>
+                {{ row.toStationName }}
+              </div>
+            </template>
+            <template v-else-if="'fromStationId'===field.prop">
+              <div>
+                {{ row.fromStationId }}
+              </div>
+              <hr/>
+              <div>
+                {{ row.fromStationName }}
+              </div>
+            </template>
             <template v-else>
               <div>{{ row[field.prop] }}</div>
             </template>
 
+
+
           </template>
         </el-table-column>
       </el-table>
@@ -184,12 +204,12 @@ const state = reactive({
   exportConfig: {},
   columns: [
     // {type: 'selection', width: 60, align: 'center', fixed: 'left'},
-    {label: '入账站点ID', width: 180, prop: 'toStationId', query: true, type: 'text', resizable: true, fixed: 'left'},
-    {label: '出账站点ID', width: 180, prop: 'fromStationId', query: true, type: 'text', resizable: true, fixed: 'left'},
-    {label: '状态', prop: 'status', sortable: 'custom', align: 'center', query: true, width: 120, conf: {dict: 'SplitRecord.status'}},
-    {label: '分账交易金额()', width: 180, prop: 'amount', query: true, type: '', resizable: true},
+    {label: '入账站点ID/名称', prop: 'toStationId', width: 200,align:'center', resizable: true, fixed: 'left'},
+    {label: '出账站点ID/名称', prop: 'fromStationId', width: 200,align:'center', resizable: true, fixed: 'left'},
+    // {label: '状态', prop: 'status', sortable: 'custom', align: 'center', query: true, width: 120, conf: {dict: 'SplitRecord.status'}},
+    {label: '分账交易金额()', width: 180, prop: 'amount', query: true, type: '', resizable: true},
     {label: '分账交易流水号', width: 280, prop: 'tradeNo', query: true, type: 'text', resizable: true},
-    {label: '交易类型', width: 180, prop: 'type', query: true, type: '', resizable: true},
+    {label: '交易类型', width: 130, prop: 'type', query: true, type: '', resizable: true},
     {label: '创建时间', width: 180, prop: 'createTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
     {label: '更新时间', width: 180, prop: 'updateTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
   ],
@@ -268,4 +288,4 @@ const handleRowDelete = (row: any) => {
 // defineExpose({
 //     loadData,
 // });
-</script>
+</script>

+ 7 - 6
admin-web/src/views/admin/station/account/index.vue

@@ -87,13 +87,13 @@
             <template v-else-if="field.prop==='type'">
               <ext-d-label type="Object.type" :model-value="row[field.prop]"></ext-d-label>
             </template>
-            <template v-else-if="['prepayMoney','amount','amountReceivable','amountReceived','cardBalance','coinMoney','discountAmount','discountMoney'].includes(field.prop)">
+            <template v-else-if="['balance','frozenAmount','amount'].includes(field.prop)">
               {{ u.fmt.fmtMoney(row[field.prop]) }}
             </template>
             <template v-else-if="field.prop==='idleRemainTime'||field.prop==='operationRemainTime'">
               {{ u.fmt.fmtDuration(row[field.prop]) }}
             </template>
-            <template v-else-if="['createTime','udpateTime'].includes(field.prop)">
+            <template v-else-if="['createTime','updateTime'].includes(field.prop)">
               {{ u.fmt.fmtDateTime(row[field.prop]) }}
             </template>
             <template v-else>
@@ -147,9 +147,10 @@ const state = reactive({
   exportConfig: {},
   columns: [
     // {type: 'selection', width: 60, align: 'center', fixed: 'left'},
-    {label: '站点id', width: 180,prop: 'stationId', query: true, type: 'text', resizable: true},
-    {label: '总余额(分)', width: 180,prop: 'balance', query: true, type: '', resizable: true},
-    {label: '冻结金额(分)', width: 180,prop: 'frozenAmount', query: true, type: '', resizable: true},
+    {label: '站点ID', width: 100,prop: 'stationId', query: true, type: 'text', resizable: true},
+    {label: '站点名称', width: 200,prop: 'stationName', query: true, type: 'text', resizable: true},
+    {label: '可提现金额(元)', width: 180,prop: 'balance', query: true, type: '', resizable: true},
+    {label: '充值未消费金额(元)', width: 180,prop: 'frozenAmount', query: true, type: '', resizable: true},
     {label: '创建时间', width: 180,prop: 'createTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
     {label: '更新时间', width: 180,prop: 'updateTime', query: true, sortable: 'custom', type: 'datetime', resizable: true, conf: {format: (val: any) => u.fmt.fmtDate(val)}},
     // {                label: '操作', prop: 'action', type: 'render', width: 180, align: 'center', fixed: 'right',
@@ -254,4 +255,4 @@ const handleRowDelete = (row: any) => {
 // defineExpose({
 //     loadData,
 // });
-</script>
+</script>

+ 2 - 2
car-wash-entity/src/main/java/com/kym/entity/SplitRecord.java

@@ -31,12 +31,12 @@ public class SplitRecord extends BaseEntity {
     public static final Integer TYPE_REFUND = 4;
 
     /**
-     * 出账账户ID
+     * 出账站点ID
      */
     private String fromStationId;
 
     /**
-     * 入账账户ID
+     * 入账站点ID
      */
     private String toStationId;
 

+ 58 - 0
car-wash-entity/src/main/java/com/kym/entity/vo/SplitRecordVo.java

@@ -0,0 +1,58 @@
+package com.kym.entity.vo;
+
+import com.kym.entity.BaseEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 平台分账记录表
+ * </p>
+ *
+ * @author skyline
+ * @since 2025-02-24
+ */
+@Data
+@Accessors(chain = true)
+public class SplitRecordVo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 出账站点ID
+     */
+    private String fromStationId;
+    /**
+     * 出账站点名称
+     */
+    private String fromStationName;
+
+    /**
+     * 入账站点ID
+     */
+    private String toStationId;
+    /**
+     * 入账站点名称
+     */
+    private String toStationName;
+
+    /**
+     * 分账交易流水号
+     */
+    private String tradeNo;
+
+    /**
+     * 分账交易金额(分)
+     */
+    private Integer amount;
+
+    /**
+     * 交易类型(1-充值 2-消费 3-解冻 4-退款)
+     */
+    private Integer type;
+
+    /**
+     * 状态(0-处理中 1-成功 2-失败)
+     */
+    private Integer status;
+}

+ 35 - 0
car-wash-entity/src/main/java/com/kym/entity/vo/StationAccountVo.java

@@ -0,0 +1,35 @@
+package com.kym.entity.vo;
+
+import com.kym.entity.BaseEntity;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * 站点账户
+ *
+ * @author skyline
+ * @since 2025-02-24
+ */
+@Data
+@Accessors(chain = true)
+public class StationAccountVo extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+    /**
+     * 站点ID
+     */
+    private String stationId;
+    /**
+     * 站点名称
+     */
+    private String stationName;
+    /**
+     * 总余额(分)
+     */
+    private Integer balance;
+
+    /**
+     * 冻结金额(分)
+     */
+    private Integer frozenAmount;
+}

+ 2 - 1
car-wash-service/src/main/java/com/kym/service/SplitRecordService.java

@@ -3,6 +3,7 @@ package com.kym.service;
 import com.kym.entity.SplitRecord;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.queryParams.SplitRecordQueryParams;
+import com.kym.entity.vo.SplitRecordVo;
 import com.kym.service.mybatisplus.MyBaseService;
 
 /**
@@ -14,5 +15,5 @@ import com.kym.service.mybatisplus.MyBaseService;
  * @since 2025-02-24
  */
 public interface SplitRecordService extends MyBaseService<SplitRecord> {
-     PageBean<SplitRecord> listSplitRecords(SplitRecordQueryParams params);
+    PageBean<SplitRecordVo> listSplitRecords(SplitRecordQueryParams params);
 }

+ 2 - 1
car-wash-service/src/main/java/com/kym/service/StationAccountService.java

@@ -3,6 +3,7 @@ package com.kym.service;
 import com.kym.entity.StationAccount;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.queryParams.StationQueryParam;
+import com.kym.entity.vo.StationAccountVo;
 import com.kym.service.mybatisplus.MyBaseService;
 
 /**
@@ -17,5 +18,5 @@ public interface StationAccountService extends MyBaseService<StationAccount> {
 
     StationAccount getStationAccount(String stationId);
 
-    PageBean<StationAccount> listStationAccounts(StationQueryParam stationId);
+    PageBean<StationAccountVo> listStationAccounts(StationQueryParam stationId);
 }

+ 12 - 2
car-wash-service/src/main/java/com/kym/service/impl/SplitRecordServiceImpl.java

@@ -6,10 +6,12 @@ import com.kym.common.utils.CommUtil;
 import com.kym.entity.SplitRecord;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.queryParams.SplitRecordQueryParams;
+import com.kym.entity.vo.SplitRecordVo;
 import com.kym.mapper.SplitRecordMapper;
 import com.kym.service.SplitRecordService;
 import com.kym.service.cache.KymCache;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -24,7 +26,7 @@ import org.springframework.stereotype.Service;
 public class SplitRecordServiceImpl extends MyBaseServiceImpl<SplitRecordMapper, SplitRecord> implements SplitRecordService {
 
     @Override
-    public PageBean<SplitRecord> listSplitRecords(SplitRecordQueryParams params) {
+    public PageBean<SplitRecordVo> listSplitRecords(SplitRecordQueryParams params) {
         // 站点数据权限
         var adminStationIds = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong());
         if (CommUtil.isEmptyOrNull(params.getStationId()) &&
@@ -40,6 +42,14 @@ public class SplitRecordServiceImpl extends MyBaseServiceImpl<SplitRecordMapper,
                 .eq(CommUtil.isNotEmptyAndNull(params.getStationId()), SplitRecord::getToStationId, params.getStationId())
                 .orderByDesc(SplitRecord::getId)
                 .list();
-        return new PageBean<>(res);
+
+        var voList = res.stream().map(item -> {
+            var vo = new SplitRecordVo();
+            BeanUtils.copyProperties(item, vo);
+            vo.setFromStationName(KymCache.INSTANCE.getStationNameById(item.getFromStationId()));
+            vo.setToStationName(KymCache.INSTANCE.getStationNameById(item.getToStationId()));
+            return vo;
+        }).toList();
+        return new PageBean<>(voList);
     }
 }

+ 10 - 2
car-wash-service/src/main/java/com/kym/service/impl/StationAccountServiceImpl.java

@@ -6,10 +6,12 @@ import com.kym.common.utils.CommUtil;
 import com.kym.entity.StationAccount;
 import com.kym.entity.common.PageBean;
 import com.kym.entity.queryParams.StationQueryParam;
+import com.kym.entity.vo.StationAccountVo;
 import com.kym.mapper.StationAccountMapper;
 import com.kym.service.StationAccountService;
 import com.kym.service.cache.KymCache;
 import com.kym.service.mybatisplus.MyBaseServiceImpl;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 
 /**
@@ -29,7 +31,7 @@ public class StationAccountServiceImpl extends MyBaseServiceImpl<StationAccountM
     }
 
     @Override
-    public PageBean<StationAccount> listStationAccounts(StationQueryParam params) {
+    public PageBean<StationAccountVo> listStationAccounts(StationQueryParam params) {
         // 判断数据权限
         var adminStationIds = KymCache.INSTANCE.getAdminUserStationIds(StpUtil.getLoginIdAsLong());
         if (CommUtil.isEmptyOrNull(params.getStationId()) && CommUtil.isNotEmptyAndNull(adminStationIds)) {
@@ -44,6 +46,12 @@ public class StationAccountServiceImpl extends MyBaseServiceImpl<StationAccountM
                 .eq(CommUtil.isNotEmptyAndNull(params.getStationId()), StationAccount::getStationId, params.getStationId())
                 .orderByDesc(StationAccount::getId)
                 .list();
-        return new PageBean<>(res);
+        var voList = list().stream().map(item -> {
+            var vo = new StationAccountVo();
+            BeanUtils.copyProperties(item, vo);
+            vo.setStationName(KymCache.INSTANCE.getStationNameById(item.getStationId()));
+            return vo;
+        }).toList();
+        return new PageBean<>(voList);
     }
 }