记得上下班打卡 | git大法好,push需谨慎

Commit c9765a4c authored by anjiabin's avatar anjiabin

Merge remote-tracking branch 'origin/dev_member_voucher_refund' into dev-social

# Conflicts:
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinRedisConst.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinPerformanceVo.java
#	liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/returns/OrderDetailsVo.java
#	liquidnet-bus-api/pom.xml
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/kylin/KylinPerformancesController.java
#	liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/kylin/service/impl/KylinPerformancesAdminServiceImpl.java
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-dev.yml
#	liquidnet-bus-config/liquidnet-config/liquidnet-service-order-test.yml
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinPerformanceStatus.java
#	liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinPerformancesMapper.xml
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinOrderTicketsServiceImpl.java
#	liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
#	liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/kylin/DMCheckOrderTimeImpl.java
#	liquidnet-bus-service/pom.xml
parents bc99e09b d91b6aad
-- 退款配置添加 --
ALTER TABLE kylin_performance_status ADD is_refund_poundage tinyint DEFAULT 0 COMMENT '是否有手续费';
ALTER TABLE kylin_performance_status ADD is_refund_voucher tinyint DEFAULT 0 COMMENT '是否退优惠券';
ALTER TABLE kylin_performance_status ADD is_refund_express tinyint DEFAULT 0 COMMENT '是否快递费';
-- 订单相关券逻辑添加 --
drop TABLE if exists `kylin_order_coupons`;
CREATE TABLE `kylin_order_coupons`
(
`mid` int NOT NULL AUTO_INCREMENT,
`order_id` varchar(255) NOT NULL DEFAULT '' COMMENT '订单id',
`coupon_code` varchar(255) NOT NULL DEFAULT '' COMMENT '券code = 券id',
`coupon_type` tinyint NOT NULL DEFAULT 0 COMMENT '券类别',
`coupon_price` decimal(8, 2) NOT NULL DEFAULT 0.0 COMMENT '券的优惠金额',
`comment` varchar(200) NOT NULL DEFAULT '' COMMENT '备用',
`created_at` datetime(3) NULL DEFAULT NULL COMMENT '创建时间',
`updated_at` datetime(3) NULL DEFAULT NULL COMMENT '修改时间',
KEY `kylin_order_coupons_order_coupon_code_index` (`coupon_code`),
KEY `kylin_order_coupons_order_id_index` (`order_id`),
KEY `kylin_order_coupons_voucher_type_index` (`coupon_type`),
PRIMARY KEY (`mid`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '订单券 关联表';
# -- >>------------------------------------------------------------------------------------ |20210817会员与券改版
# 券发放管理
drop table if exists candy_mgt_coupon;
create table candy_mgt_coupon
(
mid bigint unsigned auto_increment primary key,
mcoupon_id varchar(64) not null,
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '发放状态[0-未发放|1-已发放|2-无效|9-发放中]',
# bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]',
event_amt int comment '发放量',
event_type tinyint comment '发放类型[1-会员|2-手机号|10-全体用户]',
event_limit text comment '`发放类型`为2-手机号时发放手机号以,分隔',
event_at datetime(3) comment '发放时间(立即-当前时间+3分钟|预约-点选时间)',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment text
) engine InnoDB comment '券发放管理';
create unique index uidx_candy_mgt_coupon_id on candy_mgt_coupon (mcoupon_id);
# 券基础信息
drop table if exists candy_coupon;
create table candy_coupon
(
mid bigint unsigned auto_increment primary key,
coupon_id varchar(64) not null,
state tinyint comment '券状态[0-INIT|1-NORMAL|2-INVALID]',
title varchar(50) not null comment '券标题',
label varchar(50) comment '标注',
notice varchar(200) comment '注意/须知',
exclusive smallint comment '专享标识[0-常规|1-会员礼包]',
busi_type smallint comment '业务类别[0-全场|1-演出|2-商品|3-优先购]',
cou_type smallint comment '券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]',
bind_type smallint comment '领取方式[0-用户输入兑换|1-发放至用户]',
discount decimal(8, 2) comment '折扣[8折即0.8]',
val_face decimal(8, 2) comment '面值',
val_over decimal(8, 2) comment '满减~满',
val_minus decimal(8, 2) comment '满减~减',
overlay tinyint default 0 comment '叠加限制[0-限制|1-叠加]',
overlay_level tinyint default 0 comment '#同类别券叠加适用',
validity int comment '有效期(单位天)',
redeem_validity int comment '兑换有效期(单位天)',
redeem_start datetime(3) comment '兑换开放时间',
redeem_stop datetime(3) comment '兑换停止时间',
effect_at datetime(3) comment '生效时间',
expire_at datetime(3) comment '过期时间',
operator varchar(64) not null comment '操作人',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '券基础信息';
create unique index uidx_candy_coupon_id on candy_coupon (coupon_id);
# 券适用规则
drop table if exists candy_coupon_rule;
create table candy_coupon_rule
(
mid bigint unsigned auto_increment primary key,
crule_id varchar(64) not null,
coupon_id varchar(64) not null,
use_scope smallint comment '适用范围[100-全场|90-演出|80-商品]',
busi_name varchar(64) comment '适用名称',
busi_id varchar(64) comment '适用ID',
state tinyint comment '0-INIT,1-NORMAL,2-INVALID',
comment varchar(255)
) engine = InnoDB comment '券适用规则';
create unique index uidx_candy_coupon_rule_id on candy_coupon_rule (crule_id);
# 券码信息
drop table if exists candy_coupon_code;
create table candy_coupon_code
(
mid bigint unsigned auto_increment primary key,
ccode varchar(64) not null comment '券码',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '状态[0-未使用|1-已使用|2-失效|3-退回]',
redeem_uid varchar(64) comment '兑换用户UID',
redeem_mobile varchar(64) comment '兑换用户手机号',
redeem_at datetime(3) comment '兑换时间',
created_at datetime(3) not null,
updated_at datetime(3),
comment varchar(255)
) engine = InnoDB comment '券码信息';
create unique index uidx_candy_coupon_code_id on candy_coupon_code (ccode, coupon_id);
# 用户券信息
drop table if exists candy_user_coupon;
create table candy_user_coupon
(
mid bigint unsigned auto_increment primary key,
ucoupon_id varchar(64) not null,
mcoupon_id varchar(64) not null comment '~candy_mgt_coupon.mcoupon_id',
uid varchar(64) not null comment '~adam_user.uid',
coupon_id varchar(64) not null comment '~candy_coupon.coupon_id',
state tinyint comment '用户券状态[1-可用|2-无效|3-已过期|5-已使用]',
ccode varchar(64) comment '券码~candy_coupon_code.ccode',
bind_at datetime(3) comment '激活时间',
used_at datetime(3) comment '使用时间',
used_for varchar(255) comment '用于记录购买的内容',
comment varchar(255)
) engine = InnoDB comment '用户券信息';
create unique index uidx_candy_user_coupon_id on candy_user_coupon (ucoupon_id);
create index idx_candy_ucoupon_uid_state on candy_user_coupon (uid, state);
-- >>------------------------------------------------------------------------------------
package com.liquidnet.service.adam.constant; package com.liquidnet.service.adam.constant;
public class AdamRedisConst { public class AdamRedisConst {
public static final String ADAM = "adam:"; public static final String PREFIX = "adam:";
public static final String VALID = ADAM.concat("valid:"); public static final String VALID_SMS_CODE_MOBILE = PREFIX.concat("valid:sms:code:mobile");
public static final String VALID_SMS_CODE_MOBILE = VALID.concat("sms:code:mobile"); public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:");
public static final String IDENTITY_THIRD_PARTY = PREFIX.concat("identity:third_party:");
public static final String IDENTITY = ADAM.concat("identity:"); public static final String INFO_TAGS_SEX = PREFIX.concat("info:tags:sex");
public static final String INFO_TAGS_MUSIC = PREFIX.concat("info:tags:music");
public static final String IDENTITY_MOBILE = IDENTITY.concat("mobile:"); public static final String INFO_USER = PREFIX.concat("info:user:");
public static final String IDENTITY_THIRD_PARTY = IDENTITY.concat("third_party:"); public static final String INFO_USER_MEMBER = PREFIX.concat("info:umember:");
public static final String INFO_REAL_NAME = PREFIX.concat("info:real_name:");
public static final String INFO_THIRD_PARTY = PREFIX.concat("info:third_party:");
public static final String INFO_ENTERS = PREFIX.concat("info:enters:");
public static final String INFO_ADDRESSES = PREFIX.concat("info:addresses:");
public static final String INFO = ADAM.concat("info:"); public static final String INFO_CERTIFICATION = PREFIX.concat("info:certification:");
public static final String INFO_TAGS_SEX = INFO.concat("tags:sex");
public static final String INFO_TAGS_MUSIC = INFO.concat("tags:music");
public static final String INFO_USER = INFO.concat("user:");
public static final String INFO_USER_MEMBER = INFO.concat("umember:");
public static final String INFO_REAL_NAME = INFO.concat("real_name:");
public static final String INFO_THIRD_PARTY = INFO.concat("third_party:");
public static final String INFO_ENTERS = INFO.concat("enters:");
public static final String INFO_ADDRESSES = INFO.concat("addresses:");
public static final String INFO_CERTIFICATION = INFO.concat("certification:");
/** /**
* 认证失败标记 * 认证失败标记
*/ */
public static final String INFO_CERTIFICATION_JUNK = INFO.concat("certification_junk:"); public static final String INFO_CERTIFICATION_JUNK = PREFIX.concat("info:certification_junk:");
public static final String INFO_MEMBER_SIMPLE = PREFIX.concat("info:member:simple");
public static final String INFO_MEMBER_CATEGORY = PREFIX.concat("info:member:category:");
public static final String INFO_MEMBER_PRICE = PREFIX.concat("info:member:price:");
/**
* 默认会员权益
*/
public static final String INFO_MEMBER_RIGHTS = PREFIX.concat("info:member:rights:");
/**
* 老会员权益
*/
public static final String INFO_MEMBER_RIGHTS_V = PREFIX.concat("info:member:rights:v:");
public static final String INFO_MEMBER_RIGHTS_COUPON = PREFIX.concat("info:member:rights_coupon:");
public static final String INFO_MEMBER_AGREEMENT = PREFIX.concat("info:member:agreement");
public static final String INFO_MEMBER_SIMPLE = INFO.concat("member:simple"); public static final String INFO_MEMBER_CODE = PREFIX.concat("info:member:code:");
public static final String INFO_MEMBER_CATEGORY = INFO.concat("member:category:"); public static final String INFO_MEMBER_ORDER = PREFIX.concat("info:morder:");
public static final String INFO_MEMBER_PRICE = INFO.concat("member:price:"); public static final String INFO_MEMBER_ORDER_BUY_CODE = PREFIX.concat("info:mordercode:");
public static final String INFO_MEMBER_RIGHTS = INFO.concat("member:rights:");
public static final String INFO_MEMBER_AGREEMENT = INFO.concat("member:agreement");
public static final String INFO_MEMBER_CODE = INFO.concat("member:code:");
public static final String INFO_MEMBER_ORDER = INFO.concat("morder:");
public static final String INFO_BUY_MEMBER_ORDER_CODE = INFO.concat("mordercode:");
// public static final String INFO_LIBRARY_NKNAME = INFO.concat("library:nkname"); // public static final String INFO_LIBRARY_NKNAME = PREFIX.concat("info:library:nkname");
public static final String BLACK_LIST = ADAM.concat("blacklist:"); public static final String BLK_LIST_MEMBER_UID = PREFIX.concat("blacklist:member:uid");
public static final String BLK_LIST_MEMBER_UID = BLACK_LIST.concat("member:uid");
public static final String SHOT_MEMBER_ORDER = ADAM.concat("morder:"); public static final String SHOT_MEMBER_ORDER = PREFIX.concat("morder:");
public static final String INCR = ADAM.concat("incr:"); public static final String INCR_MEMBER_NO = PREFIX.concat("incr:member_no");
public static final String INCR_MEMBER_NO = INCR.concat("member_no"); public static final String INCR_MEMBER_LIMITATION = PREFIX.concat("incr:member_limitation");
public static final String SWITCH = ADAM.concat("switch:"); public static final String SWITCH_BUY_MEMBER = PREFIX.concat("switch:buy:member");
public static final String SWITCH_BUY_MEMBER = SWITCH.concat("buy:member");
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
......
...@@ -23,10 +23,17 @@ public class AdamMemberOrderCodeParam implements Serializable { ...@@ -23,10 +23,17 @@ public class AdamMemberOrderCodeParam implements Serializable {
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误") @Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误")
@NotBlank(message = "生日不能为空") @NotBlank(message = "生日不能为空")
private String birthday; private String birthday;
@ApiModelProperty(position = 12, value = "支付终端[app,wap,js,applet]", example = "js") @ApiModelProperty(position = 13, required = true, value = "地区[100]", example = "北京 北京市 朝阳区")
@NotBlank(message = "地区不能为空")
private String area;
@ApiModelProperty(position = 14, required = true, value = "收获地址")
@Size(min = 1, max = 64, message = "收获地址长度限制1-64位字符")
@NotBlank(message = "收获地址不能为空")
private String addressId;
@ApiModelProperty(position = 15, value = "支付终端[app,wap,js,applet]", example = "js")
private String deviceFrom; private String deviceFrom;
@ApiModelProperty(position = 13, required = false, value = "姓名[未实名时必传]") @ApiModelProperty(position = 16, required = false, value = "姓名[未实名时必传]")
private String name; private String name;
@ApiModelProperty(position = 14, required = false, value = "身份证件号[未实名时必传]") @ApiModelProperty(position = 17, required = false, value = "身份证件号[未实名时必传]")
private String idCard; private String idCard;
} }
...@@ -33,6 +33,9 @@ public class AdamMemberOrderParam implements Serializable { ...@@ -33,6 +33,9 @@ public class AdamMemberOrderParam implements Serializable {
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误") @Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误")
@NotBlank(message = "生日不能为空") @NotBlank(message = "生日不能为空")
private String birthday; private String birthday;
@ApiModelProperty(position = 16, required = true, value = "地区[100]", example = "北京 北京市 朝阳区")
@NotBlank(message = "地区不能为空")
private String area;
@ApiModelProperty(position = 16, required = true, value = "收获地址") @ApiModelProperty(position = 16, required = true, value = "收获地址")
@Size(min = 1, max = 64, message = "收获地址长度限制1-64位字符") @Size(min = 1, max = 64, message = "收获地址长度限制1-64位字符")
@NotBlank(message = "收获地址不能为空") @NotBlank(message = "收获地址不能为空")
......
package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamMemberParam", description = "添加会员入参")
@Data
public class AdamMemberParam implements Serializable {
private static final long serialVersionUID = -7411934614249221021L;
@ApiModelProperty(position = 0, required = false, value = "会员ID[50]")
private String memberId;
@ApiModelProperty(position = 1, required = true, value = "会员名称[50]", example = "摩登天空会员卡")
private String name;
@ApiModelProperty(position = 2, required = true, value = "会员标题[50]", example = "摩登天空会员卡")
private String title;
@ApiModelProperty(position = 3, required = true, value = "会员副标题[50]", example = "摩登天空会员卡副标题")
private String subTitle;
@ApiModelProperty(position = 4, required = true, value = "icon图标[200]", example = "https://img.zhengzai.tv/files/2020/08/28/5f490418d30b4.png")
private String icon;
@ApiModelProperty(position = 5, required = true, value = "会员头像[200]", example = "https://img.zhengzai.tv/files/2020/08/31/5f4c75095e9bc.png")
private String avatar;
@ApiModelProperty(position = 6, required = true, value = "权益详情[200]", example = "加入摩登天空会员您可享受到.....")
private String interestsDetail;
@ApiModelProperty(position = 7, required = true, value = "注意事项[200]", example = "摩登天空会员需注意以下事项.....")
private String notes;
@ApiModelProperty(position = 8, required = true, value = "是否展示须知[[0-否,1-是]]", allowableValues = "0,1")
private Integer isNotice;
@ApiModelProperty(position = 9, required = true, value = "会员须知内容[200]", example = "会员须知细则1.xxxx\n2.xxxx")
private String noticeInfo;
@ApiModelProperty(position = 10, required = true, value = "会员须知标题[200]", example = "摩登天空会员须知")
private String noticeTitle;
@ApiModelProperty(position = 11, required = true, value = "是否需要答题[0-否,1-是]", allowableValues = "0,1")
private Integer needQuestion;
@ApiModelProperty(position = 12, required = true, value = "是否展示协议[0-否,1-是]", allowableValues = "0,1")
private Integer displayAgreement;
@ApiModelProperty(position = 13, required = true, value = "状态[1-NORMAL,2-INVALID]", example = "1")
private Integer state;
@ApiModelProperty(position = 14, required = true, value = "限购数量,0不限购[200]", example = "0")
private Integer limitation;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(value = "AdamMemberBuildParam", description = "编辑会员入参")
@Data
public class AdamMemberBuildParam implements Serializable {
private static final long serialVersionUID = -7411934614249221021L;
@ApiModelProperty(required = false, value = "会员ID[64]")
private String memberId;
@ApiModelProperty(required = true, value = "会员名称[80]", example = "摩登天空会员卡")
@NotBlank(message = "会员名称不能为空")
private String name;
@ApiModelProperty(required = true, value = "会员标题[100]", example = "摩登天空会员卡")
@NotBlank(message = "会员标题不能为空")
private String title;
@ApiModelProperty(required = true, value = "会员副标题[255]", example = "摩登天空会员卡副标题")
@NotBlank(message = "会员副标题不能为空")
private String subTitle;
@ApiModelProperty(required = true, value = "icon图标[255]", example = "https://img.zhengzai.tv/files/2020/08/28/5f490418d30b4.png")
@NotBlank(message = "icon图标不能为空")
private String icon;
@ApiModelProperty(required = true, value = "会员头像[255]", example = "https://img.zhengzai.tv/files/2020/08/31/5f4c75095e9bc.png")
@NotBlank(message = "会员头像不能为空")
private String avatar;
@ApiModelProperty(required = true, value = "弹窗文案[200]", example = "加入摩登天空会员您可享受到.....")
@NotBlank(message = "弹窗文案不能为空")
private String interestsDetail;
@ApiModelProperty(required = true, value = "注意事项[200]", example = "摩登天空会员需注意以下事项.....")
@NotBlank(message = "注意事项不能为空")
private String notes;
@ApiModelProperty(required = true, value = "是否开售:1-开售|2-停售")
@NotNull(message = "是否开售不能为空")
private Integer onsale;
@ApiModelProperty(required = false, value = "限购数量,0不限购[200]", example = "0")
private Integer limitation;
@ApiModelProperty(required = false, value = "限购开始时间[yyyy-MM-dd]")
private String limitbAt;
@ApiModelProperty(required = false, value = "限购结束时间[yyyy-MM-dd]")
private String limiteAt;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeListParam", description = "会员码列表入参")
@Data
public class AdamMemberCodeGenParam implements Serializable {
private static final long serialVersionUID = 7212595876649709617L;
@NotBlank(message = "会员类型ID不能为空")
@ApiModelProperty(required = true, value = "会员类型ID[64]", example = "1")
private String memberId;
@NotBlank(message = "会员价格ID不能为空")
@ApiModelProperty(required = true, value = "会员价格ID[64]", example = "1")
private String memberPriceId;
@NotNull(message = "有效期不能为空")
@ApiModelProperty(required = true, value = "有效期", example = "30")
private Integer validity;
@NotNull(message = "生成数量不能为空")
@Min(1)
@Max(100)
@ApiModelProperty(required = true, value = "生成数量[1-100]", example = "1")
private Integer genNum;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberCodeListParam", description = "会员码列表入参")
@Data
public class AdamMemberCodeListParam implements Serializable {
private static final long serialVersionUID = -8454342033562304457L;
@ApiModelProperty(required = false, value = "会员类型ID[64]")
private String memberId;
@ApiModelProperty(required = false, value = "状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]")
private Integer state;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "AdamMemberOrderRefundParam", description = "会员订单退款入参")
@Data
public class AdamMemberOrderRefundParam implements Serializable {
private static final long serialVersionUID = 3811495229630522458L;
@NotBlank(message = "订单号不能为空")
@ApiModelProperty(required = true, value = "订单号")
private String orderNo;
@NotNull(message = "退款金额不能为空")
@DecimalMin(value = "0.01", message = "退款金额不能小于0.01")
@ApiModelProperty(required = true, value = "退款金额")
private BigDecimal refundAmt;
@NotNull(message = "请选择是否能继续购买会员")
@ApiModelProperty(required = true, value = "是否能继续购买会员[1-是|2-否]")
private Integer renewable;
@NotBlank(message = "请输入退款原因")
@ApiModelProperty(required = true, value = "退款原因")
private String reason;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
@ApiModel(value = "AdamMemberPriceBuildParam", description = "编辑价格入参")
@Data
public class AdamMemberPriceBuildParam implements Serializable {
private static final long serialVersionUID = -7331274160877946420L;
@ApiModelProperty(required = true, value = "会员类型ID")
@NotBlank(message = "会员类型ID不能为空")
private String memberId;
@ApiModelProperty(required = false, value = "会员价格ID")
private String memberPriceId;
@ApiModelProperty(required = true, value = "原价")
@DecimalMin("0.01")
private BigDecimal price;
@ApiModelProperty(required = true, value = "折扣价")
@DecimalMin("0.01")
private BigDecimal priceFixed;
@ApiModelProperty(required = true, value = "特价:首次、首年优惠价")
@DecimalMin("0.01")
private BigDecimal priceSpecial;
@ApiModelProperty(required = true, value = "有效天数")
@Min(1)
private Integer days;
@ApiModelProperty(required = false, value = "双倍积分[1-关闭,2-开启]")
private BigDecimal integralRate;
}
package com.liquidnet.service.adam.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@ApiModel(value = "AdamMemberRightsBuildParam", description = "编辑权益入参")
@Data
public class AdamMemberRightsBuildParam implements Serializable {
private static final long serialVersionUID = -7331274160877946420L;
@ApiModelProperty(required = true, value = "会员卡ID")
@NotBlank(message = "会员类型ID不能为空")
private String memberId;
@ApiModelProperty(required = false, value = "权益ID[64]")
private String mrightsId;
@ApiModelProperty(required = true, value = "权益状态[0-INIT|1-NORMAL|2-INVALID]")
@NotNull(message = "会员权益状态不能为空")
private Integer state;
@ApiModelProperty(required = true, value = "权益标题[50]")
private String title;
@ApiModelProperty(required = true, value = "权益副标题[200]")
private String subTitle;
@ApiModelProperty(required = false, value = "标注[50]")
private String label;
@ApiModelProperty(required = true, value = "权益封面图片[255]")
private String cover;
@ApiModelProperty(required = false, value = "详情内容")
private String detail;
@ApiModelProperty(required = true, value = "展示顺序")
private Integer seqNo;
}
...@@ -14,12 +14,12 @@ public class AdamLoginInfoVo implements Serializable, Cloneable { ...@@ -14,12 +14,12 @@ public class AdamLoginInfoVo implements Serializable, Cloneable {
private String token; private String token;
@ApiModelProperty(position = 12, value = "用户信息") @ApiModelProperty(position = 12, value = "用户信息")
private AdamUserInfoVo userInfo; private AdamUserInfoVo userInfo;
@ApiModelProperty(position = 13, value = "实名信息") // @ApiModelProperty(position = 13, value = "实名信息")
private AdamRealInfoVo realNameInfo; // private AdamRealInfoVo realNameInfo;
@ApiModelProperty(position = 14, value = "用户第三方账号信息") // @ApiModelProperty(position = 14, value = "用户第三方账号信息")
private List<AdamThirdPartInfoVo> thirdPartInfo; // private List<AdamThirdPartInfoVo> thirdPartInfo;
@ApiModelProperty(position = 15, value = "会员信息") // @ApiModelProperty(position = 15, value = "会员信息")
private AdamMemberSimpleVo memberVo; // private AdamMemberSimpleVo memberVo;
@ApiModelProperty(position = 16, value = "用户会员信息") @ApiModelProperty(position = 16, value = "用户会员信息")
private AdamUserMemberVo userMemberVo; private AdamUserMemberVo userMemberVo;
...@@ -44,29 +44,29 @@ public class AdamLoginInfoVo implements Serializable, Cloneable { ...@@ -44,29 +44,29 @@ public class AdamLoginInfoVo implements Serializable, Cloneable {
this.userInfo = userInfo; this.userInfo = userInfo;
} }
public AdamRealInfoVo getRealNameInfo() { // public AdamRealInfoVo getRealNameInfo() {
return realNameInfo; // return realNameInfo;
} // }
//
public void setRealNameInfo(AdamRealInfoVo realNameInfo) { // public void setRealNameInfo(AdamRealInfoVo realNameInfo) {
this.realNameInfo = realNameInfo; // this.realNameInfo = realNameInfo;
} // }
//
public List<AdamThirdPartInfoVo> getThirdPartInfo() { // public List<AdamThirdPartInfoVo> getThirdPartInfo() {
return thirdPartInfo; // return thirdPartInfo;
} // }
//
public void setThirdPartInfo(List<AdamThirdPartInfoVo> thirdPartInfo) { // public void setThirdPartInfo(List<AdamThirdPartInfoVo> thirdPartInfo) {
this.thirdPartInfo = thirdPartInfo; // this.thirdPartInfo = thirdPartInfo;
} // }
//
public AdamMemberSimpleVo getMemberVo() { // public AdamMemberSimpleVo getMemberVo() {
return memberVo; // return memberVo;
} // }
//
public void setMemberVo(AdamMemberSimpleVo memberVo) { // public void setMemberVo(AdamMemberSimpleVo memberVo) {
this.memberVo = memberVo; // this.memberVo = memberVo;
} // }
public AdamUserMemberVo getUserMemberVo() { public AdamUserMemberVo getUserMemberVo() {
return userMemberVo; return userMemberVo;
......
...@@ -24,26 +24,37 @@ public class AdamMemberCodeVo implements Serializable, Cloneable { ...@@ -24,26 +24,37 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
private Integer type; private Integer type;
@ApiModelProperty(position = 4, value = "会员编号") @ApiModelProperty(position = 4, value = "会员编号")
private String memberNo; private String memberNo;
@ApiModelProperty(position = 5, value = "状态:0-未使用,1-已使用,2-不可用") @ApiModelProperty(position = 5, value = "状态[0-可用|1-已用|2-无效|3-过期|4-失效|5-退回]")
private Integer state; private Integer state;
@ApiModelProperty(position = 6, value = "购买会员码的订单编号") @ApiModelProperty(position = 6, value = "有效期(单位天)")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private Integer validity;
@ApiModelProperty(position = 7, value = "生效时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime effectAt;
@ApiModelProperty(position = 8, value = "失效时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime expireAt;
@ApiModelProperty(position = 9, value = "操作人")
private String operator;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
@ApiModelProperty(position = 11, value = "购买会员码的订单编号")
private String buyOrderNo; private String buyOrderNo;
@ApiModelProperty(position = 7, value = "购买会员码的用户id") @ApiModelProperty(position = 12, value = "购买会员码的用户id")
private String buyUid; private String buyUid;
@ApiModelProperty(position = 8, value = "购买时间") @ApiModelProperty(position = 13, value = "购买时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime buyAt; private LocalDateTime buyAt;
@ApiModelProperty(position = 9, value = "使用会员码的订单编号") @ApiModelProperty(position = 14, value = "使用会员码的订单编号")
private String useOrderNo; private String useOrderNo;
@ApiModelProperty(position = 10, value = "使用会员码的用户id") @ApiModelProperty(position = 15, value = "使用会员码的用户id")
private String useUid; private String useUid;
@ApiModelProperty(position = 11, value = "使用时间") @ApiModelProperty(position = 16, value = "使用时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime useAt; private LocalDateTime useAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt;
private static final AdamMemberCodeVo obj = new AdamMemberCodeVo(); private static final AdamMemberCodeVo obj = new AdamMemberCodeVo();
...@@ -63,14 +74,17 @@ public class AdamMemberCodeVo implements Serializable, Cloneable { ...@@ -63,14 +74,17 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
this.setType(source.getType()); this.setType(source.getType());
this.setMemberNo(source.getMemberNo()); this.setMemberNo(source.getMemberNo());
this.setState(source.getState()); this.setState(source.getState());
this.setValidity(source.getValidity());
this.setEffectAt(source.getEffectAt());
this.setExpireAt(source.getExpireAt());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
this.setBuyOrderNo(source.getBuyOrderNo()); this.setBuyOrderNo(source.getBuyOrderNo());
this.setBuyUid(source.getBuyUid()); this.setBuyUid(source.getBuyUid());
this.setBuyAt(source.getBuyAt()); this.setBuyAt(source.getBuyAt());
this.setUseOrderNo(source.getUseOrderNo()); this.setUseOrderNo(source.getUseOrderNo());
this.setUseUid(source.getUseUid()); this.setUseUid(source.getUseUid());
this.setUseAt(source.getUseAt()); this.setUseAt(source.getUseAt());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
return this; return this;
} }
} }
...@@ -20,6 +20,10 @@ public class AdamMemberOrderPreviewVo implements Serializable { ...@@ -20,6 +20,10 @@ public class AdamMemberOrderPreviewVo implements Serializable {
private AdamRealInfoVo realInfoVo; private AdamRealInfoVo realInfoVo;
@ApiModelProperty(position = 14, value = "生日") @ApiModelProperty(position = 14, value = "生日")
private String birthday; private String birthday;
@ApiModelProperty(position = 15, value = "常住地/区域[100]", example = "北京 北京市 朝阳区")
private String area;
@ApiModelProperty(position = 20, value = "标记[0-普通用户|2-过期会员|10-老会员|11-新会员]")
private Integer stageMarker;
private static final AdamMemberOrderPreviewVo obj = new AdamMemberOrderPreviewVo(); private static final AdamMemberOrderPreviewVo obj = new AdamMemberOrderPreviewVo();
......
...@@ -36,33 +36,37 @@ public class AdamMemberOrderVo implements Serializable, Cloneable { ...@@ -36,33 +36,37 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
private String memberNo; private String memberNo;
@ApiModelProperty(position = 9, value = "会员生日[yyyy-MM-dd]") @ApiModelProperty(position = 9, value = "会员生日[yyyy-MM-dd]")
private String birthday; private String birthday;
@ApiModelProperty(position = 10, value = "支付终端", allowableValues = "app,wap,js,applet") @ApiModelProperty(position = 10, value = "地区")
private String area;
@ApiModelProperty(position = 11, value = "支付终端", allowableValues = "app,wap,js,applet")
private String deviceFrom; private String deviceFrom;
@ApiModelProperty(position = 11, value = "支付方式", allowableValues = "alipay,wepay") @ApiModelProperty(position = 12, value = "支付方式", allowableValues = "alipay,wepay")
private String payType; private String payType;
@ApiModelProperty(position = 12, value = "支付单号") @ApiModelProperty(position = 13, value = "支付中心支付CODE")
private String payNo; private String payNo;
@ApiModelProperty(position = 13, value = "支付时间") @ApiModelProperty(position = 14, value = "支付中心三方支付ID")
private String paymentId;
@ApiModelProperty(position = 15, value = "支付时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime paymentAt; private LocalDateTime paymentAt;
@ApiModelProperty(position = 14, value = "创建时间") @ApiModelProperty(position = 16, value = "创建时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt; private LocalDateTime createdAt;
@ApiModelProperty(position = 15, value = "创建时间") @ApiModelProperty(position = 17, value = "创建时间")
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
@ApiModelProperty(position = 16, value = "价格") @ApiModelProperty(position = 18, value = "价格")
private BigDecimal price; private BigDecimal price;
@ApiModelProperty(position = 17, value = "实付价格") @ApiModelProperty(position = 19, value = "实付价格")
private BigDecimal pricePaid; private BigDecimal pricePaid;
@ApiModelProperty(position = 18, value = "客户端IP") @ApiModelProperty(position = 20, value = "客户端IP")
private String clientIp; private String clientIp;
@ApiModelProperty(position = 19, value = "客户端来源") @ApiModelProperty(position = 21, value = "客户端来源")
private String source; private String source;
@ApiModelProperty(position = 20, value = "客户端版本") @ApiModelProperty(position = 22, value = "客户端版本")
private String version; private String version;
@ApiModelProperty(position = 21, value = "会员订单扩展信息") @ApiModelProperty(position = 25, value = "会员订单扩展信息")
private AdamMemberOrderExtVo extendVo; private AdamMemberOrderExtVo extendVo;
@ApiModelProperty(position = 30, value = "会员须知") @ApiModelProperty(position = 30, value = "会员须知")
......
...@@ -20,22 +20,24 @@ public class AdamMemberPriceVo implements Serializable { ...@@ -20,22 +20,24 @@ public class AdamMemberPriceVo implements Serializable {
private String memberPriceId; private String memberPriceId;
@ApiModelProperty(position = 2, value = "会员类型ID") @ApiModelProperty(position = 2, value = "会员类型ID")
private String memberId; private String memberId;
@ApiModelProperty(position = 3, value = "价格状态[0-不可用,1-上线中,2-已下线]") // @ApiModelProperty(position = 3, value = "价格状态[0-不可用,1-上线中,2-已下线]")
private Integer state; // private Integer state;
@ApiModelProperty(position = 4, value = "价格包名称") @ApiModelProperty(position = 4, value = "价格包名称")
private String name; private String name;
@ApiModelProperty(position = 5, value = "原价") @ApiModelProperty(position = 5, value = "原价")
private BigDecimal price; private BigDecimal price;
@ApiModelProperty(position = 6, value = "折扣价") @ApiModelProperty(position = 6, value = "折扣价:购买价格")
private BigDecimal priceFixed; private BigDecimal priceFixed;
@ApiModelProperty(position = 7, value = "有效天数") @ApiModelProperty(position = 7, value = "特价:首次、首年优惠价")
private BigDecimal priceSpecial;
@ApiModelProperty(position = 8, value = "有效天数")
private Integer days; private Integer days;
@ApiModelProperty(position = 8, value = "会员包须知") // @ApiModelProperty(position = 8, value = "会员包须知")
private String detail; // private String detail;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) // @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime createdAt; // private LocalDateTime createdAt;
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) // @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt; // private LocalDateTime updatedAt;
private static final AdamMemberPriceVo obj = new AdamMemberPriceVo(); private static final AdamMemberPriceVo obj = new AdamMemberPriceVo();
...@@ -51,14 +53,15 @@ public class AdamMemberPriceVo implements Serializable { ...@@ -51,14 +53,15 @@ public class AdamMemberPriceVo implements Serializable {
if (null == source) return this; if (null == source) return this;
this.setMemberPriceId(source.getMemberPriceId()); this.setMemberPriceId(source.getMemberPriceId());
this.setMemberId(source.getMemberId()); this.setMemberId(source.getMemberId());
this.setState(source.getState()); // this.setState(source.getState());
this.setName(source.getName()); this.setName(source.getName());
this.setPrice(source.getPrice()); this.setPrice(source.getPrice());
this.setPriceFixed(source.getPriceFixed()); this.setPriceFixed(source.getPriceFixed());
this.setPriceSpecial(source.getPriceSpecial());
this.setDays(source.getDays()); this.setDays(source.getDays());
this.setDetail(source.getDetail()); // this.setDetail(source.getDetail());
this.setCreatedAt(source.getCreatedAt()); // this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt()); // this.setUpdatedAt(source.getUpdatedAt());
return this; return this;
} }
} }
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberRightsCouponRuleVo", description = "会员权益券适用规则")
@Data
public class AdamMemberRightsCouponRuleVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4282440130223655255L;
@ApiModelProperty(value = "适用范围[100-全场|90-演出|91-场次|92-票|80-商品|81-款式]", example = "90")
private Integer useScope;
@ApiModelProperty(value = "适用名称", example = "北京草莓")
private String busiName;
@ApiModelProperty(value = "适用ID", example = "1")
private String busiId;
private static final AdamMemberRightsCouponRuleVo obj = new AdamMemberRightsCouponRuleVo();
public static AdamMemberRightsCouponRuleVo getNew() {
try {
return (AdamMemberRightsCouponRuleVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberRightsCouponRuleVo();
}
}
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "AdamMemberRightsCouponVo", description = "会员专享特权券")
@Data
public class AdamMemberRightsCouponVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 4099907681723174194L;
@ApiModelProperty(position = 1, value = "权益ID")
private String mrightsId;
@ApiModelProperty(position = 2, value = "券ID")
private String couponId;
@ApiModelProperty(position = 3, value = "券类别[0-全场|1-演出|2-商品|3-优先购]")
private Integer busiType;
@ApiModelProperty(position = 4, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]")
private Integer couType;
@ApiModelProperty(position = 5, value = "券标题")
private String title;
@ApiModelProperty(position = 6, value = "券标注")
private String label;
@ApiModelProperty(position = 7, value = "注意/须知")
private String notice;
@ApiModelProperty(position = 8, value = "券面值")
private BigDecimal valFace;
@ApiModelProperty(position = 9, value = "满减~满")
private BigDecimal valOver;
@ApiModelProperty(position = 10, value = "满减~减")
private BigDecimal valMinus;
/* com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponRuleVo */
private List<AdamMemberRightsCouponRuleVo> useRules;
private static final AdamMemberRightsCouponVo obj = new AdamMemberRightsCouponVo();
public static AdamMemberRightsCouponVo getNew() {
try {
return (AdamMemberRightsCouponVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberRightsCouponVo();
}
}
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
@ApiModel(value = "AdamMemberRightsVo", description = "会员权益详情")
public class AdamMemberRightsDetailVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -2407106925001008460L;
@ApiModelProperty(position = 1, value = "权益信息")
private AdamMemberRightsVo rightsVo;
@ApiModelProperty(position = 11, value = "专享券列表")
private List<AdamMemberRightsCouponVo> couponVoList;
public AdamMemberRightsVo getRightsVo() {
return rightsVo;
}
public AdamMemberRightsDetailVo setRightsVo(AdamMemberRightsVo rightsVo) {
this.rightsVo = rightsVo;
return this;
}
public List<AdamMemberRightsCouponVo> getCouponVoList() {
return couponVoList;
}
public AdamMemberRightsDetailVo setCouponVoList(List<AdamMemberRightsCouponVo> couponVoList) {
this.couponVoList = couponVoList;
return this;
}
private static final AdamMemberRightsDetailVo obj = new AdamMemberRightsDetailVo();
public static AdamMemberRightsDetailVo getNew() {
try {
return (AdamMemberRightsDetailVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberRightsDetailVo();
}
}
}
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.service.adam.entity.AdamMemberRights;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.util.Arrays;
import java.util.List;
@ApiModel(value = "AdamMemberRightsVo", description = "会员") @ApiModel(value = "AdamMemberRightsVo", description = "会员")
@Data @Data
public class AdamMemberRightsVo implements java.io.Serializable, Cloneable { public class AdamMemberRightsVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -2407106925001008460L; private static final long serialVersionUID = -2407106925001008460L;
@ApiModelProperty(position = 0, value = "权益封面[255]") @ApiModelProperty(position = 1, value = "权益ID")
private String mrightsId;
@ApiModelProperty(position = 2, value = "排列序号")
private Integer seqNo;
@ApiModelProperty(position = 3, value = "权益标题")
private String title;
@ApiModelProperty(position = 4, value = "副标题")
private String subTitle;
@ApiModelProperty(position = 5, value = "标注")
private String label;
@ApiModelProperty(position = 6, value = "图片标识")
private String cover; private String cover;
@ApiModelProperty(position = 1, value = "权益名称[10]") @ApiModelProperty(position = 7, value = "详情内容")
private String name; private String detail;
@ApiModelProperty(position = 2, value = "展示顺序[2]")
private Integer sort;
private static final AdamMemberRightsVo obj = new AdamMemberRightsVo(); public AdamMemberRightsVo setSeqNo(Integer seqNo) {
this.seqNo = seqNo;
return this;
}
public static AdamMemberRightsVo getNew() { public AdamMemberRightsVo setTitle(String title) {
try { this.title = title;
return (AdamMemberRightsVo) obj.clone(); return this;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamMemberRightsVo();
} }
public AdamMemberRightsVo setCover(String cover) { public AdamMemberRightsVo setCover(String cover) {
...@@ -34,13 +39,25 @@ public class AdamMemberRightsVo implements java.io.Serializable, Cloneable { ...@@ -34,13 +39,25 @@ public class AdamMemberRightsVo implements java.io.Serializable, Cloneable {
return this; return this;
} }
public AdamMemberRightsVo setName(String name) { private static final AdamMemberRightsVo obj = new AdamMemberRightsVo();
this.name = name;
return this; public static AdamMemberRightsVo getNew() {
try {
return (AdamMemberRightsVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberRightsVo();
}
} }
public AdamMemberRightsVo setSort(Integer sort) { public AdamMemberRightsVo copy(AdamMemberRights source) {
this.sort = sort; if (null == source) return this;
this.setMrightsId(source.getMrightsId());
this.setSeqNo(source.getSeqNo());
this.setTitle(source.getTitle());
this.setSubTitle(source.getSubTitle());
this.setLabel(source.getLabel());
this.setCover(source.getCover());
this.setDetail(source.getDetail());
return this; return this;
} }
} }
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamMember; import com.liquidnet.service.adam.entity.AdamMember;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@ApiModel(value = "AdamMemberVo", description = "会员") @ApiModel(value = "AdamMemberVo", description = "会员")
...@@ -41,10 +45,20 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -41,10 +45,20 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
private Integer needQuestion; private Integer needQuestion;
@ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0") @ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0")
private Integer displayAgreement; private Integer displayAgreement;
@ApiModelProperty(position = 13, value = "状态[1-NORMAL,2-INVALID]") @ApiModelProperty(position = 13, value = "状态[1-NORMAL,2-INVALID]", example = "1")
private Integer state; private Integer state;
@ApiModelProperty(position = 14, value = "限购数量,0不限购[200]", example = "0") @ApiModelProperty(position = 14, value = "积分倍率", example = "2.00")
private BigDecimal integralRate;
@ApiModelProperty(position = 15, value = "是否开售:1-开售|2-停售", example = "1")
private Integer onsale;
@ApiModelProperty(position = 16, value = "限购数量[0-不限购]", example = "0")
private Integer limitation; private Integer limitation;
@ApiModelProperty(position = 17, value = "限购开始时间", example = "2021-08-02 00:00:00")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime limitbAt;
@ApiModelProperty(position = 18, value = "限购结束时间", example = "2021-09-02 00:00:00")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = DateUtil.DATE_FULL_STR)
private LocalDateTime limiteAt;
@ApiModelProperty(position = 20, value = "会员卡价格信息") @ApiModelProperty(position = 20, value = "会员卡价格信息")
private List<AdamMemberPriceVo> priceVoList; private List<AdamMemberPriceVo> priceVoList;
...@@ -52,8 +66,37 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -52,8 +66,37 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
private List<AdamMemberRightsVo> rightsVoList; private List<AdamMemberRightsVo> rightsVoList;
@ApiModelProperty(position = 22, value = "用户会员信息") @ApiModelProperty(position = 22, value = "用户会员信息")
private AdamUserMemberVo userMemberVo; private AdamUserMemberVo userMemberVo;
@ApiModelProperty(position = 23, value = "购买会员限制[0-名额已满|1-允许购买]") @ApiModelProperty(position = 23, value = "购买会员限购[0-名额已满|1-允许购买|2-限购未开始]")
private Integer buySwitch; private Integer limitMarker;
@ApiModelProperty(position = 24, value = "标记[0-普通用户|2-过期会员|10-老会员|11-新会员]")
private Integer stageMarker;
public Integer getOnsale() {
return null == onsale ? 1 : onsale;
}
/**
* 购买会员限购[0-名额已满|1-允许购买|2-限购未开始]
*
* @param maxMemberLimitation 当前系统限购已购数量
* @return [0-名额已满|1-允许购买]
*/
public Integer calculateLimitMarker(int maxMemberLimitation) {
if (null != this.limitation && this.limitation > 0) {// 限购
if (maxMemberLimitation >= limitation) {// 名额已满
this.setLimitMarker(0);
} else if (null != this.limitbAt && null != this.limiteAt) {// 限购时间判断
LocalDateTime now = LocalDateTime.now();
boolean isBetweenLimitTime = now.isAfter(this.limitbAt) && now.isBefore(this.limiteAt);
this.setLimitMarker(isBetweenLimitTime ? 1 : 2);
} else {
this.setLimitMarker(1);
}
} else {// 不限购
this.setLimitMarker(1);
}
return this.limitMarker;
}
private static final AdamMemberVo obj = new AdamMemberVo(); private static final AdamMemberVo obj = new AdamMemberVo();
...@@ -84,7 +127,11 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -84,7 +127,11 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
this.setNeedQuestion(source.getNeedQuestion()); this.setNeedQuestion(source.getNeedQuestion());
this.setDisplayAgreement(source.getDisplayAgreement()); this.setDisplayAgreement(source.getDisplayAgreement());
this.setState(source.getState()); this.setState(source.getState());
this.setIntegralRate(source.getIntegralRate());
this.setOnsale(source.getOnsale());
this.setLimitation(source.getLimitation()); this.setLimitation(source.getLimitation());
this.setLimitbAt(source.getLimitbAt());
this.setLimiteAt(source.getLimiteAt());
return this; return this;
} }
} }
...@@ -10,6 +10,7 @@ import lombok.Data; ...@@ -10,6 +10,7 @@ import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
@ApiModel(value = "AdamUserMemberVo", description = "会员用户信息") @ApiModel(value = "AdamUserMemberVo", description = "会员用户信息")
@Data @Data
...@@ -33,6 +34,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable { ...@@ -33,6 +34,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
private static final LocalDateTime oldMemberSpotTime = LocalDateTime.parse("2022-09-02 00:00:00", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
private static final AdamUserMemberVo obj = new AdamUserMemberVo(); private static final AdamUserMemberVo obj = new AdamUserMemberVo();
public static AdamUserMemberVo getNew() { public static AdamUserMemberVo getNew() {
...@@ -65,4 +67,15 @@ public class AdamUserMemberVo implements Serializable, Cloneable { ...@@ -65,4 +67,15 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
LocalDateTime expiryAt = this.getExpiryAt(); LocalDateTime expiryAt = this.getExpiryAt();
return this.getState() == 1 && null != expiryAt && expiryAt.isAfter(LocalDateTime.now()); return this.getState() == 1 && null != expiryAt && expiryAt.isAfter(LocalDateTime.now());
} }
/**
* 是否为老会员
*
* @return true-是
*/
@JsonIgnore
public boolean isOldMember() {
LocalDateTime expiryAt = this.getExpiryAt();
return expiryAt.isBefore(oldMemberSpotTime);
}
} }
...@@ -16,22 +16,26 @@ public interface IAdamMemberOrderService { ...@@ -16,22 +16,26 @@ public interface IAdamMemberOrderService {
* 购买会员或会员码 * 购买会员或会员码
* *
* @param uid * @param uid
* @param param * @param param AdamMemberOrderParam
* @return ResponseDto<AdamMemberOrderResult>
*/ */
ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String uid, AdamMemberOrderParam param); ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String uid, AdamMemberOrderParam param);
/** /**
* 支付回调 * 支付回调
*
* @return * @return
*/ */
ResponseDto<Object> paymentNotifyCallBack(AdamMemberOrderCallbackParam parameter); ResponseDto<Object> paymentNotifyCallBack(AdamMemberOrderCallbackParam parameter);
/** /**
* 使用会员码 * 使用会员码
* @param param *
* @return * @param uid
* @param param AdamMemberOrderCodeParam
* @return ResponseDto<AdamMemberOrderResult>
*/ */
ResponseDto<AdamMemberOrderResult> exchangeMemberCode(AdamMemberOrderCodeParam param); ResponseDto<AdamMemberOrderResult> exchangeMemberCode(String uid, AdamMemberOrderCodeParam param);
/** /**
* 查取会员订单列表 * 查取会员订单列表
......
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>liquidnet-bus-api</artifactId>
<groupId>com.liquidnet</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>liquidnet-service-candy-api</artifactId>
<dependencies>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-service-candy-do</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
\ No newline at end of file
package com.liquidnet.service.candy.constant;
public class CandyRedisConst {
public static final String PREFIX = "candy:";
/**
* <key>
* candy:basic:coupon_info:${coupon_id}
* </key>
* <value>
* com.liquidnet.service.candy.dto.CandyCouponInfoDto
* </value>
*/
public static final String BASIC_COUPON_INFO = PREFIX.concat("basic:coupon_info:");
/**
* <key>
* candy:basic:coupon_code:${ccode}
* </key>
* <value>
* com.liquidnet.service.candy.dto.CandyCouponCodeDto
* </value>
*/
public static final String BASIC_COUPON_CODE = PREFIX.concat("basic:coupon_code:");
/**
* <key>
* candy:basic:user_coupon:${uid}
* </key>
* <value>
* List<com.liquidnet.service.candy.dto.CandyUserCouponBasicDto>
* </value>
*/
public static final String BASIC_USER_COUPON = PREFIX.concat("basic:user_coupon:");
/**
* <key>
* candy:basic:common_coupon
* </key>
* <value>
* List<com.liquidnet.service.candy.dto.CandyCommonCouponBasicDto>
* </value>
*/
public static final String BASIC_COMMON_COUPON = PREFIX.concat("basic:common_coupon");
}
package com.liquidnet.service.candy.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Pattern;
@ApiModel(value = "CandyCouponRuleBuildParam", description = "添加券规则入参")
public class CandyCouponRuleBuildParam {
@Pattern(regexp = "\\b(100|90|91|92|80|81)\\b", message = "适用范围无效")
@ApiModelProperty(required = true, value = "适用范围[100-全场|90-演出|91-场次|92-票|80-商品|81-款式]", allowableValues = "100,90,91,92,80,81")
private Integer useScope;
@ApiModelProperty(required = true, value = "适用名称", allowableValues = "适用名称")
private String busiName;
@ApiModelProperty(required = false, value = "适用ID", allowableValues = "适用ID")
private String busiId;
public Integer getUseScope() {
return useScope;
}
public CandyCouponRuleBuildParam setUseScope(Integer useScope) {
this.useScope = useScope;
return this;
}
public String getBusiName() {
return busiName;
}
public CandyCouponRuleBuildParam setBusiName(String busiName) {
this.busiName = busiName;
return this;
}
public String getBusiId() {
return busiId;
}
public CandyCouponRuleBuildParam setBusiId(String busiId) {
this.busiId = busiId;
return this;
}
private static final CandyCouponRuleBuildParam obj = new CandyCouponRuleBuildParam();
public static CandyCouponRuleBuildParam getNew() {
try {
return (CandyCouponRuleBuildParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new CandyCouponRuleBuildParam();
}
}
}
package com.liquidnet.service.candy.dto.admin;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "CandyMemberCouponBuildParam", description = "新建券入参")
@Data
public class CandyMemberCouponBuildParam {
@ApiModelProperty(required = true, value = "会员类型ID[64]", example = "1")
@NotBlank(message = "会员类型ID不能为空")
private String memberId;
@ApiModelProperty(required = true, value = "权益ID[64]")
@NotBlank(message = "会员权益ID不能为空")
private String mrightsId;
@ApiModelProperty(required = false, value = "券ID", example = "券ID")
private String couponId;
//private Integer state;
@NotBlank(message = "券标题不能为空")
@ApiModelProperty(required = true, value = "券标题", example = "券标题")
private String title;
@NotBlank(message = "券标注不能为空")
@ApiModelProperty(required = true, value = "标注", example = "标注")
private String label;
// @NotBlank(message = "券描述不能为空")
// @ApiModelProperty(required = true, value = "描述:注意/须知", example = "注意/须知")
// private String notice;
//private Integer exclusive;
@NotNull(message = "券类别不能为空")
@ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3")
private Integer busiType;
@NotNull(message = "券类型不能为空")
// @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]", allowableValues = "1,2,3,4,101")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|101-优先券]", allowableValues = "1,2,101")
private Integer couType;
// @NotNull(message = "券领取方式不能为空")
// @ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户]", allowableValues = "0,1")
// private Integer bindType;
// @ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8")
// private BigDecimal discount;
@ApiModelProperty(required = false, value = "面值", example = "0.01")
private BigDecimal valFace;
@ApiModelProperty(required = false, value = "满减~满", example = "1.00")
private BigDecimal valOver;
@ApiModelProperty(required = false, value = "满减~减", example = "0.01")
private BigDecimal valMinus;
@NotNull(message = "券叠加限制不能为空")
@ApiModelProperty(required = false, value = "叠加限制[0-限制|1-叠加]", allowableValues = "0,1")
private Integer overlay;
//private Integer overlayLevel;
// @NotNull(message = "券有效期不能为空")
// @ApiModelProperty(required = true, value = "有效期(单位天)", example = "30")
// private Integer validity;
// @ApiModelProperty(required = false, value = "兑换有效期(单位天)", example = "30")
// private Integer redeemValidity;
//private LocalDateTime redeemStart;
//private LocalDateTime redeemStop;
//private LocalDateTime effectAt;
//private LocalDateTime expireAt;
//private String operator;
//private Date createdAt;
//private Date updatedAt;
//private String comment;
@ApiModelProperty(required = true, value = "适用范围列表", dataType = "List", example = "[{\"useScope\": 100,\"busiName\": \"适用名称1\",\"busiId\": \"IDIDIDIDIDIDID1\"},{\"useScope\": 100,\"busiName\": \"适用名称2\",\"busiId\": \"IDIDIDIDIDIDID2\"}]")
private List<CandyCouponRuleBuildParam> couponRuleList;
//private String mcouponId;
//private String couponId;
//private Integer state;
@NotNull(message = "券发放量不能为空")
@Max(value = 10, message = "发放量不满足1~10范围")
@Min(value = 1, message = "发放量不满足1~10范围")
@ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt;
// @NotNull(message = "券发放类型不能为空")
// @ApiModelProperty(required = true, value = "发放类型[1-会员|2-手机号|3-UID|10-全体用户]", allowableValues = "1,2,10")
// private Integer eventType;
// @ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "17701223310,17701223310")
// private String eventLimit;
// @NotNull(message = "券发放时间不能为空")
// @ApiModelProperty(required = true, value = "发放时间[yyyy-MM-dd HH:mm:ss](立即-当前时间|预约-点选时间)", example = "2021-08-26 00:00:00")
// private String eventAt;
//private String operator;
//private LocalDateTime createdAt;
//private LocalDateTime updatedAt;
//private String comment;
}
package com.liquidnet.service.candy.dto.admin;
import com.liquidnet.commons.lang.constant.LnsRegex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.util.List;
@ApiModel(value = "CandyMgtCouponBuildParam", description = "新建券入参")
@Data
public class CandyMgtCouponBuildParam {
//private String couponId;
//private Integer state;
@NotBlank(message = "券标题不能为空")
@ApiModelProperty(required = true, value = "券标题", example = "券标题")
private String title;
@ApiModelProperty(required = false, value = "标注", example = "标注")
private String label;
@NotBlank(message = "券描述不能为空")
@ApiModelProperty(required = true, value = "描述:注意/须知", example = "注意/须知")
private String notice;
//private Integer exclusive;
@NotNull(message = "券类别不能为空")
@ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3")
private Integer busiType;
@NotNull(message = "券类型不能为空")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]", allowableValues = "1,2,3,4,101")
private Integer couType;
@NotNull(message = "券领取方式不能为空")
@ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户]", allowableValues = "0,1")
private Integer bindType;
@ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8")
private BigDecimal discount;
@ApiModelProperty(required = false, value = "面值", example = "0.01")
private BigDecimal valFace;
@ApiModelProperty(required = false, value = "满减~满", example = "1.00")
private BigDecimal valOver;
@ApiModelProperty(required = false, value = "满减~减", example = "0.01")
private BigDecimal valMinus;
@ApiModelProperty(required = false, value = "叠加限制[0-限制|1-叠加]", allowableValues = "0,1")
@Min(value = 0, message = "叠加限制配置无效")
@Max(value = 1, message = "叠加限制配置无效")
private Integer overlay;
//private Integer overlayLevel;
@NotNull(message = "券有效期不能为空")
@Min(value = 1, message = "有效期不能小于1")
@ApiModelProperty(required = true, value = "有效期(单位天)", example = "30")
private Integer validity;
@Min(value = 1, message = "兑换有效期不能小于1")
@ApiModelProperty(required = false, value = "兑换有效期(单位天)", example = "30")
private Integer redeemValidity;
//private LocalDateTime redeemStart;
//private LocalDateTime redeemStop;
//private LocalDateTime effectAt;
//private LocalDateTime expireAt;
//private String operator;
//private Date createdAt;
//private Date updatedAt;
//private String comment;
@ApiModelProperty(required = true, value = "适用范围列表", dataType = "List", example = "[{\"useScope\": 100,\"busiName\": \"适用名称1\",\"busiId\": \"IDIDIDIDIDIDID1\"},{\"useScope\": 100,\"busiName\": \"适用名称2\",\"busiId\": \"IDIDIDIDIDIDID2\"}]")
private List<CandyCouponRuleBuildParam> couponRuleList;
//private String mcouponId;
//private String couponId;
//private Integer state;
@NotNull(message = "券发放量不能为空")
@Min(value = 1, message = "发放量不能小于1")
@ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt;
@ApiModelProperty(required = false, value = "发放类型[0-保留|1-会员|2-手机号|10-全体用户]", allowableValues = "0,1,2,10")
private Integer eventType;
@ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "18510957291,17701223310")
private String eventLimit;
@Pattern(regexp = LnsRegex.Valid.DATETIME_FULL, message = "发放时间格式有误")
@ApiModelProperty(required = true, value = "发放时间[yyyy-MM-dd HH:mm:ss](立即-当前时间|预约-点选时间)", example = "2021-08-26 00:00:00")
private String eventAt;
//private String operator;
//private LocalDateTime createdAt;
//private LocalDateTime updatedAt;
//private String comment;
}
package com.liquidnet.service.candy.param;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Api
public class BackCouponParam implements Serializable, Cloneable {
@ApiModelProperty(dataType = "String", name = "uCouponIds", value = "券唯一表示id(逗号隔开的字符串)",example = "1",required = true)
@NotNull @NotBlank
private String uCouponIds;
@ApiModelProperty(dataType = "String", name = "uid", value = "用户id",example = "10",required = true)
@NotNull @NotBlank
private String uid;
private static final BackCouponParam obj = new BackCouponParam();
public static BackCouponParam getNew() {
try {
return (BackCouponParam) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new BackCouponParam();
}
public String getuCouponIds() {
return uCouponIds;
}
public void setuCouponIds(String uCouponIds) {
this.uCouponIds = uCouponIds;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
}
package com.liquidnet.service.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyCouponCode;
/**
* <p>
* 券码信息 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
public interface ICandyCouponCodeService {
}
package com.liquidnet.service.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyCouponRule;
/**
* <p>
* 券适用规则 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
public interface ICandyCouponRuleService {
}
package com.liquidnet.service.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.candy.vo.CandyCouponPreVo;
import com.liquidnet.service.candy.vo.CandyCouponVo;
import com.liquidnet.service.candy.vo.CandyMyCouponListVo;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 券基础信息 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
public interface ICandyCouponService {
CandyMyCouponListVo myCoupon(Integer type);
List<CandyCouponPreVo> memberCouponPre(String uid);
List<CandyCouponVo> memberCoupon(String mCouponId);
CandyMyCouponListVo preUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId, Integer type);
Integer preCanUsePerformanceCoupon(BigDecimal priceTotal, String performanceId, String timeId, String ticketId);
CandyMyCouponListVo preUseGoodCoupon(BigDecimal priceTotal, String goodId, Integer type);
Integer preCanUseGoodCoupon(BigDecimal priceTotal, String goodI);
List<CandyCouponVo> myAdvanceCoupon(String performanceId);
Integer stateCoupon(String uCouponId);
CandyUseResultVo useCoupon(String uCouponId, String content, String totalPrice, String performanceId, String timesId, String ticketId, String goodIds);
Boolean useBackCoupon(List<BackCouponParam> backCouponParam);
ResponseDto<Boolean> receiveCoupon(String ccode);
ResponseDto<CandyCouponVo> receiveCouponDetails(String ccode);
ResponseDto<List<CandyCouponVo>> couponListById(String uCouponIds);
}
package com.liquidnet.service.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
/**
* <p>
* 券发放管理 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
public interface ICandyMgtCouponService {
}
package com.liquidnet.service.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
/**
* <p>
* 用户券信息 服务类
* </p>
*
* @author liquidnet
* @since 2021-08-18
*/
public interface ICandyUserCouponService {
}
package com.liquidnet.service.candy.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
@ApiModel(value = "CandyCouponPreVo", description = "会员权益券统计")
public class CandyCouponPreVo implements Serializable, Cloneable {
private static final long serialVersionUID = 3741851732227825227L;
@ApiModelProperty(value = "权益ID", example = "权益ID")
private String mcouponId;
@ApiModelProperty(value = "当前可用券数量", example = "6")
private Long availableCt;
public String getMcouponId() {
return mcouponId;
}
public CandyCouponPreVo setMcouponId(String mcouponId) {
this.mcouponId = mcouponId;
return this;
}
public Long getAvailableCt() {
return availableCt;
}
public CandyCouponPreVo setAvailableCt(Long availableCt) {
this.availableCt = availableCt;
return this;
}
private static final CandyCouponPreVo obj = new CandyCouponPreVo();
public static CandyCouponPreVo getNew() {
try {
return (CandyCouponPreVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new CandyCouponPreVo();
}
}
}
package com.liquidnet.service.candy.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel
public class CandyCouponRulesVo implements Serializable,Cloneable {
private static final long serialVersionUID = 4073256621782131607L;
@ApiModelProperty(value = "适用范围[100-全场|90-演出|91-场次|92-票|80-商品|81-款式]",example = "90")
private Integer useScope;
@ApiModelProperty(value = "适用名称",example = "北京草莓")
private String busiName;
@ApiModelProperty(value = "适用ID",example = "1")
private String busiId;
private static final CandyCouponRulesVo obj = new CandyCouponRulesVo();
public static CandyCouponRulesVo getNew() {
try {
return (CandyCouponRulesVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyCouponRulesVo();
}
}
package com.liquidnet.service.candy.vo;
import com.liquidnet.service.candy.dto.CandyCouponRuleDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.ObjectUtils;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
@ApiModel
public class CandyCouponVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131606L;
/* --- --- --- CandyCoupon */
@ApiModelProperty(value = "标题",example = "标题")
private String title;
@ApiModelProperty(value = "标注",example = "标注")
private String label;
@ApiModelProperty(value = "须知",example = "须知")
private String notice;
// private Integer exclusive;//专享标识[0-常规|1-会员礼包]
@ApiModelProperty(value = "业务类别[0-全场|1-演出|2-商品|3-优先购]",example = "0")
private Integer busiType;
@ApiModelProperty(value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券 | 101-优先券]",example = "1")
private Integer couType;
@ApiModelProperty(value = "[0-用户输入兑换|1-发放至用户]",example = "1")
private Integer bindType;
@ApiModelProperty(value = "折扣 可null",example = "0.5")
private BigDecimal discount;
@ApiModelProperty(value = "面值 可null",example = "1")
private BigDecimal valFace;
@ApiModelProperty(value = "满减~满 可null",example = "100")
private BigDecimal valOver;
@ApiModelProperty(value = "满减~减少 可null",example = "5")
private BigDecimal valMinus;
@ApiModelProperty(value = "过期时间 可null",example = "2021-09-25")
private String expireAt;
/* --- --- --- CandyUserCoupon */
@ApiModelProperty(value = "券id",example = "6d74a49d3d1d13f96ba09215abcc49af")
private String ucouponId;
@ApiModelProperty(value = "券状态[1-可用|2-无效|3-已过期 |31-未到期|5-已使用 |21-不可用]",example = "1")
private Integer state;
// private String bindAt;//激活时间
@ApiModelProperty(value = "使用时间 可null",example = "2021-09-25")
private String usedAt;
@ApiModelProperty(value = "购买内容 可null",example = "北京草莓")
private String usedFor;
/* --- --- --- CandyCouponRule */
private List<CandyCouponRulesVo> useRules;
private static final CandyCouponVo obj = new CandyCouponVo();
public static CandyCouponVo getNew() {
try {
return (CandyCouponVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyCouponVo();
}
}
package com.liquidnet.service.candy.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
@ApiModel
public class CandyMyCouponListVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131607L;
@ApiModelProperty(value = "会员券")
private List<CandyCouponVo> memberCoupon;
@ApiModelProperty(value = "我的券")
private List<CandyCouponVo> myCoupon;
private static final CandyMyCouponListVo obj = new CandyMyCouponListVo();
public static CandyMyCouponListVo getNew() {
try {
return (CandyMyCouponListVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyMyCouponListVo();
}
}
package com.liquidnet.service.candy.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
@Data
@ApiModel
public class CandyUseResultVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4073256621782131607L;
@ApiModelProperty(value = "优惠内容",example = "1")
private BigDecimal value;
@ApiModelProperty(value = "券类型[-1-不可用 | 1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]",example = "1")
private Integer couType;
private static final CandyUseResultVo obj = new CandyUseResultVo();
public static CandyUseResultVo getNew() {
try {
return (CandyUseResultVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new CandyUseResultVo();
}
}
...@@ -28,6 +28,13 @@ public class KylinRedisConst { ...@@ -28,6 +28,13 @@ public class KylinRedisConst {
public static final String ORDER_TRANSFER = "kylin:order:transfer:uid:"; public static final String ORDER_TRANSFER = "kylin:order:transfer:uid:";
public static final String ORDER_COUPON = "kylin:order:coupon:id:";
// 收货地址
public static final String ORDER_REFUND_ADDRESS = "kylin:order:refund:address";
// 手续费
public static final String ORDER_REFUND_POUNDAGE = "kylin:order:poundage";
public static final String USERID_BUY_INFO = "kylin:buy:userId:"; public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:"; public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId"; public static final String PERFORMANCE_ID = "performanceId";
...@@ -52,5 +59,4 @@ public class KylinRedisConst { ...@@ -52,5 +59,4 @@ public class KylinRedisConst {
public static final String ADMIN_UPUSH_LIST_ANDROID = "basicServices:upushList:Android"; public static final String ADMIN_UPUSH_LIST_ANDROID = "basicServices:upushList:Android";
public static final String ADMIN_BANNER_LIST = "kylin:bannerList"; public static final String ADMIN_BANNER_LIST = "kylin:bannerList";
} }
...@@ -61,4 +61,11 @@ public class PayOrderParam { ...@@ -61,4 +61,11 @@ public class PayOrderParam {
private String showUrl; private String showUrl;
@ApiModelProperty(value = "returnUrl") @ApiModelProperty(value = "returnUrl")
private String returnUrl; private String returnUrl;
@ApiModelProperty(value = "优惠券类型")
private Integer voucherType;
@ApiModelProperty(value = "优惠券码")
private String voucherCode;
@ApiModelProperty(value = "会员提前券码")
private String advanceCode;
} }
package com.liquidnet.service.kylin.dto.vo.admin;
import lombok.Data;
/**
* @version V1.0
* @class: OrderRefundAddress
* @Copyright: LightNet @ Copyright (c) 2021
*/
@Data
public class OrderRefundAddress implements Cloneable {
private String name;
private String phone;
private String address;
private static final OrderRefundAddress obj = new OrderRefundAddress();
public static OrderRefundAddress getNew() {
try {
return (OrderRefundAddress) obj.clone();
} catch (CloneNotSupportedException e) {
return new OrderRefundAddress();
}
}
}
package com.liquidnet.service.kylin.dto.vo.admin;
import lombok.Data;
/**
* @version V1.0
* @class: OrderRefundPoundage
* @Copyright: LightNet @ Copyright (c) 2021
*/
@Data
public class OrderRefundPoundage implements Cloneable {
private int day;
private String content;
private float present;
private int isCanRefund;
private static final OrderRefundPoundage obj = new OrderRefundPoundage();
public static OrderRefundPoundage getNew() {
try {
return (OrderRefundPoundage) obj.clone();
} catch (CloneNotSupportedException e) {
return new OrderRefundPoundage();
}
}
}
...@@ -13,4 +13,10 @@ public class PerformanceRefundConfigVo { ...@@ -13,4 +13,10 @@ public class PerformanceRefundConfigVo {
private Integer isCanRefund; private Integer isCanRefund;
private String refundOpenTime; private String refundOpenTime;
private String refundCloseTime; private String refundCloseTime;
private Integer isRefundPoundage;
private Integer isRefundVoucher;
private Integer isRefundExpress;
private OrderRefundAddress orderRefundAddress;
} }
...@@ -120,6 +120,14 @@ public class KylinPerformanceVo { ...@@ -120,6 +120,14 @@ public class KylinPerformanceVo {
// private Integer isRefundVoucher; // private Integer isRefundVoucher;
// private Integer isRefundExpress; // private Integer isRefundExpress;
private Integer isRefundPoundage;
private Integer isRefundVoucher;
private Integer isRefundExpress;
private Integer isTransfer;
private String transferStartTime;
private String transferEndTime;
public void setPerformance(KylinPerformances performance) { public void setPerformance(KylinPerformances performance) {
this.mid = performance.getMid(); this.mid = performance.getMid();
this.performancesId = performance.getPerformancesId(); this.performancesId = performance.getPerformancesId();
...@@ -172,6 +180,9 @@ public class KylinPerformanceVo { ...@@ -172,6 +180,9 @@ public class KylinPerformanceVo {
this.isTransfer = performanceStatus.getIsTransfer(); this.isTransfer = performanceStatus.getIsTransfer();
this.transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferStartTime()); this.transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferStartTime());
this.transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferEndTime()); this.transferEndTime = DateUtil.Formatter.yyyyMMddHHmmss.format(performanceStatus.getTransferEndTime());
this.isRefundPoundage = performanceStatus.getIsRefundPoundage();
this.isRefundVoucher = performanceStatus.getIsRefundVoucher();
this.isRefundExpress = performanceStatus.getIsRefundExpress();
} }
public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) { public void setPerformanceRelations(KylinPerformanceRelations performanceRelations) {
......
package com.liquidnet.service.kylin.dto.vo.returns;
import lombok.Data;
import java.io.Serializable;
@Data
public class InnerReturnVo<T> implements Serializable,Cloneable {
private static final long serialVersionUID = 1541552316829686035L;
private String code;
private String message;
private T data;
private static final InnerReturnVo obj = new InnerReturnVo();
public static InnerReturnVo getNew() {
try {
return (InnerReturnVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new InnerReturnVo();
}
}
}
...@@ -4,6 +4,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; ...@@ -4,6 +4,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.entity.KylinFields; import com.liquidnet.service.kylin.entity.KylinFields;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import lombok.Data; import lombok.Data;
import java.util.List; import java.util.List;
...@@ -33,6 +34,7 @@ public class OrderDetailsVo implements Cloneable { ...@@ -33,6 +34,7 @@ public class OrderDetailsVo implements Cloneable {
private Integer isCanBack; private Integer isCanBack;
@ApiModelProperty(position = 10, value = "退款相关list") @ApiModelProperty(position = 10, value = "退款相关list")
private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList; private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList;
private List<KylinOrderCoupons> orderCouponsList;
private static final OrderDetailsVo obj = new OrderDetailsVo(); private static final OrderDetailsVo obj = new OrderDetailsVo();
......
package com.liquidnet.service.kylin.service.admin; package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
...@@ -11,7 +10,6 @@ import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo; ...@@ -11,7 +10,6 @@ import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo; import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo; import com.liquidnet.service.kylin.dto.vo.admin.PerformanceTransferConfigVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.entity.KylinPerformances;
import java.util.List; import java.util.List;
...@@ -67,6 +65,15 @@ public interface IKylinPerformancesAdminService { ...@@ -67,6 +65,15 @@ public interface IKylinPerformancesAdminService {
*/ */
List<PerformanceTitleDao> getListByStatus(String status,String title); List<PerformanceTitleDao> getListByStatus(String status,String title);
/**
* 根据演出状态 查询演出列表 演出全量场次票
*
* @param status 演出状态
* @return 20个 sql 数据
*/
List<PerformanceSimpleAllDao> getListDetailByStatus(String status, String title);
/** /**
* 修改演出的巡演关联 * 修改演出的巡演关联
* *
...@@ -202,7 +209,10 @@ public interface IKylinPerformancesAdminService { ...@@ -202,7 +209,10 @@ public interface IKylinPerformancesAdminService {
String changeTransferConfig(String performancesId, String changeTransferConfig(String performancesId,
Integer isCanRefund, Integer isCanRefund,
String refundOpenTime, String refundOpenTime,
String refundCloseTime); String refundCloseTime,
Integer isRefundPoundage,
Integer isRefundVoucher,
Integer isRefundExpress);
KylinPerformanceAgentVo getPerformanceAgent(String performancesId); KylinPerformanceAgentVo getPerformanceAgent(String performancesId);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
<module>liquidnet-service-kylin-api</module> <module>liquidnet-service-kylin-api</module>
<module>liquidnet-service-dragon-api</module> <module>liquidnet-service-dragon-api</module>
<module>liquidnet-service-chime-api</module> <module>liquidnet-service-chime-api</module>
<module>liquidnet-service-candy-api</module>
</modules> </modules>
<dependencies> <dependencies>
<dependency> <dependency>
......
...@@ -124,4 +124,9 @@ public enum BusinessType ...@@ -124,4 +124,9 @@ public enum BusinessType
* 快递-打印 23 * 快递-打印 23
*/ */
BATCH_PRINT, BATCH_PRINT,
/**
* 会员订单退款
*/
MORDER_REFUND,
} }
...@@ -18,13 +18,14 @@ import java.util.Arrays; ...@@ -18,13 +18,14 @@ import java.util.Arrays;
@EnableAsync @EnableAsync
@EnableEurekaClient @EnableEurekaClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}, scanBasePackages = {"com.liquidnet"}) @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}, scanBasePackages = {"com.liquidnet"})
@MapperScan(basePackages = {"com.liquidnet.service.kylin.mapper", "com.liquidnet.service.adam.mapper"})// @MapperScan(basePackages = {"com.liquidnet.service.*.mapper"})
public class ClientAdminApplication implements CommandLineRunner { public class ClientAdminApplication implements CommandLineRunner {
@Autowired @Autowired
private Environment environment; private Environment environment;
public static void main(String[] args) { public static void main(String[] args) {
// System.setProperty("spring.devtools.restart.enabled", "false"); // System.setProperty("spring.devtoolq.restart.enabled", "false");
// System.setProperty("spring.devtoolq.restart.enabled", "false");
SpringApplication.run(ClientAdminApplication.class, args); SpringApplication.run(ClientAdminApplication.class, args);
} }
......
package com.liquidnet.client.admin.web.controller.zhengzai.adam; package com.liquidnet.client.admin.web.controller.zhengzai.adam;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log; import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberOrderAdminService; import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberOrderAdminService;
import com.liquidnet.service.adam.dto.MemberOrderDto; import com.liquidnet.service.adam.dto.MemberOrderDto;
import com.liquidnet.service.adam.dto.param.admin.MemberOrderListReq; import com.liquidnet.service.adam.dto.admin.AdamMemberOrderRefundParam;
import com.liquidnet.service.adam.dto.admin.MemberOrderListReq;
import com.liquidnet.service.adam.dto.vo.admin.MemberOrderDetailAdminVo; import com.liquidnet.service.adam.dto.vo.admin.MemberOrderDetailAdminVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -27,8 +33,7 @@ import java.util.List; ...@@ -27,8 +33,7 @@ import java.util.List;
*/ */
@Controller @Controller
@RequestMapping("adam/order") @RequestMapping("adam/order")
public class AdamMemberOrderController extends BaseController public class AdamMemberOrderAdminController extends BaseController {
{
private String prefix = "zhengzai/adam/order"; private String prefix = "zhengzai/adam/order";
@Autowired @Autowired
...@@ -36,30 +41,21 @@ public class AdamMemberOrderController extends BaseController ...@@ -36,30 +41,21 @@ public class AdamMemberOrderController extends BaseController
@RequiresPermissions("adam:order:orderlist:view") @RequiresPermissions("adam:order:orderlist:view")
@GetMapping("/orderList") @GetMapping("/orderList")
public String order() public String order() {
{
return prefix + "/orderList/order"; return prefix + "/orderList/order";
} }
/** @Log(title = "会员订单列表", businessType = BusinessType.LIST)
* 查询【请填写功能名称】列表
*/
@Log(title = "会员订单", businessType = BusinessType.LIST)
@RequiresPermissions("adam:order:orderlist:list") @RequiresPermissions("adam:order:orderlist:list")
@PostMapping("/orderList/list") @PostMapping("/orderList/list")
@ResponseBody @ResponseBody
public TableDataInfo list(MemberOrderListReq memberOrderListReq) public TableDataInfo list(MemberOrderListReq memberOrderListReq) {
{
startPage(); startPage();
List<MemberOrderDto> list = adamMemberOrderAdminService.getMemberOrderList(memberOrderListReq); List<MemberOrderDto> list = adamMemberOrderAdminService.getMemberOrderList(memberOrderListReq);
return getDataTable(list); return getDataTable(list);
} }
/** @Log(title = "会员订单详情", businessType = BusinessType.DETAIL)
* 订单详情
*/
@Log(title = "会员订单", businessType = BusinessType.DETAIL)
@RequiresPermissions("adam:order:orderlist:detail") @RequiresPermissions("adam:order:orderlist:detail")
@GetMapping("/orderList/detail/{orderId}") @GetMapping("/orderList/detail/{orderId}")
public String orderDetail(@PathVariable("orderId") String orderId, ModelMap mmap) { public String orderDetail(@PathVariable("orderId") String orderId, ModelMap mmap) {
...@@ -68,73 +64,25 @@ public class AdamMemberOrderController extends BaseController ...@@ -68,73 +64,25 @@ public class AdamMemberOrderController extends BaseController
return prefix + "/orderList/detail"; return prefix + "/orderList/detail";
} }
// /** @Log(title = "会员订单退款", businessType = BusinessType.MORDER_REFUND)
// * 导出【请填写功能名称】列表 @RequiresPermissions("adam:order:orderlist:refund")
// */ @PostMapping("/orderList/refund")
// @RequiresPermissions("adam:order:export") @ResponseBody
// @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT) public AjaxResult orderRefund(@Validated AdamMemberOrderRefundParam parameter) {
// @PostMapping("/export") LambdaQueryWrapper<AdamMemberOrder> queryWrapper = Wrappers.lambdaQuery(AdamMemberOrder.class)
// @ResponseBody .eq(AdamMemberOrder::getOrderNo, parameter.getOrderNo());
// public AjaxResult export(AdamMemberOrder adamMemberOrder) AdamMemberOrder memberOrder = adamMemberOrderAdminService.getOne(queryWrapper);
// {
// List<AdamMemberOrder> list = adamMemberOrderService.selectAdamMemberOrderList(adamMemberOrder);
// ExcelUtil<AdamMemberOrder> util = new ExcelUtil<AdamMemberOrder>(AdamMemberOrder.class);
// return util.exportExcel(list, "【请填写功能名称】数据");
// }
// /**
// * 新增【请填写功能名称】
// */
// @GetMapping("/add")
// public String add()
// {
// return prefix + "/add";
// }
// /** if (null == memberOrder) {
// * 新增保存【请填写功能名称】 return AjaxResult.warn("订单不存在");
// */ }
// @RequiresPermissions("adam:order:add") if (memberOrder.getState() != 1) {
// @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT) return AjaxResult.warn(String.format("该订单[%s]不支持退款,请核实订单状态", parameter.getOrderNo()));
// @PostMapping("/add") }
// @ResponseBody if (memberOrder.getPricePaid().compareTo(parameter.getRefundAmt()) < 0) {
// public AjaxResult addSave(AdamMemberOrder adamMemberOrder) return AjaxResult.warn("退款金额超出订单实际支付金额");
// { }
// return toAjax(adamMemberOrderService.insertAdamMemberOrder(adamMemberOrder));
// }
// /** return adamMemberOrderAdminService.refundProcessing(parameter, memberOrder);
// * 修改【请填写功能名称】 }
// */
// @GetMapping("/edit/{mid}")
// public String edit(@PathVariable("mid") String mid, ModelMap mmap)
// {
// AdamMemberOrder adamMemberOrder = adamMemberOrderService.selectAdamMemberOrderById(mid);
// mmap.put("adamMemberOrder", adamMemberOrder);
// return prefix + "/edit";
// }
//
// /**
// * 修改保存【请填写功能名称】
// */
// @RequiresPermissions("adam:order:edit")
// @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
// @PostMapping("/edit")
// @ResponseBody
// public AjaxResult editSave(AdamMemberOrder adamMemberOrder)
// {
// return toAjax(adamMemberOrderService.updateAdamMemberOrder(adamMemberOrder));
// }
//
// /**
// * 删除【请填写功能名称】
// */
// @RequiresPermissions("adam:order:remove")
// @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
// @PostMapping( "/remove")
// @ResponseBody
// public AjaxResult remove(String ids)
// {
// return toAjax(adamMemberOrderService.deleteAdamMemberOrderByIds(ids));
// }
} }
...@@ -24,66 +24,66 @@ import javax.validation.constraints.NotBlank; ...@@ -24,66 +24,66 @@ import javax.validation.constraints.NotBlank;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Api(tags = "会员价格") //@Api(tags = "会员价格")
@Slf4j //@Slf4j
@Validated //@Validated
@RestController //@RestController
@RequestMapping("adam/mprice") //@RequestMapping("adam/mprice")
public class AdamMemberPriceAdminController { public class AdamMemberPriceAdminController {
@Autowired // @Autowired
IAdamMemberPriceAdminService adamMemberPriceService; // IAdamMemberPriceAdminService adamMemberPriceService;
//
@Log(title = "会员价格", businessType = BusinessType.LIST) // @Log(title = "会员价格", businessType = BusinessType.LIST)
@RequiresPermissions("adam:mprice:list") // @RequiresPermissions("adam:mprice:list")
@ApiOperation(value = "会员价格列表") // @ApiOperation(value = "会员价格列表")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
}) // })
@GetMapping("list") // @GetMapping("list")
public ResponseDto<List<AdamMemberPriceVo>> list(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) { // public ResponseDto<List<AdamMemberPriceVo>> list(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId) {
List<AdamMemberPrice> list = adamMemberPriceService.list( // List<AdamMemberPrice> list = adamMemberPriceService.list(
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId) // Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId)
); // );
List<AdamMemberPriceVo> vos = new ArrayList<>(); // List<AdamMemberPriceVo> vos = new ArrayList<>();
list.forEach(r -> { // list.forEach(r -> {
vos.add(AdamMemberPriceVo.getNew().copy(r)); // vos.add(AdamMemberPriceVo.getNew().copy(r));
}); // });
return ResponseDto.success(vos); // return ResponseDto.success(vos);
} // }
//
@Log(title = "会员价格", businessType = BusinessType.DETAIL) // @Log(title = "会员价格", businessType = BusinessType.DETAIL)
@RequiresPermissions("adam:mprice:info") // @RequiresPermissions("adam:mprice:info")
@ApiOperation(value = "会员价格详情") // @ApiOperation(value = "会员价格详情")
@ApiImplicitParams({ // @ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"), // @ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"),
}) // })
@GetMapping("info") // @GetMapping("info")
public ResponseDto<AdamMemberPriceVo> query(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId, // public ResponseDto<AdamMemberPriceVo> query(@NotBlank(message = "会员类型ID不能为空") @RequestParam String memberId,
@NotBlank(message = "会员价格ID不能为空") @RequestParam String memberPriceId) { // @NotBlank(message = "会员价格ID不能为空") @RequestParam String memberPriceId) {
AdamMemberPrice one = adamMemberPriceService.getOne( // AdamMemberPrice one = adamMemberPriceService.getOne(
Wrappers.lambdaQuery(AdamMemberPrice.class) // Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId) // .eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId) // .eq(AdamMemberPrice::getMemberId, memberId)
); // );
return ResponseDto.success(AdamMemberPriceVo.getNew().copy(one)); // return ResponseDto.success(AdamMemberPriceVo.getNew().copy(one));
} // }
//
@Log(title = "会员价格", businessType = BusinessType.INSERT) // @Log(title = "会员价格", businessType = BusinessType.INSERT)
@RequiresPermissions("adam:mprice:add") // @RequiresPermissions("adam:mprice:add")
@ApiOperation(value = "添加会员价格") // @ApiOperation(value = "添加会员价格")
@PostMapping("add") // @PostMapping("add")
public ResponseDto<AdamMemberPriceVo> add(@Valid @RequestBody AdamMemberPriceParam param) { // public ResponseDto<AdamMemberPriceVo> add(@Valid @RequestBody AdamMemberPriceParam param) {
AdamMemberPrice entity = new AdamMemberPrice(); // AdamMemberPrice entity = new AdamMemberPrice();
BeanUtils.copyProperties(param, entity); // BeanUtils.copyProperties(param, entity);
return ResponseDto.success(adamMemberPriceService.add(entity)); // return ResponseDto.success(adamMemberPriceService.add(entity));
} // }
//
@Log(title = "会员价格", businessType = BusinessType.UPDATE) // @Log(title = "会员价格", businessType = BusinessType.UPDATE)
@RequiresPermissions("adam:mprice:edit") // @RequiresPermissions("adam:mprice:edit")
@ApiOperation(value = "编辑会员价格") // @ApiOperation(value = "编辑会员价格")
@PostMapping("edit") // @PostMapping("edit")
public ResponseDto<AdamMemberPriceVo> edit(@Valid @RequestBody AdamMemberPriceParam param) { // public ResponseDto<AdamMemberPriceVo> edit(@Valid @RequestBody AdamMemberPriceParam param) {
return adamMemberPriceService.edit(param) ? ResponseDto.success() : ResponseDto.failure("无效编辑"); // return adamMemberPriceService.edit(param) ? ResponseDto.success() : ResponseDto.failure("无效编辑");
} // }
} }
package com.liquidnet.client.admin.web.controller.zhengzai.adam;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
@Api(tags = "ADAM配置")
@Slf4j
@Validated
@RestController
@RequestMapping("adam/switch")
public class AdamSwitchAdminController {
@Autowired
RedisUtil redisUtil;
@Log(title = "ADAM配置", businessType = BusinessType.GRANT)
@RequiresPermissions("adam:switch:buy:member")
@ApiOperation(value = "开放/限制购买会员")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "int", name = "opt", value = "0-限制|1-开放", example = "0"),
})
@PostMapping("buy/member")
public ResponseDto<Object> purchaseSwitch(@Max(1) @Min(0) @RequestParam int opt) {
redisUtil.set(AdamRedisConst.SWITCH_BUY_MEMBER, opt);
return ResponseDto.success(redisUtil.get(AdamRedisConst.SWITCH_BUY_MEMBER));
}
@Log(title = "ADAM配置", businessType = BusinessType.OTHER)
@RequiresPermissions("adam:switch:max:memberno")
@ApiOperation(value = "会员用户最大ID_NO")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "int", name = "opt", value = "会员用户最大ID_NO", example = "15000"),
})
@PostMapping("set/memberno")
public ResponseDto<Object> purchaseStartMemberNo(@Min(11417) @RequestParam int opt) {
redisUtil.set(AdamRedisConst.INCR_MEMBER_NO, opt);
return ResponseDto.success(redisUtil.get(AdamRedisConst.INCR_MEMBER_NO));
}
}
...@@ -22,7 +22,7 @@ import javax.validation.constraints.NotBlank; ...@@ -22,7 +22,7 @@ import javax.validation.constraints.NotBlank;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Api(tags = "会员用户") @Api(tags = "登登登会员")
@Slf4j @Slf4j
@Validated @Validated
@RestController @RestController
......
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.candy.dto.CandyCouponCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.candy.constant.CandyRedisConst;
import com.liquidnet.service.candy.dto.CandyCouponCodeDto;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeListParam;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam;
import com.liquidnet.service.candy.entity.CandyCouponCode;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Api(tags = "券码管理")
@Controller
@RequestMapping("candy/coupon/code")
public class CandyCouponCodeAdminController extends BaseController {
private String prefix = "zhengzai/candy/coupon/code";
@Autowired
private RedisUtil redisUtil;
@Autowired
private ICandyCouponCodeAdminService candyCouponCodeAdminService;
@RequiresPermissions("candy:coupon:code:view")
@GetMapping()
public String view(@RequestParam String couponId, ModelMap mmap) {
mmap.put("couponId", couponId);
return prefix + "/code";
}
@RequiresPermissions("candy:coupon:code:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyCouponCodeListParam listParam) {
startPage();
return getDataTable(listQuery(listParam));
}
private List<CandyCouponCode> listQuery(CandyCouponCodeListParam listParam) {
LambdaQueryWrapper<CandyCouponCode> lambdaQuery = Wrappers.lambdaQuery(CandyCouponCode.class);
lambdaQuery.eq(CandyCouponCode::getCouponId, listParam.getCouponId())
.ne(CandyCouponCode::getState, 2)
.select(
CandyCouponCode::getCcode,
CandyCouponCode::getCouponId,
CandyCouponCode::getRedeemMobile,
CandyCouponCode::getState
);
if (null != listParam.getState()) {
lambdaQuery.eq(CandyCouponCode::getState, listParam.getState());
}
return candyCouponCodeAdminService.list(lambdaQuery);
}
@RequiresPermissions("candy:coupon:code:export")
@PostMapping("export")
@ResponseBody
public AjaxResult export(CandyCouponCodeListParam listParam) {
List<CandyCouponCode> list = listQuery(listParam);
ExcelUtil<CandyCouponCodeExcelDto> excelUtil = new ExcelUtil<>(CandyCouponCodeExcelDto.class);
List<CandyCouponCodeExcelDto> excelList = new ArrayList<>();
list.forEach(r -> {
excelList.add(CandyCouponCodeExcelDto.getNew().copy(r));
});
return excelUtil.exportExcel(excelList, "券码数据");
}
@RequiresPermissions("candy:coupon:code:invalid")
@PostMapping("invalid")
@ResponseBody
public AjaxResult invalid(CandyCouponCodeOptParam optParam) {
logger.debug("optParam:{}", JsonUtils.toJson(optParam));
optParam.getCcodes().forEach(r -> {
String key = CandyRedisConst.BASIC_COUPON_CODE.concat(r);
CandyCouponCodeDto dto = (CandyCouponCodeDto) redisUtil.get(key);
if (null != dto) {
dto.setState(4);
redisUtil.set(key, dto);
}
});
LambdaUpdateWrapper<CandyCouponCode> couponCodeUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponCode.class);
couponCodeUpdateWrapper.in(CandyCouponCode::getCcode, optParam.getCcodes()).eq(CandyCouponCode::getCouponId, optParam.getCouponId());
CandyCouponCode updateCouponCode = new CandyCouponCode();
updateCouponCode.setState(4);
updateCouponCode.setUpdatedAt(LocalDateTime.now());
return toAjax(candyCouponCodeAdminService.update(updateCouponCode, couponCodeUpdateWrapper));
}
@RequiresPermissions("candy:coupon:code:recover")
@PostMapping("recover")
@ResponseBody
public AjaxResult recover(CandyCouponCodeOptParam optParam) {
logger.debug("optParam:{}", JsonUtils.toJson(optParam));
optParam.getCcodes().forEach(r -> {
String key = CandyRedisConst.BASIC_COUPON_CODE.concat(r);
CandyCouponCodeDto dto = (CandyCouponCodeDto) redisUtil.get(key);
if (null != dto) {
dto.setState(5);
redisUtil.set(key, dto);
}
});
LambdaUpdateWrapper<CandyCouponCode> couponCodeUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponCode.class);
couponCodeUpdateWrapper.in(CandyCouponCode::getCcode, optParam.getCcodes()).eq(CandyCouponCode::getCouponId, optParam.getCouponId());
CandyCouponCode updateCouponCode = new CandyCouponCode();
updateCouponCode.setState(5);
updateCouponCode.setUpdatedAt(LocalDateTime.now());
return toAjax(candyCouponCodeAdminService.update(updateCouponCode, couponCodeUpdateWrapper));
}
}
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.DateUtils;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyMgtCouponAdminService;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.candy.dto.admin.CandyCouponRuleBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponBuildParam;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponInfoDto;
import com.liquidnet.service.candy.dto.admin.CandyMgtCouponListParam;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRule;
import com.liquidnet.service.candy.entity.CandyMgtCoupon;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Api(tags = "券发放管理")
@Controller
@RequestMapping("candy/coupon/mgt")
public class CandyMgtCouponAdminController extends BaseController {
private final String prefix = "zhengzai/candy/coupon/mgt";
@Autowired
private ICandyMgtCouponAdminService candyMgtCouponAdminService;
@RequiresPermissions("candy:coupon:mgt:view")
@GetMapping()
public String coupon(@RequestParam int couType) {
return prefix + "/coupon" + couType;
}
@RequiresPermissions("candy:coupon:mgt:list")
@PostMapping("list")
@ResponseBody
public TableDataInfo list(CandyMgtCouponListParam listParam) {
startPage();
List<CandyMgtCouponInfoDto> list = candyMgtCouponAdminService.listForMgtCouponInfoDto(listParam);
return getDataTable(list);
}
@GetMapping("add/{couType}")
public String add(@PathVariable("couType") String couType, ModelMap mmap) {
mmap.put("couType", couType);
return prefix + "/add";
}
@ApiOperation(value = "新建券")
@RequiresPermissions("candy:coupon:mgt:add")
@Log(title = "券发放管理", businessType = BusinessType.INSERT)
@PostMapping("add")
@ResponseBody
public AjaxResult addSave(@RequestBody @Validated CandyMgtCouponBuildParam buildParam) {
switch (buildParam.getCouType()) {
case 1:// 代金券
BigDecimal valFace = buildParam.getValFace();
if (null == valFace || valFace.compareTo(BigDecimal.ZERO) <= 0) {
return AjaxResult.warn("代金券金额无效");
}
buildParam.setDiscount(null);
buildParam.setValOver(null);
buildParam.setValMinus(null);
buildParam.setOverlay(0);
break;
case 2:// 满减券
BigDecimal valOver = buildParam.getValOver();
BigDecimal valMinus = buildParam.getValMinus();
if (null == valOver || valOver.compareTo(BigDecimal.ZERO) <= 0
|| null == valMinus || valMinus.compareTo(BigDecimal.ZERO) <= 0) {
return AjaxResult.warn("满减金额无效");
}
buildParam.setDiscount(null);
buildParam.setValFace(valMinus);
buildParam.setOverlay(0);
break;
case 3:// 兑换券
buildParam.setBindType(0);
buildParam.setDiscount(null);
buildParam.setValFace(null);
buildParam.setValOver(null);
buildParam.setValMinus(null);
buildParam.setOverlay(0);
break;
case 4:// 折扣券
BigDecimal discount = buildParam.getDiscount();
if (null == discount || discount.compareTo(BigDecimal.ZERO) <= 0) {
return AjaxResult.warn("折扣配置无效");
}
buildParam.setValFace(null);
buildParam.setValOver(null);
buildParam.setValMinus(null);
break;
case 101:
if (null == buildParam.getOverlay()) {
return AjaxResult.warn("叠加限制配置无效");
}
buildParam.setDiscount(null);
buildParam.setValFace(null);
buildParam.setValOver(null);
buildParam.setValMinus(null);
break;
default:
logger.warn("Invalid operation[buildParam.couType={}]", buildParam.getCouType());
return this.error(AjaxResult.Type.WARN, "券类型无效");
}
if (buildParam.getBusiType() > 0) {// 校验适用范围
List<CandyCouponRuleBuildParam> couponRuleList = buildParam.getCouponRuleList();
if (CollectionUtils.isEmpty(couponRuleList)) {
return AjaxResult.warn("请指定适用范围");
}
CandyCouponRuleBuildParam couponRuleBuildParam = couponRuleList.get(0);
if (couponRuleBuildParam.getUseScope() != 100 && (
StringUtils.isEmpty(couponRuleBuildParam.getBusiId()) || StringUtils.isEmpty(couponRuleBuildParam.getBusiName())
)) {
return AjaxResult.warn("请指定具体适用内容");
}
} else {
buildParam.setCouponRuleList(null);
}
if (0 == buildParam.getBindType()) {
buildParam.setEventType(0);
buildParam.setEventLimit(null);
if (null == buildParam.getRedeemValidity()) {
return AjaxResult.warn("兑换有效期无效");
}
} else {
if (buildParam.getEventType() == 2) {// 指定用户手机号
if (StringUtils.isEmpty(buildParam.getEventLimit().trim())) {
return AjaxResult.warn("请指定手机号");
}
}
}
return toAjax(candyMgtCouponAdminService.saveMgtCouponForCouponBuild(buildParam));
}
}
package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinPerformancesAdminServiceImpl;
import com.liquidnet.service.kylin.dao.PerformanceSimpleAllDao;
import com.liquidnet.service.kylin.dao.PerformanceTitleDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
@RequestMapping("/kylin/base")
public class KylinBaseController extends BaseController {
@Autowired
private KylinPerformancesAdminServiceImpl kylinPerformancesService;
@GetMapping(value = "/performance/status")
@ResponseBody
public AjaxResult listByStatus(@RequestParam(value = "status") String status, @RequestParam(value = "title",required = false) String title) {
List<PerformanceSimpleAllDao> result = kylinPerformancesService.getListDetailByStatus(status,title);
AjaxResult ajax = new AjaxResult();
ajax.put("value", result);
return ajax;
}
}
...@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.RefundSearchParam; ...@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.RefundSearchParam;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo; import com.liquidnet.service.kylin.dto.vo.returns.RefundOrderDetailsVo;
import com.liquidnet.service.kylin.service.IKylinOrderRefundsService; import com.liquidnet.service.kylin.service.IKylinOrderRefundsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -38,7 +39,6 @@ import java.util.Map; ...@@ -38,7 +39,6 @@ import java.util.Map;
* @author jiangxiulong * @author jiangxiulong
* @since 2021-05-25 10:58 上午 * @since 2021-05-25 10:58 上午
*/ */
@Controller @Controller
@RequestMapping("/kylin/refund") @RequestMapping("/kylin/refund")
public class KylinOrderRefundAdminController extends BaseController { public class KylinOrderRefundAdminController extends BaseController {
......
...@@ -219,5 +219,11 @@ public class KylinPerformancesController extends BaseController { ...@@ -219,5 +219,11 @@ public class KylinPerformancesController extends BaseController {
@RequestParam("transferEndTime") String transferEndTime) { @RequestParam("transferEndTime") String transferEndTime) {
String result = kylinPerformancesService.changeTransferConfig(performancesId, isCanTransfer, transferStartTime, transferEndTime); String result = kylinPerformancesService.changeTransferConfig(performancesId, isCanTransfer, transferStartTime, transferEndTime);
return this.success(result); return this.success(result);
@RequestParam("refundCloseTime") String refundCloseTime,
@RequestParam("isRefundPoundage") Integer isRefundPoundage,
@RequestParam("isRefundVoucher") Integer isRefundVoucher,
@RequestParam("isRefundExpress") Integer isRefundExpress) {
boolean result = kylinPerformancesService.changeRefundConfig(performancesId,isCanRefund,refundOpenTime,refundCloseTime,isRefundPoundage,isRefundVoucher,isRefundExpress);
return toAjax(result);
} }
} }
...@@ -1003,7 +1003,7 @@ var table = { ...@@ -1003,7 +1003,7 @@ var table = {
// 详细信息,以tab页展现 // 详细信息,以tab页展现
detailTab: function(id) { detailTab: function(id) {
table.set(); table.set();
$.modal.openTab("详细" + table.options.modalName, $.operate.detailUrl(id)); $.modal.openTab(table.options.modalName + "详情", $.operate.detailUrl(id));
}, },
// 详细访问地址 // 详细访问地址
detailUrl: function(id) { detailUrl: function(id) {
...@@ -1057,6 +1057,53 @@ var table = { ...@@ -1057,6 +1057,53 @@ var table = {
$.operate.submit(url, "post", "json", data); $.operate.submit(url, "post", "json", data);
}); });
}, },
/**
* 批量处理
*
* @param url post.url
* @param optName 操作描述(失效、退回......)
* @param data post.data { "param1": param1,"param2": {param2} }
*/
batchProcessing: function(url, optName, data) {
table.set();
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
if (rows.length == 0) {
$.modal.alertWarning("请至少选择一条记录");
return;
}
$.modal.confirm("确认要" + optName + "选中的" + rows.length + "条数据吗?", function() {
$.operate.submit(url, "post", "json", data);
});
},
// 批量失效
batchProcessingForCouponCode: function(couponId, opt) {
table.set();
var url, message, uniqueId, optName;
if (uniqueId) {
var rows = $.table.selectColumns(uniqueId);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
}
if (opt === 1) {
url = 'code/invalid';
optName = '失效';
} else if (opt === 2) {
url = 'code/recover';
optName = '退回';
} else {
$.modal.alertWarning("选择有误");
return;
}
message = message ?? "确认要" + optName + "选中的" + rows.length + "条数据吗?";
if (rows.length == 0) {
$.modal.alertWarning("请至少选择一条记录");
return;
}
$.modal.confirm(message, function() {
var data = { "couponId": couponId,"ccodes": rows.join() };
$.operate.submit(url, "post", "json", data);
});
},
// 清空信息 // 清空信息
clean: function() { clean: function() {
table.set(); table.set();
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<link href="favicon.ico" rel="shortcut icon">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/jquery.contextMenu.min.css" rel="stylesheet">
<link href="/css/font-awesome.min.css" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css" rel="stylesheet">
<link href="/css/skins.css" rel="stylesheet">
<link href="/ruoyi/css/ry-ui.css?v=4.6.1" rel="stylesheet">
<link href="/ajax/libs/bootstrap-fileinput/fileinput.min.css?v=20201202" rel="stylesheet">
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<div class="file-loading">
<input id="fileinput-demo-1" type="file" name="file" data-browse-on-zone-click="true"
data-msg-placeholder="Select {files} for upload...">
<input hidden id="coverImg" name="coverImg">
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/plugins/metisMenu/jquery.metisMenu.js"></script>
<script src="/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="/js/jquery.contextMenu.min.js"></script>
<script src="/ajax/libs/blockUI/jquery.blockUI.js"></script>
<script src="/ajax/libs/layer/layer.min.js"></script>
<script src="/ruoyi/js/ry-ui.js?v=4.6.1"></script>
<script src="/ruoyi/js/common.js?v=4.6.1"></script>
<script src="/ruoyi/index.js?v=20201208"></script>
<script src="/ajax/libs/fullscreen/jquery.fullscreen.js"></script>
<script src="/ajax/libs/bootstrap-fileinput/fileinput.min.js?v=20201202"></script>
<script type="text/javascript">
var platformUrl = "[[${platformUrl}]]";
var url6 = "[[${url6}]]";
var url7 = "[[${url7}]]";
var url14 = "[[${url14}]]";
$(function () {
$("#fileinput-demo-1").fileinput({
'theme': 'explorer-fas',
// 'uploadUrl': "/kylin/banners/upload3",
// 'uploadUrl': "http://127.0.0.1:9003" + "/platform/basicServices/alOss/upload",
'uploadUrl': "https://devplatform.zhengzai.tv/platform/basicServices/alOss/upload",
"uploadExtraData": {
"pathName" : "banner",
"buckType" : 1
},
// overwriteInitial: false,
// initialPreviewAsData: true,
autoReplace: true,
dropZoneTitle: "请上传文件",
maxFileCount: 1
});
$("#fileinput-demo-1").on("fileuploaded", function (event, data, previewId, index) {
window.localStorage.setItem('vipBanner', data.response.data.ossPath);
});
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<link href="favicon.ico" rel="shortcut icon">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/jquery.contextMenu.min.css" rel="stylesheet">
<link href="/css/font-awesome.min.css" rel="stylesheet">
<link href="/css/animate.css" rel="stylesheet">
<link href="/css/style.css" rel="stylesheet">
<link href="/css/skins.css" rel="stylesheet">
<link href="/ruoyi/css/ry-ui.css?v=4.6.1" rel="stylesheet">
<link href="/ajax/libs/bootstrap-fileinput/fileinput.min.css?v=20201202" rel="stylesheet">
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<div class="file-loading">
<input id="fileinput-demo-1" type="file" name="file" data-browse-on-zone-click="true"
data-msg-placeholder="Select {files} for upload...">
<input hidden id="coverImg" name="coverImg">
</div>
</div>
<!-- 全局js -->
<script src="/js/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/plugins/metisMenu/jquery.metisMenu.js"></script>
<script src="/js/plugins/slimscroll/jquery.slimscroll.min.js"></script>
<script src="/js/jquery.contextMenu.min.js"></script>
<script src="/ajax/libs/blockUI/jquery.blockUI.js"></script>
<script src="/ajax/libs/layer/layer.min.js"></script>
<script src="/ruoyi/js/ry-ui.js?v=4.6.1"></script>
<script src="/ruoyi/js/common.js?v=4.6.1"></script>
<script src="/ruoyi/index.js?v=20201208"></script>
<script src="/ajax/libs/fullscreen/jquery.fullscreen.js"></script>
<script src="/ajax/libs/bootstrap-fileinput/fileinput.min.js?v=20201202"></script>
<script type="text/javascript">
var platformUrl = "[[${platformUrl}]]";
var url6 = "[[${url6}]]";
var url7 = "[[${url7}]]";
var url14 = "[[${url14}]]";
$(function () {
$("#fileinput-demo-1").fileinput({
'theme': 'explorer-fas',
// 'uploadUrl': "/kylin/banners/upload3",
// 'uploadUrl': "http://127.0.0.1:9003" + "/platform/basicServices/alOss/upload",
'uploadUrl': "https://devplatform.zhengzai.tv/platform/basicServices/alOss/upload",
"uploadExtraData": {
"pathName" : "banner",
"buckType" : 1
},
// overwriteInitial: false,
// initialPreviewAsData: true,
autoReplace: true,
dropZoneTitle: "请上传文件",
maxFileCount: 1
});
$("#fileinput-demo-1").on("fileuploaded", function (event, data, previewId, index) {
window.localStorage.setItem('vipLast', data.response.data.ossPath);
});
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('会员码列表')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="data-form">
<div class="select-list">
<ul>
<input type="text" name="memberId" hidden="hidden" th:value="${memberId}" readonly/>
<li>
状态:<select name="state" th:with="type=${@dict.getType('zhengzai_coupon_code_state')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-primary multiple disabled" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid">
<i class="fa fa-edit"></i> 批量失效
</a>
<a class="btn btn-danger multiple disabled" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover">
<i class="fa fa-remove"></i> 批量退回
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var invalidFlag = [[${@permission.hasPermi('candy:coupon:code:invalid')}]];
var recoverFlag = [[${@permission.hasPermi('candy:coupon:code:recover')}]];
var datas = [[${@dict.getType('zhengzai_coupon_code_state')}]];
var memberId = [[${memberId}]];
var prefix = ctx + "adam/member";
$(function() {
var options = {
url: prefix + "/list_code",
exportUrl: prefix + "/export_code",
detailUrl: ctx + "adam/order/orderList/detail/{id}",
sortName: "code",
sortOrder: "asc",
modalName: "数据",
columns: [{
checkbox: true
},
{
field: 'code',
title: '代金码'
},
{
field: 'expireAt',
title: '到期时间'
},
{
field: 'useAt',
title: '使用时间'
},
{
field: 'useOrderNo',
title: '兑换订单号',
formatter: function(value, row, index) {
var actions = [];
if ($.common.isEmpty(value)) {
actions.push('<a href="javascript:void(0)">-</a>');
} else {
actions.push('<a href="javascript:void(0)" onclick="$.operate.detailTab(\'' + value + '\')">' + value + '</a>');
}
return actions.join('');
}
},
{
field: 'state',
title: '状态',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(datas, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
if (row.state === 0) {
actions.push('<a class="btn btn-primary btn-xs ' + (invalidFlag && row.state===0) + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.code + '\')"><i class="fa fa-edit"></i>失效</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + (recoverFlag && row.state==0) + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.code + '\')"><i class="fa fa-remove"></i>退回</a>');
}
return actions.join('');
}
}]
};
$.table.init(options);
});
function resetPre() {
$.form.reset();
}
function invalidHandler(code) {
let invalidCodeUrl = prefix + '/invalid_code';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(invalidCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(invalidCodeUrl, '失效', data);
}
}
function recoverHandler(code) {
let recoverCodeUrl = prefix + '/recover_code';
if (code !== null && code !== undefined) {
var data = {"memberId": memberId,"codes": code};
$.operate.submit(recoverCodeUrl, "post", "json", data);
} else {
var rows = $.common.isEmpty(table.options.uniqueId) ? $.table.selectFirstColumns() : $.table.selectColumns(table.options.uniqueId);
var data = {"memberId": memberId, "codes": rows.join()};
$.operate.batchProcessing(recoverCodeUrl, '失效', data);
}
}
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('会员卡列表')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var editFlag = [[${@permission.hasPermi('adam:member:view:edit')}]];
var prefix = ctx + "adam/member";
$(function() {
var options = {
url: prefix + "/list",
updateUrl: prefix + "/info/{id}",
sortName: "memberId",
sortOrder: "asc",
modalName: "设置",
columns: [{
checkbox: true
},
{
field: 'memberId',
title: '会员卡ID'
},
{
field: 'icon',
title: 'ICON',
formatter: function (value, row, index) {
var actions = [];
actions.push($.common.sprintf("<img class='img-circle img-xs' src='%s' />", value));
return actions;
}
},
{
field: 'title',
title: '会员卡标题',
align: 'center',
},
{
field: 'subTitle',
title: '会员卡说明',
},
{
field: 'onsale',
title: '开售状态',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
var listClass = "badge badge-" + (value === 1 ? 'primary' : 'danger');
actions.push($.common.sprintf("<span class='%s'>%s</span>", listClass, value === 1 ? '开售' : '停售'));
return actions;
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="memberCodeList(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>兑换码列表</a> ');
return actions.join('');
}
}]
};
$.table.init(options);
});
/* 查看码列表 */
function memberCodeList(memberId) {
$.modal.openTab("会员码列表", 'adam/member/code/' + memberId);
}
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('请上传banner')"/>
<th:block th:include="include :: bootstrap-fileinput-css"/>
</head>
<body class="white-bg">
<th:block th:include="include :: footer"/>
<th:block th:include="include :: bootstrap-fileinput-js"/>
<th:block th:include="include :: bootstrap-fileinput-css" />
<script type="text/javascript">
$(function () {
$("#fileinput-demo-1").fileinput({
'theme': 'explorer-fas',
// 'uploadUrl': "/kylin/banners/upload3",
// 'uploadUrl': "http://127.0.0.1:9003" + "/platform/basicServices/alOss/upload",
'uploadUrl': platformUrl + "/platform/basicServices/alOss/upload",
"uploadExtraData": {
"pathName" : "banner",
"buckType" : 1
},
// overwriteInitial: false,
// initialPreviewAsData: true,
autoReplace: true,
dropZoneTitle: "请上传文件",
maxFileCount: 1
});
})
</script>
</body>
</html>
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('【请填写功能名称】列表')" /> <th:block th:include="include :: header('会员订单列表')" />
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
...@@ -90,17 +90,19 @@ ...@@ -90,17 +90,19 @@
var options = { var options = {
url: prefix + "/list", url: prefix + "/list",
createUrl: prefix + "/add", createUrl: prefix + "/add",
updateUrl: prefix + "/edit/{id}",
removeUrl: prefix + "/remove",
exportUrl: prefix + "/export",
detailUrl: prefix + "/detail/{id}", detailUrl: prefix + "/detail/{id}",
modalName: "【请填写功能名称】", modalName: "会员订单",
columns: [{ columns: [{
checkbox: true checkbox: true,
}, },
{ {
field: 'orderNo', field: 'orderNo',
title: '订单号' title: '订单号',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.orderNo + '\')">' + value + '</a>');
return actions.join('');
}
}, },
{ {
field: 'state', field: 'state',
...@@ -111,10 +113,13 @@ ...@@ -111,10 +113,13 @@
}, },
{ {
field: 'payType', field: 'payType',
title: '支付方式' title: '支付方式',
formatter: function (value) {
return '<span class="nav-label">' + value.toLocaleUpperCase() + '</span>';
}
}, },
{ {
field: 'price', field: 'pricePaid',
title: '价格(元)' title: '价格(元)'
}, },
{ {
...@@ -127,7 +132,7 @@ ...@@ -127,7 +132,7 @@
{ {
field: 'createdAt', field: 'createdAt',
title: '创建时间' title: '创建时间'
}, },+
{ {
field: 'uid', field: 'uid',
title: '用户ID' title: '用户ID'
...@@ -149,7 +154,7 @@ ...@@ -149,7 +154,7 @@
align: 'center', align: 'center',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; var actions = [];
actions.push('<a class="btn btn-warning btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detail(\'' + row.orderNo + '\')"><i class="fa fa-search"></i>详细</a>'); actions.push('<a class="btn btn-warning btn-xs ' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.orderNo + '\')"><i class="fa fa-search"></i>查看详情</a>');
return actions.join(''); return actions.join('');
} }
}] }]
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('代金码列表')" />
<th:block th:include="include :: select2-css" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 search-collapse">
<form id="data-form">
<div class="select-list">
<ul>
<input type="text" name="couponId" hidden="hidden" th:value="${couponId}" readonly/>
<li>
状态:<select name="state" th:with="type=${@dict.getType('zhengzai_coupon_code_state')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
<a class="btn btn-warning btn-rounded btn-sm" onclick="resetPre()"><i class="fa fa-refresh"></i>&nbsp;重置</a>
</li>
</ul>
</div>
</form>
</div>
<div class="btn-group-sm" id="toolbar" role="group">
<a class="btn btn-warning" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-primary multiple disabled" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid">
<i class="fa fa-edit"></i> 批量失效
</a>
<a class="btn btn-danger multiple disabled" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover">
<i class="fa fa-remove"></i> 批量退回
</a>
</div>
<div class="col-sm-12 select-table table-striped">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var invalidFlag = [[${@permission.hasPermi('candy:coupon:code:invalid')}]];
var recoverFlag = [[${@permission.hasPermi('candy:coupon:code:recover')}]];
var datas = [[${@dict.getType('zhengzai_coupon_code_state')}]];
var couponId = [[${couponId}]];
var prefix = ctx + "candy/coupon/code";
$(function() {
var options = {
url: prefix + "/list",
exportUrl: prefix + "/export",
queryParams: queryParams,
sortName: "ccode",
sortOrder: "asc",
modalName: "数据",
columns: [{
checkbox: true
},
{
field: 'ccode',
title: '代金码'
},
{
field: 'redeemMobile',
title: '用户手机号',
formatter: function(value, row, index) {
var listClass = $.common.equals("default", row.listClass) || $.common.isEmpty(row.listClass) ? "" : "badge badge-" + row.listClass;
return $.common.sprintf("<span class='%s'>%s</span>", listClass, value);
}
},
{
field: 'state',
title: '状态',
align: 'center',
formatter: function(value, row, index) {
return $.table.selectDictLabel(datas, value);
}
},
{
title: '操作',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-primary btn-xs ' + invalidFlag + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.ccode + '\')"><i class="fa fa-edit"></i>失效</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + recoverFlag + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.ccode + '\')"><i class="fa fa-remove"></i>退回</a>');
return actions.join('');
}
}]
};
$.table.init(options);
});
function resetPre() {
$.form.reset();
}
function queryParams(params) {
var search = $.table.queryParams(params);
search.dictType = $("#dictType").val();
return search;
}
function invalidHandler(ccode) {
if (ccode !== null && ccode !== undefined) {
var data = {"couponId":couponId,"ccodes": ccode};
$.operate.submit('code/invalid', "post", "json", data);
} else {
$.operate.batchProcessingForCouponCode(couponId, 1);
}
}
function recoverHandler(ccode) {
if (ccode !== null && ccode !== undefined) {
var data = {"couponId":couponId,"ccodes": ccode};
$.operate.submit('code/recover', "post", "json", data);
} else {
$.operate.batchProcessingForCouponCode(couponId, 2);
}
}
</script>
</body>
</html>
\ No newline at end of file
...@@ -187,9 +187,9 @@ ...@@ -187,9 +187,9 @@
function changeInfo(changeBtn) { function changeInfo(changeBtn) {
var tr = $(changeBtn).parent().parent();//tr对象 var tr = $(changeBtn).parent().parent();//tr对象
tr.find('td').each(function (i, td) { tr.find('td').each(function (i, td) {
if ($(td).find("input").attr("name") == "priceDiscountMember") {//过滤修改列 // if ($(td).find("input").attr("name") == "priceDiscountMember") {//过滤修改列
$(td).find("input").removeAttr("readonly") // $(td).find("input").removeAttr("readonly")
} // }
if ($(td).find("input").attr("name") == "memberLimitCount") {//过滤修改列 if ($(td).find("input").attr("name") == "memberLimitCount") {//过滤修改列
$(td).find("input").removeAttr("readonly") $(td).find("input").removeAttr("readonly")
} }
......
package com.liquidnet.client.admin.zhengzai.adam.service; package com.liquidnet.client.admin.zhengzai.adam.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam; import com.liquidnet.service.adam.dto.admin.AdamMemberPriceBuildParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice; import com.liquidnet.service.adam.entity.AdamMemberPrice;
public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> { public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> {
AdamMemberPriceVo add(AdamMemberPrice info);
boolean edit(AdamMemberPriceParam param); boolean edit(AdamMemberPriceBuildParam param);
} }
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment