package com.zhongzheng.controller.common; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zhongzheng.common.config.RuoYiConfig; import com.zhongzheng.common.constant.Constants; import com.zhongzheng.common.core.domain.AjaxResult; import com.zhongzheng.common.core.domain.model.LoginBody; import com.zhongzheng.common.exception.CustomException; import com.zhongzheng.common.utils.ServletUtils; import com.zhongzheng.common.utils.ToolsUtils; import com.zhongzheng.common.utils.file.FileUploadUtils; import com.zhongzheng.common.utils.file.FileUtils; import com.zhongzheng.common.utils.poi.ExcelUtil; import com.zhongzheng.framework.config.ServerConfig; import com.zhongzheng.framework.web.service.WxLoginService; import com.zhongzheng.modules.course.vo.CourseMenuVo; import com.zhongzheng.modules.goods.bo.GoodsQueryBo; import com.zhongzheng.modules.goods.bo.GoodsStudyUrlBo; import com.zhongzheng.modules.goods.bo.UserGoodsListBo; import com.zhongzheng.modules.goods.service.IGoodsService; import com.zhongzheng.modules.goods.vo.GoodsJzsVo; import com.zhongzheng.modules.goods.vo.UserGoodsListVo; import com.zhongzheng.modules.grade.bo.ClassGradeBatchQueryBo; import com.zhongzheng.modules.grade.bo.ClassGradeQueryBo; import com.zhongzheng.modules.grade.bo.RollBackPeriodBo; import com.zhongzheng.modules.grade.bo.UserPeriodEditBo; import com.zhongzheng.modules.grade.service.IClassGradeService; import com.zhongzheng.modules.grade.service.IUserPeriodService; import com.zhongzheng.modules.grade.vo.ClassPeriodStudentExportAllVo; import com.zhongzheng.modules.grade.vo.SyncGoodsExport; import com.zhongzheng.modules.order.bo.OrderAddBo; import com.zhongzheng.modules.order.domain.Order; import com.zhongzheng.modules.order.domain.OrderGoods; import com.zhongzheng.modules.order.service.IOrderGoodsService; import com.zhongzheng.modules.order.service.IOrderService; import com.zhongzheng.modules.order.service.impl.OrderServiceImpl; import com.zhongzheng.modules.system.bo.SysTenantAdminBo; import com.zhongzheng.modules.system.service.ISysTenantService; import com.zhongzheng.modules.system.service.ISysUserService; import com.zhongzheng.modules.user.vo.UserExportVo; import com.zhongzheng.modules.wx.bo.WxShareGoodsBo; import com.zhongzheng.modules.wx.service.IWxPayService; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 通用请求处理 * * @author zhongzheng */ @RestController public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ServerConfig serverConfig; @Autowired private IGoodsService iGoodsService; @Autowired private IUserPeriodService iUserPeriodService; @Autowired private IOrderService iOrderService; @Autowired private WxLoginService wxLoginService; @Autowired private IOrderGoodsService iOrderGoodsService; @Autowired private IWxPayService iWxPayService; @Autowired private IClassGradeService iClassGradeService; @Autowired private ISysTenantService iSysTenantService; /** * 通用下载请求 * * @param fileName 文件名称 * @param delete 是否删除 */ @GetMapping("common/download") public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { try { if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StrUtil.format("文件名称({})非法,不允许下载。 ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); String filePath = RuoYiConfig.getDownloadPath() + fileName; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); /* if (delete) { FileUtils.deleteFile(filePath); }*/ FileUtils.deleteFile(filePath); } catch (Exception e) { log.error("下载文件失败", e); } } /** * 通用上传请求 */ @PostMapping("/common/upload") public AjaxResult uploadFile(MultipartFile file) throws Exception { try { // 上传文件路径 String filePath = RuoYiConfig.getUploadPath(); // 上传并返回新文件名称 String fileName = FileUploadUtils.upload(filePath, file); String url = serverConfig.getUrl() + fileName; AjaxResult ajax = AjaxResult.success(); ajax.put("fileName", fileName); ajax.put("url", url); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } /** * 本地资源通用下载 */ @GetMapping("/common/download/resource") public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) throws Exception { try { if (!FileUtils.checkAllowDownload(resource)) { throw new Exception(StrUtil.format("资源文件({})非法,不允许下载。 ", resource)); } // 本地资源路径 String localPath = RuoYiConfig.getProfile(); // 数据库资源地址 String downloadPath = localPath + StrUtil.subAfter(resource, Constants.RESOURCE_PREFIX,false); // 下载名称 String downloadName = StrUtil.subAfter(downloadPath, "/",true); response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, downloadName); FileUtils.writeBytes(downloadPath, response.getOutputStream()); } catch (Exception e) { log.error("下载文件失败", e); } } @ApiOperation("获取继教二建的商品结构列表") @GetMapping("common/jzs/goodsList") public AjaxResult goodsList() { GoodsQueryBo queryBo = new GoodsQueryBo(); List goodsJzsVoList = iGoodsService.selectRjJzsList(queryBo); ExcelUtil util = new ExcelUtil(SyncGoodsExport.class); // ExcelUtil util = new ExcelUtil<>(SyncGoodsExport.class); return util.exportEasyExcel(util.exportEasyData(goodsJzsVoList), "继建商品"); } @ApiOperation("测试列表") @GetMapping("common/jzs/test") public AjaxResult testList() { UserPeriodEditBo queryBo = new UserPeriodEditBo(); queryBo.setGoodsId(1085L); queryBo.setGradeId(978L); queryBo.setUserId(114L); iUserPeriodService.syncStudyLogToOld(queryBo); return AjaxResult.success(); } @ApiOperation("旧系统打回重审") @PostMapping("common/rollback/period") public AjaxResult rollbackPeriod(@RequestBody RollBackPeriodBo bo) { if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){ return AjaxResult.error("签名错误"); } UserPeriodEditBo queryBo = new UserPeriodEditBo(); queryBo.setRollBackPlat(2); queryBo.setOrderGoodsId(bo.getOrderGoodsId()); iUserPeriodService.confirmRollbackPeriod(queryBo); return AjaxResult.success(); } @ApiOperation("旧系统获取用户商品信息") @PostMapping("common/get/goods") public AjaxResult getUserGoodsList(@RequestBody UserGoodsListBo bo) { if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){ return AjaxResult.error("签名错误"); } List voList = iGoodsService.getUserGoodsList(bo); return AjaxResult.success(voList); } @ApiOperation("旧系统获取商品学习中心路径") @PostMapping("common/get/goods/studyUrl") public AjaxResult getGoodsStudyUrl(@RequestBody GoodsStudyUrlBo bo) { if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){ return AjaxResult.error("签名错误"); } String studyUrl = iGoodsService.getGoodsStudyUrl(bo); return AjaxResult.success(studyUrl); } @ApiOperation("批量查询官方班级人数") @PostMapping("common/free/batch/officialGradeCount") public AjaxResult batchOfficialGradeCount(@RequestBody ClassGradeBatchQueryBo bo) { if(!ToolsUtils.checkSignFromOldSys(bo.getStamp().toString(),bo.getSign())){ return AjaxResult.error("签名错误"); } String[] list = bo.getOfficialNameStr().split(","); List> numList = new ArrayList<>(); for(String officialName : list){ Map map = new HashMap<>(); ClassGradeQueryBo queryBo = new ClassGradeQueryBo(); queryBo.setOfficialName(officialName); map.put("officialName",officialName); Integer num = iClassGradeService.queryOfficialGradeCount(queryBo); map.put("num",num); numList.add(map); } return AjaxResult.success(numList); } @ApiOperation("测试分班") @GetMapping("common/jzs/grade") public AjaxResult testGrade() { iClassGradeService.checkEjjjPeopleNumLimit(195L,984L); return AjaxResult.success(); } @ApiOperation("获取商品分享码") @PostMapping("/shareGoodsCode") public AjaxResult getWxSmallAccessToken(@RequestBody WxShareGoodsBo bo) { String token = wxLoginService.shareGoodsCode(bo); return AjaxResult.success(token); } @ApiOperation("推送分销商品") @PostMapping("/toshareGoods") public AjaxResult toshareGoods(@RequestBody WxShareGoodsBo bo) { String out_trade_no = "22110210122554298238"; Map map = new HashMap<>(); map.put("order_sn", out_trade_no); List goodsList = iOrderGoodsService.listByMap(map); Order order = iOrderService.getOne(new LambdaQueryWrapper().eq(Order::getOrderSn, out_trade_no)); iWxPayService.shareToOldSys(order,goodsList); return AjaxResult.success(); } @ApiOperation("创建新机构后台") @PostMapping("common/create/tenant/admin") public AjaxResult createTenantAdmin(@RequestBody SysTenantAdminBo bo) { iSysTenantService.createTenantAdmin(bo); return AjaxResult.success(); } }