admin.js 46 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301
  1. import request from '@/utils/request'
  2. // 用户管理
  3. export function getUserList(params) {
  4. return request({
  5. url: '/api/admin/users',
  6. method: 'post',
  7. data: params
  8. })
  9. }
  10. export function getUserDetail(id) {
  11. return request({
  12. url: `/api/admin/users/${id}`,
  13. method: 'post'
  14. })
  15. }
  16. export function updateUser(id, data) {
  17. return request({
  18. url: `/api/admin/users/${id}/update`,
  19. method: 'post',
  20. data
  21. })
  22. }
  23. export function deleteUser(id) {
  24. return request({
  25. url: `/api/admin/users/${id}/delete`,
  26. method: 'post'
  27. })
  28. }
  29. export function resetUserPassword(id, password) {
  30. return request({
  31. url: `/api/admin/users/${id}/reset-password`,
  32. method: 'post',
  33. data: { password }
  34. })
  35. }
  36. // ========== 商品配送与履约 API ==========
  37. export function vendorConfirmOrder(orderNo) {
  38. return request({
  39. url: '/api/product/order/vendor-confirm',
  40. method: 'post',
  41. data: { orderNo }
  42. })
  43. }
  44. // ===== 线上服务配置(批量接口,路由 /api/product/delivery-config/*)=====
  45. export function listDeliveryServicePersons(productId) {
  46. return request({
  47. url: '/api/product/delivery-config/service-person/list',
  48. method: 'post',
  49. data: { productId }
  50. })
  51. }
  52. export function saveDeliveryServicePersons(productId, persons) {
  53. return request({
  54. url: '/api/product/delivery-config/service-person/save',
  55. method: 'post',
  56. data: { productId, persons }
  57. })
  58. }
  59. export function listDeliveryOnlineSlots(productId) {
  60. return request({
  61. url: '/api/product/delivery-config/online-slot/list',
  62. method: 'post',
  63. data: { productId }
  64. })
  65. }
  66. export function saveDeliveryOnlineSlots(productId, slots) {
  67. return request({
  68. url: '/api/product/delivery-config/online-slot/save',
  69. method: 'post',
  70. data: { productId, slots }
  71. })
  72. }
  73. // 家庭管理
  74. export function getFamilyList(params) {
  75. return request({
  76. url: '/api/admin/families',
  77. method: 'post',
  78. data: params
  79. })
  80. }
  81. export function getFamilyDetail(id) {
  82. return request({
  83. url: `/api/admin/families/${id}`,
  84. method: 'post'
  85. })
  86. }
  87. export function updateFamily(id, data) {
  88. return request({
  89. url: `/api/admin/families/${id}/update`,
  90. method: 'post',
  91. data
  92. })
  93. }
  94. export function deleteFamily(id) {
  95. return request({
  96. url: `/api/admin/families/${id}/delete`,
  97. method: 'post'
  98. })
  99. }
  100. export function getFamilyMembers(id) {
  101. return request({
  102. url: `/api/admin/families/${id}/members`,
  103. method: 'post'
  104. })
  105. }
  106. export function getFamilyOverview(id) {
  107. return request({ url: `/api/admin/families/${id}/overview`, method: 'post' })
  108. }
  109. export function getFamilyTasks(id, params) {
  110. return request({ url: `/api/admin/families/${id}/tasks`, method: 'post', data: params })
  111. }
  112. export function setMemberAdminRole(familyId, memberId, isAdmin) {
  113. return request({
  114. url: `/api/admin/families/${familyId}/members/set-admin`,
  115. method: 'post',
  116. data: { memberId, isAdmin }
  117. })
  118. }
  119. // 家庭数据汇总方式配置(五维家庭汇总:合计 / 平均 / 汇集)
  120. export function getFamilyMetricAggList() {
  121. return request({
  122. url: '/api/admin/family-metric-agg/list',
  123. method: 'post'
  124. })
  125. }
  126. export function saveFamilyMetricAgg(data) {
  127. return request({
  128. url: '/api/admin/family-metric-agg/save',
  129. method: 'post',
  130. data
  131. })
  132. }
  133. export function deleteFamilyMetricAgg(data) {
  134. return request({
  135. url: '/api/admin/family-metric-agg/delete',
  136. method: 'post',
  137. data
  138. })
  139. }
  140. export function updateFamilyMetricAggStatus(data) {
  141. return request({
  142. url: '/api/admin/family-metric-agg/update-status',
  143. method: 'post',
  144. data
  145. })
  146. }
  147. // 任务模板管理
  148. export function getTaskTemplateList(params) {
  149. return request({
  150. url: '/api/admin/task-templates',
  151. method: 'post',
  152. data: params
  153. })
  154. }
  155. export function createTaskTemplate(data) {
  156. return request({
  157. url: '/api/admin/task-templates/create',
  158. method: 'post',
  159. data
  160. })
  161. }
  162. export function updateTaskTemplate(id, data) {
  163. return request({
  164. url: `/api/admin/task-templates/${id}/update`,
  165. method: 'post',
  166. data
  167. })
  168. }
  169. export function deleteTaskTemplate(id) {
  170. return request({
  171. url: `/api/admin/task-templates/${id}/delete`,
  172. method: 'post'
  173. })
  174. }
  175. // 孩子管理
  176. export function getChildrenList(params) {
  177. return request({
  178. url: '/api/admin/children',
  179. method: 'post',
  180. data: params
  181. })
  182. }
  183. export function getChildDetail(id) {
  184. return request({
  185. url: `/api/admin/children/${id}`,
  186. method: 'post'
  187. })
  188. }
  189. export function updateChild(id, data) {
  190. return request({
  191. url: `/api/admin/children/${id}/update`,
  192. method: 'post',
  193. data
  194. })
  195. }
  196. export function deleteChild(id) {
  197. return request({
  198. url: `/api/admin/children/${id}/delete`,
  199. method: 'post'
  200. })
  201. }
  202. export function adjustChildPoints(id, data) {
  203. return request({
  204. url: `/api/admin/children/${id}/adjust-points`,
  205. method: 'post',
  206. data
  207. })
  208. }
  209. // 任务管理
  210. export function getTasksList(params) {
  211. return request({
  212. url: '/api/admin/tasks',
  213. method: 'post',
  214. data: params
  215. })
  216. }
  217. export function getTaskStats() {
  218. return request({
  219. url: '/api/admin/tasks/stats',
  220. method: 'post'
  221. })
  222. }
  223. export function getPendingReviewTasks(params) {
  224. return request({
  225. url: '/api/admin/tasks/pending-review',
  226. method: 'post',
  227. data: params || {}
  228. })
  229. }
  230. export function reviewAdminTask(taskId, data) {
  231. return request({
  232. url: `/api/admin/tasks/${taskId}/review`,
  233. method: 'post',
  234. data
  235. })
  236. }
  237. // 奖励管理
  238. export function getRewardsList(params) {
  239. return request({
  240. url: '/api/admin/rewards',
  241. method: 'post',
  242. data: params
  243. })
  244. }
  245. export function getRewardTemplates() {
  246. return request({
  247. url: '/api/admin/rewards/templates',
  248. method: 'post'
  249. })
  250. }
  251. export function createRewardTemplate(data) {
  252. return request({
  253. url: '/api/admin/rewards/create',
  254. method: 'post',
  255. data
  256. })
  257. }
  258. export function deleteRewardTemplate(id) {
  259. return request({
  260. url: `/api/admin/rewards/templates/${id}/delete`,
  261. method: 'post'
  262. })
  263. }
  264. export function updateRewardTemplate(id, data) {
  265. return request({
  266. url: `/api/admin/rewards/templates/${id}/update`,
  267. method: 'post',
  268. data
  269. })
  270. }
  271. export function approveReward(id, data) {
  272. return request({
  273. url: `/api/admin/rewards/${id}/approve`,
  274. method: 'post',
  275. data
  276. })
  277. }
  278. // 积分管理
  279. export function getPointsLogs(params) {
  280. return request({
  281. url: '/api/admin/points/logs',
  282. method: 'post',
  283. data: params
  284. })
  285. }
  286. export function getPointsStats() {
  287. return request({
  288. url: '/api/admin/points/stats',
  289. method: 'post'
  290. })
  291. }
  292. // ========== 心愿管理 API(新版) ==========
  293. // 获取心愿列表
  294. export function getWishesList(params) {
  295. return request({
  296. url: '/api/wishes/list',
  297. method: 'post',
  298. data: params
  299. })
  300. }
  301. // 获取待处理列表(家长)
  302. export function getPendingWishes(familyId) {
  303. return request({
  304. url: '/api/wishes/pending',
  305. method: 'post',
  306. data: { familyId }
  307. })
  308. }
  309. // 获取心愿详情
  310. export function getWishDetail(id) {
  311. return request({
  312. url: `/api/wishes/${id}`,
  313. method: 'post'
  314. })
  315. }
  316. // 家长定价
  317. export function setWishPrice(id, pointsRequired) {
  318. return request({
  319. url: `/api/wishes/${id}/set-price`,
  320. method: 'post',
  321. data: { pointsRequired }
  322. })
  323. }
  324. // 家长拒绝心愿
  325. export function rejectWish(id, reason) {
  326. return request({
  327. url: `/api/wishes/${id}/reject`,
  328. method: 'post',
  329. data: { reason }
  330. })
  331. }
  332. // 家长审批兑换
  333. export function approveWishExchange(id, approved, reason) {
  334. return request({
  335. url: `/api/wishes/${id}/approve-exchange`,
  336. method: 'post',
  337. data: { approved, reason }
  338. })
  339. }
  340. // 家长标记已购买
  341. export function markWishFulfilled(id) {
  342. return request({
  343. url: `/api/wishes/${id}/fulfill`,
  344. method: 'post'
  345. })
  346. }
  347. // 取消心愿
  348. export function deleteWish(id, reason) {
  349. return request({
  350. url: `/api/wishes/${id}/cancel`,
  351. method: 'post',
  352. data: { reason }
  353. })
  354. }
  355. // ========== 成长规划师相关 API ==========
  356. // 获取成长规划师关联的家庭列表
  357. export function getTeacherFamilies() {
  358. return request({
  359. url: '/api/admin/teacher/families',
  360. method: 'post'
  361. })
  362. }
  363. // 获取成长规划师发布的任务模板
  364. export function getTeacherTaskTemplates() {
  365. return request({
  366. url: '/api/admin/teacher/task-templates',
  367. method: 'post'
  368. })
  369. }
  370. // 成长规划师创建任务模板
  371. export function createTeacherTaskTemplate(data) {
  372. return request({
  373. url: '/api/admin/teacher/task-templates/create',
  374. method: 'post',
  375. data
  376. })
  377. }
  378. // 成长规划师删除任务模板
  379. export function deleteTeacherTaskTemplate(id) {
  380. return request({
  381. url: `/api/admin/teacher/task-templates/${id}/delete`,
  382. method: 'post'
  383. })
  384. }
  385. // 获取指定家庭的任务列表
  386. export function getTeacherFamilyTasks(familyId, params) {
  387. return request({
  388. url: `/api/admin/teacher/families/${familyId}/tasks`,
  389. method: 'post',
  390. data: params
  391. })
  392. }
  393. // 获取指定家庭的奖励列表
  394. export function getTeacherFamilyRewards(familyId, params) {
  395. return request({
  396. url: `/api/admin/teacher/families/${familyId}/rewards`,
  397. method: 'post',
  398. data: params
  399. })
  400. }
  401. // ========== 成长规划师审核 API ==========
  402. // 获取成长规划师审核列表
  403. export function getGuideApplications(params) {
  404. return request({
  405. url: '/api/admin/guide/applications',
  406. method: 'post',
  407. data: params
  408. })
  409. }
  410. // 通过成长规划师审核
  411. export function approveGuide(userId) {
  412. return request({
  413. url: `/api/admin/guide/approve/${userId}`,
  414. method: 'post'
  415. })
  416. }
  417. // 拒绝成长规划师审核
  418. export function rejectGuide(userId, reason) {
  419. return request({
  420. url: `/api/admin/guide/reject/${userId}`,
  421. method: 'post',
  422. data: { reason }
  423. })
  424. }
  425. // 获取营养师审核列表
  426. export function getNutritionistApplications(params) {
  427. return request({
  428. url: '/api/admin/nutritionist/applications',
  429. method: 'post',
  430. data: params
  431. })
  432. }
  433. // 通过营养师审核
  434. export function approveNutritionist(userId) {
  435. return request({
  436. url: `/api/admin/nutritionist/approve/${userId}`,
  437. method: 'post'
  438. })
  439. }
  440. // 拒绝营养师审核
  441. export function rejectNutritionist(userId, reason) {
  442. return request({
  443. url: `/api/admin/nutritionist/reject/${userId}`,
  444. method: 'post',
  445. data: { reason }
  446. })
  447. }
  448. // 获取待审核营养师数量
  449. export function getPendingNutritionistCount() {
  450. return request({
  451. url: '/api/admin/nutritionist/pending-count',
  452. method: 'post'
  453. })
  454. }
  455. // 获取待审核成长规划师数量
  456. export function getPendingGuideCount() {
  457. return request({
  458. url: '/api/admin/guide/pending-count',
  459. method: 'post'
  460. })
  461. }
  462. export function getPendingPackageCount() {
  463. return request({
  464. url: '/api/admin/package/pending-count',
  465. method: 'post'
  466. })
  467. }
  468. // 管理员个人信息
  469. export function updateAdminInfo(data) {
  470. return request({
  471. url: '/api/admin-auth/update-info',
  472. method: 'post',
  473. data
  474. })
  475. }
  476. // ========== 管理后台仪表盘汇总 API ==========
  477. export function getDashboardStats() {
  478. return request({
  479. url: '/api/stats/dashboard',
  480. method: 'post'
  481. })
  482. }
  483. export function getDashboardOverview() {
  484. return request({
  485. url: '/api/stats/overview',
  486. method: 'post'
  487. })
  488. }
  489. export function getRevenueStats() {
  490. return request({
  491. url: '/api/stats/revenue',
  492. method: 'post'
  493. })
  494. }
  495. export function getMembershipStats() {
  496. return request({
  497. url: '/api/stats/membership',
  498. method: 'post'
  499. })
  500. }
  501. export function getTrendStats() {
  502. return request({
  503. url: '/api/stats/trend',
  504. method: 'post',
  505. data: {}
  506. })
  507. }
  508. export function getTrafficAnalytics() {
  509. return request({
  510. url: '/api/stats/traffic',
  511. method: 'post',
  512. data: {}
  513. })
  514. }
  515. // ========== 商品管理 API ==========
  516. export function getProductList(params) {
  517. return request({
  518. url: '/api/admin/product/list',
  519. method: 'post',
  520. data: params
  521. })
  522. }
  523. export function reviewProduct(productId, data) {
  524. return request({
  525. url: '/api/admin/product/review',
  526. method: 'post',
  527. data: { productId, ...data }
  528. })
  529. }
  530. export function shelveProduct(productId, data) {
  531. return request({
  532. url: '/api/admin/product/shelve',
  533. method: 'post',
  534. data: { productId, ...data }
  535. })
  536. }
  537. export function batchShelveProduct(productIds, shelve) {
  538. return request({
  539. url: '/api/admin/product/batch-shelve',
  540. method: 'post',
  541. data: { productIds, shelve }
  542. })
  543. }
  544. export function getProduct(id) {
  545. return request({
  546. url: '/api/admin/product/detail',
  547. method: 'post',
  548. data: { productId: id }
  549. })
  550. }
  551. export function createProduct(data) {
  552. return request({
  553. url: '/api/admin/product/create',
  554. method: 'post',
  555. data
  556. })
  557. }
  558. export function updateProduct(data) {
  559. return request({
  560. url: '/api/admin/product/update',
  561. method: 'post',
  562. data
  563. })
  564. }
  565. export function deleteProduct(id) {
  566. return request({
  567. url: '/api/admin/product/delete',
  568. method: 'post',
  569. data: { productId: id }
  570. })
  571. }
  572. export function copyProduct(id) {
  573. return request({
  574. url: '/api/admin/product/copy',
  575. method: 'post',
  576. data: { productId: id }
  577. })
  578. }
  579. export function getGrowthArchiveProduct(productId) {
  580. return request({
  581. url: '/api/admin/growth-archive-product/detail',
  582. method: 'post',
  583. data: { productId }
  584. })
  585. }
  586. export function saveGrowthArchiveProduct(data) {
  587. return request({
  588. url: '/api/admin/growth-archive-product/save',
  589. method: 'post',
  590. data
  591. })
  592. }
  593. // ========== SKU 管理 API ==========
  594. export function getProductSkuList(productId) {
  595. return request({
  596. url: '/api/admin/product/sku/list',
  597. method: 'post',
  598. data: { productId }
  599. })
  600. }
  601. export function createProductSku(data) {
  602. return request({
  603. url: '/api/admin/product/sku/create',
  604. method: 'post',
  605. data
  606. })
  607. }
  608. export function updateProductSku(data) {
  609. return request({
  610. url: '/api/admin/product/sku/update',
  611. method: 'post',
  612. data
  613. })
  614. }
  615. export function linkedProductList(params) {
  616. return request({
  617. url: '/api/admin/product/linked/list',
  618. method: 'post',
  619. data: params
  620. })
  621. }
  622. export function deleteProductSku(id) {
  623. return request({
  624. url: '/api/admin/product/sku/delete',
  625. method: 'post',
  626. data: { id }
  627. })
  628. }
  629. // ========== 购买信息采集 API ==========
  630. export function getPredefinedPurchaseFields() {
  631. return request({
  632. url: '/api/admin/product/purchase_fields/predefined',
  633. method: 'post'
  634. })
  635. }
  636. export function getProductPurchaseFields(productId) {
  637. return request({
  638. url: '/api/admin/product/purchase_fields/list',
  639. method: 'post',
  640. data: { productId }
  641. })
  642. }
  643. export function saveProductPurchaseFields(productId, fields) {
  644. return request({
  645. url: '/api/admin/product/purchase_fields/save',
  646. method: 'post',
  647. data: { productId, fields }
  648. })
  649. }
  650. export function saveProductGiftRule(productId, status, levelCode) {
  651. return request({
  652. url: '/api/admin/product-gift-rule/save',
  653. method: 'post',
  654. data: { productId, status, levelCode }
  655. })
  656. }
  657. export function listProductGiftRules(productId) {
  658. return request({
  659. url: '/api/admin/product-gift-rule/list',
  660. method: 'post',
  661. data: { productId }
  662. })
  663. }
  664. export function saveProductGift(data) {
  665. return request({
  666. url: '/api/admin/product-gift/save',
  667. method: 'post',
  668. data
  669. })
  670. }
  671. export function getProductGiftList(productId) {
  672. return request({
  673. url: '/api/admin/product-gift/list',
  674. method: 'post',
  675. data: { productId }
  676. })
  677. }
  678. export function listMembershipLevels() {
  679. return request({
  680. url: '/api/membership/levels',
  681. method: 'post'
  682. })
  683. }
  684. export function updateMembershipLevel(data) {
  685. return request({
  686. url: '/api/admin/membership/level/update',
  687. method: 'post',
  688. data
  689. })
  690. }
  691. export function updateMembershipUser(data) {
  692. return request({
  693. url: '/api/admin/membership/user-update',
  694. method: 'post',
  695. data
  696. })
  697. }
  698. // ========== 分类管理 API ==========
  699. export function getCategoryTree(includeDisabled) {
  700. return request({
  701. url: '/api/admin/shop/category/tree',
  702. method: 'post',
  703. data: { includeDisabled }
  704. })
  705. }
  706. export function createCategory(data) {
  707. return request({
  708. url: '/api/admin/shop/category/create',
  709. method: 'post',
  710. data
  711. })
  712. }
  713. export function updateCategory(data) {
  714. return request({
  715. url: '/api/admin/shop/category/update',
  716. method: 'post',
  717. data
  718. })
  719. }
  720. export function deleteCategory(id) {
  721. return request({
  722. url: '/api/admin/shop/category/delete',
  723. method: 'post',
  724. data: { id }
  725. })
  726. }
  727. export function toggleCategory(id) {
  728. return request({
  729. url: '/api/admin/shop/category/toggle',
  730. method: 'post',
  731. data: { id }
  732. })
  733. }
  734. // ========== 订单管理 API ==========
  735. export function getOrderList(params) {
  736. return request({
  737. url: '/api/admin/product/order/list',
  738. method: 'post',
  739. data: params
  740. })
  741. }
  742. export function getOrderDetail(orderNo) {
  743. return request({
  744. url: '/api/admin/product/order/detail',
  745. method: 'post',
  746. data: { orderNo }
  747. })
  748. }
  749. export function shipOrder(orderNo, trackingNumber, expressCompany, extra) {
  750. return request({
  751. url: '/api/admin/product/order/ship',
  752. method: 'post',
  753. data: { orderNo, trackingNumber, expressCompany, ...extra }
  754. })
  755. }
  756. export function closeOrder(orderNo) {
  757. return request({
  758. url: '/api/admin/product/order/close',
  759. method: 'post',
  760. data: { orderNo }
  761. })
  762. }
  763. export function approveRefund(orderNo) {
  764. return request({
  765. url: '/api/admin/product/order/refund/approve',
  766. method: 'post',
  767. data: { orderNo }
  768. })
  769. }
  770. export function rejectRefund(orderNo, reason) {
  771. return request({
  772. url: '/api/admin/product/order/refund/reject',
  773. method: 'post',
  774. data: { orderNo, reason }
  775. })
  776. }
  777. // ========== 系统配置 API ==========
  778. export function getSysConfigList(params) {
  779. return request({
  780. url: '/api/admin/config/list',
  781. method: 'post',
  782. data: params
  783. })
  784. }
  785. export function createSysConfig(data) {
  786. return request({
  787. url: '/api/admin/config/update',
  788. method: 'post',
  789. data: { configKey: data.configKey, configValue: data.configValue }
  790. })
  791. }
  792. export function updateSysConfig(id, data) {
  793. return request({
  794. url: '/api/admin/config/update',
  795. method: 'post',
  796. data: { configKey: data.configKey, configValue: data.configValue }
  797. })
  798. }
  799. export function deleteSysConfig(id) {
  800. return request({
  801. url: `/api/admin/config/delete/${id}`,
  802. method: 'post'
  803. })
  804. }
  805. // ========== 通关解锁关卡配置 API ==========
  806. export function getUnlockGateList(params) {
  807. return request({
  808. url: '/api/admin/unlock-gates/list',
  809. method: 'post',
  810. data: params || {}
  811. })
  812. }
  813. export function saveUnlockGate(data) {
  814. return request({
  815. url: '/api/admin/unlock-gates/save',
  816. method: 'post',
  817. data
  818. })
  819. }
  820. export function deleteUnlockGate(id) {
  821. return request({
  822. url: '/api/admin/unlock-gates/delete',
  823. method: 'post',
  824. data: { id }
  825. })
  826. }
  827. export function sortUnlockGates(sortList) {
  828. return request({
  829. url: '/api/admin/unlock-gates/sort',
  830. method: 'post',
  831. data: sortList
  832. })
  833. }
  834. export function toggleUnlockGate(id, enabled) {
  835. return request({
  836. url: '/api/admin/unlock-gates/toggle',
  837. method: 'post',
  838. data: { id, enabled }
  839. })
  840. }
  841. export function resetFamilyGates(familyId) {
  842. return request({
  843. url: '/api/admin/unlock-gates/reset-family',
  844. method: 'post',
  845. data: { familyId }
  846. })
  847. }
  848. export function getFamilyGateProgress(familyId) {
  849. return request({
  850. url: '/api/admin/unlock-gates/family-progress',
  851. method: 'post',
  852. data: { familyId }
  853. })
  854. }
  855. // ========== 佣金推荐系统 API ==========
  856. export function getWithdrawalList(params) {
  857. return request({
  858. url: '/api/admin/commission/withdrawals',
  859. method: 'post',
  860. data: params
  861. })
  862. }
  863. export function auditWithdrawal(requestId, status, reason) {
  864. return request({
  865. url: '/api/admin/commission/audit',
  866. method: 'post',
  867. data: { requestId, status, reason }
  868. })
  869. }
  870. export function updateProductProfitRate(productId, profitRate) {
  871. return request({
  872. url: '/api/admin/commission/update-profit-rate',
  873. method: 'post',
  874. data: { productId, profitRate }
  875. })
  876. }
  877. // ========== 星座配置管理 API ==========
  878. export function listZodiacConfigs() {
  879. return request({
  880. url: '/api/admin/zodiac-config/list',
  881. method: 'post'
  882. })
  883. }
  884. export function createZodiacConfig(data) {
  885. return request({
  886. url: '/api/admin/zodiac-config/create',
  887. method: 'post',
  888. data
  889. })
  890. }
  891. export function updateZodiacConfig(data) {
  892. return request({
  893. url: '/api/admin/zodiac-config/update',
  894. method: 'post',
  895. data
  896. })
  897. }
  898. export function deleteZodiacConfig(id) {
  899. return request({
  900. url: '/api/admin/zodiac-config/delete',
  901. method: 'post',
  902. data: { id }
  903. })
  904. }
  905. // ========== 先天画像来源权重配置 API ==========
  906. export function listInnatePortraitConfigs() {
  907. return request({
  908. url: '/api/admin/innate-portrait-config/list',
  909. method: 'post'
  910. })
  911. }
  912. export function updateInnatePortraitConfig(data) {
  913. return request({
  914. url: '/api/admin/innate-portrait-config/update',
  915. method: 'post',
  916. data
  917. })
  918. }
  919. export function invalidateInnatePortraitScores() {
  920. return request({
  921. url: '/api/admin/innate-portrait-config/invalidate',
  922. method: 'post'
  923. })
  924. }
  925. // ========== 数字能量详细配置 API ==========
  926. export function listNumSoulDetailConfigs(data) {
  927. return request({
  928. url: '/api/admin/numsoul-detail-config/list',
  929. method: 'post',
  930. data
  931. })
  932. }
  933. export function createNumSoulDetailConfig(data) {
  934. return request({
  935. url: '/api/admin/numsoul-detail-config/create',
  936. method: 'post',
  937. data
  938. })
  939. }
  940. export function updateNumSoulDetailConfig(data) {
  941. return request({
  942. url: '/api/admin/numsoul-detail-config/update',
  943. method: 'post',
  944. data
  945. })
  946. }
  947. export function deleteNumSoulDetailConfig(id) {
  948. return request({
  949. url: '/api/admin/numsoul-detail-config/delete',
  950. method: 'post',
  951. data: { id }
  952. })
  953. }
  954. // ========== 八字配置管理 API ==========
  955. export function listBaziConfigs() {
  956. return request({
  957. url: '/api/admin/bazi-config/list',
  958. method: 'post'
  959. })
  960. }
  961. export function createBaziConfig(data) {
  962. return request({
  963. url: '/api/admin/bazi-config/create',
  964. method: 'post',
  965. data
  966. })
  967. }
  968. export function updateBaziConfig(data) {
  969. return request({
  970. url: '/api/admin/bazi-config/update',
  971. method: 'post',
  972. data
  973. })
  974. }
  975. export function deleteBaziConfig(id) {
  976. return request({
  977. url: '/api/admin/bazi-config/delete',
  978. method: 'post',
  979. data: { id }
  980. })
  981. }
  982. // ========== 血型配置管理 API ==========
  983. export function listBloodTypeConfigs() {
  984. return request({
  985. url: '/api/admin/blood-type-config/list',
  986. method: 'post'
  987. })
  988. }
  989. export function createBloodTypeConfig(data) {
  990. return request({
  991. url: '/api/admin/blood-type-config/create',
  992. method: 'post',
  993. data
  994. })
  995. }
  996. export function updateBloodTypeConfig(data) {
  997. return request({
  998. url: '/api/admin/blood-type-config/update',
  999. method: 'post',
  1000. data
  1001. })
  1002. }
  1003. export function deleteBloodTypeConfig(id) {
  1004. return request({
  1005. url: '/api/admin/blood-type-config/delete',
  1006. method: 'post',
  1007. data: { id }
  1008. })
  1009. }
  1010. // ========== 服务器运行状态 ==========
  1011. export function getSystemHealth() {
  1012. return request({
  1013. url: '/api/system/health',
  1014. method: 'post'
  1015. })
  1016. }
  1017. // ========== 虚拟服务商团队管理 API ==========
  1018. export function listVirtualTeams(params) {
  1019. return request({
  1020. url: '/api/admin/virtual-team/list',
  1021. method: 'post',
  1022. data: params
  1023. })
  1024. }
  1025. export function createVirtualTeam(data) {
  1026. return request({
  1027. url: '/api/admin/virtual-team/create',
  1028. method: 'post',
  1029. data
  1030. })
  1031. }
  1032. export function updateVirtualTeam(data) {
  1033. return request({
  1034. url: '/api/admin/virtual-team/update',
  1035. method: 'post',
  1036. data
  1037. })
  1038. }
  1039. export function toggleVirtualTeam(id) {
  1040. return request({
  1041. url: '/api/admin/virtual-team/toggle',
  1042. method: 'post',
  1043. data: { id }
  1044. })
  1045. }
  1046. export function getVirtualTeamMembers(systemId) {
  1047. return request({
  1048. url: '/api/admin/virtual-team/members',
  1049. method: 'post',
  1050. data: { systemId }
  1051. })
  1052. }
  1053. export function addVirtualTeamMember(data) {
  1054. return request({
  1055. url: '/api/admin/virtual-team/add-member',
  1056. method: 'post',
  1057. data
  1058. })
  1059. }
  1060. export function removeVirtualTeamMember(id) {
  1061. return request({
  1062. url: '/api/admin/virtual-team/remove-member',
  1063. method: 'post',
  1064. data: { id }
  1065. })
  1066. }
  1067. export function updateVirtualTeamMember(data) {
  1068. return request({
  1069. url: '/api/admin/virtual-team/update-member',
  1070. method: 'post',
  1071. data
  1072. })
  1073. }
  1074. export function getVirtualTeamTree(systemId) {
  1075. return request({
  1076. url: '/api/admin/virtual-team/tree',
  1077. method: 'post',
  1078. data: { systemId }
  1079. })
  1080. }
  1081. export function searchUsers(params) {
  1082. return request({
  1083. url: '/api/admin/user/search',
  1084. method: 'post',
  1085. data: params
  1086. })
  1087. }
  1088. // ========== 情绪告警管理 API ==========
  1089. export function getEmotionAlertList(params) {
  1090. return request({
  1091. url: '/api/mind/alert/admin/list',
  1092. method: 'post',
  1093. data: params
  1094. })
  1095. }
  1096. export function resolveEmotionAlert(alertId) {
  1097. return request({
  1098. url: '/api/mind/alert/resolve',
  1099. method: 'post',
  1100. data: { alertId, source: 'checkin' }
  1101. })
  1102. }
  1103. // ========== 食材管理 API ==========
  1104. export function getFoodList(params) {
  1105. return request({
  1106. url: '/api/admin/foods/list',
  1107. method: 'post',
  1108. data: params
  1109. })
  1110. }
  1111. export function createFood(data) {
  1112. return request({
  1113. url: '/api/admin/foods/create',
  1114. method: 'post',
  1115. data
  1116. })
  1117. }
  1118. export function updateFood(data) {
  1119. return request({
  1120. url: '/api/admin/foods/update',
  1121. method: 'post',
  1122. data
  1123. })
  1124. }
  1125. export function deleteFood(id) {
  1126. return request({
  1127. url: '/api/admin/foods/delete',
  1128. method: 'post',
  1129. data: { id }
  1130. })
  1131. }
  1132. export function getFoodDetail(id) {
  1133. return request({
  1134. url: '/api/admin/foods/detail',
  1135. method: 'post',
  1136. data: { id }
  1137. })
  1138. }
  1139. export function saveFoodMonths(id, months) {
  1140. return request({
  1141. url: '/api/admin/foods/saveMonths',
  1142. method: 'post',
  1143. data: { id, months }
  1144. })
  1145. }
  1146. // 供应商体系管理
  1147. export function getSupplySystemList(params) {
  1148. return request({
  1149. url: '/api/admin/supply-system/list',
  1150. method: 'post',
  1151. data: params || {}
  1152. })
  1153. }
  1154. export function getSupplySystemDetail(id) {
  1155. return request({
  1156. url: '/api/admin/supply-system/detail',
  1157. method: 'post',
  1158. data: { id }
  1159. })
  1160. }
  1161. export function createSupplySystem(data) {
  1162. return request({
  1163. url: '/api/admin/supply-system/create',
  1164. method: 'post',
  1165. data
  1166. })
  1167. }
  1168. export function updateSupplySystem(data) {
  1169. return request({
  1170. url: '/api/admin/supply-system/update',
  1171. method: 'post',
  1172. data
  1173. })
  1174. }
  1175. export function toggleSupplySystemStatus(id) {
  1176. return request({
  1177. url: '/api/admin/supply-system/toggle-status',
  1178. method: 'post',
  1179. data: { id }
  1180. })
  1181. }
  1182. export function listAllSupplySystems() {
  1183. return request({
  1184. url: '/api/admin/supply-system/list-all',
  1185. method: 'post'
  1186. })
  1187. }
  1188. export function getSupplySystemMembers(systemId) {
  1189. return request({
  1190. url: '/api/admin/supply-system/member/list',
  1191. method: 'post',
  1192. data: { systemId }
  1193. })
  1194. }
  1195. export function addSupplySystemMember(systemId, userId) {
  1196. return request({
  1197. url: '/api/admin/supply-system/member/add',
  1198. method: 'post',
  1199. data: { systemId, userId }
  1200. })
  1201. }
  1202. export function removeSupplySystemMember(memberId) {
  1203. return request({
  1204. url: '/api/admin/supply-system/member/remove',
  1205. method: 'post',
  1206. data: { memberId }
  1207. })
  1208. }
  1209. export function changeSupplySystemMemberRole(memberId, role) {
  1210. return request({
  1211. url: '/api/admin/supply-system/member/change-role',
  1212. method: 'post',
  1213. data: { memberId, role }
  1214. })
  1215. }
  1216. // ========== 供应商产品管理 API (supplier_admin) ==========
  1217. export function getMySupplySystem() {
  1218. return request({
  1219. url: '/api/admin/supply-system/my-system',
  1220. method: 'post'
  1221. })
  1222. }
  1223. export function getSupplierProductList(params) {
  1224. return request({
  1225. url: '/api/admin/supplier/product/list',
  1226. method: 'post',
  1227. data: params
  1228. })
  1229. }
  1230. export function createSupplierProduct(data) {
  1231. return request({
  1232. url: '/api/admin/supplier/product/create',
  1233. method: 'post',
  1234. data
  1235. })
  1236. }
  1237. export function updateSupplierProduct(data) {
  1238. return request({
  1239. url: '/api/admin/supplier/product/update',
  1240. method: 'post',
  1241. data
  1242. })
  1243. }
  1244. export function getSupplierProductDetail(id) {
  1245. return request({
  1246. url: '/api/admin/supplier/product/detail',
  1247. method: 'post',
  1248. data: { productId: id }
  1249. })
  1250. }
  1251. export function deleteSupplierProduct(id) {
  1252. return request({
  1253. url: '/api/admin/supplier/product/delete',
  1254. method: 'post',
  1255. data: { productId: id }
  1256. })
  1257. }
  1258. export function shelveSupplierProduct(productId, shelve) {
  1259. return request({
  1260. url: '/api/admin/supplier/product/shelve',
  1261. method: 'post',
  1262. data: { productId, shelve }
  1263. })
  1264. }
  1265. // 结算管理
  1266. export function getSupplySettlementList(params) {
  1267. return request({
  1268. url: '/api/admin/supply-settlement/list',
  1269. method: 'post',
  1270. data: params || {}
  1271. })
  1272. }
  1273. export function getSupplySettlementDetail(id) {
  1274. return request({
  1275. url: '/api/admin/supply-settlement/detail',
  1276. method: 'post',
  1277. data: { id }
  1278. })
  1279. }
  1280. export function getSupplySettlementDetailItems(settlementId) {
  1281. return request({
  1282. url: '/api/admin/supply-settlement/detail-items',
  1283. method: 'post',
  1284. data: { settlementId }
  1285. })
  1286. }
  1287. export function createSupplySettlement(systemId, periodStart, periodEnd, remark) {
  1288. return request({
  1289. url: '/api/admin/supply-settlement/create',
  1290. method: 'post',
  1291. data: { systemId, periodStart, periodEnd, remark }
  1292. })
  1293. }
  1294. export function confirmSupplySettlement(id) {
  1295. return request({
  1296. url: '/api/admin/supply-settlement/confirm',
  1297. method: 'post',
  1298. data: { id }
  1299. })
  1300. }
  1301. // ========== 供应商管理 (supplier_admin) ==========
  1302. export function getSupplyManageList(params) {
  1303. return request({
  1304. url: '/api/admin/supply-manage/list',
  1305. method: 'post',
  1306. data: params
  1307. })
  1308. }
  1309. export function getSupplyManageDetail(params) {
  1310. return request({
  1311. url: '/api/admin/supply-manage/detail',
  1312. method: 'post',
  1313. data: params
  1314. })
  1315. }
  1316. export function createSupplyManage(params) {
  1317. return request({
  1318. url: '/api/admin/supply-manage/create',
  1319. method: 'post',
  1320. data: params
  1321. })
  1322. }
  1323. export function updateSupplyManage(params) {
  1324. return request({
  1325. url: '/api/admin/supply-manage/update',
  1326. method: 'post',
  1327. data: params
  1328. })
  1329. }
  1330. export function deleteSupplyManage(params) {
  1331. return request({
  1332. url: '/api/admin/supply-manage/delete',
  1333. method: 'post',
  1334. data: params
  1335. })
  1336. }
  1337. export function addSupplierRole(params) {
  1338. return request({
  1339. url: '/api/admin/supply-manage/add-role',
  1340. method: 'post',
  1341. data: params
  1342. })
  1343. }
  1344. export function removeSupplierRole(params) {
  1345. return request({
  1346. url: '/api/admin/supply-manage/remove-role',
  1347. method: 'post',
  1348. data: params
  1349. })
  1350. }
  1351. export function adjustSupplyTier(params) {
  1352. return request({
  1353. url: '/api/admin/supply-manage/adjust-tier',
  1354. method: 'post',
  1355. data: params
  1356. })
  1357. }
  1358. // 供应商层级关系管理
  1359. export function getSupplyHierarchyTree(systemId) {
  1360. return request({
  1361. url: '/api/admin/supply-hierarchy/tree',
  1362. method: 'post',
  1363. data: { systemId }
  1364. })
  1365. }
  1366. export function setSupplyHierarchy(data) {
  1367. return request({
  1368. url: '/api/admin/supply-hierarchy/set',
  1369. method: 'post',
  1370. data
  1371. })
  1372. }
  1373. export function removeSupplyHierarchy(data) {
  1374. return request({
  1375. url: '/api/admin/supply-hierarchy/remove',
  1376. method: 'post',
  1377. data
  1378. })
  1379. }
  1380. export function getSupplyHierarchyDirectChildren(data) {
  1381. return request({
  1382. url: '/api/admin/supply-hierarchy/direct-children',
  1383. method: 'post',
  1384. data
  1385. })
  1386. }
  1387. export function getSupplyHierarchyAllChildren(data) {
  1388. return request({
  1389. url: '/api/admin/supply-hierarchy/all-children',
  1390. method: 'post',
  1391. data
  1392. })
  1393. }
  1394. export function getSupplyHierarchyParent(data) {
  1395. return request({
  1396. url: '/api/admin/supply-hierarchy/parent',
  1397. method: 'post',
  1398. data
  1399. })
  1400. }
  1401. export function getSupplyHierarchyParentChain(data) {
  1402. return request({
  1403. url: '/api/admin/supply-hierarchy/parent-chain',
  1404. method: 'post',
  1405. data
  1406. })
  1407. }
  1408. export function getSupplyHierarchyMy(data) {
  1409. return request({
  1410. url: '/api/admin/supply-hierarchy/my',
  1411. method: 'post',
  1412. data
  1413. })
  1414. }
  1415. export function getSupplyHierarchyChangeRequests(data) {
  1416. return request({
  1417. url: '/api/admin/supply-hierarchy/change-requests',
  1418. method: 'post',
  1419. data
  1420. })
  1421. }
  1422. export function applySupplyHierarchyChange(data) {
  1423. return request({
  1424. url: '/api/admin/supply-hierarchy/change/apply',
  1425. method: 'post',
  1426. data
  1427. })
  1428. }
  1429. export function reviewSupplyHierarchyChange(data) {
  1430. return request({
  1431. url: '/api/admin/supply-hierarchy/change/review',
  1432. method: 'post',
  1433. data
  1434. })
  1435. }
  1436. // ========== 家庭会员订阅管理 API ==========
  1437. export function getSubscriptionList(params) {
  1438. return request({
  1439. url: '/api/admin/subscription/list',
  1440. method: 'post',
  1441. data: params
  1442. })
  1443. }
  1444. export function activateSubscription(data) {
  1445. return request({
  1446. url: '/api/admin/subscription/activate',
  1447. method: 'post',
  1448. data
  1449. })
  1450. }
  1451. export function cancelSubscriptionAdmin(data) {
  1452. return request({
  1453. url: '/api/admin/subscription/cancel',
  1454. method: 'post',
  1455. data
  1456. })
  1457. }
  1458. export function getBenefitConfig() {
  1459. return request({
  1460. url: '/api/admin/subscription/benefits',
  1461. method: 'post'
  1462. })
  1463. }
  1464. export function updateBenefitConfig(data) {
  1465. return request({
  1466. url: '/api/admin/subscription/benefits/update',
  1467. method: 'post',
  1468. data
  1469. })
  1470. }
  1471. // ========== 推广等级配置 API ==========
  1472. export function getPromotionTierList(params) {
  1473. return request({
  1474. url: '/api/admin/promotion/tier/list',
  1475. method: 'post',
  1476. data: params
  1477. })
  1478. }
  1479. export function adjustPromotionTier(data) {
  1480. return request({
  1481. url: '/api/admin/promotion/tier/adjust',
  1482. method: 'post',
  1483. data
  1484. })
  1485. }
  1486. // ========== 佣金/返利记录 API ==========
  1487. export function getCommissionRecords(params) {
  1488. return request({
  1489. url: '/api/admin/commission/records',
  1490. method: 'post',
  1491. data: params
  1492. })
  1493. }
  1494. export function settleCommission(data) {
  1495. return request({
  1496. url: '/api/admin/commission/settle',
  1497. method: 'post',
  1498. data
  1499. })
  1500. }
  1501. export function refundCommission(data) {
  1502. return request({
  1503. url: '/api/admin/commission/refund',
  1504. method: 'post',
  1505. data
  1506. })
  1507. }
  1508. // ========== 产品 P 点配置 API ==========
  1509. export function getProductPpointList(params) {
  1510. return request({
  1511. url: '/api/admin/product-ppoint/list',
  1512. method: 'post',
  1513. data: params
  1514. })
  1515. }
  1516. export function saveProductPpoint(data) {
  1517. return request({
  1518. url: '/api/admin/product-ppoint/save',
  1519. method: 'post',
  1520. data
  1521. })
  1522. }
  1523. export function deleteProductPpoint(data) {
  1524. return request({
  1525. url: '/api/admin/product-ppoint/delete',
  1526. method: 'post',
  1527. data
  1528. })
  1529. }
  1530. export function getProductPpointByProduct(data) {
  1531. return request({
  1532. url: '/api/admin/product-ppoint/by-product',
  1533. method: 'post',
  1534. data
  1535. })
  1536. }
  1537. // ========== 推广等级配置 (R0-R4) API ==========
  1538. export function getPromotionTierConfig() {
  1539. return request({
  1540. url: '/api/admin/promotion/config',
  1541. method: 'post'
  1542. })
  1543. }
  1544. export function updatePromotionTierConfig(data) {
  1545. return request({
  1546. url: '/api/admin/promotion/config/update',
  1547. method: 'post',
  1548. data
  1549. })
  1550. }
  1551. // ========== 待退款管理 API ==========
  1552. export function getPendingRefundList(params) {
  1553. return request({
  1554. url: '/api/admin/commission/refunds/pending',
  1555. method: 'post',
  1556. data: params
  1557. })
  1558. }
  1559. export function getPendingRefundSummary() {
  1560. return request({
  1561. url: '/api/admin/commission/refunds/summary',
  1562. method: 'post'
  1563. })
  1564. }
  1565. export function cancelPendingRefund(params) {
  1566. return request({
  1567. url: '/api/admin/commission/refunds/cancel',
  1568. method: 'post',
  1569. data: params
  1570. })
  1571. }
  1572. // ========== 佣金配置 API ==========
  1573. export function getCommissionConfig() {
  1574. return request({
  1575. url: '/api/admin/commission/config',
  1576. method: 'post'
  1577. })
  1578. }
  1579. export function updateCommissionConfig(data) {
  1580. return request({
  1581. url: '/api/admin/commission/config/update',
  1582. method: 'post',
  1583. data
  1584. })
  1585. }
  1586. // 电商供应商管理(已合并至供应商体系,接口指向 /api/admin/supply-system)
  1587. // 保留旧函数名但指向新接口,避免前端报错
  1588. export function getEcomSupplierList(params) {
  1589. return request({
  1590. url: '/api/admin/supply-system/list',
  1591. method: 'post',
  1592. data: params
  1593. })
  1594. }
  1595. export function saveEcomSupplier(data) {
  1596. return request({
  1597. url: '/api/admin/supply-system/create',
  1598. method: 'post',
  1599. data
  1600. })
  1601. }
  1602. export function updateEcomSupplier(data) {
  1603. return request({
  1604. url: '/api/admin/supply-system/update',
  1605. method: 'post',
  1606. data
  1607. })
  1608. }
  1609. export function deleteEcomSupplier(id) {
  1610. return request({
  1611. url: '/api/admin/supply-system/toggle-status',
  1612. method: 'post',
  1613. data: { id }
  1614. })
  1615. }
  1616. export function getAllSuppliers() {
  1617. return request({
  1618. url: '/api/admin/supplier/all',
  1619. method: 'post'
  1620. })
  1621. }
  1622. // ===== 家庭收益管理 =====
  1623. export function getFamilyEarningsList() {
  1624. return request({
  1625. url: '/api/admin/earnings/families',
  1626. method: 'post',
  1627. data: {}
  1628. })
  1629. }
  1630. export function getFamilyEarningsDetail(familyId) {
  1631. return request({
  1632. url: '/api/admin/earnings/family/' + familyId + '/summary',
  1633. method: 'post',
  1634. data: { familyId: familyId }
  1635. })
  1636. }
  1637. export function getFamilyEarningsRecords(familyId, type) {
  1638. return request({
  1639. url: '/api/admin/earnings/family/' + familyId + '/records',
  1640. method: 'post',
  1641. data: { familyId: familyId, type: type || '' }
  1642. })
  1643. }
  1644. // ===== 测评待分配规划师 =====
  1645. export function getPendingAssessmentList(params) {
  1646. return request({
  1647. url: '/api/admin/assessment/pending-list',
  1648. method: 'post',
  1649. data: params || {}
  1650. })
  1651. }
  1652. export function getAvailableGuides() {
  1653. return request({
  1654. url: '/api/admin/assessment/available-guides',
  1655. method: 'post',
  1656. data: {}
  1657. })
  1658. }
  1659. export function assignGuide(appointmentId, guideId) {
  1660. return request({
  1661. url: '/api/admin/assessment/assign-guide',
  1662. method: 'post',
  1663. data: { appointmentId, guideId }
  1664. })
  1665. }
  1666. // ===== 测评订单管理 =====
  1667. export function getAssessmentOrderList(params) {
  1668. return request({
  1669. url: '/api/admin/assessment/orders',
  1670. method: 'post',
  1671. data: params || {}
  1672. })
  1673. }
  1674. export function changeAssessmentGuide(orderId, guideId) {
  1675. return request({
  1676. url: '/api/admin/assessment/change-guide',
  1677. method: 'post',
  1678. data: { orderId, guideId }
  1679. })
  1680. }
  1681. // ========== 库存管理 API ==========
  1682. export function createInboundOrder(data) {
  1683. return request({
  1684. url: '/api/admin/inventory/inbound/create',
  1685. method: 'post',
  1686. data
  1687. })
  1688. }
  1689. export function getInboundOrderList(params) {
  1690. return request({
  1691. url: '/api/admin/inventory/inbound/list',
  1692. method: 'post',
  1693. data: params
  1694. })
  1695. }
  1696. export function getInboundOrderDetail(id) {
  1697. return request({
  1698. url: '/api/admin/inventory/inbound/detail',
  1699. method: 'post',
  1700. data: { id }
  1701. })
  1702. }
  1703. export function confirmInbound(id) {
  1704. return request({
  1705. url: '/api/admin/inventory/inbound/confirm',
  1706. method: 'post',
  1707. data: { id }
  1708. })
  1709. }
  1710. export function cancelInbound(id) {
  1711. return request({
  1712. url: '/api/admin/inventory/inbound/cancel',
  1713. method: 'post',
  1714. data: { id }
  1715. })
  1716. }
  1717. export function getInventoryTransactions(params) {
  1718. return request({
  1719. url: '/api/admin/inventory/transactions/list',
  1720. method: 'post',
  1721. data: params
  1722. })
  1723. }
  1724. export function createCountingRecord(data) {
  1725. return request({
  1726. url: '/api/admin/inventory/counting/create',
  1727. method: 'post',
  1728. data
  1729. })
  1730. }
  1731. export function confirmCounting(id) {
  1732. return request({
  1733. url: '/api/admin/inventory/counting/confirm',
  1734. method: 'post',
  1735. data: { id }
  1736. })
  1737. }
  1738. export function getCountingList(params) {
  1739. return request({
  1740. url: '/api/admin/inventory/counting/list',
  1741. method: 'post',
  1742. data: params
  1743. })
  1744. }
  1745. export function getStockAlerts() {
  1746. return request({
  1747. url: '/api/admin/inventory/alert/list',
  1748. method: 'post'
  1749. })
  1750. }
  1751. export function getProductStock(productId) {
  1752. return request({
  1753. url: '/api/admin/inventory/product/stock',
  1754. method: 'post',
  1755. data: { productId }
  1756. })
  1757. }
  1758. // ========== 限时特价(扫码闪购)API ==========
  1759. export function getSpecialPriceList(params) {
  1760. return request({ url: '/api/admin/special-price/list', method: 'post', data: params || {} })
  1761. }
  1762. export function createSpecialPrice(data) {
  1763. return request({ url: '/api/admin/special-price/create', method: 'post', data })
  1764. }
  1765. export function updateSpecialPrice(data) {
  1766. return request({ url: '/api/admin/special-price/update', method: 'post', data })
  1767. }
  1768. export function setSpecialPriceStatus(data) {
  1769. return request({ url: '/api/admin/special-price/status', method: 'post', data })
  1770. }
  1771. export function deleteSpecialPrice(id) {
  1772. return request({ url: '/api/admin/special-price/delete', method: 'post', data: { id } })
  1773. }
  1774. export function getSpecialPriceQrcode(id) {
  1775. return request({ url: '/api/admin/special-price/qrcode', method: 'post', data: { id } })
  1776. }
  1777. export function saveComboItems(comboSkuId, items) {
  1778. return request({
  1779. url: '/api/admin/inventory/combo/items',
  1780. method: 'post',
  1781. data: { comboSkuId, items }
  1782. })
  1783. }
  1784. export function listComboItems(comboSkuId) {
  1785. return request({
  1786. url: '/api/admin/inventory/combo/items/list',
  1787. method: 'post',
  1788. data: { comboSkuId }
  1789. })
  1790. }
  1791. export function createManualOutbound(data) {
  1792. return request({
  1793. url: '/api/admin/inventory/outbound/create',
  1794. method: 'post',
  1795. data
  1796. })
  1797. }
  1798. export function getManualOutboundList(params) {
  1799. return request({
  1800. url: '/api/admin/inventory/outbound/list',
  1801. method: 'post',
  1802. data: params
  1803. })
  1804. }
  1805. export function getFamilyMemberList(params) {
  1806. return request({
  1807. url: '/api/family/member/list',
  1808. method: 'post',
  1809. data: params
  1810. })
  1811. }
  1812. export function updateOrderExpress(data) {
  1813. return request({
  1814. url: '/api/admin/product/order/update-express',
  1815. method: 'post',
  1816. data
  1817. })
  1818. }
  1819. // ========== 健康报告代上传 ==========
  1820. export function proxyParseReport(data) {
  1821. const formData = new FormData()
  1822. formData.append('file', data.file)
  1823. formData.append('familyId', data.familyId)
  1824. if (data.subjectId) formData.append('subjectId', data.subjectId)
  1825. if (data.note) formData.append('note', data.note)
  1826. return request({
  1827. url: '/api/health/report/proxy-parse',
  1828. method: 'post',
  1829. data: formData,
  1830. headers: { 'Content-Type': 'multipart/form-data' }
  1831. })
  1832. }
  1833. // B3-2:草稿过期降级——基于原文件 fileUrl 重新建草稿并解析(复用 /report/proxy-parse,不重新上传 PDF)
  1834. export function proxyReparseReport(data) {
  1835. const formData = new FormData()
  1836. formData.append('fileUrl', data.fileUrl)
  1837. formData.append('familyId', data.familyId)
  1838. if (data.subjectId) formData.append('subjectId', data.subjectId)
  1839. if (data.note) formData.append('note', data.note)
  1840. return request({
  1841. url: '/api/health/report/proxy-parse',
  1842. method: 'post',
  1843. data: formData,
  1844. headers: { 'Content-Type': 'multipart/form-data' }
  1845. })
  1846. }
  1847. export function proxyConfirmReport(data) {
  1848. return request({
  1849. url: '/api/health/report/proxy-confirm',
  1850. method: 'post',
  1851. data
  1852. })
  1853. }
  1854. export function listHealthReports(params) {
  1855. return request({
  1856. url: '/api/health/report/list',
  1857. method: 'post',
  1858. data: params
  1859. })
  1860. }
  1861. export function adminListHealthReports(params) {
  1862. return request({
  1863. url: '/api/health/report/admin-list',
  1864. method: 'post',
  1865. data: params
  1866. })
  1867. }
  1868. export function getHealthReportDetail(reportId) {
  1869. return request({
  1870. url: '/api/health/report/detail',
  1871. method: 'post',
  1872. data: { reportId }
  1873. })
  1874. }
  1875. export function archiveReport(reportId) {
  1876. return request({
  1877. url: '/api/health/report/archive',
  1878. method: 'post',
  1879. data: { reportId }
  1880. })
  1881. }
  1882. export function archiveReportsBatch(reportIds) {
  1883. return request({
  1884. url: '/api/health/report/archive-batch',
  1885. method: 'post',
  1886. data: { reportIds }
  1887. })
  1888. }
  1889. export function editHealthReport(data) {
  1890. return request({
  1891. url: '/api/health/report/edit',
  1892. method: 'post',
  1893. data
  1894. })
  1895. }
  1896. export function reassignHealthReport(data) {
  1897. return request({
  1898. url: '/api/health/report/reassign',
  1899. method: 'post',
  1900. data
  1901. })
  1902. }
  1903. export function getUnlinkedReports(data) {
  1904. return request({
  1905. url: '/api/health/report/unlinked',
  1906. method: 'post',
  1907. data
  1908. })
  1909. }
  1910. // ===== CF值(平台积分)管理 =====
  1911. export function getCfValueBalance(data) {
  1912. return request({
  1913. url: '/api/admin/cf-value/balance',
  1914. method: 'post',
  1915. data
  1916. })
  1917. }
  1918. export function getCfValueLogs(data) {
  1919. return request({
  1920. url: '/api/admin/cf-value/logs',
  1921. method: 'post',
  1922. data
  1923. })
  1924. }
  1925. export function getCfValueAllBalances(data) {
  1926. return request({
  1927. url: '/api/admin/cf-value/all-balances',
  1928. method: 'post',
  1929. data
  1930. })
  1931. }
  1932. // ===== 推荐团队(后台按 userId 查看推荐人/下线)=====
  1933. export function getReferralSummary(data) {
  1934. return request({
  1935. url: '/api/admin/referral/summary',
  1936. method: 'post',
  1937. data
  1938. })
  1939. }
  1940. export function getReferralMembers(data) {
  1941. return request({
  1942. url: '/api/admin/referral/members',
  1943. method: 'post',
  1944. data
  1945. })
  1946. }
  1947. export function getReferralTree(data) {
  1948. return request({
  1949. url: '/api/admin/referral/tree',
  1950. method: 'post',
  1951. data
  1952. })
  1953. }
  1954. // 获取已入驻的服务商列表(用于商品编辑下拉选择)
  1955. export function getApprovedGuides() {
  1956. return request({
  1957. url: '/api/admin/guide/guides/approved',
  1958. method: 'post'
  1959. })
  1960. }
  1961. // 用户画像管理
  1962. export function getProfile(memberId) {
  1963. return request({
  1964. url: '/api/admin/profile/get',
  1965. method: 'post',
  1966. data: { memberId }
  1967. })
  1968. }
  1969. export function getProfileTrend(memberId, days) {
  1970. return request({
  1971. url: '/api/admin/profile/trend',
  1972. method: 'post',
  1973. data: { memberId, days: days || 30 }
  1974. })
  1975. }
  1976. // ========== 引导配置 API ==========
  1977. export function getGuideConfig() {
  1978. return request({
  1979. url: '/api/admin/guide-config/get',
  1980. method: 'post'
  1981. })
  1982. }
  1983. export function saveGuideConfig(configValue) {
  1984. return request({
  1985. url: '/api/admin/guide-config/save',
  1986. method: 'post',
  1987. data: { configValue }
  1988. })
  1989. }