|  | @@ -1,19 +1,43 @@
 | 
	
		
			
				|  |  |  package com.yonge.cooleshow.admin.controller;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.baomidou.mybatisplus.core.metadata.IPage;
 | 
	
		
			
				|  |  | +import com.microsvc.toolkit.common.response.paging.PageInfo;
 | 
	
		
			
				|  |  | +import com.microsvc.toolkit.common.response.paging.QueryInfo;
 | 
	
		
			
				|  |  | +import com.microsvc.toolkit.common.response.template.R;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.admin.io.request.SysSuggestionVo;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.auth.api.entity.SysUser;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.entity.SysSuggestion;
 | 
	
		
			
				|  |  | -import com.yonge.cooleshow.biz.dal.queryInfo.SysSuggestionQueryInfo;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.SysSuggestionType;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.entity.SysUser;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.biz.dal.service.SysSuggestionService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysSuggestionTypeService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.service.SysUserService;
 | 
	
		
			
				|  |  | +import com.yonge.cooleshow.biz.dal.wrapper.SysSuggestionWrapper;
 | 
	
		
			
				|  |  |  import com.yonge.cooleshow.common.controller.BaseController;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.Api;
 | 
	
		
			
				|  |  |  import io.swagger.annotations.ApiOperation;
 | 
	
		
			
				|  |  | -import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.apache.commons.collections.CollectionUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.security.access.prepost.PreAuthorize;
 | 
	
		
			
				|  |  | +import org.springframework.validation.annotation.Validated;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.GetMapping;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.PathVariable;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.PostMapping;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RequestBody;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RequestHeader;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RequestMapping;
 | 
	
		
			
				|  |  | +import org.springframework.web.bind.annotation.RequestParam;
 | 
	
		
			
				|  |  |  import org.springframework.web.bind.annotation.RestController;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +import java.util.Objects;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  @Api(tags = "意见反馈")
 | 
	
		
			
				|  |  |  @RestController
 | 
	
		
			
				|  |  |  @RequestMapping("${app-config.url.admin:}/")
 | 
	
	
		
			
				|  | @@ -21,39 +45,145 @@ public class SysSuggestionController extends BaseController {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Autowired
 | 
	
		
			
				|  |  |      private SysSuggestionService sysSuggestionService;
 | 
	
		
			
				|  |  | -    @Autowired
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  |      private SysUserFeignService sysUserFeignService;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @ApiOperation(value = "新增")
 | 
	
		
			
				|  |  | -    @RequestMapping("sysSuggestion/add")
 | 
	
		
			
				|  |  | -    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/add')")
 | 
	
		
			
				|  |  | -    public Object add(SysSuggestion sysSuggestion) {
 | 
	
		
			
				|  |  | -        SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | -        if (sysUser == null) {
 | 
	
		
			
				|  |  | -            return failed("用户信息获取失败");
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysUserService sysUserService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SysSuggestionTypeService sysSuggestionTypeService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 查询单条
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param id 详情ID
 | 
	
		
			
				|  |  | +     * @return R<SysSuggestionVo.SysSuggestion>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "详情", notes = "传入id")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/detail')")
 | 
	
		
			
				|  |  | +    @GetMapping("/detail/{id}")
 | 
	
		
			
				|  |  | +    public R<SysSuggestionWrapper.SysSuggestion> detail(@PathVariable("id") Long id) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        // 建议详情
 | 
	
		
			
				|  |  | +        SysSuggestion wrapper = sysSuggestionService.detail(id);
 | 
	
		
			
				|  |  | +        SysSuggestionWrapper.SysSuggestion suggestion =
 | 
	
		
			
				|  |  | +                SysSuggestionWrapper.SysSuggestion.from(JSON.toJSONString(wrapper));
 | 
	
		
			
				|  |  | +        if (wrapper != null && wrapper.getSuggestionTypeId() != null) {
 | 
	
		
			
				|  |  | +            SysSuggestionType suggestionType = sysSuggestionTypeService.getById(wrapper.getSuggestionTypeId());
 | 
	
		
			
				|  |  | +            if (suggestionType != null) {
 | 
	
		
			
				|  |  | +                suggestion.setSuggestionTypeName(suggestionType.getName());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            com.yonge.cooleshow.auth.api.entity.SysUser createUser = sysUserService.getByUserId(wrapper.getUserId());
 | 
	
		
			
				|  |  | +            String clientType = wrapper.getClientType();
 | 
	
		
			
				|  |  | +            if (ClientEnum.STUDENT.getCode().equals(clientType) || ClientEnum.TENANT_STUDENT.getCode().equals(clientType)) {
 | 
	
		
			
				|  |  | +                suggestion.setNickname(createUser.getUsername());
 | 
	
		
			
				|  |  | +            } else {
 | 
	
		
			
				|  |  | +                suggestion.setNickname(createUser.getRealName());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            Long handleBy = wrapper.getHandleBy();
 | 
	
		
			
				|  |  | +            if (handleBy != null) {
 | 
	
		
			
				|  |  | +                com.yonge.cooleshow.auth.api.entity.SysUser sysUser = sysUserService.getByUserId(handleBy);
 | 
	
		
			
				|  |  | +                suggestion.setHandleName(sysUser.getUsername());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        sysSuggestion.setUserId(sysUser.getId().longValue());
 | 
	
		
			
				|  |  | -        sysSuggestion.setClientType("TEACHER");
 | 
	
		
			
				|  |  | -        if(StringUtils.isEmpty(sysSuggestion.getMobileNo())){
 | 
	
		
			
				|  |  | -            sysSuggestion.setMobileNo(sysUser.getPhone());
 | 
	
		
			
				|  |  | +        return R.from(suggestion);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 查询分页
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param query SysSuggestionWrapper.SysSuggestionQuery
 | 
	
		
			
				|  |  | +     * @return R<PageInfo < SysSuggestionWrapper.SysSuggestion>>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "查询分页")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/queryPage')")
 | 
	
		
			
				|  |  | +    @PostMapping("/queryPage")
 | 
	
		
			
				|  |  | +    public R<PageInfo<SysSuggestionWrapper.SysSuggestion>> page(@RequestBody SysSuggestionWrapper.SysSuggestionQuery query) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        IPage<SysSuggestionWrapper.SysSuggestion> pages = sysSuggestionService.selectPage(QueryInfo.getPage(query), query);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<SysSuggestionWrapper.SysSuggestion> records = pages.getRecords();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(records)) {
 | 
	
		
			
				|  |  | +            List<Long> handlerList = records.stream().map(SysSuggestionWrapper.SysSuggestion::getHandleBy).filter(Objects::nonNull).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  | +            Map<Long, SysUser> mapByIds = new HashMap<>();
 | 
	
		
			
				|  |  | +            if (CollectionUtils.isNotEmpty(handlerList)) {
 | 
	
		
			
				|  |  | +                mapByIds.putAll(sysUserService.getMapByIds(handlerList));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            for (SysSuggestionWrapper.SysSuggestion item : records) {
 | 
	
		
			
				|  |  | +                Long handleBy = item.getHandleBy();
 | 
	
		
			
				|  |  | +                if (handleBy != null && mapByIds.containsKey(handleBy)) {
 | 
	
		
			
				|  |  | +                    item.setHandleName(mapByIds.getOrDefault(handleBy, new SysUser()).getUsername());
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        sysSuggestionService.insert(sysSuggestion);
 | 
	
		
			
				|  |  | -        return succeed();
 | 
	
		
			
				|  |  | +        return R.from(QueryInfo.pageInfo(pages, records));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 新增
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param suggestion SysSuggestionVo.SysSuggestion
 | 
	
		
			
				|  |  | +     * @return R<Boolean>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "新增", notes = "传入sysSuggestion")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/page')")
 | 
	
		
			
				|  |  | +    @PostMapping("/add")
 | 
	
		
			
				|  |  | +    public R<Boolean> add(@Validated @RequestBody SysSuggestionVo.SysSuggestion suggestion,
 | 
	
		
			
				|  |  | +                          @RequestHeader(name = "user-agent") String userAgent) {
 | 
	
		
			
				|  |  | +        com.yonge.cooleshow.auth.api.entity.SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        suggestion.setUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +        suggestion.setClientType(sysUser.getUserType());
 | 
	
		
			
				|  |  | +        suggestion.setUserAgent(userAgent);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return R.from(sysSuggestionService.save(JSON.parseObject(suggestion.jsonString(), SysSuggestion.class)));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @ApiOperation(value = "删除")
 | 
	
		
			
				|  |  | -    @RequestMapping("sysSuggestion/del")
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 修改
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param suggestion SysSuggestionVo.SysSuggestion
 | 
	
		
			
				|  |  | +     * @return R<Boolean>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "修改", notes = "传入sysSuggestion")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/update')")
 | 
	
		
			
				|  |  | +//    @PostMapping("/update")
 | 
	
		
			
				|  |  | +    public R<Boolean> update(@Validated @RequestBody SysSuggestionVo.SysSuggestion suggestion) {
 | 
	
		
			
				|  |  | +        return R.from(sysSuggestionService.update(JSON.parseObject(suggestion.jsonString(), SysSuggestionWrapper.SysSuggestion.class)));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 删除
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param id 详情ID
 | 
	
		
			
				|  |  | +     * @return R<Boolean>
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "删除", notes = "传入id")
 | 
	
		
			
				|  |  |      @PreAuthorize("@pcs.hasPermissions('sysSuggestion/del')")
 | 
	
		
			
				|  |  | -    public Object del(Long id) {
 | 
	
		
			
				|  |  | -        sysSuggestionService.delete(id);
 | 
	
		
			
				|  |  | -        return succeed();
 | 
	
		
			
				|  |  | +//    @PostMapping("/del")
 | 
	
		
			
				|  |  | +    public R<Boolean> remove(@RequestParam Long id) {
 | 
	
		
			
				|  |  | +        return R.from(sysSuggestionService.removeById(id));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @ApiOperation(value = "分页查询")
 | 
	
		
			
				|  |  | -    @RequestMapping("sysSuggestion/queryPage")
 | 
	
		
			
				|  |  | -    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/queryPage')")
 | 
	
		
			
				|  |  | -    public Object queryPage(SysSuggestionQueryInfo queryInfo) {
 | 
	
		
			
				|  |  | -        return succeed(sysSuggestionService.queryPage(queryInfo));
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "修改")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/handleSuggestion')")
 | 
	
		
			
				|  |  | +    @PostMapping("/handleSuggestion")
 | 
	
		
			
				|  |  | +    public R<Boolean> handleSuggestion(@Validated @RequestBody SysSuggestionWrapper.HandleSuggestion handleSuggestion) {
 | 
	
		
			
				|  |  | +        com.yonge.cooleshow.auth.api.entity.SysUser sysUser = sysUserFeignService.queryUserInfo();
 | 
	
		
			
				|  |  | +        handleSuggestion.setHandleBy(sysUser.getId());
 | 
	
		
			
				|  |  | +        return R.from(sysSuggestionService.handleSuggestion(handleSuggestion));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @ApiOperation(value = "查询未处理的建议数量")
 | 
	
		
			
				|  |  | +    @PreAuthorize("@pcs.hasPermissions('sysSuggestion/queryUnHandleNum')")
 | 
	
		
			
				|  |  | +    @GetMapping("/queryUnHandleNum")
 | 
	
		
			
				|  |  | +    public R<Integer> queryUnHandleNum() {
 | 
	
		
			
				|  |  | +        Integer count = sysSuggestionService.lambdaQuery()
 | 
	
		
			
				|  |  | +                .eq(SysSuggestion::getHandleStatus, false)
 | 
	
		
			
				|  |  | +                .count();
 | 
	
		
			
				|  |  | +        return R.from(count);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }
 |