wjx 3 months ago
parent
commit
c134ec159c

+ 23 - 1
src/components/QueryForm/index.tsx

@@ -268,6 +268,14 @@ interface Props {
     isRegisterType?: boolean
     isRegisterType?: boolean
     /** 是否开启 创意状态 搜索 */
     /** 是否开启 创意状态 搜索 */
     isConfiguredStatus?: boolean
     isConfiguredStatus?: boolean
+    /** 注册城市 */
+    isIpCity?: boolean
+    /** 注册归属地 */
+    isIpProv?: boolean
+    /** 最新登录城市 */
+    isLoginIpCity?: boolean
+    /** 最新登录归属地 */
+    isLoginIpProv?: boolean
 }
 }
 /**
 /**
  * 游戏数据系统 请求参数
  * 游戏数据系统 请求参数
@@ -282,7 +290,7 @@ const QueryForm: React.FC<Props> = (props) => {
         isSysUserName, isRechargeDate, LastRechargeDay, isBGGameClassify, isGameUserId, isSysUserId, isSysUserIds, isUserName, isUserId, isSelectRanking, isGameType, isConsumeDay, rechargeDay, isBeginDay, isType, isAdTTStatus, isUserEnterType, isServerName, isServerId, isServerDay, isAdTXStatus,
         isSysUserName, isRechargeDate, LastRechargeDay, isBGGameClassify, isGameUserId, isSysUserId, isSysUserIds, isUserName, isUserId, isSelectRanking, isGameType, isConsumeDay, rechargeDay, isBeginDay, isType, isAdTTStatus, isUserEnterType, isServerName, isServerId, isServerDay, isAdTXStatus,
         payTimeDay, placeAnOrderDay, isPayIntervalTime, isActiveTypes, isNickname, isMobile, isRegIp, isIsAuth, isIsBindMobile, isIsRecharge, isUserStatus, isCreateRole, isRoleCount, isVipLevel, isRoleLevel, isCreateRoleDay, isLastActiveTime, isIsChange, isIsSendMail, isWeChatCompany, isWeChat,
         payTimeDay, placeAnOrderDay, isPayIntervalTime, isActiveTypes, isNickname, isMobile, isRegIp, isIsAuth, isIsBindMobile, isIsRecharge, isUserStatus, isCreateRole, isRoleCount, isVipLevel, isRoleLevel, isCreateRoleDay, isLastActiveTime, isIsChange, isIsSendMail, isWeChatCompany, isWeChat,
         isCustomerServerId, isOperatorId, isGsId, isServerIds, isRankingNum, isIsMergeServer, isIsParticipateMerge, isSuperParentGameId, isGameServerName, isIp, isDeviceType, isLoginType, isServerIdUn, isSourceServerName, isProjectId1, isDynamicCreativeId, isRemoveGame, isRemoveGameForSystem, isOrderLy, isAddCorpWechat,
         isCustomerServerId, isOperatorId, isGsId, isServerIds, isRankingNum, isIsMergeServer, isIsParticipateMerge, isSuperParentGameId, isGameServerName, isIp, isDeviceType, isLoginType, isServerIdUn, isSourceServerName, isProjectId1, isDynamicCreativeId, isRemoveGame, isRemoveGameForSystem, isOrderLy, isAddCorpWechat,
-        isWakeUp, isUserPhoneStatus, isBackStatus, isGameDimension, isUserLastRegTime, isUserLastRegAgentId, isUserLastPitcherId, isRechargeAmountWithin24h, isRechargeTotalAmountWithin24h, isRegisterType, isConfiguredStatus
+        isWakeUp, isUserPhoneStatus, isBackStatus, isGameDimension, isUserLastRegTime, isUserLastRegAgentId, isUserLastPitcherId, isRechargeAmountWithin24h, isRechargeTotalAmountWithin24h, isRegisterType, isConfiguredStatus, isIpCity, isIpProv, isLoginIpCity, isLoginIpProv
     } = props
     } = props
     const [form] = Form.useForm()
     const [form] = Form.useForm()
     const parentId = Form.useWatch('parentId', form)
     const parentId = Form.useWatch('parentId', form)
@@ -1773,6 +1781,20 @@ const QueryForm: React.FC<Props> = (props) => {
                 </Space>
                 </Space>
             </Form.Item></Col>}
             </Form.Item></Col>}
 
 
+            {/* isIpCity, isIpProv, isLoginIpCity, isLoginIpProv */}
+            {isIpCity && <Col><Form.Item name='ipCity'>
+                <Input placeholder="注册城市" allowClear style={{ width: 140 }} />
+            </Form.Item></Col>}
+            {isIpProv && <Col><Form.Item name='ipProv'>
+                <Input placeholder="注册归属地" allowClear style={{ width: 140 }} />
+            </Form.Item></Col>}
+            {isLoginIpCity && <Col><Form.Item name='loginIpCity'>
+                <Input placeholder="最新登录城市" allowClear style={{ width: 140 }} />
+            </Form.Item></Col>}
+            {isLoginIpProv && <Col><Form.Item name='loginIpProv'>
+                <Input placeholder="最新登录归属地" allowClear style={{ width: 140 }} />
+            </Form.Item></Col>}
+
             <Col>
             <Col>
                 <Space>
                 <Space>
                     <Button type="primary" htmlType="submit">搜索</Button>
                     <Button type="primary" htmlType="submit">搜索</Button>

+ 4 - 0
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/index.tsx

@@ -179,6 +179,10 @@ const RoleRechargeRanking: React.FC = () => {
                 isRegisterType
                 isRegisterType
                 isRegDay={{}}
                 isRegDay={{}}
                 isRoleLevel
                 isRoleLevel
+                isIpCity
+                isIpProv
+                isLoginIpCity
+                isLoginIpProv
             />}
             />}
             scroll={{ x: 1000, y: 600 }}
             scroll={{ x: 1000, y: 600 }}
             ajax={getRoleRechargeRankingList}
             ajax={getRoleRechargeRankingList}

+ 4 - 0
src/pages/gameDataStatistics/roleOperate/roleRechargeRanking/tableConfig.tsx

@@ -44,6 +44,10 @@ function columns12(
                 { title: '玩家注册渠道ID', dataIndex: 'agent_id', label: '玩家信息', align: 'center', width: 80 },
                 { title: '玩家注册渠道ID', dataIndex: 'agent_id', label: '玩家信息', align: 'center', width: 80 },
                 { title: '玩家注册时间', dataIndex: 'user_create_time', label: '玩家信息', align: 'center', width: 140, default: 6, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '玩家注册时间', dataIndex: 'user_create_time', label: '玩家信息', align: 'center', width: 140, default: 6, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '玩家注册游戏', dataIndex: 'user_reg_game_name', label: '玩家信息', align: 'center', width: 70, default: 7, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '玩家注册游戏', dataIndex: 'user_reg_game_name', label: '玩家信息', align: 'center', width: 70, default: 7, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
+                { title: '注册城市', dataIndex: 'ip_city', label: '玩家信息', align: 'center', width: 70, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
+                { title: '注册归属地', dataIndex: 'ip_prov', label: '玩家信息', align: 'center', width: 85, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
+                { title: '最新登录城市', dataIndex: 'login_ip_city', label: '玩家信息', align: 'center', width: 85, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
+                { title: '最新登录归属地', dataIndex: 'login_ip_prov', label: '玩家信息', align: 'center', width: 85, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '玩家操作系统', dataIndex: 'os', label: '玩家信息', align: 'center', width: 70, default: 8, render: (a: string) => (<WidthEllipsis value={a} />) },
                 { title: '玩家操作系统', dataIndex: 'os', label: '玩家信息', align: 'center', width: 70, default: 8, render: (a: string) => (<WidthEllipsis value={a} />) },
                 // { title: '玩家等级标签', dataIndex: '13', label: '玩家信息', align: 'center', width: 70, default: 14 },
                 // { title: '玩家等级标签', dataIndex: '13', label: '玩家信息', align: 'center', width: 70, default: 14 },
                 { title: '玩家最近充值游戏', dataIndex: 'user_last_recharge_game_name', label: '玩家信息', align: 'center', width: 70, default: 15, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },
                 { title: '玩家最近充值游戏', dataIndex: 'user_last_recharge_game_name', label: '玩家信息', align: 'center', width: 70, default: 15, render: (a: string, b: any) => (<WidthEllipsis value={a} />) },

+ 2 - 1
src/pages/gameDataStatistics/roleOperate/strategy/index.tsx

@@ -13,7 +13,8 @@ export const strategyType = [
     { label: '追踪玩家', value: 1, tips: '单笔充值金额大于XX,并且注册时间在XX小时内的玩家' },
     { label: '追踪玩家', value: 1, tips: '单笔充值金额大于XX,并且注册时间在XX小时内的玩家' },
     { label: '玩家流失', value: 2, tips: '累计充值金额大于XX,并且最近游戏距今时间超过XX小时的玩家' },
     { label: '玩家流失', value: 2, tips: '累计充值金额大于XX,并且最近游戏距今时间超过XX小时的玩家' },
     { label: '新用户追踪', value: 3, tips: '新用户注册创角首日充值大于XX的用户' },
     { label: '新用户追踪', value: 3, tips: '新用户注册创角首日充值大于XX的用户' },
-    { label: '累充追踪', value: 4, tips: '' }
+    { label: '累充追踪', value: 4, tips: '' },
+    { label: '新增角色追踪', value: 5, tips: '新创建的角色在创角至今【XX】小时内,首次充值(角色首充,单笔充值)【XX】金额,触发报警一次' }
 ]
 ]
 /**
 /**
  * 游戏策略配置
  * 游戏策略配置

+ 8 - 5
src/pages/gameDataStatistics/roleOperate/strategy/strategyModal.tsx

@@ -57,17 +57,20 @@ const StrategyModal: React.FC<Props> = ({ superGameList, initialValues, visible,
             switch (type) {
             switch (type) {
                 case 1:
                 case 1:
                     // 单笔充值金额大于等于XX,并且注册时间在XX小时内的玩家
                     // 单笔充值金额大于等于XX,并且注册时间在XX小时内的玩家
-                    timeTips = time ? `注册时间${conditionEnum[timeCondition]}${time}小时的玩家` : ''
-                    amountTips = amount ? `单笔充值金额${conditionEnum[amountCondition]}${amount}元` : ''
+                    timeTips = time ? `注册时间${conditionEnum[timeCondition as keyof typeof conditionEnum]}${time}小时的玩家` : ''
+                    amountTips = amount ? `单笔充值金额${conditionEnum[amountCondition as keyof typeof conditionEnum]}${amount}元` : ''
                     break
                     break
                 case 2:
                 case 2:
                     // 累计充值金额大于等于XX,并且最近游戏距今时间超过XX小时的玩家
                     // 累计充值金额大于等于XX,并且最近游戏距今时间超过XX小时的玩家
-                    amountTips = amount ? `累计充值金额${conditionEnum[amountCondition]}${amount}元` : ''
-                    timeTips = time ? `最近游戏距今时间${conditionEnum[timeCondition]}${time}小时的玩家` : ''
+                    amountTips = amount ? `累计充值金额${conditionEnum[amountCondition as keyof typeof conditionEnum]}${amount}元` : ''
+                    timeTips = time ? `最近游戏距今时间${conditionEnum[timeCondition as keyof typeof conditionEnum]}${time}小时的玩家` : ''
                     break
                     break
                 case 3:
                 case 3:
                     // '新用户注册创角首日充值大于等于XX的用户'
                     // '新用户注册创角首日充值大于等于XX的用户'
-                    amountTips = amount ? `新用户注册创角首日充值${conditionEnum[amountCondition]}${amount}元的用户` : ''
+                    amountTips = amount ? `新用户注册创角首日充值${conditionEnum[amountCondition as keyof typeof conditionEnum]}${amount}元的用户` : ''
+                    break
+                case 5:
+                    amountTips = amount ? `新创建的角色在创角至今${conditionEnum[timeCondition as keyof typeof conditionEnum]}${time}小时内,首次充值(角色首充,单笔充值)${conditionEnum[amountCondition as keyof typeof conditionEnum]}${amount}金额,触发报警一次` : ''
                     break
                     break
             }
             }
             let helpTips = ''
             let helpTips = ''