package com.doumee.api.business; import com.doumee.api.BaseController; import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.model.ApiResponse; import com.doumee.core.model.PageWrap; import com.doumee.core.model.PageData; import com.doumee.core.utils.Constants; import com.doumee.dao.admin.request.UpdateShopSortDTO; import com.doumee.dao.business.model.Shop; import com.doumee.dao.business.vo.ShopTreeVo; import com.doumee.service.business.ShopService; import io.swagger.annotations.*; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.util.ArrayList; import java.util.List; /** * @author 江蹄蹄 * @date 2024/07/04 14:40 */ @Api(tags = "志邦组织信息表") @RestController @RequestMapping("/business/shop") public class ShopController extends BaseController { @Autowired private RedisTemplate redisTemplate; @Autowired private ShopService shopService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("business:shop:create") public ApiResponse create(@RequestBody Shop shop) { return ApiResponse.success(shopService.create(shop)); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("business:shop:delete") public ApiResponse deleteById(@PathVariable Long id) { shopService.deleteById(id); return ApiResponse.success(null); } @ApiOperation("批量删除") @GetMapping("/delete/batch") @RequiresPermissions("business:shop:delete") public ApiResponse deleteByIdInBatch(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { idList.add(Long.valueOf(id)); } shopService.deleteByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("business:shop:update") public ApiResponse updateById(@RequestBody Shop shop) { shopService.updateById(shop); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("business:shop:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(shopService.findPage(pageWrap)); } @ApiOperation("组织树查询") @GetMapping("/tree") @ApiImplicitParams({ @ApiImplicitParam(name = "type", dataType = "Integer", value = "组织类型1:一体商 ,2:加盟商,3:店面,4:部门(HR/加),5:虚拟店面(加/虚)"), }) @RequiresPermissions("business:shop:query") public ApiResponse> tree (@RequestParam(required=false) Integer type){ return ApiResponse.success(shopService.shopTreeCache(type)); } @ApiOperation("根据父级编码查询组织") @GetMapping("/listByParent") @ApiImplicitParams({ @ApiImplicitParam(name = "parentId", dataType = "Integer", value = "父级编码"), }) @RequiresPermissions("business:shop:query") public ApiResponse> listByParent (@RequestParam(required=false) String parentId){ return ApiResponse.success(shopService.listByParent(parentId)); } @ApiOperation(value = "组织信息初始化导入" ,notes = "组织信息初始化导入") @PostMapping("/importExcel") @ApiImplicitParams({ @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class), }) @RequiresPermissions("business:shop:create") public ApiResponse importExcel (@ApiParam(value = "file") MultipartFile file ) { shopService.importBatch(file); // shopService.dealShopNamePath(); return ApiResponse.success("操作成功"); } @ApiOperation(value = "组织Fcode个性化信息导入" ,notes = "组织Fcode个性化信息导入") @PostMapping("/importFcodeBatch") @ApiImplicitParams({ @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class), }) @RequiresPermissions("business:shop:create") public ApiResponse importFcodeBatch (@ApiParam(value = "file") MultipartFile file ) { // Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP); // if(importing!=null && importing){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在导入任务正在执行中,请稍后再试!"); // } shopService.importFcodeBatch(file); return ApiResponse.success("操作成功"); } @ApiOperation(value = "组织品类初始化导入" ,notes = "组织品类初始化导入") @PostMapping("/importCategoryBatch") @ApiImplicitParams({ @ApiImplicitParam(name = "file", value = "file", required = true, paramType = "query", dataType = "file", dataTypeClass = File.class), }) @RequiresPermissions("business:shop:create") public ApiResponse importCategoryBatch (@ApiParam(value = "file") MultipartFile file ) { // Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP); // if(importing!=null && importing){ // throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在导入任务正在执行中,请稍后再试!"); // } shopService.importCategoryBatch(file); return ApiResponse.success("操作成功"); } @ApiOperation(value = "重置上下级关系" ,notes = "重置上下级关系") @PostMapping("/resetRelations") @RequiresPermissions("business:shop:create") public ApiResponse resetRelations ( ) { Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_SHOP); if(importing!=null && importing){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,已存在导入任务正在执行中,请稍后再试!"); } shopService.dealShopNamePath(); return ApiResponse.success("操作成功"); } @ApiOperation("排序") @PostMapping("/updateSort") @RequiresPermissions("business:shop:sort") public ApiResponse updateSort (@Validated @RequestBody UpdateShopSortDTO dto ){ shopService.updateSort(dto); return ApiResponse.success(null); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("business:shop:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { ExcelExporter.build(Shop.class).export(shopService.findPage(pageWrap).getRecords(), "志邦组织信息表", response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("business:shop:query") public ApiResponse findById(@PathVariable Long id) { return ApiResponse.success(shopService.findById(id)); } }