From 781b5fea46cd55220b5ffca17aa6bb1b83551410 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期二, 21 五月 2024 08:59:55 +0800 Subject: [PATCH] 代码提交 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserShareServiceImpl.java | 23 + ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TSysSetController.java | 26 + ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java | 8 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TFeedbackController.java | 17 ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/SubjectVO.java | 2 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TFeedback.java | 2 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java | 4 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStory.java | 13 ruoyi-service/ruoyi-management/src/main/resources/mapper/management/src/main/resources/mapper/TUseGuideMapper.xml | 3 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserShare.java | 34 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserParent.java | 52 ++ ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TStudyController.java | 6 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserShareMapper.java | 17 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java | 7 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/vo/VipSetVO.java | 6 ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/feignClient/ManagementClient.java | 13 ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/SubjectDTO.java | 2 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java | 11 ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/query/UseGuideQuery.java | 17 ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TStoryMapper.xml | 2 ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserShareMapper.xml | 7 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/StoryDTO.java | 2 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/SubjectDTO.java | 2 ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/StoryDTO.java | 2 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserShareService.java | 17 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java | 6 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStoryController.java | 3 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/OssController.java | 78 +++ ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TUseGuide.java | 108 +++++ ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/mapper/TUseGuideMapper.java | 2 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java | 9 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/query/UseGuideQuery.java | 17 ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TFeedback.java | 118 +++++ ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/service/ITUseGuideService.java | 2 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TSubjectController.java | 3 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java | 89 ++++ ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/domain/TUserShare.java | 36 + ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 273 +++++++++--- ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/factory/TManagementFallbackFactory.java | 18 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/utils/ObsUploadUtil.java | 78 +++ ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TUseGuide.java | 15 41 files changed, 1,017 insertions(+), 133 deletions(-) diff --git a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/factory/TManagementFallbackFactory.java b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/factory/TManagementFallbackFactory.java index 9c592e4..82dc9c2 100644 --- a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/factory/TManagementFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/factory/TManagementFallbackFactory.java @@ -1,10 +1,12 @@ package com.ruoyi.management.api.factory; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.management.api.feignClient.ManagementClient; +import com.ruoyi.management.api.model.TFeedback; +import com.ruoyi.management.api.model.TUseGuide; import com.ruoyi.management.api.model.TVipSet; +import com.ruoyi.management.api.query.UseGuideQuery; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.openfeign.FallbackFactory; @@ -28,12 +30,22 @@ return new ManagementClient() { @Override public R getPage1() { - return R.fail("获取注意事项失败"+cause.getMessage()); + return R.fail("家长端获取注意事项失败"+cause.getMessage()); } @Override public R<List<TVipSet>> getVipSet1() { - return R.fail("获取会员规格配置和说明失败"+cause.getMessage()); + return R.fail("家长端获取会员规格配置和说明失败"+cause.getMessage()); + } + + @Override + public R<PageInfo<TUseGuide>> useGuide1(UseGuideQuery query) { + return R.fail("家长端获取使用指南失败"+cause.getMessage()); + } + + @Override + public R addFeedBack(TFeedback dto) { + return R.fail("家长端发布意见反馈失败"+cause.getMessage()); } }; } diff --git a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/feignClient/ManagementClient.java b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/feignClient/ManagementClient.java index 9a5400d..16601be 100644 --- a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/feignClient/ManagementClient.java +++ b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/feignClient/ManagementClient.java @@ -2,14 +2,17 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.management.api.factory.TManagementFallbackFactory; +import com.ruoyi.management.api.model.TFeedback; import com.ruoyi.management.api.model.TPage; +import com.ruoyi.management.api.model.TUseGuide; import com.ruoyi.management.api.model.TVipSet; +import com.ruoyi.management.api.query.UseGuideQuery; import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RequestBody; import java.util.List; @@ -21,4 +24,10 @@ @PostMapping("/tUser/getVipSet1") R<List<TVipSet>> getVipSet1(); + @PostMapping("/tSysSet/useGuide1") + R<PageInfo<TUseGuide>> useGuide1(@RequestBody UseGuideQuery query); + + @PostMapping("/tFeedback/addFeedBack") + R addFeedBack(@RequestBody TFeedback dto); + } diff --git a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TFeedback.java b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TFeedback.java new file mode 100644 index 0000000..678a6dd --- /dev/null +++ b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TFeedback.java @@ -0,0 +1,118 @@ +package com.ruoyi.management.api.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.web.domain.BaseModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * <p> + * 用户反馈 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +@Data +@TableName("t_feedback") +public class TFeedback extends BaseModel { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 用户id + */ + @ApiModelProperty(value = "用户id") + private Integer userId; + /** + * 图片 + */ + @ApiModelProperty(value = "图片 多张逗号隔开") + private String img; + /** + * 内容 + */ + @ApiModelProperty(value = "内容") + private String content; + /** + * 状态1未处理 2已处理 + */ + @ApiModelProperty(value = "状态1未处理2已处理") + private Integer state; + /** + * 添加时间 + */ + @ApiModelProperty(value = "插入时间") + private Date insertTime; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getImg() { + return img; + } + + public void setImg(String img) { + this.img = img; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public Integer getState() { + return state; + } + + public void setState(Integer state) { + this.state = state; + } + + public Date getInsertTime() { + return insertTime; + } + + public void setInsertTime(Date insertTime) { + this.insertTime = insertTime; + } + + @Override + public String toString() { + return "TFeedback{" + + ", id=" + id + + ", userId=" + userId + + ", img=" + img + + ", content=" + content + + ", state=" + state + + ", insertTime=" + insertTime + + "}"; + } +} diff --git a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TUseGuide.java b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TUseGuide.java new file mode 100644 index 0000000..e793774 --- /dev/null +++ b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/model/TUseGuide.java @@ -0,0 +1,108 @@ +package com.ruoyi.management.api.model; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.web.domain.BaseModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * <p> + * 使用指南 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +@Data +@TableName("t_use_guide") +public class TUseGuide extends BaseModel { + + private static final long serialVersionUID = 1L; + + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 标题 + */ + @ApiModelProperty(value = "标题") + private String title; + /** + * 排序 数字越大权重越大 + */ + @ApiModelProperty(value = "排序") + private String sort; + + /** + * 答案 + */ + @ApiModelProperty(value = "答案--查看详情使用该字段") + private String answer; + /** + * 插入时间 + */ + @ApiModelProperty(value = "插入时间") + private Date insertTime; + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSort() { + return sort; + } + + public void setSort(String sort) { + this.sort = sort; + } + + + + public String getAnswer() { + return answer; + } + + public void setAnswer(String answer) { + this.answer = answer; + } + + public Date getInsertTime() { + return insertTime; + } + + public void setInsertTime(Date insertTime) { + this.insertTime = insertTime; + } + + @Override + public String toString() { + return "TUseGuide{" + + ", id=" + id + + ", title=" + title + + ", sort=" + sort + + + ", answer=" + answer + + ", insertTime=" + insertTime + + "}"; + } +} diff --git a/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/query/UseGuideQuery.java b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/query/UseGuideQuery.java new file mode 100644 index 0000000..63c2844 --- /dev/null +++ b/ruoyi-api/ruoyi-api-management/src/main/java/com/ruoyi/management/api/query/UseGuideQuery.java @@ -0,0 +1,17 @@ +package com.ruoyi.management.api.query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@ApiModel +@Data +public class UseGuideQuery { + @ApiModelProperty(value = "标题") + private String title; + @ApiModelProperty(value = "页码,首页1", required = true) + private Integer pageNumber; + @ApiModelProperty(value = "页条数", required = true) + private Integer pageSize; +} \ No newline at end of file diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/domain/TUserShare.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/domain/TUserShare.java new file mode 100644 index 0000000..4cbc1a8 --- /dev/null +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/domain/TUserShare.java @@ -0,0 +1,36 @@ +package com.ruoyi.study.api.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.web.domain.BaseModel; +import lombok.Data; + +import java.util.Date; + +/** + * <p> + * 用户表 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +@Data +@TableName("t_user_share") +public class TUserShare extends BaseModel { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 用户id + */ + private Integer userId; + /** + * 分享时 获得积分 + */ + private Integer integral; + +} diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/StoryDTO.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/StoryDTO.java index 638d8c7..f01777f 100644 --- a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/StoryDTO.java +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/StoryDTO.java @@ -19,7 +19,7 @@ @ApiModelProperty(value = "图片",required = true) private String img; @ApiModelProperty(value = "正确语音",required = true) - private String right; + private String correct; @ApiModelProperty(value = "错误语音 多个逗号拼接") private String error; diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/SubjectDTO.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/SubjectDTO.java index c7f1322..183d190 100644 --- a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/SubjectDTO.java +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/dto/SubjectDTO.java @@ -19,7 +19,7 @@ @ApiModelProperty(value = "图片",required = true) private String img; @ApiModelProperty(value = "正确语音",required = true) - private String right; + private String correct; @ApiModelProperty(value = "错误语音 多个逗号拼接") private String error; diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/SubjectVO.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/SubjectVO.java index 180d6c8..0baa4c7 100644 --- a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/SubjectVO.java +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/SubjectVO.java @@ -7,6 +7,8 @@ @Data @ApiModel("故事/题目管理列表查询返回VO") public class SubjectVO { + @ApiModelProperty(value = "id") + private Integer id; @ApiModelProperty(value = "题目名称") private String name; @ApiModelProperty(value = "英文释义") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserParent.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserParent.java new file mode 100644 index 0000000..da08de9 --- /dev/null +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/model/LoginUserParent.java @@ -0,0 +1,52 @@ +package com.ruoyi.system.api.model; + +import com.ruoyi.system.api.domain.SysUser; +import lombok.Data; + +import java.io.Serializable; +import java.util.Set; + +/** + * 用户信息 家长端 学习端使用 + * + * @author ruoyi + */ +@Data +public class LoginUserParent implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** + * 用户唯一标识 + */ + private String token; + /** + * 用户姓名 + */ + private String name; + + /** + * 用户名id + */ + private Integer userid; + + /** + * 用户名 + */ + private String phone; + /** + * 登录时间 + */ + private Long loginTime; + + /** + * 过期时间 + */ + private Long expireTime; + + /** + * 登录IP地址 + */ + private String ipaddr; + +} diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java index c122e52..80a3aeb 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/SecurityConstants.java @@ -36,6 +36,14 @@ * 用户标识 */ public static final String USER_KEY = "user_key"; + /** + * 家长端登录用户标识 + */ + public static final String USER_PARENT_KEY = "user_parent_key"; + /** + * 学习端登录用户标识 -- 做单点登录 + */ + public static final String USER_STUDY_KEY = "user_study_key"; /** * 登录用户 diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java index d984892..e0e99f4 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java @@ -51,6 +51,17 @@ Claims claims = parseToken(token); return getValue(claims, SecurityConstants.USER_KEY); } + /** + * 家长端 学习端根据令牌获取用户标识 + * + * @param token 令牌 + * @return 用户ID + */ + public static String getUserKey1(String token) + { + Claims claims = parseToken(token); + return getValue(claims, SecurityConstants.USER_PARENT_KEY); + } /** * 根据令牌获取用户标识 diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java index fa04637..9813724 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java @@ -53,6 +53,13 @@ { tokenService.delLoginUser(token); } + /** + * 家长端会话注销,根据指定Token + */ + public void logoutByToken1(String token) + { + tokenService.delLoginUser1(token); + } /** * 检验用户是否已经登录,如未登录,则抛出异常 diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java index 8b0d86c..3d070e5 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java @@ -33,6 +33,15 @@ { authLogic.logoutByToken(token); } + /** + * 家长端会话注销,根据指定Token + * + * @param token 指定token + */ + public static void logoutByToken1(String token) + { + authLogic.logoutByToken1(token); + } /** * 检验当前会话是否已经登录,如未登录,则抛出异常 diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java index 139ee8b..a5af603 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java @@ -4,6 +4,8 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import javax.servlet.http.HttpServletRequest; + +import com.ruoyi.system.api.model.LoginUserParent; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.core.constant.CacheConstants; @@ -64,7 +66,25 @@ rspMap.put("expires_in", expireTime); return rspMap; } - + public Map<String, Object> createToken1(LoginUserParent loginUser) + { + String token = IdUtils.fastUUID(); + Integer userId = loginUser.getUserid(); + String name = loginUser.getName(); + loginUser.setToken(token); + loginUser.setIpaddr(IpUtils.getIpAddr()); + refreshToken1(loginUser); + // Jwt存储信息 + Map<String, Object> claimsMap = new HashMap<String, Object>(); + claimsMap.put(SecurityConstants.USER_PARENT_KEY, token); + claimsMap.put(SecurityConstants.DETAILS_USER_ID, userId); + claimsMap.put(SecurityConstants.DETAILS_USERNAME, name); + // 接口返回信息 + Map<String, Object> rspMap = new HashMap<String, Object>(); + rspMap.put("access_token", JwtUtils.createToken(claimsMap)); + rspMap.put("expires_in", expireTime); + return rspMap; + } /** * 获取用户身份信息 * @@ -85,6 +105,27 @@ // 获取请求携带的令牌 String token = SecurityUtils.getToken(request); return getLoginUser(token); + } + /** + * 家长端/学习端获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserParent getLoginUser1() + { + return getLoginUser1(ServletUtils.getRequest()); + } + + /** + * 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserParent getLoginUser1(HttpServletRequest request) + { + // 获取请求携带的令牌 + String token = SecurityUtils.getToken(request); + return getLoginUser1(token); } /** @@ -109,6 +150,29 @@ } return user; } + /** + * 家长端 学习端 获取用户身份信息 + * + * @return 用户信息 + */ + public LoginUserParent getLoginUser1(String token) + { + LoginUserParent user = null; + try + { + if (StringUtils.isNotEmpty(token)) + { + String userkey = JwtUtils.getUserKey1(token); + user = redisService.getCacheObject(getTokenKey(userkey)); + return user; + } + } + catch (Exception e) + { + e.printStackTrace(); + } + return user; + } /** * 设置用户身份信息 @@ -129,6 +193,17 @@ if (StringUtils.isNotEmpty(token)) { String userkey = JwtUtils.getUserKey(token); + redisService.deleteObject(getTokenKey(userkey)); + } + } + /** + * 家长端删除用户缓存信息 + */ + public void delLoginUser1(String token) + { + if (StringUtils.isNotEmpty(token)) + { + String userkey = JwtUtils.getUserKey1(token); redisService.deleteObject(getTokenKey(userkey)); } } @@ -162,6 +237,18 @@ redisService.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES); } + /** + * 家长端用户登录 + */ + public void refreshToken1(LoginUserParent dto) + { + dto.setLoginTime(System.currentTimeMillis()); + dto.setExpireTime(dto.getLoginTime() + expireTime * MILLIS_MINUTE); + // 根据uuid将loginUser缓存 + String userKey = getTokenKey(dto.getToken()); + redisService.setCacheObject(userKey, dto, expireTime, TimeUnit.MINUTES); + } + private String getTokenKey(String token) { return ACCESS_TOKEN + token; diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/OssController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/OssController.java new file mode 100644 index 0000000..4560bfe --- /dev/null +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/OssController.java @@ -0,0 +1,78 @@ +package com.ruoyi.management.controller; + + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.management.utils.ObsUploadUtil; +import io.swagger.annotations.ApiOperation; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +@RestController +@RequestMapping("/base/oss") +public class OssController { + private static final String endpoint = "obs.cn-north-4.myhuaweicloud.com"; + private static final String accessKeyId = "DRJFJRVQ9KVLQUSJUROI"; + private static final String accessKeySecret = "3zpPkULh0a8CTTYjKL4f7szQZECkvVol4SwNab0f"; + private static final String bucketName = "jkjianshen"; + @PostMapping("/upload") + @ApiOperation(value = "文件上传",tags = "文件上传") + public String upload(@RequestParam("file") MultipartFile file) throws IOException { + String s = ObsUploadUtil.obsUpload(file); + return s; + } +// @PostMapping("/uploadVideo") +// @ApiOperation(value = "视频上传",tags = "文件上传") +// public String uploadVideo(@RequestParam("file") MultipartFile file) throws Exception { +// // 获取文件名 +// String fileName = file.getOriginalFilename(); +// // 构建目标文件路径 +// String filePath = "/usr/local/temp" + fileName; +//// String filePath = "C:/temp/" + fileName; +// // 创建目标文件对象 +// File targetFile = new File(filePath); +// // 将 MultipartFile 内容写入目标文件 +// try (FileOutputStream fos = new FileOutputStream(targetFile)) { +// fos.write(file.getBytes()); +// } +// String s = UploadVideoUtil.endUpload(targetFile.toString(), UUIDUtil.getRandomCode(5)+fileName); +// // 创建要删除的文件对象 +// File fileToDelete = new File(targetFile.toString()); +// // 检查文件是否存在,并删除文件 +// if (fileToDelete.exists()) { +// fileToDelete.delete(); +// } +// return s; +// } + +// @PostMapping("/upload") +// @ApiOperation(value = "文件上传",tags = "文件上传") +// public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) throws IOException { +// // 创建 OSSClient 实例 +// OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret); +// +// +// // 创建 PutObjectRequest 对象 +// PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, file.getOriginalFilename(), file.getInputStream()); +// +// ObjectMetadata metadata = new ObjectMetadata(); +// // 取消文件缓存,文件每次都会从OSS服务器获取 +// metadata.setHeader("Cache-Control", "no-cache"); +// metadata.setHeader("Expires", "0"); +// +// +// // 上传文件 +// PutObjectResult putObjectResult = ossClient.putObject(putObjectRequest); +// +// // 关闭 OSSClient 实例 +// ossClient.shutdown(); +// +// String fileUrl = "https://" + bucketName + "." + endpoint + "/" + file.getOriginalFilename(); +// return ResponseEntity.ok(fileUrl); +// } + + +} diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TFeedbackController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TFeedbackController.java index 8af2110..73e0bbe 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TFeedbackController.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TFeedbackController.java @@ -1,21 +1,24 @@ package com.ruoyi.management.controller; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.management.domain.TFeedback; +import com.ruoyi.management.domain.TUseGuide; import com.ruoyi.management.dto.FeedbackQuery; +import com.ruoyi.management.query.UseGuideQuery; import com.ruoyi.management.service.ITFeedbackService; import com.ruoyi.management.vo.FeedbackVO; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -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.ResponseBody; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; import java.util.List; /** @@ -32,6 +35,12 @@ @Autowired private ITFeedbackService feedbackService; + @PostMapping("/addFeedBack") + @ApiOperation(value = "反馈", tags = {"家长端-意见反馈"}) + public R addFeedBack(@RequestBody TFeedback dto) { + feedbackService.save(dto); + return R.ok(); + } @ResponseBody @PostMapping("/listAll") diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TStudyController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TStudyController.java index 0908c27..7032f98 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TStudyController.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TStudyController.java @@ -30,7 +30,7 @@ * @since 2024-04-26 */ @Controller -@RequestMapping("/management/tStudy") +@RequestMapping("/tStudy") public class TStudyController { @Autowired private StudyClient studyClient; @@ -43,9 +43,9 @@ return AjaxResult.success(data); } @ApiOperation(value = "选择故事列表查询", tags = {"后台-学习"}) - @PostMapping(value = "/storyist1") + @PostMapping(value = "/storyList1") @ResponseBody - public AjaxResult<PageInfo<TStory>> storyist(ChoiceStory dto) { + public AjaxResult<PageInfo<TStory>> storyList(ChoiceStory dto) { R<PageInfo<TStory>> pageInfoR = studyClient.storyList(dto); PageInfo<TStory> data = pageInfoR.getData(); return AjaxResult.success(data); diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TSysSetController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TSysSetController.java index 6187c6c..821b6c1 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TSysSetController.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TSysSetController.java @@ -11,6 +11,7 @@ import com.ruoyi.management.domain.TUseGuide; import com.ruoyi.management.dto.AggrementDTO; import com.ruoyi.management.dto.UseGuidDTO; +import com.ruoyi.management.query.UseGuideQuery; import com.ruoyi.management.service.ITPageService; import com.ruoyi.management.service.ITProtocolService; import com.ruoyi.management.service.ITSysSetService; @@ -20,7 +21,6 @@ import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -118,6 +118,23 @@ res.setTotal(useGuides.size()); return AjaxResult.success(res); } + @PostMapping("/useGuide1") + @ApiOperation(value = "列表查询", tags = {"家长端-使用指南"}) + public R<PageInfo<TUseGuide>> useGuide1(@RequestBody UseGuideQuery query) { + QueryWrapper<TUseGuide> wrapper = new QueryWrapper<>(); + if (StringUtils.hasLength(query.getTitle())){ + wrapper.like("title",query.getTitle()); + } + List<String> strings = new ArrayList<>(); + strings.add("insertTime"); + wrapper.orderByDesc(strings); + PageInfo<TUseGuide> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); + List<TUseGuide> useGuides = useGuideService.list(wrapper); + res.setRecords(useGuides); + res.setTotal(useGuides.size()); + return R.ok(res); + } + @PostMapping("/updateUseGuide") @ApiOperation(value = "使用指南-添加/编辑/查看详情", tags = {"使用指南"}) public AjaxResult<TUseGuide> updateUseGuide(@RequestBody UseGuidDTO dto) { @@ -126,7 +143,6 @@ TUseGuide useGuide = new TUseGuide(); useGuide.setTitle(dto.getTitle()); useGuide.setSort(dto.getSort()); - useGuide.setIsDelete(0); useGuide.setAnswer(dto.getAnswer()); useGuide.setInsertTime(new Date()); useGuideService.save(useGuide); @@ -148,10 +164,8 @@ @DeleteMapping("/delete{id}") @ApiOperation(value = "使用指南-删除", tags = {"使用指南"}) public AjaxResult updateUseGuide(@PathVariable Integer id) { - - TUseGuide useGuide2 = useGuideService.getById(id); - useGuide2.setIsDelete(1); - useGuideService.updateById(useGuide2); +// TUseGuide useGuide2 = useGuideService.getById(id); + useGuideService.removeById(id); return AjaxResult.success("删除成功"); } } diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java index c12df85..3bf88bd 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java @@ -136,14 +136,12 @@ return R.ok(list); } @PostMapping("/setVipSet") - @ApiOperation(value = "获取会员设置", tags = {"用户管理"}) + @ApiOperation(value = "保存会员设置", tags = {"用户管理"}) public AjaxResult setVipSet(@RequestBody VipSetVO vo) { - String info = vo.getInfo(); List<TVipSet> list = vo.getList(); // 删除原有数据 重新保存 vipSetService.remove(new QueryWrapper<TVipSet>()); for (TVipSet tVipSet : list) { - tVipSet.setInfo(info); vipSetService.save(tVipSet); } return AjaxResult.success("保存成功"); diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TFeedback.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TFeedback.java index b41a00e..3a2ca11 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TFeedback.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TFeedback.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.ruoyi.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import java.io.Serializable; @@ -19,6 +20,7 @@ * @author 无关风月 * @since 2024-04-26 */ +@Data @TableName("t_feedback") public class TFeedback extends BaseModel { diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TUseGuide.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TUseGuide.java index bda616c..88cf1a5 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TUseGuide.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/domain/TUseGuide.java @@ -39,11 +39,7 @@ */ @ApiModelProperty(value = "排序") private String sort; - /** - * 是否删除0否1是 - */ - @ApiModelProperty(value = "是否删除 0否1是") - private Integer isDelete; + /** * 答案 */ @@ -80,13 +76,6 @@ this.sort = sort; } - public Integer getIsDelete() { - return isDelete; - } - - public void setIsDelete(Integer isDelete) { - this.isDelete = isDelete; - } public String getAnswer() { return answer; @@ -110,7 +99,7 @@ ", id=" + id + ", title=" + title + ", sort=" + sort + - ", isDelete=" + isDelete + + ", answer=" + answer + ", insertTime=" + insertTime + "}"; diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/mapper/TUseGuideMapper.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/mapper/TUseGuideMapper.java index 6213eaa..95a419c 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/mapper/TUseGuideMapper.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/mapper/TUseGuideMapper.java @@ -1,7 +1,7 @@ package com.ruoyi.management.mapper; -import com.ruoyi.management.domain.TUseGuide; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.management.domain.TUseGuide; /** * <p> diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/query/UseGuideQuery.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/query/UseGuideQuery.java new file mode 100644 index 0000000..d278c60 --- /dev/null +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/query/UseGuideQuery.java @@ -0,0 +1,17 @@ +package com.ruoyi.management.query; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +@ApiModel +@Data +public class UseGuideQuery { + @ApiModelProperty(value = "标题") + private String title; + @ApiModelProperty(value = "页码,首页1", required = true) + private Integer pageNumber; + @ApiModelProperty(value = "页条数", required = true) + private Integer pageSize; +} \ No newline at end of file diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/service/ITUseGuideService.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/service/ITUseGuideService.java index a841d2b..4cf2c8c 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/service/ITUseGuideService.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/service/ITUseGuideService.java @@ -1,7 +1,7 @@ package com.ruoyi.management.service; -import com.ruoyi.management.domain.TUseGuide; import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.management.domain.TUseGuide; /** * <p> diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/utils/ObsUploadUtil.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/utils/ObsUploadUtil.java new file mode 100644 index 0000000..a9335f5 --- /dev/null +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/utils/ObsUploadUtil.java @@ -0,0 +1,78 @@ +package com.ruoyi.management.utils; + +import com.obs.services.ObsClient; +import com.obs.services.model.ObjectMetadata; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.UUID; + +public class ObsUploadUtil { + + public static String endPoint = "obs.cn-north-4.myhuaweicloud.com"; + public static String accessKeyId = "X3V6GPYUK1VQ03K0JG4G"; + public static String accessKeySecret = "CustHR4B9XKdT7hGcEYEpV9UVUoc4pmUhnHckU9h"; + public static String bucketName = "jkjianshen"; + public static String oss_domain = "https://jkjianshen.obs.cn-north-4.myhuaweicloud.com/"; + // 创建ObsClient实例 + public static ObsClient obsClient = new ObsClient(accessKeyId, accessKeySecret, endPoint); + + public static String obsUpload(MultipartFile file) throws IOException{ + //CommonsMultipartFile file = (CommonsMultipartFile)multipartFile; + String fileName = ""; + if(file!=null && !"".equals(file.getOriginalFilename()) && file.getOriginalFilename()!=null){ + InputStream content = file.getInputStream();//获得指定文件的输入流 + ObjectMetadata meta = new ObjectMetadata();// 创建上传Object的Metadata + meta.setContentLength(file.getSize()); // 必须设置ContentLength + String originalFilename = file.getOriginalFilename(); + if (originalFilename.contains("apk")){ + fileName = "bf2fe5c5499341e5bc0d56c0c7d5fb2e.apk"; + System.err.println("apk"); + }else{ + fileName = UUID.randomUUID().toString().replaceAll("-","") + originalFilename.subSequence(originalFilename.lastIndexOf("."), originalFilename.length()); + } + obsClient.putObject(bucketName,"admin/"+fileName,content,meta);// 上传Object. + if(fileName != null && !"".equals(fileName)){ + System.out.println(fileName); + fileName = oss_domain+"admin/"+fileName; + } + } + return fileName; + } + + /** + * 删除某个Object + * + * @param bucketUrl + * @return + */ + public static boolean deleteObject(String bucketUrl) { + try { + bucketUrl=bucketUrl.replace(oss_domain+"web",""); + // 删除Object. + obsClient.deleteObject(bucketName, bucketUrl); + } catch (Exception e) { + e.printStackTrace(); + return false; + } finally { + //ossClient.shutdown(); + } + return true; + } + +// public static void createBucket(String bucketName) +// { +// //初始化 OSSClient +//// ossClient = new OssClient(endPoint, accessKeyId, accessKeySecret); +// +// // 新建一个Bucket +// Bucket bucket = ossClient.createBucket(bucketName); +// System.out.println(bucket.getName()); +// System.out.println(bucket.getCreationDate()); +// } +// +// public static void main(String[] args) { +// OssUploadUtil.createBucket("ssfdfsd"); +// } +} diff --git a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/vo/VipSetVO.java b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/vo/VipSetVO.java index ff9046b..348c306 100644 --- a/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/vo/VipSetVO.java +++ b/ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/vo/VipSetVO.java @@ -17,11 +17,7 @@ */ @Data public class VipSetVO { - /** - * 会员说明 - */ - @ApiModelProperty(value = "会员说明") - private String info; + @ApiModelProperty(value = "会员价格设置") private List<TVipSet> list; diff --git a/ruoyi-service/ruoyi-management/src/main/resources/mapper/management/src/main/resources/mapper/TUseGuideMapper.xml b/ruoyi-service/ruoyi-management/src/main/resources/mapper/management/src/main/resources/mapper/TUseGuideMapper.xml index 3bec438..de30e7e 100644 --- a/ruoyi-service/ruoyi-management/src/main/resources/mapper/management/src/main/resources/mapper/TUseGuideMapper.xml +++ b/ruoyi-service/ruoyi-management/src/main/resources/mapper/management/src/main/resources/mapper/TUseGuideMapper.xml @@ -7,14 +7,13 @@ <id column="id" property="id" /> <result column="title" property="title" /> <result column="sort" property="sort" /> - <result column="isDelete" property="isDelete" /> <result column="answer" property="answer" /> <result column="insertTime" property="insertTime" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, title, sort, isDelete, answer, insertTime + id, title, sort, isDelete, answer </sql> </mapper> diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java index 23e4d89..14f16cb 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java @@ -8,6 +8,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import java.util.Date; + /** * @author xiaochen * @ClassName DataUpdateInterceptor @@ -34,7 +36,9 @@ public void insertFill(MetaObject metaObject) { // 获取登录信息 LoginUser loginUser = tokenService.getLoginUser(); - String userName = loginUser.getUsername(); + this.setFieldValByName("createTime", new Date(), metaObject); + this.setFieldValByName("updateTime", new Date(), metaObject); +// String userName = loginUser.getUsername(); // if (StringUtils.hasLength(userName)) { // this.setFieldValByName("createBy", userName, metaObject); // this.setFieldValByName("createTime", new Date(), metaObject); diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStoryController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStoryController.java index 907ff62..2ba4946 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStoryController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStoryController.java @@ -121,6 +121,9 @@ TStory byId = service.getById(id); byId.setState(state); service.updateById(byId); + if (state == 3){ + service.removeById(byId); + } return R.ok("成功"); } private R<Object> getObjectR(Integer id) { diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TSubjectController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TSubjectController.java index a5d637e..32a9e8a 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TSubjectController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TSubjectController.java @@ -199,6 +199,9 @@ TSubject byId = subjectService.getById(id); byId.setState(state); subjectService.updateById(byId); + if (state == 3){ + subjectService.removeById(byId); + } return R.ok("编辑成功"); } } diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java index cc0d7d8..8fd56b1 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java @@ -4,12 +4,19 @@ import com.alipay.api.AlipayApiException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.redis.service.RedisService; +import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.management.api.feignClient.ManagementClient; +import com.ruoyi.management.api.model.TFeedback; import com.ruoyi.management.api.model.TPage; +import com.ruoyi.management.api.model.TUseGuide; import com.ruoyi.management.api.model.TVipSet; +import com.ruoyi.management.api.query.UseGuideQuery; import com.ruoyi.study.domain.TUser; import com.ruoyi.study.domain.TVipOrder; import com.ruoyi.study.dto.AppUserQuery; @@ -19,10 +26,17 @@ import com.ruoyi.study.utils.PayMoneyUtil; import com.ruoyi.study.utils.UUIDUtil; import com.ruoyi.study.vo.*; +import com.ruoyi.system.api.domain.SysRole; +import com.ruoyi.system.api.domain.SysUser; +import com.ruoyi.system.api.model.LoginUser; +import com.ruoyi.system.api.model.LoginUserParent; +import io.jsonwebtoken.Claims; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; @@ -50,16 +64,34 @@ private IVipOrderService vipOrderService; @Autowired private ManagementClient managementClient; + @Autowired + private TokenService tokenService; + @PostMapping("/vipInfo") @ApiOperation(value = "会员中心-获取会员说明、当前登录用户是否为会员、会员购买规格", tags = {"家长端-个人中心"}) public AjaxResult<List<VipInfoVO>> vipInfo() { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效",new Object()); + } List<VipInfoVO> vipInfoVOS = new ArrayList<>(); List<TVipSet> data = managementClient.getVipSet1().getData(); for (TVipSet datum : data) { VipInfoVO vipInfoVO = new VipInfoVO(); vipInfoVO.setInfo(datum.getInfo()); vipInfoVO.setId(datum.getId()); -// vipInfoVO.setIsVip(); + Integer userid = tokenService.getLoginUser1().getUserid(); + TUser byId = userService.getById(userid); + // 先判断vipEndTime + if (byId.getVipEndTime() == null){ + vipInfoVO.setIsVip(0); + }else{ + // 判断会员到期时间是否大于当前时间 + if (byId.getVipEndTime().getTime() > new Date().getTime()){ + vipInfoVO.setIsVip(1); + }else{ + vipInfoVO.setIsVip(0); + } + } vipInfoVO.setTime(datum.getTime()); vipInfoVO.setAmount(datum.getAmount()); } @@ -76,6 +108,10 @@ @ApiImplicitParam(name = "id", value = "会员规格id", required = true), }) public AjaxResult order(Integer payType,Integer id) throws Exception { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效",new Object()); + } + Integer userid = tokenService.getLoginUser1().getUserid(); TVipOrder tVipOrder = new TVipOrder(); List<TVipSet> data = managementClient.getVipSet1().getData(); Integer time = 0; @@ -86,10 +122,7 @@ } } tVipOrder.setPayState(1); -// tVipOrder.setUserId(); -// tVipOrder.setPayTime(); -// tVipOrder.setBackTime(); -// tVipOrder.setTime(); + tVipOrder.setUserId(userid); tVipOrder.setPayType(payType); tVipOrder.setCount(time); switch (payType){ @@ -137,19 +170,40 @@ byId.setTransactionId(trade_no); byId.setOutTradeNo(out_trade_no); byId.setPayTime(new Date()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - calendar.add(Calendar.MONTH, time); - Date dateAfterOneMonth = calendar.getTime(); - byId.setTime(dateAfterOneMonth); - // 修改订单状态 - vipOrderService.updateById(byId); + + TUser byId1 = userService.getById(byId.getUserId()); if (byId1.getVipPayTime() == null){ // 是否是首次充值会员 byId1.setVipPayTime(new Date()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + }else{ + // 不是首次 判断vipEndTime 是否到期 如果没有 加指定月份时间 如果到期了 将会员到期时间从当前增加指定月份 + if (byId1.getVipEndTime().getTime() < new Date().getTime()){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + }else{ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(byId1.getVipEndTime()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + } } - byId1.setVipEndTime(dateAfterOneMonth); + + // 修改订单状态 + vipOrderService.updateById(byId); + // 修改用户会员续期信息 userService.updateById(byId1); PrintWriter out = response.getWriter(); @@ -189,19 +243,38 @@ byId.setTransactionId(transaction_id); byId.setOutTradeNo(out_trade_no); byId.setPayTime(new Date()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - calendar.add(Calendar.MONTH, time); - Date dateAfterOneMonth = calendar.getTime(); - byId.setTime(dateAfterOneMonth); - // 修改订单状态 - vipOrderService.updateById(byId); + + TUser byId1 = userService.getById(byId.getUserId()); if (byId1.getVipPayTime() == null){ // 是否是首次充值会员 byId1.setVipPayTime(new Date()); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + }else{ + // 不是首次 判断vipEndTime 是否到期 如果没有 加指定月份时间 如果到期了 将会员到期时间从当前增加指定月份 + if (byId1.getVipEndTime().getTime() < new Date().getTime()){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(new Date()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + }else{ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(byId1.getVipEndTime()); + calendar.add(Calendar.MONTH, time); + Date dateAfterOneMonth = calendar.getTime(); + byId.setTime(dateAfterOneMonth); + byId1.setVipEndTime(dateAfterOneMonth); + } } - byId1.setVipEndTime(dateAfterOneMonth); + // 修改订单状态 + vipOrderService.updateById(byId); // 修改用户会员续期信息 userService.updateById(byId1); PrintWriter out = response.getWriter(); @@ -215,66 +288,107 @@ } @PostMapping("/getPage") @ApiOperation(value = "获取注意事项", tags = {"家长端-注意事项"}) - public AjaxResult<TPage> getPage() { + public AjaxResult<String> getPage() { List<TPage> data = managementClient.getPage1().getData(); for (TPage datum : data) { if (datum.getType() == 4){ - return AjaxResult.success(datum); + return AjaxResult.success(datum.getImg()); } } return AjaxResult.success(); } - @Autowired - private TokenService tokenService; -// @Autowired -// private HWSendSms hwSendSms; -// @ResponseBody -// @PostMapping("/getSMSCode") -// @ApiOperation(value = "获取短信验证码", tags = {"家长端-登录注册"}) -// @ApiImplicitParams({ -// @ApiImplicitParam(value = "类型(1:登录,2:注册,3:修改密码,4:忘记密码,5:修改绑定手机号)", name = "type", dataType = "int", required = true), -// @ApiImplicitParam(value = "电话号码", name = "phone", dataType = "string", required = true) -// }) -// public AjaxResult getSMSCode(Integer type, String phone) { -// if (ToolUtil.isEmpty(phone)) { -// return AjaxResult.paranErr("phone"); -// } -// if (ToolUtil.isEmpty(type)) { -// return AjaxResult.paranErr("type"); -// } -// try { -// if (type == 2) { -// AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() -// .eq("phone", phone).ne("state", 3)); -// if (null != tAppUser) { -// return AjaxResult.error("账号已存在"); -// } -// } -// if (type == 5) { -// AppUser tAppUser = appUserService.selectOne(new EntityWrapper<AppUser>() -// .eq("phone", phone).ne("state", 3)); -// if (null != tAppUser) { -// return AjaxResult.error("账号已存在"); -// } -// } -// String numberRandom = UUIDUtil.getNumberRandom(6); -// String templateCode = ""; -// if (type == 1 || type == 2) { -// templateCode = "SMS_161275250"; -// } -// if (type == 3 || type == 4) { -// templateCode = "SMS_160960014"; -// } -//// aLiSendSms.sendSms(phone, templateCode, "{\"code\":\"" + numberRandom + "\"}"); -// hwSendSms.sendSms(numberRandom,phone); -// redisUtil.setStrValue(phone, numberRandom, 300); -// return AjaxResult.success(); -// } catch (Exception e) { -// e.printStackTrace(); -// return ResultUtil.runErr(); -// } -// } + @PostMapping("/useGuide") + @ApiOperation(value = "使用指南", tags = {"家长端-使用指南"}) + public AjaxResult<PageInfo<TUseGuide>> useGuide(@RequestBody UseGuideQuery query) { + PageInfo<TUseGuide> data = managementClient.useGuide1(query).getData(); + return AjaxResult.success(data); + } + @PostMapping("/feedBack") + @ApiOperation(value = "反馈", tags = {"家长端-意见反馈"}) + public AjaxResult feedBack(@RequestBody TFeedback dto) { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效",new Object()); + } + LoginUserParent loginUser1 = tokenService.getLoginUser1(); + dto.setUserId(loginUser1.getUserid()); + managementClient.addFeedBack(dto); + return AjaxResult.success("反馈成功"); + } + @PostMapping("/parentLogin") + @ApiOperation(value = "登录", tags = {"家长端-登录"}) + @ApiImplicitParams({ + @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true), + @ApiImplicitParam(value = "验证码", name = "phoneCode", dataType = "string", required = true) + }) + public AjaxResult login(String phone, String phoneCode) + { + TUser tUser1 = userService.getOne(new QueryWrapper<TUser>() + .ne("state", 3) + .eq("phone",phone)); + if (tUser1 != null){ + if (tUser1.getState() == 2){ + return AjaxResult.error("登录失败,您的账号已被冻结!"); + } + }else{ + // todo 验证码校验 + tUser1 = new TUser(); + // 注册 + tUser1.setName(phone); + tUser1.setAccount(phone); + tUser1.setState(1); + tUser1.setInsertTime(new Date()); + tUser1.setCreateTime(new Date()); + tUser1.setPhone(phone); + userService.save(tUser1); + } + LoginUserParent loginUserParent = new LoginUserParent(); + loginUserParent.setName(tUser1.getName()); + loginUserParent.setUserid(tUser1.getId()); + loginUserParent.setPhone(tUser1.getPhone()); + loginUserParent.setLoginTime(new Date().getTime()); + HashMap<String, Object> map = new HashMap<>(); + map.put("token",tokenService.createToken1(loginUserParent)); + // 获取登录token + return AjaxResult.success(map); + } + + @PostMapping("/deleteUser") + @ApiOperation(value = "注销当前帐号", tags = {"家长端-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), + }) + public AjaxResult deleteUser() { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效"); + } + Integer userid = tokenService.getLoginUser1().getUserid(); + TUser tUser = userService.getById(userid); + + tUser.setState(3); + userService.updateById(tUser); + + userService.removeById(tUser); + return AjaxResult.success("注销成功"); + } + @PostMapping("/logout") + @ApiOperation(value = "退出登录", tags = {"家长端-个人中心"}) + @ApiImplicitParams({ + @ApiImplicitParam(name = "Authorization", value = "Bearer eyJhbGciOiJIUzUxMiJ....", required = true, paramType = "header"), + }) + public AjaxResult logout(HttpServletRequest request) { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效"); + } + String token = SecurityUtils.getToken(request); + if (com.ruoyi.common.core.utils.StringUtils.isNotEmpty(token)) + { + // 删除用户缓存记录 + AuthUtil.logoutByToken1(token); + } + // todo 清除token + return AjaxResult.success("退出登录成功"); + } @PostMapping("/updateUserInfo") @ApiOperation(value = "修改个人资料", tags = {"家长端-个人中心"}) @ApiImplicitParams({ @@ -284,9 +398,13 @@ @ApiImplicitParam(name = "headImg", value = "头像 改什么就只传什么"), }) public AjaxResult updateUserInfo(String name, String phone,String headImg) { + if (tokenService.getLoginUser1() == null){ + return AjaxResult.tokenError("登录失效",new Object()); + } // todo 获取用户id - Long userid = tokenService.getLoginUser().getUserid(); + Integer userid = tokenService.getLoginUser1().getUserid(); TUser byId = userService.getById(userid); + if (StringUtils.hasLength(name)){ byId.setName(name); } @@ -295,9 +413,16 @@ // if (byId == null){ // return AjaxResult.tokenError("登录失效"); // } + if (phone.equals(byId.getPhone())){ return AjaxResult.error("更换的手机号不能和原手机号相同"); } + List<TUser> list = userService.list(new QueryWrapper<TUser>() + .eq("phone", phone) + .ne("state", 3)); + if (list.size() > 0){ + return AjaxResult.error("更换的手机号已被使用",new Object()); + } byId.setPhone(phone); } if (StringUtils.hasLength(headImg)){ diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStory.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStory.java index bd166e2..b4a947c 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStory.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStory.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.ruoyi.common.core.web.domain.BaseModel; +import lombok.Data; /** * <p> @@ -13,6 +14,7 @@ * @author 无关风月 * @since 2024-04-26 */ +@Data @TableName("t_story") public class TStory extends BaseModel { @@ -46,7 +48,7 @@ /** * 正确语音 */ - private String right; + private String correct; /** * 错误语音 要么没有 要么两个逗号隔开 */ @@ -101,13 +103,6 @@ this.img = img; } - public String getRight() { - return right; - } - - public void setRight(String right) { - this.right = right; - } public String getError() { return error; @@ -126,7 +121,7 @@ ", type=" + type + ", state=" + state + ", img=" + img + - ", right=" + right + + ", correct=" + correct + ", error=" + error + "}"; } diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserShare.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserShare.java new file mode 100644 index 0000000..eef075e --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserShare.java @@ -0,0 +1,34 @@ +package com.ruoyi.study.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.core.web.domain.BaseModel; +import lombok.Data; + +/** + * <p> + * 用户表 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +@Data +@TableName("t_user_share") +public class TUserShare extends BaseModel { + private static final long serialVersionUID = 1L; + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + /** + * 用户id + */ + private Integer userId; + /** + * 分享时 获得积分 + */ + private Integer integral; + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/StoryDTO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/StoryDTO.java index d3966fe..ad7f414 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/StoryDTO.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/StoryDTO.java @@ -19,7 +19,7 @@ @ApiModelProperty(value = "图片",required = true) private String img; @ApiModelProperty(value = "正确语音",required = true) - private String right; + private String correct; @ApiModelProperty(value = "错误语音 多个逗号拼接") private String error; diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/SubjectDTO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/SubjectDTO.java index 9621251..83a1c93 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/SubjectDTO.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/SubjectDTO.java @@ -19,7 +19,7 @@ @ApiModelProperty(value = "图片",required = true) private String img; @ApiModelProperty(value = "正确语音",required = true) - private String right; + private String correct; @ApiModelProperty(value = "错误语音 多个逗号拼接") private String error; diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserShareMapper.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserShareMapper.java new file mode 100644 index 0000000..cdd15c5 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserShareMapper.java @@ -0,0 +1,17 @@ +package com.ruoyi.study.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.study.domain.TGame; +import com.ruoyi.study.domain.TUserShare; + +/** + * <p> + * 自主游戏 Mapper 接口 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +public interface TUserShareMapper extends BaseMapper<TUserShare> { + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserShareService.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserShareService.java new file mode 100644 index 0000000..7aad242 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserShareService.java @@ -0,0 +1,17 @@ +package com.ruoyi.study.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.study.domain.TGame; +import com.ruoyi.study.domain.TUserShare; + +/** + * <p> + * 自主游戏 服务类 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +public interface ITUserShareService extends IService<TUserShare> { + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserShareServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserShareServiceImpl.java new file mode 100644 index 0000000..2fc4eee --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserShareServiceImpl.java @@ -0,0 +1,23 @@ +package com.ruoyi.study.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.study.domain.TGame; +import com.ruoyi.study.domain.TUserShare; +import com.ruoyi.study.mapper.TGameMapper; +import com.ruoyi.study.mapper.TUserShareMapper; +import com.ruoyi.study.service.ITGameService; +import com.ruoyi.study.service.ITUserShareService; +import org.springframework.stereotype.Service; + +/** + * <p> + * 自主游戏 服务实现类 + * </p> + * + * @author 无关风月 + * @since 2024-04-26 + */ +@Service +public class TUserShareServiceImpl extends ServiceImpl<TUserShareMapper, TUserShare> implements ITUserShareService { + +} diff --git a/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TStoryMapper.xml b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TStoryMapper.xml index 76b4f4b..db3388e 100644 --- a/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TStoryMapper.xml +++ b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TStoryMapper.xml @@ -23,7 +23,7 @@ from t_story where 1=1 and `state`!=3 <if test="req.name != null and req.name != ''"> - and name like concat('%',#{req.name},'%') + and `name` like concat('%',#{req.name},'%') </if> <if test="req.english != null and req.english != ''"> and english like concat('%',#{req.english},'%') diff --git a/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserShareMapper.xml b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserShareMapper.xml new file mode 100644 index 0000000..41f5319 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserShareMapper.xml @@ -0,0 +1,7 @@ +<?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.study.mapper.TUserShareMapper"> + + + +</mapper> -- Gitblit v1.7.1