admin.js 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276
  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. // 获取已入驻的服务商列表(用于商品编辑下拉选择)
  1933. export function getApprovedGuides() {
  1934. return request({
  1935. url: '/api/admin/guide/guides/approved',
  1936. method: 'post'
  1937. })
  1938. }
  1939. // 用户画像管理
  1940. export function getProfile(memberId) {
  1941. return request({
  1942. url: '/api/admin/profile/get',
  1943. method: 'post',
  1944. data: { memberId }
  1945. })
  1946. }
  1947. export function getProfileTrend(memberId, days) {
  1948. return request({
  1949. url: '/api/admin/profile/trend',
  1950. method: 'post',
  1951. data: { memberId, days: days || 30 }
  1952. })
  1953. }
  1954. // ========== 引导配置 API ==========
  1955. export function getGuideConfig() {
  1956. return request({
  1957. url: '/api/admin/guide-config/get',
  1958. method: 'post'
  1959. })
  1960. }
  1961. export function saveGuideConfig(configValue) {
  1962. return request({
  1963. url: '/api/admin/guide-config/save',
  1964. method: 'post',
  1965. data: { configValue }
  1966. })
  1967. }