活动-用户相关功能

This commit is contained in:
attiya 2025-10-09 10:17:56 +08:00
parent dca80cbc5b
commit 7b5059efad
13 changed files with 182 additions and 41 deletions

View File

@ -125,6 +125,12 @@
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
<build>

View File

@ -1,7 +1,10 @@
package com.cdzy.activity.controller;
import com.cdzy.activity.mapper.ActivityUserMapper;
import com.cdzy.activity.model.*;
import com.cdzy.activity.model.Activity;
import com.cdzy.activity.model.JsonResult;
import com.cdzy.activity.model.PageParam;
import com.cdzy.activity.model.User;
import com.cdzy.activity.model.dto.ActivityDto;
import com.cdzy.activity.model.vo.ActivityVo;
import com.cdzy.activity.service.ActivityService;
@ -10,7 +13,7 @@ import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.util.StringUtil;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
@ -36,7 +39,8 @@ public class ActivityController {
@Resource
private UserService userService;
@Autowired
@Resource
private ActivityUserMapper activityUserMapper;
/**
@ -53,6 +57,15 @@ public class ActivityController {
return JsonResult.success(paged);
}
/**
* 用户数据导出
*
*/
@PostMapping("user/export")
public void export(HttpServletResponse response) throws Exception {
userService.exportUserData(response);
}
/**
* 添加
*

View File

@ -1,5 +1,6 @@
package com.cdzy.activity.model;
import com.alibaba.excel.annotation.ExcelProperty;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
@ -30,49 +31,59 @@ public class User implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@ExcelProperty(value = "用户ID", index = 0)
@Id(keyType = KeyType.Generator, value = KeyGenerators.snowFlakeId)
private Long userId;
@ExcelProperty(value = "用户微信唯一标识", index = 1)
private String wxOpenId;
/**
* 姓名
*/
@ExcelProperty(value = "姓名", index = 2)
private String name;
/**
* 手机号
*/
@ExcelProperty(value = "手机号", index = 3)
private String phone;
/**
* 性别
*/
@ExcelProperty(value = "性别", index = 4)
private String gender;
/**
* 地址
*/
@ExcelProperty(value = "地址", index = 5)
private String address;
/**
* 年龄
*/
@ExcelProperty(value = "年龄", index = 6)
private Integer age;
/**
* 慢性病史1- 2-
*/
@ExcelProperty(value = "慢性病史1-有 2-无", index = 7)
private Integer chronicDiseasesHistory;
/**
* 所患慢性病
*/
@ExcelProperty(value = "所患慢性病", index = 8)
private String chronicDisease;
/**
* 健康1-健康 2-不健康
*/
@ExcelProperty(value = "健康状态", index = 9)
private Integer heath;
/**

View File

@ -5,6 +5,7 @@ import com.cdzy.activity.model.vo.RegistrationVo;
import com.cdzy.activity.model.vo.UserVo;
import com.mybatisflex.core.service.IService;
import com.cdzy.activity.model.User;
import jakarta.servlet.http.HttpServletResponse;
/**
* 服务层
@ -21,4 +22,6 @@ public interface UserService extends IService<User> {
ActivityInfo activityInfo(Long activityId);
void cancel(RegistrationVo registrationVo);
void exportUserData(HttpServletResponse response) throws Exception;
}

View File

@ -1,5 +1,6 @@
package com.cdzy.activity.service.impl;
import com.alibaba.excel.EasyExcel;
import com.cdzy.activity.mapper.ActivityMapper;
import com.cdzy.activity.mapper.ActivityUserMapper;
import com.cdzy.activity.mapper.UserRegistrationActivityMapper;
@ -15,9 +16,12 @@ import com.cdzy.activity.model.User;
import com.cdzy.activity.mapper.UserMapper;
import com.cdzy.activity.service.UserService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Service;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.List;
import static com.cdzy.activity.model.table.ActivityTableDef.ACTIVITY;
import static com.cdzy.activity.model.table.ActivityUserTableDef.ACTIVITY_USER;
@ -162,4 +166,27 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
}
userRegistrationActivityMapper.delete(userRegistrationActivity);
}
@Override
public void exportUserData(HttpServletResponse response) throws Exception {
QueryWrapper queryWrapper = QueryWrapper.create();
List<User> list = userMapper.selectListByQuery(queryWrapper);
// 2. 设置响应头
setupResponse(response, "用户数据");
// 3. 写入Excel
EasyExcel.write(response.getOutputStream(), User.class)
.sheet("用户数据")
.doWrite(list);
}
private void setupResponse(HttpServletResponse response, String fileName) throws Exception {
String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName + ".xlsx");
response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
}
}

Binary file not shown.

View File

@ -1,37 +0,0 @@
package com.cdzy.activity.model.vo.table;
import com.mybatisflex.core.query.QueryColumn;
import com.mybatisflex.core.table.TableDef;
public class UserVoTableDef extends TableDef{
public static final UserVoTableDef USER_VO=new UserVoTableDef();
public final QueryColumn IS_FILLED =new QueryColumn(this,"");
public final QueryColumn CHRONIC_DISEASES_HISTORY =new QueryColumn(this,"chronicDiseasesHistory");
public final QueryColumn ADDRESS =new QueryColumn(this,"address");
public final QueryColumn PHONE =new QueryColumn(this,"phone");
public final QueryColumn CHRONIC_DISEASE =new QueryColumn(this,"chronicDisease");
public final QueryColumn GENDER =new QueryColumn(this,"gender");
public final QueryColumn HEATH =new QueryColumn(this,"heath");
public final QueryColumn WX_OPEN_ID =new QueryColumn(this,"wxOpenId");
public final QueryColumn AGE =new QueryColumn(this,"age");
public final QueryColumn NAME =new QueryColumn(this,"name");
/**
* 所有字段
*/
public final QueryColumn ALL_COLUMNS=new QueryColumn(this,"*");
/**
* 默认字段不包含逻辑删除或者 large 等字段
*/
public final QueryColumn[]DEFAULT_COLUMNS=new QueryColumn[]{ IS_FILLED , CHRONIC_DISEASES_HISTORY , ADDRESS , PHONE , CHRONIC_DISEASE , GENDER , HEATH , WX_OPEN_ID , AGE , NAME };
public UserVoTableDef(){super("","user");}
private UserVoTableDef(String schema, String name, String alisa) {
super(schema, name, alisa);
}
public UserVoTableDef as(String alias) {
String key = getNameWithSchema() + "." + alias;
return getCache(key, k -> new UserVoTableDef("", "user", alias));
}
}

View File

@ -0,0 +1,3 @@
artifactId=ActivityRegistration
groupId=com.cdzy
version=0.0.1-SNAPSHOT

View File

@ -0,0 +1,64 @@
com\cdzy\activity\component\ActivityStatusScheduler.class
com\cdzy\activity\service\StaffService.class
com\cdzy\activity\model\User.class
com\cdzy\activity\model\Bulletin$BulletinBuilder.class
com\cdzy\activity\model\PageParam.class
com\cdzy\activity\controller\ImagePreviewController.class
com\cdzy\activity\model\JsonResult.class
com\cdzy\activity\model\UserRegistrationActivity.class
com\cdzy\activity\model\vo\BulletinVo$BulletinVoBuilder.class
com\cdzy\activity\mapper\BulletinMapper.class
com\cdzy\activity\component\WebMvcConfig$StringToLocalDateTimeConverter.class
com\cdzy\activity\controller\ActivityController.class
com\cdzy\activity\uitls\FileUtils.class
com\cdzy\activity\mapper\UserMapper.class
com\cdzy\activity\model\UserRegistrationActivity$UserRegistrationActivityBuilder.class
com\cdzy\activity\service\impl\UserServiceImpl.class
com\cdzy\activity\mapper\ActivityMapper.class
com\cdzy\activity\model\vo\RegistrationVo.class
com\cdzy\activity\enums\ActivityStatus.class
com\cdzy\activity\model\dto\ActivityInfo.class
com\cdzy\activity\controller\BulletinController.class
com\cdzy\activity\model\ActivityUser.class
com\cdzy\activity\mapper\StaffMapper.class
com\cdzy\activity\component\WebMvcConfig$LocalDateTimeToStringConverter.class
com\cdzy\activity\mapper\ActivityUserMapper.class
com\cdzy\activity\component\WebMvcConfig.class
com\cdzy\activity\model\vo\StaffVo.class
com\cdzy\activity\service\impl\ActivityServiceImpl.class
com\cdzy\activity\controller\StaffController.class
com\cdzy\activity\model\vo\UserVo.class
com\cdzy\activity\model\dto\ActivityDto.class
com\cdzy\activity\component\WechatConfig.class
com\cdzy\activity\model\vo\ActivityVo.class
com\cdzy\activity\model\UserCollectActivity.class
com\cdzy\activity\model\vo\UserVo$UserVoBuilder.class
com\cdzy\activity\uitls\VerifyUtil.class
com\cdzy\activity\component\SaTokenConfigure.class
com\cdzy\activity\model\Bulletin.class
com\cdzy\activity\service\impl\BulletinServiceImpl.class
com\cdzy\activity\controller\UserController.class
com\cdzy\activity\component\JacksonConfig.class
com\cdzy\activity\enums\Message.class
com\cdzy\activity\model\vo\BulletinVo.class
com\cdzy\activity\mapper\UserRegistrationActivityMapper.class
com\cdzy\activity\service\ActivityService.class
com\cdzy\activity\service\BulletinService.class
com\cdzy\activity\model\Activity.class
com\cdzy\activity\service\impl\StaffServiceImpl.class
com\cdzy\activity\model\ActivityUser$ActivityUserBuilder.class
com\cdzy\activity\ActivityRegistrationApplication.class
com\cdzy\activity\enums\Code.class
com\cdzy\activity\model\dto\ActivityInfo$ActivityInfoBuilder.class
com\cdzy\activity\component\GlobalExceptionHandler.class
com\cdzy\activity\model\vo\StaffVo$StaffVoBuilder.class
com\cdzy\activity\model\UserCollectActivity$UserCollectActivityBuilder.class
com\cdzy\activity\model\Staff.class
com\cdzy\activity\component\ImageConfig.class
com\cdzy\activity\model\Staff$StaffBuilder.class
com\cdzy\activity\uitls\ImageToBase64Converter.class
com\cdzy\activity\mapper\UserCollectActivityMapper.class
com\cdzy\activity\model\User$UserBuilder.class
com\cdzy\activity\model\Activity$ActivityBuilder.class
com\cdzy\activity\model\vo\ActivityVo$ActivityVoBuilder.class
com\cdzy\activity\service\UserService.class

View File

@ -0,0 +1,50 @@
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\ActivityRegistrationApplication.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\ActivityStatusScheduler.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\GlobalExceptionHandler.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\ImageConfig.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\JacksonConfig.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\SaTokenConfigure.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\WebMvcConfig.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\component\WechatConfig.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\controller\ActivityController.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\controller\BulletinController.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\controller\ImagePreviewController.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\controller\StaffController.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\controller\UserController.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\enums\ActivityStatus.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\enums\Code.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\enums\Message.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\ActivityMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\ActivityUserMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\BulletinMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\StaffMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\UserCollectActivityMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\UserMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\mapper\UserRegistrationActivityMapper.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\Activity.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\ActivityUser.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\Bulletin.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\dto\ActivityDto.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\dto\ActivityInfo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\JsonResult.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\PageParam.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\Staff.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\User.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\UserCollectActivity.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\UserRegistrationActivity.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\vo\ActivityVo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\vo\BulletinVo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\vo\RegistrationVo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\vo\StaffVo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\model\vo\UserVo.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\ActivityService.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\BulletinService.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\impl\ActivityServiceImpl.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\impl\BulletinServiceImpl.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\impl\StaffServiceImpl.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\impl\UserServiceImpl.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\StaffService.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\service\UserService.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\uitls\FileUtils.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\uitls\ImageToBase64Converter.java
D:\Projects\ActivityRegistration\src\main\java\com\cdzy\activity\uitls\VerifyUtil.java

View File

@ -0,0 +1 @@
D:\Projects\ActivityRegistration\src\test\java\com\cdzy\activity\ActivityRegistrationApplicationTests.java