diff --git a/package.json b/package.json index 9ab46cb..07630bb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "4.5.68", + "version": "4.5.71", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { diff --git a/src/models/user.ts b/src/models/user.ts index 70d6238..0d9d019 100644 --- a/src/models/user.ts +++ b/src/models/user.ts @@ -97,7 +97,7 @@ const UserModel: UserModelType = { BEHAVIORRECORD_ROUTNAME: payload?.BEHAVIORRECORD_ROUT === '/' ? '首页' : payload?.BEHAVIORRECORD_ROUTNAME, USER_LOGINIP: basicInfo?.ip ? basicInfo?.ip : '', BEHAVIORRECORD_TYPE: 1000, - USER_LOGINPLACE: `${basicInfo?.prov ? basicInfo?.prov : ''}${basicInfo?.prov && basicInfo?.city ? '-' : ''}${basicInfo?.city ? basicInfo?.city : ''}`, + USER_LOGINPLACE: `${basicInfo?.prov ? basicInfo?.prov : ''}${basicInfo?.prov && basicInfo?.city ? '-' : ''}${basicInfo?.city ? basicInfo?.city : ''}${basicInfo?.prov && basicInfo?.city && basicInfo?.district ? '-' : ''}${basicInfo?.district ? basicInfo?.district : ''}`, // BrowserVersion: browser || '', // OperatingSystem: systemInfo || '', diff --git a/src/pages/Setting/Roles/index.tsx b/src/pages/Setting/Roles/index.tsx index 9aae76b..2e7576a 100644 --- a/src/pages/Setting/Roles/index.tsx +++ b/src/pages/Setting/Roles/index.tsx @@ -431,7 +431,7 @@ const RoleList: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => BEHAVIORRECORD_TIME: moment().format('YYYY-MM-DD HH:mm:ss'), SOURCE_PLATFORM: '驿商云平台', USER_LOGINIP: baseInfo?.ip ? baseInfo?.ip : '', - USER_LOGINPLACE: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}`, + USER_LOGINPLACE: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}${baseInfo?.prov && baseInfo?.city && baseInfo?.district ? '-' : ''}${baseInfo?.district ? baseInfo?.district : ''}`, BROWSER_VERSION: browser || '', OPERATING_SYSTEM: systemInfo || '', }) diff --git a/src/pages/Setting/Users/components/edit.tsx b/src/pages/Setting/Users/components/edit.tsx index 0dbcfc0..edccb93 100644 --- a/src/pages/Setting/Users/components/edit.tsx +++ b/src/pages/Setting/Users/components/edit.tsx @@ -285,7 +285,7 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, BEHAVIORRECORD_ROUTNAME: pageType ? '商户管理' : '账号管理', SOURCE_PLATFORM: '驿商云平台', USER_LOGINIP: baseInfo?.ip ? baseInfo?.ip : '', - USER_LOGINPLACE: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}`, + USER_LOGINPLACE: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}${baseInfo?.prov && baseInfo?.city && baseInfo?.district ? '-' : ''}${baseInfo?.district ? baseInfo?.district : ''}`, BROWSER_VERSION: browser || '', OPERATING_SYSTEM: systemInfo || '', } diff --git a/src/pages/User/login/index.tsx b/src/pages/User/login/index.tsx index 58dccbb..6ad64b0 100644 --- a/src/pages/User/login/index.tsx +++ b/src/pages/User/login/index.tsx @@ -24,6 +24,7 @@ import styles from './index.less'; import { line } from '@antv/g2plot'; import session from '@/utils/session'; import { getLocationByIP, getUserIP } from '@/utils/format'; +import { handleGetIPDetail } from './service'; // 可接受的页面参数 export type LoginProps = { @@ -123,34 +124,40 @@ const Login: React.FC = (props) => { let IpInfo: any = await getUserIP() console.log('IpInfoIpInfoIpInfoIpInfo', IpInfo); // 用ip 去获取信息 - let ipDetail: any = await getLocationByIP(IpInfo, 'XrQQuNQRGxap9YH2xmvx3dzuJVkXhTzT') - console.log('ipDetailipDetailipDetail', ipDetail); - const ipRes: any = { - country: ipDetail.country, - prov: ipDetail.province, - city: ipDetail.city, - district: ipDetail.district, - ip: IpInfo, - } - session.set('basicInfo', ipRes); - setBaseInfo(ipRes) - // // 可以一条龙拿到的 - // fetch('https://qifu-api.baidubce.com/ip/local/geo/v1/district').then(response => response.text()).then(data => { - // const obj: any = JSON.parse(data).data - // const res = { - // ...obj, - // ip: JSON.parse(data).ip - // } - // session.set('basicInfo', res); - // setBaseInfo(res) - // }); - const browserVersion = getBrowserVersion(); - session.set('browserVersion', browserVersion); - setBrowser(browserVersion) - const systemBasin = getOsInfo() - session.set('systemBasin', systemBasin); - setSystemInfo(systemBasin) + // let ipDetail: any = await getLocationByIP(IpInfo, 'XrQQuNQRGxap9YH2xmvx3dzuJVkXhTzT') + let ipDetail: any = await handleGetIPDetail({ ip: IpInfo }) + + console.log('ipDetailipDetailipDetail', ipDetail); + if (ipDetail) { + const ipRes: any = { + country: ipDetail.country, + prov: ipDetail.province, + city: ipDetail.city, + district: ipDetail.district, + ip: IpInfo, + } + session.set('basicInfo', ipRes); + setBaseInfo(ipRes) + // // 可以一条龙拿到的 + // fetch('https://qifu-api.baidubce.com/ip/local/geo/v1/district').then(response => response.text()).then(data => { + // const obj: any = JSON.parse(data).data + // const res = { + // ...obj, + // ip: JSON.parse(data).ip + // } + // session.set('basicInfo', res); + // setBaseInfo(res) + // }); + + const browserVersion = getBrowserVersion(); + session.set('browserVersion', browserVersion); + setBrowser(browserVersion) + const systemBasin = getOsInfo() + session.set('systemBasin', systemBasin); + setSystemInfo(systemBasin) + } + }, []) function successCallback(position: { coords: { latitude: any; longitude: any; }; }) { @@ -292,7 +299,7 @@ const Login: React.FC = (props) => { handleSubmit({ ...values, LoginIP: baseInfo?.ip ? baseInfo?.ip : '', - LoginPlace: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}`, + LoginPlace: `${baseInfo?.prov ? baseInfo?.prov : ''}${baseInfo?.prov && baseInfo?.city ? '-' : ''}${baseInfo?.city ? baseInfo?.city : ''}${baseInfo?.prov && baseInfo?.city && baseInfo?.district ? '-' : ''}${baseInfo?.district ? baseInfo?.district : ''}`, BrowserVersion: browser || '', OperatingSystem: systemInfo || '', }); diff --git a/src/pages/User/login/service.ts b/src/pages/User/login/service.ts new file mode 100644 index 0000000..5effbd8 --- /dev/null +++ b/src/pages/User/login/service.ts @@ -0,0 +1,16 @@ + +import request from '@/utils/requestNewJava' + +export async function handleGetIPDetail(params: any) { + + const data = await request(`/location/ip`, { + method: 'GET', + params + }) + + if (data.Result_Code === 500) { + return [] + } + + return data.content.address_detail +} \ No newline at end of file diff --git a/src/pages/contract/components/editor.tsx b/src/pages/contract/components/editor.tsx index 38d72f9..4123910 100644 --- a/src/pages/contract/components/editor.tsx +++ b/src/pages/contract/components/editor.tsx @@ -1188,7 +1188,14 @@ const EditContract = ({ contractId: id, actionRef, setShowDetail, showDelete, cu return options; }} - tooltip={'1111'} + tooltip={
+
营收回款:商家自收资金,结算周期内向业主打款
+
资金返款:业主统一代收,结算时扣除费用后向商家返款
+
营收分润:单一业态经营,用户支付后系统自动按比例分账
+
组合分润:多业态组合经营,用户支付后系统自动按比例分账
+
阶段提成:营业额达标后,整单金额均按达标后的高比例计算
+
分段提成:营业额按区间拆分,分段独立计算提成后累加
+
} /> diff --git a/src/utils/format.ts b/src/utils/format.ts index 671d643..61bf52f 100644 --- a/src/utils/format.ts +++ b/src/utils/format.ts @@ -667,7 +667,7 @@ export const handleSetPublicLog = (obj: any) => { BUSINESSMAN_NAME: currentUser.BusinessManName, SOURCE_PLATFORM: '驿商云平台', USER_LOGINIP: basicInfo.ip, - USER_LOGINPLACE: `${basicInfo.country || ""}${basicInfo.prov || ""}${basicInfo.city || ""}${basicInfo.district || ""}`, + USER_LOGINPLACE: `${basicInfo?.prov ? basicInfo?.prov : ''}${basicInfo?.prov && basicInfo?.city ? '-' : ''}${basicInfo?.city ? basicInfo?.city : ''}${basicInfo?.prov && basicInfo?.city && basicInfo?.district ? '-' : ''}${basicInfo?.district ? basicInfo?.district : ''}`, BROWSER_VERSION: browserVersion, OPERATING_SYSTEM: systemBasin } @@ -725,7 +725,7 @@ export const handleSetlogSave = async (str?: string) => { BUSINESSMAN_NAME: currentUser?.BUSINESSMAN_NAME, SOURCE_PLATFORM: "出行平台", USER_LOGINIP: basicInfo?.ip, - USER_LOGINPLACE: `${basicInfo?.prov}${basicInfo?.city}${basicInfo?.district}`, + USER_LOGINPLACE: `${basicInfo?.prov ? basicInfo?.prov : ''}${basicInfo?.prov && basicInfo?.city ? '-' : ''}${basicInfo?.city ? basicInfo?.city : ''}${basicInfo?.prov && basicInfo?.city && basicInfo?.district ? '-' : ''}${basicInfo?.district ? basicInfo?.district : ''}`, BROWSER_VERSION: browserVersion, OPERATING_SYSTEM: systemBasin }) diff --git a/src/utils/requestNewJava.ts b/src/utils/requestNewJava.ts new file mode 100644 index 0000000..f92663d --- /dev/null +++ b/src/utils/requestNewJava.ts @@ -0,0 +1,214 @@ +/** Request 网络请求工具 更详细的 api 文档: https://github.com/umijs/umi-request */ +import { extend } from 'umi-request'; + +import { notification } from 'antd'; + +import Cookies from 'js-cookie'; +import moment from 'moment'; +import session from './session'; +import type { CurrentUser } from '@/models/user'; +import { SynchroBEHAVIORRECORD } from '@/services/user'; + +const codeMessage: Record = { + 200: '服务器成功返回请求的数据。', + 201: '新建或修改数据成功。', + 202: '一个请求已经进入后台排队(异步任务)。', + 204: '删除数据成功。', + 400: '发出的请求有错误,服务器没有进行新建或修改数据的操作。', + 401: '用户没有权限(令牌、用户名、密码错误)。', + 403: '用户得到授权,但是访问是被禁止的。', + 404: '发出的请求针对的是不存在的记录,服务器没有进行操作。', + 406: '请求的格式不可得。', + 410: '请求的资源被永久删除,且不会再得到的。', + 422: '当创建一个对象时,发生一个验证错误。', + 500: '服务器发生错误,请检查服务器。', + 502: '网关错误。', + 503: '服务不可用,服务器暂时过载或维护。', + 504: '网关超时。', +}; + +/** + * @zh-CN 异常处理程序 + * @en-US Exception handler + */ +const errorHandler = (error: { response: Response }): Response => { + const { response } = error; + + + if (response && response.status) { + const errorText = codeMessage[response.status] || response.statusText; + const { status, url } = response; + + notification.error({ + message: `请求错误 ${status}: ${url}`, + description: errorText, + }); + } else if (!response) { + notification.error({ + description: '您的网络异常,无法连接到服务器.', + message: '网络异常', + }); + } + return response; +}; +/** + * @en-US Configure the default parameters for request + * @zh-CN 配置request请求时的默认参数 + */ +const request = extend({ + errorHandler, // default error handling + // prefix: '/EShangApiMain',// 开发 + prefix: 'https://java.es.eshangtech.com:443', // 正式 + // prefix: 'http://111.229.213.193:18071', // 正式 + headers: { + token: '', + ProvinceCode: '', + ServerpartCodes: '', + // tmp: (new Date()).getTime() + } + + // credentials: 'include', // Does the default request bring cookies + +}); + +// 存一下进来调用的值 +// let userbeHaviObj: any = {} + +// request拦截器, 改变url 或 options. +request.interceptors.request.use((url, opt: any) => { + const options = { ...opt } + const currentUser: CurrentUser = session.get('currentUser'); + // let userbeHaviObj = { + // url: url, + // options: options, + // currentUser: currentUser, + // startTime: new Date().getTime() + // } + // options.userbeHaviObj = userbeHaviObj + + if (currentUser) { + if (options.headers) { + if (url.indexOf('SynchroSERVERPART') > -1) { + options.headers = { + ...options.headers, + PROVINCE_CODE: opt?.data?.PROVINCE_CODE, + ProvinceCode: opt?.data?.PROVINCE_CODE, + provincecode: opt?.data?.PROVINCE_CODE, + token: currentUser.UserToken || '', + ServerpartCodes: currentUser.CityAuthority || '', + ServerpartShopIds: currentUser.ServerpartShopIds || '', + UserPattern: currentUser?.UserPattern || '', + + } + } else { + options.headers = { + ...options.headers, + token: currentUser.UserToken || '', + ProvinceCode: opt?.data?.noProvinceCode ? '' : (currentUser.ProvinceCode || ''), + ServerpartCodes: currentUser.CityAuthority || '', + ServerpartShopIds: currentUser.ServerpartShopIds || '', + UserPattern: currentUser?.UserPattern || '', + } + } + } + + + if (url.indexOf('SynchroSERVERPART') > -1) { + options.data = { + ...options.data, + STAFF_ID: currentUser.ID, + STAFF_NAME: currentUser.Name, + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + PROVINCE_CODE: opt?.data?.PROVINCE_CODE, + } + } else { + if ((url.indexOf('Synchro') > -1 || url.indexOf('Save') > -1) && + url.indexOf('Picture/SaveImgFile') === -1) { + + // 添加操作人和业主单位信息 + options.data = { + ...options.data, + STAFF_ID: currentUser.ID, + STAFF_NAME: currentUser.Name, + OWNERUNIT_ID: options.data.OWNERUNIT_ID || currentUser.OwnerUnitId, + OWNERUNIT_NAME: options.data.OWNERUNIT_NAME || currentUser.ProvinceUnit, + PROVINCE_CODE: (options.data.PROVINCE_CODE || currentUser.ProvinceCode), + + OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss') + } + if (currentUser?.UserPattern === 2000) { + options.data = { + ...options.data, + PROVINCE_CODE: (options.data.PROVINCE_CODE || currentUser.ProvinceCode), + BUSINESSMAN_ID: currentUser.BusinessManID, + } + } + } + } + + + } + + return { + // url: url.indexOf('handler_ajax.ashx')>-1 ?`https://user.eshangtech.com${url}`: `http://47.96.233.105/EShangApiMain${url}`, + url,// .indexOf('handler_ajax.ashx')>-1 ?`${url}`: `/EShangApiMain${url}`, + options, + } +}) +request.interceptors.response.use((response, option) => { + const nowTmp = moment() + Cookies.set('tmp', nowTmp.format()) + + // // 加个数组 如果请求地址是数组里面的 那就不调用 记录用户行为了 + // let specialList = ['/FrameWork/GetFieldEnumByField', "/FrameWork/GetUserModuleList", "/FrameWork/GetFieldEnumTree", '/Logging/GetPassportInfoByToken', '/Logging/UserLogin', 'Dictionary/GetFieEnumList', '/Platform/SynchroBehaviorrecord'] + // // 判断一下 现在的这次请求 是不是特殊 不需要进行记录的 + // let isOk: boolean = true + + // let userbeHaviObj = option?.userbeHaviObj || {} + + // specialList.forEach((item: any) => { + // if (userbeHaviObj.url.indexOf(item) !== -1) { + // isOk = false + // } + // }) + + // if (isOk) { + // let nowMenu = session.get("currentMenu") + // let endTime = new Date().getTime() + // let basicInfo = session.get("basicInfo") + // let systemBasin = session.get("systemBasin") + // let browserVersion = session.get("browserVersion") + + // const req: any = { + // USER_ID: userbeHaviObj.currentUser.ID, + // USER_NAME: userbeHaviObj.currentUser.Name, + // BEHAVIORRECORD_TYPE: "2000", // 1000 浏览页面 2000 行为记录 + // BEHAVIORRECORD_EXPLAIN: `在页面${nowMenu.name}调用接口${userbeHaviObj.url.split('https://api.eshangtech.com')[1]}`, + // BEHAVIORRECORD_TIME: moment(new Date(userbeHaviObj.startTime)).format('YYYY-MM-DD HH:mm:ss'), + // BEHAVIORRECORD_ROUT: nowMenu.pathname, + // BEHAVIORRECORD_ROUTNAME: nowMenu.name, + // BEHAVIORRECORD_LEAVETIME: moment(new Date(endTime)).format('YYYY-MM-DD HH:mm:ss'), + // BEHAVIORRECORD_DURATION: (endTime - userbeHaviObj.startTime) / 1000, + // OWNERUNIT_ID: userbeHaviObj.currentUser.OwnerUnitId, + // OWNERUNIT_NAME: userbeHaviObj.currentUser.OwnerUnitName, + // BUSINESSMAN_ID: userbeHaviObj.currentUser.BusinessManID, + // BUSINESSMAN_NAME: userbeHaviObj.currentUser.BusinessManName, + // SOURCE_PLATFORM: '驿商云平台', + // BEHAVIORRECORD_DESC: JSON.stringify(userbeHaviObj.options.params) === '{}' ? userbeHaviObj.url.split('?')[1] : JSON.stringify(userbeHaviObj.options.params), // 入参 + // USER_LOGINIP: basicInfo.ip, + // USER_LOGINPLACE: `${basicInfo.country}${basicInfo.prov}${basicInfo.city}${basicInfo.district}`, + // BROWSER_VERSION: browserVersion, + // OPERATING_SYSTEM: systemBasin + // } + // console.log('reqreqreqreqreq', req); + // // fetch('https://api.eshangtech.com/EShangApiMain/Platform/SynchroBEHAVIORRECORD', { + // // method: 'POST', + // // headers: { + // // 'Content-Type': 'application/json', + // // }, + // // body: JSON.stringify(req), + // // }) + // } + return response +}) +export default request; diff --git a/src/versionEnv.ts b/src/versionEnv.ts index 3dc7990..7b7742b 100644 --- a/src/versionEnv.ts +++ b/src/versionEnv.ts @@ -1,4 +1,4 @@ // 由 scripts/writeVersion.js 自动生成 -export const VERSION = "4.5.68"; -export const GIT_HASH = "d83d384"; -export const BUILD_TIME = "2025-11-21T09:29:07.216Z"; +export const VERSION = "4.5.71"; +export const GIT_HASH = "51b2e91"; +export const BUILD_TIME = "2025-11-26T02:50:02.357Z";