Browse Source

新增活动

shenzx 4 tháng trước cách đây
mục cha
commit
05df71521a
25 tập tin đã thay đổi với 1043 bổ sung0 xóa
  1. 211 0
      ruoyi-service/src/main/java/com/ruoyi/web/controller/HdInfoController.java
  2. 112 0
      ruoyi-service/src/main/java/com/ruoyi/web/controller/HdUserController.java
  3. 115 0
      ruoyi-service/src/main/java/com/ruoyi/web/controller/HisZdController.java
  4. 109 0
      ruoyi-service/src/main/java/com/ruoyi/web/controller/UserInfoController.java
  5. 18 0
      ruoyi-service/src/main/java/com/ruoyi/web/domain/GrzdVO.java
  6. 53 0
      ruoyi-service/src/main/java/com/ruoyi/web/domain/HdInfo.java
  7. 38 0
      ruoyi-service/src/main/java/com/ruoyi/web/domain/HdUser.java
  8. 38 0
      ruoyi-service/src/main/java/com/ruoyi/web/domain/HisZd.java
  9. 38 0
      ruoyi-service/src/main/java/com/ruoyi/web/domain/UserInfo.java
  10. 22 0
      ruoyi-service/src/main/java/com/ruoyi/web/mapper/HdInfoMapper.java
  11. 16 0
      ruoyi-service/src/main/java/com/ruoyi/web/mapper/HdUserMapper.java
  12. 16 0
      ruoyi-service/src/main/java/com/ruoyi/web/mapper/HisZdMapper.java
  13. 16 0
      ruoyi-service/src/main/java/com/ruoyi/web/mapper/UserInfoMapper.java
  14. 18 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/IHdInfoService.java
  15. 14 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/IHdUserService.java
  16. 14 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/IHisZdService.java
  17. 14 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/IUserInfoService.java
  18. 26 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HdInfoServiceImpl.java
  19. 18 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HdUserServiceImpl.java
  20. 18 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HisZdServiceImpl.java
  21. 18 0
      ruoyi-service/src/main/java/com/ruoyi/web/service/impl/UserInfoServiceImpl.java
  22. 50 0
      ruoyi-service/src/main/resources/mapper/hd/HdInfoMapper.xml
  23. 17 0
      ruoyi-service/src/main/resources/mapper/hd/HdUserMapper.xml
  24. 17 0
      ruoyi-service/src/main/resources/mapper/his/HisZdMapper.xml
  25. 17 0
      ruoyi-service/src/main/resources/mapper/user/UserInfoMapper.xml

+ 211 - 0
ruoyi-service/src/main/java/com/ruoyi/web/controller/HdInfoController.java

@@ -0,0 +1,211 @@
+package com.ruoyi.web.controller;
+
+import java.util.*;
+import java.util.stream.Collectors;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.constraints.NotBlank;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.web.domain.GrzdVO;
+import com.ruoyi.web.domain.HdUser;
+import com.ruoyi.web.domain.HisZd;
+import com.ruoyi.web.service.IHdUserService;
+import com.ruoyi.web.service.IHisZdService;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.web.domain.HdInfo;
+import com.ruoyi.web.service.IHdInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 活动信息Controller
+ * 
+ * @author ruoyi
+ * @date 2025-08-25
+ */
+@RestController
+@RequestMapping("/hd/info")
+@Validated
+public class HdInfoController extends BaseController
+{
+    private IHdInfoService hdInfoService;
+    @Autowired
+    public void setHdInfoService(IHdInfoService hdInfoService) {
+        this.hdInfoService = hdInfoService;
+    }
+
+    private IHdUserService hdUserService;
+    @Autowired
+    public void setHdUserService(IHdUserService hdUserService) {
+        this.hdUserService = hdUserService;
+    }
+
+    private IHisZdService hisZdService;
+    @Autowired
+    public void setHisZdService(IHisZdService hisZdService) {
+        this.hisZdService = hisZdService;
+    }
+
+    private HdInfo getHdInfo(Date date){
+        QueryWrapper<HdInfo> qw = new QueryWrapper<>();
+        qw.lambda().eq(HdInfo::getHdrq,date);
+        return hdInfoService.getOne(qw);
+    }
+
+    @GetMapping("/user/verify")
+    @ApiOperation("校验是否签到")
+    public AjaxResult verify(String date) {
+        Date hdrq = DateUtils.getNowDate();
+        if(StringUtils.isNotEmpty(date)) hdrq = DateUtils.parseDate(date);
+        HdInfo hdInfo = getHdInfo(hdrq);
+        if (Objects.isNull(hdInfo)) return success(false);
+        QueryWrapper<HdUser> huQW = new QueryWrapper<>();
+        huQW.lambda().eq(HdUser::getFid,hdInfo.getId()).eq(HdUser::getUserId,SecurityUtils.getUserId());
+        return success(!Objects.isNull(hdUserService.getOne(huQW)));
+    }
+
+    @PostMapping("/user/qd")
+    @ApiOperation("签到")
+    public AjaxResult userQd(String date){
+        Date hdrq = DateUtils.getNowDate();
+        if(StringUtils.isNotEmpty(date)) hdrq = DateUtils.parseDate(date);
+        HdInfo hdInfo = getHdInfo(hdrq);
+        if (Objects.isNull(hdInfo)) {
+            hdInfo = new HdInfo();
+            hdInfo.setHdrq(hdrq);
+            hdInfoService.save(hdInfo);
+        }
+        Long id = hdInfo.getId();
+        HdUser hdUser = new HdUser();
+        hdUser.setFid(id);
+        hdUser.setUserId(SecurityUtils.getUserId());
+        hdUserService.save(hdUser);
+        return success();
+    }
+
+    @PostMapping("/user/qd/cancel")
+    @ApiOperation("取消签到")
+    public AjaxResult userQdCancel(String date){
+        Date hdrq = DateUtils.getNowDate();
+        if(StringUtils.isNotEmpty(date)) hdrq = DateUtils.parseDate(date);
+        HdInfo hdInfo = getHdInfo(hdrq);
+        HdUser hdUser = new HdUser();
+        hdUser.setFid(hdInfo.getId());
+        hdUser.setUserId(SecurityUtils.getUserId());
+        QueryWrapper<HdUser> qw = new QueryWrapper<>();
+        qw.setEntity(hdUser);
+        hdUserService.remove(qw);
+        return success();
+    }
+
+    @GetMapping("/user/his")
+    @ApiOperation("历史记录")
+    public TableDataInfo userHis(){
+        QueryWrapper<HdUser> qw = new QueryWrapper<>();
+        qw.lambda().eq(HdUser::getUserId,SecurityUtils.getUserId());
+        List<Long> idList = hdUserService.list(qw).stream().map(HdUser::getFid).collect(Collectors.toList());
+        if (idList.isEmpty()) return getDataTable(new ArrayList<>());
+        startPage();
+        return getDataTable(hdInfoService.listByIds(idList));
+    }
+
+    @GetMapping("/user/grzd")
+    @ApiOperation("个人账单")
+    public TableDataInfo grzd(String ny){
+        startPage();
+        return getDataTable(hdInfoService.grzd(ny));
+    }
+
+    @GetMapping("/user/grzd/{ny}")
+    @ApiOperation("个人账单详情")
+    public AjaxResult grzdDetail(@PathVariable String ny){
+        List<GrzdVO> voList = hdInfoService.grzd(ny);
+        return success(voList.get(0));
+    }
+
+    @PostMapping("/user/grzd/zf")
+    @ApiOperation("个人账单支付")
+    public AjaxResult grzdZf(@RequestBody HisZd hisZd){
+        hisZd.setUserId(SecurityUtils.getUserId());
+        hisZdService.save(hisZd);
+        return success();
+    }
+
+    /**
+     * 查询活动信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(HdInfo hdInfo)
+    {
+        startPage();
+        QueryWrapper<HdInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hdInfo);
+        List<HdInfo> hdInfoList = hdInfoService.list(queryWrapper);
+        return getDataTable(hdInfoList);
+    }
+
+    /**
+     * 导出活动信息列表
+     */
+    @Log(title = "活动信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HdInfo hdInfo)
+    {
+        QueryWrapper<HdInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hdInfo);
+        List<HdInfo> list = hdInfoService.list(queryWrapper);
+        ExcelUtil<HdInfo> util = new ExcelUtil<>(HdInfo.class);
+        util.exportExcel(response, list, "活动信息数据");
+    }
+
+    /**
+     * 获取活动信息详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(hdInfoService.getById(id));
+    }
+
+    /**
+     * 新增活动信息
+     */
+    @Log(title = "活动信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody HdInfo hdInfo)
+    {
+        hdInfoService.save(hdInfo);
+        return success(hdInfo);
+    }
+
+    /**
+     * 修改活动信息
+     */
+    @Log(title = "活动信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody HdInfo hdInfo)
+    {
+        hdInfoService.updateById(hdInfo);
+        return success(hdInfo);
+    }
+
+    /**
+     * 删除活动信息
+     */
+    @Log(title = "活动信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(hdInfoService.removeByIds(Arrays.asList(ids)));
+    }
+}

+ 112 - 0
ruoyi-service/src/main/java/com/ruoyi/web/controller/HdUserController.java

@@ -0,0 +1,112 @@
+package com.ruoyi.web.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.web.domain.HdUser;
+import com.ruoyi.web.service.IHdUserService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 活动信息-用户Controller
+ * 
+ * @author shenzx
+ * @date 2025-08-25
+ */
+@RestController
+@RequestMapping("/hd/user")
+public class HdUserController extends BaseController
+{
+    @Autowired
+    private IHdUserService hdUserService;
+
+    /**
+     * 查询活动信息-用户列表
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(HdUser hdUser)
+    {
+        startPage();
+        QueryWrapper<HdUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hdUser);
+        List<HdUser> hdUserList = hdUserService.list(queryWrapper);
+        return getDataTable(hdUserList);
+    }
+
+    /**
+     * 导出活动信息-用户列表
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:export')")
+    @Log(title = "活动信息-用户", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HdUser hdUser)
+    {
+        QueryWrapper<HdUser> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hdUser);
+        List<HdUser> list = hdUserService.list(queryWrapper);
+        ExcelUtil<HdUser> util = new ExcelUtil<>(HdUser.class);
+        util.exportExcel(response, list, "活动信息-用户数据");
+    }
+
+    /**
+     * 获取活动信息-用户详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:query')")
+    @GetMapping(value = "/{fid}")
+    public AjaxResult getInfo(@PathVariable("fid") Long fid)
+    {
+        return success(hdUserService.getById(fid));
+    }
+
+    /**
+     * 新增活动信息-用户
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:add')")
+    @Log(title = "活动信息-用户", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody HdUser hdUser)
+    {
+        hdUserService.save(hdUser);
+        return success(hdUser);
+    }
+
+    /**
+     * 修改活动信息-用户
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:edit')")
+    @Log(title = "活动信息-用户", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody HdUser hdUser)
+    {
+        hdUserService.updateById(hdUser);
+        return success(hdUser);
+    }
+
+    /**
+     * 删除活动信息-用户
+     */
+    @PreAuthorize("@ss.hasPermi('hd:user:remove')")
+    @Log(title = "活动信息-用户", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{fids}")
+    public AjaxResult remove(@PathVariable Long[] fids)
+    {
+        return toAjax(hdUserService.removeByIds(Arrays.asList(fids)));
+    }
+}

+ 115 - 0
ruoyi-service/src/main/java/com/ruoyi/web/controller/HisZdController.java

@@ -0,0 +1,115 @@
+package com.ruoyi.web.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.web.domain.HisZd;
+import com.ruoyi.web.service.IHisZdService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 历史记录-账单Controller
+ * 
+ * @author shenzx
+ * @date 2025-08-27
+ */
+@RestController
+@RequestMapping("/his/zd")
+public class HisZdController extends BaseController
+{
+    private IHisZdService hisZdService;
+    @Autowired
+    public void setHisZdService(IHisZdService hisZdService) {
+        this.hisZdService = hisZdService;
+    }
+
+    /**
+     * 查询历史记录-账单列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(HisZd hisZd)
+    {
+        startPage();
+        QueryWrapper<HisZd> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hisZd);
+        List<HisZd> hisZdList = hisZdService.list(queryWrapper);
+        return getDataTable(hisZdList);
+    }
+
+    /**
+     * 导出历史记录-账单列表
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:export')")
+    @Log(title = "历史记录-账单", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, HisZd hisZd)
+    {
+        QueryWrapper<HisZd> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(hisZd);
+        List<HisZd> list = hisZdService.list(queryWrapper);
+        ExcelUtil<HisZd> util = new ExcelUtil<>(HisZd.class);
+        util.exportExcel(response, list, "历史记录-账单数据");
+    }
+
+    /**
+     * 获取历史记录-账单详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:query')")
+    @GetMapping(value = "/{ny}")
+    public AjaxResult getInfo(@PathVariable("ny") String ny)
+    {
+        return success(hisZdService.getById(ny));
+    }
+
+    /**
+     * 新增历史记录-账单
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:add')")
+    @Log(title = "历史记录-账单", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody HisZd hisZd)
+    {
+        hisZdService.save(hisZd);
+        return success(hisZd);
+    }
+
+    /**
+     * 修改历史记录-账单
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:edit')")
+    @Log(title = "历史记录-账单", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody HisZd hisZd)
+    {
+        hisZdService.updateById(hisZd);
+        return success(hisZd);
+    }
+
+    /**
+     * 删除历史记录-账单
+     */
+    @PreAuthorize("@ss.hasPermi('his:zd:remove')")
+    @Log(title = "历史记录-账单", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{nys}")
+    public AjaxResult remove(@PathVariable String[] nys)
+    {
+        return toAjax(hisZdService.removeByIds(Arrays.asList(nys)));
+    }
+}

+ 109 - 0
ruoyi-service/src/main/java/com/ruoyi/web/controller/UserInfoController.java

@@ -0,0 +1,109 @@
+package com.ruoyi.web.controller;
+
+import java.util.Arrays;
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.web.domain.UserInfo;
+import com.ruoyi.web.service.IUserInfoService;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 用户信息Controller
+ * 
+ * @author shenzx
+ * @date 2025-08-28
+ */
+@RestController
+@RequestMapping("/user/info")
+public class UserInfoController extends BaseController
+{
+    private IUserInfoService userInfoService;
+    @Autowired
+    public void setUserInfoService(IUserInfoService userInfoService) {
+        this.userInfoService = userInfoService;
+    }
+
+    /**
+     * 查询用户信息列表
+     */
+    @GetMapping("/list")
+    public TableDataInfo list(UserInfo userInfo)
+    {
+        startPage();
+        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(userInfo);
+        List<UserInfo> userInfoList = userInfoService.list(queryWrapper);
+        return getDataTable(userInfoList);
+    }
+
+    /**
+     * 导出用户信息列表
+     */
+    @Log(title = "用户信息", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, UserInfo userInfo)
+    {
+        QueryWrapper<UserInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.setEntity(userInfo);
+        List<UserInfo> list = userInfoService.list(queryWrapper);
+        ExcelUtil<UserInfo> util = new ExcelUtil<>(UserInfo.class);
+        util.exportExcel(response, list, "用户信息数据");
+    }
+
+    /**
+     * 获取用户信息详细信息
+     */
+    @GetMapping(value = "/{userId}")
+    public AjaxResult getInfo(@PathVariable("userId") Long userId)
+    {
+        return success(userInfoService.getById(userId));
+    }
+
+    /**
+     * 新增用户信息
+     */
+    @Log(title = "用户信息", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody UserInfo userInfo)
+    {
+        userInfoService.save(userInfo);
+        return success(userInfo);
+    }
+
+    /**
+     * 修改用户信息
+     */
+    @Log(title = "用户信息", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody UserInfo userInfo)
+    {
+        userInfoService.updateById(userInfo);
+        return success(userInfo);
+    }
+
+    /**
+     * 删除用户信息
+     */
+    @Log(title = "用户信息", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{userIds}")
+    public AjaxResult remove(@PathVariable Long[] userIds)
+    {
+        return toAjax(userInfoService.removeByIds(Arrays.asList(userIds)));
+    }
+}

+ 18 - 0
ruoyi-service/src/main/java/com/ruoyi/web/domain/GrzdVO.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.domain;
+
+import lombok.Data;
+
+@Data
+public class GrzdVO {
+
+    private String ny;
+
+    private String je;
+
+    private String czzt;
+
+    private String zfzt;
+
+    private String fyzt;
+
+}

+ 53 - 0
ruoyi-service/src/main/java/com/ruoyi/web/domain/HdInfo.java

@@ -0,0 +1,53 @@
+package com.ruoyi.web.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+import lombok.Data;
+
+/**
+ * 活动信息对象 hd_info
+ * 
+ * @author ruoyi
+ * @date 2025-08-25
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName(value ="hd_info")
+@Data
+public class HdInfo extends BaseEntity implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @ApiModelProperty("主键")
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /** 活动日期 */
+    @Excel(name = "活动日期")
+    @ApiModelProperty("活动日期")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date hdrq;
+
+    /** 球耗数量 */
+    @Excel(name = "球耗数量")
+    @ApiModelProperty("球耗数量")
+    private Integer qhsl;
+
+    /** 总费用 */
+    @Excel(name = "总费用")
+    @ApiModelProperty("总费用")
+    private BigDecimal totalCost;
+
+}

+ 38 - 0
ruoyi-service/src/main/java/com/ruoyi/web/domain/HdUser.java

@@ -0,0 +1,38 @@
+package com.ruoyi.web.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 活动信息-用户对象 hd_user
+ * 
+ * @author shenzx
+ * @date 2025-08-25
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName(value ="hd_user")
+@Data
+public class HdUser extends BaseEntity implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /** hd_info表主键 */
+    @Excel(name = "hd_info表主键")
+    @ApiModelProperty("hd_info表主键")
+    private Long fid;
+
+    /** user_info表主键 */
+    @Excel(name = "user_info表主键")
+    @ApiModelProperty("user_info表主键")
+    private Long userId;
+
+}

+ 38 - 0
ruoyi-service/src/main/java/com/ruoyi/web/domain/HisZd.java

@@ -0,0 +1,38 @@
+package com.ruoyi.web.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 历史记录-账单对象 his_zd
+ * 
+ * @author shenzx
+ * @date 2025-08-27
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName(value ="his_zd")
+@Data
+public class HisZd extends BaseEntity implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /** 年月 */
+    @Excel(name = "年月")
+    @ApiModelProperty("年月")
+    private String ny;
+
+    /** sys_user表主键 */
+    @Excel(name = "sys_user表主键")
+    @ApiModelProperty("sys_user表主键")
+    private Long userId;
+
+}

+ 38 - 0
ruoyi-service/src/main/java/com/ruoyi/web/domain/UserInfo.java

@@ -0,0 +1,38 @@
+package com.ruoyi.web.domain;
+
+import io.swagger.annotations.ApiModelProperty;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import lombok.Data;
+
+/**
+ * 用户信息对象 user_info
+ * 
+ * @author shenzx
+ * @date 2025-08-28
+ */
+@EqualsAndHashCode(callSuper = true)
+@TableName(value ="user_info")
+@Data
+public class UserInfo extends BaseEntity implements Serializable {
+
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /** 主键 */
+    @ApiModelProperty("主键")
+    @TableId(type = IdType.AUTO)
+    private Long userId;
+
+    /** 余额 */
+    @Excel(name = "余额")
+    @ApiModelProperty("余额")
+    private String money;
+
+}

+ 22 - 0
ruoyi-service/src/main/java/com/ruoyi/web/mapper/HdInfoMapper.java

@@ -0,0 +1,22 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.GrzdVO;
+import com.ruoyi.web.domain.HdInfo;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * 活动信息Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2025-08-25
+ */
+@Repository
+public interface HdInfoMapper extends BaseMapper<HdInfo> {
+
+    List<GrzdVO> grzd(@Param("ny") String ny,@Param("userId") Long userId);
+
+}

+ 16 - 0
ruoyi-service/src/main/java/com/ruoyi/web/mapper/HdUserMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.HdUser;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 活动信息-用户Mapper接口
+ * 
+ * @author shenzx
+ * @date 2025-08-25
+ */
+@Repository
+public interface HdUserMapper extends BaseMapper<HdUser> {
+
+}

+ 16 - 0
ruoyi-service/src/main/java/com/ruoyi/web/mapper/HisZdMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.HisZd;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 历史记录-账单Mapper接口
+ * 
+ * @author shenzx
+ * @date 2025-08-27
+ */
+@Repository
+public interface HisZdMapper extends BaseMapper<HisZd> {
+
+}

+ 16 - 0
ruoyi-service/src/main/java/com/ruoyi/web/mapper/UserInfoMapper.java

@@ -0,0 +1,16 @@
+package com.ruoyi.web.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.web.domain.UserInfo;
+import org.springframework.stereotype.Repository;
+
+/**
+ * 用户信息Mapper接口
+ * 
+ * @author shenzx
+ * @date 2025-08-28
+ */
+@Repository
+public interface UserInfoMapper extends BaseMapper<UserInfo> {
+
+}

+ 18 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/IHdInfoService.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.GrzdVO;
+import com.ruoyi.web.domain.HdInfo;
+
+import java.util.List;
+
+/**
+ * 活动信息Service接口
+ * 
+ * @author ruoyi
+ * @date 2025-08-25
+ */
+public interface IHdInfoService extends IService<HdInfo> {
+
+    List<GrzdVO> grzd(String ny);
+}

+ 14 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/IHdUserService.java

@@ -0,0 +1,14 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.HdUser;
+
+/**
+ * 活动信息-用户Service接口
+ * 
+ * @author shenzx
+ * @date 2025-08-25
+ */
+public interface IHdUserService extends IService<HdUser> {
+
+}

+ 14 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/IHisZdService.java

@@ -0,0 +1,14 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.HisZd;
+
+/**
+ * 历史记录-账单Service接口
+ * 
+ * @author shenzx
+ * @date 2025-08-27
+ */
+public interface IHisZdService extends IService<HisZd> {
+
+}

+ 14 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/IUserInfoService.java

@@ -0,0 +1,14 @@
+package com.ruoyi.web.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.web.domain.UserInfo;
+
+/**
+ * 用户信息Service接口
+ * 
+ * @author shenzx
+ * @date 2025-08-28
+ */
+public interface IUserInfoService extends IService<UserInfo> {
+
+}

+ 26 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HdInfoServiceImpl.java

@@ -0,0 +1,26 @@
+package com.ruoyi.web.service.impl;
+
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.web.domain.GrzdVO;
+import org.springframework.stereotype.Service;
+import com.ruoyi.web.mapper.HdInfoMapper;
+import com.ruoyi.web.domain.HdInfo;
+import com.ruoyi.web.service.IHdInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+
+/**
+ * 活动信息Service业务层处理
+ * 
+ * @author ruoyi
+ * @date 2025-08-25
+ */
+@Service
+public class HdInfoServiceImpl extends ServiceImpl<HdInfoMapper, HdInfo> implements IHdInfoService {
+
+    @Override
+    public List<GrzdVO> grzd(String ny) {
+        return this.baseMapper.grzd(ny,SecurityUtils.getUserId());
+    }
+}

+ 18 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HdUserServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.service.impl;
+
+import org.springframework.stereotype.Service;
+import com.ruoyi.web.mapper.HdUserMapper;
+import com.ruoyi.web.domain.HdUser;
+import com.ruoyi.web.service.IHdUserService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 活动信息-用户Service业务层处理
+ * 
+ * @author shenzx
+ * @date 2025-08-25
+ */
+@Service
+public class HdUserServiceImpl extends ServiceImpl<HdUserMapper, HdUser> implements IHdUserService {
+
+}

+ 18 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/impl/HisZdServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.service.impl;
+
+import org.springframework.stereotype.Service;
+import com.ruoyi.web.mapper.HisZdMapper;
+import com.ruoyi.web.domain.HisZd;
+import com.ruoyi.web.service.IHisZdService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 历史记录-账单Service业务层处理
+ * 
+ * @author shenzx
+ * @date 2025-08-27
+ */
+@Service
+public class HisZdServiceImpl extends ServiceImpl<HisZdMapper, HisZd> implements IHisZdService {
+
+}

+ 18 - 0
ruoyi-service/src/main/java/com/ruoyi/web/service/impl/UserInfoServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ruoyi.web.service.impl;
+
+import org.springframework.stereotype.Service;
+import com.ruoyi.web.mapper.UserInfoMapper;
+import com.ruoyi.web.domain.UserInfo;
+import com.ruoyi.web.service.IUserInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+/**
+ * 用户信息Service业务层处理
+ * 
+ * @author shenzx
+ * @date 2025-08-28
+ */
+@Service
+public class UserInfoServiceImpl extends ServiceImpl<UserInfoMapper, UserInfo> implements IUserInfoService {
+
+}

+ 50 - 0
ruoyi-service/src/main/resources/mapper/hd/HdInfoMapper.xml

@@ -0,0 +1,50 @@
+<?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.web.mapper.HdInfoMapper">
+    
+    <resultMap type="HdInfo" id="HdInfoResult">
+        <result property="id"    column="id"    />
+        <result property="hdrq"    column="hdrq"    />
+        <result property="createBy"    column="create_by"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateBy"    column="update_by"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <resultMap id="grzdResultMap" type="GrzdVO">
+        <result property="ny" column="ny" />
+        <result property="je" column="je" />
+        <result property="czzt" column="czzt" />
+        <result property="zfzt" column="zfzt" />
+        <result property="fyzt" column="fyzt" />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,
+        hdrq,
+        create_by,
+        create_time,
+        update_by,
+        update_time
+    </sql>
+
+    <select id="grzd" resultMap="grzdResultMap">
+        with zd as (
+        select
+        to_char(hdrq,'YYYY-MM') ny,
+        round(coalesce(sum(total_cost / (select count(*) from hd_user where fid = info.id)),0),2) je,
+        case when to_char(hdrq,'YYYY-MM') = to_char(CURRENT_DATE,'YYYY-MM') then 0 else 1 end czzt,
+        case when count(*) = count(total_cost) then 1 else 0 end fyzt
+        from hd_info info
+        <where>
+            and id in (select fid from hd_user where user_id = #{userId})
+            <if test="ny != null and ny != ''"> and to_char(hdrq,'YYYY-MM') = #{ny} </if>
+        </where>
+        group by to_char(hdrq,'YYYY-MM')
+        )
+        select *,(select count(*) from his_zd where ny = zd.ny) zfzt from zd
+    </select>
+
+</mapper>

+ 17 - 0
ruoyi-service/src/main/resources/mapper/hd/HdUserMapper.xml

@@ -0,0 +1,17 @@
+<?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.web.mapper.HdUserMapper">
+    
+    <resultMap type="HdUser" id="HdUserResult">
+        <result property="fid"    column="fid"    />
+        <result property="userId"    column="user_id"    />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        fid,
+        user_id
+    </sql>
+
+</mapper>

+ 17 - 0
ruoyi-service/src/main/resources/mapper/his/HisZdMapper.xml

@@ -0,0 +1,17 @@
+<?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.web.mapper.HisZdMapper">
+    
+    <resultMap type="HisZd" id="HisZdResult">
+        <result property="ny"    column="ny"    />
+        <result property="userId"    column="user_id"    />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        ny,
+        user_id
+    </sql>
+
+</mapper>

+ 17 - 0
ruoyi-service/src/main/resources/mapper/user/UserInfoMapper.xml

@@ -0,0 +1,17 @@
+<?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.web.mapper.UserInfoMapper">
+    
+    <resultMap type="UserInfo" id="UserInfoResult">
+        <result property="userId"    column="user_id"    />
+        <result property="money"    column="money"    />
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        user_id,
+        money
+    </sql>
+
+</mapper>