主从表数据格式转换为嵌套list结构

 @GetMapping(value = "/list")
    @ApiOperation(value = "分类错误记录", produces = MediaType.APPLICATION_JSON_VALUE)
    @ApiResponses({
            @ApiResponse(code = 200, message = "[{"
                    +"\n\t\t\r\"garbage_img\": \"图片\","
                    +"\n\t\t\r\"garbage\": \"垃圾名称\","
                    +"\n\t\t\r\"error_sort\": \"错扔分类\","
                    +"\n\t\t\r\"correct_sort\": \"正确分类\","
                    +"\n\t\t\r\"game_requency\": \"第几次游戏\","
                    +"\n\t\t\r\"wrong_num\": \"扔错次数\","
                    +"\n\t\r}]")
    })
    public Object query(HttpServletRequest request,@RequestParam @ApiParam(value = "用户ID", required = true) String userId) {
        Map<String, Object> param = WebUtil.getParameter(request);
        param.put("userId",userId);
        ModelMap modelMap = new ModelMap();
        List<GameRecord> lst = service.selectGameErrorSort(param);
        return this.setSuccessModelMap(modelMap, lst);
    }

    public List<GameRecord> selectGameErrorSort(Map<String, Object> params) {
        List<TGameRecordBean> list = tGameRecordMapper.selectGameRecord(params.get("userId").toString());
        Map<Long,GameRecord> map = new HashMap<>();//用来存储次数对象
        List<GameRecord> result = new ArrayList<>();//最终的结果list
        for (TGameRecordBean gameRecordBean : list) {
            Long cs = gameRecordBean.getId();
            TGameErrorSort error = new TGameErrorSort();
            error.setGarbageImage(gameRecordBean.getGarbageImg());
            error.setGarbage(gameRecordBean.getGarbage());
            error.setCorrectSort(gameRecordBean.getCorrectSort());
            error.setErrorSort(gameRecordBean.getErrorSort());
            if(!map.containsKey(cs)){//首次出现第几场记录
                GameRecord newRecord = new GameRecord();
                newRecord.setId(cs);
                newRecord.setWrongNum(gameRecordBean.getWrongNum());
                newRecord.setCreateTime(gameRecordBean.getCreateTime());
                List<TGameErrorSort> errorList = new ArrayList<>();
                errorList.add(error);
                newRecord.setGameErrorList(errorList);
                map.put(cs,newRecord);
                result.add(newRecord);
            }else{
                GameRecord newRecord = map.get(cs);
                List<TGameErrorSort> errorList = newRecord.getGameErrorList();
                errorList.add(error);
            }
        }
        return result;
    }
响应后的数据格式:

Response Body
{
  "rows": [    {
      "createTime": "2019-09-09 15:16:49",
      "gameErrorList": [        {
          "correctSort": "可回收物",
          "createTime": null,
          "errorSort": "干垃圾",
          "garbage": "罐头盒瓶",
          "garbageImage": "https://epms.infore.com/lyb/file/game/garbage/spgt.png",
          "keyword": "",
          "orderBy": "",
          "remark": "",
          "updateTime": null
        },
        {
          "correctSort": "干垃圾",
          "createTime": null,
          "errorSort": "可回收物",
          "garbage": "瓷碗",
          "garbageImage": "https://epms.infore.com/lyb/file/game/garbage/hch2.png",
          "keyword": "",
          "orderBy": "",
          "remark": "",
          "updateTime": null
        },
        {
          "correctSort": "湿垃圾",
          "createTime": null,
          "errorSort": "可回收物",
          "garbage": "大蒜",
          "garbageImage": "https://epms.infore.com/lyb/file/game/garbage/st2.png",
          "keyword": "",
          "orderBy": "",
          "remark": "",
          "updateTime": null
        }
      ],
      "id": "13",
      "wrongNum": "3"
    }
]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值