This commit is contained in:
@jyuhsin
2025-04-30 17:10:30 +08:00
parent 3c5c8c490e
commit 2c8c2eb36f
9 changed files with 1010 additions and 4 deletions
@@ -0,0 +1,107 @@
package com.budwk.app.client.module.activity.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.page.PageForm;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.result.Result;
import com.budwk.app.client.module.activity.service.ClientDynamicService;
import com.budwk.app.module.activity.models.ActDynamic;
import com.budwk.app.module.activity.models.ActDynamicPraise;
import com.budwk.app.web.commons.auth.satoken.StpClientUtil;
import lombok.extern.slf4j.Slf4j;
import org.nutz.aop.interceptor.ioc.TransAop;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.nutz.ioc.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.mvc.adaptor.JsonAdaptor;
import org.nutz.mvc.annotation.AdaptBy;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
/**
* @ClassName ClientDynamicController
* @Author JyuHsin
* @Date 2025/4/30 14:16
* @Version 1.0
* @Description TODO
*/
@Slf4j
@IocBean
@Ok("json:full")
@At("/client/activity/dynamic")
public class ClientDynamicController {
@Inject
private ClientDynamicService dynamicService;
@At("/list")
@AdaptBy(type = JsonAdaptor.class)
@SaCheckLogin(type = StpClientUtil.TYPE)
public Result list(@Param("pageForm") PageForm pageForm, @Param("activityId") Long activityId) {
Sql sql = Sqls.create("""
SELECT
ad.*,
cu.userName,
cu.sex,
(select count(1) from act_dynamic_praise where dynamicId = ad.id) as praiseCount,
(select count(1) from act_dynamic_praise where dynamicId = ad.id and userId = '') as selfPraiseCount
FROM
`act_dynamic` ad
LEFT JOIN client_user cu ON ad.userId = cu.id
$condition
""");
Cnd cnd = Cnd.NEW();
cnd.and("ad.activityId", "=", activityId);
cnd.desc("ad.publishTime");
sql.setCondition(cnd);
Pagination pagination = dynamicService.listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
return Result.success(pagination);
}
@At("/onHandle")
@AdaptBy(type = JsonAdaptor.class)
@SaCheckLogin(type = StpClientUtil.TYPE)
public Result onHandle(ActDynamic actDynamic) {
actDynamic.setUserId(StpClientUtil.STP.getLoginIdAsLong());
actDynamic.setPublishTime(DateUtil.now());
dynamicService.insert(actDynamic);
return Result.success();
}
@At("/praise/?")
@SaCheckLogin(type = StpClientUtil.TYPE)
public Result praise(Long id) {
int count = dynamicService.dao().count(
ActDynamicPraise.class,
Cnd.where("dynamicId", "=", id).and("userId", "=", StpClientUtil.STP.getLoginIdAsLong())
);
if(count > 0) {
dynamicService.dao().clear(
ActDynamicPraise.class,
Cnd.where("dynamicId", "=", id).and("userId", "=", StpClientUtil.STP.getLoginIdAsLong())
);
} else {
ActDynamicPraise praise = new ActDynamicPraise();
praise.setUserId(StpClientUtil.STP.getLoginIdAsLong());
praise.setDynamicId(id);
praise.setPraiseTime(DateUtil.now());
dynamicService.dao().insert(praise);
}
return Result.success();
}
@At("/onDelete/?")
@SaCheckLogin(type = StpClientUtil.TYPE)
@Aop(TransAop.READ_COMMITTED)
public Result onDelete(Long id) {
dynamicService.delete(id);
dynamicService.dao().clear(ActDynamicPraise.class, Cnd.where("dynamicId", "=", id));
return Result.success();
}
}
@@ -0,0 +1,14 @@
package com.budwk.app.client.module.activity.service;
import com.budwk.app.base.service.BaseService;
import com.budwk.app.module.activity.models.ActDynamic;
/**
* @ClassName ActHighLightsService
* @Author JyuHsin
* @Date 2025/4/30 14:17
* @Version 1.0
* @Description TODO
*/
public interface ClientDynamicService extends BaseService<ActDynamic> {
}
@@ -0,0 +1,22 @@
package com.budwk.app.client.module.activity.service.impl;
import com.budwk.app.base.service.impl.BaseServiceImpl;
import com.budwk.app.client.module.activity.service.ClientDynamicService;
import com.budwk.app.module.activity.models.ActDynamic;
import org.nutz.dao.Dao;
import org.nutz.ioc.loader.annotation.IocBean;
/**
* @ClassName ActHighLightsServiceImpl
* @Author JyuHsin
* @Date 2025/4/30 14:17
* @Version 1.0
* @Description TODO
*/
@IocBean(args = {"refer:dao"})
public class ClientDynamicServiceImpl extends BaseServiceImpl<ActDynamic> implements ClientDynamicService {
public ClientDynamicServiceImpl(Dao dao) {
super(dao);
}
}
@@ -0,0 +1,54 @@
package com.budwk.app.module.activity.models;
import com.budwk.app.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.json.JSONObject;
import org.nutz.dao.entity.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
* @ClassName ActDynamic
* @Author JyuHsin
* @Date 2025/4/30 14:13
* @Version 1.0
* @Description TODO
*/
@Data
@Comment("高光时刻")
@Table("act_dynamic")
@EqualsAndHashCode(callSuper = true)
@TableMeta("{'mysql-charset':'utf8mb4'}")
public class ActDynamic extends BaseModel {
@Id
@Comment("ID")
private Long id;
@Column
@Comment("活动ID")
@ColDefine(customType = "bigint")
private Long activityId;
@Column
@Comment("用户id")
@ColDefine(customType = "bigint")
private Long userId;
@Column
@Comment("发布内容")
@ColDefine(type = ColType.VARCHAR, width = 500)
private String content;
@Comment("发布时间")
@Column
@ColDefine(type = ColType.VARCHAR, width = 30)
private String publishTime;
@Comment("发布图片")
@Column
@ColDefine(type = ColType.MYSQL_JSON)
private List<String> files;
}
@@ -0,0 +1,40 @@
package com.budwk.app.module.activity.models;
import com.budwk.app.base.model.BaseModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.nutz.dao.entity.annotation.*;
/**
* @ClassName ActDynamicPraise
* @Author JyuHsin
* @Date 2025/4/30 14:27
* @Version 1.0
* @Description TODO
*/
@Data
@Comment("赞")
@Table("act_dynamic_praise")
@EqualsAndHashCode(callSuper = true)
@TableMeta("{'mysql-charset':'utf8mb4'}")
public class ActDynamicPraise extends BaseModel {
@Id
@Comment("ID")
private Long id;
@Column
@Comment("精彩瞬间id")
@ColDefine(customType = "bigint")
private Long dynamicId;
@Column
@Comment("用户id")
@ColDefine(customType = "bigint")
private Long userId;
@Comment("点赞时间")
@Column
@ColDefine(type = ColType.VARCHAR, width = 30)
private String praiseTime;
}