diff --git a/pom.xml b/pom.xml index e8ad86b..87c1ba9 100644 --- a/pom.xml +++ b/pom.xml @@ -125,6 +125,12 @@ jackson-datatype-jsr310 + + com.alibaba + easyexcel + 3.3.2 + + diff --git a/src/main/java/com/cdzy/activity/controller/ActivityController.java b/src/main/java/com/cdzy/activity/controller/ActivityController.java index 3745a9d..20508b5 100644 --- a/src/main/java/com/cdzy/activity/controller/ActivityController.java +++ b/src/main/java/com/cdzy/activity/controller/ActivityController.java @@ -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); + } + /** * 添加。 * @@ -113,7 +126,7 @@ public class ActivityController { .select(USER.ALL_COLUMNS) .where(ACTIVITY_USER.ACTIVITY_ID.eq(activity.getActivityId())) .leftJoin(USER).on(USER.USER_ID.eq(ACTIVITY_USER.USER_ID)); - List list = activityUserMapper.selectListByQueryAs(queryWrapper,User.class); + List list = activityUserMapper.selectListByQueryAs(queryWrapper, User.class); ActivityDto activityDto = new ActivityDto(activity, list); return JsonResult.success(activityDto); } diff --git a/src/main/java/com/cdzy/activity/model/User.java b/src/main/java/com/cdzy/activity/model/User.java index fb547d0..c007bb9 100644 --- a/src/main/java/com/cdzy/activity/model/User.java +++ b/src/main/java/com/cdzy/activity/model/User.java @@ -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; /** diff --git a/src/main/java/com/cdzy/activity/service/UserService.java b/src/main/java/com/cdzy/activity/service/UserService.java index 152211a..73e9627 100644 --- a/src/main/java/com/cdzy/activity/service/UserService.java +++ b/src/main/java/com/cdzy/activity/service/UserService.java @@ -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 { ActivityInfo activityInfo(Long activityId); void cancel(RegistrationVo registrationVo); + + void exportUserData(HttpServletResponse response) throws Exception; } diff --git a/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java b/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java index 2889e05..ed86912 100644 --- a/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java +++ b/src/main/java/com/cdzy/activity/service/impl/UserServiceImpl.java @@ -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 implements Us } userRegistrationActivityMapper.delete(userRegistrationActivity); } + + @Override + public void exportUserData(HttpServletResponse response) throws Exception { + QueryWrapper queryWrapper = QueryWrapper.create(); + List 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"); + } } diff --git a/target/ActivityRegistration-0.0.1-SNAPSHOT.jar b/target/ActivityRegistration-0.0.1-SNAPSHOT.jar new file mode 100644 index 0000000..79b1657 Binary files /dev/null and b/target/ActivityRegistration-0.0.1-SNAPSHOT.jar differ diff --git a/target/ActivityRegistration-0.0.1-SNAPSHOT.jar.original b/target/ActivityRegistration-0.0.1-SNAPSHOT.jar.original new file mode 100644 index 0000000..6972b41 Binary files /dev/null and b/target/ActivityRegistration-0.0.1-SNAPSHOT.jar.original differ diff --git a/target/generated-sources/annotations/com/cdzy/activity/model/vo/table/UserVoTableDef.java b/target/generated-sources/annotations/com/cdzy/activity/model/vo/table/UserVoTableDef.java deleted file mode 100644 index 3b78573..0000000 --- a/target/generated-sources/annotations/com/cdzy/activity/model/vo/table/UserVoTableDef.java +++ /dev/null @@ -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)); - } -} diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..17c4a59 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,3 @@ +artifactId=ActivityRegistration +groupId=com.cdzy +version=0.0.1-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..66493d8 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -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 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..471abb6 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -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 diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..d5724e8 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst @@ -0,0 +1 @@ +D:\Projects\ActivityRegistration\src\test\java\com\cdzy\activity\ActivityRegistrationApplicationTests.java