feat: initial iShare project code

This commit is contained in:
purovps
2026-02-16 23:20:59 +08:00
parent 8c83a6fd46
commit 6f270a972e
1910 changed files with 218015 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>as-app-server</artifactId>
<version>5.2.0</version>
</parent>
<artifactId>as-app-server-api</artifactId>
<dependencies>
<!--core 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-core</artifactId>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
</dependency>
<!--feign 工具类-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-feign</artifactId>
</dependency>
<!-- excel 导入导出 -->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-excel</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,30 @@
package com.pig4cloud.pigx.app.api.dto;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@Schema(description = "APP用户传输对象")
@EqualsAndHashCode(callSuper = true)
public class AppUserDTO extends AppUser {
/**
* 角色ID
*/
@Schema(description = "角色id集合")
private List<Long> role;
/**
* 新密码
*/
@Schema(description = "新密码")
private String newpassword1;
@Schema(description = "验证码")
private String mobileCode;
}

View File

@@ -0,0 +1,54 @@
/*
*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*
*/
package com.pig4cloud.pigx.app.api.dto;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @author lengleng
* @date 2017/11/11
*/
@Data
@Schema(description = "用户信息")
public class AppUserInfo implements Serializable {
/**
* 用户基本信息
*/
@Schema(description = "用户基本信息")
private AppUser appUser;
/**
* 权限标识集合
*/
@Schema(description = "权限标识集合")
private String[] permissions;
/**
* 角色集合
*/
@Schema(description = "角色标识集合")
private Long[] roles;
}

View File

@@ -0,0 +1,62 @@
package com.pig4cloud.pigx.app.api.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* @author ami
* @date 2023/10
*/
@Data
public class AppUserInfoDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户id
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "userId")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String username;
/**
* 手机号 -> 加密&模糊梳理
*/
// @Schema(description = "手机号")
// private String phone;
/**
* 头像
*/
@Schema(description = "头像")
private String avatar;
/**
* 昵称
*/
@Schema(description = "拓展字段:昵称")
private String nickname;
/**
* 邮箱 -> 加密&模糊梳理
*/
@Schema(description = "拓展字段:邮箱")
private String email;
/**
* 所属租户
*/
// @Schema(description = "所属租户", hidden = true)
// private Long tenantId;
}

View File

@@ -0,0 +1,31 @@
package com.pig4cloud.pigx.app.api.dto;
import com.pig4cloud.pigx.app.api.entity.as.AsSubProduct;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
@Schema(description = "网站首页数据传输对象")
public class AsInitDTO {
private static final long serialVersionUID = 1L;
//合租产品信息
//title price desc icon orderType/自营/个人
private List<AsSubProduct> products;
private List<SubOrderDTO> orders;
//合租订单展示
//title desc price
//用户评价
//用户名 头像 使用时常(上车时间) 评论时间 评分?
//最近订单ws推送
}

View File

@@ -0,0 +1,33 @@
package com.pig4cloud.pigx.app.api.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@Schema(description = "订阅统计数据传输对象")
public class AsUserSubDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 订阅数量
*/
private Integer subCount;
/**
* 平台id
*/
private Integer platformId;
/**
* 平台名称
*/
private String platformName;
private String subPrice;
private String title;
private List<SubComment> comments;//object
private List<RealTimeOrder> realTimeOrders;//object
private String remark;
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.api.dto;
/**
* 首页实时订单
*/
public class RealTimeOrder {
//order time
//platform id
//subtype id
//user id
//avatar
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.api.dto;
/**
* 订阅评价
*/
public class SubComment {
//comment time
//comment
//id
//avatar
//name
}

View File

@@ -0,0 +1,21 @@
package com.pig4cloud.pigx.app.api.dto;
/**
* 订阅订单DTO
*/
public class SubOrderDTO {
//order time
//platform id
//subtype id
//user id
//avatar
//comment
//star
}

View File

@@ -0,0 +1,8 @@
package com.pig4cloud.pigx.app.api.dto;
/**
* 订阅产品DTO
*/
public class SubProductDTO {
}

View File

@@ -0,0 +1,84 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 文章分类表
*
* @author pig
* @date 2023-06-07 16:28:03
*/
@Data
@TableName("app_article_category")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "文章分类表")
public class AppArticleCategoryEntity extends Model<AppArticleCategoryEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 名称
*/
@Schema(description = "名称")
private String name;
/**
* 排序
*/
@Schema(description = "排序")
private Integer sort;
/**
* 是否显示: 0=否, 1=是
*/
@Schema(description = "是否显示: 0=否, 1=是")
private Integer isShow;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 是否删除: 0=否, 1=是
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "是否删除: 0=否, 1=是")
private String delFlag;
}

View File

@@ -0,0 +1,84 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 文章收藏表
*
* @author pig
* @date 2023-06-16 14:33:41
*/
@Data
@TableName("app_article_collect")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "文章收藏表")
public class AppArticleCollectEntity extends Model<AppArticleCollectEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 用户ID
*/
@Schema(description = "用户ID")
private Long userId;
/**
* 文章ID
*/
@Schema(description = "文章ID")
private Long articleId;
/**
* 文章标题
*/
@TableField(exist = false)
private String title;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 是否删除
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "是否删除")
private String delFlag;
}

View File

@@ -0,0 +1,134 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldNameConstants;
import java.time.LocalDateTime;
/**
* 文章资讯
*
* @author pig
* @date 2023-06-07 16:32:35
*/
@Data
@FieldNameConstants
@TableName("app_article")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "文章资讯")
public class AppArticleEntity extends Model<AppArticleEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 分类
*/
@Schema(description = "分类")
private Long cid;
/**
* 标题
*/
@Schema(description = "标题")
private String title;
/**
* 简介
*/
@Schema(description = "简介")
private String intro;
/**
* 摘要
*/
@Schema(description = "摘要")
private String summary;
/**
* 封面
*/
@Schema(description = "封面")
private String image;
/**
* 内容
*/
@Schema(description = "内容")
private String content;
/**
* 作者
*/
@Schema(description = "作者")
private String author;
/**
* 浏览
*/
@Schema(description = "浏览")
private Integer visit;
/**
* 排序
*/
@Schema(description = "排序")
private Integer sort;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 删除时间
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标志")
private String delFlag;
/**
* 当前用户是否已收藏
*/
@TableField(exist = false)
private boolean collect;
/**
* 分类名称
*/
@TableField(exist = false)
private String cname;
}

View File

@@ -0,0 +1,83 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 页面
*
* @author lengleng
* @date 2023-06-08 11:19:23
*/
@Data
@TableName("app_page")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "页面")
public class AppPageEntity extends Model<AppPageEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 页面类型
*/
@Schema(description = "页面类型")
private Integer pageType;
/**
* 页面名称
*/
@Schema(description = "页面名称")
private String pageName;
/**
* 页面数据
*/
@Schema(description = "页面数据")
private String pageData;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 修改人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改人")
private String updateBy;
/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "修改时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记")
private String delFlag;
}

View File

@@ -0,0 +1,105 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Data
@TableName("app_role")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "app角色表")
public class AppRole extends Model<AppRole> {
private static final long serialVersionUID = 1L;
/**
* roleId
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "roleId")
private Long roleId;
/**
* roleName
*/
@Schema(description = "roleName")
private String roleName;
/**
* roleCode
*/
@Schema(description = "roleCode")
private String roleCode;
/**
* roleDesc
*/
@Schema(description = "roleDesc")
private String roleDesc;
/**
* 创建人
*/
@Schema(description = "创建人")
private String createBy;
/**
* 修改人
*/
@Schema(description = "修改人")
private String updateBy;
/**
* createTime
*/
@Schema(description = "createTime")
private LocalDateTime createTime;
/**
* updateTime
*/
@Schema(description = "updateTime")
private LocalDateTime updateTime;
/**
* delFlag
*/
@Schema(description = "delFlag")
private String delFlag;
/**
* tenantId
*/
@Schema(description = "tenantId", hidden = true)
private Long tenantId;
}

View File

@@ -0,0 +1,125 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.pig4cloud.pigx.common.core.sensitive.Sensitive;
import com.pig4cloud.pigx.common.core.util.ValidGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
/**
* app 社交账号登录
*/
@Data
@Schema(description = "第三方账号信息")
@EqualsAndHashCode(callSuper = true)
public class AppSocialDetails extends Model<AppSocialDetails> {
private static final long serialVersionUID = 1L;
/**
* 主鍵
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 类型
*/
@NotBlank(message = "类型不能为空")
@Schema(description = "账号类型")
private String type;
/**
* 描述
*/
@Schema(description = "描述")
private String remark;
/**
* appid
*/
@Sensitive(prefixNoMaskLen = 4, suffixNoMaskLen = 4)
@NotBlank(message = "账号不能为空")
@Schema(description = "appId")
private String appId;
/**
* app_secret
*/
@Sensitive(prefixNoMaskLen = 4, suffixNoMaskLen = 4)
@NotBlank(message = "密钥不能为空", groups = { ValidGroup.Insert.class })
@Schema(description = "app secret")
private String appSecret;
/**
* 回调地址
*/
@Schema(description = "回调地址")
private String redirectUrl;
/**
* 拓展字段
*/
@Schema(description = "拓展字段")
private String ext;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 修改人
*/
@TableField(fill = FieldFill.UPDATE)
@Schema(description = "修改人")
private String updateBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 更新时间
*/
@Schema(description = "更新时间")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记,1:已删除,0:正常")
private String delFlag;
}

View File

@@ -0,0 +1,94 @@
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonRawValue;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 导航栏
*
* @author lengleng
* @date 2023-06-08 11:18:46
*/
@Data
@TableName("app_tabbar")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "导航栏")
public class AppTabbarEntity extends Model<AppTabbarEntity> {
/**
* 主键
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "主键")
private Long id;
/**
* 导航名称
*/
@Schema(description = "导航名称")
private String name;
/**
* 未选图标
*/
@Schema(description = "未选图标")
private String selected;
/**
* 已选图标
*/
@Schema(description = "已选图标")
private String unselected;
/**
* 链接地址
*/
@Schema(description = "链接地址")
@JsonRawValue
@JsonDeserialize()
private String link;
/**
* 创建人
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建人")
private String createBy;
/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 更新人
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新人")
private String updateBy;
/**
* 更新时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
@Schema(description = "更新时间")
private LocalDateTime updateTime;
/**
* 删除标记
*/
@TableLogic
@TableField(fill = FieldFill.INSERT)
@Schema(description = "删除标记")
private String delFlag;
}

View File

@@ -0,0 +1,159 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Data
@TableName("app_user")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "app用户表")
public class AppUser extends Model<AppUser> {
private static final long serialVersionUID = 1L;
/**
* userId
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "userId")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String username;
/**
* 密码
*/
@Schema(description = "密码")
private String password;
/**
* 随机盐
*/
@JsonIgnore
@Schema(description = "随机盐")
private String salt;
/**
* 手机号
*/
@Schema(description = "手机号")
private String phone;
/**
* 头像
*/
@Schema(description = "头像")
private String avatar;
/**
* 昵称
*/
@Schema(description = "拓展字段:昵称")
private String nickname;
/**
* 姓名
*/
@Schema(description = "拓展字段:姓名")
private String name;
/**
* 邮箱
*/
@Schema(description = "拓展字段:邮箱")
private String email;
/**
* 创建人
*/
@Schema(description = "创建人")
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 修改人
*/
@Schema(description = "修改人")
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/**
* 创建时间
*/
@Schema(description = "创建时间")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 修改时间
*/
@Schema(description = "修改时间")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/**
* 删除标记
*/
@Schema(description = "删除标记,1:已删除,0:正常")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private String delFlag;
/**
* 所属租户
*/
@Schema(description = "所属租户", hidden = true)
private Long tenantId;
/**
* 最后一次密码修改时间
*/
@Schema(description = "最后一次密码修改时间")
private LocalDateTime lastModifiedTime;
/**
* 锁定标记
*/
@Schema(description = "锁定标记")
private String lockFlag;
/**
* 微信小程序登录openId
*/
@Schema(description = "微信小程序登录openId")
private String wxOpenid;
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Data
@TableName("app_user_role")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "用户角色表")
public class AppUserRole extends Model<AppUserRole> {
private static final long serialVersionUID = 1L;
/**
* 用户ID
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "用户ID")
private Long userId;
/**
* 角色ID
*/
@Schema(description = "角色ID")
private Long roleId;
}

View File

@@ -0,0 +1,47 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 媒体平台
*
* @author amigo
* @date 2023-07
*/
@Data
@TableName("as_platform")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "媒体平台表")
public class AsPlatform extends Model<AsPlatform> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "ID")
private Long id;
@Schema(description = "平台名称")
private String platformName;
@Schema(description = "平台类型 0全部")
private Integer platformType;
@Schema(description = "应用图标")
private String icon;
@Schema(description = "公司")
private String company;
@Schema(description = "平台网站")
private String website;
@Schema(description = "sort")
private String sortOrder;
@Schema(description = "产品code: 类型_名称_id")
private String productCode;
}

View File

@@ -0,0 +1,38 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 平台类型表
*
* @author amigo
* @date 2023-07
*/
@Data
@TableName("as_platform_type")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "平台类型表")
public class AsPlatformType extends Model<AsPlatformType> {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "ID")
private Long id;
@Schema(description = "名称")
private String name;
@Schema(description = "平台类型 0全部")
private Integer platformType;
@Schema(description = "平台类型")
private String sortOrder;
}

View File

@@ -0,0 +1,101 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 流媒体订阅账号
*
* @author amigo
* @date 2023-08
*/
@Data
@TableName("as_sub_account")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "as流媒体订阅账号")
public class AsSubAccount extends Model<AsSubAccount> {
private static final long serialVersionUID = 1L;
/**
* 产品id
*/
@Schema(description = "product_id")
private Long productId;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "ID")
private Long id;
/**
* 订阅计划id
*/
@Schema(description = "sub_plan_id")
private Integer subPlanId;
/**
* main user
*/
@Schema(description = "user_id")
private Integer userId;
/**
* 付费计划id
*/
@Schema(description = "sub_payroll_id")
private Integer subPayrollId;
/**
* 地区
*/
@Schema(description = "region")
private String region;
/**
* 分享类型
*/
@Schema(description = "share_type")
private Integer shareType;
/**
* 账号类型
*/
@Schema(description = "account_type")
private Integer accountType;
/**
* 续费日期
*/
@Schema(description = "renew_date")
private LocalDateTime renewDate;
/**
* 平台id
*/
@Schema(description = "platform_id")
private Integer platformId;
/**
* 用户名
*/
@Schema(description = "account_name")
private String accountName;
/**
* 用户密码
*/
@Schema(description = "account_passwd")
private String accountPasswd;
/**
* 密码salt
*/
@Schema(description = "passwd_salt")
private Integer passwdSalt;
}

View File

@@ -0,0 +1,53 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 付费计划表
*
* @author amigo
* @date 2023-07
*/
@Data
@TableName("as_sub_payroll")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "as付费计划")
public class AsSubPayroll extends Model<AsSubPayroll> {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "ID")
private Long id;
/**
* 订阅计划id +=,
*/
@Schema(description = "sub_plans")
private Long subPlans;
@Schema(description = "platform_id")
private Integer platformId;
/**
* 付费方式 月/季/年 - 1/2/3
*/
@Schema(description = "payroll")
private Integer payroll;
@Schema(description = "price")
private BigDecimal price;
@Schema(description = "currency")
private String currency;
@Schema(description = "region")
private String region;
@Schema(description = "产品code")
private String productCode;
}

View File

@@ -0,0 +1,37 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 流媒体订阅计划表
*
* @author amigo
* @date 2023-07
*/
@Data
@TableName("as_sub_plan")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "as订阅计划")
public class AsSubPlan extends Model<AsSubPlan> {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "订阅计划ID")
private Long id;
@Schema(description = "订阅名称")
private String name;
@Schema(description = "平台id")
private String platformId;
@Schema(description = "用户容量")
private String capacity;
@Schema(description = "备注")
private String remark;
@Schema(description = "排序")
private String sortOrder;
}

View File

@@ -0,0 +1,45 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@TableName("as_sub_product")
@Schema(description = "订阅产品")
public class AsSubProduct {
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "id")
private Long id;
@Schema(description = "综合评分")
private Integer star;
@Schema(description = "标题")
private String title;
@Schema(description = "描述")
private String description;
@Schema(description = "标签s")
private String Tags;
@Schema(description = "订阅ids")
private String subPlanIds;
@Schema(description = "总价")
private BigDecimal amount;
@Schema(description = "用户id")
private Long userId;
@Schema(description = "产品类型 1自营 2个人")
private Long productType;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "更新时间")
private LocalDateTime updateTime;
@Schema(description = "产品code: 类型_名称_id")
private String productCode;
@Schema(description = "订阅类型 1单品 2多品")
private Long subType;
}

View File

@@ -0,0 +1,30 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("as_sub_product_comment")
@Schema(description = "订阅产品评价")
public class AsSubProductComment {
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "id")
private Long id;
@Schema(description = "评分")
private Integer star;
@Schema(description = "评价")
private String comment;
@Schema(description = "用户id")
private Long userId;
@Schema(description = "产品id")
private Long productId;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "更新时间")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,52 @@
package com.pig4cloud.pigx.app.api.entity.as;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 流媒体订阅计划表
*
* @author amigo
* @date 2023-07
*/
@Data
@TableName("as_user_sub")
@EqualsAndHashCode(callSuper = true)
@Schema(description = "账号订阅表")
public class AsUserSub extends Model<AsUserSub> {
private static final long serialVersionUID = 1L;
/**
* ID
*/
@TableId(type = IdType.ASSIGN_ID)
@Schema(description = "ID")
private Long id;
@Schema(description = "platformId")
private Integer platformId;
@Schema(description = "capacity")
private Integer capacity;
@Schema(description = "capacity_loaded")
private Integer capacityLoaded;
@Schema(description = "plan_id")
private Integer planId;
@Schema(description = "user_id")
private Integer userId;
@Schema(description = "main_account")
private Integer mainAccount;
@Schema(description = "region")
private String region;
@Schema(description = "target_ip")
private String targetIp;
@Schema(description = "remark")
private Integer remark;
}

View File

@@ -0,0 +1,66 @@
/*
*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*
*/
package com.pig4cloud.pigx.app.api.feign;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants;
import com.pig4cloud.pigx.common.core.util.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestHeader;
/**
* @author lengleng
* @date 2018/6/22
*/
@FeignClient(contextId = "remoteAppUserService", value = ServiceNameConstants.APP_SERVER)
public interface RemoteAppUserService {
/**
* 通过用户名查询用户、角色信息
* @param username 用户名
* @param from 调用标志
* @return R
*/
@GetMapping("/appuser/info/{username}")
R<AppUserInfo> info(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from);
/**
* 通过社交账号或手机号查询用户、角色信息
* @param inStr appid@code
* @param from 调用标志
* @return
*/
@GetMapping("/appsocial/info/{inStr}")
R<AppUserInfo> social(@PathVariable("inStr") String inStr, @RequestHeader(SecurityConstants.FROM) String from);
/**
* 锁定用户
* @param username 用户名
* @param from 调用标识
* @return
*/
@PutMapping("/appuser/lock/{username}")
R<Boolean> lockUser(@PathVariable("username") String username, @RequestHeader(SecurityConstants.FROM) String from);
}

View File

@@ -0,0 +1,61 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author lengleng
* @date 2020/2/10
*/
@Data
@Schema(description = "前端角色展示对象")
@ColumnWidth(30)
public class AppRoleExcelVO {
/**
* 导入时候回显行号
*/
@ExcelLine
@ExcelIgnore
private Long lineNum;
/**
* roleName
*/
@ExcelProperty("角色名称")
private String roleName;
/**
* roleCode
*/
@ExcelProperty("角色标识")
private String roleCode;
/**
* roleDesc
*/
@ExcelProperty("角色描述")
private String roleDesc;
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.api.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/**
* @author lengleng
* @date 2020/2/10
*/
@Data
@Schema(description = "前端角色展示对象")
public class AppRoleVO {
/**
* 角色id
*/
private Long roleId;
/**
* 菜单列表
*/
private String menuIds;
}

View File

@@ -0,0 +1,83 @@
package com.pig4cloud.pigx.app.api.vo;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.pig4cloud.pigx.common.excel.annotation.ExcelLine;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;
@Data
@ColumnWidth(30)
public class AppUserExcelVO {
/**
* 导入时候回显行号
*/
@ExcelLine
@ExcelIgnore
private Long lineNum;
/**
* 主键ID
*/
@ExcelProperty("用户编号")
private Long userId;
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空")
@ExcelProperty("用户名")
private String username;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
@ExcelProperty("手机号")
private String phone;
/**
* 手机号
*/
@NotBlank(message = "昵称不能为空")
@ExcelProperty("昵称")
private String nickname;
/**
* 手机号
*/
@NotBlank(message = "姓名不能为空")
@ExcelProperty("姓名")
private String name;
/**
* 手机号
*/
@NotBlank(message = "邮箱不能为空")
@ExcelProperty("邮箱")
private String email;
/**
* 角色列表
*/
@NotBlank(message = "角色不能为空")
@ExcelProperty("角色")
private String roleNameList;
/**
* 锁定标记
*/
@ExcelProperty("锁定标记,0:正常,9:已锁定")
private String lockFlag;
/**
* 创建时间
*/
@ExcelProperty(value = "创建时间")
private LocalDateTime createTime;
}

View File

@@ -0,0 +1,101 @@
package com.pig4cloud.pigx.app.api.vo;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.common.core.sensitive.Sensitive;
import com.pig4cloud.pigx.common.core.sensitive.SensitiveTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class AppUserVO implements Serializable {
/**
* 主键
*/
@Schema(description = "主键")
private Long userId;
/**
* 用户名
*/
@Schema(description = "用户名")
private String username;
/**
* 密码
*/
@Schema(description = "密码")
private String password;
/**
* 手机号
*/
@Schema(description = "手机号")
@Sensitive(type = SensitiveTypeEnum.MOBILE_PHONE)
private String phone;
/**
* 头像
*/
@Schema(description = "头像")
private String avatar;
/**
* 昵称
*/
@Schema(description = "拓展字段:昵称")
private String nickname;
/**
* 姓名
*/
@Schema(description = "拓展字段:姓名")
private String name;
/**
* 邮箱
*/
@Schema(description = "拓展字段:邮箱")
private String email;
/**
* 创建时间
*/
@Schema(description = "创建时间")
private LocalDateTime createTime;
/**
* 删除标记
*/
@Schema(description = "删除标记,1:已删除,0:正常")
private String delFlag;
/**
* 所属租户
*/
@Schema(description = "所属租户")
private Long tenantId;
/**
* 最后一次密码修改时间
*/
@Schema(description = "最后一次密码修改时间")
private LocalDateTime lastModifiedTime;
/**
* 锁定标记
*/
@Schema(description = "锁定标记")
private String lockFlag;
/**
* 角色列表
*/
@Schema(description = "拥有的角色列表")
private List<AppRole> roleList;
}

View File

@@ -0,0 +1,2 @@
com.pig4cloud.pigx.common.feign.PigxFeignAutoConfiguration=\
com.pig4cloud.pigx.app.api.feign.RemoteAppUserService

View File

@@ -0,0 +1,18 @@
FROM pig4cloud/java:8-jre
MAINTAINER wangiegie@gmail.com
ENV TZ=Asia/Shanghai
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN mkdir -p /as-app-server
WORKDIR /as-app-server
EXPOSE 7060
ADD ./target/as-app-server-biz.jar ./
CMD sleep 60;java $JAVA_OPTS -jar as-app-server-biz.jar

View File

@@ -0,0 +1,105 @@
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.pig4cloud</groupId>
<artifactId>as-app-server</artifactId>
<version>5.2.0</version>
</parent>
<artifactId>as-app-server-biz</artifactId>
<dependencies>
<!--必备: undertow容器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-undertow</artifactId>
</dependency>
<!--必备: spring boot web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--必备: 注册中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--必备: 配置中心客户端-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--必备: 操作数据源相关-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-data</artifactId>
</dependency>
<!--必备pigx安全模块-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-security</artifactId>
</dependency>
<!--必备xss 过滤模块-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-xss</artifactId>
</dependency>
<!--必备: sentinel 依赖-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-sentinel</artifactId>
</dependency>
<!--必备: feign 依赖-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-feign</artifactId>
</dependency>
<!--必备: 依赖api模块-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>as-app-server-api</artifactId>
<version>5.2.0</version>
</dependency>
<!--必备: log 依赖-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-log</artifactId>
</dependency>
<!--选配: mybatis 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!--选配: druid 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<!--选配: mysql 数据库驱动 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!--选配: swagger文档-->
<dependency>
<groupId>com.pig4cloud</groupId>
<artifactId>pigx-common-swagger</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>

View File

@@ -0,0 +1,26 @@
package com.pig4cloud.pigx.app;
import com.pig4cloud.pigx.common.feign.annotation.EnablePigxFeignClients;
import com.pig4cloud.pigx.common.security.annotation.EnablePigxResourceServer;
import com.pig4cloud.pigx.common.swagger.annotation.EnableOpenApi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* @author pigx archetype
* <p>
* 项目启动类
*/
@EnableOpenApi("app")
@EnablePigxFeignClients
@EnableDiscoveryClient
@EnablePigxResourceServer
@SpringBootApplication
public class AsAppApplication {
public static void main(String[] args) {
SpringApplication.run(AsAppApplication.class, args);
}
}

View File

@@ -0,0 +1,131 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
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.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import com.pig4cloud.pigx.app.service.AppArticleCategoryService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 文章分类表
*
* @author pig
* @date 2023-06-07 16:28:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appArticleCategory")
@Tag(description = "appArticleCategory", name = "文章分类表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppArticleCategoryController {
private final AppArticleCategoryService appArticleCategoryService;
/**
* 分页查询
* @param page 分页对象
* @param appArticleCategory 文章分类表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_view')")
public R getAppArticleCategoryPage(@ParameterObject Page page,
@ParameterObject AppArticleCategoryEntity appArticleCategory) {
LambdaQueryWrapper<AppArticleCategoryEntity> wrapper = Wrappers.lambdaQuery();
wrapper.like(StrUtil.isNotBlank(appArticleCategory.getName()), AppArticleCategoryEntity::getName,
appArticleCategory.getName());
return R.ok(appArticleCategoryService.page(page, wrapper));
}
/**
* 通过id查询文章分类表
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_view')")
public R getById(@PathVariable("id") Long id) {
return R.ok(appArticleCategoryService.getById(id));
}
/**
* 通过查询文章分类
* @return R
*/
@Operation(summary = "查询文章分类", description = "查询文章分类")
@Inner(value = false)
@GetMapping("/list")
public R list() {
return R.ok(appArticleCategoryService.list());
}
/**
* 新增文章分类表
* @param appArticleCategory 文章分类表
* @return R
*/
@Operation(summary = "新增文章分类表", description = "新增文章分类表")
@SysLog("新增文章分类表")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_add')")
public R save(@RequestBody AppArticleCategoryEntity appArticleCategory) {
return R.ok(appArticleCategoryService.save(appArticleCategory));
}
/**
* 修改文章分类表
* @param appArticleCategory 文章分类表
* @return R
*/
@Operation(summary = "修改文章分类表", description = "修改文章分类表")
@SysLog("修改文章分类表")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_edit')")
public R updateById(@RequestBody AppArticleCategoryEntity appArticleCategory) {
return R.ok(appArticleCategoryService.updateById(appArticleCategory));
}
/**
* 通过id删除文章分类表
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除文章分类表", description = "通过id删除文章分类表")
@SysLog("通过id删除文章分类表")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appArticleCategoryService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param appArticleCategory 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_appArticleCategory_export')")
public List<AppArticleCategoryEntity> export(AppArticleCategoryEntity appArticleCategory) {
return appArticleCategoryService.list(Wrappers.query(appArticleCategory));
}
}

View File

@@ -0,0 +1,124 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import com.pig4cloud.pigx.app.service.AppArticleCollectService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 文章收藏表
*
* @author pig
* @date 2023-06-16 14:33:41
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/collect")
@Tag(description = "collect", name = "文章收藏表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppArticleCollectController {
private final AppArticleCollectService appArticleCollectService;
/**
* 分页查询
* @param page 分页对象
* @param appArticleCollect 文章收藏表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppArticleCollectPage(@ParameterObject Page page) {
MPJLambdaWrapper<AppArticleCollectEntity> wrapper = new MPJLambdaWrapper<AppArticleCollectEntity>()
.selectAll(AppArticleCollectEntity.class).select(AppArticleEntity::getTitle)
.leftJoin(AppArticleEntity.class, AppArticleEntity::getId, AppArticleCollectEntity::getArticleId)
.eq(AppArticleCollectEntity::getUserId, SecurityUtils.getUser().getId());
return R.ok(appArticleCollectService.selectJoinListPage(page, AppArticleCollectEntity.class, wrapper));
}
/**
* 通过id查询文章收藏表
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
public R getById(@PathVariable("id") Long id) {
return R.ok(appArticleCollectService.getById(id));
}
/**
* 新增文章收藏表
* @param appArticleCollect 文章收藏表
* @return R
*/
@Operation(summary = "新增文章收藏表", description = "新增文章收藏表")
@SysLog("新增文章收藏表")
@PostMapping
public R save(@RequestBody AppArticleCollectEntity appArticleCollect) {
return R.ok(appArticleCollectService.saveArticleCollect(appArticleCollect));
}
/**
* 修改文章收藏表
* @param appArticleCollect 文章收藏表
* @return R
*/
@Operation(summary = "修改文章收藏表", description = "修改文章收藏表")
@SysLog("修改文章收藏表")
@PutMapping
public R updateById(@RequestBody AppArticleCollectEntity appArticleCollect) {
return R.ok(appArticleCollectService.updateById(appArticleCollect));
}
/**
* 通过id删除文章收藏表
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除文章收藏表", description = "通过id删除文章收藏表")
@SysLog("通过id删除文章收藏表")
@DeleteMapping
public R removeById(@RequestBody Long[] ids) {
return R.ok(appArticleCollectService.removeBatchByIds(CollUtil.toList(ids)));
}
@Operation(summary = "通过文章id删除文章收藏表", description = "通过文章id删除文章收藏表")
@SysLog("通过文章id删除文章收藏表")
@DeleteMapping("/{articleId}")
public R removeByArticleId(@PathVariable String articleId) {
Long id = SecurityUtils.getUser().getId();
return R.ok(appArticleCollectService.remove(Wrappers.<AppArticleCollectEntity>lambdaQuery()
.eq(AppArticleCollectEntity::getUserId, id).eq(AppArticleCollectEntity::getArticleId, articleId)));
}
/**
* 导出excel 表格
* @param appArticleCollect 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_collect_export')")
public List<AppArticleCollectEntity> export(AppArticleCollectEntity appArticleCollect) {
return appArticleCollectService.list(Wrappers.query(appArticleCollect));
}
}

View File

@@ -0,0 +1,114 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import com.pig4cloud.pigx.app.service.AppArticleService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springdoc.api.annotations.ParameterObject;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 文章资讯
*
* @author pig
* @date 2023-06-07 16:32:35
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appArticle")
@Tag(description = "appArticle", name = "文章资讯管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppArticleController {
private final AppArticleService appArticleService;
/**
* 分页查询
* @param page 分页对象
* @param appArticle 文章资讯
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@Inner(value = false)
@GetMapping("/page")
public R getAppArticlePage(@ParameterObject Page page, @ParameterObject AppArticleEntity appArticle) {
return R.ok(appArticleService.pageAndCname(page, appArticle));
}
/**
* 通过id查询文章资讯
* @param id id
* @return R
*/
@Inner(value = false)
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/details/{id}/{userId}")
public R getById(@PathVariable("id") Long id, @PathVariable(required = false) Long userId) {
return R.ok(appArticleService.getArticleAndIncrById(id, userId));
}
/**
* 新增文章资讯
* @param appArticle 文章资讯
* @return R
*/
@Operation(summary = "新增文章资讯", description = "新增文章资讯")
@SysLog("新增文章资讯")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_appArticle_add')")
public R save(@RequestBody AppArticleEntity appArticle) {
return R.ok(appArticleService.save(appArticle));
}
/**
* 修改文章资讯
* @param appArticle 文章资讯
* @return R
*/
@Operation(summary = "修改文章资讯", description = "修改文章资讯")
@SysLog("修改文章资讯")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_appArticle_edit')")
public R updateById(@RequestBody AppArticleEntity appArticle) {
return R.ok(appArticleService.updateById(appArticle));
}
/**
* 通过id删除文章资讯
* @param ids id列表
* @return R
*/
@Operation(summary = "通过id删除文章资讯", description = "通过id删除文章资讯")
@SysLog("通过id删除文章资讯")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('app_appArticle_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appArticleService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 导出excel 表格
* @param appArticle 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_appArticle_export')")
public List<AppArticleEntity> export(AppArticleEntity appArticle) {
return appArticleService.list(Wrappers.query(appArticle));
}
}

View File

@@ -0,0 +1,59 @@
package com.pig4cloud.pigx.app.controller;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.service.AppIndexService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* app 首页控制
*
* @author lengleng
* @date 2023/6/8
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/index")
@Tag(description = "App 页面控制", name = "app index")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppIndexController {
private final AppIndexService indexService;
/**
* 首页
* @return Object
*/
@Inner(value = false)
@GetMapping("/index")
public R index() {
Map<String, Object> detail = indexService.index();
return R.ok(detail);
}
@Inner(value = false)
@GetMapping("/config")
public R config() {
Map<String, Object> map = indexService.config();
return R.ok(map);
}
@Inner(value = false)
@GetMapping("/decorate")
public R decorate(@Validated @RequestParam("id") Integer id) {
AppPageEntity detail = indexService.decorate(id);
return R.ok(detail);
}
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import com.pig4cloud.pigx.app.service.AppMobileService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author lengleng
* @date 2018/11/14
* <p>
* 手机验证码
*/
@RestController
@AllArgsConstructor
@RequestMapping("/appmobile")
@Tag(description = "mobile", name = "手机管理模块")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppMobileController {
private final AppMobileService appMobileService;
@Inner(value = false)
@GetMapping("/{mobile}")
public R sendSmsCode(@PathVariable String mobile) {
return appMobileService.sendSmsCode(mobile);
}
}

View File

@@ -0,0 +1,45 @@
package com.pig4cloud.pigx.app.controller;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.app.service.AppPageService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
/**
* 页面管理
*
* @author pig
* @date 2023-06-07 16:32:35
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appPage")
@Tag(description = "appPage", name = "页面管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppPageController {
private final AppPageService pageService;
/**
* 通过id查询文章资讯
* @param id id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{id}")
public R getById(@PathVariable("id") Long id) {
return R.ok(pageService.getById(id));
}
@Operation(summary = "更新页面", description = "更新页面")
@PutMapping
public R update(@RequestBody AppPageEntity page) {
return R.ok(pageService.updateById(page));
}
}

View File

@@ -0,0 +1,175 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.app.api.vo.AppRoleExcelVO;
import com.pig4cloud.pigx.app.service.AppRoleService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.RequestExcel;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/approle")
@Tag(description = "approle", name = "app角色表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppRoleController {
private final AppRoleService appRoleService;
/**
* 分页查询
* @param page 分页对象
* @param appRole app角色表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppRolePage(Page page, AppRole appRole) {
return R.ok(appRoleService.page(page, Wrappers.<AppRole>lambdaQuery()
.like(StrUtil.isNotBlank(appRole.getRoleName()), AppRole::getRoleName, appRole.getRoleName())));
}
/**
* 查询全部角色
* @return
*/
@Operation(summary = "查询全部", description = "查询全部")
@GetMapping("/list")
public R list() {
return R.ok(appRoleService.list(Wrappers.emptyWrapper()));
}
/**
* 通过id查询app角色表
* @param roleId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{roleId}")
public R getById(@PathVariable("roleId") Long roleId) {
return R.ok(appRoleService.getById(roleId));
}
/**
* 通过roleName查询app角色表
* @param roleName roleName
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/details/{roleName}")
public R getByUserName(@PathVariable("roleName") String roleName) {
return R.ok(appRoleService.getOne(Wrappers.<AppRole>lambdaQuery().eq(AppRole::getRoleName, roleName)));
}
/**
* 通过roleCode查询app角色表
* @param roleCode roleCode
* @return R
*/
@Operation(summary = "通过roleCode查询", description = "通过roleCode查询")
@GetMapping("/detailsByCode/{roleCode}")
public R getByPhone(@PathVariable("roleCode") String roleCode) {
return R.ok(appRoleService.getOne(Wrappers.<AppRole>lambdaQuery().eq(AppRole::getRoleCode, roleCode)));
}
/**
* 新增app角色表
* @param appRole app角色表
* @return R
*/
@Operation(summary = "新增app角色表", description = "新增app角色表")
@SysLog("新增app角色表")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_approle_add')")
public R save(@RequestBody AppRole appRole) {
return R.ok(appRoleService.save(appRole));
}
/**
* 修改app角色表
* @param appRole app角色表
* @return R
*/
@Operation(summary = "修改app角色表", description = "修改app角色表")
@SysLog("修改app角色表")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_approle_edit')")
public R updateById(@RequestBody AppRole appRole) {
return R.ok(appRoleService.updateById(appRole));
}
/**
* 通过ids批量删除app角色表
* @param ids roleIds
* @return R
*/
@Operation(summary = "通过ids批量删除app角色表", description = "通过ids批量删除app角色表")
@SysLog("通过ids批量删除app角色表")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('app_approle_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appRoleService.deleteRoleByIds(ids));
}
/**
* 导出excel 表格
* @param appRole 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_approle_export')")
public List<AppRole> export(AppRole appRole) {
return appRoleService.list(Wrappers.query(appRole));
}
/**
* 导入角色
* @param excelVOList 角色列表
* @param bindingResult 错误信息列表
* @return ok fail
*/
@PostMapping("/import")
@PreAuthorize("@pms.hasPermission('app_approle_export')")
public R importRole(@RequestExcel List<AppRoleExcelVO> excelVOList, BindingResult bindingResult) {
return appRoleService.importRole(excelVOList, bindingResult);
}
}

View File

@@ -0,0 +1,139 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.app.service.AppSocialDetailsService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.core.util.ValidGroup;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@RestController
@RequestMapping("/appsocial")
@AllArgsConstructor
@Tag(description = "social", name = "三方账号管理模块")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppSocialDetailsController {
private final AppSocialDetailsService appSocialDetailsService;
/**
* 社交登录账户简单分页查询
* @param page 分页对象
* @param appSocialDetails 社交登录
* @return
*/
@GetMapping("/page")
public R getSocialDetailsPage(Page page, AppSocialDetails appSocialDetails) {
return R.ok(appSocialDetailsService.page(page, Wrappers.query(appSocialDetails)));
}
/**
* 信息
* @param id id
* @return R
*/
@GetMapping("/{id}")
public R getinfo(@PathVariable("id") Long id) {
return R.ok(appSocialDetailsService.getById(id));
}
/**
* 保存
* @param appSocialDetails
* @return R
*/
@SysLog("保存三方信息")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_social_details_add')")
public R save(@Valid @RequestBody AppSocialDetails appSocialDetails) {
return R.ok(appSocialDetailsService.save(appSocialDetails));
}
/**
* 修改
* @param appSocialDetails
* @return R
*/
@SysLog("修改三方信息")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_social_details_edit')")
public R updateById(@Validated({ ValidGroup.Update.class }) @RequestBody AppSocialDetails appSocialDetails) {
appSocialDetailsService.updateById(appSocialDetails);
return R.ok(Boolean.TRUE);
}
/**
* 删除
* @param ids
* @return R
*/
@SysLog("删除三方信息")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('app_social_details_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appSocialDetailsService.removeBatchByIds(CollUtil.toList(ids)));
}
/**
* 通过社交账号、手机号查询用户、角色信息
* @param inStr appid@code
* @return
*/
@Inner
@GetMapping("/info/{inStr}")
public R getUserInfo(@PathVariable String inStr) {
return R.ok(appSocialDetailsService.getUserInfo(inStr));
}
/**
* 绑定社交账号
* @param state 类型
* @param code code
* @return
*/
@PostMapping("/bind")
public R bindSocial(String state, String code) {
return R.ok(appSocialDetailsService.bindSocial(state, code));
}
/**
* 导出
*/
@GetMapping("/export")
@ResponseExcel
public List<AppSocialDetails> export(AppSocialDetails appSocialDetails) {
return appSocialDetailsService.list(Wrappers.query(appSocialDetails));
}
}

View File

@@ -0,0 +1,52 @@
package com.pig4cloud.pigx.app.controller;
import cn.hutool.core.collection.CollUtil;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.app.service.AppTabbarService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.stream.Collectors;
/**
* 底部导航
*
* @author pig
* @date 2023-06-07 16:32:35
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appTabbar")
@Tag(description = "appTabbar", name = "底部导航")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppTabbarController {
private final AppTabbarService tabbarService;
/**
* 查询导航列表
* @return R
*/
@Operation(summary = "查询导航列表", description = "查询导航列表")
@GetMapping("/list")
public R list() {
return R.ok(tabbarService.list());
}
@Operation(summary = "更新导航", description = "更新导航")
@PutMapping
public R update(@RequestBody List<AppTabbarEntity> tabbarEntityList) {
// 删除不在新增范围的导航菜单
List<Long> idList = tabbarService.list().stream().map(AppTabbarEntity::getId).collect(Collectors.toList());
List<Long> newIdList = tabbarEntityList.stream().map(AppTabbarEntity::getId).collect(Collectors.toList());
tabbarService.removeBatchByIds(CollUtil.subtractToList(idList, newIdList));
return R.ok(tabbarService.saveOrUpdateBatch(tabbarEntityList));
}
}

View File

@@ -0,0 +1,208 @@
package com.pig4cloud.pigx.app.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.common.core.constant.CommonConstants;
import com.pig4cloud.pigx.common.core.constant.enums.UserTypeEnum;
import com.pig4cloud.pigx.common.core.exception.ErrorCodes;
import com.pig4cloud.pigx.common.core.util.MsgUtils;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.RequestExcel;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import com.pig4cloud.pigx.common.security.util.SecurityUtils;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appuser")
@Tag(description = "appuser", name = "app用户表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppUserController {
private final AppUserService appUserService;
/**
* 注册用户
* @param userDto 用户信息
* @return success/false
*/
@Operation(summary = "注册用户", description = "注册用户")
@Inner(value = false)
@SysLog("注册用户")
@PostMapping("/regUser")
public R<Boolean> registerUser(@RequestBody AppUserDTO userDto) {
// 判断用户名是否存在
AppUser user = appUserService.getOne(Wrappers.<AppUser>query()
.lambda().eq(AppUser::getUsername, userDto.getUsername()));
if (user != null) {
String message = MsgUtils.getMessage(ErrorCodes.SYS_USER_USERNAME_EXISTING, userDto.getUsername());
return R.failed(message);
}
return R.ok(appUserService.regUser(userDto));
}
@Inner
@GetMapping("/info/{username}")
public R info(@PathVariable String username) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getUsername, username).or()
.eq(AppUser::getPhone, username));
if (user == null) {
return R.failed(MsgUtils.getMessage(ErrorCodes.APP_USER_USERINFO_EMPTY, username));
}
return R.ok(appUserService.findUserInfo(user));
}
/**
* 获取当前用户全部信息
* @return 用户信息
*/
@GetMapping(value = { "/info" })
public R info() {
String username = SecurityUtils.getUser().getUsername();
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getUsername, username));
if (user == null) {
return R.failed(MsgUtils.getMessage(ErrorCodes.SYS_USER_QUERY_ERROR));
}
return R.ok(appUserService.findUserInfo(user));
}
/**
* 分页查询
* @param page 分页对象
* @param appUserDTO app用户表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
public R getAppUserPage(Page page, AppUserDTO appUserDTO) {
return R.ok(appUserService.getUsersWithRolePage(page, appUserDTO));
}
/**
* 通过id查询app用户表
* @param userId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/details/{userId}")
public R getById(@PathVariable("userId") Long userId) {
return R.ok(appUserService.selectUserVoById(userId));
}
/**
* @return R
*/
@Operation(summary = "通过userName查询", description = "通过userName查询")
@GetMapping("/details")
public R getByUserName(AppUser user) {
AppUser one = appUserService.getOne(Wrappers.query(user), false);
return R.ok(one == null ? null : CommonConstants.SUCCESS);
}
/**
* 新增app用户表
* @param appUser app用户表
* @return R
*/
@Operation(summary = "新增app用户表", description = "新增app用户表")
@SysLog("新增app用户表")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_appuser_add')")
public R save(@RequestBody AppUserDTO appUser) {
appUserService.saveUser(appUser);
return R.ok();
}
/**
* 修改app用户表
* @param appUser app用户表
* @return R
*/
@Operation(summary = "修改app用户表", description = "修改app用户表")
@SysLog("修改app用户表")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_appuser_edit')")
public R updateById(@RequestBody AppUserDTO appUser) {
return R.ok(appUserService.updateUser(appUser));
}
/**
* 通过id删除app用户表
* @param ids userIds
* @return R
*/
@Operation(summary = "通过ids删除app用户表", description = "通过ids删除app用户表")
@SysLog("通过id删除app用户表")
@DeleteMapping
@PreAuthorize("@pms.hasPermission('app_appuser_del')")
public R removeById(@RequestBody Long[] ids) {
return R.ok(appUserService.deleteAppUserByIds(ids));
}
/**
* 导出excel 表格
* @param appUser 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_appuser_export')")
public List<AppUserExcelVO> export(AppUserDTO appUser) {
return appUserService.listUser(appUser);
}
@SysLog("修改个人信息")
@PutMapping("/edit")
public R updateUserInfo(@Valid @RequestBody AppUserDTO userDto) {
if (UserTypeEnum.TOC.getStatus().equals(SecurityUtils.getUser().getUserType())) {
userDto.setUserId(SecurityUtils.getUser().getId());
// TOC 以手机号为key
userDto.setUsername(SecurityUtils.getUser().getUsername());
}
return appUserService.updateUserInfo(userDto);
}
/**
* 导入用户
* @param excelVOList 用户列表
* @param bindingResult 错误信息列表
* @return R
*/
@PostMapping("/import")
@PreAuthorize("@pms.hasPermission('app_appuser_export')")
public R importUser(@RequestExcel List<AppUserExcelVO> excelVOList, BindingResult bindingResult) {
return appUserService.importUser(excelVOList, bindingResult);
}
@Operation(summary = "注册app用户表", description = "注册app用户表")
@SysLog("注册app用户表")
@Inner(value = false)
@PostMapping("/register")
public R register(@RequestBody AppUserDTO appUser) {
return appUserService.registerAppUser(appUser);
}
}

View File

@@ -0,0 +1,128 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.app.service.AppUserRoleService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.excel.annotation.ResponseExcel;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/appuserrole")
@Tag(description = "appuserrole", name = "用户角色表管理")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AppUserRoleController {
private final AppUserRoleService appUserRoleService;
/**
* 分页查询
* @param page 分页对象
* @param appUserRole 用户角色表
* @return
*/
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page")
@PreAuthorize("@pms.hasPermission('app_appuserrole_view')")
public R getAppUserRolePage(Page page, AppUserRole appUserRole) {
return R.ok(appUserRoleService.page(page, Wrappers.query(appUserRole)));
}
/**
* 通过id查询用户角色表
* @param userId id
* @return R
*/
@Operation(summary = "通过id查询", description = "通过id查询")
@GetMapping("/{userId}")
@PreAuthorize("@pms.hasPermission('app_appuserrole_view')")
public R getById(@PathVariable("userId") Long userId) {
return R.ok(appUserRoleService.getById(userId));
}
/**
* 新增用户角色表
* @param appUserRole 用户角色表
* @return R
*/
@Operation(summary = "新增用户角色表", description = "新增用户角色表")
@SysLog("新增用户角色表")
@PostMapping
@PreAuthorize("@pms.hasPermission('app_appuserrole_add')")
public R save(@RequestBody AppUserRole appUserRole) {
return R.ok(appUserRoleService.save(appUserRole));
}
/**
* 修改用户角色表
* @param appUserRole 用户角色表
* @return R
*/
@Operation(summary = "修改用户角色表", description = "修改用户角色表")
@SysLog("修改用户角色表")
@PutMapping
@PreAuthorize("@pms.hasPermission('app_appuserrole_edit')")
public R updateById(@RequestBody AppUserRole appUserRole) {
return R.ok(appUserRoleService.updateById(appUserRole));
}
/**
* 通过id删除用户角色表
* @param userId id
* @return R
*/
@Operation(summary = "通过id删除用户角色表", description = "通过id删除用户角色表")
@SysLog("通过id删除用户角色表")
@DeleteMapping("/{userId}")
@PreAuthorize("@pms.hasPermission('app_appuserrole_del')")
public R removeById(@PathVariable Long userId) {
return R.ok(appUserRoleService.removeById(userId));
}
/**
* 导出excel 表格
* @param appUserRole 查询条件
* @return excel 文件流
*/
@ResponseExcel
@GetMapping("/export")
@PreAuthorize("@pms.hasPermission('app_appuserrole_export')")
public List<AppUserRole> export(AppUserRole appUserRole) {
return appUserRoleService.list(Wrappers.query(appUserRole));
}
}

View File

@@ -0,0 +1,51 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsPlatformService;
import com.pig4cloud.pigx.app.service.as.AsSubPayrollService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* AS 公用API
* 注:不需要访问权限
* 注2限制请求频次
*
* @author amigo
* @date 2023-8
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asApi")
@Tag(description = "AS-public-api", name = "AS-公用API")
//@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsApi {
//传参二进制加密?
private final AsPlatformService asPlatformService;
private final AsSubPayrollService asSubPayrollService;
/**
* 获取首页产品、用户订单、评价等 展示信息
* todo 静态缓存,限流
* @return
*/
@Operation(summary = "首页产品、订单信息", description = "首页产品、订单信息")
@GetMapping("/indexInfo")
public R indexInfo(){
// asPlatformService.getById();
// AsSubPayroll byId = asSubPayrollService.getById();
return null;
}
//首页信息
}

View File

@@ -0,0 +1,69 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatform;
import com.pig4cloud.pigx.app.service.as.AsPlatformService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* as 媒体平台
*
* @author amigo
* @date 2023-7
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asPlatform")
@Tag(description = "AS platform manage", name = "AS-流媒体平台")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsPlatformController {
private final AsPlatformService asPlatformService;
/**
* 新增媒体平台
* @param asPlatform 媒体平台
* @return success/false
*/
@Operation(summary = "新增媒体平台", description = "新增媒体平台")
@PostMapping("/save")
public R save(@Valid @RequestBody AsPlatform asPlatform) {
asPlatformService.save(asPlatform);
return R.ok();
}
/**
* 返回媒体平台集合
* @param platType 媒体平台
* @return 媒体平台集合
* get -> post
*/
@Inner(value = false)
@Operation(summary = "查询媒体平台", description = "查询媒体平台 0全部")
@GetMapping("/getPlatform")
public R getPlatform(Integer platType) {
return R.ok(asPlatformService.listAsPlatformByType(platType));
}
/**
* 更新媒体平台
* @param asPlatform
* @return
*/
@SysLog("更新媒体平台")
@Operation(summary = "更新媒体平台", description = "更新媒体平台")
@PutMapping("/update")
public R update(@Valid @RequestBody AsPlatform asPlatform) {
return R.ok(asPlatformService.updateById(asPlatform));
}
}

View File

@@ -0,0 +1,71 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatformType;
import com.pig4cloud.pigx.app.service.as.AsPlatformTypeService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.log.annotation.SysLog;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* as 平台类型
*
* @author amigo
* @date 2023-7
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asPlatformType")
@Tag(description = "AS-platformType-manage", name = "AS-平台类型")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsPlatformTypeController {
private final AsPlatformTypeService asPlatformTypeService;
/**
* 新增订阅计划
* @param asPlatformType 订阅计划
* @return success/false
*/
@SysLog("新增平台类型")
@Operation(summary = "新增平台类型", description = "新增平台类型")
@PostMapping("/save")
// @PreAuthorize("@pms.hasPermission('as_subplan_add')")
public R save(@Valid @RequestBody AsPlatformType asPlatformType) {
asPlatformTypeService.save(asPlatformType);
return R.ok();
}
/**
* 返回平台类型集合
* @param platType 平台类型
* @return 平台类型集合
* get -> post
*/
@Inner(value = false)
@Operation(summary = "查询平台类型", description = "查询平台类型 0全部")
@GetMapping("/getPlatformType")
public R getPlatformType(Integer platType) {
return R.ok(asPlatformTypeService.listAsPlatformTypeByType(platType));
}
/**
* 更新平台类型
* @param asPlatformType
* @return
*/
@SysLog("更新平台类型")
@Operation(summary = "更新平台类型", description = "更新平台类型")
@PutMapping("/update")
public R update(@Valid @RequestBody AsPlatformType asPlatformType) {
return R.ok(asPlatformTypeService.updateById(asPlatformType));
}
}

View File

@@ -0,0 +1,42 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsSubAccountService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* as 订阅账号表
*
* @author amigo
* @date 2023-8
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asSubAccount")
@Tag(description = "AS-subAccount-manage", name = "AS-流媒体账号")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsSubAccountController {
private final AsSubAccountService asSubAccountService;
//get by userid (前台) 其他条件 平台、订阅付费计划、 时间、
@Inner(value = false)
@Operation(summary = "获取订阅账号", description = "获取订阅账号")
@GetMapping("/getSubAccountBy")
public R getSubAccountBy() {
// return R.ok(asSubAccountService.getOne());
// return R.ok(asSubAccountService.listByMap());
return null;
}
}

View File

@@ -0,0 +1,41 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsSubPayrollService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* as 订阅付费计划
*
* @author amigo
* @date 2023-8
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asSubPayroll")
@Tag(description = "AS-subPayroll-manage", name = "AS-订阅付费计划")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsSubPayrollController {
private final AsSubPayrollService asSubPayrollService;
/**
* 返回订阅计划集合
* @param platId 平台id
* @return 订阅计划集合
*/
@Inner(value = false)
@Operation(summary = "获取订阅计划", description = "获取订阅计划")
@GetMapping("/getSubPayrollBy")
public R getSubPayrollBy(Long platId,String region) {
return R.ok(asSubPayrollService.listByPlatId(platId,region));
}
}

View File

@@ -0,0 +1,65 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPlan;
import com.pig4cloud.pigx.app.service.as.AsSubPlanService;
import com.pig4cloud.pigx.common.core.util.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* as 订阅计划表
*
* @author amigo
* @date 2023-7
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asSubPlan")
@Tag(description = "AS-subPlan-manage", name = "AS-流媒体订阅计划")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsSubPlanController {
private final AsSubPlanService asSubPlanService;
/**
* 新增订阅计划
* @param subPlan 订阅计划
* @return success/false
*/
@Operation(summary = "新增订阅计划", description = "新增订阅计划")
@PostMapping("/save")
// @PreAuthorize("@pms.hasPermission('as_subplan_add')")
public R save(@Valid @RequestBody AsSubPlan subPlan) {
asSubPlanService.save(subPlan);
return R.ok();
}
/**
* 返回订阅计划集合
* @param platId 平台id
* @return 订阅计划集合
*/
@Operation(summary = "获取订阅计划", description = "获取订阅计划")
@GetMapping("/getSubPlan")
public R getSubPlan(Long platId) {
return R.ok(asSubPlanService.listSubPlanByPlatId(platId));
}
/**
* 更新订阅计划
* @param subPlan
* @return
*/
@Operation(summary = "更新订阅计划", description = "更新订阅计划")
@PutMapping("/update")
public R update(@Valid @RequestBody AsSubPlan subPlan) {
return R.ok(asSubPlanService.updateById(subPlan));
}
}

View File

@@ -0,0 +1,26 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsSubProductCmtService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* as 订阅产品评价
*
* @author amigo
* @date 2023-9
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asSubProductCmt")
@Tag(description = "AS-sub-product-comment", name = "AS-订阅产品评价")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsSubProductCmtController {
private final AsSubProductCmtService asSubProductCmtService;
}

View File

@@ -0,0 +1,26 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsSubProductService;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* as 订阅产品
*
* @author amigo
* @date 2023-9
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asSubProduct")
@Tag(description = "AS-sub-product", name = "AS-订阅产品")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsSubProductController {
private final AsSubProductService asSubProductService;
}

View File

@@ -0,0 +1,45 @@
package com.pig4cloud.pigx.app.controller.as;
import com.pig4cloud.pigx.app.service.as.AsUserSubService;
import com.pig4cloud.pigx.common.core.util.R;
import com.pig4cloud.pigx.common.security.annotation.Inner;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* as 用户订阅
*
* @author amigo
* @date 2023-7
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/asUserSub")
@Tag(description = "AS-sub-manage", name = "AS-订阅")
@SecurityRequirement(name = HttpHeaders.AUTHORIZATION)
public class AsUserSubController {
//init first page ?
private final AsUserSubService asUserSubService;
/**
* 获取订阅人数
* 根据平台类型查询总订阅人数 、 新增至redis
*/
@Inner(value = false)
@Operation(summary = "获取订阅人数", description = "获取订阅人数")
@GetMapping("/getSubCount")
public R getSubCount(){
return R.ok();
}
}

View File

@@ -0,0 +1,53 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
/**
* @author lengleng
* @date 2018/11/18
*/
public abstract class AbstractLoginHandler implements LoginHandler {
/***
* 数据合法性校验
* @param loginStr 通过用户传入获取唯一标识
* @return 默认不校验
*/
@Override
public Boolean check(String loginStr) {
return true;
}
/**
* 处理方法
* @param loginStr 登录参数
* @return
*/
@Override
public AppUserInfo handle(String loginStr) {
if (!check(loginStr)) {
return null;
}
String identify = identify(loginStr);
return info(identify);
}
}

View File

@@ -0,0 +1,69 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
/**
* @author lengleng
* @date 2018/11/18
* <p>
* 登录处理器
*/
public interface LoginHandler {
/***
* 数据合法性校验
* @param loginStr 通过用户传入获取唯一标识
* @return
*/
Boolean check(String loginStr);
/**
* 通过用户传入获取唯一标识
* @param loginStr
* @return
*/
String identify(String loginStr);
/**
* 通过openId 获取用户信息
* @param identify
* @return
*/
AppUserInfo info(String identify);
/**
* 处理方法
* @param loginStr 登录参数
* @return
*/
AppUserInfo handle(String loginStr);
/**
* 绑定逻辑
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
default Boolean bind(AppUser user, String identify) {
return false;
}
}

View File

@@ -0,0 +1,112 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.mapper.AppSocialDetailsMapper;
import com.pig4cloud.pigx.app.service.AppUserService;
import com.pig4cloud.pigx.common.core.constant.SecurityConstants;
import com.pig4cloud.pigx.common.core.constant.enums.LoginTypeEnum;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author lengleng
* @date 2019年11月02日
* <p>
* 微信小程序
*/
@Slf4j
@Component("APP-MINI")
@AllArgsConstructor
public class MiniAppLoginHandler extends AbstractLoginHandler {
private final AppUserService appUserService;
private final AppSocialDetailsMapper appSocialDetailsMapper;
/**
* 小程序登录传入code
* <p>
* 通过code 调用qq 获取唯一标识
* @param code
* @return
*/
@Override
public String identify(String code) {
AppSocialDetails condition = new AppSocialDetails();
condition.setType(LoginTypeEnum.MINI_APP.getType());
AppSocialDetails socialDetails = appSocialDetailsMapper.selectOne(new QueryWrapper<>(condition));
String url = String.format(SecurityConstants.MINI_APP_AUTHORIZATION_CODE_URL, socialDetails.getAppId(),
socialDetails.getAppSecret(), code);
String result = HttpUtil.get(url);
log.debug("微信小程序响应报文:{}", result);
Object obj = JSONUtil.parseObj(result).get("openid");
return obj.toString();
}
/**
* openId 获取用户信息
* @param openId
* @return
*/
@Override
public AppUserInfo info(String openId) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getWxOpenid, openId));
if (user == null) {
log.info("微信小程序未绑定:{},创建新的用户", openId);
return createAndSaveAppUserInfo(openId);
}
return appUserService.findUserInfo(user);
}
/**
* 绑定逻辑
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
@Override
public Boolean bind(AppUser user, String identify) {
user.setWxOpenid(identify);
appUserService.updateById(user);
return true;
}
private AppUserInfo createAndSaveAppUserInfo(String openId) {
AppUser appUser = new AppUser();
appUser.setWxOpenid(openId);
appUser.setUsername(openId);
appUserService.saveOrUpdate(appUser, Wrappers.<AppUser>lambdaQuery().eq(AppUser::getUsername, openId));
AppUserInfo appUserDTO = new AppUserInfo();
appUserDTO.setAppUser(appUser);
return appUserDTO;
}
}

View File

@@ -0,0 +1,94 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.service.AppUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
/**
* @author lengleng
* @date 2018/11/18
*/
@Slf4j
@Component("APP-SMS")
@AllArgsConstructor
public class SmsLoginHandler extends AbstractLoginHandler {
private final AppUserService appUserService;
/**
* 验证码登录传入为手机号 不用不处理
* @param mobile
* @return
*/
@Override
public String identify(String mobile) {
return mobile;
}
/**
* 通过mobile 获取用户信息
* @param identify
* @return
*/
@Override
public AppUserInfo info(String identify) {
AppUser user = appUserService.getOne(Wrappers.<AppUser>query().lambda().eq(AppUser::getPhone, identify));
if (user == null) {
log.info("手机号未注册:{}", identify);
return createAndSaveAppUserInfo(identify);
}
return appUserService.findUserInfo(user);
}
/**
* 创建并插入用户
* @param identify
* @return
*/
private AppUserInfo createAndSaveAppUserInfo(String phone) {
AppUser appUser = new AppUser();
appUser.setUsername(phone);
appUser.setPhone(phone);
appUserService.saveOrUpdate(appUser, Wrappers.<AppUser>lambdaQuery().eq(AppUser::getPhone, phone));
AppUserInfo appUserDTO = new AppUserInfo();
appUserDTO.setAppUser(appUser);
return appUserDTO;
}
/**
* 绑定逻辑
* @param user 用户实体
* @param identify 渠道返回唯一标识
* @return
*/
@Override
public Boolean bind(AppUser user, String identify) {
user.setPhone(identify);
appUserService.updateById(user);
return true;
}
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppArticleCategoryMapper extends PigxBaseMapper<AppArticleCategoryEntity> {
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppArticleCollectMapper extends PigxBaseMapper<AppArticleCollectEntity> {
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppArticleMapper extends PigxBaseMapper<AppArticleEntity> {
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppPageMapper extends PigxBaseMapper<AppPageEntity> {
}

View File

@@ -0,0 +1,37 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Mapper
public interface AppRoleMapper extends PigxBaseMapper<AppRole> {
List<AppRole> listRolesByUserId(Long userId);
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 系统社交登录账号表
*
* @author lengleng
* @date 2018-08-16 21:30:41
*/
@Mapper
public interface AppSocialDetailsMapper extends PigxBaseMapper<AppSocialDetails> {
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface AppTabbarMapper extends PigxBaseMapper<AppTabbarEntity> {
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserVO;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Mapper
public interface AppUserMapper extends PigxBaseMapper<AppUser> {
IPage<AppUserVO> getUserVosPage(Page page, @Param("query") AppUserDTO appUserDTO);
AppUserVO getUserVoById(Long userId);
}

View File

@@ -0,0 +1,33 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.mapper;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
@Mapper
public interface AppUserRoleMapper extends PigxBaseMapper<AppUserRole> {
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatform;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 媒体平台
*
* @author amigo
* @date 2023-07
*/
@Mapper
public interface AsPlatformMapper extends PigxBaseMapper<AsPlatform> {
List<AsPlatform> listAsPlatformByType(Integer platformType);
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatformType;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 平台类型
*
* @author amigo
* @date 2023-07
*/
@Mapper
public interface AsPlatformTypeMapper extends PigxBaseMapper<AsPlatformType> {
List<AsPlatformType> listAsPlatformTypeByType(Integer platformType);
}

View File

@@ -0,0 +1,15 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubAccount;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 订阅计划
*
* @author amigo
* @date 2023-08
*/
@Mapper
public interface AsSubAccountMapper extends PigxBaseMapper<AsSubAccount> {
}

View File

@@ -0,0 +1,19 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPayroll;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 订阅付费计划
*
* @author amigo
* @date 2023-08
*/
@Mapper
public interface AsSubPayrollMapper extends PigxBaseMapper<AsSubPayroll> {
List<AsSubPayroll> listByPlatId(@Param("platId")Long platId, @Param("region")String region);
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPlan;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 订阅计划
*
* @author amigo
* @date 2023-07
*/
@Mapper
public interface AsSubPlanMapper extends PigxBaseMapper<AsSubPlan> {
List<AsSubPlan> listSubPlanByPlatId(Long platId);
}

View File

@@ -0,0 +1,16 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubProductComment;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 媒体平台
*
* @author amigo
* @date 2023-09
*/
@Mapper
public interface AsSubProductCommentMapper extends PigxBaseMapper<AsSubProductComment> {
}

View File

@@ -0,0 +1,15 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsSubProduct;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* 媒体平台
*
* @author amigo
* @date 2023-09
*/
@Mapper
public interface AsSubProductMapper extends PigxBaseMapper<AsSubProduct> {
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.mapper.as;
import com.pig4cloud.pigx.app.api.entity.as.AsUserSub;
import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* 用户订阅
*
* @author amigo
* @date 2023-07
*/
@Mapper
public interface AsUserSubMapper extends PigxBaseMapper<AsUserSub> {
List<AsUserSub> listSubPlanById(Long id);
}

View File

@@ -0,0 +1,8 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppArticleCategoryEntity;
public interface AppArticleCategoryService extends IService<AppArticleCategoryEntity> {
}

View File

@@ -0,0 +1,10 @@
package com.pig4cloud.pigx.app.service;
import com.github.yulichang.base.MPJBaseService;
import com.pig4cloud.pigx.app.api.entity.AppArticleCollectEntity;
public interface AppArticleCollectService extends MPJBaseService<AppArticleCollectEntity> {
Boolean saveArticleCollect(AppArticleCollectEntity appArticleCollect);
}

View File

@@ -0,0 +1,24 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppArticleEntity;
public interface AppArticleService extends IService<AppArticleEntity> {
/**
* 获取文章并使阅读数+1
* @param id id
* @return
*/
AppArticleEntity getArticleAndIncrById(Long id, Long userId);
/**
* 分页查询文章列表 包含分类名称
* @param page 分页参数
* @param appArticle 文章查询条件
* @return
*/
Page pageAndCname(Page page, AppArticleEntity appArticle);
}

View File

@@ -0,0 +1,33 @@
package com.pig4cloud.pigx.app.service;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
import java.util.Map;
/**
* app 页面控制
*
* @author lengleng
* @date 2023/6/8
*/
public interface AppIndexService {
/**
* 首页
*/
Map<String, Object> index();
/**
* 配置
* @return Map<String, Object>
*/
Map<String, Object> config();
/**
* 装修
* @param id 装修ID
* @return Map<String, Object>
*/
AppPageEntity decorate(Integer id);
}

View File

@@ -0,0 +1,35 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.pig4cloud.pigx.common.core.util.R;
/**
* @author lengleng
* @date 2018/11/14
*/
public interface AppMobileService {
/**
* 发送手机验证码
* @param mobile mobile
* @return code
*/
R<Boolean> sendSmsCode(String mobile);
}

View File

@@ -0,0 +1,8 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppPageEntity;
public interface AppPageService extends IService<AppPageEntity> {
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppRole;
import com.pig4cloud.pigx.app.api.vo.AppRoleExcelVO;
import com.pig4cloud.pigx.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List;
/**
* app角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
public interface AppRoleService extends IService<AppRole> {
List<AppRole> findRolesByUserId(Long userId);
/**
* 删除用户的同时把role_menu关系删除
* @param ids RoleIds
*/
Boolean deleteRoleByIds(Long[] ids);
R importRole(List<AppRoleExcelVO> excelVOList, BindingResult bindingResult);
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppSocialDetails;
/**
* 系统社交登录账号表
*
* @author lengleng
* @date 2018-08-16 21:30:41
*/
public interface AppSocialDetailsService extends IService<AppSocialDetails> {
/**
* 绑定社交账号
* @param state 类型
* @param code code
* @return
*/
Boolean bindSocial(String state, String code);
/**
* 根据入参查询用户信息
* @param inStr
* @return
*/
AppUserInfo getUserInfo(String inStr);
}

View File

@@ -0,0 +1,8 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppTabbarEntity;
public interface AppTabbarService extends IService<AppTabbarEntity> {
}

View File

@@ -0,0 +1,31 @@
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the pig4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.AppUserRole;
/**
* 用户角色表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
public interface AppUserRoleService extends IService<AppUserRole> {
}

View File

@@ -0,0 +1,46 @@
package com.pig4cloud.pigx.app.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.dto.AppUserDTO;
import com.pig4cloud.pigx.app.api.dto.AppUserInfo;
import com.pig4cloud.pigx.app.api.entity.AppUser;
import com.pig4cloud.pigx.app.api.vo.AppUserExcelVO;
import com.pig4cloud.pigx.app.api.vo.AppUserVO;
import com.pig4cloud.pigx.common.core.util.R;
import org.springframework.validation.BindingResult;
import java.util.List;
/**
* app用户表
*
* @author aeizzz
* @date 2022-12-07 09:52:03
*/
public interface AppUserService extends IService<AppUser> {
Boolean regUser(AppUserDTO appUser);
Boolean updateUser(AppUserDTO appUser);
Boolean saveUser(AppUserDTO appUser);
List<AppUserExcelVO> listUser(AppUserDTO appUser);
IPage getUsersWithRolePage(Page page, AppUserDTO appUserDTO);
AppUserInfo findUserInfo(AppUser user);
R updateUserInfo(AppUserDTO userDto);
AppUserVO selectUserVoById(Long userId);
Boolean deleteAppUserByIds(Long[] ids);
R importUser(List<AppUserExcelVO> excelVOList, BindingResult bindingResult);
R registerAppUser(AppUserDTO appUser);
}

View File

@@ -0,0 +1,18 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatform;
import java.util.List;
/**
* As 媒体平台
*
* @author amigo
* @date 2023-07
*/
public interface AsPlatformService extends IService<AsPlatform> {
List<AsPlatform> listAsPlatformByType(Integer platformType);
}

View File

@@ -0,0 +1,22 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatformType;
import java.util.List;
/**
* As 媒体平台
*
* @author amigo
* @date 2023-07
*/
public interface AsPlatformTypeService extends IService<AsPlatformType> {
List<AsPlatformType> listAsPlatformTypeByType(Integer platformType);
// R removePlatformTypeById(Long id);
// Boolean updatePlatformTypeById(AsPlatformType asPlatformType);
}

View File

@@ -0,0 +1,14 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsSubAccount;
/**
* 订阅账号表
*
* @author amigo
* @date 2023-08
*/
public interface AsSubAccountService extends IService<AsSubAccount> {
}

View File

@@ -0,0 +1,23 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPayroll;
import java.util.List;
/**
* 订阅付费计划
*
* @author amigo
* @date 2023-08
*/
public interface AsSubPayrollService extends IService<AsSubPayroll> {
/**
* 通过平台Id查询订阅列表
* @param platId 平台ID
* @return 订阅列表
*/
List<AsSubPayroll> listByPlatId(Long platId, String region);
}

View File

@@ -0,0 +1,53 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPlan;
import java.util.List;
/**
* AsSubPlan
*
* @author amigo
* @date 2023-07
*/
public interface AsSubPlanService extends IService<AsSubPlan> {
/**
* 通过平台Id查询订阅列表
* @param platId 平台ID
* @return 订阅列表
*/
List<AsSubPlan> listSubPlanByPlatId(Long platId);
/**
* 级联删除订阅
* @param id 订阅ID
* @return 成功、失败
*/
// R removeSubPlanById(Long id);
/**
* 更新订阅信息
* @param subPlan 订阅信息
* @return 成功、失败
*/
// Boolean updateSubPlanById(AsSubPlan subPlan);
/**
* 构建树
* @param parentId 父节点ID
* @param subPlanName 订阅名称
* @return
*/
// List<Tree<Long>> treeSubPlan(Long parentId, String subPlanName);
/**
* 查询订阅
* @param voSet
* @param parentId
* @return
*/
// List<Tree<Long>> filterSubPlan(Set<AsSubPlan> voSet, String type, Long parentId);
}

View File

@@ -0,0 +1,12 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsSubProductComment;
/**
* @author amigo
* @date 2023-09
*/
public interface AsSubProductCmtService extends IService<AsSubProductComment> {
}

View File

@@ -0,0 +1,12 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsSubProduct;
/**
* @author amigo
* @date 2023-09
*/
public interface AsSubProductService extends IService<AsSubProduct> {
}

View File

@@ -0,0 +1,53 @@
package com.pig4cloud.pigx.app.service.as;
import com.baomidou.mybatisplus.extension.service.IService;
import com.pig4cloud.pigx.app.api.entity.as.AsUserSub;
import java.util.List;
/**
* AsSubPlan
*
* @author amigo
* @date 2023-07
*/
public interface AsUserSubService extends IService<AsUserSub> {
/**
* 通过平台Id查询订阅列表
* @param id 平台ID
* @return 订阅列表
*/
List<AsUserSub> listSubPlanById(Long id);
/**
* 级联删除订阅
* @param id 订阅ID
* @return 成功、失败
*/
// R removeSubPlanById(Long id);
/**
* 更新订阅信息
* @param subPlan 订阅信息
* @return 成功、失败
*/
// Boolean updateSubPlanById(AsSubPlan subPlan);
/**
* 构建树
* @param parentId 父节点ID
* @param subPlanName 订阅名称
* @return
*/
// List<Tree<Long>> treeSubPlan(Long parentId, String subPlanName);
/**
* 查询订阅
* @param voSet
* @param parentId
* @return
*/
// List<Tree<Long>> filterSubPlan(Set<AsSubPlan> voSet, String type, Long parentId);
}

View File

@@ -0,0 +1,29 @@
package com.pig4cloud.pigx.app.service.as.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatform;
import com.pig4cloud.pigx.app.mapper.as.AsPlatformMapper;
import com.pig4cloud.pigx.app.service.as.AsPlatformService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* as 媒体平台
*
* @author amigo
* @date 2023-07
*/
@Service
@AllArgsConstructor
@Slf4j
public class AsPlatformServiceImpl extends ServiceImpl<AsPlatformMapper, AsPlatform> implements AsPlatformService {
@Override
public List<AsPlatform> listAsPlatformByType(Integer platformType) {
return baseMapper.listAsPlatformByType(platformType);
}
}

View File

@@ -0,0 +1,33 @@
package com.pig4cloud.pigx.app.service.as.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.as.AsPlatformType;
import com.pig4cloud.pigx.app.mapper.as.AsPlatformTypeMapper;
import com.pig4cloud.pigx.app.service.as.AsPlatformTypeService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* as 平台类型
*
* @author amigo
* @date 2023-07
*/
@Service
@AllArgsConstructor
@Slf4j
public class AsPlatformTypeServiceImpl extends ServiceImpl<AsPlatformTypeMapper, AsPlatformType> implements AsPlatformTypeService {
@Override
public List<AsPlatformType> listAsPlatformTypeByType(Integer platformType) {
return baseMapper.listAsPlatformTypeByType(platformType);
}
// R removePlatformTypeById(Long id);
// Boolean updatePlatformTypeById(AsPlatformType asPlatformType);
}

View File

@@ -0,0 +1,22 @@
package com.pig4cloud.pigx.app.service.as.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.as.AsSubAccount;
import com.pig4cloud.pigx.app.mapper.as.AsSubAccountMapper;
import com.pig4cloud.pigx.app.service.as.AsSubAccountService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
/**
* as 订阅账号表
*
* @author amigo
* @date 2023-08
*/
@Service
@AllArgsConstructor
@Slf4j
public class AsSubAccountServiceImpl extends ServiceImpl<AsSubAccountMapper, AsSubAccount> implements AsSubAccountService {
}

View File

@@ -0,0 +1,28 @@
package com.pig4cloud.pigx.app.service.as.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pig4cloud.pigx.app.api.entity.as.AsSubPayroll;
import com.pig4cloud.pigx.app.mapper.as.AsSubPayrollMapper;
import com.pig4cloud.pigx.app.service.as.AsSubPayrollService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* as 订阅付费计划表
*
* @author amigo
* @date 2023-08
*/
@Service
@AllArgsConstructor
@Slf4j
public class AsSubPayrollServiceImpl extends ServiceImpl<AsSubPayrollMapper, AsSubPayroll> implements AsSubPayrollService {
@Override
public List<AsSubPayroll> listByPlatId(Long platId,String region) {
return baseMapper.listByPlatId(platId,region);
}
}

Some files were not shown because too many files have changed in this diff Show More