buyer-api/src/main/java/cn/lili/controller/lmk/ShareController.java
New file @@ -0,0 +1,44 @@ package cn.lili.controller.lmk; import cn.lili.base.Result; import cn.lili.group.Add; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import cn.lili.modules.lmk.domain.form.ShareForm; import cn.lili.modules.lmk.service.ShareService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * 分享记录 前端控制器 * * @author xp * @since 2025-06-16 */ @Validated @RequiredArgsConstructor @Api(value = "分享记录", tags = "分享记录管理") @RestController @RequestMapping("/buyer/lmk/share") public class ShareController { private final ShareService shareService; @PostMapping @ApiOperation(value = "添加分享", notes = "添加分享") public Result add(@RequestBody @Validated(Add.class) ShareForm form) { return shareService.add(form); } @PostMapping("/click/record") @ApiOperation(value = "添加分享访问记录", notes = "添加分享访问记录") public Result addShareClick(@RequestBody @Validated(Add.class) ShareClickRecordForm form) { return shareService.addShareClick(form); } } buyer-api/src/main/java/cn/lili/controller/passport/connect/MiniProgramBuyerController.java
@@ -1,5 +1,6 @@ package cn.lili.controller.passport.connect; import cn.lili.base.Result; import cn.lili.common.enums.ResultUtil; import cn.lili.common.security.token.Token; import cn.lili.common.vo.ResultMessage; @@ -47,6 +48,12 @@ return ResultUtil.data(this.connectService.miniProgramAutoLogin(params)); } @GetMapping("/silent-login") @ApiOperation(value = "小程序静默登录--不获取用户信息") public Result silentLogin(String code) { return this.connectService.silentLogin(code); } @GetMapping("/subscribeMessage") @ApiOperation(value = "消息订阅") public ResultMessage<List<WechatMPMessage>> autoLogin() { framework/src/main/java/cn/lili/modules/connect/service/ConnectService.java
@@ -1,5 +1,6 @@ package cn.lili.modules.connect.service; import cn.lili.base.Result; import cn.lili.cache.CachePrefix; import cn.lili.common.security.token.Token; import cn.lili.modules.connect.entity.Connect; @@ -105,4 +106,12 @@ * @param type 平台类型 */ void loginBindUser(String userId, String unionId, String type); /** * 小程序静默登录 * * @param code * @return */ Result silentLogin(String code); } framework/src/main/java/cn/lili/modules/connect/serviceimpl/ConnectServiceImpl.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.base.Result; import cn.lili.cache.Cache; import cn.lili.common.enums.ClientTypeEnum; import cn.lili.common.enums.ResultCode; @@ -81,6 +82,8 @@ */ @Autowired private RocketmqCustomProperties rocketmqCustomProperties; static String DEFAULT_PASSWORD = "111111"; @Override @Transactional(rollbackFor = Exception.class) @@ -243,6 +246,25 @@ } } @Override public Result silentLogin(String code) { JSONObject res = this.getConnect(code); String unionId = res.getStr("unionid"); String openId = res.getStr("openid"); Member user = memberService.findByUUID(openId); // 不存在就注册 if (Objects.isNull(user)) { user = new Member(); user.setUuId(openId); user.setUsername(UuidUtils.getUUID()); user.setNickName("微信用户"); user.setPassword(DEFAULT_PASSWORD); user.setFace("https://i.loli.net/2020/11/19/LyN6JF7zZRskdIe.png"); memberService.registerHandler(user); } Token token = memberTokenGenerate.createToken(user, Boolean.TRUE); return Result.ok().data(token); } /** * 第三方联合登陆 framework/src/main/java/cn/lili/modules/lmk/domain/entity/Share.java
New file @@ -0,0 +1,40 @@ package cn.lili.modules.lmk.domain.entity; import cn.lili.mybatis.BaseIdAndDeleteEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.time.LocalDateTime; import java.util.Date; /** * 分享记录 * * @author xp * @since 2025-06-16 */ @Data @TableName("lmk_share") public class Share extends BaseIdAndDeleteEntity { private static final long serialVersionUID = 1L; @TableField("share_type") /** 哪个业务的分享 */ private String shareType; @TableField("ref_id") /** 业务id */ private String refId; @TableField("share_user") /** 分享人 */ private String shareUser; @TableField("share_time") /** 分享时间 */ private Date shareTime; } framework/src/main/java/cn/lili/modules/lmk/domain/entity/ShareClickRecord.java
New file @@ -0,0 +1,35 @@ package cn.lili.modules.lmk.domain.entity; import cn.lili.mybatis.BaseIdAndDeleteEntity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; /** * 分享点击记录 * * @author xp * @since 2025-06-16 */ @Data @TableName("lmk_share_click_record") public class ShareClickRecord extends BaseIdAndDeleteEntity { private static final long serialVersionUID = 1L; @TableField("share_id") /** 分享id */ private String shareId; @TableField("user_id") /** 谁点了这个分享 */ private String userId; @TableField("click_time") /** 点击时间 */ private Date clickTime; } framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareClickRecordForm.java
New file @@ -0,0 +1,38 @@ 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.ShareClickRecord; 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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "ShareClickRecord表单", description = "分享点击记录表单") public class ShareClickRecordForm extends AbsForm { @NotBlank(message = "分享id不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("分享id") private String shareId; public static ShareClickRecord getEntityByForm(@NonNull ShareClickRecordForm form, ShareClickRecord entity) { if(entity == null) { entity = new ShareClickRecord(); } BeanUtils.copyProperties(form, entity); return entity; } } framework/src/main/java/cn/lili/modules/lmk/domain/form/ShareForm.java
New file @@ -0,0 +1,49 @@ 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.Share; 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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "Share表单", description = "分享记录表单") public class ShareForm extends AbsForm { @NotBlank(message = "业务类型不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("哪个业务的分享") private String shareType; @NotBlank(message = "业务id不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("业务id") private String refId; @NotBlank(message = "分享人不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("分享人") private String shareUser; @ApiModelProperty("分享时间") private Date shareTime; public static Share getEntityByForm(@NonNull ShareForm form, Share entity) { if(entity == null) { entity = new Share(); } BeanUtils.copyProperties(form, entity); return entity; } } framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareClickRecordQuery.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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "ShareClickRecord查询参数", description = "分享点击记录查询参数") public class ShareClickRecordQuery extends AbsQuery { } framework/src/main/java/cn/lili/modules/lmk/domain/query/ShareQuery.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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "Share查询参数", description = "分享记录查询参数") public class ShareQuery extends AbsQuery { } framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareClickRecordVO.java
New file @@ -0,0 +1,43 @@ package cn.lili.modules.lmk.domain.vo; import cn.lili.base.AbsVo; import cn.lili.modules.lmk.domain.entity.ShareClickRecord; 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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "分享点击记录响应数据", description = "分享点击记录响应数据") public class ShareClickRecordVO extends AbsVo { /** 分享id */ @ApiModelProperty("分享id") private String shareId; /** 谁点了这个分享 */ @ApiModelProperty("谁点了这个分享") private String userId; /** 点击时间 */ @ApiModelProperty("点击时间") private Date clickTime; public static ShareClickRecordVO getVoByEntity(@NonNull ShareClickRecord entity, ShareClickRecordVO vo) { if(vo == null) { vo = new ShareClickRecordVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } framework/src/main/java/cn/lili/modules/lmk/domain/vo/ShareVO.java
New file @@ -0,0 +1,47 @@ package cn.lili.modules.lmk.domain.vo; import cn.lili.base.AbsVo; import cn.lili.modules.lmk.domain.entity.Share; 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 xp * @since 2025-06-16 */ @Data @ApiModel(value = "分享记录响应数据", description = "分享记录响应数据") public class ShareVO extends AbsVo { /** 哪个业务的分享 */ @ApiModelProperty("哪个业务的分享") private String shareType; /** 业务id */ @ApiModelProperty("业务id") private String refId; /** 分享人 */ @ApiModelProperty("分享人") private String shareUser; /** 分享时间 */ @ApiModelProperty("分享时间") private Date shareTime; public static ShareVO getVoByEntity(@NonNull Share entity, ShareVO vo) { if(vo == null) { vo = new ShareVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } framework/src/main/java/cn/lili/modules/lmk/mapper/ShareClickRecordMapper.java
New file @@ -0,0 +1,34 @@ package cn.lili.modules.lmk.mapper; import cn.lili.modules.lmk.domain.entity.ShareClickRecord; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.lili.modules.lmk.domain.vo.ShareClickRecordVO; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 分享点击记录 Mapper 接口 * * @author xp * @since 2025-06-16 */ @Mapper public interface ShareClickRecordMapper extends BaseMapper<ShareClickRecord> { /** * id查找分享点击记录 * @param id * @return */ ShareClickRecordVO getById(String id); /** * 分页 */ IPage getPage(IPage page, @Param("query") ShareClickRecordQuery query); } framework/src/main/java/cn/lili/modules/lmk/mapper/ShareMapper.java
New file @@ -0,0 +1,34 @@ package cn.lili.modules.lmk.mapper; import cn.lili.modules.lmk.domain.entity.Share; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import cn.lili.modules.lmk.domain.vo.ShareVO; import cn.lili.modules.lmk.domain.form.ShareForm; import cn.lili.modules.lmk.domain.query.ShareQuery; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 分享记录 Mapper 接口 * * @author xp * @since 2025-06-16 */ @Mapper public interface ShareMapper extends BaseMapper<Share> { /** * id查找分享记录 * @param id * @return */ ShareVO getById(String id); /** * 分页 */ IPage getPage(IPage page, @Param("query") ShareQuery query); } framework/src/main/java/cn/lili/modules/lmk/service/ShareClickRecordService.java
New file @@ -0,0 +1,65 @@ package cn.lili.modules.lmk.service; import cn.lili.modules.lmk.domain.entity.ShareClickRecord; import com.baomidou.mybatisplus.extension.service.IService; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery; import java.util.List; /** * 分享点击记录 服务类 * * @author xp * @since 2025-06-16 */ public interface ShareClickRecordService extends IService<ShareClickRecord> { /** * 添加 * @param form * @return */ Result add(ShareClickRecordForm form); /** * 修改 * @param form * @return */ Result update(ShareClickRecordForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 分页查询 * @param query * @return */ Result page(ShareClickRecordQuery query); /** * 根据id查找 * @param id * @return */ Result detail(String id); /** * 列表 * @return */ Result all(); } framework/src/main/java/cn/lili/modules/lmk/service/ShareService.java
New file @@ -0,0 +1,74 @@ package cn.lili.modules.lmk.service; import cn.lili.modules.lmk.domain.entity.Share; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import com.baomidou.mybatisplus.extension.service.IService; import cn.lili.base.Result; import cn.lili.modules.lmk.domain.form.ShareForm; import cn.lili.modules.lmk.domain.query.ShareQuery; import java.util.List; /** * 分享记录 服务类 * * @author xp * @since 2025-06-16 */ public interface ShareService extends IService<Share> { /** * 添加 * @param form * @return */ Result add(ShareForm form); /** * 修改 * @param form * @return */ Result update(ShareForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 分页查询 * @param query * @return */ Result page(ShareQuery query); /** * 根据id查找 * @param id * @return */ Result detail(String id); /** * 列表 * @return */ Result all(); /** * 添加分享访问记录 * * @param form * @return */ Result addShareClick(ShareClickRecordForm form); } framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareClickRecordServiceImpl.java
New file @@ -0,0 +1,119 @@ package cn.lili.modules.lmk.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import cn.lili.modules.lmk.domain.entity.ShareClickRecord; import cn.lili.modules.lmk.mapper.ShareClickRecordMapper; import cn.lili.modules.lmk.service.ShareClickRecordService; import cn.lili.base.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import cn.lili.modules.lmk.domain.vo.ShareClickRecordVO; import cn.lili.modules.lmk.domain.query.ShareClickRecordQuery; 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 xp * @since 2025-06-16 */ @Service @RequiredArgsConstructor public class ShareClickRecordServiceImpl extends ServiceImpl<ShareClickRecordMapper, ShareClickRecord> implements ShareClickRecordService { private final ShareClickRecordMapper shareClickRecordMapper; /** * 添加 * @param form * @return */ @Override public Result add(ShareClickRecordForm form) { ShareClickRecord entity = ShareClickRecordForm.getEntityByForm(form, null); baseMapper.insert(entity); return Result.ok("添加成功"); } /** * 修改 * @param form * @return */ @Override public Result update(ShareClickRecordForm form) { ShareClickRecord 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(ShareClickRecordQuery query) { IPage<ShareClickRecordVO> page = PageUtil.getPage(query, ShareClickRecordVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { ShareClickRecordVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<ShareClickRecord> entities = baseMapper.selectList(null); List<ShareClickRecordVO> vos = entities.stream() .map(entity -> ShareClickRecordVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } } framework/src/main/java/cn/lili/modules/lmk/service/impl/ShareServiceImpl.java
New file @@ -0,0 +1,151 @@ package cn.lili.modules.lmk.service.impl; import cn.lili.common.security.context.UserContext; import cn.lili.modules.lmk.domain.entity.ShareClickRecord; import cn.lili.modules.lmk.domain.form.ShareClickRecordForm; import cn.lili.modules.lmk.service.ShareClickRecordService; import com.baomidou.mybatisplus.core.metadata.IPage; import cn.lili.modules.lmk.domain.entity.Share; import cn.lili.modules.lmk.mapper.ShareMapper; import cn.lili.modules.lmk.service.ShareService; import cn.lili.base.Result; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import cn.lili.modules.lmk.domain.form.ShareForm; import cn.lili.modules.lmk.domain.vo.ShareVO; import cn.lili.modules.lmk.domain.query.ShareQuery; 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.Date; import java.util.List; import java.util.stream.Collectors; /** * 分享记录 服务实现类 * * @author xp * @since 2025-06-16 */ @Service @RequiredArgsConstructor public class ShareServiceImpl extends ServiceImpl<ShareMapper, Share> implements ShareService { private final ShareMapper shareMapper; private final ShareClickRecordService shareClickRecordService; /** * 添加 * @param form * @return */ @Override public Result add(ShareForm form) { // 没分享过才新增 boolean exists = new LambdaQueryChainWrapper<>(baseMapper) .eq(Share::getShareType, form.getShareType()) .eq(Share::getRefId, form.getRefId()) .eq(Share::getShareUser, form.getShareUser()) .exists(); if (! exists) { Share entity = ShareForm.getEntityByForm(form, null); entity.setShareTime(new Date()); baseMapper.insert(entity); } return Result.ok(); } /** * 修改 * @param form * @return */ @Override public Result update(ShareForm form) { Share 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(ShareQuery query) { IPage<ShareVO> page = PageUtil.getPage(query, ShareVO.class); baseMapper.getPage(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { ShareVO vo = baseMapper.getById(id); Assert.notNull(vo, "记录不存在"); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<Share> entities = baseMapper.selectList(null); List<ShareVO> vos = entities.stream() .map(entity -> ShareVO.getVoByEntity(entity, null)) .collect(Collectors.toList()); return Result.ok().data(vos); } @Override public Result addShareClick(ShareClickRecordForm form) { // 没有访问过才添加 boolean exists = new LambdaQueryChainWrapper<>(shareClickRecordService.getBaseMapper()) .eq(ShareClickRecord::getUserId, UserContext.getCurrentUserId()) .eq(ShareClickRecord::getShareId, form.getShareId()) .exists(); if (! exists) { ShareClickRecord record = ShareClickRecordForm.getEntityByForm(form, null); record.setUserId(UserContext.getCurrentUserId()); record.setClickTime(new Date()); shareClickRecordService.save(record); } return Result.ok(); } } framework/src/main/java/cn/lili/modules/member/service/MemberService.java
@@ -338,4 +338,6 @@ QRLoginResultVo loginWithSession(String token); Member findByUUID(String uuid); void registerHandler(Member user); } framework/src/main/java/cn/lili/modules/member/serviceimpl/MemberServiceImpl.java
@@ -313,6 +313,7 @@ * @param member */ @Transactional @Override public void registerHandler(Member member) { member.setId(SnowFlake.getIdStr()); //保存会员 framework/src/main/java/cn/lili/mybatis/BaseIdAndDeleteEntity.java
New file @@ -0,0 +1,40 @@ package cn.lili.mybatis; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; /** * 数据库基础实体类 * * @author Chopper * @version v1.0 * @since 2020/8/20 14:34 */ @Data @JsonIgnoreProperties(value = { "handler", "fieldHandler"}) @AllArgsConstructor @NoArgsConstructor public abstract class BaseIdAndDeleteEntity implements Serializable { private static final long serialVersionUID = 1L; @TableId @ApiModelProperty(value = "唯一标识", hidden = true) private String id; @TableField(fill = FieldFill.INSERT) @ApiModelProperty(value = "删除标志 true/false 删除/未删除", hidden = true) private Boolean deleteFlag; } framework/src/main/resources/mapper/lmk/ShareClickRecordMapper.xml
New file @@ -0,0 +1,44 @@ <?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.ShareClickRecordMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ShareClickRecordVO"> <id column="id" property="id"/> <result column="share_id" property="shareId" /> <result column="user_id" property="userId" /> <result column="click_time" property="clickTime" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT LSCR.share_id, LSCR.user_id, LSCR.click_time, LSCR.id FROM lmk_share_click_record LSCR WHERE LSCR.id = #{id} AND LSCR.delete_flag = 0 </select> <select id="getPage" resultMap="BaseResultMap"> SELECT LSCR.share_id, LSCR.user_id, LSCR.click_time, LSCR.id FROM lmk_share_click_record LSCR WHERE LSCR.delete_flag = 0 </select> </mapper> framework/src/main/resources/mapper/lmk/ShareMapper.xml
New file @@ -0,0 +1,47 @@ <?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.ShareMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="cn.lili.modules.lmk.domain.vo.ShareVO"> <id column="id" property="id"/> <result column="share_type" property="shareType" /> <result column="ref_id" property="refId" /> <result column="share_user" property="shareUser" /> <result column="share_time" property="shareTime" /> </resultMap> <select id="getById" resultMap="BaseResultMap"> SELECT LS.share_type, LS.ref_id, LS.share_user, LS.share_time, LS.id FROM lmk_share LS WHERE LS.id = #{id} AND LS.delete_flag = 0 </select> <select id="getPage" resultMap="BaseResultMap"> SELECT LS.share_type, LS.ref_id, LS.share_user, LS.share_time, LS.id FROM lmk_share LS WHERE LS.delete_flag = 0 </select> </mapper>