wjx 1 rok pred
rodič
commit
6fe9ef60f9

+ 1 - 1
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/index.tsx

@@ -233,7 +233,7 @@ const RoleRechargeRanking: React.FC = () => {
         {changeLogVisible && <ChangeLog data={data?.[0]} visible={changeLogVisible} onClose={() => setChangeLogVisible(false)} />}
         {/* 游戏内消息推送 */}
         {msgVisible && <MsgPushModal
-            gameId={selectedRowKeys?.[0].role_reg_game_id}
+            gameId={selectedRowKeys?.[0].role_reg_parent_game_id}
             roleRechargeRankingDTO={queryForm}
             roleIds={selectedRowKeys.map(item => item.role_id)}
             visible={msgVisible}

+ 96 - 5
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/tableConfig.tsx

@@ -600,7 +600,12 @@ export const columnsChangeLog = (update: (data: any) => void, del: (id: number[]
     ]
 };
 
-export const columnsMsgTask = () => {
+/**
+ * 任务列表
+ * @param sendLog 
+ * @returns 
+ */
+export const columnsMsgTask = (sendLog: (data: any) => void) => {
 
     return [
         {
@@ -608,33 +613,38 @@ export const columnsMsgTask = () => {
             dataIndex: 'taskName',
             key: 'taskName',
             width: 100,
-            ellipsis: true
+            ellipsis: true,
+            align: 'center'
         },
         {
             title: '游戏名称',
             dataIndex: 'gameName',
             key: 'gameName',
             width: 90,
-            ellipsis: true
+            ellipsis: true,
+            align: 'center'
         },
         {
             title: '消息内容',
             dataIndex: 'msg',
             key: 'msg',
             width: 120,
-            ellipsis: true
+            ellipsis: true,
+            align: 'center'
         },
         {
             title: '任务人数',
             dataIndex: 'roleIdCount',
             key: 'roleIdCount',
-            width: 60
+            width: 60,
+            align: 'center'
         },
         {
             title: '任务状态',
             dataIndex: 'status',
             key: 'status',
             width: 90,
+            align: 'center',
             render: (a: any) => {
                 return { SUCCESS_SEND: <Badge status="success" text="已发送" />, WAIT_SEND: <Badge status="default" text="待发送" /> }[a]
             }
@@ -644,6 +654,7 @@ export const columnsMsgTask = () => {
             dataIndex: 'createName',
             key: 'createName',
             width: 60,
+            align: 'center',
             ellipsis: true
         },
         {
@@ -659,6 +670,86 @@ export const columnsMsgTask = () => {
             key: 'updateTime',
             width: 145,
             ellipsis: true
+        },
+        {
+            title: '操作',
+            dataIndex: 'cz',
+            key: 'cz',
+            width: 70,
+            fixed: 'right',
+            align: 'center',
+            render: (a: any, b: any) => {
+                return <Space>
+                    <a style={{ fontSize: 12 }} onClick={() => sendLog(b)}>发送记录</a>
+                </Space>
+            }
+        },
+    ]
+}
+
+/**
+ * 发送记录
+ * @param sendLog 
+ * @returns 
+ */
+export const columnsMsgTaskLog = () => {
+
+    return [
+        {
+            title: '角色名称',
+            dataIndex: 'roleName',
+            key: 'roleName',
+            width: 100,
+            ellipsis: true,
+            align: 'center'
+        },
+        {
+            title: '角色VIP',
+            dataIndex: 'roleVip',
+            key: 'roleVip',
+            width: 60,
+            ellipsis: true,
+            align: 'center'
+        },
+        {
+            title: '游戏名称',
+            dataIndex: 'gameName',
+            key: 'gameName',
+            width: 100,
+            ellipsis: true,
+            align: 'center'
+        },
+        {
+            title: '区服名称',
+            dataIndex: 'serverName',
+            key: 'serverName',
+            width: 100,
+            ellipsis: true,
+            align: 'center'
+        },
+        {
+            title: '发送状态',
+            dataIndex: 'sendStatus',
+            key: 'sendStatus',
+            width: 90,
+            align: 'center',
+            render: (a: any) => {
+                return { CP_SEND_ROLE_RESULT_SUCCESS: <Badge status="success" text="发送成功" />, CP_SEND_ROLE_RESULT_FAIL: <Badge status="error" text="发送失败" /> }[a]
+            }
+        },
+        {
+            title: '创角时间',
+            dataIndex: 'roleCreateTime',
+            key: 'roleCreateTime',
+            width: 145,
+            ellipsis: true
+        },
+        {
+            title: '发送时间',
+            dataIndex: 'createTime',
+            key: 'createTime',
+            width: 145,
+            ellipsis: true
         }
     ]
 }

+ 59 - 8
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/taskList.tsx

@@ -1,11 +1,11 @@
 import { useAjax } from "@/Hook/useAjax"
 import Tables from "@/components/Tables"
 import { getGameListNewApi } from "@/services/gameData"
-import { getSendMsgTaskListApi } from "@/services/gameData/roleOperate"
+import { getSendLogListApi, getSendMsgTaskListApi } from "@/services/gameData/roleOperate"
 import { SyncOutlined } from "@ant-design/icons"
 import { Button, Modal, Select, Space, message } from "antd"
 import React, { useEffect, useState } from "react"
-import { columnsMsgTask } from "./tableConfig"
+import { columnsMsgTask, columnsMsgTaskLog } from "./tableConfig"
 
 interface Props {
     sourceSystem?: string
@@ -21,9 +21,14 @@ const TaskList: React.FC<Props> = ({ sourceSystem }) => {
     const [gameList, setGameList] = useState<any[]>([])
     const [gameId, setGameId] = useState<number>()
     const [queryForm, setQueryForm] = useState<{ pageNum: number, pageSize: number }>({ pageNum: 1, pageSize: 20 })
+    const [queryFormLog, setQueryFormLog] = useState<{ pageNum: number, pageSize: number }>({ pageNum: 1, pageSize: 20 })
+    const [taskId, setTaskId] = useState<number>()
+    const [taskName, setTaskName] = useState<string>('')
+    const [visibleLog, setVisibleLog] = useState<boolean>(false)
 
     const getGameListNew = useAjax((params) => getGameListNewApi(params))
     const getSendMsgTaskList = useAjax((params) => getSendMsgTaskListApi(params))
+    const getSendLogList = useAjax((params) => getSendLogListApi(params))
     /****************************/
 
     useEffect(() => {
@@ -32,20 +37,31 @@ const TaskList: React.FC<Props> = ({ sourceSystem }) => {
         }
     }, [queryForm, gameId, visible])
 
+    useEffect(() => {
+        if (taskId && visibleLog) {
+            getSendLogList.run({ ...queryFormLog, taskId })
+        }
+    }, [taskId, visibleLog, queryFormLog])
+
     const open = () => {
         if (sourceSystem) {
             setVisible(true)
             getGameListNew.run({ sourceSystem }).then(res => {
-                const { gameList } = res
-                setGameList(gameList?.map((item: { id: any; game_name: any }) => ({ id: item.id, name: item.game_name })) || [])
-                setGameId(gameList?.[0]?.id)
+                const { parentGameList } = res
+                setGameList(parentGameList?.map((item: { parent_game_id: any; parent_game_name: any }) => ({ id: item.parent_game_id, name: item.parent_game_name })) || [])
+                setGameId(parentGameList?.[0]?.parent_game_id)
             })
         } else {
             message.error('请选择数据源')
         }
     }
 
-
+    /** 发送记录按钮 */
+    const sendLog = (data: any) => {
+        setTaskName(data.taskName)
+        setTaskId(data.id)
+        setVisibleLog(true)
+    }
 
     return <>
         <Button type="primary" size="small" onClick={open}>消息推送任务列表</Button>
@@ -71,13 +87,13 @@ const TaskList: React.FC<Props> = ({ sourceSystem }) => {
             visible={visible}
             onCancel={() => setVisible(false)}
             footer={null}
-            width={1000}
+            width={900}
         >
             <Tables
                 bordered
                 current={queryForm.pageNum}
                 pageSize={queryForm.pageSize}
-                columns={columnsMsgTask()}
+                columns={columnsMsgTask(sendLog)}
                 dataSource={getSendMsgTaskList?.data?.records}
                 scroll={{ x: 1000, y: 600 }}
                 onChange={(pagination: any, filters: any, sortData: any) => {
@@ -93,6 +109,41 @@ const TaskList: React.FC<Props> = ({ sourceSystem }) => {
                 defaultPageSize={20}
             />
         </Modal>
+
+        {visibleLog && <Modal
+            title={<Space>
+                <strong>{taskName} 发送记录</strong>
+                <Button type="link" icon={<SyncOutlined />} onClick={() => getSendLogList.refresh()} loading={getSendLogList.loading} />
+            </Space>}
+            visible={visibleLog}
+            onCancel={() => {
+                setVisibleLog(false)
+                setTaskId(undefined)
+                setTaskName('')
+            }}
+            footer={null}
+            width={1000}
+        >
+            <Tables
+                bordered
+                current={queryFormLog.pageNum}
+                pageSize={queryFormLog.pageSize}
+                columns={columnsMsgTaskLog()}
+                dataSource={getSendLogList?.data?.records}
+                scroll={{ x: 1000, y: 600 }}
+                onChange={(pagination: any) => {
+                    let { current, pageSize } = pagination
+                    let newQueryForm = JSON.parse(JSON.stringify(queryFormLog))
+                    newQueryForm.pageNum = current
+                    newQueryForm.pageSize = pageSize
+                    setQueryFormLog({ ...newQueryForm })
+                }}
+                size="small"
+                total={getSendLogList?.data?.total}
+                loading={getSendLogList?.loading}
+                defaultPageSize={20}
+            />
+        </Modal>}
     </>
 }
 

+ 12 - 0
src/services/gameData/roleOperate.ts

@@ -263,6 +263,18 @@ export async function getSendMsgTaskListApi(data: { gameId: number, pageNum: num
     });
 }
 
+/**
+ * 发送记录
+ * @param data 
+ * @returns 
+ */
+export async function getSendLogListApi(data: { taskId: number, pageNum: number, pageSize: number }) {
+    return request(wapi + '/role/sendMsgTask/resultList', {
+        method: 'POST',
+        data
+    });
+}
+
 let apiManage = api + '/manage'
 
 export interface GameServerListProps {