package com.cyl.h5.controller; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.cyl.manager.ums.domain.entity.Address; import com.cyl.manager.ums.domain.entity.Feedback; import com.cyl.manager.ums.mapper.AddressMapper; import com.cyl.manager.ums.domain.dto.AddressDTO; import com.cyl.manager.ums.service.FeedbackService; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisService; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.OssUtils; import com.ruoyi.system.service.ISysConfigService; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.*; import java.util.stream.Collectors; @RestController @RequestMapping public class H5CommonController { @Autowired private OssUtils ossUtils; @Autowired private AddressMapper addressMapper; @Autowired private RedisService redisService; @Autowired private FeedbackService feedbackService; @Autowired private ISysConfigService sysConfigService; @ApiOperation("新增意见反馈") @Log(title = "意见反馈", businessType = BusinessType.INSERT) @PostMapping("/h5/feedback/create") public ResponseEntity<Integer> add(@RequestBody Feedback feedback) { return ResponseEntity.ok(feedbackService.insert(feedback)); } @GetMapping("/h5/area") public AjaxResult getAddressList() { String addresses = redisService.getAddressList(); if (StringUtils.isNotEmpty(addresses)) { List<AddressDTO> addressDTOList = JSON.parseArray(addresses, AddressDTO.class); if(addressDTOList.size()>0){ return AjaxResult.success(addressDTOList); } } QueryWrapper<Address> addressQueryWrapper = new QueryWrapper<>(); addressQueryWrapper.in("level", Arrays.asList(0,1,2)); List<Address> addressList = addressMapper.selectList(addressQueryWrapper); Map<Long, List<Address>> cityMap = addressList.stream().filter(it -> it.getLevel() == 1).collect(Collectors.groupingBy(it -> it.getParentCode())); Map<Long, List<Address>> districtMap = addressList.stream().filter(it -> it.getLevel() == 2).collect(Collectors.groupingBy(it -> it.getParentCode())); List<AddressDTO> result = new ArrayList<>(); addressList.stream().filter(it -> it.getLevel() == 0).forEach(it -> { AddressDTO dto = new AddressDTO(); dto.setId(it.getCode()); dto.setLevel("province"); dto.setName(it.getName()); dto.setPid(0L); //获取城市列表 List<AddressDTO> child = new ArrayList<>(); if (cityMap.containsKey(it.getCode())) { cityMap.get(it.getCode()).forEach(city -> { AddressDTO cityDto = new AddressDTO(); cityDto.setId(city.getCode()); cityDto.setLevel("city"); cityDto.setName(city.getName()); cityDto.setPid(city.getParentCode()); cityDto.setChildren(districtMap.containsKey(city.getCode()) ? districtMap.get(city.getCode()).stream().map(district -> { AddressDTO districtDto = new AddressDTO(); districtDto.setId(district.getCode()); districtDto.setLevel("district"); districtDto.setName(district.getName()); districtDto.setPid(district.getParentCode()); return districtDto; }).collect(Collectors.toList()) : Collections.EMPTY_LIST); child.add(cityDto); }); } dto.setChildren(child); result.add(dto); }); redisService.setAddressList(JSON.toJSONString(result)); return AjaxResult.success(result); } @PostMapping("/h5/file/upload") public AjaxResult uploadFile(MultipartFile file) { String url = ossUtils.uploadOneFile(file); return AjaxResult.successData(url); } @GetMapping("/no-auth/config/get") public AjaxResult getSysConfig(String configKey) { String s = sysConfigService.selectConfigByKey(configKey); return AjaxResult.successData(s); } }