ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/StudyListVO.java
@@ -12,12 +12,7 @@ private Integer weeks; @ApiModelProperty(value = "已开始人数 第一条数据对应听 第二条数据对应说以此类推") private Integer count; @ApiModelProperty(value = "学习类型名称") private String name; public StudyListVO() { } public StudyListVO(Integer weeks, Integer count) { this.weeks = weeks; this.count = count; } } ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java
@@ -3,6 +3,8 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; import com.ruoyi.system.api.model.LoginUserParent; import org.springframework.util.PatternMatchUtils; import com.ruoyi.common.core.context.SecurityContextHolder; import com.ruoyi.common.core.exception.auth.NotLoginException; @@ -99,6 +101,16 @@ { return tokenService.getLoginUser(token); } /** * 获取当前用户缓存信息, 如果未登录,则抛出异常 * * @param token 前端传递的认证信息 * @return 用户缓存信息 */ public LoginUserParent getLoginUser1(String token) { return tokenService.getLoginUser1(token); } /** * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 @@ -109,6 +121,15 @@ { tokenService.verifyToken(loginUser); } /** * 验证当前用户有效期, 如果相差不足120分钟,自动刷新缓存 * * @param loginUser 当前用户信息 */ public void verifyLoginUserExpire1(LoginUserParent loginUser) { tokenService.verifyToken1(loginUser); } /** * 验证用户是否具备某权限 ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java
@@ -3,6 +3,7 @@ import com.ruoyi.common.security.annotation.RequiresPermissions; import com.ruoyi.common.security.annotation.RequiresRoles; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserParent; /** * Token 权限验证工具类 @@ -61,6 +62,16 @@ { return authLogic.getLoginUser(token); } /** * 获取当前登录用户信息 * * @param token 指定token * @return 用户信息 */ public static LoginUserParent getLoginUser1(String token) { return authLogic.getLoginUser1(token); } /** * 验证当前用户有效期 @@ -71,6 +82,15 @@ { authLogic.verifyLoginUserExpire(loginUser); } /** * 验证当前用户有效期 * * @param loginUser 用户信息 */ public static void verifyLoginUserExpire1(LoginUserParent loginUser) { authLogic.verifyLoginUserExpire1(loginUser); } /** * 当前账号是否含有指定角色标识, 返回true或false ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java
@@ -2,6 +2,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ruoyi.system.api.model.LoginUserParent; import org.springframework.web.method.HandlerMethod; import org.springframework.web.servlet.AsyncHandlerInterceptor; import com.ruoyi.common.core.constant.SecurityConstants; @@ -41,6 +43,12 @@ AuthUtil.verifyLoginUserExpire(loginUser); SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); } LoginUserParent loginUser1 = AuthUtil.getLoginUser1(token); if (StringUtils.isNotNull(loginUser1)) { AuthUtil.verifyLoginUserExpire1(loginUser1); SecurityContextHolder.set(SecurityConstants.LOGIN_USER, loginUser); } } return true; } ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -222,6 +222,20 @@ refreshToken(loginUser); } } /** * 验证令牌有效期,相差不足120分钟,自动刷新缓存 * * @param loginUser */ public void verifyToken1(LoginUserParent loginUser) { long expireTime = loginUser.getExpireTime(); long currentTime = System.currentTimeMillis(); if (expireTime - currentTime <= MILLIS_MINUTE_TEN) { refreshToken1(loginUser); } } /** * 刷新令牌有效期 ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java
@@ -132,7 +132,8 @@ @PostMapping("/getVipSet1") @ApiOperation(value = "获取会员设置", tags = {"家长端"}) public R<List<TVipSet>> getVipSet1() { List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>().orderByAsc("amount")); List<TVipSet> list = vipSetService.list(new QueryWrapper<TVipSet>() .orderByAsc("time")); return R.ok(list); } @PostMapping("/setVipSet") ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java
@@ -3,10 +3,12 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserParent; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.reflection.MetaObject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; import java.util.Date; @@ -61,17 +63,20 @@ public void updateFill(MetaObject metaObject) { // 获取登录信息 LoginUser loginUser = tokenService.getLoginUser(); String userName = loginUser.getUsername(); // if (StringUtils.hasLength(userName)) { // this.setFieldValByName("createBy", userName, metaObject); // this.setFieldValByName("createTime", new Date(), metaObject); // this.setFieldValByName("updateBy", userName, metaObject); // this.setFieldValByName("updateTime", new Date(), metaObject); // } else { // this.setFieldValByName("createBy", "", metaObject); // this.setFieldValByName("updateBy", "", metaObject); // this.setFieldValByName("createTime", "", metaObject); // this.setFieldValByName("updateTime", "", metaObject); // } if (loginUser !=null){ String userName = loginUser.getUsername(); if (StringUtils.hasLength(userName)) { this.setFieldValByName("createBy", userName, metaObject); this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateBy", userName, metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); } else { this.setFieldValByName("createBy", "", metaObject); this.setFieldValByName("updateBy", "", metaObject); this.setFieldValByName("createTime", "", metaObject); this.setFieldValByName("updateTime", "", metaObject); } } } } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TParentLoginController.java
File was deleted ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -87,7 +87,6 @@ public R<PageInfo<TSubject>> subjectList(@RequestBody ChoiceSubject query) { PageInfo<TSubject> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); QueryWrapper<TSubject> wrapper = new QueryWrapper<>(); if (StringUtils.hasLength(query.getName())){ wrapper.like("name",query.getName()); } @@ -320,14 +319,43 @@ List<TStudy> count = studyService.list(new QueryWrapper<TStudy>() .eq("type", 1)); studyListVO.setWeeks(count.size()); // todo 补充开始学习人数 studyListVO.setCount(0); studyListVO.setName("听"); // 查询听类型有多少周目 res.add(studyListVO); // 后续类型 不在1.0功能中 for (int i = 1; i <= 6; i++) { res.add(new StudyListVO(0,0)); } StudyListVO studyListVO1 = new StudyListVO(); studyListVO1.setWeeks(0); studyListVO1.setCount(0); studyListVO1.setName("说"); res.add(studyListVO1); StudyListVO studyListVO2 = new StudyListVO(); studyListVO2.setWeeks(0); studyListVO2.setCount(0); studyListVO2.setName("认读"); res.add(studyListVO2); StudyListVO studyListVO3 = new StudyListVO(); studyListVO3.setWeeks(0); studyListVO3.setCount(0); studyListVO3.setName("阅读"); res.add(studyListVO3); StudyListVO studyListVO4 = new StudyListVO(); studyListVO4.setWeeks(0); studyListVO4.setCount(0); studyListVO4.setName("练习"); res.add(studyListVO4); StudyListVO studyListVO5 = new StudyListVO(); studyListVO5.setWeeks(0); studyListVO5.setCount(0); studyListVO5.setName("智能互动问答"); res.add(studyListVO5); StudyListVO studyListVO6 = new StudyListVO(); studyListVO6.setWeeks(0); studyListVO6.setCount(0); studyListVO6.setName("智能识别"); res.add(studyListVO6); return R.ok(res); } /** ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -94,6 +94,7 @@ } vipInfoVO.setTime(datum.getTime()); vipInfoVO.setAmount(datum.getAmount()); vipInfoVOS.add(vipInfoVO); } return AjaxResult.ok(vipInfoVOS); } @@ -428,31 +429,24 @@ if (StringUtils.hasLength(headImg)){ byId.setHeadImg(headImg); } userService.updateById(byId); userService.saveOrUpdate(byId); return AjaxResult.success("修改成功"); } @PostMapping("/vipBack/{id}") @ApiOperation(value = "会员退款", tags = {"管理后台-会员退款"}) public R vipBack(@PathVariable("id") Integer id) throws AlipayApiException { TVipOrder byId = vipOrderService.getById(id); // 外部订单号 String transactionId = byId.getTransactionId(); // 内部订单号 String outTradeNo = byId.getOutTradeNo(); switch (byId.getPayType()){ case 1: // 微信退款 Map<String, String> stringStringMap = payMoneyUtil.wxRefund(transactionId, outTradeNo, byId.getMoney().toString(), byId.getMoney().toString(), "/base/wxRefund"); if (stringStringMap.get("code").equals("SUCCESS")){ byId.setPayState(3); byId.setBackTime(new Date()); vipOrderService.updateById(byId); // 用户的vip剩余时间减少 Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); calendar.add(Calendar.MONTH, -byId.getCount()); Date dateAfterOneMonth = calendar.getTime(); Integer userId = byId.getUserId(); @ResponseBody @PostMapping("/base/wxRefund") public void cancelMySiteCallback(HttpServletRequest request, HttpServletResponse response) { try { Map<String, String> map = payMoneyUtil.wxRefundCallback(request); if (null != map) { String code = map.get("out_refund_no"); String refund_id = map.get("refund_id"); String result = map.get("result"); TVipOrder one = vipOrderService.getOne(new QueryWrapper<TVipOrder>() .eq("outTradeNo", code) .eq("payState", 3)); one.setBackTime(new Date()); vipOrderService.updateById(one); Integer userId = one.getUserId(); TUser byId1 = userService.getById(userId); // 判断用户是不是第一次充值 List<TVipOrder> list = vipOrderService.list(new QueryWrapper<TVipOrder>() @@ -473,14 +467,46 @@ userService.updateById(byId1); } return R.ok(); }else{ return R.fail(stringStringMap.get("msg")); PrintWriter out = response.getWriter(); out.write(result); out.flush(); out.close(); } } catch (Exception e) { e.printStackTrace(); } } @PostMapping("/vipBack/{id}") @ApiOperation(value = "会员退款", tags = {"管理后台-会员退款"}) public R vipBack(@PathVariable("id") Integer id) throws AlipayApiException { TVipOrder byId = vipOrderService.getById(id); // 外部订单号 String transactionId = byId.getTransactionId(); // 内部订单号 String outTradeNo = byId.getOutTradeNo(); switch (byId.getPayType()){ case 1: // 微信退款 Map<String, String> stringStringMap = payMoneyUtil.wxRefund(transactionId, outTradeNo, byId.getMoney().toString(), byId.getMoney().toString(), "/base/wxRefund"); if (null == stringStringMap) { return R.fail("取消退款异常"); } String result_code = stringStringMap.get("result_code"); if (!"SUCCESS".equals(result_code)) { return R.fail(stringStringMap.get("return_msg")); } byId.setPayState(3); vipOrderService.updateById(byId); case 2: // 支付宝退款 Map<String, String> stringStringMap1 = payMoneyUtil.aliRefund(transactionId,byId.getMoney().toString()); if (stringStringMap1.get("code").equals("10000")){ if (null == stringStringMap1) { return R.fail("取消退款异常"); } String code = stringStringMap1.get("code"); if (!"10000".equals(code)) { return R.fail(stringStringMap1.get("return_msg")); } byId.setPayState(3); byId.setBackTime(new Date()); vipOrderService.updateById(byId); @@ -510,9 +536,6 @@ userService.updateById(byId1); } return R.ok(); }else{ return R.fail(stringStringMap1.get("msg")); } } return R.ok(); } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUser.java
@@ -20,7 +20,6 @@ @Data @TableName("t_user") public class TUser extends BaseModel { private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; @@ -77,132 +76,4 @@ */ private Date vipPayTime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAccount() { return account; } public void setAccount(String account) { this.account = account; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getOpenId() { return openId; } public void setOpenId(String openId) { this.openId = openId; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public String getHeadImg() { return headImg; } public void setHeadImg(String headImg) { this.headImg = headImg; } 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; } public Date getVipEndTime() { return vipEndTime; } public void setVipEndTime(Date vipEndTime) { this.vipEndTime = vipEndTime; } public Date getVipPayTime() { return vipPayTime; } public void setVipPayTime(Date vipPayTime) { this.vipPayTime = vipPayTime; } @Override public String toString() { return "TUser{" + ", id=" + id + ", name=" + name + ", account=" + account + ", phone=" + phone + ", password=" + password + ", openId=" + openId + ", birthday=" + birthday + ", gender=" + gender + ", headImg=" + headImg + ", integral=" + integral + ", state=" + state + ", insertTime=" + insertTime + ", vipEndTime=" + vipEndTime + ", vipPayTime=" + vipPayTime + "}"; } } ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/ChoiceSubject.java
@@ -8,14 +8,17 @@ @ApiModel @Data public class ChoiceSubject { @ApiModelProperty(value = "题目名称") private String name; @ApiModelProperty(value = "英文释义") private String english; @ApiModelProperty(value = "预期题目类型 传中文") private String type; @ApiModelProperty(value = "选择题目类型 1= 听音选图 2=看图选音 3=归纳排除 4=有问有答 5= 音图相配") private Integer studyType; @ApiModelProperty(value = "页码,首页1", required = true) private Integer pageNumber; @ApiModelProperty(value = "页条数", required = true) ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListVO.java
@@ -12,12 +12,6 @@ private Integer weeks; @ApiModelProperty(value = "已开始人数 第一条数据对应听 第二条数据对应说以此类推") private Integer count; public StudyListVO() { } public StudyListVO(Integer weeks, Integer count) { this.weeks = weeks; this.count = count; } @ApiModelProperty(value = "学习类型名称") private String name; } ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserMapper.xml
@@ -18,7 +18,6 @@ <result column="insertTime" property="insertTime" /> <result column="vipEndTime" property="vipEndTime" /> <result column="vipPayTime" property="vipPayTime" /> </resultMap> <!-- 通用查询结果列 -->