Browse Source

CYF

tb-branch
CYF 1 month ago
parent
commit
2332ea6716
20 changed files with 817 additions and 3 deletions
  1. +2
    -2
      ruoyi-admin/src/main/resources/application-druid.yml
  2. +52
    -0
      ruoyi-catdog/pom.xml
  3. +31
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletBannerController.java
  4. +17
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletInfoController.java
  5. +40
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletLoginController.java
  6. +13
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletWorkController.java
  7. +8
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/domain/AppletLoginRequest.java
  8. +7
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/service/IAppletBannerService.java
  9. +23
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/AppletBannerServiceImpl.java
  10. +6
    -1
      ruoyi-catdog/src/main/java/com/ruoyi/catdog/controller/IndexPageConfigController.java
  11. +104
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppBannerController.java
  12. +83
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppBanner.java
  13. +68
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java
  14. +64
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppBannerService.java
  15. +101
    -0
      ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppBannerServiceImpl.java
  16. +86
    -0
      ruoyi-catdog/src/main/resources/mapper/model/AppBannerMapper.xml
  17. +19
    -0
      ruoyi-common/src/main/java/com/ruoyi/common/annotation/Anonymous.java
  18. +1
    -0
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
  19. +88
    -0
      ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java
  20. +4
    -0
      ruoyi-mall/pom.xml

+ 2
- 2
ruoyi-admin/src/main/resources/application-druid.yml View File

@ -6,9 +6,9 @@ spring:
druid:
# 主库数据源
master:
url: jdbc:mysql://gz-cdb-58faug9b.sql.tencentcdb.com:24894/catmdogf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
url: jdbc:mysql://localhost:3306/catmdogf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&allowMultiQueries=true
username: root
password: 20070110Hh..
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭


+ 52
- 0
ruoyi-catdog/pom.xml View File

@ -12,6 +12,58 @@
<artifactId>ruoyi-catdog</artifactId>
<dependencies>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-system</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<dependency>
<groupId>com.github.wechatpay-apiv3</groupId>
<artifactId>wechatpay-java</artifactId>
<version>0.2.9</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis.plus.version}</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cn.felord</groupId>
<artifactId>payment-spring-boot-starter</artifactId>
<version>1.0.19.RELEASE</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.79</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>${swagger.version}</version>
<exclusions>
<exclusion>
<groupId>io.swagger</groupId>
<artifactId>swagger-models</artifactId>
</exclusion>
<exclusion>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>


+ 31
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletBannerController.java View File

@ -0,0 +1,31 @@
package com.ruoyi.applet.contoller;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.model.domain.AppBanner;
import com.ruoyi.model.service.IAppBannerService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api("轮播图")
@RestController
@RequestMapping("/applet/banner")
public class AppletBannerController {
//1.查询轮播图接口
@Autowired
private IAppBannerService iAppBannerService;
@Anonymous
@ApiOperation("轮播图列表")
@GetMapping("/list")
public List<AppBanner> list(){
return iAppBannerService.getBannerList();
}
}

+ 17
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletInfoController.java View File

@ -0,0 +1,17 @@
package com.ruoyi.applet.contoller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("获取个人信息")
@RestController
@RequestMapping("/applet/Info")
public class AppletInfoController {
//1.获取个人信息
//2.获取分享海报
//3.获取我的用户信息列表分页
//4.通过我的用户信息中用户ID查看订单详情接口
//
}

+ 40
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletLoginController.java View File

@ -0,0 +1,40 @@
package com.ruoyi.applet.contoller;
import com.ruoyi.applet.domain.AppletLoginRequest;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Api("伴宠师登录")
@RestController
@RequestMapping("/applet/login")
public class AppletLoginController {
// @Autowired
//1.微信授权登录接口
//2.获取微信手机号接口
//3.获取用户协议和隐私政策用一个config拉取
// @Aonymous
@ApiOperation("登录接口")
@PostMapping("/login")
public ResponseEntity login(@RequestBody AppletLoginRequest appletLoginRequest){
Map<String,Object> hashMap = new HashMap();
hashMap.put("userInfo",appletLoginRequest);
hashMap.put("token",123);
return ResponseEntity.ok(hashMap);
}
}

+ 13
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/contoller/AppletWorkController.java View File

@ -0,0 +1,13 @@
package com.ruoyi.applet.contoller;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api("工作台")
@RestController
@RequestMapping("/applet/work")
public class AppletWorkController {
//1.获取用户的状态判断是否加入
//2.从工作台配置表获取图标和说明
}

+ 8
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/domain/AppletLoginRequest.java View File

@ -0,0 +1,8 @@
package com.ruoyi.applet.domain;
import lombok.Data;
@Data
public class AppletLoginRequest {
private String code;
}

+ 7
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/service/IAppletBannerService.java View File

@ -0,0 +1,7 @@
package com.ruoyi.applet.service;
import org.springframework.http.ResponseEntity;
public interface IAppletBannerService {
ResponseEntity getBannerList();
}

+ 23
- 0
ruoyi-catdog/src/main/java/com/ruoyi/applet/service/impl/AppletBannerServiceImpl.java View File

@ -0,0 +1,23 @@
package com.ruoyi.applet.service.impl;
import com.ruoyi.applet.service.IAppletBannerService;
import com.ruoyi.model.domain.AppBanner;
import com.ruoyi.model.service.IAppBannerService;
import com.ruoyi.system.service.IBasicServicesService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class AppletBannerServiceImpl implements IAppletBannerService {
@Autowired
private IAppBannerService iAppBannerService;
@Override
public ResponseEntity getBannerList() {
List<AppBanner> bannerList = iAppBannerService.getBannerList();
return ResponseEntity.ok(bannerList);
}
}

+ 6
- 1
ruoyi-catdog/src/main/java/com/ruoyi/catdog/controller/IndexPageConfigController.java View File

@ -3,6 +3,9 @@ package com.ruoyi.catdog.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -28,6 +31,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
* @author ruoyi
* @date 2025-03-02
*/
@Api("首页登录配置")
@RestController
@RequestMapping("/catdog/config")
public class IndexPageConfigController extends BaseController
@ -38,7 +42,8 @@ public class IndexPageConfigController extends BaseController
/**
* 查询首页登录配置列表
*/
@PreAuthorize("@ss.hasPermi('catdog:config:list')")
@ApiOperation("登录配置查询")
// @PreAuthorize("@ss.hasPermi('catdog:config:list')")
@GetMapping("/list")
public TableDataInfo list(IndexPageConfig indexPageConfig)
{


+ 104
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/controller/AppBannerController.java View File

@ -0,0 +1,104 @@
package com.ruoyi.model.controller;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
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.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.model.domain.AppBanner;
import com.ruoyi.model.service.IAppBannerService;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo;
/**
* 轮播图Controller
*
* @author ruoyi
* @date 2025-03-04
*/
@RestController
@RequestMapping("/model/banner")
public class AppBannerController extends BaseController
{
@Autowired
private IAppBannerService appBannerService;
/**
* 查询轮播图列表
*/
@PreAuthorize("@ss.hasPermi('model:banner:list')")
@GetMapping("/list")
public TableDataInfo list(AppBanner appBanner)
{
startPage();
List<AppBanner> list = appBannerService.selectAppBannerList(appBanner);
return getDataTable(list);
}
/**
* 导出轮播图列表
*/
@PreAuthorize("@ss.hasPermi('model:banner:export')")
@Log(title = "轮播图", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(HttpServletResponse response, AppBanner appBanner) throws IOException {
List<AppBanner> list = appBannerService.selectAppBannerList(appBanner);
ExcelUtil<AppBanner> util = new ExcelUtil<AppBanner>(AppBanner.class);
util.exportExcel(response, list, "轮播图数据");
}
/**
* 获取轮播图详细信息
*/
@PreAuthorize("@ss.hasPermi('model:banner:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id)
{
return success(appBannerService.selectAppBannerById(id));
}
/**
* 新增轮播图
*/
@PreAuthorize("@ss.hasPermi('model:banner:add')")
@Log(title = "轮播图", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody AppBanner appBanner)
{
return toAjax(appBannerService.insertAppBanner(appBanner));
}
/**
* 修改轮播图
*/
@PreAuthorize("@ss.hasPermi('model:banner:edit')")
@Log(title = "轮播图", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody AppBanner appBanner)
{
return toAjax(appBannerService.updateAppBanner(appBanner));
}
/**
* 删除轮播图
*/
@PreAuthorize("@ss.hasPermi('model:banner:remove')")
@Log(title = "轮播图", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(appBannerService.deleteAppBannerByIds(ids));
}
}

+ 83
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/domain/AppBanner.java View File

@ -0,0 +1,83 @@
package com.ruoyi.model.domain;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
/**
* 轮播图对象 app_banner
*
* @author ruoyi
* @date 2025-03-04
*/
public class AppBanner extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** $column.columnComment */
private Long id;
/** 轮播图图片
*/
@Excel(name = "轮播图图片 ")
private String image;
/** 跳转链接 */
@Excel(name = "跳转链接")
private String url;
/** 逻辑删除标识 */
private Long delFlag;
public void setId(Long id)
{
this.id = id;
}
public Long getId()
{
return id;
}
public void setImage(String image)
{
this.image = image;
}
public String getImage()
{
return image;
}
public void setUrl(String url)
{
this.url = url;
}
public String getUrl()
{
return url;
}
public void setDelFlag(Long delFlag)
{
this.delFlag = delFlag;
}
public Long getDelFlag()
{
return delFlag;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("image", getImage())
.append("url", getUrl())
.append("createTime", getCreateTime())
.append("createBy", getCreateBy())
.append("updateTime", getUpdateTime())
.append("updateBy", getUpdateBy())
.append("delFlag", getDelFlag())
.toString();
}
}

+ 68
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/mapper/AppBannerMapper.java View File

@ -0,0 +1,68 @@
package com.ruoyi.model.mapper;
import java.util.List;
import com.ruoyi.model.domain.AppBanner;
/**
* 轮播图Mapper接口
*
* @author ruoyi
* @date 2025-03-04
*/
public interface AppBannerMapper
{
/**
* 查询轮播图
*
* @param id 轮播图主键
* @return 轮播图
*/
public AppBanner selectAppBannerById(Long id);
/**
* 查询轮播图列表
*
* @param appBanner 轮播图
* @return 轮播图集合
*/
public List<AppBanner> selectAppBannerList(AppBanner appBanner);
/**
* 新增轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
public int insertAppBanner(AppBanner appBanner);
/**
* 修改轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
public int updateAppBanner(AppBanner appBanner);
/**
* 删除轮播图
*
* @param id 轮播图主键
* @return 结果
*/
public int deleteAppBannerById(Long id);
/**
* 批量删除轮播图
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteAppBannerByIds(Long[] ids);
/**
* 查询轮播图列表
*
* @return 轮播图集合
*/
public List<AppBanner> getBannerList();
}

+ 64
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/service/IAppBannerService.java View File

@ -0,0 +1,64 @@
package com.ruoyi.model.service;
import java.util.List;
import com.ruoyi.model.domain.AppBanner;
/**
* 轮播图Service接口
*
* @author ruoyi
* @date 2025-03-04
*/
public interface IAppBannerService
{
/**
* 查询轮播图
*
* @param id 轮播图主键
* @return 轮播图
*/
public AppBanner selectAppBannerById(Long id);
/**
* 查询轮播图列表
*
* @param appBanner 轮播图
* @return 轮播图集合
*/
public List<AppBanner> selectAppBannerList(AppBanner appBanner);
/**
* 新增轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
public int insertAppBanner(AppBanner appBanner);
/**
* 修改轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
public int updateAppBanner(AppBanner appBanner);
/**
* 批量删除轮播图
*
* @param ids 需要删除的轮播图主键集合
* @return 结果
*/
public int deleteAppBannerByIds(Long[] ids);
/**
* 删除轮播图信息
*
* @param id 轮播图主键
* @return 结果
*/
public int deleteAppBannerById(Long id);
public List<AppBanner> getBannerList();
}

+ 101
- 0
ruoyi-catdog/src/main/java/com/ruoyi/model/service/impl/AppBannerServiceImpl.java View File

@ -0,0 +1,101 @@
package com.ruoyi.model.service.impl;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.model.mapper.AppBannerMapper;
import com.ruoyi.model.domain.AppBanner;
import com.ruoyi.model.service.IAppBannerService;
/**
* 轮播图Service业务层处理
*
* @author ruoyi
* @date 2025-03-04
*/
@Service
public class AppBannerServiceImpl implements IAppBannerService
{
@Autowired
private AppBannerMapper appBannerMapper;
/**
* 查询轮播图
*
* @param id 轮播图主键
* @return 轮播图
*/
@Override
public AppBanner selectAppBannerById(Long id)
{
return appBannerMapper.selectAppBannerById(id);
}
/**
* 查询轮播图列表
*
* @param appBanner 轮播图
* @return 轮播图
*/
@Override
public List<AppBanner> selectAppBannerList(AppBanner appBanner)
{
return appBannerMapper.selectAppBannerList(appBanner);
}
/**
* 新增轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
@Override
public int insertAppBanner(AppBanner appBanner)
{
appBanner.setCreateTime(DateUtils.getNowDate());
return appBannerMapper.insertAppBanner(appBanner);
}
/**
* 修改轮播图
*
* @param appBanner 轮播图
* @return 结果
*/
@Override
public int updateAppBanner(AppBanner appBanner)
{
appBanner.setUpdateTime(DateUtils.getNowDate());
return appBannerMapper.updateAppBanner(appBanner);
}
/**
* 批量删除轮播图
*
* @param ids 需要删除的轮播图主键
* @return 结果
*/
@Override
public int deleteAppBannerByIds(Long[] ids)
{
return appBannerMapper.deleteAppBannerByIds(ids);
}
/**
* 删除轮播图信息
*
* @param id 轮播图主键
* @return 结果
*/
@Override
public int deleteAppBannerById(Long id)
{
return appBannerMapper.deleteAppBannerById(id);
}
@Override
public List<AppBanner> getBannerList() {
return appBannerMapper.getBannerList();
}
}

+ 86
- 0
ruoyi-catdog/src/main/resources/mapper/model/AppBannerMapper.xml View File

@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.model.mapper.AppBannerMapper">
<resultMap type="AppBanner" id="AppBannerResult">
<result property="id" column="id" />
<result property="image" column="image" />
<result property="url" column="url" />
<result property="createTime" column="create_time" />
<result property="createBy" column="create_by" />
<result property="updateTime" column="update_time" />
<result property="updateBy" column="update_by" />
<result property="delFlag" column="del_flag" />
</resultMap>
<sql id="selectAppBannerVo">
select id, image, url, create_time, create_by, update_time, update_by, del_flag from app_banner
</sql>
<select id="selectAppBannerList" parameterType="AppBanner" resultMap="AppBannerResult">
<include refid="selectAppBannerVo"/>
<where>
<if test="image != null and image != ''"> and image = #{image}</if>
<if test="url != null and url != ''"> and url = #{url}</if>
</where>
</select>
<select id="selectAppBannerById" parameterType="Long" resultMap="AppBannerResult">
<include refid="selectAppBannerVo"/>
where id = #{id}
</select>
<select id="getBannerList" resultType="com.ruoyi.model.domain.AppBanner">
<include refid="selectAppBannerVo"/>
</select>
<insert id="insertAppBanner" parameterType="AppBanner">
insert into app_banner
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
<if test="image != null">image,</if>
<if test="url != null">url,</if>
<if test="createTime != null">create_time,</if>
<if test="createBy != null">create_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="delFlag != null">del_flag,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">#{id},</if>
<if test="image != null">#{image},</if>
<if test="url != null">#{url},</if>
<if test="createTime != null">#{createTime},</if>
<if test="createBy != null">#{createBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="delFlag != null">#{delFlag},</if>
</trim>
</insert>
<update id="updateAppBanner" parameterType="AppBanner">
update app_banner
<trim prefix="SET" suffixOverrides=",">
<if test="image != null">image = #{image},</if>
<if test="url != null">url = #{url},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteAppBannerById" parameterType="Long">
delete from app_banner where id = #{id}
</delete>
<delete id="deleteAppBannerByIds" parameterType="String">
delete from app_banner where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

+ 19
- 0
ruoyi-common/src/main/java/com/ruoyi/common/annotation/Anonymous.java View File

@ -0,0 +1,19 @@
package com.ruoyi.common.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 匿名访问不鉴权注解
*
* @author ruoyi
*/
@Target({ ElementType.METHOD, ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Anonymous {
}

+ 1
- 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java View File

@ -116,6 +116,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.antMatchers("/webjars/**").anonymous()
.antMatchers("/*/api-docs").anonymous()
.antMatchers("/druid/**").anonymous()
.antMatchers("/catdog/**").anonymous()
// 除上面外的所有请求全部需要鉴权认证
.anyRequest().authenticated()
.and()


+ 88
- 0
ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java View File

@ -0,0 +1,88 @@
package com.ruoyi.framework.config.properties;
import java.util.*;
import java.util.regex.Pattern;
import org.apache.commons.lang3.RegExUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotationUtils;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
import com.ruoyi.common.annotation.Anonymous;
/**
* 设置Anonymous注解 允许 匿名访问不鉴权
* 项目初始化时候会将Anonymous注解的 路径 提取出来放到urls里面
*
* InitializingBean为bean提供了初始化方法的方式凡是继承该接口的类在初始化bean的时候都会执行afterPropertiesSet方法
*
* ApplicationContextAware当一个类实现了这个接口之后这个类就可以方便的获得ApplicationContext对象spring上下文
* Spring发现某个Bean实现了ApplicationContextAware接口Spring容器会在创建该Bean之后自动调用该Bean的setApplicationContext参数方法
* 调用该方法时会将容器本身ApplicationContext对象作为参数传递给该方法
*
* @author ruoyi
*/
@Configuration
public class PermitAllUrlProperties implements InitializingBean, ApplicationContextAware {
private static final Pattern PATTERN = Pattern.compile("\\{(.*?)\\}");
// spring上下文
private ApplicationContext applicationContext;
// 前端请求接口的时候如果在这个url里面直接放行
private List<String> urls = new ArrayList<>();
// 替代字符串
public String ASTERISK = "*";
@Override
public void afterPropertiesSet() {
// 将整个项目所有bean都拿出来
RequestMappingHandlerMapping mapping = applicationContext.getBean(RequestMappingHandlerMapping.class);
// 获取 每个url 方法类的对应关系
Map<RequestMappingInfo, HandlerMethod> map = mapping.getHandlerMethods();
// info 是代表每个url对象
map.keySet().forEach(info -> {
// 获取类和方法的信息
HandlerMethod handlerMethod = map.get(info);
// 获取方法上边的注解如果此方法被Anonymous注解则返回该方法否则返回null
Anonymous method = AnnotationUtils.findAnnotation(handlerMethod.getMethod(), Anonymous.class);
// method为null啥也不干否则替代path variable *
Optional.ofNullable(method).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
// 获取类上边的注解如果此类被Anonymous注解则返回该类否则返回null
Anonymous controller = AnnotationUtils.findAnnotation(handlerMethod.getBeanType(), Anonymous.class);
// controller为null啥也不干否则替代path variable *
Optional.ofNullable(controller).ifPresent(anonymous -> Objects.requireNonNull(info.getPatternsCondition().getPatterns())
.forEach(url -> urls.add(RegExUtils.replaceAll(url, PATTERN, ASTERISK))));
});
}
/**
* @Description // 这玩意是接口ApplicationContextAware带来的就是为了在本类中方便获取 applicationContext
* @Date 16:15 2023/3/22
**/
@Override
public void setApplicationContext(ApplicationContext context) throws BeansException {
this.applicationContext = context;
}
public List<String> getUrls() {
return urls;
}
public void setUrls(List<String> urls) {
this.urls = urls;
}
}

+ 4
- 0
ruoyi-mall/pom.xml View File

@ -106,6 +106,10 @@
<groupId>org.springframework.retry</groupId>
<artifactId>spring-retry</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
</dependencies>
</project>

Loading…
Cancel
Save