@@ -2,7 +2,7 @@ import { Controller } from 'egg';
22import opentelemetry , { Span } from '@opentelemetry/api' ;
33import { mysqlQuery } from '../service/mysql' ;
44import { createMongoClient } from '../service/mongo' ;
5- import request from '../service/request' ;
5+ // import request from '../service/request';
66const tracer = opentelemetry . trace . getTracer (
77 'guguji9' ,
88 '1.0.0' ,
@@ -56,12 +56,85 @@ export default class UserController extends Controller {
5656 parseInt ( page as string ) ,
5757 parseInt ( pageSize as string )
5858 ) ;
59- const res2 = await request ( { uri :'http://10.99.1.223:8081/roll' , method :'GET' } )
59+ // const res2 = await request({uri:'http://10.99.1.223:8081/roll',method:'GET'})
6060
6161 ctx . body = {
6262 code : 0 ,
63- data : { result, res, res2, mongoRes} ,
63+ data : { result, res, mongoRes} ,
64+ // data: {result, res, res2, mongoRes},
6465 message : '获取成功' ,
6566 } ;
6667 }
68+
69+ public async create ( ) {
70+ const { ctx } = this ;
71+
72+ // 获取请求体数据
73+ const userData = ctx . request . body ;
74+
75+ // 参数验证
76+ if ( ! userData . name || ! userData . email ) {
77+ ctx . status = 400 ;
78+ ctx . body = {
79+ code : 400 ,
80+ error : '用户名和邮箱是必填项' ,
81+ message : '参数错误' ,
82+ } ;
83+ return ;
84+ }
85+
86+ // 邮箱格式验证
87+ const emailRegex = / ^ [ ^ \s @ ] + @ [ ^ \s @ ] + \. [ ^ \s @ ] + $ / ;
88+ if ( ! emailRegex . test ( userData . email ) ) {
89+ ctx . status = 400 ;
90+ ctx . body = {
91+ code : 400 ,
92+ error : '邮箱格式不正确' ,
93+ message : '参数错误' ,
94+ } ;
95+ return ;
96+ }
97+
98+ try {
99+
100+ // 使用startActiveSpan记录用户创建过程
101+ const result = await tracer . startActiveSpan ( 'create_user' , async ( span : Span ) => {
102+ // 将请求体数据添加到span属性中
103+ span . setAttribute ( 'user.name' , userData . name ) ;
104+ span . setAttribute ( 'user.email' , userData . email ) ;
105+ span . setAttribute ( 'user.phone' , userData . phone || '' ) ;
106+ span . setAttribute ( 'user.avatar' , userData . avatar || '' ) ;
107+ span . setAttribute ( 'user.status' , userData . status || 'active' ) ;
108+ span . setAttribute ( 'request.timestamp' , new Date ( ) . toISOString ( ) ) ;
109+
110+ // 在span内部调用service创建用户
111+ const newUser = await ctx . service . user . createUser ( userData ) ;
112+ console . log ( 'newUser' , newUser )
113+ // 记录创建结果到span
114+ span . setAttribute ( 'user.created_id' , newUser . id ) ;
115+ span . setAttribute ( 'user.created_time' , newUser . createTime ) ;
116+
117+ // 结束span
118+ span . end ( ) ;
119+
120+ // 返回创建的用户数据
121+ return newUser ;
122+ } ) ;
123+
124+ ctx . status = 201 ;
125+ ctx . body = {
126+ code : 0 ,
127+ data : result ,
128+ message : '用户创建成功' ,
129+ } ;
130+ } catch ( error ) {
131+ ctx . logger . error ( '创建用户失败:' , error ) ;
132+ ctx . status = 500 ;
133+ ctx . body = {
134+ code : 500 ,
135+ error : '创建用户失败' ,
136+ message : '服务器内部错误' ,
137+ } ;
138+ }
139+ }
67140}
0 commit comments