修改系统
This commit is contained in:
		
							
								
								
									
										30
									
								
								stdiet-admin/src/main/java/com/stdiet/StdietApplication.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								stdiet-admin/src/main/java/com/stdiet/StdietApplication.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,30 @@ | ||||
| package com.stdiet; | ||||
|  | ||||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; | ||||
|  | ||||
| /** | ||||
|  * 启动程序 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class }) | ||||
| public class StdietApplication | ||||
| { | ||||
|     public static void main(String[] args) | ||||
|     { | ||||
|         // System.setProperty("spring.devtools.restart.enabled", "false"); | ||||
|         SpringApplication.run(StdietApplication.class, args); | ||||
|         System.out.println("(♥◠‿◠)ノ゙ 启动成功   ლ(´ڡ`ლ)゙  \n" + | ||||
|                 " .-------.       ____     __        \n" + | ||||
|                 " |  _ _   \\      \\   \\   /  /    \n" + | ||||
|                 " | ( ' )  |       \\  _. /  '       \n" + | ||||
|                 " |(_ o _) /        _( )_ .'         \n" + | ||||
|                 " | (_,_).' __  ___(_ o _)'          \n" + | ||||
|                 " |  |\\ \\  |  ||   |(_,_)'         \n" + | ||||
|                 " |  | \\ `'   /|   `-'  /           \n" + | ||||
|                 " |  |  \\    /  \\      /           \n" + | ||||
|                 " ''-'   `'-'    `-..-'              "); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,18 @@ | ||||
| package com.stdiet; | ||||
|  | ||||
| import org.springframework.boot.builder.SpringApplicationBuilder; | ||||
| import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; | ||||
|  | ||||
| /** | ||||
|  * web容器中进行部署 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| public class StdietServletInitializer extends SpringBootServletInitializer | ||||
| { | ||||
|     @Override | ||||
|     protected SpringApplicationBuilder configure(SpringApplicationBuilder application) | ||||
|     { | ||||
|         return application.sources(StdietApplication.class); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,86 @@ | ||||
| package com.stdiet.web.controller.common; | ||||
|  | ||||
| import java.awt.image.BufferedImage; | ||||
| import java.io.IOException; | ||||
| import java.util.concurrent.TimeUnit; | ||||
| import javax.annotation.Resource; | ||||
| import javax.imageio.ImageIO; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.util.FastByteArrayOutputStream; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.google.code.kaptcha.Producer; | ||||
| import com.stdiet.common.constant.Constants; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.redis.RedisCache; | ||||
| import com.stdiet.common.utils.sign.Base64; | ||||
| import com.stdiet.common.utils.uuid.IdUtils; | ||||
|  | ||||
| /** | ||||
|  * 验证码操作处理 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @RestController | ||||
| public class CaptchaController | ||||
| { | ||||
|     @Resource(name = "captchaProducer") | ||||
|     private Producer captchaProducer; | ||||
|  | ||||
|     @Resource(name = "captchaProducerMath") | ||||
|     private Producer captchaProducerMath; | ||||
|  | ||||
|     @Autowired | ||||
|     private RedisCache redisCache; | ||||
|      | ||||
|     // 验证码类型 | ||||
|     @Value("${stdiet.captchaType}") | ||||
|     private String captchaType; | ||||
|  | ||||
|     /** | ||||
|      * 生成验证码 | ||||
|      */ | ||||
|     @GetMapping("/captchaImage") | ||||
|     public AjaxResult getCode(HttpServletResponse response) throws IOException | ||||
|     { | ||||
|         // 保存验证码信息 | ||||
|         String uuid = IdUtils.simpleUUID(); | ||||
|         String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; | ||||
|  | ||||
|         String capStr = null, code = null; | ||||
|         BufferedImage image = null; | ||||
|  | ||||
|         // 生成验证码 | ||||
|         if ("math".equals(captchaType)) | ||||
|         { | ||||
|             String capText = captchaProducerMath.createText(); | ||||
|             capStr = capText.substring(0, capText.lastIndexOf("@")); | ||||
|             code = capText.substring(capText.lastIndexOf("@") + 1); | ||||
|             image = captchaProducerMath.createImage(capStr); | ||||
|         } | ||||
|         else if ("char".equals(captchaType)) | ||||
|         { | ||||
|             capStr = code = captchaProducer.createText(); | ||||
|             image = captchaProducer.createImage(capStr); | ||||
|         } | ||||
|  | ||||
|         redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES); | ||||
|         // 转换流信息写出 | ||||
|         FastByteArrayOutputStream os = new FastByteArrayOutputStream(); | ||||
|         try | ||||
|         { | ||||
|             ImageIO.write(image, "jpg", os); | ||||
|         } | ||||
|         catch (IOException e) | ||||
|         { | ||||
|             return AjaxResult.error(e.getMessage()); | ||||
|         } | ||||
|  | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         ajax.put("uuid", uuid); | ||||
|         ajax.put("img", Base64.encode(os.toByteArray())); | ||||
|         return ajax; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,100 @@ | ||||
| package com.stdiet.web.controller.common; | ||||
|  | ||||
| import com.stdiet.common.config.RuoYiConfig; | ||||
| import com.stdiet.common.constant.Constants; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.common.utils.file.FileUploadUtils; | ||||
| import com.stdiet.common.utils.file.FileUtils; | ||||
| import com.stdiet.framework.config.ServerConfig; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
|  | ||||
| import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | ||||
|  | ||||
| /** | ||||
|  * 通用请求处理 | ||||
|  * | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @RestController | ||||
| public class CommonController { | ||||
|     private static final Logger log = LoggerFactory.getLogger(CommonController.class); | ||||
|  | ||||
|     @Autowired | ||||
|     private ServerConfig serverConfig; | ||||
|  | ||||
|     /** | ||||
|      * 通用下载请求 | ||||
|      * | ||||
|      * @param fileName 文件名称 | ||||
|      * @param delete   是否删除 | ||||
|      */ | ||||
|     @GetMapping("common/download") | ||||
|     public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) { | ||||
|         try { | ||||
|             if (!FileUtils.isValidFilename(fileName)) { | ||||
|                 throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); | ||||
|             } | ||||
|             String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); | ||||
|             String filePath = RuoYiConfig.getDownloadPath() + fileName; | ||||
|  | ||||
|             response.setCharacterEncoding("utf-8"); | ||||
|             response.setContentType("multipart/form-data"); | ||||
|             response.setHeader("Content-Disposition", | ||||
|                     "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName)); | ||||
|             FileUtils.writeBytes(filePath, response.getOutputStream()); | ||||
|             if (delete) { | ||||
|                 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 name, HttpServletRequest request, HttpServletResponse response) throws Exception { | ||||
|         // 本地资源路径 | ||||
|         String localPath = RuoYiConfig.getProfile(); | ||||
|         // 数据库资源地址 | ||||
|         String downloadPath = localPath + StringUtils.substringAfter(name, Constants.RESOURCE_PREFIX); | ||||
|         // 下载名称 | ||||
|         String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); | ||||
|         response.setCharacterEncoding("utf-8"); | ||||
|         response.setContentType("multipart/form-data"); | ||||
|         response.setHeader("Content-Disposition", | ||||
|                 "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName)); | ||||
|         FileUtils.writeBytes(downloadPath, response.getOutputStream()); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,33 @@ | ||||
| package com.stdiet.web.controller.custom; | ||||
|  | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.custom.domain.CusUserPost; | ||||
| import com.stdiet.custom.service.ICusUserPostService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
|  * 销售订单Controller | ||||
|  * | ||||
|  * @author wonder | ||||
|  * @date 2020-09-24 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/custom/post") | ||||
| public class CusUserPostController extends BaseController { | ||||
|     @Autowired | ||||
|     private ICusUserPostService cusUserPostService; | ||||
|  | ||||
|     @GetMapping("/options") | ||||
|     public AjaxResult getOptions() { | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         List<CusUserPost> userPosts = cusUserPostService.selectAllCusUserPost(); | ||||
|  | ||||
|         ajax.put(AjaxResult.DATA_TAG, userPosts); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,21 @@ | ||||
| package com.stdiet.web.controller.custom; | ||||
|  | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.custom.domain.WxPush; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| @RestController | ||||
| @RequestMapping("/wx") | ||||
| public class CusWxController extends BaseController { | ||||
|  | ||||
| //    @GetMapping("/push") | ||||
| //    public String msgPushTest(@PathVariable("echostr") String echostr) { | ||||
| //        return echostr; | ||||
| //    } | ||||
| // | ||||
| //    @PostMapping("/push") | ||||
| //    public void msgPush(@RequestBody WxPush pushMsg) { | ||||
| // | ||||
| //    } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,184 @@ | ||||
| package com.stdiet.web.controller.custom; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.stdiet.framework.web.domain.server.Sys; | ||||
| import com.stdiet.system.domain.CusSalesman; | ||||
| import com.stdiet.system.service.ISysUserService; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.PutMapping; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.custom.domain.SysCommision; | ||||
| import com.stdiet.custom.service.ISysCommisionService; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
|  | ||||
| /** | ||||
|  * 业务提成比例Controller | ||||
|  * | ||||
|  * @author wonder | ||||
|  * @date 2020-09-24 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/custom/commision") | ||||
| public class SysCommisionController extends BaseController { | ||||
|     @Autowired | ||||
|     private ISysCommisionService sysCommisionService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysUserService userService; | ||||
|  | ||||
|     /** | ||||
|      * 查询业务提成比例列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysCommision sysCommision) { | ||||
|         startPage(); | ||||
|         List<SysCommision> list = sysCommisionService.selectSysCommisionList(sysCommision); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 导出业务提成比例列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:export')") | ||||
|     @Log(title = "业务提成比例", businessType = BusinessType.EXPORT) | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysCommision sysCommision) { | ||||
| //        List<SysCommision> list = sysCommisionService.selectSysCommisionList(sysCommision); | ||||
|         ExcelUtil<SysCommision> util = new ExcelUtil<SysCommision>(SysCommision.class); | ||||
|         List<SysCommision> list = sysCommisionService.selectSysCommisionDetail(sysCommision); | ||||
|         for (SysCommision detail : list) { | ||||
|             detail.setRate(0F); | ||||
|             SysCommision tmpQueryCom = new SysCommision(); | ||||
|             tmpQueryCom.setUserId(detail.getUserId()); | ||||
|             tmpQueryCom.setPostId(detail.getPostId()); | ||||
|             List<SysCommision> tmpComList = sysCommisionService.selectSysCommisionList(tmpQueryCom); | ||||
|  | ||||
|             float dAmount = detail.getAmount().floatValue(); | ||||
|             for (int i = 0; i < tmpComList.size(); i++) { | ||||
|                 SysCommision com = tmpComList.get(i); | ||||
|                 float cAmount = com.getAmount().floatValue(); | ||||
|                 if (dAmount <= cAmount && i == 0) { | ||||
|                     // 第一条规则 | ||||
|                     detail.setRate(com.getRate()); | ||||
|                     break; | ||||
|                 } else if (i == tmpComList.size() - 1 && dAmount > cAmount) { | ||||
|                     // 最后一条规则 | ||||
|                     detail.setRate(com.getRate()); | ||||
|                     break; | ||||
|                 } else if (cAmount < dAmount && dAmount <= tmpComList.get(i + 1).getAmount().floatValue()) { | ||||
|                     // 中间规则 | ||||
|                     detail.setRate(tmpComList.get(i + 1).getRate()); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             float amount = detail.getAmount().floatValue(); | ||||
|             amount = amount * detail.getRate() / 100F; | ||||
|             detail.setCommision(new BigDecimal(amount)); | ||||
|         } | ||||
|  | ||||
|         return util.exportExcel(list, "commision"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取业务提成比例详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:query')") | ||||
|     @GetMapping(value = "/{ruleId}") | ||||
|     public AjaxResult getInfo(@PathVariable("ruleId") Long ruleId, SysCommision sysCommision) { | ||||
|         sysCommision.setRuleId(ruleId); | ||||
| //        System.out.println(sysCommision); | ||||
|         return AjaxResult.success(sysCommisionService.selectSysCommisionById(sysCommision)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增业务提成比例 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:add')") | ||||
|     @Log(title = "业务提成比例", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@RequestBody SysCommision sysCommision) { | ||||
|         return toAjax(sysCommisionService.insertSysCommision(sysCommision)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改业务提成比例 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:edit')") | ||||
|     @Log(title = "业务提成比例", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@RequestBody SysCommision sysCommision) { | ||||
|         return toAjax(sysCommisionService.updateSysCommision(sysCommision)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除业务提成比例 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('commision:config:remove')") | ||||
|     @Log(title = "业务提成比例", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{ruleIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] ruleIds) { | ||||
|         return toAjax(sysCommisionService.deleteSysCommisionByIds(ruleIds)); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/salesman") | ||||
|     public AjaxResult getSalesman() { | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         List<CusSalesman> list = userService.selectSalesman(); | ||||
|         ajax.put(AjaxResult.DATA_TAG, list); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('commision:detail:list')") | ||||
|     @GetMapping("/detail") | ||||
|     public TableDataInfo getDetail(SysCommision sysCommision) { | ||||
|         startPage(); | ||||
|         List<SysCommision> list = sysCommisionService.selectSysCommisionDetail(sysCommision); | ||||
|         for (SysCommision detail : list) { | ||||
|             detail.setRate(0F); | ||||
|             SysCommision tmpQueryCom = new SysCommision(); | ||||
|             tmpQueryCom.setUserId(detail.getUserId()); | ||||
|             tmpQueryCom.setPostId(detail.getPostId()); | ||||
|             List<SysCommision> tmpComList = sysCommisionService.selectSysCommisionList(tmpQueryCom); | ||||
|  | ||||
|             float dAmount = detail.getAmount().floatValue(); | ||||
|             for (int i = 0; i < tmpComList.size(); i++) { | ||||
|                 SysCommision com = tmpComList.get(i); | ||||
|                 float cAmount = com.getAmount().floatValue(); | ||||
|                 if (dAmount <= cAmount && i == 0) { | ||||
|                     // 第一条规则 | ||||
|                     detail.setRate(com.getRate()); | ||||
|                     break; | ||||
|                 } else if (i == tmpComList.size() - 1 && dAmount > cAmount) { | ||||
|                     // 最后一条规则 | ||||
|                     detail.setRate(com.getRate()); | ||||
|                     break; | ||||
|                 } else if (cAmount < dAmount && dAmount <= tmpComList.get(i + 1).getAmount().floatValue()) { | ||||
|                     // 中间规则 | ||||
|                     detail.setRate(tmpComList.get(i + 1).getRate()); | ||||
|                     break; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             float amount = detail.getAmount().floatValue(); | ||||
|             amount = amount * detail.getRate() / 100F; | ||||
|             detail.setCommision(new BigDecimal(amount)); | ||||
|         } | ||||
|         return getDataTable(list); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,140 @@ | ||||
| package com.stdiet.web.controller.custom; | ||||
|  | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.custom.domain.SysContract; | ||||
| import com.stdiet.custom.page.PdfProcessInfo; | ||||
| import com.stdiet.custom.service.ISysContractService; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
|  | ||||
| /** | ||||
|  * 合同Controller | ||||
|  * | ||||
|  * @author wonder | ||||
|  * @date 2020-10-23 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/custom/contract") | ||||
| public class SysContractController extends BaseController { | ||||
|     @Autowired | ||||
|     private ISysContractService sysContractService; | ||||
|  | ||||
|     /** | ||||
|      * 查询合同列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysContract sysContract) { | ||||
|         startPage(); | ||||
|         List<SysContract> list = sysContractService.selectSysContractList(sysContract); | ||||
|         for (SysContract contract : list) { | ||||
|             if (contract.getSignName() != null && !contract.getSignName().equals("") && !contract.getName().trim().equals(contract.getSignName())) { | ||||
|                 contract.setName(contract.getName() + "(" + contract.getSignName() + ")"); | ||||
|             } | ||||
|             if(contract.getPhone() != null && !contract.getPhone().equals("")) { | ||||
|                 contract.setPhone(contract.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")); | ||||
|             } | ||||
|         } | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 导出合同列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:export')") | ||||
|     @Log(title = "合同", businessType = BusinessType.EXPORT) | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysContract sysContract) { | ||||
|         List<SysContract> list = sysContractService.selectSysContractList(sysContract); | ||||
|         ExcelUtil<SysContract> util = new ExcelUtil<SysContract>(SysContract.class); | ||||
|         return util.exportExcel(list, "contract"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取合同详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:query')") | ||||
|     @GetMapping(value = "/{id}") | ||||
|     public AjaxResult getInfo(@PathVariable("id") Long id) { | ||||
|         return AjaxResult.success(sysContractService.selectSysContractById(id)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增合同 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:add')") | ||||
|     @Log(title = "合同", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@RequestBody SysContract sysContract) { | ||||
|         return toAjax(sysContractService.insertSysContract(sysContract)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改合同 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:edit')") | ||||
|     @Log(title = "合同", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@RequestBody SysContract sysContract) { | ||||
|         return toAjax(sysContractService.updateSysContract(sysContract)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除合同 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:contract:remove')") | ||||
|     @Log(title = "合同", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{ids}") | ||||
|     public AjaxResult remove(@PathVariable Long[] ids) { | ||||
|         return toAjax(sysContractService.deleteSysContractByIds(ids)); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     @GetMapping("/file/{id}") | ||||
|     public AjaxResult getfile(@PathVariable long id) { | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         SysContract contract = sysContractService.selectSysContractById(id); | ||||
|         if (contract.getStatus().equals("yes")) { | ||||
|             ajax.put("url", contract.getPath()); | ||||
|         } else { | ||||
|             Map<String, String> data = new HashMap<>(); | ||||
|             data.put("id", contract.getId().toString()); | ||||
|             data.put("amount", contract.getAmount().toString()); | ||||
|             data.put("serveTime", contract.getServeTime() + ""); | ||||
|             data.put("tutor", contract.getTutor()); | ||||
|             data.put("servePromise", contract.getServePromise()); | ||||
|             data.put("remark", contract.getRemark()); | ||||
|             ajax.put("data", data); | ||||
|         } | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 合同签单 | ||||
|      */ | ||||
|     @PostMapping("/sign") | ||||
|     public AjaxResult signContract(@RequestBody SysContract sysContract) { | ||||
|         String path = "/file/" + sysContract.getId() + ".pdf"; | ||||
|         sysContract.setPath(path); | ||||
|         PdfProcessInfo result = sysContractService.signContract(sysContract); | ||||
|         if (result.getCode() == 1) { | ||||
|             sysContract.setStatus("yes"); | ||||
|             sysContractService.updateSysContract(sysContract); | ||||
|             AjaxResult ajax = AjaxResult.success(); | ||||
|             ajax.put("url", path); | ||||
|             return ajax; | ||||
|         } else { | ||||
|             return AjaxResult.error(result.getMsg()); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,166 @@ | ||||
| package com.stdiet.web.controller.custom; | ||||
|  | ||||
| import java.math.BigDecimal; | ||||
| import java.util.List; | ||||
|  | ||||
| import com.stdiet.common.core.domain.entity.SysDictData; | ||||
| import com.stdiet.common.core.domain.entity.SysUser; | ||||
| import com.stdiet.custom.controller.OrderBaseController; | ||||
| import com.stdiet.custom.page.OrderTableDataInfo; | ||||
| import com.stdiet.system.service.ISysDictDataService; | ||||
| import com.stdiet.system.service.ISysUserService; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.PutMapping; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.custom.domain.SysOrder; | ||||
| import com.stdiet.custom.service.ISysOrderService; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
|  | ||||
| /** | ||||
|  * 销售订单Controller | ||||
|  * | ||||
|  * @author wonder | ||||
|  * @date 2020-09-24 | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/custom/order") | ||||
| public class SysOrderController extends OrderBaseController { | ||||
|     @Autowired | ||||
|     private ISysOrderService sysOrderService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysUserService userService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysDictDataService dictDataService; | ||||
|  | ||||
|     /** | ||||
|      * 查询销售订单列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:list')") | ||||
|     @GetMapping("/list") | ||||
|     public OrderTableDataInfo list(SysOrder sysOrder) { | ||||
|         startPage(); | ||||
|         List<SysOrder> list = sysOrderService.selectSysOrderList(sysOrder); | ||||
|         List<SysUser> userList = userService.selectAllUser(); | ||||
|         BigDecimal totalAmount = sysOrderService.selectAllOrderAmount(sysOrder); | ||||
|         if(totalAmount == null) { | ||||
|             totalAmount = new BigDecimal(0); | ||||
|         } | ||||
|  | ||||
|         for (SysOrder order : list) { | ||||
|             for (SysUser user : userList) { | ||||
|                 if (user.getUserId().equals(order.getPreSaleId())) { | ||||
|                     order.setPreSale(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getAfterSaleId())) { | ||||
|                     order.setAfterSale(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getNutritionistId())) { | ||||
|                     order.setNutritionist(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getNutriAssisId())) { | ||||
|                     order.setNutriAssis(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getOperatorId())) { | ||||
|                     order.setOperator(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getPlannerId())) { | ||||
|                     order.setPlanner(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getPlannerAssisId())) { | ||||
|                     order.setPlannerAssis(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getOperatorAssisId())) { | ||||
|                     order.setOperatorAssis(user.getNickName()); | ||||
|                 } | ||||
|             } | ||||
|             if(order.getPhone() != null && !order.getPhone().equals("")) { | ||||
|                 order.setPhone(order.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2")); | ||||
|             } | ||||
|         } | ||||
|         return getOrderDataTable(list, totalAmount); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * 导出销售订单列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:export')") | ||||
|     @Log(title = "销售订单", businessType = BusinessType.EXPORT) | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysOrder sysOrder) { | ||||
|         List<SysOrder> list = sysOrderService.selectSysOrderList(sysOrder); | ||||
|         List<SysUser> userList = userService.selectAllUser(); | ||||
|  | ||||
|         for (SysOrder order : list) { | ||||
|             for (SysUser user : userList) { | ||||
|                 if (user.getUserId().equals(order.getPreSaleId())) { | ||||
|                     order.setPreSale(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getAfterSaleId())) { | ||||
|                     order.setAfterSale(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getNutritionistId())) { | ||||
|                     order.setNutritionist(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getNutriAssisId())) { | ||||
|                     order.setNutriAssis(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getOperatorId())) { | ||||
|                     order.setOperator(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getPlannerId())) { | ||||
|                     order.setPlanner(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getPlannerAssisId())) { | ||||
|                     order.setPlannerAssis(user.getNickName()); | ||||
|                 } else if (user.getUserId().equals(order.getOperatorAssisId())) { | ||||
|                     order.setOperatorAssis(user.getNickName()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         ExcelUtil<SysOrder> util = new ExcelUtil<SysOrder>(SysOrder.class); | ||||
|         return util.exportExcel(list, "order"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取销售订单详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:query')") | ||||
|     @GetMapping(value = "/{orderId}") | ||||
|     public AjaxResult getInfo(@PathVariable("orderId") Long orderId) { | ||||
|         return AjaxResult.success(sysOrderService.selectSysOrderById(orderId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增销售订单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:add')") | ||||
|     @Log(title = "销售订单", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@RequestBody SysOrder sysOrder) { | ||||
|         return toAjax(sysOrderService.insertSysOrder(sysOrder)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改销售订单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:edit')") | ||||
|     @Log(title = "销售订单", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@RequestBody SysOrder sysOrder) { | ||||
|         return toAjax(sysOrderService.updateSysOrder(sysOrder)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除销售订单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('custom:order:remove')") | ||||
|     @Log(title = "销售订单", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{orderIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] orderIds) { | ||||
|         return toAjax(sysOrderService.deleteSysOrderByIds(orderIds)); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,28 @@ | ||||
| package com.stdiet.web.controller.monitor; | ||||
|  | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.framework.web.domain.Server; | ||||
|  | ||||
| /** | ||||
|  * 服务器监控 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/monitor/server") | ||||
| public class ServerController extends BaseController | ||||
| { | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:server:list')") | ||||
|     @GetMapping() | ||||
|     public AjaxResult getInfo() throws Exception | ||||
|     { | ||||
|         Server server = new Server(); | ||||
|         server.copyTo(); | ||||
|         return AjaxResult.success(server); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,67 @@ | ||||
| package com.stdiet.web.controller.monitor; | ||||
|  | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.domain.SysLogininfor; | ||||
| import com.stdiet.system.service.ISysLogininforService; | ||||
|  | ||||
| /** | ||||
|  * 系统访问记录 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/monitor/logininfor") | ||||
| public class SysLogininforController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysLogininforService logininforService; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:logininfor:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysLogininfor logininfor) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "登录日志", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:logininfor:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysLogininfor logininfor) | ||||
|     { | ||||
|         List<SysLogininfor> list = logininforService.selectLogininforList(logininfor); | ||||
|         ExcelUtil<SysLogininfor> util = new ExcelUtil<SysLogininfor>(SysLogininfor.class); | ||||
|         return util.exportExcel(list, "登录日志"); | ||||
|     } | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") | ||||
|     @Log(title = "登录日志", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{infoIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] infoIds) | ||||
|     { | ||||
|         return toAjax(logininforService.deleteLogininforByIds(infoIds)); | ||||
|     } | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:logininfor:remove')") | ||||
|     @Log(title = "登录日志", businessType = BusinessType.CLEAN) | ||||
|     @DeleteMapping("/clean") | ||||
|     public AjaxResult clean() | ||||
|     { | ||||
|         logininforService.cleanLogininfor(); | ||||
|         return AjaxResult.success(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,66 @@ | ||||
| package com.stdiet.web.controller.monitor; | ||||
|  | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.domain.SysOperLog; | ||||
| import com.stdiet.system.service.ISysOperLogService; | ||||
|  | ||||
| /** | ||||
|  * 操作日志记录 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/monitor/operlog") | ||||
| public class SysOperlogController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysOperLogService operLogService; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:operlog:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysOperLog operLog) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysOperLog> list = operLogService.selectOperLogList(operLog); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "操作日志", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:operlog:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysOperLog operLog) | ||||
|     { | ||||
|         List<SysOperLog> list = operLogService.selectOperLogList(operLog); | ||||
|         ExcelUtil<SysOperLog> util = new ExcelUtil<SysOperLog>(SysOperLog.class); | ||||
|         return util.exportExcel(list, "操作日志"); | ||||
|     } | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") | ||||
|     @DeleteMapping("/{operIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] operIds) | ||||
|     { | ||||
|         return toAjax(operLogService.deleteOperLogByIds(operIds)); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "操作日志", businessType = BusinessType.CLEAN) | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:operlog:remove')") | ||||
|     @DeleteMapping("/clean") | ||||
|     public AjaxResult clean() | ||||
|     { | ||||
|         operLogService.cleanOperLog(); | ||||
|         return AjaxResult.success(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,92 @@ | ||||
| package com.stdiet.web.controller.monitor; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.Collection; | ||||
| import java.util.Collections; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PathVariable; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.Constants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.core.redis.RedisCache; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.system.domain.SysUserOnline; | ||||
| import com.stdiet.system.service.ISysUserOnlineService; | ||||
|  | ||||
| /** | ||||
|  * 在线用户监控 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/monitor/online") | ||||
| public class SysUserOnlineController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysUserOnlineService userOnlineService; | ||||
|  | ||||
|     @Autowired | ||||
|     private RedisCache redisCache; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:online:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(String ipaddr, String userName) | ||||
|     { | ||||
|         Collection<String> keys = redisCache.keys(Constants.LOGIN_TOKEN_KEY + "*"); | ||||
|         List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>(); | ||||
|         for (String key : keys) | ||||
|         { | ||||
|             LoginUser user = redisCache.getCacheObject(key); | ||||
|             if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) | ||||
|             { | ||||
|                 if (StringUtils.equals(ipaddr, user.getIpaddr()) && StringUtils.equals(userName, user.getUsername())) | ||||
|                 { | ||||
|                     userOnlineList.add(userOnlineService.selectOnlineByInfo(ipaddr, userName, user)); | ||||
|                 } | ||||
|             } | ||||
|             else if (StringUtils.isNotEmpty(ipaddr)) | ||||
|             { | ||||
|                 if (StringUtils.equals(ipaddr, user.getIpaddr())) | ||||
|                 { | ||||
|                     userOnlineList.add(userOnlineService.selectOnlineByIpaddr(ipaddr, user)); | ||||
|                 } | ||||
|             } | ||||
|             else if (StringUtils.isNotEmpty(userName) && StringUtils.isNotNull(user.getUser())) | ||||
|             { | ||||
|                 if (StringUtils.equals(userName, user.getUsername())) | ||||
|                 { | ||||
|                     userOnlineList.add(userOnlineService.selectOnlineByUserName(userName, user)); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 userOnlineList.add(userOnlineService.loginUserToUserOnline(user)); | ||||
|             } | ||||
|         } | ||||
|         Collections.reverse(userOnlineList); | ||||
|         userOnlineList.removeAll(Collections.singleton(null)); | ||||
|         return getDataTable(userOnlineList); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 强退用户 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('monitor:online:forceLogout')") | ||||
|     @Log(title = "在线用户", businessType = BusinessType.FORCE) | ||||
|     @DeleteMapping("/{tokenId}") | ||||
|     public AjaxResult forceLogout(@PathVariable String tokenId) | ||||
|     { | ||||
|         redisCache.deleteObject(Constants.LOGIN_TOKEN_KEY + tokenId); | ||||
|         return AjaxResult.success(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,135 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.annotation.RepeatSubmit; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.domain.SysConfig; | ||||
| import com.stdiet.system.service.ISysConfigService; | ||||
|  | ||||
| /** | ||||
|  * 参数配置 信息操作处理 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/config") | ||||
| public class SysConfigController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysConfigService configService; | ||||
|  | ||||
|     /** | ||||
|      * 获取参数配置列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysConfig config) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysConfig> list = configService.selectConfigList(config); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "参数管理", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysConfig config) | ||||
|     { | ||||
|         List<SysConfig> list = configService.selectConfigList(config); | ||||
|         ExcelUtil<SysConfig> util = new ExcelUtil<SysConfig>(SysConfig.class); | ||||
|         return util.exportExcel(list, "参数数据"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据参数编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:query')") | ||||
|     @GetMapping(value = "/{configId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long configId) | ||||
|     { | ||||
|         return AjaxResult.success(configService.selectConfigById(configId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据参数键名查询参数值 | ||||
|      */ | ||||
|     @GetMapping(value = "/configKey/{configKey}") | ||||
|     public AjaxResult getConfigKey(@PathVariable String configKey) | ||||
|     { | ||||
|         return AjaxResult.success(configService.selectConfigByKey(configKey)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增参数配置 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:add')") | ||||
|     @Log(title = "参数管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     @RepeatSubmit | ||||
|     public AjaxResult add(@Validated @RequestBody SysConfig config) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) | ||||
|         { | ||||
|             return AjaxResult.error("新增参数'" + config.getConfigName() + "'失败,参数键名已存在"); | ||||
|         } | ||||
|         config.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(configService.insertConfig(config)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改参数配置 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:edit')") | ||||
|     @Log(title = "参数管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysConfig config) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(configService.checkConfigKeyUnique(config))) | ||||
|         { | ||||
|             return AjaxResult.error("修改参数'" + config.getConfigName() + "'失败,参数键名已存在"); | ||||
|         } | ||||
|         config.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(configService.updateConfig(config)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除参数配置 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:remove')") | ||||
|     @Log(title = "参数管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{configIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] configIds) | ||||
|     { | ||||
|         return toAjax(configService.deleteConfigByIds(configIds)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 清空缓存 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:config:remove')") | ||||
|     @Log(title = "参数管理", businessType = BusinessType.CLEAN) | ||||
|     @DeleteMapping("/clearCache") | ||||
|     public AjaxResult clearCache() | ||||
|     { | ||||
|         configService.clearCache(); | ||||
|         return AjaxResult.success(); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,163 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import org.apache.commons.lang3.ArrayUtils; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysDept; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.system.service.ISysDeptService; | ||||
|  | ||||
| /** | ||||
|  * 部门信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/dept") | ||||
| public class SysDeptController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysDeptService deptService; | ||||
|  | ||||
|     /** | ||||
|      * 获取部门列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:list')") | ||||
|     @GetMapping("/list") | ||||
|     public AjaxResult list(SysDept dept) | ||||
|     { | ||||
|         List<SysDept> depts = deptService.selectDeptList(dept); | ||||
|         return AjaxResult.success(depts); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询部门列表(排除节点) | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:list')") | ||||
|     @GetMapping("/list/exclude/{deptId}") | ||||
|     public AjaxResult excludeChild(@PathVariable(value = "deptId", required = false) Long deptId) | ||||
|     { | ||||
|         List<SysDept> depts = deptService.selectDeptList(new SysDept()); | ||||
|         Iterator<SysDept> it = depts.iterator(); | ||||
|         while (it.hasNext()) | ||||
|         { | ||||
|             SysDept d = (SysDept) it.next(); | ||||
|             if (d.getDeptId().intValue() == deptId | ||||
|                     || ArrayUtils.contains(StringUtils.split(d.getAncestors(), ","), deptId + "")) | ||||
|             { | ||||
|                 it.remove(); | ||||
|             } | ||||
|         } | ||||
|         return AjaxResult.success(depts); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据部门编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:query')") | ||||
|     @GetMapping(value = "/{deptId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long deptId) | ||||
|     { | ||||
|         return AjaxResult.success(deptService.selectDeptById(deptId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取部门下拉树列表 | ||||
|      */ | ||||
|     @GetMapping("/treeselect") | ||||
|     public AjaxResult treeselect(SysDept dept) | ||||
|     { | ||||
|         List<SysDept> depts = deptService.selectDeptList(dept); | ||||
|         return AjaxResult.success(deptService.buildDeptTreeSelect(depts)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 加载对应角色部门列表树 | ||||
|      */ | ||||
|     @GetMapping(value = "/roleDeptTreeselect/{roleId}") | ||||
|     public AjaxResult roleDeptTreeselect(@PathVariable("roleId") Long roleId) | ||||
|     { | ||||
|         List<SysDept> depts = deptService.selectDeptList(new SysDept()); | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         ajax.put("checkedKeys", deptService.selectDeptListByRoleId(roleId)); | ||||
|         ajax.put("depts", deptService.buildDeptTreeSelect(depts)); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增部门 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:add')") | ||||
|     @Log(title = "部门管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysDept dept) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) | ||||
|         { | ||||
|             return AjaxResult.error("新增部门'" + dept.getDeptName() + "'失败,部门名称已存在"); | ||||
|         } | ||||
|         dept.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(deptService.insertDept(dept)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改部门 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:edit')") | ||||
|     @Log(title = "部门管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysDept dept) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(deptService.checkDeptNameUnique(dept))) | ||||
|         { | ||||
|             return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,部门名称已存在"); | ||||
|         } | ||||
|         else if (dept.getParentId().equals(dept.getDeptId())) | ||||
|         { | ||||
|             return AjaxResult.error("修改部门'" + dept.getDeptName() + "'失败,上级部门不能是自己"); | ||||
|         } | ||||
|         else if (StringUtils.equals(UserConstants.DEPT_DISABLE, dept.getStatus()) | ||||
|                 && deptService.selectNormalChildrenDeptById(dept.getDeptId()) > 0) | ||||
|         { | ||||
|             return AjaxResult.error("该部门包含未停用的子部门!"); | ||||
|         } | ||||
|         dept.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(deptService.updateDept(dept)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除部门 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dept:remove')") | ||||
|     @Log(title = "部门管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{deptId}") | ||||
|     public AjaxResult remove(@PathVariable Long deptId) | ||||
|     { | ||||
|         if (deptService.hasChildByDeptId(deptId)) | ||||
|         { | ||||
|             return AjaxResult.error("存在下级部门,不允许删除"); | ||||
|         } | ||||
|         if (deptService.checkDeptExistUser(deptId)) | ||||
|         { | ||||
|             return AjaxResult.error("部门存在用户,不允许删除"); | ||||
|         } | ||||
|         return toAjax(deptService.deleteDeptById(deptId)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,113 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysDictData; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.service.ISysDictDataService; | ||||
| import com.stdiet.system.service.ISysDictTypeService; | ||||
|  | ||||
| /** | ||||
|  * 数据字典信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/dict/data") | ||||
| public class SysDictDataController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysDictDataService dictDataService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysDictTypeService dictTypeService; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysDictData dictData) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysDictData> list = dictDataService.selectDictDataList(dictData); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "字典数据", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysDictData dictData) | ||||
|     { | ||||
|         List<SysDictData> list = dictDataService.selectDictDataList(dictData); | ||||
|         ExcelUtil<SysDictData> util = new ExcelUtil<SysDictData>(SysDictData.class); | ||||
|         return util.exportExcel(list, "字典数据"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询字典数据详细 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:query')") | ||||
|     @GetMapping(value = "/{dictCode}") | ||||
|     public AjaxResult getInfo(@PathVariable Long dictCode) | ||||
|     { | ||||
|         return AjaxResult.success(dictDataService.selectDictDataById(dictCode)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据字典类型查询字典数据信息 | ||||
|      */ | ||||
|     @GetMapping(value = "/type/{dictType}") | ||||
|     public AjaxResult dictType(@PathVariable String dictType) | ||||
|     { | ||||
|         return AjaxResult.success(dictTypeService.selectDictDataByType(dictType)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:add')") | ||||
|     @Log(title = "字典数据", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysDictData dict) | ||||
|     { | ||||
|         dict.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(dictDataService.insertDictData(dict)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改保存字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:edit')") | ||||
|     @Log(title = "字典数据", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysDictData dict) | ||||
|     { | ||||
|         dict.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(dictDataService.updateDictData(dict)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||||
|     @Log(title = "字典类型", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{dictCodes}") | ||||
|     public AjaxResult remove(@PathVariable Long[] dictCodes) | ||||
|     { | ||||
|         return toAjax(dictDataService.deleteDictDataByIds(dictCodes)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,131 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysDictType; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.service.ISysDictTypeService; | ||||
|  | ||||
| /** | ||||
|  * 数据字典信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/dict/type") | ||||
| public class SysDictTypeController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysDictTypeService dictTypeService; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysDictType dictType) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "字典类型", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysDictType dictType) | ||||
|     { | ||||
|         List<SysDictType> list = dictTypeService.selectDictTypeList(dictType); | ||||
|         ExcelUtil<SysDictType> util = new ExcelUtil<SysDictType>(SysDictType.class); | ||||
|         return util.exportExcel(list, "字典类型"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 查询字典类型详细 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:query')") | ||||
|     @GetMapping(value = "/{dictId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long dictId) | ||||
|     { | ||||
|         return AjaxResult.success(dictTypeService.selectDictTypeById(dictId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:add')") | ||||
|     @Log(title = "字典类型", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysDictType dict) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) | ||||
|         { | ||||
|             return AjaxResult.error("新增字典'" + dict.getDictName() + "'失败,字典类型已存在"); | ||||
|         } | ||||
|         dict.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(dictTypeService.insertDictType(dict)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:edit')") | ||||
|     @Log(title = "字典类型", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysDictType dict) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(dictTypeService.checkDictTypeUnique(dict))) | ||||
|         { | ||||
|             return AjaxResult.error("修改字典'" + dict.getDictName() + "'失败,字典类型已存在"); | ||||
|         } | ||||
|         dict.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(dictTypeService.updateDictType(dict)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除字典类型 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||||
|     @Log(title = "字典类型", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{dictIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] dictIds) | ||||
|     { | ||||
|         return toAjax(dictTypeService.deleteDictTypeByIds(dictIds)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 清空缓存 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:dict:remove')") | ||||
|     @Log(title = "字典类型", businessType = BusinessType.CLEAN) | ||||
|     @DeleteMapping("/clearCache") | ||||
|     public AjaxResult clearCache() | ||||
|     { | ||||
|         dictTypeService.clearCache(); | ||||
|         return AjaxResult.success(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取字典选择框列表 | ||||
|      */ | ||||
|     @GetMapping("/optionselect") | ||||
|     public AjaxResult optionselect() | ||||
|     { | ||||
|         List<SysDictType> dictTypes = dictTypeService.selectDictTypeAll(); | ||||
|         return AjaxResult.success(dictTypes); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,94 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| 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 com.stdiet.common.constant.Constants; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysMenu; | ||||
| import com.stdiet.common.core.domain.entity.SysUser; | ||||
| import com.stdiet.common.core.domain.model.LoginBody; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.utils.ServletUtils; | ||||
| import com.stdiet.framework.web.service.SysLoginService; | ||||
| import com.stdiet.framework.web.service.SysPermissionService; | ||||
| import com.stdiet.framework.web.service.TokenService; | ||||
| import com.stdiet.system.service.ISysMenuService; | ||||
|  | ||||
| /** | ||||
|  * 登录验证 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| public class SysLoginController | ||||
| { | ||||
|     @Autowired | ||||
|     private SysLoginService loginService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysMenuService menuService; | ||||
|  | ||||
|     @Autowired | ||||
|     private SysPermissionService permissionService; | ||||
|  | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|  | ||||
|     /** | ||||
|      * 登录方法 | ||||
|      *  | ||||
|      * @param loginBody 登录信息 | ||||
|      * @return 结果 | ||||
|      */ | ||||
|     @PostMapping("/login") | ||||
|     public AjaxResult login(@RequestBody LoginBody loginBody) | ||||
|     { | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         // 生成令牌 | ||||
|         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(), | ||||
|                 loginBody.getUuid()); | ||||
|         ajax.put(Constants.TOKEN, token); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取用户信息 | ||||
|      *  | ||||
|      * @return 用户信息 | ||||
|      */ | ||||
|     @GetMapping("getInfo") | ||||
|     public AjaxResult getInfo() | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         SysUser user = loginUser.getUser(); | ||||
|         // 角色集合 | ||||
|         Set<String> roles = permissionService.getRolePermission(user); | ||||
|         // 权限集合 | ||||
|         Set<String> permissions = permissionService.getMenuPermission(user); | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         ajax.put("user", user); | ||||
|         ajax.put("roles", roles); | ||||
|         ajax.put("permissions", permissions); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取路由信息 | ||||
|      *  | ||||
|      * @return 路由信息 | ||||
|      */ | ||||
|     @GetMapping("getRouters") | ||||
|     public AjaxResult getRouters() | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         // 用户信息 | ||||
|         SysUser user = loginUser.getUser(); | ||||
|         List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId()); | ||||
|         return AjaxResult.success(menuService.buildMenus(menus)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,157 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.Constants; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysMenu; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.ServletUtils; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.framework.web.service.TokenService; | ||||
| import com.stdiet.system.service.ISysMenuService; | ||||
|  | ||||
| /** | ||||
|  * 菜单信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/menu") | ||||
| public class SysMenuController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysMenuService menuService; | ||||
|  | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|  | ||||
|     /** | ||||
|      * 获取菜单列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:menu:list')") | ||||
|     @GetMapping("/list") | ||||
|     public AjaxResult list(SysMenu menu) | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         Long userId = loginUser.getUser().getUserId(); | ||||
|         List<SysMenu> menus = menuService.selectMenuList(menu, userId); | ||||
|         return AjaxResult.success(menus); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据菜单编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:menu:query')") | ||||
|     @GetMapping(value = "/{menuId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long menuId) | ||||
|     { | ||||
|         return AjaxResult.success(menuService.selectMenuById(menuId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取菜单下拉树列表 | ||||
|      */ | ||||
|     @GetMapping("/treeselect") | ||||
|     public AjaxResult treeselect(SysMenu menu) | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         Long userId = loginUser.getUser().getUserId(); | ||||
|         List<SysMenu> menus = menuService.selectMenuList(menu, userId); | ||||
|         return AjaxResult.success(menuService.buildMenuTreeSelect(menus)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 加载对应角色菜单列表树 | ||||
|      */ | ||||
|     @GetMapping(value = "/roleMenuTreeselect/{roleId}") | ||||
|     public AjaxResult roleMenuTreeselect(@PathVariable("roleId") Long roleId) | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         List<SysMenu> menus = menuService.selectMenuList(loginUser.getUser().getUserId()); | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         ajax.put("checkedKeys", menuService.selectMenuListByRoleId(roleId)); | ||||
|         ajax.put("menus", menuService.buildMenuTreeSelect(menus)); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增菜单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:menu:add')") | ||||
|     @Log(title = "菜单管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysMenu menu) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | ||||
|         { | ||||
|             return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) | ||||
|                 && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS)) | ||||
|         { | ||||
|             return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); | ||||
|         } | ||||
|         menu.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(menuService.insertMenu(menu)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改菜单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:menu:edit')") | ||||
|     @Log(title = "菜单管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysMenu menu) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(menuService.checkMenuNameUnique(menu))) | ||||
|         { | ||||
|             return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) | ||||
|                 && !StringUtils.startsWithAny(menu.getPath(), Constants.HTTP, Constants.HTTPS)) | ||||
|         { | ||||
|             return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); | ||||
|         } | ||||
|         else if (menu.getMenuId().equals(menu.getParentId())) | ||||
|         { | ||||
|             return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,上级菜单不能选择自己"); | ||||
|         } | ||||
|         menu.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(menuService.updateMenu(menu)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除菜单 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:menu:remove')") | ||||
|     @Log(title = "菜单管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{menuId}") | ||||
|     public AjaxResult remove(@PathVariable("menuId") Long menuId) | ||||
|     { | ||||
|         if (menuService.hasChildByMenuId(menuId)) | ||||
|         { | ||||
|             return AjaxResult.error("存在子菜单,不允许删除"); | ||||
|         } | ||||
|         if (menuService.checkMenuExistRole(menuId)) | ||||
|         { | ||||
|             return AjaxResult.error("菜单已分配,不允许删除"); | ||||
|         } | ||||
|         return toAjax(menuService.deleteMenuById(menuId)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,92 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.system.domain.SysNotice; | ||||
| import com.stdiet.system.service.ISysNoticeService; | ||||
|  | ||||
| /** | ||||
|  * 公告 信息操作处理 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/notice") | ||||
| public class SysNoticeController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysNoticeService noticeService; | ||||
|  | ||||
|     /** | ||||
|      * 获取通知公告列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:notice:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysNotice notice) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysNotice> list = noticeService.selectNoticeList(notice); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据通知公告编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:notice:query')") | ||||
|     @GetMapping(value = "/{noticeId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long noticeId) | ||||
|     { | ||||
|         return AjaxResult.success(noticeService.selectNoticeById(noticeId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增通知公告 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:notice:add')") | ||||
|     @Log(title = "通知公告", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysNotice notice) | ||||
|     { | ||||
|         notice.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(noticeService.insertNotice(notice)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改通知公告 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:notice:edit')") | ||||
|     @Log(title = "通知公告", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysNotice notice) | ||||
|     { | ||||
|         notice.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(noticeService.updateNotice(notice)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除通知公告 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:notice:remove')") | ||||
|     @Log(title = "通知公告", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{noticeIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] noticeIds) | ||||
|     { | ||||
|         return toAjax(noticeService.deleteNoticeByIds(noticeIds)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,130 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.system.domain.SysPost; | ||||
| import com.stdiet.system.service.ISysPostService; | ||||
|  | ||||
| /** | ||||
|  * 岗位信息操作处理 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/post") | ||||
| public class SysPostController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysPostService postService; | ||||
|  | ||||
|     /** | ||||
|      * 获取岗位列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysPost post) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysPost> list = postService.selectPostList(post); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|      | ||||
|     @Log(title = "岗位管理", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysPost post) | ||||
|     { | ||||
|         List<SysPost> list = postService.selectPostList(post); | ||||
|         ExcelUtil<SysPost> util = new ExcelUtil<SysPost>(SysPost.class); | ||||
|         return util.exportExcel(list, "岗位数据"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据岗位编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:query')") | ||||
|     @GetMapping(value = "/{postId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long postId) | ||||
|     { | ||||
|         return AjaxResult.success(postService.selectPostById(postId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增岗位 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:add')") | ||||
|     @Log(title = "岗位管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysPost post) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) | ||||
|         { | ||||
|             return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) | ||||
|         { | ||||
|             return AjaxResult.error("新增岗位'" + post.getPostName() + "'失败,岗位编码已存在"); | ||||
|         } | ||||
|         post.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(postService.insertPost(post)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改岗位 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:edit')") | ||||
|     @Log(title = "岗位管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysPost post) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(postService.checkPostNameUnique(post))) | ||||
|         { | ||||
|             return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.NOT_UNIQUE.equals(postService.checkPostCodeUnique(post))) | ||||
|         { | ||||
|             return AjaxResult.error("修改岗位'" + post.getPostName() + "'失败,岗位编码已存在"); | ||||
|         } | ||||
|         post.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(postService.updatePost(post)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除岗位 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:post:remove')") | ||||
|     @Log(title = "岗位管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{postIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] postIds) | ||||
|     { | ||||
|         return toAjax(postService.deletePostByIds(postIds)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取岗位选择框列表 | ||||
|      */ | ||||
|     @GetMapping("/optionselect") | ||||
|     public AjaxResult optionselect() | ||||
|     { | ||||
|         List<SysPost> posts = postService.selectPostAll(); | ||||
|         return AjaxResult.success(posts); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,127 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.io.IOException; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.PostMapping; | ||||
| import org.springframework.web.bind.annotation.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RequestParam; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.config.RuoYiConfig; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysUser; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.ServletUtils; | ||||
| import com.stdiet.common.utils.file.FileUploadUtils; | ||||
| import com.stdiet.framework.web.service.TokenService; | ||||
| import com.stdiet.system.service.ISysUserService; | ||||
|  | ||||
| /** | ||||
|  * 个人信息 业务处理 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/user/profile") | ||||
| public class SysProfileController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysUserService userService; | ||||
|  | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|  | ||||
|     /** | ||||
|      * 个人信息 | ||||
|      */ | ||||
|     @GetMapping | ||||
|     public AjaxResult profile() | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         SysUser user = loginUser.getUser(); | ||||
|         AjaxResult ajax = AjaxResult.success(user); | ||||
|         ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); | ||||
|         ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改用户 | ||||
|      */ | ||||
|     @Log(title = "个人信息", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult updateProfile(@RequestBody SysUser user) | ||||
|     { | ||||
|         if (userService.updateUserProfile(user) > 0) | ||||
|         { | ||||
|             LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|             // 更新缓存用户信息 | ||||
|             loginUser.getUser().setNickName(user.getNickName()); | ||||
|             loginUser.getUser().setPhonenumber(user.getPhonenumber()); | ||||
|             loginUser.getUser().setEmail(user.getEmail()); | ||||
|             loginUser.getUser().setSex(user.getSex()); | ||||
|             tokenService.setLoginUser(loginUser); | ||||
|             return AjaxResult.success(); | ||||
|         } | ||||
|         return AjaxResult.error("修改个人信息异常,请联系管理员"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 重置密码 | ||||
|      */ | ||||
|     @Log(title = "个人信息", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping("/updatePwd") | ||||
|     public AjaxResult updatePwd(String oldPassword, String newPassword) | ||||
|     { | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         String userName = loginUser.getUsername(); | ||||
|         String password = loginUser.getPassword(); | ||||
|         if (!SecurityUtils.matchesPassword(oldPassword, password)) | ||||
|         { | ||||
|             return AjaxResult.error("修改密码失败,旧密码错误"); | ||||
|         } | ||||
|         if (SecurityUtils.matchesPassword(newPassword, password)) | ||||
|         { | ||||
|             return AjaxResult.error("新密码不能与旧密码相同"); | ||||
|         } | ||||
|         if (userService.resetUserPwd(userName, SecurityUtils.encryptPassword(newPassword)) > 0) | ||||
|         { | ||||
|             // 更新缓存用户密码 | ||||
|             loginUser.getUser().setPassword(SecurityUtils.encryptPassword(newPassword)); | ||||
|             tokenService.setLoginUser(loginUser); | ||||
|             return AjaxResult.success(); | ||||
|         } | ||||
|         return AjaxResult.error("修改密码异常,请联系管理员"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 头像上传 | ||||
|      */ | ||||
|     @Log(title = "用户头像", businessType = BusinessType.UPDATE) | ||||
|     @PostMapping("/avatar") | ||||
|     public AjaxResult avatar(@RequestParam("avatarfile") MultipartFile file) throws IOException | ||||
|     { | ||||
|         if (!file.isEmpty()) | ||||
|         { | ||||
|             LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|             String avatar = FileUploadUtils.upload(RuoYiConfig.getAvatarPath(), file); | ||||
|             if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) | ||||
|             { | ||||
|                 AjaxResult ajax = AjaxResult.success(); | ||||
|                 ajax.put("imgUrl", avatar); | ||||
|                 // 更新缓存用户头像 | ||||
|                 loginUser.getUser().setAvatar(avatar); | ||||
|                 tokenService.setLoginUser(loginUser); | ||||
|                 return ajax; | ||||
|             } | ||||
|         } | ||||
|         return AjaxResult.error("上传图片异常,请联系管理员"); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,182 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysRole; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.ServletUtils; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.framework.web.service.SysPermissionService; | ||||
| import com.stdiet.framework.web.service.TokenService; | ||||
| import com.stdiet.system.service.ISysRoleService; | ||||
| import com.stdiet.system.service.ISysUserService; | ||||
|  | ||||
| /** | ||||
|  * 角色信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/role") | ||||
| public class SysRoleController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysRoleService roleService; | ||||
|  | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|      | ||||
|     @Autowired | ||||
|     private SysPermissionService permissionService; | ||||
|      | ||||
|     @Autowired | ||||
|     private ISysUserService userService; | ||||
|  | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysRole role) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysRole> list = roleService.selectRoleList(role); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "角色管理", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysRole role) | ||||
|     { | ||||
|         List<SysRole> list = roleService.selectRoleList(role); | ||||
|         ExcelUtil<SysRole> util = new ExcelUtil<SysRole>(SysRole.class); | ||||
|         return util.exportExcel(list, "角色数据"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据角色编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:query')") | ||||
|     @GetMapping(value = "/{roleId}") | ||||
|     public AjaxResult getInfo(@PathVariable Long roleId) | ||||
|     { | ||||
|         return AjaxResult.success(roleService.selectRoleById(roleId)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增角色 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:add')") | ||||
|     @Log(title = "角色管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysRole role) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) | ||||
|         { | ||||
|             return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) | ||||
|         { | ||||
|             return AjaxResult.error("新增角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||||
|         } | ||||
|         role.setCreateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(roleService.insertRole(role)); | ||||
|  | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改保存角色 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysRole role) | ||||
|     { | ||||
|         roleService.checkRoleAllowed(role); | ||||
|         if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleNameUnique(role))) | ||||
|         { | ||||
|             return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色名称已存在"); | ||||
|         } | ||||
|         else if (UserConstants.NOT_UNIQUE.equals(roleService.checkRoleKeyUnique(role))) | ||||
|         { | ||||
|             return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,角色权限已存在"); | ||||
|         } | ||||
|         role.setUpdateBy(SecurityUtils.getUsername()); | ||||
|          | ||||
|         if (roleService.updateRole(role) > 0) | ||||
|         { | ||||
|             // 更新缓存用户权限 | ||||
|             LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|             if (StringUtils.isNotNull(loginUser.getUser()) && !loginUser.getUser().isAdmin()) | ||||
|             { | ||||
|                 loginUser.setPermissions(permissionService.getMenuPermission(loginUser.getUser())); | ||||
|                 loginUser.setUser(userService.selectUserByUserName(loginUser.getUser().getUserName())); | ||||
|                 tokenService.setLoginUser(loginUser); | ||||
|             } | ||||
|             return AjaxResult.success(); | ||||
|         } | ||||
|         return AjaxResult.error("修改角色'" + role.getRoleName() + "'失败,请联系管理员"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改保存数据权限 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping("/dataScope") | ||||
|     public AjaxResult dataScope(@RequestBody SysRole role) | ||||
|     { | ||||
|         roleService.checkRoleAllowed(role); | ||||
|         return toAjax(roleService.authDataScope(role)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 状态修改 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:edit')") | ||||
|     @Log(title = "角色管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping("/changeStatus") | ||||
|     public AjaxResult changeStatus(@RequestBody SysRole role) | ||||
|     { | ||||
|         roleService.checkRoleAllowed(role); | ||||
|         role.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(roleService.updateRoleStatus(role)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除角色 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:remove')") | ||||
|     @Log(title = "角色管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{roleIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] roleIds) | ||||
|     { | ||||
|         return toAjax(roleService.deleteRoleByIds(roleIds)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 获取角色选择框列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:role:query')") | ||||
|     @GetMapping("/optionselect") | ||||
|     public AjaxResult optionselect() | ||||
|     { | ||||
|         return AjaxResult.success(roleService.selectRoleAll()); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,201 @@ | ||||
| package com.stdiet.web.controller.system; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.stream.Collectors; | ||||
| 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.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestBody; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import org.springframework.web.multipart.MultipartFile; | ||||
| import com.stdiet.common.annotation.Log; | ||||
| import com.stdiet.common.constant.UserConstants; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.core.domain.entity.SysRole; | ||||
| import com.stdiet.common.core.domain.entity.SysUser; | ||||
| import com.stdiet.common.core.domain.model.LoginUser; | ||||
| import com.stdiet.common.core.page.TableDataInfo; | ||||
| import com.stdiet.common.enums.BusinessType; | ||||
| import com.stdiet.common.utils.SecurityUtils; | ||||
| import com.stdiet.common.utils.ServletUtils; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import com.stdiet.common.utils.poi.ExcelUtil; | ||||
| import com.stdiet.framework.web.service.TokenService; | ||||
| import com.stdiet.system.service.ISysPostService; | ||||
| import com.stdiet.system.service.ISysRoleService; | ||||
| import com.stdiet.system.service.ISysUserService; | ||||
|  | ||||
| /** | ||||
|  * 用户信息 | ||||
|  *  | ||||
|  * @author stdiet | ||||
|  */ | ||||
| @RestController | ||||
| @RequestMapping("/system/user") | ||||
| public class SysUserController extends BaseController | ||||
| { | ||||
|     @Autowired | ||||
|     private ISysUserService userService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysRoleService roleService; | ||||
|  | ||||
|     @Autowired | ||||
|     private ISysPostService postService; | ||||
|  | ||||
|     @Autowired | ||||
|     private TokenService tokenService; | ||||
|  | ||||
|     /** | ||||
|      * 获取用户列表 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:list')") | ||||
|     @GetMapping("/list") | ||||
|     public TableDataInfo list(SysUser user) | ||||
|     { | ||||
|         startPage(); | ||||
|         List<SysUser> list = userService.selectUserList(user); | ||||
|         return getDataTable(list); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "用户管理", businessType = BusinessType.EXPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:export')") | ||||
|     @GetMapping("/export") | ||||
|     public AjaxResult export(SysUser user) | ||||
|     { | ||||
|         List<SysUser> list = userService.selectUserList(user); | ||||
|         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||||
|         return util.exportExcel(list, "用户数据"); | ||||
|     } | ||||
|  | ||||
|     @Log(title = "用户管理", businessType = BusinessType.IMPORT) | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:import')") | ||||
|     @PostMapping("/importData") | ||||
|     public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception | ||||
|     { | ||||
|         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||||
|         List<SysUser> userList = util.importExcel(file.getInputStream()); | ||||
|         LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest()); | ||||
|         String operName = loginUser.getUsername(); | ||||
|         String message = userService.importUser(userList, updateSupport, operName); | ||||
|         return AjaxResult.success(message); | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/importTemplate") | ||||
|     public AjaxResult importTemplate() | ||||
|     { | ||||
|         ExcelUtil<SysUser> util = new ExcelUtil<SysUser>(SysUser.class); | ||||
|         return util.importTemplateExcel("用户数据"); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 根据用户编号获取详细信息 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:query')") | ||||
|     @GetMapping(value = { "/", "/{userId}" }) | ||||
|     public AjaxResult getInfo(@PathVariable(value = "userId", required = false) Long userId) | ||||
|     { | ||||
|         AjaxResult ajax = AjaxResult.success(); | ||||
|         List<SysRole> roles = roleService.selectRoleAll(); | ||||
|         ajax.put("roles", SysUser.isAdmin(userId) ? roles : roles.stream().filter(r -> !r.isAdmin()).collect(Collectors.toList())); | ||||
|         ajax.put("posts", postService.selectPostAll()); | ||||
|         if (StringUtils.isNotNull(userId)) | ||||
|         { | ||||
|             ajax.put(AjaxResult.DATA_TAG, userService.selectUserById(userId)); | ||||
|             ajax.put("postIds", postService.selectPostListByUserId(userId)); | ||||
|             ajax.put("roleIds", roleService.selectRoleListByUserId(userId)); | ||||
|         } | ||||
|         return ajax; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 新增用户 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:add')") | ||||
|     @Log(title = "用户管理", businessType = BusinessType.INSERT) | ||||
|     @PostMapping | ||||
|     public AjaxResult add(@Validated @RequestBody SysUser user) | ||||
|     { | ||||
|         if (UserConstants.NOT_UNIQUE.equals(userService.checkUserNameUnique(user.getUserName()))) | ||||
|         { | ||||
|             return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,登录账号已存在"); | ||||
|         } | ||||
| //        else if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) | ||||
| //        { | ||||
| //            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,手机号码已存在"); | ||||
| //        } | ||||
| //        else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) | ||||
| //        { | ||||
| //            return AjaxResult.error("新增用户'" + user.getUserName() + "'失败,邮箱账号已存在"); | ||||
| //        } | ||||
|         user.setCreateBy(SecurityUtils.getUsername()); | ||||
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | ||||
|         return toAjax(userService.insertUser(user)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 修改用户 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||||
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping | ||||
|     public AjaxResult edit(@Validated @RequestBody SysUser user) | ||||
|     { | ||||
|         userService.checkUserAllowed(user); | ||||
| //        if (UserConstants.NOT_UNIQUE.equals(userService.checkPhoneUnique(user))) | ||||
| //        { | ||||
| //            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); | ||||
| //        } | ||||
| //        else if (UserConstants.NOT_UNIQUE.equals(userService.checkEmailUnique(user))) | ||||
| //        { | ||||
| //            return AjaxResult.error("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); | ||||
| //        } | ||||
|         user.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(userService.updateUser(user)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 删除用户 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:remove')") | ||||
|     @Log(title = "用户管理", businessType = BusinessType.DELETE) | ||||
|     @DeleteMapping("/{userIds}") | ||||
|     public AjaxResult remove(@PathVariable Long[] userIds) | ||||
|     { | ||||
|         return toAjax(userService.deleteUserByIds(userIds)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 重置密码 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||||
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping("/resetPwd") | ||||
|     public AjaxResult resetPwd(@RequestBody SysUser user) | ||||
|     { | ||||
|         userService.checkUserAllowed(user); | ||||
|         user.setPassword(SecurityUtils.encryptPassword(user.getPassword())); | ||||
|         user.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(userService.resetPwd(user)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 状态修改 | ||||
|      */ | ||||
|     @PreAuthorize("@ss.hasPermi('system:user:edit')") | ||||
|     @Log(title = "用户管理", businessType = BusinessType.UPDATE) | ||||
|     @PutMapping("/changeStatus") | ||||
|     public AjaxResult changeStatus(@RequestBody SysUser user) | ||||
|     { | ||||
|         userService.checkUserAllowed(user); | ||||
|         user.setUpdateBy(SecurityUtils.getUsername()); | ||||
|         return toAjax(userService.updateUserStatus(user)); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,24 @@ | ||||
| package com.stdiet.web.controller.tool; | ||||
|  | ||||
| import org.springframework.security.access.prepost.PreAuthorize; | ||||
| import org.springframework.stereotype.Controller; | ||||
| import org.springframework.web.bind.annotation.GetMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
|  | ||||
| /** | ||||
|  * swagger 接口 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @Controller | ||||
| @RequestMapping("/tool/swagger") | ||||
| public class SwaggerController extends BaseController | ||||
| { | ||||
|     @PreAuthorize("@ss.hasPermi('tool:swagger:view')") | ||||
|     @GetMapping() | ||||
|     public String index() | ||||
|     { | ||||
|         return redirect("/swagger-ui.html"); | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,175 @@ | ||||
| package com.stdiet.web.controller.tool; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.LinkedHashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import org.springframework.web.bind.annotation.DeleteMapping; | ||||
| 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.PutMapping; | ||||
| import org.springframework.web.bind.annotation.RequestMapping; | ||||
| import org.springframework.web.bind.annotation.RestController; | ||||
| import com.stdiet.common.core.controller.BaseController; | ||||
| import com.stdiet.common.core.domain.AjaxResult; | ||||
| import com.stdiet.common.utils.StringUtils; | ||||
| import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiImplicitParam; | ||||
| import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | ||||
| import io.swagger.annotations.ApiOperation; | ||||
|  | ||||
| /** | ||||
|  * swagger 用户测试方法 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @Api("用户信息管理") | ||||
| @RestController | ||||
| @RequestMapping("/test/user") | ||||
| public class TestController extends BaseController | ||||
| { | ||||
|     private final static Map<Integer, UserEntity> users = new LinkedHashMap<Integer, UserEntity>(); | ||||
|     { | ||||
|         users.put(1, new UserEntity(1, "admin", "admin123", "15888888888")); | ||||
|         users.put(2, new UserEntity(2, "ry", "admin123", "15666666666")); | ||||
|     } | ||||
|  | ||||
|     @ApiOperation("获取用户列表") | ||||
|     @GetMapping("/list") | ||||
|     public AjaxResult userList() | ||||
|     { | ||||
|         List<UserEntity> userList = new ArrayList<UserEntity>(users.values()); | ||||
|         return AjaxResult.success(userList); | ||||
|     } | ||||
|  | ||||
|     @ApiOperation("获取用户详细") | ||||
|     @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path") | ||||
|     @GetMapping("/{userId}") | ||||
|     public AjaxResult getUser(@PathVariable Integer userId) | ||||
|     { | ||||
|         if (!users.isEmpty() && users.containsKey(userId)) | ||||
|         { | ||||
|             return AjaxResult.success(users.get(userId)); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             return AjaxResult.error("用户不存在"); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @ApiOperation("新增用户") | ||||
|     @ApiImplicitParam(name = "userEntity", value = "新增用户信息", dataType = "UserEntity") | ||||
|     @PostMapping("/save") | ||||
|     public AjaxResult save(UserEntity user) | ||||
|     { | ||||
|         if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) | ||||
|         { | ||||
|             return AjaxResult.error("用户ID不能为空"); | ||||
|         } | ||||
|         return AjaxResult.success(users.put(user.getUserId(), user)); | ||||
|     } | ||||
|  | ||||
|     @ApiOperation("更新用户") | ||||
|     @ApiImplicitParam(name = "userEntity", value = "新增用户信息", dataType = "UserEntity") | ||||
|     @PutMapping("/update") | ||||
|     public AjaxResult update(UserEntity user) | ||||
|     { | ||||
|         if (StringUtils.isNull(user) || StringUtils.isNull(user.getUserId())) | ||||
|         { | ||||
|             return AjaxResult.error("用户ID不能为空"); | ||||
|         } | ||||
|         if (users.isEmpty() || !users.containsKey(user.getUserId())) | ||||
|         { | ||||
|             return AjaxResult.error("用户不存在"); | ||||
|         } | ||||
|         users.remove(user.getUserId()); | ||||
|         return AjaxResult.success(users.put(user.getUserId(), user)); | ||||
|     } | ||||
|  | ||||
|     @ApiOperation("删除用户信息") | ||||
|     @ApiImplicitParam(name = "userId", value = "用户ID", required = true, dataType = "int", paramType = "path") | ||||
|     @DeleteMapping("/{userId}") | ||||
|     public AjaxResult delete(@PathVariable Integer userId) | ||||
|     { | ||||
|         if (!users.isEmpty() && users.containsKey(userId)) | ||||
|         { | ||||
|             users.remove(userId); | ||||
|             return AjaxResult.success(); | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             return AjaxResult.error("用户不存在"); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ApiModel("用户实体") | ||||
| class UserEntity | ||||
| { | ||||
|     @ApiModelProperty("用户ID") | ||||
|     private Integer userId; | ||||
|  | ||||
|     @ApiModelProperty("用户名称") | ||||
|     private String username; | ||||
|  | ||||
|     @ApiModelProperty("用户密码") | ||||
|     private String password; | ||||
|  | ||||
|     @ApiModelProperty("用户手机") | ||||
|     private String mobile; | ||||
|  | ||||
|     public UserEntity() | ||||
|     { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     public UserEntity(Integer userId, String username, String password, String mobile) | ||||
|     { | ||||
|         this.userId = userId; | ||||
|         this.username = username; | ||||
|         this.password = password; | ||||
|         this.mobile = mobile; | ||||
|     } | ||||
|  | ||||
|     public Integer getUserId() | ||||
|     { | ||||
|         return userId; | ||||
|     } | ||||
|  | ||||
|     public void setUserId(Integer userId) | ||||
|     { | ||||
|         this.userId = userId; | ||||
|     } | ||||
|  | ||||
|     public String getUsername() | ||||
|     { | ||||
|         return username; | ||||
|     } | ||||
|  | ||||
|     public void setUsername(String username) | ||||
|     { | ||||
|         this.username = username; | ||||
|     } | ||||
|  | ||||
|     public String getPassword() | ||||
|     { | ||||
|         return password; | ||||
|     } | ||||
|  | ||||
|     public void setPassword(String password) | ||||
|     { | ||||
|         this.password = password; | ||||
|     } | ||||
|  | ||||
|     public String getMobile() | ||||
|     { | ||||
|         return mobile; | ||||
|     } | ||||
|  | ||||
|     public void setMobile(String mobile) | ||||
|     { | ||||
|         this.mobile = mobile; | ||||
|     } | ||||
| } | ||||
| @@ -0,0 +1,125 @@ | ||||
| package com.stdiet.web.core.config; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | ||||
| import org.springframework.context.annotation.Bean; | ||||
| import org.springframework.context.annotation.Configuration; | ||||
| import com.stdiet.common.config.RuoYiConfig; | ||||
| import io.swagger.annotations.ApiOperation; | ||||
| import springfox.documentation.builders.ApiInfoBuilder; | ||||
| import springfox.documentation.builders.PathSelectors; | ||||
| import springfox.documentation.builders.RequestHandlerSelectors; | ||||
| import springfox.documentation.service.ApiInfo; | ||||
| import springfox.documentation.service.ApiKey; | ||||
| import springfox.documentation.service.AuthorizationScope; | ||||
| import springfox.documentation.service.Contact; | ||||
| import springfox.documentation.service.SecurityReference; | ||||
| import springfox.documentation.spi.DocumentationType; | ||||
| import springfox.documentation.spi.service.contexts.SecurityContext; | ||||
| import springfox.documentation.spring.web.plugins.Docket; | ||||
| import springfox.documentation.swagger2.annotations.EnableSwagger2; | ||||
|  | ||||
| /** | ||||
|  * Swagger2的接口配置 | ||||
|  *  | ||||
|  * @author ruoyi | ||||
|  */ | ||||
| @Configuration | ||||
| @EnableSwagger2 | ||||
| public class SwaggerConfig | ||||
| { | ||||
|     /** 系统基础配置 */ | ||||
|     @Autowired | ||||
|     private RuoYiConfig ruoyiConfig; | ||||
|  | ||||
|     /** 是否开启swagger */ | ||||
|     @Value("${swagger.enabled}") | ||||
|     private boolean enabled; | ||||
|  | ||||
|     /** 设置请求的统一前缀 */ | ||||
|     @Value("${swagger.pathMapping}") | ||||
|     private String pathMapping; | ||||
|  | ||||
|     /** | ||||
|      * 创建API | ||||
|      */ | ||||
|     @Bean | ||||
|     public Docket createRestApi() | ||||
|     { | ||||
|         return new Docket(DocumentationType.SWAGGER_2) | ||||
|                 // 是否启用Swagger | ||||
|                 .enable(enabled) | ||||
|                 // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息) | ||||
|                 .apiInfo(apiInfo()) | ||||
|                 // 设置哪些接口暴露给Swagger展示 | ||||
|                 .select() | ||||
|                 // 扫描所有有注解的api,用这种方式更灵活 | ||||
|                 .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) | ||||
|                 // 扫描指定包中的swagger注解 | ||||
|                 // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger")) | ||||
|                 // 扫描所有 .apis(RequestHandlerSelectors.any()) | ||||
|                 .paths(PathSelectors.any()) | ||||
|                 .build() | ||||
|                 /* 设置安全模式,swagger可以设置访问token */ | ||||
|                 .securitySchemes(securitySchemes()) | ||||
|                 .securityContexts(securityContexts()) | ||||
|                 .pathMapping(pathMapping); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 安全模式,这里指定token通过Authorization头请求头传递 | ||||
|      */ | ||||
|     private List<ApiKey> securitySchemes() | ||||
|     { | ||||
|         List<ApiKey> apiKeyList = new ArrayList<ApiKey>(); | ||||
|         apiKeyList.add(new ApiKey("Authorization", "Authorization", "header")); | ||||
|         return apiKeyList; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 安全上下文 | ||||
|      */ | ||||
|     private List<SecurityContext> securityContexts() | ||||
|     { | ||||
|         List<SecurityContext> securityContexts = new ArrayList<>(); | ||||
|         securityContexts.add( | ||||
|                 SecurityContext.builder() | ||||
|                         .securityReferences(defaultAuth()) | ||||
|                         .forPaths(PathSelectors.regex("^(?!auth).*$")) | ||||
|                         .build()); | ||||
|         return securityContexts; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 默认的安全上引用 | ||||
|      */ | ||||
|     private List<SecurityReference> defaultAuth() | ||||
|     { | ||||
|         AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); | ||||
|         AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; | ||||
|         authorizationScopes[0] = authorizationScope; | ||||
|         List<SecurityReference> securityReferences = new ArrayList<>(); | ||||
|         securityReferences.add(new SecurityReference("Authorization", authorizationScopes)); | ||||
|         return securityReferences; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 添加摘要信息 | ||||
|      */ | ||||
|     private ApiInfo apiInfo() | ||||
|     { | ||||
|         // 用ApiInfoBuilder进行定制 | ||||
|         return new ApiInfoBuilder() | ||||
|                 // 设置标题 | ||||
|                 .title("标题:管理系统_接口文档") | ||||
|                 // 描述 | ||||
|                 .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") | ||||
|                 // 作者信息 | ||||
|                 .contact(new Contact(ruoyiConfig.getName(), null, null)) | ||||
|                 // 版本 | ||||
|                 .version("版本号:" + ruoyiConfig.getVersion()) | ||||
|                 .build(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user