소스 검색

feat(store): 新增用户信用分信息和学习视频模块

- 添加 LifeUserCreditScoreInfo 实体类及对应 CRUD 控制器、服务层和 Mapper
- 添加 LifeUserLearningVideo 实体类及对应 CRUD 控制器、服务层和 Mapper
- 实现分页查询、新增、更新、删除等基础功能
- 集成 Swagger 注解便于接口文档生成
- 使用 MyBatis Plus 实现数据访问层逻辑
- 添加日志记录与返回结果统一封装处理
qrs 5 일 전
부모
커밋
c4094f28fd

+ 85 - 0
alien-entity/src/main/java/shop/alien/entity/store/LifeUserCreditScoreInfo.java

@@ -0,0 +1,85 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@JsonInclude
+@TableName("life_user_credit_score_info")
+@ApiModel(value = "LifeUserCreditScoreInfo对象", description = "用户信用分信息")
+public class LifeUserCreditScoreInfo {
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "用户ID")
+    @TableField("user_id")
+    private Integer userId;
+
+    @ApiModelProperty(value = "职业类型")
+    @TableField("occupation_type")
+    private Integer occupationType;
+
+    @ApiModelProperty(value = "工作单位")
+    @TableField("work_unit")
+    private Integer workUnit;
+
+    @ApiModelProperty(value = "职业")
+    @TableField("occupation")
+    private Integer occupation;
+
+    @ApiModelProperty(value = "月收入")
+    @TableField("monthly_income")
+    private Integer monthlyIncome;
+
+    @ApiModelProperty(value = "最高学历")
+    @TableField("highest_degree")
+    private Integer highestDegree;
+
+    @ApiModelProperty(value = "毕业院校")
+    @TableField("graduated_institution")
+    private Integer graduatedInstitution;
+
+    @ApiModelProperty(value = "毕业时间")
+    @TableField("graduation_date")
+    private Integer graduationDate;
+
+    @ApiModelProperty(value = "所学专业")
+    @TableField("major")
+    private Integer major;
+
+    @ApiModelProperty(value = "房产地址")
+    @TableField("estate_address")
+    private Integer estateAddress;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+}

+ 62 - 0
alien-entity/src/main/java/shop/alien/entity/store/LifeUserLearningVideo.java

@@ -0,0 +1,62 @@
+package shop.alien.entity.store;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+@JsonInclude
+@TableName("life_user_learning_video")
+@ApiModel(value = "LifeUserLearningVideo对象", description = "学习视频")
+public class LifeUserLearningVideo {
+
+    @ApiModelProperty(value = "主键id")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty(value = "名称")
+    @TableField("name")
+    private String name;
+
+    @ApiModelProperty(value = "简介")
+    @TableField("profile")
+    private String profile;
+
+    @ApiModelProperty(value = "奖励分数")
+    @TableField("score")
+    private Integer score;
+
+    @ApiModelProperty(value = "视频地址")
+    @TableField("video_url")
+    private String videoUrl;
+
+    @ApiModelProperty(value = "删除标记, 0:未删除, 1:已删除")
+    @TableField("delete_flag")
+    @TableLogic
+    private Integer deleteFlag;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createdTime;
+
+    @ApiModelProperty(value = "创建人ID")
+    @TableField("created_user_id")
+    private Integer createdUserId;
+
+    @ApiModelProperty(value = "修改时间")
+    @TableField(value = "updated_time", fill = FieldFill.UPDATE)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updatedTime;
+
+    @ApiModelProperty(value = "修改人ID")
+    @TableField("updated_user_id")
+    private Integer updatedUserId;
+
+}
+

+ 7 - 0
alien-entity/src/main/java/shop/alien/mapper/LifeUserCreditScoreInfoMapper.java

@@ -0,0 +1,7 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import shop.alien.entity.store.LifeUserCreditScoreInfo;
+
+public interface LifeUserCreditScoreInfoMapper extends BaseMapper<LifeUserCreditScoreInfo> {
+}

+ 8 - 0
alien-entity/src/main/java/shop/alien/mapper/LifeUserLearningVideoMapper.java

@@ -0,0 +1,8 @@
+package shop.alien.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import shop.alien.entity.store.LifeUserLearningVideo;
+
+public interface LifeUserLearningVideoMapper extends BaseMapper<LifeUserLearningVideo> {
+}
+

+ 84 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeUserCreditScoreInfoController.java

@@ -0,0 +1,84 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiOperationSupport;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserCreditScoreInfo;
+import shop.alien.store.service.LifeUserCreditScoreInfoService;
+
+@Api(tags = {"用户信用分信息"})
+@Slf4j
+@RestController
+@CrossOrigin
+@RequestMapping("/lifeUserCreditScoreInfo")
+@RequiredArgsConstructor
+public class LifeUserCreditScoreInfoController {
+
+    private final LifeUserCreditScoreInfoService lifeUserCreditScoreInfoService;
+
+    @ApiOperation("新增用户信用分信息")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/add")
+    public R<String> add(@RequestBody LifeUserCreditScoreInfo lifeUserCreditScoreInfo) {
+        return lifeUserCreditScoreInfoService.add(lifeUserCreditScoreInfo);
+    }
+
+    @ApiOperation("根据ID删除用户信用分信息")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/deleteById")
+    public R<String> deleteById(@RequestParam Integer id) {
+        return lifeUserCreditScoreInfoService.deleteById(id);
+    }
+
+    @ApiOperation("更新用户信用分信息")
+    @ApiOperationSupport(order = 3)
+    @PostMapping("/update")
+    public R<String> update(@RequestBody LifeUserCreditScoreInfo lifeUserCreditScoreInfo) {
+        return lifeUserCreditScoreInfoService.update(lifeUserCreditScoreInfo);
+    }
+
+    @ApiOperation("根据ID查询用户信用分信息")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getById")
+    public R<LifeUserCreditScoreInfo> getById(@RequestParam Integer id) {
+        return lifeUserCreditScoreInfoService.getInfoById(id);
+    }
+
+    @ApiOperation("根据用户ID查询用户信用分信息")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getByUserId")
+    public R<LifeUserCreditScoreInfo> getByUserId(@RequestParam Integer userId) {
+        return lifeUserCreditScoreInfoService.getByUserId(userId);
+    }
+
+    @ApiOperation("分页查询用户信用分信息列表")
+    @ApiOperationSupport(order = 6)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "每页数量", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "userId", value = "用户ID", dataType = "Integer", paramType = "query")
+    })
+    @GetMapping("/list")
+    public R<IPage<LifeUserCreditScoreInfo>> list(
+            @RequestParam Integer pageNum,
+            @RequestParam Integer pageSize,
+            @RequestParam(required = false) Integer userId) {
+        return lifeUserCreditScoreInfoService.list(pageNum, pageSize, userId);
+    }
+}

+ 75 - 0
alien-store/src/main/java/shop/alien/store/controller/LifeUserLearningVideoController.java

@@ -0,0 +1,75 @@
+package shop.alien.store.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiOperationSupport;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserLearningVideo;
+import shop.alien.store.service.LifeUserLearningVideoService;
+
+@Api(tags = {"学习视频"})
+@Slf4j
+@RestController
+@CrossOrigin
+@RequestMapping("/lifeUserLearningVideo")
+@RequiredArgsConstructor
+public class LifeUserLearningVideoController {
+
+    private final LifeUserLearningVideoService lifeUserLearningVideoService;
+
+    @ApiOperation("新增学习视频")
+    @ApiOperationSupport(order = 1)
+    @PostMapping("/add")
+    public R<String> add(@RequestBody LifeUserLearningVideo lifeUserLearningVideo) {
+        return lifeUserLearningVideoService.add(lifeUserLearningVideo);
+    }
+
+    @ApiOperation("根据ID删除学习视频")
+    @ApiOperationSupport(order = 2)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/deleteById")
+    public R<String> deleteById(@RequestParam Integer id) {
+        return lifeUserLearningVideoService.deleteById(id);
+    }
+
+    @ApiOperation("更新学习视频")
+    @ApiOperationSupport(order = 3)
+    @PostMapping("/update")
+    public R<String> update(@RequestBody LifeUserLearningVideo lifeUserLearningVideo) {
+        return lifeUserLearningVideoService.update(lifeUserLearningVideo);
+    }
+
+    @ApiOperation("根据ID查询学习视频")
+    @ApiOperationSupport(order = 4)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "主键ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @GetMapping("/getById")
+    public R<LifeUserLearningVideo> getById(@RequestParam Integer id) {
+        return lifeUserLearningVideoService.getInfoById(id);
+    }
+
+    @ApiOperation("分页查询学习视频列表")
+    @ApiOperationSupport(order = 5)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页码", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "pageSize", value = "每页数量", dataType = "Integer", paramType = "query", required = true),
+            @ApiImplicitParam(name = "name", value = "名称", dataType = "String", paramType = "query")
+    })
+    @GetMapping("/list")
+    public R<IPage<LifeUserLearningVideo>> list(
+            @RequestParam Integer pageNum,
+            @RequestParam Integer pageSize,
+            @RequestParam(required = false) String name) {
+        return lifeUserLearningVideoService.list(pageNum, pageSize, name);
+    }
+}
+

+ 39 - 0
alien-store/src/main/java/shop/alien/store/service/LifeUserCreditScoreInfoService.java

@@ -0,0 +1,39 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserCreditScoreInfo;
+
+public interface LifeUserCreditScoreInfoService extends IService<LifeUserCreditScoreInfo> {
+
+    /**
+     * 新增用户信用分信息
+     */
+    R<String> add(LifeUserCreditScoreInfo lifeUserCreditScoreInfo);
+
+    /**
+     * 根据ID删除用户信用分信息
+     */
+    R<String> deleteById(Integer id);
+
+    /**
+     * 更新用户信用分信息
+     */
+    R<String> update(LifeUserCreditScoreInfo lifeUserCreditScoreInfo);
+
+    /**
+     * 根据ID查询用户信用分信息
+     */
+    R<LifeUserCreditScoreInfo> getInfoById(Integer id);
+
+    /**
+     * 根据用户ID查询用户信用分信息
+     */
+    R<LifeUserCreditScoreInfo> getByUserId(Integer userId);
+
+    /**
+     * 分页查询用户信用分信息列表
+     */
+    R<IPage<LifeUserCreditScoreInfo>> list(Integer pageNum, Integer pageSize, Integer userId);
+}

+ 35 - 0
alien-store/src/main/java/shop/alien/store/service/LifeUserLearningVideoService.java

@@ -0,0 +1,35 @@
+package shop.alien.store.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserLearningVideo;
+
+public interface LifeUserLearningVideoService extends IService<LifeUserLearningVideo> {
+
+    /**
+     * 新增学习视频
+     */
+    R<String> add(LifeUserLearningVideo lifeUserLearningVideo);
+
+    /**
+     * 根据ID删除学习视频
+     */
+    R<String> deleteById(Integer id);
+
+    /**
+     * 更新学习视频
+     */
+    R<String> update(LifeUserLearningVideo lifeUserLearningVideo);
+
+    /**
+     * 根据ID查询学习视频
+     */
+    R<LifeUserLearningVideo> getInfoById(Integer id);
+
+    /**
+     * 分页查询学习视频列表
+     */
+    R<IPage<LifeUserLearningVideo>> list(Integer pageNum, Integer pageSize, String name);
+}
+

+ 78 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeUserCreditScoreInfoServiceImpl.java

@@ -0,0 +1,78 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserCreditScoreInfo;
+import shop.alien.mapper.LifeUserCreditScoreInfoMapper;
+import shop.alien.store.service.LifeUserCreditScoreInfoService;
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class LifeUserCreditScoreInfoServiceImpl extends ServiceImpl<LifeUserCreditScoreInfoMapper, LifeUserCreditScoreInfo> implements LifeUserCreditScoreInfoService {
+
+    @Override
+    public R<String> add(LifeUserCreditScoreInfo lifeUserCreditScoreInfo) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.add, param={}", lifeUserCreditScoreInfo);
+        boolean result = this.save(lifeUserCreditScoreInfo);
+        if (result) {
+            return R.success("新增成功");
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<String> deleteById(Integer id) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.deleteById, id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<String> update(LifeUserCreditScoreInfo lifeUserCreditScoreInfo) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.update, param={}", lifeUserCreditScoreInfo);
+        boolean result = this.updateById(lifeUserCreditScoreInfo);
+        if (result) {
+            return R.success("更新成功");
+        }
+        return R.fail("更新失败");
+    }
+
+    @Override
+    public R<LifeUserCreditScoreInfo> getInfoById(Integer id) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.getInfoById, id={}", id);
+        LifeUserCreditScoreInfo result = this.getById(id);
+        return R.data(result);
+    }
+
+    @Override
+    public R<LifeUserCreditScoreInfo> getByUserId(Integer userId) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.getByUserId, userId={}", userId);
+        LambdaQueryWrapper<LifeUserCreditScoreInfo> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(LifeUserCreditScoreInfo::getUserId, userId);
+        LifeUserCreditScoreInfo result = this.getOne(queryWrapper);
+        return R.data(result);
+    }
+
+    @Override
+    public R<IPage<LifeUserCreditScoreInfo>> list(Integer pageNum, Integer pageSize, Integer userId) {
+        log.info("LifeUserCreditScoreInfoServiceImpl.list, pageNum={}, pageSize={}, userId={}", pageNum, pageSize, userId);
+        Page<LifeUserCreditScoreInfo> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<LifeUserCreditScoreInfo> queryWrapper = new LambdaQueryWrapper<>();
+        if (userId != null) {
+            queryWrapper.eq(LifeUserCreditScoreInfo::getUserId, userId);
+        }
+        queryWrapper.orderByDesc(LifeUserCreditScoreInfo::getCreatedTime);
+        IPage<LifeUserCreditScoreInfo> result = this.page(page, queryWrapper);
+        return R.data(result);
+    }
+}

+ 71 - 0
alien-store/src/main/java/shop/alien/store/service/impl/LifeUserLearningVideoServiceImpl.java

@@ -0,0 +1,71 @@
+package shop.alien.store.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import shop.alien.entity.result.R;
+import shop.alien.entity.store.LifeUserLearningVideo;
+import shop.alien.mapper.LifeUserLearningVideoMapper;
+import shop.alien.store.service.LifeUserLearningVideoService;
+
+@Service
+@RequiredArgsConstructor
+@Slf4j
+public class LifeUserLearningVideoServiceImpl extends ServiceImpl<LifeUserLearningVideoMapper, LifeUserLearningVideo> implements LifeUserLearningVideoService {
+
+    @Override
+    public R<String> add(LifeUserLearningVideo lifeUserLearningVideo) {
+        log.info("LifeUserLearningVideoServiceImpl.add, param={}", lifeUserLearningVideo);
+        boolean result = this.save(lifeUserLearningVideo);
+        if (result) {
+            return R.success("新增成功");
+        }
+        return R.fail("新增失败");
+    }
+
+    @Override
+    public R<String> deleteById(Integer id) {
+        log.info("LifeUserLearningVideoServiceImpl.deleteById, id={}", id);
+        boolean result = this.removeById(id);
+        if (result) {
+            return R.success("删除成功");
+        }
+        return R.fail("删除失败");
+    }
+
+    @Override
+    public R<String> update(LifeUserLearningVideo lifeUserLearningVideo) {
+        log.info("LifeUserLearningVideoServiceImpl.update, param={}", lifeUserLearningVideo);
+        boolean result = this.updateById(lifeUserLearningVideo);
+        if (result) {
+            return R.success("更新成功");
+        }
+        return R.fail("更新失败");
+    }
+
+    @Override
+    public R<LifeUserLearningVideo> getInfoById(Integer id) {
+        log.info("LifeUserLearningVideoServiceImpl.getInfoById, id={}", id);
+        LifeUserLearningVideo result = this.getById(id);
+        return R.data(result);
+    }
+
+    @Override
+    public R<IPage<LifeUserLearningVideo>> list(Integer pageNum, Integer pageSize, String name) {
+        log.info("LifeUserLearningVideoServiceImpl.list, pageNum={}, pageSize={}, name={}", pageNum, pageSize, name);
+        Page<LifeUserLearningVideo> page = new Page<>(pageNum, pageSize);
+        LambdaQueryWrapper<LifeUserLearningVideo> queryWrapper = new LambdaQueryWrapper<>();
+        if (StringUtils.isNotBlank(name)) {
+            queryWrapper.like(LifeUserLearningVideo::getName, name);
+        }
+        queryWrapper.orderByDesc(LifeUserLearningVideo::getCreatedTime);
+        IPage<LifeUserLearningVideo> result = this.page(page, queryWrapper);
+        return R.data(result);
+    }
+}
+