Blame view

service-user/src/main/java/com/java110/user/cmd/question/QueryOwnerQuestionAnswerCmd.java 4.67 KB
88e030b7   王彪总   init project
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
  package com.java110.user.cmd.question;
  
  import com.alibaba.fastjson.JSONObject;
  import com.java110.core.annotation.Java110Cmd;
  import com.java110.core.context.ICmdDataFlowContext;
  import com.java110.core.event.cmd.Cmd;
  import com.java110.core.event.cmd.CmdEvent;
  import com.java110.dto.question.QuestionAnswerDto;
  import com.java110.dto.user.UserDto;
  import com.java110.dto.user.UserQuestionAnswerDto;
  import com.java110.intf.user.IUserQuestionAnswerV1InnerServiceSMO;
  import com.java110.intf.user.IUserV1InnerServiceSMO;
  import com.java110.utils.exception.CmdException;
  import com.java110.utils.util.Assert;
  import com.java110.vo.ResultVo;
  import org.springframework.beans.factory.annotation.Autowired;
  
  import java.text.ParseException;
  import java.util.List;
  
  /**
   * 查询用户投票或问卷答案的命令类
   * 
   * 该命令类负责处理用户查询自己参与的投票或问卷答案的请求,
   * 通过用户ID获取用户信息,然后查询对应的问卷或投票答案数据
   * 
   * @serviceCode question.queryOwnerQuestionAnswer
   */
  @Java110Cmd(serviceCode = "question.queryOwnerQuestionAnswer")
  public class QueryOwnerQuestionAnswerCmd extends Cmd {
  
      /**
       * 用户服务接口,用于查询用户信息
       */
      @Autowired
      private IUserV1InnerServiceSMO userV1InnerServiceSMOImpl;
  
      /**
       * 用户问卷答案服务接口,用于查询用户的问卷或投票答案
       */
      @Autowired
      private IUserQuestionAnswerV1InnerServiceSMO userQuestionAnswerV1InnerServiceSMOImpl;
  
      /**
       * 验证请求参数的合法性
       * 
       * @param event 命令事件对象,包含请求相关信息
       * @param context 命令数据流上下文,用于获取请求头等信息
       * @param reqJson 请求参数的JSON对象
       * @throws CmdException 当参数验证失败时抛出命令异常
       * @throws ParseException 当参数解析失败时抛出解析异常
       */
      @Override
      public void validate(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
9750b443   王彪总   fix(config): 更新配置...
55
56
          // 验证请求中必须包含项目ID
          Assert.hasKeyAndValue(reqJson, "communityId", "未包含项目信息");
88e030b7   王彪总   init project
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
          // 验证qaType参数的代码被注释,表示该参数不是必须的
          //Assert.hasKeyAndValue(reqJson, "qaType", "未包含qaType");
          
          // 从请求头中获取用户ID,并验证用户是否已登录
          String userId = context.getReqHeaders().get("user-id");
          Assert.hasLength(userId, "用户未登录");
      }
  
      /**
       * 执行查询用户问卷或投票答案的核心业务逻辑
       * 
       * @param event 命令事件对象
       * @param context 命令数据流上下文,用于设置响应结果
       * @param reqJson 请求参数的JSON对象
       * @throws CmdException 当业务逻辑执行失败时抛出命令异常
       * @throws ParseException 当数据解析失败时抛出解析异常
       */
      @Override
      public void doCmd(CmdEvent event, ICmdDataFlowContext context, JSONObject reqJson) throws CmdException, ParseException {
          // 从请求头中获取当前用户ID
          String userId = context.getReqHeaders().get("user-id");
          
          // 创建用户查询对象,设置用户ID
          UserDto userDto = new UserDto();
          userDto.setUserId(userId);
          
          // 调用用户服务查询用户信息
          List<UserDto> userDtos = userV1InnerServiceSMOImpl.queryUsers(userDto);
          // 验证查询结果必须且只能有一条用户记录
          Assert.listOnlyOne(userDtos, "用户不存在");
          
          // 创建用户问卷答案查询对象
          UserQuestionAnswerDto userQuestionAnswerDto = new UserQuestionAnswerDto();
          // 设置查询条件:使用用户手机号作为关联标识
          userQuestionAnswerDto.setLink(userDtos.get(0).getTel());
9750b443   王彪总   fix(config): 更新配置...
92
          // 设置查询条件:项目ID
88e030b7   王彪总   init project
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
          userQuestionAnswerDto.setCommunityId(reqJson.getString("communityId"));
          // 设置查询条件:问卷或投票类型(可选参数)
          userQuestionAnswerDto.setQaType(reqJson.getString("qaType"));
          // 设置查询条件:状态(可选参数)
          userQuestionAnswerDto.setState(reqJson.getString("state"));
          // 设置查询条件:用户问卷ID(可选参数)
          userQuestionAnswerDto.setUserQaId(reqJson.getString("userQaId"));
          
          // 调用服务查询用户的问卷或投票答案列表
          List<QuestionAnswerDto> questionAnswerDtos = userQuestionAnswerV1InnerServiceSMOImpl.queryOwnerQuestionAnswers(userQuestionAnswerDto);
          
          // 将查询结果设置到响应中返回给前端
          context.setResponseEntity(ResultVo.createResponseEntity(questionAnswerDtos));
      }
  }