活动-用户相关功能
This commit is contained in:
parent
97adc9119c
commit
94c21e13d3
@ -1,14 +1,12 @@
|
||||
package com.cdzy.activity.controller;
|
||||
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
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.*;
|
||||
import com.cdzy.activity.model.dto.ActivityInfo;
|
||||
import com.cdzy.activity.model.vo.RegistrationVo;
|
||||
import com.cdzy.activity.model.vo.UserVo;
|
||||
import com.cdzy.activity.service.ActivityService;
|
||||
import com.cdzy.activity.service.BulletinService;
|
||||
import com.cdzy.activity.service.UserService;
|
||||
import com.cdzy.activity.uitls.VerifyUtil;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
@ -22,6 +20,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.cdzy.activity.model.table.ActivityTableDef.ACTIVITY;
|
||||
import static com.cdzy.activity.model.table.BulletinTableDef.BULLETIN;
|
||||
|
||||
/**
|
||||
* 微信用户控制层。
|
||||
@ -42,6 +41,9 @@ public class UserController {
|
||||
@Resource
|
||||
private ActivityService activityService;
|
||||
|
||||
@Resource
|
||||
private BulletinService bulletinService;
|
||||
|
||||
/**
|
||||
* 用户微信无感登录。
|
||||
*
|
||||
@ -49,7 +51,7 @@ public class UserController {
|
||||
* @return 登陆结果
|
||||
*/
|
||||
@RequestMapping("login")
|
||||
public JsonResult<?> silentLogin(@RequestParam(name ="js_code") String code) {
|
||||
public JsonResult<?> silentLogin(@RequestParam(name = "js_code") String code) {
|
||||
JSONObject result = verifyUtil.wechatAuthority(code);
|
||||
if (result == null) {
|
||||
return JsonResult.failed("微信登录失败");
|
||||
@ -88,7 +90,7 @@ public class UserController {
|
||||
* @return 登陆结果
|
||||
*/
|
||||
@GetMapping("info")
|
||||
public JsonResult<?> info(@RequestParam("openId")String openId) {
|
||||
public JsonResult<?> info(@RequestParam("openId") String openId) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.eq(User::getWxOpenId, openId);
|
||||
User user = userService.getOne(queryWrapper);
|
||||
@ -135,6 +137,18 @@ public class UserController {
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户取消报名活动。
|
||||
*
|
||||
* @param registrationVo 活动报名信息
|
||||
* @return 登陆结果
|
||||
*/
|
||||
@PostMapping("activity/cancel")
|
||||
public JsonResult<?> cancel(@RequestBody RegistrationVo registrationVo) {
|
||||
userService.cancel(registrationVo);
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询用户已报名活动。
|
||||
*
|
||||
@ -142,8 +156,69 @@ public class UserController {
|
||||
* @return 登陆结果
|
||||
*/
|
||||
@GetMapping("activity/registered")
|
||||
public JsonResult<?> registered(PageParam pageParam, String activityName, Integer activityType,@NotNull(message = "OpenId不能为空") String wxOpenId) {
|
||||
Page<Activity> page = activityService.registered(pageParam,activityName,activityType,wxOpenId);
|
||||
public JsonResult<?> registered(PageParam pageParam, String activityName, Integer activityType, @NotNull(message = "OpenId不能为空") String wxOpenId) {
|
||||
Page<Activity> page = activityService.registered(pageParam, activityName, activityType, wxOpenId);
|
||||
return JsonResult.success(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验用户是否收藏活动
|
||||
* @param registrationVo 活动信息
|
||||
* @return 结构
|
||||
*/
|
||||
@PostMapping("activity/collected")
|
||||
public JsonResult<?> collected(@RequestBody RegistrationVo registrationVo) {
|
||||
boolean collected = activityService.collected(registrationVo);
|
||||
return JsonResult.success(collected);
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户收藏活动
|
||||
* @param registrationVo 活动信息
|
||||
* @return 结构
|
||||
*/
|
||||
@PostMapping("activity/collect")
|
||||
public JsonResult<?> collect(@RequestBody RegistrationVo registrationVo) {
|
||||
activityService.collect(registrationVo);
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户取消收藏活动
|
||||
* @param registrationVo 活动信息
|
||||
* @return 结构
|
||||
*/
|
||||
@PostMapping("activity/collectRemove")
|
||||
public JsonResult<?> collectRemove(@RequestBody RegistrationVo registrationVo) {
|
||||
activityService.collectRemove(registrationVo);
|
||||
return JsonResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 分析查询用户收藏活动
|
||||
* @param pageParam 分页信息
|
||||
* @return 结构
|
||||
*/
|
||||
@GetMapping("activity/collectPage")
|
||||
public JsonResult<?> collectPage(PageParam pageParam,String wxOpenId) {
|
||||
Page<Activity> page = activityService.collectPage(pageParam,wxOpenId);
|
||||
return JsonResult.success(page);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 公告分页查询
|
||||
* @param pageParam 分页参数
|
||||
* @param bulletinTitle 公告标题
|
||||
* @return 分页结果
|
||||
*/
|
||||
@GetMapping("bulletin/page")
|
||||
public JsonResult<?> page(PageParam pageParam, String bulletinTitle) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(BULLETIN.BULLETIN_TITLE.like(bulletinTitle, StringUtil.hasText(bulletinTitle)));
|
||||
Page<Bulletin> page = bulletinService.page(pageParam.getPage(), queryWrapper);
|
||||
return JsonResult.success(page);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,14 @@
|
||||
package com.cdzy.activity.mapper;
|
||||
|
||||
import com.mybatisflex.core.BaseMapper;
|
||||
import com.cdzy.activity.model.UserCollectActivity;
|
||||
|
||||
/**
|
||||
* 映射层。
|
||||
*
|
||||
* @author attiya
|
||||
* @since 2025-09-23
|
||||
*/
|
||||
public interface UserCollectActivityMapper extends BaseMapper<UserCollectActivity> {
|
||||
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package com.cdzy.activity.model;
|
||||
|
||||
import com.mybatisflex.annotation.Id;
|
||||
import com.mybatisflex.annotation.KeyType;
|
||||
import com.mybatisflex.annotation.Table;
|
||||
import java.io.Serializable;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
import com.mybatisflex.core.keygen.KeyGenerators;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 实体类。
|
||||
*
|
||||
* @author attiya
|
||||
* @since 2025-09-23
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@Table("user_collect_activity")
|
||||
public class UserCollectActivity implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Id(keyType = KeyType.Generator, value = KeyGenerators.snowFlakeId)
|
||||
private Long collectId;
|
||||
|
||||
private Long activityId;
|
||||
|
||||
private Long userId;
|
||||
|
||||
}
|
||||
@ -2,6 +2,7 @@ package com.cdzy.activity.service;
|
||||
|
||||
import com.cdzy.activity.model.PageParam;
|
||||
import com.cdzy.activity.model.vo.ActivityVo;
|
||||
import com.cdzy.activity.model.vo.RegistrationVo;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
import com.mybatisflex.core.service.IService;
|
||||
import com.cdzy.activity.model.Activity;
|
||||
@ -23,4 +24,12 @@ public interface ActivityService extends IService<Activity> {
|
||||
void checkStatus();
|
||||
|
||||
Page<Activity> registered(PageParam pageParam, String activityName, Integer activityType,String wxOpenId);
|
||||
|
||||
void collectRemove(RegistrationVo registrationVo);
|
||||
|
||||
void collect(RegistrationVo registrationVo);
|
||||
|
||||
Page<Activity> collectPage(PageParam pageParam,String wxOpenId);
|
||||
|
||||
boolean collected(RegistrationVo registrationVo);
|
||||
}
|
||||
|
||||
@ -19,4 +19,6 @@ public interface UserService extends IService<User> {
|
||||
void registration(RegistrationVo registrationVo);
|
||||
|
||||
ActivityInfo activityInfo(Long activityId);
|
||||
|
||||
void cancel(RegistrationVo registrationVo);
|
||||
}
|
||||
|
||||
@ -6,10 +6,11 @@ import com.cdzy.activity.component.ImageConfig;
|
||||
import com.cdzy.activity.enums.ActivityStatus;
|
||||
import com.cdzy.activity.mapper.ActivityMapper;
|
||||
import com.cdzy.activity.mapper.ActivityUserMapper;
|
||||
import com.cdzy.activity.model.Activity;
|
||||
import com.cdzy.activity.model.ActivityUser;
|
||||
import com.cdzy.activity.model.PageParam;
|
||||
import com.cdzy.activity.mapper.UserCollectActivityMapper;
|
||||
import com.cdzy.activity.mapper.UserMapper;
|
||||
import com.cdzy.activity.model.*;
|
||||
import com.cdzy.activity.model.vo.ActivityVo;
|
||||
import com.cdzy.activity.model.vo.RegistrationVo;
|
||||
import com.cdzy.activity.service.ActivityService;
|
||||
import com.cdzy.activity.uitls.FileUtils;
|
||||
import com.mybatisflex.core.paginate.Page;
|
||||
@ -28,7 +29,8 @@ import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.cdzy.activity.model.table.ActivityTableDef.ACTIVITY;
|
||||
import static com.cdzy.activity.model.table.ActivityUserTableDef.ACTIVITY_USER;
|
||||
import static com.cdzy.activity.model.table.UserCollectActivityTableDef.USER_COLLECT_ACTIVITY;
|
||||
import static com.cdzy.activity.model.table.UserRegistrationActivityTableDef.USER_REGISTRATION_ACTIVITY;
|
||||
import static com.cdzy.activity.model.table.UserTableDef.USER;
|
||||
|
||||
/**
|
||||
@ -46,6 +48,13 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> i
|
||||
@Resource
|
||||
private ActivityUserMapper activityUserMapper;
|
||||
|
||||
@Resource
|
||||
private UserCollectActivityMapper collectActivityMapper;
|
||||
|
||||
|
||||
@Resource
|
||||
private UserMapper userMapper;
|
||||
|
||||
@Resource
|
||||
private ImageConfig imageConfig;
|
||||
|
||||
@ -172,13 +181,72 @@ public class ActivityServiceImpl extends ServiceImpl<ActivityMapper, Activity> i
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Activity> registered(PageParam pageParam, String activityName, Integer activityType,String wxOpenId) {
|
||||
public Page<Activity> registered(PageParam pageParam, String activityName, Integer activityType, String wxOpenId) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(ACTIVITY.ACTIVITY_NAME.like(activityName, StringUtil.hasText(activityName)))
|
||||
.where(ACTIVITY.ACTIVITY_TYPE.eq(activityType, Objects.nonNull(activityType)))
|
||||
.where(USER.WX_OPEN_ID.eq(wxOpenId))
|
||||
.leftJoin(ACTIVITY_USER).on(ACTIVITY_USER.ACTIVITY_ID.eq(ACTIVITY.ACTIVITY_ID))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(ACTIVITY_USER.USER_ID));
|
||||
.leftJoin(USER_REGISTRATION_ACTIVITY).on(USER_REGISTRATION_ACTIVITY.ACTIVITY_ID.eq(ACTIVITY.ACTIVITY_ID))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(USER_REGISTRATION_ACTIVITY.USER_ID));
|
||||
return activityMapper.paginate(pageParam.getPage(), queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collectRemove(RegistrationVo registrationVo) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(USER_COLLECT_ACTIVITY.ACTIVITY_ID.eq(registrationVo.getActivityId()))
|
||||
.where(USER.WX_OPEN_ID.eq(registrationVo.getWxOpenId()))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(USER_COLLECT_ACTIVITY.USER_ID));
|
||||
collectActivityMapper.deleteByQuery(queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void collect(RegistrationVo registrationVo) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(USER_COLLECT_ACTIVITY.ACTIVITY_ID.eq(registrationVo.getActivityId()))
|
||||
.where(USER.WX_OPEN_ID.eq(registrationVo.getWxOpenId()))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(USER_COLLECT_ACTIVITY.USER_ID));
|
||||
UserCollectActivity collectActivity = collectActivityMapper.selectOneByQuery(queryWrapper);
|
||||
if (collectActivity != null) {
|
||||
throw new RuntimeException("请勿重复收藏");
|
||||
}
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.where(ACTIVITY.ACTIVITY_ID.eq(registrationVo.getActivityId()));
|
||||
Activity activity = activityMapper.selectOneByQuery(queryWrapper);
|
||||
if (activity == null) {
|
||||
throw new RuntimeException("活动信息错误");
|
||||
}
|
||||
|
||||
queryWrapper.clear();
|
||||
queryWrapper.where(USER.WX_OPEN_ID.eq(registrationVo.getWxOpenId()));
|
||||
User user = userMapper.selectOneByQuery(queryWrapper);
|
||||
if (user == null) {
|
||||
throw new RuntimeException("用户信息错误");
|
||||
}
|
||||
UserCollectActivity userCollectActivity = new UserCollectActivity();
|
||||
userCollectActivity.setActivityId(registrationVo.getActivityId());
|
||||
userCollectActivity.setUserId(user.getUserId());
|
||||
collectActivityMapper.insert(userCollectActivity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Activity> collectPage(PageParam pageParam,String wxOpenId) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.select(ACTIVITY.ALL_COLUMNS)
|
||||
.where(USER.WX_OPEN_ID.eq(wxOpenId))
|
||||
.leftJoin(USER_COLLECT_ACTIVITY).on(ACTIVITY.ACTIVITY_ID.eq(USER_COLLECT_ACTIVITY.ACTIVITY_ID))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(USER_COLLECT_ACTIVITY.USER_ID));
|
||||
return activityMapper.paginate(pageParam.getPage(), queryWrapper);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean collected(RegistrationVo registrationVo) {
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(USER_COLLECT_ACTIVITY.ACTIVITY_ID.eq(registrationVo.getActivityId()))
|
||||
.where(USER.WX_OPEN_ID.eq(registrationVo.getWxOpenId()))
|
||||
.leftJoin(USER).on(USER.USER_ID.eq(USER_COLLECT_ACTIVITY.USER_ID));
|
||||
UserCollectActivity collectActivity = collectActivityMapper.selectOneByQuery(queryWrapper);
|
||||
return collectActivity==null?Boolean.FALSE:Boolean.TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -138,4 +138,28 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
}
|
||||
return activityInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(RegistrationVo registrationVo) {
|
||||
Long activityId = registrationVo.getActivityId();
|
||||
String wxOpenId = registrationVo.getWxOpenId();
|
||||
Activity activity = activityMapper.selectOneById(activityId);
|
||||
if (activity == null) {
|
||||
throw new RuntimeException("该活动不存在");
|
||||
}
|
||||
QueryWrapper queryWrapper = QueryWrapper.create()
|
||||
.where(USER.WX_OPEN_ID.eq(wxOpenId));
|
||||
User user = userMapper.selectOneByQuery(queryWrapper);
|
||||
if (user == null) {
|
||||
throw new RuntimeException("用户信息错误");
|
||||
}
|
||||
queryWrapper.clear();
|
||||
queryWrapper.where(USER_REGISTRATION_ACTIVITY.USER_ID.eq(user.getUserId()))
|
||||
.where(USER_REGISTRATION_ACTIVITY.ACTIVITY_ID.eq(activityId));
|
||||
UserRegistrationActivity userRegistrationActivity = userRegistrationActivityMapper.selectOneByQuery(queryWrapper);
|
||||
if (userRegistrationActivity == null) {
|
||||
throw new RuntimeException("用户当前未报名");
|
||||
}
|
||||
userRegistrationActivityMapper.delete(userRegistrationActivity);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,5 @@
|
||||
package com.cdzy.activity;
|
||||
|
||||
import cn.hutool.core.lang.generator.SnowflakeGenerator;
|
||||
import com.cdzy.activity.model.Staff;
|
||||
import com.cdzy.activity.service.StaffService;
|
||||
import com.mybatisflex.codegen.Generator;
|
||||
import com.mybatisflex.codegen.config.GlobalConfig;
|
||||
@ -21,7 +19,7 @@ class ActivityRegistrationApplicationTests {
|
||||
private static final String mapperPath="D:/ActivityRegistration/resources/mapper";
|
||||
private static final String packageName ="com.cdzy.activity";
|
||||
private static final String[] tables= new String[]{
|
||||
"user_registration_activity","activity_user"
|
||||
"user_collect_activity"
|
||||
};
|
||||
|
||||
@Test
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,46 @@
|
||||
package com.cdzy.activity.model.table;
|
||||
|
||||
import com.mybatisflex.core.query.QueryColumn;
|
||||
import com.mybatisflex.core.table.TableDef;
|
||||
|
||||
// Auto generate by mybatis-flex, do not modify it.
|
||||
public class UserCollectActivityTableDef extends TableDef {
|
||||
|
||||
/**
|
||||
* 实体类。
|
||||
|
||||
@author attiya
|
||||
@since 2025-09-23
|
||||
*/
|
||||
public static final UserCollectActivityTableDef USER_COLLECT_ACTIVITY = new UserCollectActivityTableDef();
|
||||
|
||||
public final QueryColumn USER_ID = new QueryColumn(this, "user_id");
|
||||
|
||||
public final QueryColumn COLLECT_ID = new QueryColumn(this, "collect_id");
|
||||
|
||||
public final QueryColumn ACTIVITY_ID = new QueryColumn(this, "activity_id");
|
||||
|
||||
/**
|
||||
* 所有字段。
|
||||
*/
|
||||
public final QueryColumn ALL_COLUMNS = new QueryColumn(this, "*");
|
||||
|
||||
/**
|
||||
* 默认字段,不包含逻辑删除或者 large 等字段。
|
||||
*/
|
||||
public final QueryColumn[] DEFAULT_COLUMNS = new QueryColumn[]{USER_ID, COLLECT_ID, ACTIVITY_ID};
|
||||
|
||||
public UserCollectActivityTableDef() {
|
||||
super("", "user_collect_activity");
|
||||
}
|
||||
|
||||
private UserCollectActivityTableDef(String schema, String name, String alisa) {
|
||||
super(schema, name, alisa);
|
||||
}
|
||||
|
||||
public UserCollectActivityTableDef as(String alias) {
|
||||
String key = getNameWithSchema() + "." + alias;
|
||||
return getCache(key, k -> new UserCollectActivityTableDef("", "user_collect_activity", alias));
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user