package com.qxgmat.controller.admin; import com.github.pagehelper.Page; import com.nuliji.tools.PageMessage; import com.nuliji.tools.Response; import com.nuliji.tools.ResponseHelp; import com.nuliji.tools.Transform; import com.qxgmat.data.constants.enums.status.DirectionStatus; import com.qxgmat.data.constants.enums.user.AskTarget; import com.qxgmat.data.constants.enums.user.MoneyRange; import com.qxgmat.data.dao.entity.Manager; import com.qxgmat.data.dao.entity.Question; import com.qxgmat.data.dao.entity.User; import com.qxgmat.data.dao.entity.UserAsk; import com.qxgmat.dto.admin.extend.ManagerExtendDto; import com.qxgmat.dto.admin.extend.QuestionExtendDto; import com.qxgmat.dto.admin.extend.UserExtendDto; import com.qxgmat.dto.admin.request.UserAskDto; import com.qxgmat.dto.admin.request.UserAskOrderDto; import com.qxgmat.dto.admin.response.UserAskListDto; import com.qxgmat.service.ManagerService; import com.qxgmat.service.UsersService; import com.qxgmat.service.inline.ManagerLogService; import com.qxgmat.service.inline.QuestionService; import com.qxgmat.service.inline.UserAskService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.util.Collection; import java.util.List; @RestController("AdminUserAskController") @RequestMapping("/admin/user_ask") @Api(tags = "用户提问接口", description = "用户提问相关", produces = MediaType.APPLICATION_JSON_VALUE) public class UserAskController { @Autowired private ManagerLogService managerLogService; @Autowired private UserAskService userAskService; @Autowired private QuestionService questionService; @Autowired private UsersService usersService; @Autowired private ManagerService managerService; @RequestMapping(value = "/edit", method = RequestMethod.PUT) @ApiOperation(value = "修改提问信息", httpMethod = "PUT") public Response edit(@RequestBody @Validated UserAskDto dto, HttpServletRequest request) { UserAsk entity = Transform.dtoToEntity(dto); entity = userAskService.edit(entity); managerLogService.log(request); return ResponseHelp.success(true); } @RequestMapping(value = "/order", method = RequestMethod.PUT) @ApiOperation(value = "修改提问排序", httpMethod = "PUT") public Response order(@RequestBody @Validated UserAskOrderDto dto, HttpServletRequest request) { userAskService.order(dto.getId(), dto.getOrder()); return ResponseHelp.success(true); } @RequestMapping(value = "/list", method = RequestMethod.GET) @ApiOperation(value = "提问列表", httpMethod = "GET") public Response> list( @RequestParam(required = false, defaultValue = "1") int page, @RequestParam(required = false, defaultValue = "100") int size, @RequestParam(required = false) int category, @RequestParam(required = false, name = "user_id") int userId, @RequestParam(required = false, name = "question_id") int questionId, @RequestParam(required = false, name="target") String target, @RequestParam(required = false, name="status") Integer status, @RequestParam(required = false, name="show_status") Integer showStatus, @RequestParam(required = false, name="money_rang") Integer moneyRang, @RequestParam(required = false, defaultValue = "id") String order, @RequestParam(required = false, defaultValue = "desc") String direction, HttpSession session) { Page p = userAskService.listWithUser(page, size, category, userId, questionId, AskTarget.ValueOf(target), status, showStatus, MoneyRange.ValueOf(moneyRang), order, DirectionStatus.ValueOf(direction)); List pr = Transform.convert(p, UserAskListDto.class); // 绑定题目 Collection questionIds = Transform.getIds(p, UserAsk.class, "questionId"); List questionList = questionService.select(questionIds); List questionExtendDtoList = Transform.convert(questionList, QuestionExtendDto.class); Transform.combine(pr, questionExtendDtoList, UserAskListDto.class, "questionId", "question", QuestionExtendDto.class, "id"); // 绑定用户 Collection userIds = Transform.getIds(p, UserAsk.class, "userId"); List userList = usersService.select(userIds); Transform.combine(pr, userList, UserAskListDto.class, "userId", "user", User.class, "id", UserExtendDto.class); // 绑定管理员 Collection managerIds = Transform.getIds(p, UserAsk.class, "managerId"); List managerList = managerService.select(managerIds); Transform.combine(pr, managerList, UserAskListDto.class, "managerId", "manager", Manager.class, "id", ManagerExtendDto.class); return ResponseHelp.success(pr, page, size, p.getTotal()); } }