44323
2024-05-21 b2c5b8c958ba187246302f835811b3739a50f212
代码提交
13个文件已修改
1个文件已删除
424 ■■■■■ 已修改文件
ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/vo/StudyListVO.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthLogic.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/auth/AuthUtil.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/interceptor/HeaderInterceptor.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-management/src/main/java/com/ruoyi/management/controller/TUserController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/config/DataUpdateHandlerConfig.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TParentLoginController.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUser.java 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/dto/ChoiceSubject.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListVO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
    <!-- 通用查询结果列 -->