feat(work): 添加关注和作品收藏功能
- 新增 TpFollow 和 TpWorks 表及相关实体类 - 实现关注和作品收藏的 CRUD 接口和业务逻辑 - 添加相关控制器和 Mapper 接口 - 更新 TpOrder 表,增加备用字段
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
package org.dromara.work.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.work.domain.vo.TpFollowVo;
|
||||
import org.dromara.work.domain.bo.TpFollowBo;
|
||||
import org.dromara.work.service.ITpFollowService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 关注
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/work/follow")
|
||||
public class TpFollowController extends BaseController {
|
||||
|
||||
private final ITpFollowService tpFollowService;
|
||||
|
||||
/**
|
||||
* 查询关注列表
|
||||
*/
|
||||
@SaCheckPermission("work:follow:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<TpFollowVo> list(TpFollowBo bo, PageQuery pageQuery) {
|
||||
return tpFollowService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出关注列表
|
||||
*/
|
||||
@SaCheckPermission("work:follow:export")
|
||||
@Log(title = "关注", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(TpFollowBo bo, HttpServletResponse response) {
|
||||
List<TpFollowVo> list = tpFollowService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "关注", TpFollowVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取关注详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("work:follow:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<TpFollowVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(tpFollowService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增关注
|
||||
*/
|
||||
@SaCheckPermission("work:follow:add")
|
||||
@Log(title = "关注", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody TpFollowBo bo) {
|
||||
return toAjax(tpFollowService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改关注
|
||||
*/
|
||||
@SaCheckPermission("work:follow:edit")
|
||||
@Log(title = "关注", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TpFollowBo bo) {
|
||||
return toAjax(tpFollowService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除关注
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("work:follow:remove")
|
||||
@Log(title = "关注", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(tpFollowService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
package org.dromara.work.controller;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.*;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.work.domain.vo.TpWorksVo;
|
||||
import org.dromara.work.domain.bo.TpWorksBo;
|
||||
import org.dromara.work.service.ITpWorksService;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
|
||||
/**
|
||||
* 作品收藏
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/work/works")
|
||||
public class TpWorksController extends BaseController {
|
||||
|
||||
private final ITpWorksService tpWorksService;
|
||||
|
||||
/**
|
||||
* 查询作品收藏列表
|
||||
*/
|
||||
@SaCheckPermission("work:works:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<TpWorksVo> list(TpWorksBo bo, PageQuery pageQuery) {
|
||||
return tpWorksService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出作品收藏列表
|
||||
*/
|
||||
@SaCheckPermission("work:works:export")
|
||||
@Log(title = "作品收藏", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(TpWorksBo bo, HttpServletResponse response) {
|
||||
List<TpWorksVo> list = tpWorksService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "作品收藏", TpWorksVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取作品收藏详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("work:works:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<TpWorksVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(tpWorksService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增作品收藏
|
||||
*/
|
||||
@SaCheckPermission("work:works:add")
|
||||
@Log(title = "作品收藏", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody TpWorksBo bo) {
|
||||
return toAjax(tpWorksService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改作品收藏
|
||||
*/
|
||||
@SaCheckPermission("work:works:edit")
|
||||
@Log(title = "作品收藏", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TpWorksBo bo) {
|
||||
return toAjax(tpWorksService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除作品收藏
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("work:works:remove")
|
||||
@Log(title = "作品收藏", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(tpWorksService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,124 @@
|
||||
package org.dromara.work.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.work.domain.bo.TzUserBo;
|
||||
import org.dromara.work.domain.vo.TzUserVo;
|
||||
import org.dromara.work.service.ITzUserService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2024-07-30
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/mall/user")
|
||||
public class TzUserController extends BaseController {
|
||||
|
||||
private final ITzUserService tzUserService;
|
||||
|
||||
/**
|
||||
* 查询用户列表
|
||||
*/
|
||||
@SaCheckPermission("mall:user:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<TzUserVo> list(TzUserBo bo, PageQuery pageQuery) {
|
||||
return tzUserService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出用户列表
|
||||
*/
|
||||
@SaCheckPermission("mall:user:export")
|
||||
@Log(title = "用户", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(TzUserBo bo, HttpServletResponse response) {
|
||||
List<TzUserVo> list = tzUserService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "用户", TzUserVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户详细信息
|
||||
*
|
||||
* @param userId 主键
|
||||
*/
|
||||
@SaCheckPermission("mall:user:query")
|
||||
@GetMapping("/{userId}")
|
||||
public R<TzUserVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long userId) {
|
||||
return R.ok(tzUserService.queryById(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启设计师开关
|
||||
*
|
||||
* @param userPhone 主键
|
||||
*/
|
||||
@SaCheckPermission("mall:user:switch")
|
||||
@PostMapping("/switch")
|
||||
@Parameters({
|
||||
@Parameter(name = "userPhone", description = "手机号码", required = true),
|
||||
@Parameter(name = "status", description = "状态 1-开启 2-关闭", required = true)
|
||||
})
|
||||
public R<Void> getInfo(@RequestParam(value = "userPhone") String userPhone, @RequestParam(value = "status") Integer status) {
|
||||
return toAjax(tzUserService.queryByUserPhone(userPhone,status));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 新增用户
|
||||
*/
|
||||
@SaCheckPermission("mall:user:add")
|
||||
@Log(title = "用户", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody TzUserBo bo) {
|
||||
return toAjax(tzUserService.insertByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户
|
||||
*/
|
||||
@SaCheckPermission("mall:user:edit")
|
||||
@Log(title = "用户", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody TzUserBo bo) {
|
||||
return toAjax(tzUserService.updateByBo(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除用户
|
||||
*
|
||||
* @param userIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("mall:user:remove")
|
||||
@Log(title = "用户", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{userIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable String[] userIds) {
|
||||
return toAjax(tzUserService.deleteWithValidByIds(List.of(userIds), true));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package org.dromara.work.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 关注对象 tp_follow
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("tp_follow")
|
||||
public class TpFollow {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 被关注用户ID
|
||||
*/
|
||||
private Long toUserId;
|
||||
|
||||
|
||||
}
|
||||
@@ -220,6 +220,21 @@ public class TpOrder {
|
||||
*/
|
||||
private Long skid;
|
||||
|
||||
/**
|
||||
* 备用字段1
|
||||
*/
|
||||
private String byOne;
|
||||
|
||||
/**
|
||||
* 备用字段2
|
||||
*/
|
||||
private String byTwo;
|
||||
|
||||
/**
|
||||
* 备用字段3
|
||||
*/
|
||||
private String byThree;
|
||||
|
||||
/**
|
||||
* 接待客服名称
|
||||
*/
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package org.dromara.work.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 作品收藏对象 tp_works
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("tp_works")
|
||||
public class TpWorks {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 作品ID
|
||||
*/
|
||||
private Long pictureId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,201 @@
|
||||
package org.dromara.work.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 用户对象 tz_user
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2024-12-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@TableName("tz_user")
|
||||
public class TzUser {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@TableId(value = "user_id")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 真实姓名
|
||||
*/
|
||||
private String realName;
|
||||
|
||||
/**
|
||||
* 用户邮箱
|
||||
*/
|
||||
private String userMail;
|
||||
|
||||
/**
|
||||
* 登录密码
|
||||
*/
|
||||
private String loginPassword;
|
||||
|
||||
/**
|
||||
* 支付密码
|
||||
*/
|
||||
private String payPassword;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
private String userMobile;
|
||||
|
||||
/**
|
||||
* 身份证号码
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 身份证正面
|
||||
*/
|
||||
private String frontCard;
|
||||
|
||||
/**
|
||||
* 身份证反面
|
||||
*/
|
||||
private String reverseCard;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
private BigDecimal balance;
|
||||
|
||||
/**
|
||||
* 抵扣金额
|
||||
*/
|
||||
private BigDecimal deductionFee;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private Date modifyTime;
|
||||
|
||||
/**
|
||||
* 注册时间
|
||||
*/
|
||||
private Date userRegtime;
|
||||
|
||||
/**
|
||||
* 注册IP
|
||||
*/
|
||||
private String userRegip;
|
||||
|
||||
/**
|
||||
* 最后登录时间
|
||||
*/
|
||||
private Date userLasttime;
|
||||
|
||||
/**
|
||||
* 最后登录IP
|
||||
*/
|
||||
private String userLastip;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String userMemo;
|
||||
|
||||
/**
|
||||
* M(男) or F(女)
|
||||
*/
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 例如:2009-11-27
|
||||
*/
|
||||
private String birthDate;
|
||||
|
||||
/**
|
||||
* 头像图片路径
|
||||
*/
|
||||
private String pic;
|
||||
|
||||
/**
|
||||
* 状态 1 正常 0 无效
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 用户积分
|
||||
*/
|
||||
private Long score;
|
||||
|
||||
/**
|
||||
* 微信openId
|
||||
*/
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 是否设计师 1:是 0:否
|
||||
*/
|
||||
private Integer isDesigner;
|
||||
|
||||
/**
|
||||
* 设计师认证信息
|
||||
*/
|
||||
private String sjsJson;
|
||||
|
||||
/**
|
||||
* 设计师审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
private Integer sjsFlag;
|
||||
|
||||
/**
|
||||
* 实名审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
private Integer examineFlag;
|
||||
|
||||
/**
|
||||
* 价格开关是否打开 1:打开 0:关闭
|
||||
*/
|
||||
private Integer priceFlag;
|
||||
|
||||
/**
|
||||
* 是否是会员 1:是 0:否
|
||||
*/
|
||||
private Integer isMember;
|
||||
|
||||
/**
|
||||
* 会员有效期结束
|
||||
*/
|
||||
private Date validTo;
|
||||
|
||||
/**
|
||||
* 调价比例
|
||||
*/
|
||||
private String ratio;
|
||||
|
||||
/**
|
||||
* 拉卡拉用户ID
|
||||
*/
|
||||
private String custId;
|
||||
|
||||
/**
|
||||
* 证件起止日期
|
||||
*/
|
||||
private String certExpirationDate;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.dromara.work.domain.bo;
|
||||
|
||||
import org.dromara.work.domain.TpFollow;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 关注业务对象 tp_follow
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = TpFollow.class, reverseConvertGenerate = false)
|
||||
public class TpFollowBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotNull(message = "id不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 被关注用户ID
|
||||
*/
|
||||
@NotNull(message = "被关注用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long toUserId;
|
||||
|
||||
|
||||
}
|
||||
@@ -301,4 +301,19 @@ public class TpOrderBo extends BaseEntity {
|
||||
*/
|
||||
private int kfOrjs;
|
||||
|
||||
/**
|
||||
* 备用字段1
|
||||
*/
|
||||
private String byOne;
|
||||
|
||||
/**
|
||||
* 备用字段2
|
||||
*/
|
||||
private String byTwo;
|
||||
|
||||
/**
|
||||
* 备用字段3
|
||||
*/
|
||||
private String byThree;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.dromara.work.domain.bo;
|
||||
|
||||
import org.dromara.work.domain.TpWorks;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
|
||||
/**
|
||||
* 作品收藏业务对象 tp_works
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = TpWorks.class, reverseConvertGenerate = false)
|
||||
public class TpWorksBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@NotNull(message = "id不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 作品ID
|
||||
*/
|
||||
@NotNull(message = "作品ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long pictureId;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,210 @@
|
||||
package org.dromara.work.domain.bo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.work.domain.TzUser;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 用户业务对象 tz_user
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2024-12-09
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@AutoMapper(target = TzUser.class, reverseConvertGenerate = false)
|
||||
public class TzUserBo {
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@NotNull(message = "ID不能为空", groups = { EditGroup.class })
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 真实姓名
|
||||
*/
|
||||
private String realName;
|
||||
|
||||
/**
|
||||
* 用户邮箱
|
||||
*/
|
||||
private String userMail;
|
||||
|
||||
/**
|
||||
* 登录密码
|
||||
*/
|
||||
private String loginPassword;
|
||||
|
||||
/**
|
||||
* 支付密码
|
||||
*/
|
||||
private String payPassword;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
private String userMobile;
|
||||
|
||||
/**
|
||||
* 身份证号码
|
||||
*/
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 身份证正面
|
||||
*/
|
||||
private String frontCard;
|
||||
|
||||
/**
|
||||
* 身份证反面
|
||||
*/
|
||||
private String reverseCard;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
private BigDecimal balance;
|
||||
|
||||
/**
|
||||
* 抵扣金额
|
||||
*/
|
||||
private BigDecimal deductionFee;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
private Date modifyTime;
|
||||
|
||||
/**
|
||||
* 注册时间
|
||||
*/
|
||||
private Date userRegtime;
|
||||
|
||||
/**
|
||||
* 注册IP
|
||||
*/
|
||||
private String userRegip;
|
||||
|
||||
/**
|
||||
* 最后登录时间
|
||||
*/
|
||||
private Date userLasttime;
|
||||
|
||||
/**
|
||||
* 最后登录IP
|
||||
*/
|
||||
private String userLastip;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String userMemo;
|
||||
|
||||
/**
|
||||
* M(男) or F(女)
|
||||
*/
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 例如:2009-11-27
|
||||
*/
|
||||
private String birthDate;
|
||||
|
||||
/**
|
||||
* 头像图片路径
|
||||
*/
|
||||
private String pic;
|
||||
|
||||
/**
|
||||
* 状态 1 正常 0 无效
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 用户积分
|
||||
*/
|
||||
private Long score;
|
||||
|
||||
/**
|
||||
* 微信openId
|
||||
*/
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 是否设计师 1:是 0:否
|
||||
*/
|
||||
private Integer isDesigner;
|
||||
|
||||
/**
|
||||
* 设计师认证信息
|
||||
*/
|
||||
private String sjsJson;
|
||||
|
||||
/**
|
||||
* 设计师审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
private Integer sjsFlag;
|
||||
|
||||
/**
|
||||
* 实名审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
private Integer examineFlag;
|
||||
|
||||
/**
|
||||
* 价格开关是否打开 1:打开 0:关闭
|
||||
*/
|
||||
private Integer priceFlag;
|
||||
|
||||
/**
|
||||
* 是否是会员 1:是 0:否
|
||||
*/
|
||||
private Integer isMember;
|
||||
|
||||
/**
|
||||
* 会员码
|
||||
*/
|
||||
private String userCode;
|
||||
|
||||
/**
|
||||
* 会员有效期结束
|
||||
*/
|
||||
private Date validTo;
|
||||
|
||||
/**
|
||||
* 调价比例
|
||||
*/
|
||||
private String ratio;
|
||||
|
||||
/**
|
||||
* 拉卡拉用户ID
|
||||
*/
|
||||
private String custId;
|
||||
|
||||
/**
|
||||
* 证件起止日期
|
||||
*/
|
||||
private String certExpirationDate;
|
||||
|
||||
/**
|
||||
* 请求参数
|
||||
*/
|
||||
@JsonInclude(JsonInclude.Include.NON_EMPTY)
|
||||
@TableField(exist = false)
|
||||
private Map<String, Object> params = new HashMap<>();
|
||||
}
|
||||
@@ -252,4 +252,19 @@ public class CustomerOrderVo implements Serializable {
|
||||
*/
|
||||
private BigDecimal gpay;
|
||||
|
||||
/**
|
||||
* 备用字段1
|
||||
*/
|
||||
private String byOne;
|
||||
|
||||
/**
|
||||
* 备用字段2
|
||||
*/
|
||||
private String byTwo;
|
||||
|
||||
/**
|
||||
* 备用字段3
|
||||
*/
|
||||
private String byThree;
|
||||
|
||||
}
|
||||
|
||||
@@ -194,4 +194,19 @@ public class SkillOrderVo implements Serializable {
|
||||
@ExcelProperty(value = "技术已付款")
|
||||
private BigDecimal jsPayPrice;
|
||||
|
||||
/**
|
||||
* 备用字段1
|
||||
*/
|
||||
private String byOne;
|
||||
|
||||
/**
|
||||
* 备用字段2
|
||||
*/
|
||||
private String byTwo;
|
||||
|
||||
/**
|
||||
* 备用字段3
|
||||
*/
|
||||
private String byThree;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
package org.dromara.work.domain.vo;
|
||||
|
||||
import org.dromara.system.domain.SysUser;
|
||||
import org.dromara.system.domain.vo.SysUserVo;
|
||||
import org.dromara.work.domain.TpFollow;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 关注视图对象 tp_follow
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = TpFollow.class)
|
||||
public class TpFollowVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 被关注用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "被关注用户ID")
|
||||
private Long toUserId;
|
||||
|
||||
/**
|
||||
* 被关注用户对象
|
||||
*/
|
||||
@ExcelProperty(value = "被关注用户对象")
|
||||
private SysUser toUser;
|
||||
|
||||
|
||||
}
|
||||
@@ -307,4 +307,19 @@ public class TpOrderVo implements Serializable {
|
||||
*/
|
||||
private String timestamp;
|
||||
|
||||
/**
|
||||
* 备用字段1
|
||||
*/
|
||||
private String byOne;
|
||||
|
||||
/**
|
||||
* 备用字段2
|
||||
*/
|
||||
private String byTwo;
|
||||
|
||||
/**
|
||||
* 备用字段3
|
||||
*/
|
||||
private String byThree;
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package org.dromara.work.domain.vo;
|
||||
|
||||
import org.dromara.system.domain.SysPicture;
|
||||
import org.dromara.work.domain.TpWorks;
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 作品收藏视图对象 tp_works
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = TpWorks.class)
|
||||
public class TpWorksVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 作品ID
|
||||
*/
|
||||
@ExcelProperty(value = "作品ID")
|
||||
private Long pictureId;
|
||||
|
||||
/**
|
||||
* 作品对象
|
||||
*/
|
||||
@ExcelProperty(value = "作品对象")
|
||||
private SysPicture picture;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,245 @@
|
||||
package org.dromara.work.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.work.domain.TzUser;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 用户视图对象 tz_user
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2024-12-09
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = TzUser.class)
|
||||
public class TzUserVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@ExcelProperty(value = "ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 用户昵称
|
||||
*/
|
||||
@ExcelProperty(value = "用户昵称")
|
||||
private String nickName;
|
||||
|
||||
/**
|
||||
* 真实姓名
|
||||
*/
|
||||
@ExcelProperty(value = "真实姓名")
|
||||
private String realName;
|
||||
|
||||
/**
|
||||
* 用户邮箱
|
||||
*/
|
||||
@ExcelProperty(value = "用户邮箱")
|
||||
private String userMail;
|
||||
|
||||
/**
|
||||
* 登录密码
|
||||
*/
|
||||
@ExcelProperty(value = "登录密码")
|
||||
private String loginPassword;
|
||||
|
||||
/**
|
||||
* 支付密码
|
||||
*/
|
||||
@ExcelProperty(value = "支付密码")
|
||||
private String payPassword;
|
||||
|
||||
/**
|
||||
* 手机号码
|
||||
*/
|
||||
@ExcelProperty(value = "手机号码")
|
||||
private String userMobile;
|
||||
|
||||
/**
|
||||
* 身份证号码
|
||||
*/
|
||||
@ExcelProperty(value = "身份证号码")
|
||||
private String idCard;
|
||||
|
||||
/**
|
||||
* 身份证正面
|
||||
*/
|
||||
@ExcelProperty(value = "身份证正面")
|
||||
private String frontCard;
|
||||
|
||||
/**
|
||||
* 身份证反面
|
||||
*/
|
||||
@ExcelProperty(value = "身份证反面")
|
||||
private String reverseCard;
|
||||
|
||||
/**
|
||||
* 余额
|
||||
*/
|
||||
@ExcelProperty(value = "余额")
|
||||
private BigDecimal balance;
|
||||
|
||||
/**
|
||||
* 抵扣金额
|
||||
*/
|
||||
@ExcelProperty(value = "抵扣金额")
|
||||
private BigDecimal deductionFee;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@ExcelProperty(value = "修改时间")
|
||||
private Date modifyTime;
|
||||
|
||||
/**
|
||||
* 注册时间
|
||||
*/
|
||||
@ExcelProperty(value = "注册时间")
|
||||
private Date userRegtime;
|
||||
|
||||
/**
|
||||
* 注册IP
|
||||
*/
|
||||
@ExcelProperty(value = "注册IP")
|
||||
private String userRegip;
|
||||
|
||||
/**
|
||||
* 最后登录时间
|
||||
*/
|
||||
@ExcelProperty(value = "最后登录时间")
|
||||
private Date userLasttime;
|
||||
|
||||
/**
|
||||
* 最后登录IP
|
||||
*/
|
||||
@ExcelProperty(value = "最后登录IP")
|
||||
private String userLastip;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String userMemo;
|
||||
|
||||
/**
|
||||
* M(男) or F(女)
|
||||
*/
|
||||
@ExcelProperty(value = "M(男) or F(女)")
|
||||
private String sex;
|
||||
|
||||
/**
|
||||
* 例如:2009-11-27
|
||||
*/
|
||||
@ExcelProperty(value = "例如:2009-11-27")
|
||||
private String birthDate;
|
||||
|
||||
/**
|
||||
* 头像图片路径
|
||||
*/
|
||||
@ExcelProperty(value = "头像图片路径")
|
||||
private String pic;
|
||||
|
||||
/**
|
||||
* 状态 1 正常 0 无效
|
||||
*/
|
||||
@ExcelProperty(value = "状态 1 正常 0 无效")
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 用户积分
|
||||
*/
|
||||
@ExcelProperty(value = "用户积分")
|
||||
private Long score;
|
||||
|
||||
/**
|
||||
* 微信openId
|
||||
*/
|
||||
@ExcelProperty(value = "微信openId")
|
||||
private String openId;
|
||||
|
||||
/**
|
||||
* 是否设计师 1:是 0:否
|
||||
*/
|
||||
@ExcelProperty(value = "是否设计师 1:是 0:否")
|
||||
private Integer isDesigner;
|
||||
|
||||
/**
|
||||
* 设计师认证信息
|
||||
*/
|
||||
@ExcelProperty(value = "设计师认证信息")
|
||||
private String sjsJson;
|
||||
|
||||
/**
|
||||
* 设计师审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
@ExcelProperty(value = "设计师审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝")
|
||||
private Integer sjsFlag;
|
||||
|
||||
/**
|
||||
* 实名审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝
|
||||
*/
|
||||
@ExcelProperty(value = "实名审核状态 1:未认证 2:待审核 3:已通过 4:已拒绝")
|
||||
private Integer examineFlag;
|
||||
|
||||
/**
|
||||
* 价格开关是否打开 1:打开 0:关闭
|
||||
*/
|
||||
@ExcelProperty(value = "价格开关是否打开 1:打开 0:关闭")
|
||||
private Integer priceFlag;
|
||||
|
||||
/**
|
||||
* 是否是会员 1:是 0:否
|
||||
*/
|
||||
@ExcelProperty(value = "是否是会员 1:是 0:否")
|
||||
private Integer isMember;
|
||||
|
||||
/**
|
||||
* 会员有效期结束
|
||||
*/
|
||||
@ExcelProperty(value = "会员有效期结束")
|
||||
private Date validTo;
|
||||
|
||||
/**
|
||||
* 调价比例
|
||||
*/
|
||||
@ExcelProperty(value = "调价比例")
|
||||
private String ratio;
|
||||
|
||||
/**
|
||||
* 拉卡拉用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "拉卡拉用户ID")
|
||||
private String custId;
|
||||
|
||||
/**
|
||||
* 证件起止日期
|
||||
*/
|
||||
@ExcelProperty(value = "证件起止日期")
|
||||
private String certExpirationDate;
|
||||
|
||||
/**
|
||||
* 订单数量
|
||||
*/
|
||||
@ExcelProperty(value = "订单数量")
|
||||
private Long orderNum;
|
||||
|
||||
/**
|
||||
* 订单总金额
|
||||
*/
|
||||
@ExcelProperty(value = "订单总金额")
|
||||
private BigDecimal orderTotal;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.dromara.work.mapper;
|
||||
|
||||
import org.dromara.work.domain.TpFollow;
|
||||
import org.dromara.work.domain.vo.TpFollowVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 关注Mapper接口
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
public interface TpFollowMapper extends BaseMapperPlus<TpFollow, TpFollowVo> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.dromara.work.mapper;
|
||||
|
||||
import org.dromara.work.domain.TpWorks;
|
||||
import org.dromara.work.domain.vo.TpWorksVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 作品收藏Mapper接口
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
public interface TpWorksMapper extends BaseMapperPlus<TpWorks, TpWorksVo> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package org.dromara.work.mapper;
|
||||
|
||||
import com.github.yulichang.base.MPJBaseMapper;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
import org.dromara.work.domain.TzUser;
|
||||
import org.dromara.work.domain.vo.TzUserVo;
|
||||
|
||||
/**
|
||||
* 用户Mapper接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2024-07-30
|
||||
*/
|
||||
public interface TzUserMapper extends BaseMapperPlus<TzUser, TzUserVo>, MPJBaseMapper<TzUser> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package org.dromara.work.service;
|
||||
|
||||
import org.dromara.work.domain.vo.TpFollowVo;
|
||||
import org.dromara.work.domain.bo.TpFollowBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 关注Service接口
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
public interface ITpFollowService {
|
||||
|
||||
/**
|
||||
* 查询关注
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 关注
|
||||
*/
|
||||
TpFollowVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询关注列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 关注分页列表
|
||||
*/
|
||||
TableDataInfo<TpFollowVo> queryPageList(TpFollowBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的关注列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 关注列表
|
||||
*/
|
||||
List<TpFollowVo> queryList(TpFollowBo bo);
|
||||
|
||||
/**
|
||||
* 新增关注
|
||||
*
|
||||
* @param bo 关注
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(TpFollowBo bo);
|
||||
|
||||
/**
|
||||
* 修改关注
|
||||
*
|
||||
* @param bo 关注
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(TpFollowBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除关注信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 查询关注
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 关注
|
||||
*/
|
||||
TpFollowVo queryByTpFollow(TpFollowBo bo);
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package org.dromara.work.service;
|
||||
|
||||
import org.dromara.work.domain.vo.TpWorksVo;
|
||||
import org.dromara.work.domain.bo.TpWorksBo;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 作品收藏Service接口
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
public interface ITpWorksService {
|
||||
|
||||
/**
|
||||
* 查询作品收藏
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 作品收藏
|
||||
*/
|
||||
TpWorksVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询作品收藏列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 作品收藏分页列表
|
||||
*/
|
||||
TableDataInfo<TpWorksVo> queryPageList(TpWorksBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的作品收藏列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 作品收藏列表
|
||||
*/
|
||||
List<TpWorksVo> queryList(TpWorksBo bo);
|
||||
|
||||
/**
|
||||
* 新增作品收藏
|
||||
*
|
||||
* @param bo 作品收藏
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(TpWorksBo bo);
|
||||
|
||||
/**
|
||||
* 修改作品收藏
|
||||
*
|
||||
* @param bo 作品收藏
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(TpWorksBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除作品收藏信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 根据条件查询作品收藏
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 作品收藏
|
||||
*/
|
||||
TpWorksVo queryByTpWorks(TpWorksBo bo);
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package org.dromara.work.service;
|
||||
|
||||
import com.github.yulichang.base.MPJBaseService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.work.domain.TzUser;
|
||||
import org.dromara.work.domain.bo.TzUserBo;
|
||||
import org.dromara.work.domain.vo.TzUserVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 用户Service接口
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2024-07-30
|
||||
*/
|
||||
public interface ITzUserService extends MPJBaseService<TzUser> {
|
||||
|
||||
/**
|
||||
* 查询用户
|
||||
*
|
||||
* @param userId 主键
|
||||
* @return 用户
|
||||
*/
|
||||
TzUserVo queryById(Long userId);
|
||||
|
||||
/**
|
||||
* 分页查询用户列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 用户分页列表
|
||||
*/
|
||||
TableDataInfo<TzUserVo> queryPageList(TzUserBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的用户列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 用户列表
|
||||
*/
|
||||
List<TzUserVo> queryList(TzUserBo bo);
|
||||
|
||||
/**
|
||||
* 新增用户
|
||||
*
|
||||
* @param bo 用户
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
Boolean insertByBo(TzUserBo bo);
|
||||
|
||||
/**
|
||||
* 修改用户
|
||||
*
|
||||
* @param bo 用户
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(TzUserBo bo);
|
||||
|
||||
/**
|
||||
* 校验并批量删除用户信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 开启设计师开关
|
||||
* @param userPhone
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
Boolean queryByUserPhone(String userPhone, Integer status);
|
||||
|
||||
/**
|
||||
* 提交实名认证
|
||||
*
|
||||
* @param bo 用户认证信息
|
||||
* @return 是否提交成功
|
||||
*/
|
||||
Boolean submitAuth(TzUserBo bo);
|
||||
|
||||
/**
|
||||
* 提交设计师认证
|
||||
*/
|
||||
Boolean submitSjsAuth(TzUserBo bo);
|
||||
|
||||
/**
|
||||
* 查询用户下单排行榜列表
|
||||
*/
|
||||
// TableDataInfo<TzUserVo> queryPageListChart(TzUserBo bo, PageQuery pageQuery);
|
||||
|
||||
}
|
||||
@@ -194,6 +194,14 @@ public class TpClientServiceImpl extends MPJBaseServiceImpl<TpClientMapper,TpCli
|
||||
}
|
||||
TpClient client = baseMapper.selectOne(new LambdaQueryWrapper<TpClient>().eq(TpClient::getPhone,bo.getPhone()));
|
||||
|
||||
if(ObjectUtil.isNotNull(client)){
|
||||
//判断客服是否已经绑定了客户
|
||||
boolean exist = staffMapper.exists(new LambdaQueryWrapper<TpClientStaff>().eq(TpClientStaff::getSid,loginUser.getUserId()).eq(TpClientStaff::getKid,client.getId()));
|
||||
if(exist){
|
||||
throw new ServiceException("此客户您已添加,请勿重复添加");
|
||||
}
|
||||
}
|
||||
|
||||
if(LoginHelper.isSuperAdmin()){
|
||||
if(ObjectUtil.isNotNull(client)){
|
||||
throw new ServiceException("手机号码已存在");
|
||||
|
||||
@@ -0,0 +1,149 @@
|
||||
package org.dromara.work.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.system.mapper.SysUserMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.work.domain.bo.TpFollowBo;
|
||||
import org.dromara.work.domain.vo.TpFollowVo;
|
||||
import org.dromara.work.domain.TpFollow;
|
||||
import org.dromara.work.mapper.TpFollowMapper;
|
||||
import org.dromara.work.service.ITpFollowService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 关注Service业务层处理
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class TpFollowServiceImpl implements ITpFollowService {
|
||||
|
||||
private final TpFollowMapper baseMapper;
|
||||
|
||||
private final SysUserMapper sysUserMapper;
|
||||
|
||||
/**
|
||||
* 查询关注
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 关注
|
||||
*/
|
||||
@Override
|
||||
public TpFollowVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询关注列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 关注分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<TpFollowVo> queryPageList(TpFollowBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<TpFollow> lqw = buildQueryWrapper(bo);
|
||||
Page<TpFollowVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
//获取用户对象
|
||||
result.getRecords().forEach(
|
||||
r -> r.setToUser(sysUserMapper.selectById(r.getToUserId()))
|
||||
);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的关注列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 关注列表
|
||||
*/
|
||||
@Override
|
||||
public List<TpFollowVo> queryList(TpFollowBo bo) {
|
||||
LambdaQueryWrapper<TpFollow> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<TpFollow> buildQueryWrapper(TpFollowBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<TpFollow> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(TpFollow::getId);
|
||||
lqw.eq(bo.getUserId() != null, TpFollow::getUserId, bo.getUserId());
|
||||
lqw.eq(bo.getToUserId() != null, TpFollow::getToUserId, bo.getToUserId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增关注
|
||||
*
|
||||
* @param bo 关注
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(TpFollowBo bo) {
|
||||
TpFollow add = MapstructUtils.convert(bo, TpFollow.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改关注
|
||||
*
|
||||
* @param bo 关注
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(TpFollowBo bo) {
|
||||
TpFollow update = MapstructUtils.convert(bo, TpFollow.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(TpFollow entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除关注信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询关注
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 关注
|
||||
*/
|
||||
@Override
|
||||
public TpFollowVo queryByTpFollow(TpFollowBo bo) {
|
||||
return baseMapper.selectVoOne(new LambdaQueryWrapper<TpFollow>().eq(TpFollow::getUserId, bo.getUserId()).eq(TpFollow::getToUserId, bo.getToUserId()));
|
||||
}
|
||||
}
|
||||
@@ -273,10 +273,10 @@ public class TpOrderServiceImpl extends MPJBaseServiceImpl<TpOrderMapper,TpOrder
|
||||
wrapper.selectAs(TpClientStaff::getName,CustomerOrderVo::getCname);
|
||||
}else {
|
||||
if (loginUser.getIdentity() == 3 || loginUser.getIdentity() == 1){
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getRemark,TpOrder::getType,TpOrder::getAddTime,TpOrder::getNum,TpOrder::getJsRemark,TpOrder::getPrice,TpOrder::getPayState,TpOrder::getPayPrice,TpOrder::getEndPrice,TpOrder::getKfpay,TpOrder::getState,TpOrder::getGjPrice,TpOrder::getGpay,TpOrder::getIsCd,TpOrder::getDtTime,TpOrder::getSid);
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getRemark,TpOrder::getType,TpOrder::getAddTime,TpOrder::getNum,TpOrder::getJsRemark,TpOrder::getPrice,TpOrder::getPayState,TpOrder::getPayPrice,TpOrder::getEndPrice,TpOrder::getKfpay,TpOrder::getState,TpOrder::getGjPrice,TpOrder::getGpay,TpOrder::getIsCd,TpOrder::getDtTime,TpOrder::getSid,TpOrder::getByOne,TpOrder::getByTwo,TpOrder::getByThree);
|
||||
wrapper.selectAs(TpClientStaff::getName,CustomerOrderVo::getCname);
|
||||
}else {
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getRemark,TpOrder::getType,TpOrder::getAddTime,TpOrder::getNum,TpOrder::getJsRemark,TpOrder::getPrice,TpOrder::getPayState,TpOrder::getPayPrice,TpOrder::getEndPrice,TpOrder::getGjPrice,TpOrder::getGpay,TpOrder::getIsCd,TpOrder::getState,TpOrder::getDtTime);
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getRemark,TpOrder::getType,TpOrder::getAddTime,TpOrder::getNum,TpOrder::getJsRemark,TpOrder::getPrice,TpOrder::getPayState,TpOrder::getPayPrice,TpOrder::getEndPrice,TpOrder::getGjPrice,TpOrder::getGpay,TpOrder::getIsCd,TpOrder::getState,TpOrder::getDtTime,TpOrder::getByOne,TpOrder::getByTwo,TpOrder::getByThree);
|
||||
wrapper.selectAs(TpClientStaff::getName,CustomerOrderVo::getCname);
|
||||
}
|
||||
}
|
||||
@@ -319,7 +319,7 @@ public class TpOrderServiceImpl extends MPJBaseServiceImpl<TpOrderMapper,TpOrder
|
||||
if(LoginHelper.isSuperAdmin()){
|
||||
wrapper.selectAll(TpOrder.class);
|
||||
}else {
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getType,TpOrder::getNum,TpOrder::getAddTime,TpOrder::getRemark,TpOrder::getJsRemark,TpOrder::getPayState,TpOrder::getJsPrice,TpOrder::getJsPayPrice,TpOrder::getState,TpOrder::getDtTime);
|
||||
wrapper.select(TpOrder::getId,TpOrder::getOrderId,TpOrder::getType,TpOrder::getNum,TpOrder::getAddTime,TpOrder::getRemark,TpOrder::getJsRemark,TpOrder::getPayState,TpOrder::getJsPrice,TpOrder::getJsPayPrice,TpOrder::getState,TpOrder::getDtTime,TpOrder::getByOne,TpOrder::getByTwo,TpOrder::getByThree);
|
||||
}
|
||||
wrapper.selectAs("s.nick_name",SkillOrderVo::getSname)
|
||||
.selectAs("f.nick_name",SkillOrderVo::getFname)
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
package org.dromara.work.service.impl;
|
||||
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.system.mapper.SysPictureMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.dromara.work.domain.bo.TpWorksBo;
|
||||
import org.dromara.work.domain.vo.TpWorksVo;
|
||||
import org.dromara.work.domain.TpWorks;
|
||||
import org.dromara.work.mapper.TpWorksMapper;
|
||||
import org.dromara.work.service.ITpWorksService;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 作品收藏Service业务层处理
|
||||
*
|
||||
* @author Maosw
|
||||
* @date 2025-07-23
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class TpWorksServiceImpl implements ITpWorksService {
|
||||
|
||||
private final TpWorksMapper baseMapper;
|
||||
|
||||
private final SysPictureMapper sysPictureMapper;
|
||||
|
||||
/**
|
||||
* 查询作品收藏
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 作品收藏
|
||||
*/
|
||||
@Override
|
||||
public TpWorksVo queryById(Long id){
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询作品收藏列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 作品收藏分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<TpWorksVo> queryPageList(TpWorksBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<TpWorks> lqw = buildQueryWrapper(bo);
|
||||
Page<TpWorksVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
|
||||
//作品对象
|
||||
result.getRecords().forEach(r -> r.setPicture(sysPictureMapper.selectById(r.getPictureId())));
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的作品收藏列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 作品收藏列表
|
||||
*/
|
||||
@Override
|
||||
public List<TpWorksVo> queryList(TpWorksBo bo) {
|
||||
LambdaQueryWrapper<TpWorks> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<TpWorks> buildQueryWrapper(TpWorksBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<TpWorks> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(TpWorks::getId);
|
||||
lqw.eq(bo.getUserId() != null, TpWorks::getUserId, bo.getUserId());
|
||||
lqw.eq(bo.getPictureId() != null, TpWorks::getPictureId, bo.getPictureId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增作品收藏
|
||||
*
|
||||
* @param bo 作品收藏
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(TpWorksBo bo) {
|
||||
TpWorks add = MapstructUtils.convert(bo, TpWorks.class);
|
||||
validEntityBeforeSave(add);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setId(add.getId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改作品收藏
|
||||
*
|
||||
* @param bo 作品收藏
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(TpWorksBo bo) {
|
||||
TpWorks update = MapstructUtils.convert(bo, TpWorks.class);
|
||||
validEntityBeforeSave(update);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(TpWorks entity){
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除作品收藏信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if(isValid){
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据条件查询作品收藏
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 作品收藏
|
||||
*/
|
||||
@Override
|
||||
public TpWorksVo queryByTpWorks(TpWorksBo bo) {
|
||||
return baseMapper.selectVoOne(new LambdaQueryWrapper<TpWorks>().eq(TpWorks::getUserId, bo.getUserId()).eq(TpWorks::getPictureId, bo.getPictureId()));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,244 @@
|
||||
package org.dromara.work.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.github.yulichang.base.MPJBaseServiceImpl;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.MapstructUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.work.domain.TzUser;
|
||||
import org.dromara.work.domain.bo.TzUserBo;
|
||||
import org.dromara.work.domain.vo.TzUserVo;
|
||||
import org.dromara.work.mapper.TzUserMapper;
|
||||
import org.dromara.work.service.ITzUserService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 用户Service业务层处理
|
||||
*
|
||||
* @author Lion Li
|
||||
* @date 2024-07-30
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@Service
|
||||
public class TzUserServiceImpl extends MPJBaseServiceImpl<TzUserMapper, TzUser> implements ITzUserService {
|
||||
|
||||
private final TzUserMapper baseMapper;
|
||||
|
||||
/**
|
||||
* 查询用户
|
||||
*
|
||||
* @param userId 主键
|
||||
* @return 用户
|
||||
*/
|
||||
@Override
|
||||
public TzUserVo queryById(Long userId){
|
||||
return baseMapper.selectVoById(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询用户列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 用户分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<TzUserVo> queryPageList(TzUserBo bo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<TzUser> lqw = buildQueryWrapper(bo);
|
||||
Page<TzUserVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||
|
||||
// 获取用户列表
|
||||
/*List<TzUserVo> userList = result.getRecords();
|
||||
|
||||
// 遍历用户列表,查询每个用户的已完成订单数量
|
||||
for (TzUserVo user : userList) {
|
||||
LambdaQueryWrapper<HyOrderItem> orderWrapper = Wrappers.lambdaQuery();
|
||||
orderWrapper.eq(HyOrderItem::getUserId, user.getUserId());
|
||||
orderWrapper.eq(HyOrderItem::getStatus, 6);
|
||||
Long orderCount = hyOrderItemMapper.selectCount(orderWrapper);
|
||||
user.setOrderNum(orderCount);
|
||||
}*/
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的用户列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 用户列表
|
||||
*/
|
||||
@Override
|
||||
public List<TzUserVo> queryList(TzUserBo bo) {
|
||||
LambdaQueryWrapper<TzUser> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<TzUser> buildQueryWrapper(TzUserBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<TzUser> lqw = Wrappers.lambdaQuery();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getNickName()), TzUser::getNickName, bo.getNickName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getRealName()), TzUser::getRealName, bo.getRealName());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUserMail()), TzUser::getUserMail, bo.getUserMail());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getLoginPassword()), TzUser::getLoginPassword, bo.getLoginPassword());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPayPassword()), TzUser::getPayPassword, bo.getPayPassword());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUserMobile()), TzUser::getUserMobile, bo.getUserMobile());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getIdCard()), TzUser::getIdCard, bo.getIdCard());
|
||||
lqw.eq(bo.getModifyTime() != null, TzUser::getModifyTime, bo.getModifyTime());
|
||||
lqw.eq(bo.getUserRegtime() != null, TzUser::getUserRegtime, bo.getUserRegtime());
|
||||
lqw.eq(bo.getIsMember() != null, TzUser::getIsMember, bo.getIsMember());
|
||||
lqw.eq(bo.getExamineFlag() != null, TzUser::getExamineFlag, bo.getExamineFlag());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUserRegip()), TzUser::getUserRegip, bo.getUserRegip());
|
||||
lqw.eq(bo.getUserLasttime() != null, TzUser::getUserLasttime, bo.getUserLasttime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUserLastip()), TzUser::getUserLastip, bo.getUserLastip());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getUserMemo()), TzUser::getUserMemo, bo.getUserMemo());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSex()), TzUser::getSex, bo.getSex());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getBirthDate()), TzUser::getBirthDate, bo.getBirthDate());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPic()), TzUser::getPic, bo.getPic());
|
||||
lqw.eq(bo.getStatus() != null, TzUser::getStatus, bo.getStatus());
|
||||
lqw.eq(bo.getScore() != null, TzUser::getScore, bo.getScore());
|
||||
lqw.between(params.get("beginModifyTime") != null && params.get("endModifyTime") != null, TzUser::getModifyTime, params.get("beginModifyTime"), params.get("endModifyTime"));
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增用户
|
||||
*
|
||||
* @param bo 用户
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(TzUserBo bo) {
|
||||
TzUser add = MapstructUtils.convert(bo, TzUser.class);
|
||||
boolean flag = baseMapper.insert(add) > 0;
|
||||
if (flag) {
|
||||
bo.setUserId(add.getUserId());
|
||||
}
|
||||
return flag;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户
|
||||
*
|
||||
* @param bo 用户
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(TzUserBo bo) {
|
||||
TzUser update = MapstructUtils.convert(bo, TzUser.class);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 开启设计师开关
|
||||
*
|
||||
* @param userPhone
|
||||
* @param status
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Boolean queryByUserPhone(String userPhone, Integer status) {
|
||||
TzUser user = baseMapper.selectOne(Wrappers.<TzUser>lambdaQuery().eq(TzUser::getUserMobile, userPhone));
|
||||
if (user == null){
|
||||
throw new ServiceException("该用户未注册");
|
||||
} else{
|
||||
if(status == 1){
|
||||
user.setIsDesigner(1);
|
||||
} else if (status == 2) {
|
||||
user.setIsDesigner(0);
|
||||
}
|
||||
}
|
||||
return baseMapper.updateById(user) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除用户信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid) {
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交实名认证
|
||||
*
|
||||
* @param bo 用户认证信息
|
||||
* @return 是否提交成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean submitAuth(TzUserBo bo) {
|
||||
// 检查是否已提交过认证
|
||||
TzUser user = baseMapper.selectById(bo.getUserId());
|
||||
if (user == null) {
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
if (user.getExamineFlag() == 2 || user.getExamineFlag() == 3) {
|
||||
throw new ServiceException("已提交过认证申请");
|
||||
}
|
||||
TzUser update = MapstructUtils.convert(bo, TzUser.class);
|
||||
update.setExamineFlag(2);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交设计师认证
|
||||
*
|
||||
* @param bo 设计师认证信息
|
||||
* @return 是否提交成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean submitSjsAuth(TzUserBo bo) {
|
||||
// 检查是否已提交过认证
|
||||
TzUser user = baseMapper.selectById(bo.getUserId());
|
||||
if (user == null) {
|
||||
throw new ServiceException("用户不存在");
|
||||
}
|
||||
if (user.getSjsFlag() == 2 || user.getSjsFlag() == 3) {
|
||||
throw new ServiceException("已提交过设计师认证申请");
|
||||
}
|
||||
TzUser update = MapstructUtils.convert(bo, TzUser.class);
|
||||
update.setSjsFlag(2);
|
||||
return baseMapper.updateById(update) > 0;
|
||||
}
|
||||
|
||||
/* @Override
|
||||
public TableDataInfo<TzUserVo> queryPageListChart(TzUserBo bo, PageQuery pageQuery) {
|
||||
// 使用MPJLambdaWrapper构建多表关联查询
|
||||
MPJLambdaWrapper<TzUser> wrapper = new MPJLambdaWrapper<TzUser>()
|
||||
.selectAs(TzUser::getUserId, "userId")
|
||||
.selectAs(TzUser::getRealName, "realName")
|
||||
.selectCount(HyOrderItem::getId, "orderNum")
|
||||
.selectSum(HyOrderItem::getTotal, "orderTotal")
|
||||
.leftJoin(HyOrderItem.class, HyOrderItem::getUserId, TzUser::getUserId)
|
||||
.groupBy(TzUser::getUserId)
|
||||
.orderByDesc("orderTotal");
|
||||
|
||||
// 添加查询条件
|
||||
if (bo != null) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
wrapper.eq(HyOrderItem::getDelFlag, 1);
|
||||
wrapper.ne(HyOrderItem::getPayState, 1);
|
||||
wrapper.like(StringUtils.isNotBlank(bo.getNickName()), TzUser::getNickName, bo.getNickName());
|
||||
wrapper.like(StringUtils.isNotBlank(bo.getRealName()),TzUser::getRealName, bo.getRealName());
|
||||
wrapper.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
|
||||
HyOrderItem::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
|
||||
}
|
||||
// 执行分页查询
|
||||
Page<TzUserVo> page = baseMapper.selectJoinPage(pageQuery.build(), TzUserVo.class, wrapper);
|
||||
return TableDataInfo.build(page);
|
||||
}*/
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?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="org.dromara.work.mapper.TpFollowMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?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="org.dromara.work.mapper.TpWorksMapper">
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,7 @@
|
||||
<?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="org.dromara.work.mapper.TzUserMapper">
|
||||
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user