From fc44086cfe8d3027126ac6de2ffb436a33930889 Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Wed, 18 Oct 2023 12:21:20 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8F=9C=E5=8D=95=E7=AE=A1=E7=90=86=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=96=B0=E5=A2=9EmodulesUrl=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/security/SecurityConfig.java | 1 + .../controller/EnvironmentController.java | 139 ++++++++++++++++++ .../system/controller/MainController.java | 104 +++++++------ .../common/system/entity/Environment.java | 76 ++++++++++ .../system/mapper/EnvironmentMapper.java | 37 +++++ .../system/mapper/xml/EnvironmentMapper.xml | 68 +++++++++ .../common/system/param/EnvironmentParam.java | 66 +++++++++ .../system/service/EnvironmentService.java | 42 ++++++ .../service/impl/EnvironmentServiceImpl.java | 47 ++++++ .../com/gxwebsoft/generator/SysGenerator.java | 3 +- 10 files changed, 537 insertions(+), 46 deletions(-) create mode 100644 src/main/java/com/gxwebsoft/common/system/controller/EnvironmentController.java create mode 100644 src/main/java/com/gxwebsoft/common/system/entity/Environment.java create mode 100644 src/main/java/com/gxwebsoft/common/system/mapper/EnvironmentMapper.java create mode 100644 src/main/java/com/gxwebsoft/common/system/mapper/xml/EnvironmentMapper.xml create mode 100644 src/main/java/com/gxwebsoft/common/system/param/EnvironmentParam.java create mode 100644 src/main/java/com/gxwebsoft/common/system/service/EnvironmentService.java create mode 100644 src/main/java/com/gxwebsoft/common/system/service/impl/EnvironmentServiceImpl.java diff --git a/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java index aa31f93..c7c28fe 100644 --- a/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java +++ b/src/main/java/com/gxwebsoft/common/core/security/SecurityConfig.java @@ -50,6 +50,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { "/api/open/**", "/hxz/v1/**", "/api/sendSmsCaptcha", + "/api/parseToken/*", "/api/login-alipay/*", "/api/wx-login/loginByMpWxPhone", "/api/shop/payment/mp-alipay/notify", diff --git a/src/main/java/com/gxwebsoft/common/system/controller/EnvironmentController.java b/src/main/java/com/gxwebsoft/common/system/controller/EnvironmentController.java new file mode 100644 index 0000000..a7ffd41 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/controller/EnvironmentController.java @@ -0,0 +1,139 @@ +package com.gxwebsoft.common.system.controller; + +import com.gxwebsoft.common.core.web.BaseController; +import com.gxwebsoft.common.system.entity.User; +import com.gxwebsoft.common.system.service.EnvironmentService; +import com.gxwebsoft.common.system.entity.Environment; +import com.gxwebsoft.common.system.param.EnvironmentParam; +import com.gxwebsoft.common.core.web.ApiResult; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.BatchParam; +import com.gxwebsoft.common.core.annotation.OperationLog; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 环境管理控制器 + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +@Api(tags = "环境管理管理") +@RestController +@RequestMapping("/api/system/environment") +public class EnvironmentController extends BaseController { + @Resource + private EnvironmentService environmentService; + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("分页查询环境管理") + @GetMapping("/page") + public ApiResult> page(EnvironmentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(environmentService.page(page, page.getWrapper())); + // 使用关联查询 + //return success(environmentService.pageRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("查询全部环境管理") + @GetMapping() + public ApiResult> list(EnvironmentParam param) { + PageParam page = new PageParam<>(param); + page.setDefaultOrder("create_time desc"); + return success(environmentService.list(page.getOrderWrapper())); + // 使用关联查询 + //return success(environmentService.listRel(param)); + } + + @PreAuthorize("hasAuthority('sys:company:list')") + @OperationLog + @ApiOperation("根据id查询环境管理") + @GetMapping("/{id}") + public ApiResult get(@PathVariable("id") Integer id) { + return success(environmentService.getById(id)); + // 使用关联查询 + //return success(environmentService.getByIdRel(id)); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("添加环境管理") + @PostMapping() + public ApiResult save(@RequestBody Environment environment) { + // 记录当前登录用户id + User loginUser = getLoginUser(); + if (loginUser != null) { + environment.setUserId(loginUser.getUserId()); + } + if (environmentService.save(environment)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("修改环境管理") + @PutMapping() + public ApiResult update(@RequestBody Environment environment) { + if (environmentService.updateById(environment)) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("删除环境管理") + @DeleteMapping("/{id}") + public ApiResult remove(@PathVariable("id") Integer id) { + if (environmentService.removeById(id)) { + return success("删除成功"); + } + return fail("删除失败"); + } + + @PreAuthorize("hasAuthority('sys:company:save')") + @OperationLog + @ApiOperation("批量添加环境管理") + @PostMapping("/batch") + public ApiResult saveBatch(@RequestBody List list) { + if (environmentService.saveBatch(list)) { + return success("添加成功"); + } + return fail("添加失败"); + } + + @PreAuthorize("hasAuthority('sys:company:update')") + @OperationLog + @ApiOperation("批量修改环境管理") + @PutMapping("/batch") + public ApiResult removeBatch(@RequestBody BatchParam batchParam) { + if (batchParam.update(environmentService, "id")) { + return success("修改成功"); + } + return fail("修改失败"); + } + + @PreAuthorize("hasAuthority('sys:company:remove')") + @OperationLog + @ApiOperation("批量删除环境管理") + @DeleteMapping("/batch") + public ApiResult removeBatch(@RequestBody List ids) { + if (environmentService.removeByIds(ids)) { + return success("删除成功"); + } + return fail("删除失败"); + } + +} diff --git a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java index 225d4ac..268bc61 100644 --- a/src/main/java/com/gxwebsoft/common/system/controller/MainController.java +++ b/src/main/java/com/gxwebsoft/common/system/controller/MainController.java @@ -25,6 +25,7 @@ import com.gxwebsoft.common.core.web.ApiResult; import com.gxwebsoft.common.core.web.BaseController; import com.gxwebsoft.common.core.web.ExistenceParam; import com.gxwebsoft.common.system.entity.*; +import com.gxwebsoft.common.system.mapper.CompanyMapper; import com.gxwebsoft.common.system.param.LoginParam; import com.gxwebsoft.common.system.param.SmsCaptchaParam; import com.gxwebsoft.common.system.param.UpdatePasswordParam; @@ -32,8 +33,10 @@ import com.gxwebsoft.common.system.result.CaptchaResult; import com.gxwebsoft.common.system.result.LoginResult; import com.gxwebsoft.common.system.service.*; import com.wf.captcha.SpecCaptcha; +import io.jsonwebtoken.Claims; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import org.springframework.scheduling.annotation.Async; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; @@ -261,57 +264,68 @@ public class MainController extends BaseController { return success("获取成功", url); } + @ApiOperation("解析token") + @GetMapping("/parseToken/{token}") + public ApiResult parseToken(@PathVariable("token") String token) { + Claims claims = JwtUtil.parseToken(token, configProperties.getTokenKey()); + return success(claims); + } + @ApiOperation("短信验证码") @PostMapping("/sendSmsCaptcha") public ApiResult sendSmsCaptcha(@RequestBody SmsCaptchaParam param) { - // 读取短信配置信息 + // 默认配置 + String accessKeyId = "LTAI5tBH45bs2fys3fav"; + String accessKeySecret = "FpDRt8ejUtuz0fHDkW52"; + String userTemplateId = "SMS_257840118"; + String sign = "南宁网宿科技"; + + // 读取租户的短信配置 String string = redisUtil.get("setting:sms:5"); - if (string == null) { - throw new BusinessException("请先配置短信"); + if (string != null) { + JSONObject jsonObject = JSONObject.parseObject(string); + accessKeyId = jsonObject.getString("accessKeyId"); + accessKeySecret = jsonObject.getString("accessKeySecret"); + userTemplateId = jsonObject.getString("userTemplateId"); + sign = jsonObject.getString("sign"); } - JSONObject jsonObject = JSONObject.parseObject(string); - String accessKeyId = jsonObject.getString("accessKeyId"); - String accessKeySecret = jsonObject.getString("accessKeySecret"); - String userTemplateId = jsonObject.getString("userTemplateId"); - String sign = jsonObject.getString("sign"); - if (accessKeyId != null) { - DefaultProfile profile = DefaultProfile.getProfile("regionld", accessKeyId, accessKeySecret); - IAcsClient client = new DefaultAcsClient(profile); - CommonRequest request = new CommonRequest(); - request.setSysMethod(MethodType.POST); - request.setSysDomain("dysmsapi.aliyuncs.com"); - request.setSysVersion("2017-05-25"); - request.setSysAction("SendSms"); - request.putQueryParameter("RegionId", "cn-hangzhou"); - request.putQueryParameter("PhoneNumbers", param.getPhone()); - request.putQueryParameter("SignName", sign); - request.putQueryParameter("TemplateCode", userTemplateId); - // 生成短信验证码 - Random randObj = new Random(); - String code = Integer.toString(100000 + randObj.nextInt(900000)); - request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); - try { - CommonResponse response = client.getCommonResponse(request); - System.out.println("response = " + response); - String json = response.getData(); - System.out.println("json = " + json); - Gson g = new Gson(); - HashMap result = g.fromJson(json, HashMap.class); - System.out.println("result = " + result); - if ("OK".equals(result.get("Message"))) { - System.out.println("======================== = " + result); - cacheClient.set(param.getPhone(), code, 5L, TimeUnit.MINUTES); - String key = "code:" + param.getPhone(); - redisUtil.set(key, code, 5L, TimeUnit.MINUTES); - return success("发送成功", result.get("Message")); - } else { - return fail("发送失败"); - } - } catch (ServerException e) { - e.printStackTrace(); - } catch (ClientException e) { - e.printStackTrace(); + + DefaultProfile profile = DefaultProfile.getProfile("regionld", accessKeyId, accessKeySecret); + IAcsClient client = new DefaultAcsClient(profile); + CommonRequest request = new CommonRequest(); + request.setSysMethod(MethodType.POST); + request.setSysDomain("dysmsapi.aliyuncs.com"); + request.setSysVersion("2017-05-25"); + request.setSysAction("SendSms"); + request.putQueryParameter("RegionId", "cn-hangzhou"); + request.putQueryParameter("PhoneNumbers", param.getPhone()); + request.putQueryParameter("SignName", sign); + request.putQueryParameter("TemplateCode", userTemplateId); + // 生成短信验证码 + Random randObj = new Random(); + String code = Integer.toString(100000 + randObj.nextInt(900000)); + request.putQueryParameter("TemplateParam", "{\"code\":" + code + "}"); + try { + CommonResponse response = client.getCommonResponse(request); + System.out.println("response = " + response); + String json = response.getData(); + System.out.println("json = " + json); + Gson g = new Gson(); + HashMap result = g.fromJson(json, HashMap.class); + System.out.println("result = " + result); + if ("OK".equals(result.get("Message"))) { + System.out.println("======================== = " + result); + cacheClient.set(param.getPhone(), code, 5L, TimeUnit.MINUTES); + String key = "code:" + param.getPhone(); + redisUtil.set(key, code, 5L, TimeUnit.MINUTES); + return success("发送成功", result.get("Message")); + } else { + return fail("发送失败"); } + } catch (ServerException e) { + e.printStackTrace(); + } catch (ClientException e) { + e.printStackTrace(); } return fail("发送失败"); } diff --git a/src/main/java/com/gxwebsoft/common/system/entity/Environment.java b/src/main/java/com/gxwebsoft/common/system/entity/Environment.java new file mode 100644 index 0000000..b82cc3e --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/entity/Environment.java @@ -0,0 +1,76 @@ +package com.gxwebsoft.common.system.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.TableLogic; +import java.io.Serializable; +import java.util.Date; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 环境管理 + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value = "Environment对象", description = "环境管理") +@TableName("sys_environment") +public class Environment implements Serializable { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "插件id") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "环境名称") + private String environmentName; + + @ApiModelProperty(value = "环境编号") + private String environmentCode; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器IP") + private String serverIp; + + @ApiModelProperty(value = "模块访问地址") + private String modulesUrl; + + @ApiModelProperty(value = "模块API") + private String modulesApi; + + @ApiModelProperty(value = "排序号") + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 10待审核 20已通过 30已驳回") + private Integer status; + + @ApiModelProperty(value = "用户ID") + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @TableLogic + private Integer deleted; + + @ApiModelProperty(value = "租户id") + private Integer tenantId; + + @ApiModelProperty(value = "创建时间") + private Date createTime; + + @ApiModelProperty(value = "修改时间") + private Date updateTime; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/EnvironmentMapper.java b/src/main/java/com/gxwebsoft/common/system/mapper/EnvironmentMapper.java new file mode 100644 index 0000000..b3ea0d3 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/EnvironmentMapper.java @@ -0,0 +1,37 @@ +package com.gxwebsoft.common.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.gxwebsoft.common.system.entity.Environment; +import com.gxwebsoft.common.system.param.EnvironmentParam; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 环境管理Mapper + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +public interface EnvironmentMapper extends BaseMapper { + + /** + * 分页查询 + * + * @param page 分页对象 + * @param param 查询参数 + * @return List + */ + List selectPageRel(@Param("page") IPage page, + @Param("param") EnvironmentParam param); + + /** + * 查询全部 + * + * @param param 查询参数 + * @return List + */ + List selectListRel(@Param("param") EnvironmentParam param); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/mapper/xml/EnvironmentMapper.xml b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EnvironmentMapper.xml new file mode 100644 index 0000000..917f93d --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/mapper/xml/EnvironmentMapper.xml @@ -0,0 +1,68 @@ + + + + + + + SELECT a.* + FROM sys_environment a + + + AND a.id = #{param.id} + + + AND a.environment_name LIKE CONCAT('%', #{param.environmentName}, '%') + + + AND a.environment_code LIKE CONCAT('%', #{param.environmentCode}, '%') + + + AND a.brand LIKE CONCAT('%', #{param.brand}, '%') + + + AND a.server_ip LIKE CONCAT('%', #{param.serverIp}, '%') + + + AND a.modules_url LIKE CONCAT('%', #{param.modulesUrl}, '%') + + + AND a.modules_api LIKE CONCAT('%', #{param.modulesApi}, '%') + + + AND a.sort_number = #{param.sortNumber} + + + AND a.comments LIKE CONCAT('%', #{param.comments}, '%') + + + AND a.status = #{param.status} + + + AND a.user_id = #{param.userId} + + + AND a.deleted = #{param.deleted} + + + AND a.deleted = 0 + + + AND a.create_time >= #{param.createTimeStart} + + + AND a.create_time <= #{param.createTimeEnd} + + + + + + + + + + + diff --git a/src/main/java/com/gxwebsoft/common/system/param/EnvironmentParam.java b/src/main/java/com/gxwebsoft/common/system/param/EnvironmentParam.java new file mode 100644 index 0000000..6e321e5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/param/EnvironmentParam.java @@ -0,0 +1,66 @@ +package com.gxwebsoft.common.system.param; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.gxwebsoft.common.core.annotation.QueryField; +import com.gxwebsoft.common.core.annotation.QueryType; +import com.gxwebsoft.common.core.web.BaseParam; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 环境管理查询参数 + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel(value = "EnvironmentParam对象", description = "环境管理查询参数") +public class EnvironmentParam extends BaseParam { + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "插件id") + @QueryField(type = QueryType.EQ) + private Integer id; + + @ApiModelProperty(value = "环境名称") + private String environmentName; + + @ApiModelProperty(value = "环境编号") + private String environmentCode; + + @ApiModelProperty(value = "服务器厂商") + private String brand; + + @ApiModelProperty(value = "服务器IP") + private String serverIp; + + @ApiModelProperty(value = "模块访问地址") + private String modulesUrl; + + @ApiModelProperty(value = "模块API") + private String modulesApi; + + @ApiModelProperty(value = "排序号") + @QueryField(type = QueryType.EQ) + private Integer sortNumber; + + @ApiModelProperty(value = "备注") + private String comments; + + @ApiModelProperty(value = "状态, 10待审核 20已通过 30已驳回") + @QueryField(type = QueryType.EQ) + private Integer status; + + @ApiModelProperty(value = "用户ID") + @QueryField(type = QueryType.EQ) + private Integer userId; + + @ApiModelProperty(value = "是否删除, 0否, 1是") + @QueryField(type = QueryType.EQ) + private Integer deleted; + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/EnvironmentService.java b/src/main/java/com/gxwebsoft/common/system/service/EnvironmentService.java new file mode 100644 index 0000000..d2499aa --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/EnvironmentService.java @@ -0,0 +1,42 @@ +package com.gxwebsoft.common.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gxwebsoft.common.core.web.PageResult; +import com.gxwebsoft.common.system.entity.Environment; +import com.gxwebsoft.common.system.param.EnvironmentParam; + +import java.util.List; + +/** + * 环境管理Service + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +public interface EnvironmentService extends IService { + + /** + * 分页关联查询 + * + * @param param 查询参数 + * @return PageResult + */ + PageResult pageRel(EnvironmentParam param); + + /** + * 关联查询全部 + * + * @param param 查询参数 + * @return List + */ + List listRel(EnvironmentParam param); + + /** + * 根据id查询 + * + * @param id 插件id + * @return Environment + */ + Environment getByIdRel(Integer id); + +} diff --git a/src/main/java/com/gxwebsoft/common/system/service/impl/EnvironmentServiceImpl.java b/src/main/java/com/gxwebsoft/common/system/service/impl/EnvironmentServiceImpl.java new file mode 100644 index 0000000..c4996a5 --- /dev/null +++ b/src/main/java/com/gxwebsoft/common/system/service/impl/EnvironmentServiceImpl.java @@ -0,0 +1,47 @@ +package com.gxwebsoft.common.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gxwebsoft.common.system.mapper.EnvironmentMapper; +import com.gxwebsoft.common.system.service.EnvironmentService; +import com.gxwebsoft.common.system.entity.Environment; +import com.gxwebsoft.common.system.param.EnvironmentParam; +import com.gxwebsoft.common.core.web.PageParam; +import com.gxwebsoft.common.core.web.PageResult; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 环境管理Service实现 + * + * @author 科技小王子 + * @since 2023-10-18 08:45:13 + */ +@Service +public class EnvironmentServiceImpl extends ServiceImpl implements EnvironmentService { + + @Override + public PageResult pageRel(EnvironmentParam param) { + PageParam page = new PageParam<>(param); + //page.setDefaultOrder("create_time desc"); + List list = baseMapper.selectPageRel(page, param); + return new PageResult<>(list, page.getTotal()); + } + + @Override + public List listRel(EnvironmentParam param) { + List list = baseMapper.selectListRel(param); + // 排序 + PageParam page = new PageParam<>(); + //page.setDefaultOrder("create_time desc"); + return page.sortRecords(list); + } + + @Override + public Environment getByIdRel(Integer id) { + EnvironmentParam param = new EnvironmentParam(); + param.setId(id); + return param.getOne(baseMapper.selectListRel(param)); + } + +} diff --git a/src/test/java/com/gxwebsoft/generator/SysGenerator.java b/src/test/java/com/gxwebsoft/generator/SysGenerator.java index c353351..5836b06 100644 --- a/src/test/java/com/gxwebsoft/generator/SysGenerator.java +++ b/src/test/java/com/gxwebsoft/generator/SysGenerator.java @@ -55,7 +55,8 @@ public class SysGenerator { // "sys_user_referee" // "sys_notice" // "sys_plug" - "sys_plug_record" +// "sys_plug_record", + "sys_environment" }; // 需要去除的表前缀 private static final String[] TABLE_PREFIX = new String[]{