后端代码提交

This commit is contained in:
zzp
2025-06-24 16:36:16 +08:00
parent f677859b57
commit c4cb8c62af
643 changed files with 21444 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
package com.zbkj.common.acpect;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import java.util.Arrays;
/**
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
* 所有的前端controller层的拦截业务方法的执行时间长度
*/
@Aspect
@Component
public class ControllerAspect {
Logger logger = LoggerFactory.getLogger(ControllerAspect.class);
@Pointcut("execution(* com.zbkj.crmeb.system.controller.*.*(..))")
private void pointCutMethodController() {
}
@Around("pointCutMethodController()")
public Object doAroundService(ProceedingJoinPoint pjp) throws Throwable {
long begin = System.nanoTime();
Object obj = pjp.proceed();
long end = System.nanoTime();
logger.info("Controller method{}prams{}cost time{} nscost{} ms",
pjp.getSignature().toString(), Arrays.toString(pjp.getArgs()), (end - begin), (end - begin) / 1000000);
return obj;
}
}

View File

@@ -0,0 +1,18 @@
package com.zbkj.common.annotation;
import java.lang.annotation.*;
/**
* @ClassName CustomResponseAnnotation
* @Description 自定义响应结果注解,由此注解表示返回值不经过统一封装返回
* @Author HZW
* @Date 2023/2/21 17:19
* @Version 1.0
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD}) //作用于方法和类(接口)上
@Documented
public @interface CustomResponseAnnotation {
}

View File

@@ -0,0 +1,18 @@
package com.zbkj.common.constants;
/**
* 版权常量
*/
public class CopyrightConstants {
// 备案号
public static final String COPYRIGHT_ICP_NUMBER = "copyright_icp_number";
// 备案号连接
public static final String COPYRIGHT_ICP_NUMBER_URL = "copyright_icp_number_url";
// 网安备案
public static final String COPYRIGHT_INTERNET_RECORD = "copyright_internet_record";
// 网安备案连接
public static final String COPYRIGHT_INTERNET_RECORD_URL = "copyright_internet_record_url";
}

View File

@@ -0,0 +1,86 @@
package com.zbkj.common.constants;
/**
* Config配置常量类
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public class DateConstants {
/** 日期格式:年-月-日 时:分:秒 */
public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_UTC = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
/** 日期格式:年-月-日 */
public static final String DATE_FORMAT_DATE = "yyyy-MM-dd";
/** 日期格式:年 */
public static final String DATE_FORMAT_YEAR = "yyyy";
/** 日期格式:月日- */
public static final String DATE_FORMAT_MONTH_DATE = "MM-dd";
/** 日期格式:年-月 */
public static final String DATE_FORMAT_MONTH = "yyyy-MM";
/** 日期格式:年月日时分秒 */
public static final String DATE_TIME_FORMAT_NUM = "yyyyMMddHHmmss";
/** 日期格式:年月日 */
public static final String DATE_FORMAT_NUM = "yyyyMMdd";
/** 日期格式:年月日 开始时间 */
public static final String DATE_FORMAT_START = "yyyy-MM-dd 00:00:00";
/** 日期格式:年月日 结束时间 */
public static final String DATE_FORMAT_END = "yyyy-MM-dd 23:59:59";
/** 日期格式:每个月的开始时间 */
public static final String DATE_FORMAT_MONTH_START = "yyyy-MM-01 00:00:00";
/** 日期格式:每年的开始时间 */
public static final String DATE_FORMAT_YEAR_START = "yyyy-01-01 00:00:00";
/** 日期格式:每年的结束时间 */
public static final String DATE_FORMAT_YEAR_END = "yyyy-12-31 23:59:59";
/** 日期格式:时:分:秒 */
public static final String DATE_FORMAT_HHMMSS = "HH:mm:ss";
/** 每天开始时间 */
public static final String DATE_FORMAT_START_PEREND = "00:00:00";
/** 每日结束时间 */
public static final String DATE_FORMAT_END_PEREND = "23:59:59";
/** 日期格式:年-月-日 时:分 */
public static final String DATE_FORMAT_HHMM = "yyyy-MM-dd HH:mm";
/** 日期格式:时分 */
public static final String DATE_FORMAT_TIME_HHMM = "HHmm";
/** 日期格式:rfc3339标准格式 2015-05-20T13:29:35.120+08:00 */
public static final String DATE_FORMAT_RFC_3339 = "yyyy-MM-dd'T'HH:mm:ssXXX";
/** 搜索日期-今天 */
public static final String SEARCH_DATE_DAY = "today";
/** 搜索日期-昨天 */
public static final String SEARCH_DATE_YESTERDAY = "yesterday";
/** 搜索日期-最近7天 */
public static final String SEARCH_DATE_LATELY_7 = "lately7";
/** 搜索日期-最近30天 */
public static final String SEARCH_DATE_LATELY_30 = "lately30";
/** 搜索日期-本周 */
public static final String SEARCH_DATE_WEEK = "week";
/** 搜索日期-上周 */
public static final String SEARCH_DATE_PRE_WEEK = "preWeek";
/** 搜索日期-本月 */
public static final String SEARCH_DATE_MONTH = "month";
/** 搜索日期-上月 */
public static final String SEARCH_DATE_PRE_MONTH = "preMonth";
/** 搜索日期-年 */
public static final String SEARCH_DATE_YEAR = "year";
/** 搜索日期-上一年 */
public static final String SEARCH_DATE_PRE_YEAR = "preYear";
/** 搜索日期-最近90天 */
public static final String SEARCH_DATE_LATELY_90 = "lately90";
/** 搜索日期-最近180天 */
public static final String SEARCH_DATE_LATELY_180 = "lately180";
// 时间类型开始时间
public static String DATE_TIME_TYPE_BEGIN = "begin";
// 时间类型结束时间
public static String DATE_TIME_TYPE_END = "end";
}

View File

@@ -0,0 +1,28 @@
package com.zbkj.common.constants;
/**
* 上传/下载常量类
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public class UploadConstants {
/** 文件上传关键字 */
public static final String UPLOAD_FILE_KEYWORD = "crmebimage";
/** 文件导出下载拦截关键字 */
public static final String DOWNLOAD_FILE_KEYWORD = "downloadf";
/** 文件前端上传后下载关键字 */
public static final String UPLOAD_AFTER_FILE_KEYWORD = "uploadf";
/** 文件类型-excel */
public static final String UPLOAD_MODEL_PATH_EXCEL = "excel";
}

View File

@@ -0,0 +1,26 @@
package com.zbkj.common.constants;
/**
* 用户等级常量类
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public class UserLevelConstants {
/**
* ---------------------------------------
* --------系统用户等级常量------------------
* ---------------------------------------
*/
/** 系统用户等级规则 */
public static final String SYSTEM_USER_LEVEL_RULE = "userLevelRule";
}

View File

@@ -0,0 +1,54 @@
package com.zbkj.common.enums;
/**
* 方法类型枚举
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public enum MethodType {
ADD("add", "增加"),
DELETE("delete", "删除"),
UPDATE("update", "修改"),
EXPORT("export", "导出"),
SELECT("query", "查询");
private final String type;
private final String name;
MethodType(String type, String name) {
this.type = type;
this.name = name;
}
public String getType() {
return type;
}
public String getName() {
return name;
}
public static String getName(String type){
for (MethodType modelType : MethodType.values()) {
if (modelType.getType().equals(type))
return modelType.getName();
}
return null;
}
public static String getType(String name){
for (MethodType modelType : MethodType.values()) {
if (modelType.getName().equals(name))
return modelType.getType();
}
return "-1";
}
}

View File

@@ -0,0 +1,125 @@
package com.zbkj.common.exception;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
/**
* @ClassName Assert
* @Description 断言
* @Author HZW
* @Date 2023/2/22 12:37
* @Version 1.0
*/
public interface Assert {
/**
* 创建异常
*/
CrmebException newException();
/**
* 断言对象不为空
*/
default <T> T assertNotNull(T obj) {
if (ObjectUtil.isEmpty(obj)) {
throw newException();
}
return obj;
}
/**
* 断言对象是空
*/
default void assertIsNull(Object obj) {
if (ObjectUtil.isNotNull(obj)) {
throw newException();
}
}
/**
* 断言两个对象不相等
*/
default void assertNotEquals(Object obj, Object obj1) {
if (ObjectUtil.equal(obj, obj1)) {
throw newException();
}
}
/**
* 断言字符串不为空
*/
default void assertNotEmptyStr(String str) {
if (StrUtil.isBlank(str)) {
throw newException();
}
}
/**
* 断言两个对象相等
*/
default void assertEquals(Object obj, Object obj1) {
if (ObjectUtil.notEqual(obj, obj1)) {
throw newException();
}
}
/**
* 断言true
*/
default void assertIsTrue(boolean expression) {
if (!expression) {
throw newException();
}
}
/**
* 断言false
*/
default void assertIsFalse(boolean expression) {
if (expression) {
throw newException();
}
}
/**
* 断言int数组范围
*/
default int assertBetween(int value, int min, int max) {
if (value >= min && value <= max) {
return value;
}
throw newException();
}
/**
* 断言long数值范围
*/
default long assertBetween(long value, long min, long max) {
if (value >= min && value <= max) {
return value;
}
throw newException();
}
/**
* 断言double数值范围
*/
default double assertBetween(double value, double min, double max) {
if (value >= min && value <= max) {
return value;
}
throw newException();
}
/**
* 断言int大于数值范围
*/
default int assertGreaterThan(int value , int min){
if (value <= min){
throw newException();
}
return value;
}
}

View File

@@ -0,0 +1,24 @@
package com.zbkj.common.exception;
import com.zbkj.common.result.IResultEnum;
/**
* @ClassName BusinessException
* @Description 业务异常类
* @Author HZW
* @Date 2023/2/22 12:34
* @Version 1.0
*/
public class BusinessException extends CrmebException {
private static final long serialVersionUID = 1L;
public BusinessException(IResultEnum iResultEnum) {
super(iResultEnum);
}
public BusinessException(IResultEnum iResultEnum, Throwable throwable) {
super(iResultEnum, throwable);
}
}

View File

@@ -0,0 +1,19 @@
package com.zbkj.common.exception;
import com.zbkj.common.result.IResultEnum;
/**
* @ClassName BusinessExceptionAssert
* @Description 业务异常断言
* @Author HZW
* @Date 2023/2/22 12:39
* @Version 1.0
*/
public interface BusinessExceptionAssert extends IResultEnum, Assert {
@Override
default CrmebException newException() {
return new BusinessException(this);
}
}

View File

@@ -0,0 +1,77 @@
package com.zbkj.common.model.acticitystyle;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 活动气氛样式,包含活动边框和活动背景
* </p>
*
* @author dazongzi
* @since 2023-01-05
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_activity_style")
@ApiModel(value="ActivityStyle对象", description="")
public class ActivityStyle implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "活动名称")
private String name;
@ApiModelProperty(value = "活动类型0=活动边框1=活动背景")
private Boolean type;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始时间")
private Date starttime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "结束时间")
private Date endtime;
@ApiModelProperty(value = "活动边框素材地址")
private String style;
@ApiModelProperty(value = "状态 0=关闭1=开启")
private Boolean status;
@ApiModelProperty(value = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与4=指定商户产品")
private Integer method;
@ApiModelProperty(value = "参与活动商品")
private String products;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createtime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updatetime;
}

View File

@@ -0,0 +1,66 @@
package com.zbkj.common.model.exception;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 异常信息表
* </p>
*
* @author HZW
* @since 2023-02-27
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_exception_log")
@ApiModel(value = "ExceptionLog对象", description = "异常信息表")
public class ExceptionLog implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("异常日志ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty("异常的url")
@TableField("exp_url")
private String expUrl;
@ApiModelProperty("异常的参数")
@TableField("exp_params")
private String expParams;
@ApiModelProperty("异常的类型")
@TableField("exp_type")
private String expType;
@ApiModelProperty("异常的类名")
@TableField("exp_controller")
private String expController;
@ApiModelProperty("异常的方法名")
@TableField("exp_method")
private String expMethod;
@ApiModelProperty("异常详细信息")
@TableField("exp_detail")
private String expDetail;
@ApiModelProperty("创建时间")
@TableField("create_time")
private Date createTime;
}

View File

@@ -0,0 +1,60 @@
package com.zbkj.common.model.page;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 页面链接分类
* </p>
*
* @author dazongzi
* @since 2023-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_page_category")
@ApiModel(value="PageCategory对象", description="页面链接分类")
public class PageCategory implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "父类id")
private Integer pid;
@ApiModelProperty(value = "类型:link、special、product、product_category、custom")
private String type;
@ApiModelProperty(value = "分类名称")
private String name;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "状态")
private Boolean status;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "层级 个位数")
private Boolean level;
@ApiModelProperty(value = "是否商户 0平台商户id")
private Integer isMer;
}

View File

@@ -0,0 +1,111 @@
package com.zbkj.common.model.page;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* DIY数据表
* </p>
*
* @author dazongzi
* @since 2023-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_page_diy")
@ApiModel(value="PageDiy对象", description="DIY数据表")
public class PageDiy implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "版本号")
private String version;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "网站标题")
private String title;
@ApiModelProperty(value = "封面图")
private String coverImage;
@ApiModelProperty(value = "模板名称")
private String templateName;
@ApiModelProperty(value = "页面数据")
private String value;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否使用")
private Integer status;
@ApiModelProperty(value = "页面类型")
private Integer type;
@ApiModelProperty(value = "显示首页")
private Integer isShow;
@ApiModelProperty(value = "颜色是否选中")
private Integer isBgColor;
@ApiModelProperty(value = "背景图是否选中")
private Integer isBgPic;
@ApiModelProperty(value = "是否是diy数据")
private Integer isDiy;
@ApiModelProperty(value = "背景颜色")
private String colorPicker;
@ApiModelProperty(value = "背景图")
private String bgPic;
@ApiModelProperty(value = "背景图图片样式")
private Integer bgTabVal;
@ApiModelProperty(value = "是否删除")
private Integer isDel;
@ApiModelProperty(value = "返回地址")
private String returnAddress;
@ApiModelProperty(value = "标题背景色")
private String titleBgColor;
@ApiModelProperty(value = "标题颜色")
private String titleColor;
@ApiModelProperty(value = "商家样式")
private Integer serviceStatus;
@ApiModelProperty(value = "商户ID")
private Integer merId;
@ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)")
private Integer isDefault;
@ApiModelProperty(value = "标题文本位置")
private Integer textPosition;
}

View File

@@ -0,0 +1,66 @@
package com.zbkj.common.model.page;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 页面链接
* </p>
*
* @author dazongzi
* @since 2023-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_page_link")
@ApiModel(value="PageLink对象", description="页面链接")
public class PageLink implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "分类id")
private Integer cateId;
@ApiModelProperty(value = "分组1:基础2:分销3:个人中心")
private Boolean type;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "页面链接")
private String url;
@ApiModelProperty(value = "参数")
private String param;
@ApiModelProperty(value = "事例")
private String example;
@ApiModelProperty(value = "状态")
private Boolean status;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "1是商户的链接")
private Boolean isMer;
}

View File

@@ -0,0 +1,68 @@
package com.zbkj.common.model.wechat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* 小程序我的模板
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_wechat_program_my_temp")
@ApiModel(value="WechatProgramMyTemp对象", description="小程序我的模板")
public class WechatProgramMyTemp implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "微信模板id")
private Integer tid;
@ApiModelProperty(value = "模版标题")
private String title;
@ApiModelProperty(value = "模板关键字id多个逗号分割")
private String kid;
@ApiModelProperty(value = "场景描述")
private String sceneDesc;
@ApiModelProperty(value = "微信模板id")
private String tempId;
@ApiModelProperty(value = "扩展字段")
private String extra;
@ApiModelProperty(value = "状态 0禁用1启用")
private Boolean status;
@ApiModelProperty(value = "应用场景")
private String type;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
}

View File

@@ -0,0 +1,56 @@
package com.zbkj.common.model.wechat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* WechatProgramPublicTemp对象"
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("eb_wechat_program_public_temp")
@ApiModel(value="WechatProgramPublicTemp对象", description="")
public class WechatProgramPublicTemp implements Serializable {
private static final long serialVersionUID=1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "微信模板id")
private Integer tid;
@ApiModelProperty(value = "模版标题")
private String title;
@ApiModelProperty(value = "模版类型2 为一次性订阅3 为长期订阅")
private Integer type;
@ApiModelProperty(value = "模版所属类目 id")
private Integer categoryId;
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
}

View File

@@ -0,0 +1,52 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* 活动维护对象
* @Auther: 大粽子
* @Date: 2023/1/5 12:15
* @Description: 活动controller request
*/
@Data
public class ActivityStyleRequest {
@ApiModelProperty(value = "主键")
private Integer id;
@ApiModelProperty(value = "活动名称")
@NotEmpty(message = "活动名称不能为空")
private String name;
@ApiModelProperty(value = "活动类型0=活动边框1=活动背景")
private Boolean type;
@ApiModelProperty(value = "开始时间")
@NotEmpty(message = "开始时间不能为空")
private String starttime;
@ApiModelProperty(value = "结束时间")
@NotEmpty(message = "结束时间不能为空")
private String endtime;
@ApiModelProperty(value = "活动边框素材地址")
@NotEmpty(message = "活动素材 不能为空")
private String style;
@ApiModelProperty(value = "状态 0=关闭1=开启")
private Boolean status;
@ApiModelProperty(value = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与")
@NotNull(message = "活动参与类型不能为空")
@Range(min = 0, max = 4, message = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与, 4=指定商户产品")
private Integer method;
@ApiModelProperty(value = "参与活动商品")
private String products;
}

View File

@@ -0,0 +1,61 @@
package com.zbkj.common.request;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Auther: 大粽子
* @Date: 2023/1/5 12:08
* @Description: 活动样式搜索对象
*/
@Data
public class ActivityStyleSearchRequest {
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "活动名称不能为空")
private String name;
@ApiModelProperty(value = "活动类型0=活动边框1=活动背景")
private Boolean type;
@ApiModelProperty(value = "开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date starttime;
@ApiModelProperty(value = "结束时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date endtime;
@ApiModelProperty(value = "状态 0=关闭1=开启")
private Boolean status;
@ApiModelProperty(value = "状态 -1=已结束0=未开始1=进行中")
private Integer runningStatus;
@ApiModelProperty(value = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与, 4=指定商户产品")
@Range(min = 0, max = 4, message = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与, 4=指定商户产品")
private Integer method;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createtime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updatetime;
}

View File

@@ -0,0 +1,22 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* 活动边框 更新状态
* @Auther: 大粽子
* @Date: 2023/1/5 15:38
* @Description: 描述对应的业务场景
*/
@Data
public class ActivityStyleUpdateStatusRequest {
@ApiModelProperty(value = "主键")
@NotNull(message = "id 不能为空")
private Integer id;
@ApiModelProperty(value = "状态 0=关闭1=开启")
private Boolean status;
}

View File

@@ -0,0 +1,38 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
/**
* 管理端账号检测请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="AdminAccountDetectionRequest", description="管理端账号检测请求对象")
public class AdminAccountDetectionRequest implements Serializable {
private static final long serialVersionUID = -5291081138040044258L;
@ApiModelProperty(value = "后台管理员账号", example = "userName")
@NotEmpty(message = "账号 不能为空")
@Length(max = 32, message = "账号长度不能超过32个字符")
private String account;
}

View File

@@ -0,0 +1,44 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
/**
* 登录用户修改密码请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "LoginAdminUpdatePasswordRequest", description = "登录用户修改密码请求对象")
public class LoginAdminUpdatePasswordRequest {
@ApiModelProperty(value = "后台管理员密码", required = true)
@NotBlank(message = "管理员密码不能为空")
@Length(min = 6, max = 30, message = "密码长度在6-30个字符")
private String password;
@ApiModelProperty(value = "后台管理员密码", required = true)
@NotBlank(message = "管理员确认密码不能为空")
@Length(min = 6, max = 30, message = "密码长度在6-30个字符")
private String confirmPassword;
@ApiModelProperty(value = "后台管理员原密码", required = true)
@NotBlank(message = "管理员原密码不能为空")
@Length(min = 6, max = 30, message = "原密码长度在6-30个字符")
private String oldPassword;
}

View File

@@ -0,0 +1,35 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
/**
* 登录用户修改信息请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "LoginAdminUpdateRequest", description = "登录用户修改信息请求对象")
public class LoginAdminUpdateRequest {
@ApiModelProperty(value = "后台管理员昵称", required = true)
@Size(max = 16, message = "后台管理员昵称长度不能超过16个字符")
private String realName;
}

View File

@@ -0,0 +1,44 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
/**
* 商品添加库存对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="ProductAddStockRequest对象", description="商品添加库存对象")
public class ProductAddStockRequest implements Serializable {
private static final long serialVersionUID = -259657957101524526L;
@ApiModelProperty(value = "商品ID", required = true)
@NotNull(message = "商品ID不能为空")
private Integer id;
@Valid
@ApiModelProperty(value = "商品规格属性列表", required = true)
@NotEmpty(message = "商品规格属性列表不能为空")
private List<ProductAttrValueAddStockRequest> attrValueList;
}

View File

@@ -0,0 +1,44 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 商品规格属性添加库存对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="ProductAttrValueAddStockRequest对象", description="商品规格属性添加对象")
public class ProductAttrValueAddStockRequest implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "ID", required = true)
@NotNull(message = "商品规格属性ID不能为空")
private Integer id;
@ApiModelProperty(value = "商品规格属性添加库存", required = true)
@NotNull(message = "添加库存不能为空")
@Min(value = 0, message = "添加库存不能小于0")
private Integer addStock;
@ApiModelProperty(value = "并发版本控制,前端不传值")
private Integer version;
}

View File

@@ -0,0 +1,35 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 保存config请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "SaveConfigRequest对象", description = "保存config请求对象")
public class SaveConfigRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "config值", required = true)
@NotBlank(message = "config值不能为空")
private String value;
}

View File

@@ -0,0 +1,43 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 定时任务日志搜索请求参数
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ScheduleJobLogSearchRequest对象", description = "定时任务日志搜索请求参数")
public class ScheduleJobLogSearchRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "任务id")
private Integer jobId;
@ApiModelProperty(value = "spring bean名称")
private String beanName;
@ApiModelProperty(value = "方法名")
private String methodName;
@ApiModelProperty(value = "任务状态 1成功 0失败")
private Integer status;
}

View File

@@ -0,0 +1,52 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 定时任务请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ScheduleJobRequest对象", description = "定时任务请求对象")
public class ScheduleJobRequest implements Serializable {
private static final long serialVersionUID = -452373239606480650L;
@ApiModelProperty(value = "任务id,编辑时必传")
private Integer jobId;
@ApiModelProperty(value = "spring bean名称", required = true)
@NotBlank(message = "spring bean名称不能为空")
private String beanName;
@ApiModelProperty(value = "方法名", required = true)
@NotBlank(message = "方法名不能为空")
private String methodName;
@ApiModelProperty(value = "参数")
private String params;
@ApiModelProperty(value = "cron表达式", required = true)
@NotBlank(message = "cron表达式不能为空")
private String cronExpression;
@ApiModelProperty(value = "备注")
private String remark;
}

View File

@@ -0,0 +1,29 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 自定义组件上传图片请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
public class ShopUploadImgRequest {
@ApiModelProperty(value = "0:media_id(目前只用于品牌申请品牌和类目)1返回链接, 2返回微信支付media_id图片要求")
private Integer respType;
@ApiModelProperty(value = "0:图片流(resp_type=2需指定filename)1:图片url")
private Integer uploadType;
@ApiModelProperty(value = "upload_type=1时必传")
private String imgUrl;
}

View File

@@ -0,0 +1,33 @@
package com.zbkj.common.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 商品管理头部统计-搜索条件
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class StoreProductHeaderRequest {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "分类ID 多个逗号分隔")
private String cateId;
@ApiModelProperty(value = "关键字搜索, 支持(商品名称, 关键字, 商品条码)")
private String keywords;
}

View File

@@ -0,0 +1,39 @@
package com.zbkj.common.request.onepass;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 一号通用户登录请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "OnePassLoginRequest对象", description = "一号通用户登录请求对象")
public class OnePassLoginRequest {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "access_key一号通后台AccessKey管理获得", required = true)
@NotBlank(message = "AccessKey 不能为空")
private String accessKey;
@ApiModelProperty(value = "secret_key一号通后台AccessKey管理获得", required = true)
@NotBlank(message = "secretKey 不能为空")
private String secretKey;
}

View File

@@ -0,0 +1,52 @@
package com.zbkj.common.request.onepass;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* 一号通账号注册
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "OnePassRegisterRequest对象", description = "一号通账号注册")
public class OnePassRegisterRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "账号", required = true)
@NotBlank(message = "账号不能为空")
private String account;
@ApiModelProperty(value = "手机号", required = true)
@NotNull(message = "手机号不能为空")
private String phone;
@ApiModelProperty(value = "密码", required = true)
@NotNull(message = "密码不能为空")
private String password;
@ApiModelProperty(value = "域名", required = true)
@NotNull(message = "域名不能为空")
private String domain;
@ApiModelProperty(value = "验证码")
@NotNull(message = "验证码不能为空")
private String code;
}

View File

@@ -0,0 +1,19 @@
package com.zbkj.common.request.onepass;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Auther: 大粽子
* @Date: 2023/8/28 09:38
* @Description: 一号通 商家寄件 回调对象
*/
@Data
public class OnePassShipmentCallBackRequest {
@ApiModelProperty(value = "回调类型order_success=下单成功回调order_take=取件回调order_cancel=用户主动取消回调order_fail=下单失败回调order_receipt=快递签收回调")
public String type;
@ApiModelProperty(value = "回调数据")
public String data;
}

View File

@@ -0,0 +1,27 @@
package com.zbkj.common.request.onepass;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @Auther: 大粽子
* @Date: 2023/8/26 15:40
* @Description: 一号通 取消商家寄件
*/
@Data
public class OnePassShipmentCancelOrderRequest {
@ApiModelProperty(value = "任务ID在[创建商家寄件订单]接口中获得", required = true)
@NotNull(message = "任务ID 不能为空")
public String taskId;
@ApiModelProperty(value = "订单ID在[创建商家寄件订单]接口中获得", required = true)
@NotNull(message = "订单ID 不能为空")
public String orderId;
@ApiModelProperty(value = "取消理由", required = true)
@NotNull(message = "取消理由 不能为空")
public String cancelMsg;
}

View File

@@ -0,0 +1,132 @@
package com.zbkj.common.request.onepass;
import com.zbkj.common.constants.Constants;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @Auther: 大粽子
* @Date: 2023/8/26 15:09
* @Description: 一号通 创建商家寄件
*/
@Data
public class OnePassShipmentCreateOrderRequest implements Serializable {
// 字符串 是 -- 快递公司编码,在[获取商家寄件快递公司]接口中获得
@ApiModelProperty(value = "(必填) 快递公司编码,在[获取商家寄件快递公司]接口中获得")
// @NotNull(message = "快递公司编码 不能为空")
private String kuaidicom;
// 字符串 是 -- 收件人姓名
@ApiModelProperty(value = "(必填) 收件人姓名")
// @NotNull(message = "收件人姓名 不能为空")
private String manName;
// 字符串 是 -- 收件人手机号
@ApiModelProperty(value = "(必填) 收件人手机号")
// @NotNull(message = "收件人手机号 不能为空")
private String phone;
// 字符串 是 -- 收件人所在完整地址
@ApiModelProperty(value = "(必填) 收件人所在完整地址")
// @NotNull(message = "收件人所在完整地址 不能为空")
private String address;
// 字符串 是 -- 寄件人姓名
@ApiModelProperty(value = "(必填) 寄件人姓名")
// @NotNull(message = "寄件人姓名 不能为空")
private String sendRealName;
// 字符串 是 -- 寄件人手机号
@ApiModelProperty(value = "(必填) 寄件人手机号")
// @NotNull(message = "寄件人手机号 不能为空")
private String sendPhone;
// 字符串 是 -- 寄件人所在完整地址
@ApiModelProperty(value = "(必填) 寄件人所在完整地址")
// @NotNull(message = "寄件人所在完整地址 不能为空")
private String sendAddress;
// 字符串 否 -- 订单信息回调地址
@ApiModelProperty(value = "订单信息回调地址")
private String callBackUrl;
// 字符串 否 -- 物品名称,例文件。当kuaidicom=jd、yuantong时必填
@ApiModelProperty(value = "(条件必填) 物品名称,例文件。当kuaidicom=jd、yuantong时必填")
private String cargo;
// 字符串 否 -- 业务类型,默认为标准快递,各快递公司业务类型对照参考
@ApiModelProperty(value = "(必填) 业务类型,默认为标准快递,各快递公司业务类型对照参考")
private String serviceType;
//字符串 否 -- 支付方式SHIPPER: 寄付(默认)。不支持到付
@ApiModelProperty(value = "支付方式SHIPPER: 寄付(默认)。不支持到付")
private String payment;
// 字符串 否 -- 物品总重量KG不需带单位1.5
@ApiModelProperty(value = "物品总重量KG不需带单位1.5")
private String weight;
// 字符串 否 -- 备注
@ApiModelProperty(value = "备注")
private String remark;
// 字符串 否 -- 预约日期例如0=今天/1=明天/2=后天
@ApiModelProperty(value = "预约日期例如0=今天/1=明天/2=后天")
private String dayType;
// 字符串 否 -- 预约起始时间HH:mm例如09:00顺丰必填
@ApiModelProperty(value = "预约起始时间HH:mm例如09:00顺丰必填")
private String pickupStartTime;
// 字符串 否 -- 预约截止时间HH:mm例如10:00顺丰必填预约起始时间和预约截止时间间隔需≥1小时
@ApiModelProperty(value = "预约截止时间HH:mm例如10:00顺丰必填预约起始时间和预约截止时间间隔需≥1小时")
private String pickupEndTime;
// 字符串 否 -- 渠道ID如有多个同品牌运力请联系商务提供后传入
@ApiModelProperty(value = "渠道ID如有多个同品牌运力请联系商务提供后传入")
private String channelSw;
// 字符串 否 -- 保价额度,单位:元
@ApiModelProperty(value = "保价额度,单位:元")
private String valinsPay;
// 字符串 否 -- 寄件人实名信息(圆通、极兔支持
@ApiModelProperty(value = "寄件人实名信息(圆通、极兔支持 ")
private String realName;
// 字符串 否 -- 寄件人证件类型1居民身份证 2港澳居民来往内地通行证 3台湾居民来往大陆通行证 4中国公民护照圆通、极兔支持
@ApiModelProperty(value = "寄件人证件类型1居民身份证 2港澳居民来往内地通行证 3台湾居民来往大陆通行证 4中国公民护照圆通、极兔支持 ")
private String sendIdCardType;
// 字符串 否 -- 寄件人证件号码 (圆通、极兔支持
@ApiModelProperty(value = "寄件人证件号码 (圆通、极兔支持 ")
private String sendIdCard;
// 字符串 否 -- 是否口令签收Y需要 N: 不需要默认值为N德邦快递专属参数
@ApiModelProperty(value = "是否口令签收Y需要 N: 不需要默认值为N德邦快递专属参数")
private String passwordSigning;
// 字符串 否 -- 是否开启订阅功能 0不开启(默认) 1开启 说明开启订阅功能时pollCallBackUrl必须填入 此功能只针对有快递单号的单
@ApiModelProperty(value = "是否开启订阅功能 0不开启(默认) 1开启 说明开启订阅功能时pollCallBackUrl必须填入 此功能只针对有快递单号的单")
private String op;
// 字符串 是 -- 面单返回类型默认为空不返回面单内容。10设备打印20生成图片短链回调。
@ApiModelProperty(value = "(必填) 面单返回类型默认为空不返回面单内容。10设备打印20生成图片短链回调。")
// @NotNull(message = "面单返回类型默认为空不返回面单内容。10设备打印20生成图片短链回调。 不能为空")
private String returnType;
// 字符串 是 -- 设备码returnType为10时必填
@ApiModelProperty(value = "(条件必填) 设备码returnType为10时必填")
// @NotNull(message = "设备码returnType为10时必填 不能为空")
private String siid;
// 字符串 是 -- 模板编码模板id在[获取商家寄件快递公司]接口中查看
@ApiModelProperty(value = "(必填) 模板编码模板id在[获取商家寄件快递公司]接口中查看")
// @NotNull(message = "模板编码模板id在[获取商家寄件快递公司]接口中查看 不能为空")
private String tempid;
}

View File

@@ -0,0 +1,49 @@
package com.zbkj.common.request.onepass;
import com.zbkj.common.constants.RegularConstants;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
* 一号通账号修改
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "OnePassUpdateRequest对象", description = "一号通账号修改")
public class OnePassUpdateRequest implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "账号", required = true)
@NotNull(message = "账号不能为空")
private String account;
@ApiModelProperty(value = "手机号", required = true)
@NotNull(message = "手机号不能为空")
@Pattern(regexp = RegularConstants.PHONE_TWO, message = "请填写正确的手机号")
private String phone;
@ApiModelProperty(value = "密码")
private String password;
@ApiModelProperty(value = "验证码", required = true)
@NotNull(message = "验证码不能为空")
private String code;
}

View File

@@ -0,0 +1,49 @@
package com.zbkj.common.request.onepass;
import com.zbkj.common.annotation.StringContains;
import com.zbkj.common.constants.Constants;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.NotBlank;
/**
* 一号通用量记录请求对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "OnePassUserRecordRequest对象", description = "一号通用量记录请求对象")
public class OnePassUserRecordRequest {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "记录类型:sms,短信;copy,产品复制;expr_query,物流查询;expr_dump,电子面单", required = true)
@NotBlank(message = "记录类型不能为空")
@StringContains(limitValues = {"sms","copy","expr_query","expr_dump"}, message = "未知的记录类型")
private String type;
@ApiModelProperty(value = "短信状态(短信类型时必传)0发送中1成功2失败3全部")
@Range(min = 0, max = 3, message = "未知的短信状态")
private Integer status;
@ApiModelProperty(value = "页码", example = Constants.DEFAULT_PAGE + "")
private int page = Constants.DEFAULT_PAGE;
@ApiModelProperty(value = "每页数量", example = Constants.DEFAULT_LIMIT + "")
private int limit = Constants.DEFAULT_LIMIT;
}

View File

@@ -0,0 +1,41 @@
package com.zbkj.common.request.page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:44
* @Description: 页面配置和diy用到的实体参数
*/
@Data
public class PageCategoryRequest {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "父类id")
private Integer pid;
@ApiModelProperty(value = "类型:link、special、product、product_category、custom")
private String type;
@ApiModelProperty(value = "分类名称")
private String name;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "状态")
private Boolean status;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "层级 个位数")
private Boolean level;
@ApiModelProperty(value = "是否商户 0平台商户id")
private Integer isMer;
}

View File

@@ -0,0 +1,32 @@
package com.zbkj.common.request.page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:23
* @Description: 页面DIY和设计用到的分类
*/
@Data
public class PageCategorySearchRequest {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "父类id")
private Integer pid;
@ApiModelProperty(value = "类型:link、special、product、product_category、custom")
private String type;
@ApiModelProperty(value = "分类名称")
private String name;
@ApiModelProperty(value = "层级 个位数")
private Boolean level;
@ApiModelProperty(value = "是否商户 0平台商户id")
private Integer isMer;
}

View File

@@ -0,0 +1,24 @@
package com.zbkj.common.request.page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:44
* @Description: 页面分类和DIY用到的实体参数
*/
@Data
public class PageDiyEditNameRequest {
@ApiModelProperty(value = "id")
@NotNull(message = "模版id 不能为空")
private Integer id;
@ApiModelProperty(value = "页面名称")
@NotEmpty(message = "模版名称 不能为空")
private String name;
}

View File

@@ -0,0 +1,94 @@
package com.zbkj.common.request.page;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:44
* @Description: 页面分类和DIY用到的实体参数
*/
@Data
public class PageDiyRequest {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "版本号")
private String version;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "网站标题")
private String title;
@ApiModelProperty(value = "封面图")
private String coverImage;
@ApiModelProperty(value = "模板名称")
private String templateName;
@ApiModelProperty(value = "页面数据")
private JSONObject value;
@ApiModelProperty(value = "默认数据")
private String defaultValue;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否使用")
private Integer status;
@ApiModelProperty(value = "页面类型")
private Integer type;
@ApiModelProperty(value = "显示首页")
private Integer isShow;
@ApiModelProperty(value = "颜色是否选中")
private Integer isBgColor;
@ApiModelProperty(value = "背景图是否选中")
private Integer isBgPic;
@ApiModelProperty(value = "是否是diy数据")
private Integer isDiy;
@ApiModelProperty(value = "背景颜色")
private String colorPicker;
@ApiModelProperty(value = "背景图")
private String bgPic;
@ApiModelProperty(value = "背景图图片样式")
private Integer bgTabVal;
@ApiModelProperty(value = "是否删除")
private Integer isDel;
@ApiModelProperty(value = "返回地址")
private String returnAddress;
@ApiModelProperty(value = "标题背景色")
private String titleBgColor;
@ApiModelProperty(value = "标题颜色")
private String titleColor;
@ApiModelProperty(value = "商家样式")
private Integer serviceStatus;
@ApiModelProperty(value = "商户ID")
private Integer merId;
@ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)")
private Integer isDefault;
}

View File

@@ -0,0 +1,9 @@
package com.zbkj.common.request.page;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:25
* @Description: 页面DIY用到的搜索对象
*/
public class PageDiySearchRequest {
}

View File

@@ -0,0 +1,47 @@
package com.zbkj.common.request.page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:28
* @Description: 页面设计和DIY用到的链接查询对象
*/
@Data
public class PageLinkRequest {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "分类id")
private Integer cateId;
@ApiModelProperty(value = "分组1:基础2:分销3:个人中心")
private Boolean type;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "页面链接")
private String url;
@ApiModelProperty(value = "参数")
private String param;
@ApiModelProperty(value = "事例")
private String example;
@ApiModelProperty(value = "状态")
private Boolean status;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "1是商户的链接")
private Boolean isMer;
}

View File

@@ -0,0 +1,48 @@
package com.zbkj.common.request.page;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @Auther: 大粽子
* @Date: 2023/5/16 11:26
* @Description: 页面配置和DIY用到的页面链接搜索对象
*/
@Data
public class PageLinkSearchRequest {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "分类id")
private Integer cateId;
@ApiModelProperty(value = "分组1:基础2:分销3:个人中心")
private Boolean type;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "页面链接")
private String url;
@ApiModelProperty(value = "参数")
private String param;
@ApiModelProperty(value = "事例")
private String example;
@ApiModelProperty(value = "状态")
private Boolean status;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "1是商户的链接")
private Boolean isMer;
}

View File

@@ -0,0 +1,101 @@
package com.zbkj.common.response;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zbkj.common.constants.DateConstants;
import com.zbkj.common.utils.CrmebDateUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 活动背景 response
* @Auther: 大粽子
* @Date: 2023/1/9 16:17
* @Description: 描述对应的业务场景
*/
@Data
public class ActivityStyleResponse {
@ApiModelProperty(value = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "活动名称")
private String name;
@ApiModelProperty(value = "活动类型0=活动边框1=活动背景")
private Boolean type;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "开始时间")
private Date starttime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "结束时间")
private Date endtime;
@ApiModelProperty(value = "活动边框素材地址")
private String style;
@ApiModelProperty(value = "状态 -1=已结束0=未开始1=进行中")
private Integer runningStatus;
@ApiModelProperty(value = "状态 0=关闭1=开启")
private Boolean status;
@ApiModelProperty(value = "商品参与类型 0=全部商品参与1=指定商品参与2=指定品牌参与3=指定商品分类参与4=指定商户产品")
private Integer method;
@ApiModelProperty(value = "参与活动商品")
private String products;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createtime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updatetime;
/**
* -1 已结束 结束时间小于当前时间
* 1 进行中 结束时间大于当前时间 && 开始时间小于等于当前时间
* 0 未开始 开始时间大于当前时间
* @param starttime 开始时间
* @param endtime 结束时间
*/
public void setRunningStatus(Date starttime, Date endtime, Date currenttime) {
// isEnd = -1 = 已结束
int isEnd = CrmebDateUtil.compareDate(CrmebDateUtil.dateToStr(endtime, DateConstants.DATE_FORMAT),
CrmebDateUtil.dateToStr(currenttime, DateConstants.DATE_FORMAT),
DateConstants.DATE_FORMAT);
// isIng1 = 1 和下面并且链接
int isIng1 = CrmebDateUtil.compareDate(CrmebDateUtil.dateToStr(endtime, DateConstants.DATE_FORMAT),
CrmebDateUtil.dateToStr(currenttime, DateConstants.DATE_FORMAT),
DateConstants.DATE_FORMAT);
// isIng2 = -1 和上面并且链接
int isIng2 = CrmebDateUtil.compareDate(CrmebDateUtil.dateToStr(starttime, DateConstants.DATE_FORMAT),
CrmebDateUtil.dateToStr(currenttime, DateConstants.DATE_FORMAT),
DateConstants.DATE_FORMAT);
// isPer = 1 = 未开始
int isPer = CrmebDateUtil.compareDate(CrmebDateUtil.dateToStr(starttime, DateConstants.DATE_FORMAT),
CrmebDateUtil.dateToStr(currenttime, DateConstants.DATE_FORMAT),
DateConstants.DATE_FORMAT);
Integer tempRunningStatus = null;
if(isEnd == -1){
tempRunningStatus = -1;
}else if(isPer == 1){
tempRunningStatus = 0;
}else if(isIng1 == 1 && isIng2 == -1){
tempRunningStatus = 1;
}
this.runningStatus = tempRunningStatus;
}
}

View File

@@ -0,0 +1,36 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 管理端logo响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "AdminSiteLogoResponse对象", description = "管理端logo响应对象")
public class AdminSiteLogoResponse implements Serializable {
private static final long serialVersionUID = -4585094537501770138L;
@ApiModelProperty(value = "LOGO")
private String siteLogoSquare;
@ApiModelProperty(value = "左上角LOGO")
private String siteLogoLeftTop;
}

View File

@@ -0,0 +1,18 @@
package com.zbkj.common.response;
import lombok.Data;
/**
* CopyrightResponse 站点版权
*/
@Data
public class CopyRightResponse {
// 备案号
public String copyrightIcpNumber = "";
// 备案号连接
public String copyrightIcpNumberUrl = "";
// 网安备案
public String copyrightInternetRecord = "";
// 网安备案连接
public String copyrightInternetRecordUrl = "";
}

View File

@@ -0,0 +1,36 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 授权信息响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "CopyrightConfigInfoResponse对象", description = "授权信息响应对象")
public class CopyrightConfigInfoResponse implements Serializable {
private static final long serialVersionUID = -4585094537501770138L;
@ApiModelProperty(value = "公司信息")
private String companyName;
@ApiModelProperty(value = "公司图片")
private String companyImage;
}

View File

@@ -0,0 +1,43 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
/**
* 登录配置响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "LoginConfigResponse对象", description = "登录配置响应对象")
public class LoginConfigResponse implements Serializable {
private static final long serialVersionUID = -4585094537501770138L;
@ApiModelProperty(value = "小程序手机号校验类型(多选)")
private String routinePhoneVerification;
@ApiModelProperty(value = "公众号登录方式(单选)")
private String publicLoginType;
@ApiModelProperty(value = "移动端登录Logo")
private String mobileLoginLogo;
@ApiModelProperty(value = "公司名称")
private String siteName;
}

View File

@@ -0,0 +1,40 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 支付配置响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "PayConfigResponse对象", description = "支付配置响应对象")
public class PayConfigResponse implements Serializable {
private static final long serialVersionUID = 7282892323898493847L;
@ApiModelProperty(value = "余额支付")
private Boolean yuePayStatus;
@ApiModelProperty(value = "微信支付")
private Boolean payWechatOpen;
@ApiModelProperty(value = "用户余额")
private BigDecimal userBalance;
}

View File

@@ -0,0 +1,43 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 运费模板包邮响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ShippingTemplatesFreeResponse对象", description = "运费模板包邮响应对象")
public class ShippingTemplatesFreeResponse implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "描述")
private String title;
@ApiModelProperty(value = "包邮件数")
private BigDecimal number;
@ApiModelProperty(value = "包邮金额")
private BigDecimal price;
@ApiModelProperty(value = "分组唯一值")
private String uniqid;
}

View File

@@ -0,0 +1,55 @@
package com.zbkj.common.response;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
* 运费模板详情响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="ShippingTemplatesInfoResponse对象", description="运费模板详情响应对象")
public class ShippingTemplatesInfoResponse implements Serializable {
private static final long serialVersionUID = -849676402721624567L;
@ApiModelProperty(value = "编号")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ApiModelProperty(value = "模板名称")
private String name;
@ApiModelProperty(value = "计费方式")
private Integer type;
@ApiModelProperty(value = "包邮类型0-全国包邮1-部分包邮2-自定义")
private Integer appoint;
@ApiModelProperty(value = "排序")
private Integer sort;
@ApiModelProperty(value = "区域运费列表")
List<ShippingTemplatesRegionResponse> regionList;
@ApiModelProperty(value = "包邮运费列表")
List<ShippingTemplatesFreeResponse> freeList;
}

View File

@@ -0,0 +1,54 @@
package com.zbkj.common.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.DecimalMin;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 运费模板区域响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "ShippingTemplatesRegionResponse对象", description = "运费模板区域响应对象")
public class ShippingTemplatesRegionResponse implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "城市名称描述")
private String title;
@ApiModelProperty(value = "首件", required = true, example = "0.1")
@DecimalMin(value = "0.1", message = "首件金额不能低于0.1")
private BigDecimal first;
@ApiModelProperty(value = "首件运费", required = true, example = "0.1")
@DecimalMin(value = "0.1", message = "首件运费金额不能低于0.1")
private BigDecimal firstPrice;
@ApiModelProperty(value = "续件", required = true, example = "0.1")
@DecimalMin(value = "0.1", message = "续件不能低于0.1")
private BigDecimal renewal;
@ApiModelProperty(value = "续件运费", required = true, example = "0.1")
@DecimalMin(value = "0.1", message = "续件运费金额不能低于0.1")
private BigDecimal renewalPrice;
@ApiModelProperty(value = "分组唯一值")
private String uniqid;
}

View File

@@ -0,0 +1,108 @@
package com.zbkj.common.response.page;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* DIY数据表
* </p>
*
* @author dazongzi
* @since 2023-05-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="PageDiy Response 对象", description="DIY数据表")
public class PageDiyResponse implements Serializable {
private static final long serialVersionUID=1L;
// @TableId(value = "id", type = IdType.AUTO)
// private Integer id;
@ApiModelProperty(value = "版本号")
private String version;
@ApiModelProperty(value = "页面名称")
private String name;
@ApiModelProperty(value = "网站标题")
private String title;
@ApiModelProperty(value = "封面图")
private String coverImage;
@ApiModelProperty(value = "模板名称")
private String templateName;
@ApiModelProperty(value = "页面数据")
private JSONObject value;
@ApiModelProperty(value = "默认数据")
private String defaultValue;
@ApiModelProperty(value = "添加时间")
private Date addTime;
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "是否使用")
private Integer status;
@ApiModelProperty(value = "页面类型")
private Integer type;
@ApiModelProperty(value = "显示首页")
private Integer isShow;
@ApiModelProperty(value = "颜色是否选中")
private Integer isBgColor;
@ApiModelProperty(value = "背景图是否选中")
private Integer isBgPic;
@ApiModelProperty(value = "是否是diy数据")
private Integer isDiy;
@ApiModelProperty(value = "背景颜色")
private String colorPicker;
@ApiModelProperty(value = "背景图")
private String bgPic;
@ApiModelProperty(value = "背景图图片样式")
private Integer bgTabVal;
@ApiModelProperty(value = "是否删除")
private Integer isDel;
@ApiModelProperty(value = "返回地址")
private String returnAddress;
@ApiModelProperty(value = "标题背景色")
private String titleBgColor;
@ApiModelProperty(value = "标题颜色")
private String titleColor;
@ApiModelProperty(value = "商家样式")
private Integer serviceStatus;
@ApiModelProperty(value = "商户ID")
private Integer merId;
@ApiModelProperty(value = "默认模板(1.平台默认 2.商户默认)")
private Integer isDefault;
}

View File

@@ -0,0 +1,40 @@
package com.zbkj.common.response.pagelayout;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
/**
* 页面设计底部导航响应对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "PageLayoutBottomNavigationResponse对象", description = "页面设计底部导航响应对象")
public class PageLayoutBottomNavigationResponse implements Serializable {
private static final long serialVersionUID = 8350218800271787826L;
@ApiModelProperty(value = "底部导航")
private List<HashMap<String, Object>> bottomNavigationList;
@ApiModelProperty(value = "是否自定义")
private String isCustom;
}

View File

@@ -0,0 +1,74 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName AdminResultCode
* @Description 管理员模块响应状态码
* @Author HZW
* @Date 2023/3/7 12:20
* @Version 1.0
*/
public enum AdminResultCode implements BusinessExceptionAssert {
ADMIN_EXIST(3001, "管理员已存在"),
ADMIN_NOT_EXIST(3002, "管理员不存在"),
;
AdminResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public AdminResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public AdminResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,174 @@
package com.zbkj.common.result;
import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.vo.MyRecord;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 公共返回对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public class CommonResult<T> implements Serializable {
private static final long serialVersionUID = -6630747483482976634L;
/**
* 响应码
*/
private Integer code;
/**
* 响应消息
*/
private String message;
/**
* 响应体
*/
private T data;
// ===========构造器开始,构造器私有,外部不可直接创建=========================================
private CommonResult() {
this.code = 200;
}
private CommonResult(T data) {
this.code = 200;
this.data = data;
}
private CommonResult(Integer code, String message) {
this.code = code;
this.message = message;
}
private CommonResult(Integer code, String message, T data) {
this.code = code;
this.message = message;
this.data = data;
}
private CommonResult(IResultEnum iResultEnum) {
this.code = iResultEnum.getCode();
this.message = iResultEnum.getMessage();
}
// ===========构造器结束,构造器私有,外部不可直接创建=========================================
/**
* 成功返回,没有结果
*/
public static <T> CommonResult<T> success() {
return new CommonResult<>();
}
/**
* 成功返回,有返回结果
*
* @param data 获取的数据
*/
public static <T> CommonResult<T> success(T data) {
return new CommonResult<>(data);
}
/**
* 成功返回结果
*
* @param record 获取的数据
*/
public static CommonResult<Map<String, Object>> success(MyRecord record) {
return new CommonResult<>(record.getColumns());
}
/**
* 成功返回结果
*
* @param recordList 获取的数据
*/
public static CommonResult<List<Map<String, Object>>> success(List<MyRecord> recordList) {
List<Map<String, Object>> list = new ArrayList<>();
recordList.forEach(i -> {
list.add(i.getColumns());
});
return new CommonResult<>(list);
}
/**
* 通用返回失败
*
* @param iResultEnum 结果枚举
* @return T
*/
public static <T> CommonResult<T> failed(IResultEnum iResultEnum) {
return new CommonResult<>(iResultEnum);
}
/**
* 失败返回结果
*
* @param resultCode 结果枚举
* @param message 错误信息
*/
public static <T> CommonResult<T> failed(CommonResultCode resultCode, String message) {
return new CommonResult<>(resultCode.getCode(), message);
}
/**
* 失败返回结果
*/
public static <T> CommonResult<T> failed(CrmebException e) {
return new CommonResult<>(e.getCode(), e.getMessage());
}
/**
* 失败返回结果
*/
public static <T> CommonResult<T> failed() {
return failed(CommonResultCode.ERROR);
}
/**
* 失败返回结果
*
* @param message 错误信息
*/
public static <T> CommonResult<T> failed(String message) {
return new CommonResult<>(CommonResultCode.ERROR.getCode(), message);
}
public long getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public CommonResult<T> setMessage(String message) {
this.message = message;
return this;
}
public T getData() {
return data;
}
public void setData(T data) {
this.data = data;
}
}

View File

@@ -0,0 +1,85 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName ResultCodeEnum
* @Description 公共模块响应码枚举
* @Author HZW
* @Date 2023/2/21 16:10
* @Version 1.0
*/
public enum CommonResultCode implements BusinessExceptionAssert {
/*** 通用部分 100 - 599***/
// 请求成功
SUCCESS(200, "请求成功"),
// 重定向
REDIRECT(301, "redirect"),
VALIDATE_FAILED(400, "参数检验失败"),
UNAUTHORIZED(401, "未登录,请登录!"),
PERMISSION_EXPIRATION(402, "token过期请登录"),
FORBIDDEN(403, "无访问权限,请联系管理员授予权限"),
// 资源未找到
NOT_FOUND(404, "资源未找到"),
// 服务器错误
ERROR(500, "系统异常,请稍后重试"),
;
CommonResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public CommonResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public CommonResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,90 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName CommunityResultCode
* @Description 社区模块响应状态码
* @Author HZW
* @Date 2023/3/7 12:20
* @Version 1.0
*/
public enum CommunityResultCode implements BusinessExceptionAssert {
COMMUNITY_CATEGORY_EXIST(9101, "社区分类已存在"),
COMMUNITY_CATEGORY_NOT_EXIST(9102, "社区分类不存在"),
COMMUNITY_CATEGORY_ID_NULL(9103, "请选择社区分类"),
COMMUNITY_CATEGORY_USING(9104, "社区分类使用中,请先删除关联的社区内容"),
COMMUNITY_TOPIC_NAME_EXIST(9201, "社区话题已存在"),
COMMUNITY_TOPIC_NOT_EXIST(9202, "社区话题不存在"),
COMMUNITY_TOPIC_ID_NULL(9203, "请选择社区话题"),
COMMUNITY_TOPIC_RECOMMEND_NUM(9204, "社区话题推荐数量达到上限"),
COMMUNITY_NOTE_NOT_EXIST(9301, "社区笔记不存在"),
COMMUNITY_NOTE_AUDIT_STATUS_EXCEPTION(9302, "社区笔记审核状态异常"),
COMMUNITY_NOTE_AUTHOR_NOTE_EXIST(9303, "社区笔记作者不存在"),
COMMUNITY_NOTE_REPLY_IS_NOT_OPEN(9304, "社区笔记评论未打开"),
COMMUNITY_REPLY_NOT_EXIST(9401, "社区评论不存在"),
COMMUNITY_REPLY_AUDIT_STATUS_EXCEPTION(9302, "社区评论审核状态异常"),
COMMUNITY_REPLY_PLAT_CLOSE(9304, "社区评论已关闭"),
;
CommunityResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public CommunityResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public CommunityResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,76 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName CouponResultCode
* @Description 优惠券模块响应码
* @Author HZW
* @Date 2023/5/17 9:17
* @Version 1.0
*/
public enum CouponResultCode implements BusinessExceptionAssert {
COUPON_NOT_EXIST(10001, "优惠券不存在"),
COUPON_STATUS_ABNORMAL(10002, "订单状态异常"),
COUPON_PRODUCT_NOT_EXIST(10101, "优惠券对应商品不存在"),
;
CouponResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public CouponResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public CouponResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,41 @@
package com.zbkj.common.result;
/**
* @ClassName IResultEnum
* @Description 错误码接口 ErrCode
* @Author HZW
* @Date 2023/2/22 12:08
* @Version 1.0
*/
public interface IResultEnum {
/**
* 响应码规则:各个模块固定4位返回码
* 1***:登录、注册、认证模块
* 2***:支付、提现相关
* 3***:管理员模块
* 4***: 商户模块
* 5***: 订单模块
* 6***: 商品模块
* 7***: 系统设置模块
* 8***: 用户模块
* 9***:社区模块
* 10***: 优惠券模块
* 11***: 营销模块
* 12***: 一号通模块
* 13***: 微信模块
* 14***: 会员模块
*/
Integer getCode();
IResultEnum setCode(Integer code);
String getMessage();
IResultEnum setMessage(String message);
IResultEnum setMsgParams(Object... msgParams);
Object[] getMsgParams();
}

View File

@@ -0,0 +1,88 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName ResultCodeEnum
* @Description 登录、注册、认证模块响应码枚举
* @Author HZW
* @Date 2023/2/21 16:10
* @Version 1.0
*/
public enum LoginResultCode implements BusinessExceptionAssert {
LOGIN_PASSWORD_ERROR(1001, "登录密码不正确"),
CODE_IS_NOT_EXIST(1002, "code码不存在"),
REQUEST_IS_FAIL(1003, "请求微信失败,请稍后再试"),
USER_IS_NOT_ONLY(1004, "用户唯一标识获取失败"),
USERNAME_NOT_EXIST(1005, "用户名不存在"),
ACCOUNT_IS_DELETE(1006, "账号已被删除"),
ACCOUNT_NOT_ENABLE(1007, "账号已被禁用"),
LOGIN_INFO_IS_EMPTY(1008, "登录信息不能为空"),
LOGIN_USERNAME_IS_EMPTY(1009, "账号不能为空"),
LOGIN_PASSWORD_IS_EMPTY(1010, "密码不能为空"),
LOGIN_CAPTCHA_ERROR(1011, "验证码不正确"),
CANT_GET_NICKNAME(1012, "未获取到您的昵称信息~"),
CANT_GET_AVATAR_URL(1013, "未获取到您的头像信息~"),
OPENID_IS_EMPTY(1014, "openId不能为空"),
USER_NOT_FOUND(1015, "用户不存在"),
LOGIN_EXPIRE(1016, "登录状态已过期"),
;
LoginResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public LoginResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public LoginResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,85 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName MarketingResultCode
* @Description 营销模块响应码
* @Author HZW
* @Date 2023/5/17 9:17
* @Version 1.0
*/
public enum MarketingResultCode implements BusinessExceptionAssert {
ARTICLE_CATEGORY_USED(12001, "文章分类已使用"),
ARTICLE_CATEGORY_NOT_EXIST(12002, "文章分类不存在"),
ARTICLE_NOT_EXIST(12003, "文章不存在"),
SECKILL_TIME_INTERVAL_NOT_EXIST(12101, "秒杀时段不存在"),
SECKILL_TIME_INTERVAL_USED(12102, "秒杀时段已使用"),
SECKILL_ACTIVITY_NOT_EXIST(12103, "秒杀活动不存在"),
SECKILL_ACTIVITY_STATUS_ABNORMAL(12104, "秒杀活动状态异常"),
SECKILL_ACTIVITY_PRODUCT_NOT_EXIST(12105, "秒杀活动商品不存在"),
SECKILL_ACTIVITY_PRODUCT_STATUS_ABNORMAL(12105, "秒杀活动商品状态异常"),
SECKILL_ACTIVITY_END(12106, "秒杀活动已经结束"),
SECKILL_ACTIVITY_MERCHANT_LEVEL_INSUFFICIENT(12107, "秒杀活动商家等级不足"),
;
MarketingResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public MarketingResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public MarketingResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,77 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* 会员响应码
*
* @author Hzw
* @version 1.0.0
* @Date 2023/11/14
*/
public enum MemberResultCode implements BusinessExceptionAssert {
PAID_MEMBER_CARD_NOT_EXIST(14001, "付费会员卡不存在"),
PAID_MEMBER_CARD_CLOSE(14002, "付费会员卡已关闭"),
PAID_MEMBER_CARD_RESELECT(14003, "请重新选择会员卡"),
PAID_MEMBER_ORDER_NOT_EXIST(14101, "付费会员订单不存在"),
;
MemberResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public MemberResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public MemberResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public MemberResultCode setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,98 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName MerchantResultCode
* @Description 商户模块响应状态码
* @Author HZW
* @Date 2025/4/6 12:20
* @Version 1.0
*/
public enum MerchantResultCode implements BusinessExceptionAssert {
MERCHANT_EXIST(4101, "商户已存在"),
MERCHANT_NOT_EXIST(4102, "商户不存在"),
MERCHANT_SWITCH_CLOSE(4103, "商户开关未开启"),
MERCHANT_SWITCH_OPEN(4104, "商户开关已开启"),
MERCHANT_NOT_TAKE_THEIR(4104, "商户未开启自提"),
MERCHANT_APPLY_NOT_EXIST(4201, "商户申请单不存在"),
MERCHANT_TYPE_NOT_EXIST(4301, "商户类型不存在"),
MERCHANT_TYPE_USED(4302, "商户类型已使用"),
MERCHANT_ADDRESS_NOT_EXIST(4401, "商户地址不存在"),
MERCHANT_CATEGORY_NOT_EXIST(4501, "商户分类不存在"),
MERCHANT_CATEGORY_USED(4502, "商户分类已使用"),
MERCHANT_CLOSING_RECORD_NOT_EXIST(4601, "商户结算单不存在"),
MERCHANT_CLOSING_RECORD_AUDIT_ED(4602, "商户提现申请已经处理"),
MERCHANT_CLOSING_RECORD_AUDIT_STATUS_ABNORMAL(4603, "商户提现申请审核状态异常"),
MERCHANT_BALANCE_NOT_ENOUGH(4701, "商户余额不足"),
MERCHANT_PRINT_NOT_EXIST(4701, "商户打印机不存在"),
MERCHANT_EXPRESS_NOT_EXIST(4801, "商户物流公司不存在"),
;
MerchantResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public MerchantResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public MerchantResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,77 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName CouponResultCode
* @Description 优惠券模块响应码
* @Author HZW
* @Date 2023/5/17 9:17
* @Version 1.0
*/
public enum OnePassResultCode implements BusinessExceptionAssert {
ACCESS_KEY_NOT_CONFIG(12001, "请配置一号通access_key一号通后台应用管理获得APPID"),
SECRET_KEY_NOT_CONFIG(12002, "请配置一号通secret_key一号通后台应用管理获得AppSecret"),
SMS_NOT_OPEN(12101, "短信业务未开通"),
SMS_SHORTAGE_IN_NUMBER(12102, "短信业务数量不足"),
;
OnePassResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public OnePassResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public OnePassResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,94 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* 订单响应码
*
* @author Hzw
* @version 1.0.0
* @Date 2023/11/14
*/
public enum OrderResultCode implements BusinessExceptionAssert {
ORDER_NOT_EXIST(5001, "订单不存在"),
ORDER_DELETE(5002, "订单已删除"),
ORDER_LEVEL_ABNORMAL(5003, "订单等级异常"),
ORDER_REFUND_ED(5004, "订单已退款"),
ORDER_STATUS_ABNORMAL(5005, "订单状态异常"),
ORDER_SHIPPING_TYPE_PICK_UP(5006, "订单配送方式门店自提"),
ORDER_USER_NOT_DELETE(5007, "订单用户未删除"),
ORDER_VERIFICATION(5008, "订单已核销"),
PRE_ORDER_NOT_EXIST(5009, "预下单订单不存在"),
ORDER_CANCEL(5009, "订单已经取消"),
ORDER_PAID(5009, "订单已经支付"),
ORDER_NOT_PAID(5010, "订单未支付"),
ORDER_INVOICE_NOT_EXIST(5101, "订单发货单不存在"),
ORDER_INVOICE_LOGISTICS_NOT_EXIST(5102, "订单发货单物流不存在"),
ORDER_DETAIL_NOT_EXIST(5201, "订单详情不存在"),
ORDER_DETAIL_RECEIPT(5202, "订单详情已收货"),
ORDER_DETAIL_REPLY(5203, "订单详情已评价"),
REFUND_ORDER_NOT_EXIST(5501, "退款单不存在"),
REFUND_ORDER_STATUS_ABNORMAL(5502, "退款单状态异常"),
;
OrderResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public OrderResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public OrderResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public OrderResultCode setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,74 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName PayResultCode
* @Description 支付模块响应码
* @Author HZW
* @Date 2023/5/17 9:17
* @Version 1.0
*/
public enum PayResultCode implements BusinessExceptionAssert {
ALI_PAY_NOT_CONFIG(2101, "支付宝支付未配置"),
;
PayResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public PayResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public PayResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,114 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName ProductResultCode
* @Description 商品模块响应状态码
* @Author HZW
* @Date 2025/4/6 12:20
* @Version 1.0
*/
public enum ProductResultCode implements BusinessExceptionAssert {
PRODUCT_EXIST(6101, "商品已存在"),
PRODUCT_NOT_EXIST(6102, "商品不存在"),
PRODUCT_RECYCLE(6103, "商品已进入回收站"),
PRODUCT_AUDIT_STATUS_EXCEPTION(6104, "商品审核状态异常"),
PRODUCT_DELETE(6105, "商品已经删除"),
PRODUCT_IS_SHOW(6106, "商品已上架"),
PRODUCT_AUDIT_ING(6107, "商品审核中"),
PRODUCT_PLAT_CATEGORY_NOT_EXIST(6201, "商品平台分类不存在"),
PRODUCT_PLAT_CATEGORY_USED(6202, "商品分类已使用"),
PRODUCT_MER_CATEGORY_NOT_EXIST(6203, "商户商品分类不存在"),
PRODUCT_MER_CATEGORY_USED(6204, "商户商品分类已使用"),
PRODUCT_CDKEY_LIBRARY_NOT_EXIST(6301, "商品卡密库不存在"),
PRODUCT_CDKEY_LIBRARY_INTERACTION(6302, "商品卡密库已经关联"),
PRODUCT_CDKEY_NOT_QUICK_ADD(6303, "卡密商品不支持快捷添加库存"),
PRODUCT_CARD_SECRET_NOT_EXIST(6304, "商品卡密不存在"),
PRODUCT_CARD_SECRET_USED(6305, "商品卡密已使用"),
PRODUCT_CARD_SECRET_DELETE(6306, "商品卡密已删除"),
PRODUCT_TAG_STATUS_TRUE(6401, "商品标签状态已开启"),
SHIPPING_TEMPLATES_NOT_EXIST(6501, "运费模板不存在"),
SHIPPING_TEMPLATES_USED(6502, "运费模板已使用"),
PRODUCT_RULE_EXIST(6601, "商品规格值已经存在"),
PRODUCT_RULE_NOT_EXIST(6602, "商品规格值不存在"),
PRODUCT_BRAND_USED(6701, "商品品牌已使用"),
PRODUCT_BRAND_NOT_EXIST(6702, "商品品牌不存在"),
PRODUCT_BRAND_EXIST(6703, "商品品牌已存在"),
PRODUCT_GUARANTEE_GROUP_NOT_EXIST(6801, "商品保障服务组合不存在"),
PRODUCT_GUARANTEE_USED(6802, "商品保障服务已使用"),
PRODUCT_GUARANTEE_NOT_EXIST(6803, "商品保障服务不存在"),
PRODUCT_ATTR_VALUE_NOT_EXIST(6901, "商品规格属性值不存在"),
PRODUCT_REPLY_NOT_EXIST(6902, "商品评论不存在"),
PRODUCT_REPLY_ED(6903, "商品已评论"),
;
ProductResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public ProductResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public ProductResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,63 @@
package com.zbkj.common.result;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zbkj.common.annotation.CustomResponseAnnotation;
import lombok.SneakyThrows;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.MethodParameter;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.server.ServerHttpRequest;
import org.springframework.http.server.ServerHttpResponse;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
import javax.servlet.http.HttpServletRequest;
import java.util.Objects;
/**
* @ClassName ResultAdvice
* @Description 返回值/响应体统一处理
* @Author HZW
* @Date 2023/2/21 16:44
* @Version 1.0
*/
@RestControllerAdvice(basePackages = {"com.zbkj"})
public class ResultAdvice implements ResponseBodyAdvice<Object> {
@Autowired
private ObjectMapper objectMapper;
/* 使用自定义响应的标识 */
private static final String CUSTOM_RESPONSE_RESULT_ANNOTATION = "CUSTOM-RESPONSE-RESULT-ANNOTATION";
/**
* 是否支持advice功能
* true 支持false 不支持
*/
@Override
public boolean supports(MethodParameter returnType, Class<? extends HttpMessageConverter<?>> converterType) {
ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = Objects.requireNonNull(sra).getRequest();
CustomResponseAnnotation customResponseAnnotation = (CustomResponseAnnotation) request.getAttribute(CUSTOM_RESPONSE_RESULT_ANNOTATION);
// 判断返回体是否需要处理
return customResponseAnnotation == null;
}
/**
* 对返回数据进行处理
*/
@SneakyThrows
@Override
public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class<? extends HttpMessageConverter<?>> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {
if (body instanceof String) {// 如果Controller直接返回String的话SpringBoot是直接返回故我们需要手动转换成json。
return objectMapper.writeValueAsString(CommonResult.success(body));
}
if (body instanceof CommonResult) {// 如果返回的结果是CommonResult对象直接返回即可。
return body;
}
return CommonResult.success(body);
}
}

View File

@@ -0,0 +1,98 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName SystemFormResultCode
* @Description 系统设置响应码枚举
* @Author HZW
* @Date 2023/3/4 11:12
* @Version 1.0
*/
public enum SystemConfigResultCode implements BusinessExceptionAssert {
FORM_TEMP_NOT_EXIST(7101, "表单不存在"),
FORM_TEMP_PARAMETER_ERROR(7102, "模板表单 【{}】 的内容不是正确的JSON格式"),
FORM_TEMP_NAME_REPEAT(7103, "模板表单名称重复"),
CATEGORY_NOT_EXIST(7201, "分类不存在"),
NOTIFICATION_NOT_EXIST(7301, "消息通知不存在"),
NOTIFICATION_SMS_CLOSE(7302, "消息通知短信开关未开启"),
SMS_TEMPLATE_NOT_EXIST(7303, "短信模板不存在"),
NOTIFICATION_NOT_CONFIG_PUBLIC(7304, "消息通知没有配置公众号模板"),
NOTIFICATION_NOT_CONFIG_ROUTINE(7304, "消息通知没有配置小程序订阅模板"),
SIGN_COFNIG_NOT_EXIST(7401, "签到配置不存在"),
MENU_NOT_EXIST(7501, "菜单不存在"),
ROLE_NOT_EXIST(7502, "角色不存在"),
ROLE_DELETE(7502, "角色已删除"),
ROLE_USED(7502, "角色已使用"),
USER_LEVEL_NOT_EXIST(7601, "系统用户等级不存在"),
PAGE_DIY_NOT_EXIST(7801, "diy模板信息不存在"),
CITY_REGION_NOT_EXIST(7901, "城市区域不存在"),
EXPRESS_NOT_EXIST(7905, "快递公司不存在"),
;
SystemConfigResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public SystemConfigResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public SystemConfigResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,95 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName UserResultCode
* @Description 用户模块响应状态码
* @Author HZW
* @Date 2023/3/7 12:20
* @Version 1.0
*/
public enum UserResultCode implements BusinessExceptionAssert {
USER_EXIST(8101, "用户已存在"),
USER_NOT_EXIST(8102, "用户不存在"),
USER_ID_NULL(8103, "请选择用户"),
USER_STATUS_EXCEPTION(8104, "用户状态异常"),
USER_LOGOFF(8105, "用户已经注销"),
USER_REGISTER_FAILED(8106, "用户注册失败"),
USER_PHONE_EXIST(8107, "用户手机号已存在"),
USER_LOGOFF_FAILED(8108, "用户注销失败"),
USER_NOT_COLLECT_MERCHANT(8109, "用户未收藏商户"),
USER_BALANCE_INSUFFICIENT(8110, "用户余额不足"),
USER_ADDRESS_NOT_EXIST(8201, "用户地址不存在"),
USER_ADDRESS_CREATE_FAILED(8202, "用户地址创建失败"),
USER_CLOSING_PROCESSING(8301, "用户结算申请正常处理中"),
USER_CLOSING_NULL(8302, "用户结算单不存在"),
USER_CLOSING_AUDIT_STATUS_EXCEPTION(8303, "用户结算单审核状态异常"),
USER_BROKERAGE_INSUFFICIENT(8401, "用户佣金不足"),
USER_TAG_USING(8501, "用户标签正在使用中"),
;
UserResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public UserResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public UserResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,80 @@
package com.zbkj.common.result;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.exception.BusinessExceptionAssert;
/**
* @ClassName WechatResultCode
* @Description 微信模块响应状态码
* @Author HZW
* @Date 2023/3/7 12:20
* @Version 1.0
*/
public enum WechatResultCode implements BusinessExceptionAssert {
ADMIN_EXIST(13001, "管理员已存在"),
ADMIN_NOT_EXIST(13002, "管理员不存在"),
PUBLIC_APPID_NOT_CONFIG(13101, "微信公众号appId未设置"),
PUBLIC_SECRET_NOT_CONFIG(13101, "微信公众号secret未设置"),
ROUTINE_APPID_NOT_CONFIG(13201, "微信小程序appId未设置"),
ROUTINE_SECRET_NOT_CONFIG(13201, "微信小程序secret未设置"),
;
WechatResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
/**
* 响应状态码
*/
private Integer code;
/**
* 响应信息
*/
private String message;
/**
* 响应信息补充
*/
private Object[] msgParams;
@Override
public Integer getCode() {
return code;
}
@Override
public WechatResultCode setCode(Integer code) {
this.code = code;
return this;
}
@Override
public String getMessage() {
if (ArrayUtil.isNotEmpty(msgParams)) {
return StrUtil.format(message, msgParams);
}
return message;
}
@Override
public WechatResultCode setMessage(String message) {
this.message = message;
return this;
}
@Override
public IResultEnum setMsgParams(Object... msgParams) {
this.msgParams = msgParams;
return this;
}
@Override
public Object[] getMsgParams() {
return msgParams;
}
}

View File

@@ -0,0 +1,742 @@
package com.zbkj.common.utils;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.zbkj.common.constants.DateConstants;
import com.zbkj.common.exception.CrmebException;
import com.zbkj.common.vo.DateLimitUtilVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* Date工具类
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
**/
public final class CrmebDateUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(CrmebDateUtil.class);
private CrmebDateUtil() {
throw new IllegalStateException("Utility class");
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nowDate() {
return nowDate(DateConstants.DATE_FORMAT_NUM);
}
/**
* 获取当前年,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nowYear() {
Calendar cal = Calendar.getInstance();
return cal.get(Calendar.YEAR) + "";
}
/**
* 获取上一年,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String lastYear() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
return cal.get(Calendar.YEAR) + "";
}
/**
* 获取下一年,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nextYear() {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, +1);
return cal.get(Calendar.YEAR) + "";
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static Date nowDateTime() {
return strToDate(nowDateTimeStr(), DateConstants.DATE_FORMAT);
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nowDateTimeStr() {
return nowDate(DateConstants.DATE_FORMAT);
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nowDate(String DATE_FORMAT) {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return dft.format(new Date());
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static String nowDateTime(String DATE_FORMAT) {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return dft.format(new Date());
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static Integer getNowTime() {
long t = (System.currentTimeMillis() / 1000L);
return Integer.parseInt(String.valueOf(t));
}
/**
* 获取当前时间戳(秒级)
*
* @return
*/
public static Long getTime() {
return (System.currentTimeMillis() / 1000L);
}
/**
* 获取当前日期,指定格式
* 描述:<描述函数实现的功能>.
*
* @return
*/
public static Date nowDateTimeReturnDate(String DATE_FORMAT) {
SimpleDateFormat dft = new SimpleDateFormat(DATE_FORMAT);
return strToDate(dft.format(new Date()), DATE_FORMAT);
}
/**
* convert a date to string in a specifies fromat.
*
* @param date
* @param DATE_FORMAT
* @return
*/
public static String dateToStr(Date date, String DATE_FORMAT) {
if (date == null) {
return null;
}
SimpleDateFormat myFormat = new SimpleDateFormat(DATE_FORMAT);
return myFormat.format(date);
}
/**
* parse a String to Date in a specifies fromat.
*
* @param dateStr
* @param DATE_FORMAT
* @return
* @throws ParseException
*/
public static Date strToDate(String dateStr, String DATE_FORMAT) {
SimpleDateFormat myFormat = new SimpleDateFormat(DATE_FORMAT);
try {
return myFormat.parse(dateStr);
} catch (ParseException e) {
return null;
}
}
/**
* date add Second
*
* @param date
* @param num
* @return
*/
public static Date addSecond(Date date, int num) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, num);
return calendar.getTime();
}
/**
* date add Second return String
*
* @param date
* @param num
* @return
*/
public static String addSecond(Date date, int num, String DATE_FORMAT) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, num);
return dateToStr(calendar.getTime(), DATE_FORMAT);
}
/**
* 指定日期加上天数后的日期
*
* @param num 为增加的天数
* @param newDate 创建时间
* @return
*/
public static final String addDay(String newDate, int num, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
Date currdate = format.parse(newDate);
Calendar ca = Calendar.getInstance();
ca.setTime(currdate);
ca.add(Calendar.DATE, num);
return format.format(ca.getTime());
} catch (ParseException e) {
LOGGER.error("转化时间出错,", e);
return null;
}
}
/**
* 指定日期加上天数后的日期
*
* @param num 为增加的天数
* @param newDate 创建时间
* @return
*/
public static final String addDay(Date newDate, int num, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
Calendar ca = Calendar.getInstance();
ca.setTime(newDate);
ca.add(Calendar.DATE, num);
return format.format(ca.getTime());
}
/**
* convert long to date
*
* @param date 待转换时间戳
* @return 转换后时间
*/
public static Date timeStamp11ToDate(Integer date) {
return new Date(date);
}
/**
* convert long to date string
*
* @param date 待转换时间戳
* @param DATE_FORMAT 格式化时间
* @return 格式化后的时间
*/
public static String timeStamp11ToDate(Integer date, String DATE_FORMAT) {
return dateToStr(new Date(date), DATE_FORMAT);
}
/**
* compare two date String with a pattern
*
* @param date1 开始时间
* @param date2 结束时间
* @param pattern 时间格式
* @return 1=D1大 -1=D2大0=相等
*/
public static int compareDate(String date1, String date2, String pattern) {
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(pattern);
try {
Date dt1 = DATE_FORMAT.parse(date1);
Date dt2 = DATE_FORMAT.parse(date2);
if (dt1.getTime() > dt2.getTime()) {
return 1;
} else if (dt1.getTime() < dt2.getTime()) {
return -1;
} else {
return 0;
}
} catch (ParseException e) {
e.printStackTrace();
return 0;
}
}
/**
* 检查日期格式是否合法
*
* @param date
* @param style
* @return
*/
public static boolean checkDateFormat(String date, String style) {
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat(style);
try {
// 设置lenient为false.
// 否则SimpleDateFormat会比较宽松地验证日期比如2007/02/29会被接受并转换成2007/03/01
DATE_FORMAT.setLenient(false);
DATE_FORMAT.parse(date);
return true;
} catch (ParseException e) {
return false;
}
}
/**
* 计算两个时间之间的天数差
*
* @param beforeDay 开始时间
* @param afterDay 结束时间
* @return 相差天数
*/
public static long getTwoDateDays(Date beforeDay, Date afterDay) {
SimpleDateFormat sm = new SimpleDateFormat(DateConstants.DATE_FORMAT_NUM);
long days = -1;
try {
days = (sm.parse(sm.format(afterDay)).getTime() - sm.parse(sm.format(beforeDay)).getTime()) / (1000 * 3600 * 24);
} catch (Exception e) {
e.printStackTrace();
}
return days;
}
//获取时间戳11位
public static int getSecondTimestamp(Date date) {
if (null == date) {
return 0;
}
String timestamp = String.valueOf(date.getTime() / 1000);
return Integer.parseInt(timestamp);
}
//获取时间戳11位
public static int getSecondTimestamp(String date) {
if (null == date) {
return 0;
}
Date date1 = strToDate(date, DateConstants.DATE_FORMAT);
if (date1 == null) {
return 0;
}
String timestamp = String.valueOf(date1.getTime() / 1000);
return Integer.parseInt(timestamp);
}
//获取时间戳10位
public static int getSecondTimestamp(Long timeMillis) {
if (null == timeMillis) {
return 0;
}
String timestamp = String.valueOf(timeMillis / 1000);
return Integer.parseInt(timestamp);
}
//获取时间戳11位
public static int getSecondTimestamp() {
Date date = strToDate(nowDateTime(DateConstants.DATE_FORMAT), DateConstants.DATE_FORMAT);
if (null == date) {
return 0;
}
String timestamp = String.valueOf(date.getTime() / 1000);
return Integer.parseInt(timestamp);
}
/**
* 获得昨天日期:yyyy-MM-dd HH:mm:ss
*/
public static String getYesterdayStr() {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return startSdf.format(c.getTime());
}
/**
* 获得本周第一天:yyyy-MM-dd HH:mm:ss
*/
public static String getWeekStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.WEEK_OF_MONTH, 0);
c.set(Calendar.DAY_OF_WEEK, 2);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
return startSdf.format(c.getTime());
}
/**
* 获得本周最后一天:yyyy-MM-dd HH:mm:ss
*/
public static String getWeekEndDay() {
return addDay(getWeekStartDay(), 7, DateConstants.DATE_FORMAT);
}
/**
* 获得上周第一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastWeekStartDay() {
return addDay(getWeekStartDay(), -7, DateConstants.DATE_FORMAT);
}
/**
* 获得上周最后一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastWeekEndDay() {
return addDay(getLastWeekStartDay(), 7, DateConstants.DATE_FORMAT);
}
/**
* 获得本月最后一天:yyyy-MM-dd HH:mm:ss
*/
public static String getMonthEndDay() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return endSdf.format(c.getTime());
}
/**
* 获得上月第一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastMonthStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH, 1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-MM-01 00:00:00");
return startSdf.format(c.getTime());
}
/**
* 获得上月最后一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastMonthEndDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
return endSdf.format(c.getTime());
}
/**
* 获得上年第一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastYearStartDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
SimpleDateFormat startSdf = new SimpleDateFormat("yyyy-01-01 00:00:00");
return startSdf.format(c.getTime());
}
/**
* 获得上年最后一天:yyyy-MM-dd HH:mm:ss
*/
public static String getLastYearEndDay() {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
SimpleDateFormat endSdf = new SimpleDateFormat("yyyy-12-31 23:59:59");
return endSdf.format(c.getTime());
}
/**
* 计算时间范围
*
* @param data string 类型
* @return dateLimitUtilVo
* @since 2020-05-06
*/
public static DateLimitUtilVo getDateLimit(String data) {
//时间计算
String startTime = null;
String endTime = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT);
String day = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT_START);
String end = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT_END);
if (StrUtil.isNotBlank(data)) {
switch (data) {
case DateConstants.SEARCH_DATE_DAY:
startTime = day;
break;
case DateConstants.SEARCH_DATE_YESTERDAY:
startTime = CrmebDateUtil.addDay(day, -1, DateConstants.DATE_FORMAT_START);
endTime = CrmebDateUtil.addDay(end, -1, DateConstants.DATE_FORMAT_END);
break;
case DateConstants.SEARCH_DATE_LATELY_7:
startTime = CrmebDateUtil.addDay(day, -6, DateConstants.DATE_FORMAT_START);
break;
case DateConstants.SEARCH_DATE_WEEK:
startTime = getWeekStartDay();
endTime = getWeekEndDay();
break;
case DateConstants.SEARCH_DATE_PRE_WEEK:
startTime = getLastWeekStartDay();
endTime = getLastWeekEndDay();
break;
case DateConstants.SEARCH_DATE_LATELY_30:
startTime = CrmebDateUtil.addDay(day, -30, DateConstants.DATE_FORMAT_START);
break;
case DateConstants.SEARCH_DATE_LATELY_90:
startTime = CrmebDateUtil.addDay(day, -90, DateConstants.DATE_FORMAT_START);
break;
case DateConstants.SEARCH_DATE_LATELY_180:
startTime = CrmebDateUtil.addDay(day, -180, DateConstants.DATE_FORMAT_START);
break;
case DateConstants.SEARCH_DATE_MONTH:
startTime = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT_MONTH_START);
endTime = getMonthEndDay();
break;
case DateConstants.SEARCH_DATE_PRE_MONTH:
startTime = getLastMonthStartDay();
endTime = getLastMonthEndDay();
break;
case DateConstants.SEARCH_DATE_YEAR:
startTime = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT_YEAR_START);
endTime = CrmebDateUtil.nowDateTime(DateConstants.DATE_FORMAT_YEAR_END);
break;
case DateConstants.SEARCH_DATE_PRE_YEAR:
startTime = getLastYearStartDay();
endTime = getLastYearEndDay();
break;
default:
List<String> list = CrmebUtil.stringToArrayStr(data);
if (list.size() == 1) {
throw new CrmebException("选择时间参数格式错误,请在 " +
DateConstants.SEARCH_DATE_DAY + "|" +
DateConstants.SEARCH_DATE_YESTERDAY + "|" +
DateConstants.SEARCH_DATE_LATELY_7 + "|" +
DateConstants.SEARCH_DATE_LATELY_30 + "|" +
DateConstants.SEARCH_DATE_MONTH + "|" +
DateConstants.SEARCH_DATE_YEAR + "|自定义时间范围格式yyyy-MM-dd HH:mm:ss两个时间范围用逗号分割");
}
startTime = list.get(0);
endTime = list.get(1);
// if (startTime.equals(endTime)) {
startTime = CrmebDateUtil.appointedDayStrToFormatStr(startTime, DateConstants.DATE_FORMAT_DATE, DateConstants.DATE_FORMAT_START);
endTime = CrmebDateUtil.appointedDayStrToFormatStr(endTime, DateConstants.DATE_FORMAT_DATE, DateConstants.DATE_FORMAT_END);
// }
break;
}
}
return new DateLimitUtilVo(startTime, endTime);
}
/**
* 计算月时间范围
*
* @param data string 时间祖父穿
* @return dateLimitUtilVo
*/
public static DateLimitUtilVo getMonthLimit(String data) {
List<String> monthList = CrmebUtil.stringToArrayStr(data);
if (monthList.size() != 2) {
throw new CrmebException("选择时间参数格式错误范围格式yyyy-MM两个时间范围用逗号分割");
}
String startMonth = monthList.get(0);
String endMonth = monthList.get(1);
if (!isValidMonth(startMonth) || !isValidMonth(endMonth)) {
throw new CrmebException("时间参数格式错误格式yyyy-MM");
}
return new DateLimitUtilVo(startMonth, endMonth);
}
/**
* 校验是否是年-月格式
*
* @param month 月份:年-月
* @return boolean
*/
public static boolean isValidMonth(String month) {
SimpleDateFormat format = new SimpleDateFormat(DateConstants.DATE_FORMAT_MONTH);
ParsePosition pos = new ParsePosition(0);
format.setLenient(false);
Date result = format.parse(month, pos);
return !(pos.getIndex() == 0) && month.equals(format.format(result));
}
/**
* 获取某一时间段内的时间集合
*
* @param data string 类型
* @return List<Date>
* @since 2020-05-06
*/
public static List<String> getListDate(String data) {
//获取30天的开始结束日期
DateLimitUtilVo dateLimit = CrmebDateUtil.getDateLimit(data);
//定义日期集合
List<String> date = new ArrayList<>();
//开始日期
Date startDate = CrmebDateUtil.strToDate(dateLimit.getStartTime(), DateConstants.DATE_FORMAT);
//结束日期
Date endDate = CrmebDateUtil.strToDate(dateLimit.getEndTime(), DateConstants.DATE_FORMAT);
while (endDate.after(startDate)) {
date.add(CrmebDateUtil.dateToStr(startDate, DateConstants.DATE_FORMAT_DATE)); // 放入集合
startDate = CrmebDateUtil.strToDate(CrmebDateUtil.addDay(startDate, 1, DateConstants.DATE_FORMAT), DateConstants.DATE_FORMAT); //循环一次 加一天
}
return date;
}
/**
* 两个日期之前的相差天数
*
* @param starDate 开始日期
* @param endDate 结束日期
* @return 相差天数
*/
public static int daysBetween(Date starDate, Date endDate) {
Calendar cal = Calendar.getInstance();
cal.setTime(starDate);
long time1 = cal.getTimeInMillis();
cal.setTime(endDate);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 获取指定日期指定格式字符串
*
* @param dateStr
* @param DATE_FORMAT
* @return
* @throws ParseException
*/
public static String appointedDayStrToFormatStr(String dateStr, String STR_DATE_FORMAT, String DATE_FORMAT) {
Date date = CrmebDateUtil.strToDate(dateStr, STR_DATE_FORMAT);
return CrmebDateUtil.dateToStr(date, DATE_FORMAT);
}
/**
* 获取当前时间小时
*
* @return 当前时间小时 默认24小时
*/
public static int getCurrentHour() {
int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
return hour;
}
/**
* 13位时间戳转字符串
*
* @param timestamp
* @param dateFormat
* @return
*/
public static String timestamp2DateStr(Long timestamp, String dateFormat) {
if (ObjectUtil.isNull(timestamp)) {
return "";
}
if (StrUtil.isBlank(dateFormat)) {
dateFormat = DateConstants.DATE_FORMAT;
}
Date date = new Date(timestamp);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
return simpleDateFormat.format(date);
}
/**
* 字符串转13位时间戳
*/
public static Long dateStr2Timestamp(String dateStr, String type) {
DateTime parse = DateUtil.parse(dateStr);
if (StrUtil.isNotBlank(type)) {
if (type.equals(DateConstants.DATE_TIME_TYPE_BEGIN)) {
parse = DateUtil.beginOfDay(parse);
}
if (type.equals(DateConstants.DATE_TIME_TYPE_END)) {
parse = DateUtil.endOfDay(parse);
}
}
return parse.getTime();
}
public static void main(String[] args) {
DateLimitUtilVo dateLimit = getDateLimit(DateConstants.SEARCH_DATE_LATELY_7);
System.out.println(dateLimit.getStartTime());
System.out.println(dateLimit.getEndTime());
}
/**
* 获取某个月的每一天
* @param yearParam 年
* @param monthParam 月
* @return 每一天列表
*/
public static List<String> getAllDayByMonth(Integer yearParam, Integer monthParam) {
List<String> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance(Locale.CHINA);
calendar.set(yearParam, monthParam - 1, 1);
int year = calendar.get(Calendar.YEAR);//年份
int month = calendar.get(Calendar.MONTH) + 1;//月份
int day = calendar.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= day; i++) {
String date = null;
if (month < 10 && i < 10) {
date = year + "-0" + month + "-0" + i;
}
if (month < 10 && i >= 10) {
date = year + "-0" + month + "-" + i;
}
if (month >= 10 && i < 10) {
date = year + "-" + month + "-0" + i;
}
if (month >= 10 && i >= 10) {
date = year + "-" + month + "-" + i;
}
list.add(date);
}
return list;
}
}

View File

@@ -0,0 +1,33 @@
package com.zbkj.common.utils;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Objects;
/**
* BigDecimal 传输类型String转数字
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
public class CustomerBigDecimalSerialize extends JsonSerializer<BigDecimal> {
@Override
public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if(Objects.nonNull(value)) {
gen.writeNumber(value.stripTrailingZeros().doubleValue());
//去除0后缀,如果想统一进行保留精度,也可以采用类似处理
}else {//如果为null的话就写null
gen.writeNull();
}
}
}

View File

@@ -0,0 +1,51 @@
package com.zbkj.common.utils;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
/**
* @Auther: 大粽子
* @Date: 2023/8/29 12:14
* @Description: 描述对应的业务场景
*/
public class OnePassUtil {
private static final String ENCRYPTION_ALGORITHM = "AES/CBC/PKCS5Padding";
private static final String SECRET_KEY = "user-AppSecret-key";
/**
* 一号通商家寄件 回调数据揭秘方法
* @param encryptedData 回调加密数据
* @return 揭秘数据
* @throws Exception 异常信息
*/
public static String decrypt(String encryptedData) throws Exception {
byte[] decodedBytes = Base64.getDecoder().decode(encryptedData);
byte[] ivBytes = new byte[16];
byte[] encryptedBytes = new byte[decodedBytes.length - 16];
System.arraycopy(decodedBytes, 0, ivBytes, 0, 16);
System.arraycopy(decodedBytes, 16, encryptedBytes, 0, encryptedBytes.length);
Cipher cipher = Cipher.getInstance(ENCRYPTION_ALGORITHM);
SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.substring(0, 32).getBytes("UTF-8"), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
}
// public static void main(String[] args) {
// try {
// // 加密字符串
// String encryptedString = "85Z0kFc/X0EXUUZes5Wdni9jXOuZiWb5uRGZrk+48dkoourTAXBO4jZR8au8vXqFKKyqpTo/7Detwww9p8HdVN4cCD4wh/S3ic1jCTPJVI8cEowGAFoYNAi5mPOg4y8F/T1U8lqyL7TxrYx6P5KRoSwFbjj9z0e9rHvh/fWtaA/XirRLebVqA3zzYigKPx3m";
//
// // 解密字符串
// String decryptedString = decrypt(encryptedString);
// System.out.println("解密后的字符串: " + decryptedString);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
}

View File

@@ -0,0 +1,34 @@
package com.zbkj.common.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
/**
* @Auther: 大粽子
* @Date: 2023/9/9 15:19
* @Description: For SCRM
*/
@Component
public class SCRMUtils {
@Autowired
private RestTemplateUtil restTemplateUtil;
private String scrm_addUser_URL = "http://api.scrm.crmeb.com/api/contactBatchAdd";
public void addUserForSCRM(String phone, String nikename){
String type = "java单商户";
HashMap addUserPram = new HashMap<>();
addUserPram.put("phone", phone);
addUserPram.put("nikename", nikename);
addUserPram.put("type", type);
String result = restTemplateUtil.postMapData(scrm_addUser_URL, addUserPram);
System.out.println("result:"+result);
}
}

View File

@@ -0,0 +1,29 @@
package com.zbkj.common.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 二维码Vo对象
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "QrCodeVo对象", description = "二维码Vo对象")
public class QrCodeVo {
@ApiModelProperty(value = "二维码base64已处理")
private String code;
}

View File

@@ -0,0 +1,25 @@
package com.zbkj.common.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
*
* +----------------------------------------------------------------------
* | CRMEB [ CRMEB赋能开发者助力企业发展 ]
* +----------------------------------------------------------------------
* | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
* +----------------------------------------------------------------------
* | Licensed CRMEB并不是自由软件未经许可不能去掉CRMEB相关版权
* +----------------------------------------------------------------------
* | Author: CRMEB Team <admin@crmeb.com>
* +----------------------------------------------------------------------
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WechatVideoUploadImageInfoVo extends BaseResultResponseVo {
private String media_id;
private String temp_img_url;
private String pay_media_id;
}