zqy
2025-11-11 3e02abec44a648f01174a4c3494a96ccb46a3b1a
会员&充值相关模块
4个文件已修改
5个文件已添加
414 ■■■■■ 已修改文件
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
@@ -102,7 +102,7 @@
            LocalDateTime startDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
            long daysPassed = ChronoUnit.DAYS.between(startDateTime, LocalDateTime.now());
            return AjaxResult.success(daysPassed > 7 ? "您的试用期已经结束,请付费继续使用":"您还有 " + (7L - daysPassed) + " 天的试用天数");
            return AjaxResult.success(daysPassed > sysUser.getRemainTime() ? "您的试用期已经结束,请付费继续使用":"您还有 " + (sysUser.getRemainTime() - daysPassed) + " 天的试用天数");
        }else return AjaxResult.success("尊敬的会员用户,您好!");
    }
ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java
New file
@@ -0,0 +1,116 @@
package com.ruoyi.web.controller.zhang;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.domain.ZfApplication;
import com.ruoyi.service.ZfApplicationService;
import com.ruoyi.system.domain.SysUserRole;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import static com.ruoyi.common.core.page.TableSupport.PAGE_NUM;
import static com.ruoyi.common.core.page.TableSupport.PAGE_SIZE;
@RestController
@RequestMapping("/application")
public class ZfApplicationController extends BaseController {
    @Resource
    private ZfApplicationService zfApplicationService;
    @Autowired
    private ISysUserService userService;
    @Autowired
    private SysUserRoleMapper sysUserRoleMapper;
    @GetMapping("/all")
    public AjaxResult listAll(ZfApplication zfApplication){
        Long userId = SecurityUtils.getUserId();
        SysUserRole role = sysUserRoleMapper.selectUserById(userId);
        Integer roleId = 0;
        if (role != null) roleId=role.getRoleId().intValue();
        Integer pageNum = Convert.toInt(ServletUtils.getParameter(PAGE_NUM), 1);
        Integer pageSize = Convert.toInt(ServletUtils.getParameter(PAGE_SIZE), 10);
        return zfApplicationService.selectDoctorList(zfApplication, pageNum, pageSize,roleId);
    }
    /**
     * 获取 详细信息
     */
//    @PreAuthorize("@ss.hasPermi('system:property:query')")
    @GetMapping(value = "/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id)
    {
        return success(zfApplicationService.getById(id));
    }
//
    /**
     * 新增
     */
//    @PreAuthorize("@ss.hasPermi('system:property:add')")
    @Log(title = " ", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody ZfApplication zfApplication)
    {
        return zfApplicationService.addData(zfApplication);
    }
    /**
     * 审核
     */
//    @PreAuthorize("@ss.hasPermi('system:property:add')")
    @Log(title = " ", businessType = BusinessType.INSERT)
    @PostMapping("/status")
    public AjaxResult setStatus(@RequestBody ZfApplication zfApplication)
    {
        if(zfApplication.getStatus().equals("1")) {
             ZfApplication byId = zfApplicationService.getById(zfApplication.getId());
            SysUser sysUser = userService.selectUserById(byId.getApplicant().longValue());
            sysUser.setStatus("0");
            Integer integer = zfApplication.getApplyDay() == null ? byId.getApplyDay() : zfApplication.getApplyDay();
            sysUser.setRemainTime(sysUser.getRemainTime() + integer);
            userService.updateUser(sysUser);
        }
        System.out.println("[[[[["+zfApplication);
        return zfApplicationService.setStatus(zfApplication);
    }
    /**
     * 批量删除
     */
//    @PreAuthorize("@ss.hasPermi('system:property:remove')")
    @Log(title = " ", businessType = BusinessType.DELETE)
    @DeleteMapping("/{ids}")
    public AjaxResult remove(@PathVariable Long[] ids)
    {
        return zfApplicationService.deleteData(ids);
    }
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
@@ -94,6 +94,17 @@
    /**是否会员 0否 1是*/
    private Integer paid;
    /**试用期时间 默认7天**/
    private Integer remainTime;
    public Integer getRemainTime() {
        return remainTime;
    }
    public void setRemainTime(Integer remainTime) {
        this.remainTime = remainTime;
    }
    public Integer getPaid() {
        return paid;
    }
@@ -349,6 +360,7 @@
            .append("remark", getRemark())
            .append("dept", getDept())
            .append("paid",getPaid())
            .append("remainTime",getRemainTime())
            .toString();
    }
}
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
@@ -119,6 +119,7 @@
    public boolean endOfLife(String username) {
        SysUser sysUser = userService.selectUserByNickName(username);
        System.out.println(sysUser);
        if (sysUser.getPaid() != null && sysUser.getPaid().equals(0) && !"4".equals(sysUser.getStatus())) {
            Date startTime = sysUser.getCreateTime();
@@ -127,7 +128,7 @@
            LocalDateTime startDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
            long daysPassed = ChronoUnit.DAYS.between(startDateTime, LocalDateTime.now());
            if (daysPassed > 7) {
            if (daysPassed > sysUser.getRemainTime()) {
                sysUser.setStatus("4");
                userService.updateUserStatus(sysUser);
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
@@ -25,6 +25,7 @@
        <result property="clanId"   column="clan_id"  />
        <result property="remark"       column="remark"       />
        <result property="paid"       column="paid"       />
        <result property="remainTime"       column="remain_time"       />
        <association property="dept"    column="dept_id" javaType="SysDept" resultMap="deptResult" />
        <collection  property="roles"   javaType="java.util.List"           resultMap="RoleResult" />
    </resultMap>
@@ -49,7 +50,7 @@
    </resultMap>
    <sql id="selectUserVo">
        select u.clan_id,u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.clan_id,u.paid,
        select u.clan_id,u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.clan_id,u.paid,u.remain_time,
        d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
        r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
        from sys_user u
@@ -256,6 +257,7 @@
             <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
             <if test="remark != null">remark = #{remark},</if>
            <if test="paid != null and paid != ''">paid = #{paid},</if>
            <if test="remainTime != null and remainTime != ''">remain_time = #{remainTime},</if>
            update_time = sysdate()
         </set>
         where user_id = #{userId}
zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java
New file
@@ -0,0 +1,50 @@
package com.ruoyi.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.util.Date;
@Data
@TableName("zf_application")
public class ZfApplication {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     *申请人
     */
    private Integer applicant;
    /**
     * 申请原因
     */
    private String applyReason;
    /**
     * 状态
     */
    private String status;
    /**
     * 时间
     */
    private Date createTime;
    /**
     * 申请时间
     */
    private Integer applyDay;
    /**
     * 申请人的家族
     */
    private Integer clanId;
}
zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java
New file
@@ -0,0 +1,10 @@
package com.ruoyi.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.ZExperience;
import com.ruoyi.domain.ZfApplication;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ZfApplicationMapper extends BaseMapper<ZfApplication> {
}
zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java
New file
@@ -0,0 +1,27 @@
package com.ruoyi.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.domain.ZfApplication;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
public interface ZfApplicationService extends IService<ZfApplication> {
    AjaxResult selectDoctorList(ZfApplication zfApplication, Integer pageNum, Integer pageSize,Integer roleId);
    List<ZfApplication> selectByCondition(ZfApplication zfApplication);
    List<ZfApplication> selectByIds(Long[] ids);
    AjaxResult addData(ZfApplication ZfApplication);
    AjaxResult deleteData(Long[] ids);
    AjaxResult setStatus(ZfApplication zfApplication);
}
zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java
New file
@@ -0,0 +1,190 @@
package com.ruoyi.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.EsModel;
import com.ruoyi.common.utils.MapUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.domain.*;
import com.ruoyi.mapper.ZfApplicationMapper;
import com.ruoyi.service.*;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.*;
@Service
public class ZfApplicationServiceImpl extends ServiceImpl<ZfApplicationMapper, ZfApplication> implements ZfApplicationService {
    @Resource
    ZInfoUserService zInfoUserService;
    @Resource
    EsService esService;
    @Resource
    private RestHighLevelClient restHighLevelClient;
    @Override
    public AjaxResult selectDoctorList(ZfApplication zfApplication, Integer pageNum, Integer pageSize,Integer roleId) {
        //要查自己家庭的
        ZInfoUser myself = zInfoUserService.getMyself();
        System.out.println("[[[[[[[[["+myself);
        if (myself !=null) {
            System.out.println("iiiiiii"+myself.getClanId());
            zfApplication.setClanId(myself.getClanId());
            if (roleId != 1) zfApplication.setApplicant(myself.getSysId().intValue());
        }
        LambdaQueryWrapper<ZfApplication> lqw = buildCondition(zfApplication);
        Page<ZfApplication> zfDoctorPage = new Page<>(pageNum, pageSize);
        Page<ZfApplication> pageResult = page(zfDoctorPage, lqw);
        List<ZfApplication> beanRecords = pageResult.getRecords();//得到查询出来的数据
        HashMap<String, Object> data = MapUtils.getResult(pageResult, beanRecords);
        return AjaxResult.success(data);
    }
    @Override
    public List<ZfApplication> selectByCondition(ZfApplication zfApplication) {
        LambdaQueryWrapper<ZfApplication> lambdaQueryWrapper = buildCondition(zfApplication);
        List<ZfApplication> beanRecords = list(lambdaQueryWrapper);
        return beanRecords;
    }
    @Override
    public List<ZfApplication> selectByIds(Long[] ids) {
        List<ZfApplication> list = new ArrayList<>();
        if (ids.length != 0)
            list = listByIds(Arrays.asList(ids));
        else
            list = list();
        return list;
    }
    @Override
    public AjaxResult addData(ZfApplication zfApplication) {
        ZInfoUser myself = zInfoUserService.getMyself();
        Long userId = SecurityUtils.getUserId();
        if (myself !=null) {
            zfApplication.setClanId(myself.getClanId());
        }
        Date currentDate = new Date();
        zfApplication.setApplicant(userId.intValue());
        zfApplication.setStatus("0");
        zfApplication.setCreateTime(currentDate);
        if (save(zfApplication)) {
            EsModel esModel = new EsModel();
            Integer inte = zfApplication.getId();
            String uuid = UUID.randomUUID().toString().replace("-", "");
            esModel.setId(uuid);
            esModel.setCtId(Long.valueOf(inte));
            esModel.setCtTableName("申请表");
            esModel.setBy2(zfApplication.getApplyReason());
            //这里存储查询详情的路径
            esService.insertTable(esModel);
            return AjaxResult.success();
        } else {
            return AjaxResult.error();
        }
    }
    @Override
    public AjaxResult deleteData(Long[] ids) {
        List<ZfApplication> zfDoctors = listByIds(Arrays.asList(ids));
        if (this.removeByIds(Arrays.asList(ids))) {
            //删除es中的数据
            zfDoctors.stream().forEach(zfDoctor -> {
                EsModel esModel = esService.findByCtId(zfDoctor.getId().intValue(), "申请表");
                if (esModel != null) {
                    DeleteRequest deleteRequest = new DeleteRequest("allsearchdata", esModel.getId());
                    try {
                        restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
                    } catch (IOException e) {
                        throw new RuntimeException(e);
                    }
                }
            });
            return AjaxResult.success();
        } else {
            return AjaxResult.error();
        }
    }
    @Override
    public AjaxResult setStatus(ZfApplication zfApplication)
    {
        Date currentDate = new Date();
        System.out.println("[[[[[[["+zfApplication);
        LambdaUpdateWrapper<ZfApplication> lqw = new LambdaUpdateWrapper();
        lqw
                .eq(ZfApplication::getId,zfApplication.getId())
                .set(ZfApplication::getStatus,zfApplication.getStatus())
                .set(ZfApplication::getCreateTime, currentDate);
        boolean isUpdated = this.update(lqw); // 使用Service执行更新
        if (isUpdated) {
            if (zfApplication.getStatus().equals("1"))
            return AjaxResult.success("已经给该用户延长试用时间");
            else return AjaxResult.success("已驳回该用户的申请");
        } else {
            return AjaxResult.error("更新失败,请检查数据");
        }
    }
    private LambdaQueryWrapper<ZfApplication> uniqueCondition(ZfApplication zfApplication) {
        LambdaQueryWrapper<ZfApplication> lqw = new LambdaQueryWrapper<>();
        lqw.eq(zfApplication.getApplicant() != null,ZfApplication::getApplicant, zfApplication.getApplicant())
                .eq(StringUtils.isNotEmpty(zfApplication.getApplyReason()), ZfApplication::getApplyReason, zfApplication.getApplyReason())
                .eq(zfApplication.getStatus() != null, ZfApplication::getStatus, zfApplication.getStatus())
                .eq(zfApplication.getClanId() != null, ZfApplication::getClanId, zfApplication.getClanId())
                .eq(zfApplication.getApplyDay() != null, ZfApplication::getApplyDay, zfApplication.getApplyDay());
        return lqw;
    }
    private LambdaQueryWrapper<ZfApplication> buildCondition(ZfApplication zfApplication) {
        LambdaQueryWrapper<ZfApplication> lqw = new LambdaQueryWrapper<>();
        lqw.orderByDesc(ZfApplication::getCreateTime);
        lqw.like(zfApplication.getApplicant() !=null,ZfApplication::getApplicant, zfApplication.getApplicant())
                .like(StringUtils.isNotEmpty(zfApplication.getApplyReason()), ZfApplication::getApplyReason, zfApplication.getApplyReason())
                .like(zfApplication.getStatus() != null, ZfApplication::getStatus, zfApplication.getStatus())
                .like(zfApplication.getClanId() != null, ZfApplication::getClanId, zfApplication.getClanId())
                .like(zfApplication.getApplyDay() != null, ZfApplication::getApplyDay, zfApplication.getApplyDay())
                .like(zfApplication.getId() != null, ZfApplication::getId, zfApplication.getId())
        ;
        return lqw;
    }
}