From 3e02abec44a648f01174a4c3494a96ccb46a3b1a Mon Sep 17 00:00:00 2001
From: zqy <2522236926@qq.com>
Date: 星期二, 11 十一月 2025 21:39:20 +0800
Subject: [PATCH] 会员&充值相关模块

---
 zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java                 |   10 +
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java    |    3 
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java     |    2 
 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml                       |    4 
 zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java      |  190 +++++++++++++++++++++++++++
 zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java               |   27 +++
 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java           |   12 +
 zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java                       |   50 +++++++
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java |  116 ++++++++++++++++
 9 files changed, 411 insertions(+), 3 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
index 9994f0a..9cd5b76 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
+++ b/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("灏婃暚鐨勪細鍛樼敤鎴凤紝鎮ㄥソ锛�");
 
     }
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java
new file mode 100644
index 0000000..ee813d6
--- /dev/null
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/zhang/ZfApplicationController.java
@@ -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);
+    }
+
+}
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
index e9b9959..db6db7c 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
+++ b/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();
     }
 }
diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
index 856846b..4fb0723 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java
+++ b/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);
 
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
index 7e19a66..9281dde 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
+++ b/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}
diff --git a/zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java b/zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java
new file mode 100644
index 0000000..83a2795
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/domain/ZfApplication.java
@@ -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;
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java b/zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java
new file mode 100644
index 0000000..a729ac1
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/mapper/ZfApplicationMapper.java
@@ -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> {
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java b/zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java
new file mode 100644
index 0000000..37f8074
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/service/ZfApplicationService.java
@@ -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);
+
+
+}
diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java
new file mode 100644
index 0000000..2d93085
--- /dev/null
+++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZfApplicationServiceImpl.java
@@ -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;
+    }
+}

--
Gitblit v1.9.1