buyer-api/src/main/java/cn/lili/controller/lmk/ActionRecordBuyerController.java
@@ -1,20 +1,15 @@ package cn.lili.controller.lmk; import cn.lili.group.Update; import cn.lili.base.Result; import cn.lili.group.Add; import org.springframework.validation.annotation.Validated; import org.springframework.security.access.prepost.PreAuthorize; import lombok.RequiredArgsConstructor; import java.util.List; import org.springframework.validation.annotation.Validated; import javax.validation.constraints.NotEmpty; import cn.lili.modules.lmk.domain.form.ActionRecordForm; import cn.lili.modules.lmk.domain.form.ShareActionForm; import cn.lili.modules.lmk.service.ActionRecordService; import cn.lili.modules.lmk.service.ShareActionService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import cn.lili.modules.lmk.service.ActionRecordService; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.ActionRecordForm; import cn.lili.modules.lmk.domain.query.ActionRecordQuery; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; /** @@ -31,12 +26,18 @@ public class ActionRecordBuyerController { private final ActionRecordService actionRecordService; private final ShareActionService shareActionService; @PostMapping @ApiOperation(value = "添加", notes = "添加") public Result add(@RequestBody @Validated(Add.class) ActionRecordForm form) { return actionRecordService.add(form); } @PostMapping("/share") @ApiOperation(value = "添加分享", notes = "添加分享") public Result shareAdd(@RequestBody @Validated(Add.class) ShareActionForm form) { return shareActionService.add(form); } @GetMapping("/sessionId") @ApiOperation(value = "获取会话id", notes = "获取会话id") public Result grantSessionId() { framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareAction.java
New file @@ -0,0 +1,42 @@ package cn.lili.modules.lmk.domain.entity; import cn.lili.mybatis.BaseEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; /** * 用户行为分享 * * @author peng * @since 2025-09-25 */ @Data @TableName("lmk_share_action") public class ShareAction extends BaseEntity { private static final long serialVersionUID = 1L; @TableField("user_id") /** 用户id */ private String userId; @TableField("share_option") /** 分享参数 */ private String shareOption; @TableField("page_code") /** 页面编码 */ private String pageCode; @TableField("page_type") /** 页面类型 */ private String pageType; @TableField("pid") /** pid */ private Long pid; } framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareActionForm.java
New file @@ -0,0 +1,52 @@ package cn.lili.modules.lmk.domain.form; import cn.lili.group.Update; import cn.lili.group.Add; import cn.lili.base.AbsForm; import cn.lili.modules.lmk.domain.entity.ShareAction; import org.springframework.beans.BeanUtils; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import org.springframework.lang.NonNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * 用户行为分享表单 * * @author peng * @since 2025-09-25 */ @Data @ApiModel(value = "ShareAction表单", description = "用户行为分享表单") public class ShareActionForm extends AbsForm { @ApiModelProperty("用户id") private Long userId; @NotBlank(message = "分享参数不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("分享参数") private String shareOption; @NotBlank(message = "页面编码不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("页面编码") private String pageCode; @NotBlank(message = "页面类型不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("页面类型") private String pageType; @ApiModelProperty("pid") private Long pid; public static ShareAction getEntityByForm(@NonNull ShareActionForm form, ShareAction entity) { if(entity == null) { entity = new ShareAction(); } BeanUtils.copyProperties(form, entity); return entity; } } framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareActionQuery.java
New file @@ -0,0 +1,22 @@ package cn.lili.modules.lmk.domain.query; import cn.lili.base.AbsQuery; import java.util.List; import org.springframework.lang.NonNull; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** * 用户行为分享查询 * * @author peng * @since 2025-09-25 */ @Data @ApiModel(value = "ShareAction查询参数", description = "用户行为分享查询参数") public class ShareActionQuery extends AbsQuery { } framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareActionVO.java
New file @@ -0,0 +1,51 @@ package cn.lili.modules.lmk.domain.vo; import cn.lili.base.AbsVo; import cn.lili.modules.lmk.domain.entity.ShareAction; import java.util.List; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.Date; /** * 用户行为分享展示 * * @author peng * @since 2025-09-25 */ @Data @ApiModel(value = "用户行为分享响应数据", description = "用户行为分享响应数据") public class ShareActionVO extends AbsVo { /** 用户id */ @ApiModelProperty("用户id") private Long userId; /** 分享参数 */ @ApiModelProperty("分享参数") private String shareOption; /** 页面编码 */ @ApiModelProperty("页面编码") private String pageCode; /** 页面类型 */ @ApiModelProperty("页面类型") private String pageType; /** pid */ @ApiModelProperty("pid") private Long pid; public static ShareActionVO getVoByEntity(@NonNull ShareAction entity, ShareActionVO vo) { if(vo == null) { vo = new ShareActionVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } framework/src/main/java/cn/lili/modules/lmk/enums/general/UserActionPageEnums.java
@@ -16,7 +16,19 @@ ORDER_LIST("订单列表"), ORDER_DETAIL("订单详情"), ACTIVITY("活动"), PRIZE_DETAIL("抽奖活动"), CART_LIST("购物车"), TBA_BAR_MY("我的页面"), SHOPPING_SQUARE("商品广场"), ACTIVITY_LIST("活动列表"), ACTIVITY_DETAIL("活动详情"), PUBLISH_VIDEO("视频发布"), SWIPER_GOODS("滑动商品"), COUPON_CENTER("领卷中心"), MY_COUPON("我的优惠卷"), AFTER_SALE("售后列表"), APPLY_SALE("申请售后"), REFUND_ORDER("退款/退货"), GOODS_DETAILS("商品详情页面"); private final String des; framework/src/main/java/cn/lili/modules/lmk/mapper/ShareActionMapper.java
New file @@ -0,0 +1,34 @@ package cn.lili.modules.lmk.mapper; import cn.lili.modules.lmk.domain.entity.ShareAction; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.lili.modules.lmk.domain.vo.ShareActionVO; import cn.lili.modules.lmk.domain.form.ShareActionForm; import cn.lili.modules.lmk.domain.query.ShareActionQuery; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 用户行为分享 Mapper 接口 * * @author peng * @since 2025-09-25 */ @Mapper public interface ShareActionMapper extends BaseMapper<ShareAction> { /** * id查找用户行为分享 * @param id * @return */ ShareActionVO getById(String id); /** * 分页 */ IPage getPage(IPage page, @Param("query") ShareActionQuery query); } framework/src/main/java/cn/lili/modules/lmk/service/ShareActionService.java
New file @@ -0,0 +1,65 @@ package cn.lili.modules.lmk.service; import cn.lili.modules.lmk.domain.entity.ShareAction; import com.baomidou.mybatisplus.extension.service.IService; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.ShareActionForm; import cn.lili.modules.lmk.domain.query.ShareActionQuery; import java.util.List; /** * 用户行为分享 服务类 * * @author peng * @since 2025-09-25 */ public interface ShareActionService extends IService<ShareAction> { /** * 添加 * @param form * @return */ Result add(ShareActionForm form); /** * 修改 * @param form * @return */ Result update(ShareActionForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 分页查询 * @param query * @return */ Result page(ShareActionQuery query); /** * 根据id查找 * @param id * @return */ Result detail(String id); /** * 列表 * @return */ Result all(); } framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareActionServiceImpl.java
New file @@ -0,0 +1,127 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; import com.baomidou.mybatisplus.core.metadata.IPage; import cn.lili.modules.lmk.domain.entity.ShareAction; import cn.lili.modules.lmk.mapper.ShareActionMapper; import cn.lili.modules.lmk.service.ShareActionService; import cn.lili.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.lili.modules.lmk.domain.form.ShareActionForm; import cn.lili.modules.lmk.domain.vo.ShareActionVO; import cn.lili.modules.lmk.domain.query.ShareActionQuery; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import cn.lili.utils.PageUtil; import org.springframework.beans.BeanUtils; import org.springframework.util.Assert; import java.util.List; import java.util.stream.Collectors; /** * 用户行为分享 服务实现类 * * @author peng * @since 2025-09-25 */ @Service @RequiredArgsConstructor public class ShareActionServiceImpl extends ServiceImpl<ShareActionMapper, ShareAction> implements ShareActionService { private final ShareActionMapper shareActionMapper; /** * 添加 * @param form * @return */ @Override public Result add(ShareActionForm form) { AuthUser currentUser = UserContext.getCurrentUser(); if (currentUser == null) { return Result.ok(); } ShareAction entity = ShareActionForm.getEntityByForm(form, null); entity.setUserId(currentUser.getId()); baseMapper.insert(entity); return Result.ok("添加成功").data(entity.getId()); } /** * 修改 * @param form * @return */ @Override public Result update(ShareActionForm form) { ShareAction entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); baseMapper.updateById(entity); return Result.ok("修改成功"); } /** * 批量删除 * @param ids * @return */ @Override public Result remove(List<String> ids) { baseMapper.deleteBatchIds(ids); return Result.ok("删除成功"); } /** * id删除 * @param id * @return */ @Override public Result removeById(String id) { baseMapper.deleteById(id); return Result.ok("删除成功"); } /** * 分页查询 * @param query * @return */ @Override public Result page(ShareActionQuery query) { IPage<ShareActionVO> page = PageUtil.getPage(query, ShareActionVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { ShareActionVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<ShareAction> entities = baseMapper.selectList(null); List<ShareActionVO> vos = entities.stream() .map(entity -> ShareActionVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } } framework/src/main/resources/mapper/lmk/ShareActionMapper.xml
New file @@ -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="cn.lili.modules.lmk.mapper.ShareActionMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ShareActionVO"> <id column="id" property="id"/> <result column="user_id" property="userId" /> <result column="share_option" property="shareOption" /> <result column="page_code" property="pageCode" /> <result column="page_type" property="pageType" /> <result column="pid" property="pid" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT LSA.user_id, LSA.share_option, LSA.page_code, LSA.page_type, LSA.pid, LSA.id FROM lmk_share_action LSA WHERE LSA.id = #{id} AND LSA.delete_flag = 0 </select> <select id="getPage" resultMap="BaseResultMap"> SELECT LSA.user_id, LSA.share_option, LSA.page_code, LSA.page_type, LSA.pid, LSA.id FROM lmk_share_action LSA WHERE LSA.delete_flag = 0 </select> </mapper>