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

Commit c7ccb199 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/jxl_1201_jifenDraw' into jxl_1201_jifenDraw

parents d3b428fb 18187100
drop table if exists bi_ticket_access_records;
create table dev_ln_scene.bi_ticket_access_records
(
mid bigint unsigned auto_increment
primary key,
user_id varchar(64) not null comment '用户id',
access_type varchar(30) null comment '访问类型: 详情页now_tk_detail,票种页now_tk_ticket,下单页now_tk_order,支付操作now_tk_pay',
performance_id varchar(100) null comment '演出id',
order_id varchar(100) null comment '订单id',
order_code varchar(64) null comment '订单编号',
ip_address varchar(100) null comment '操作ip',
area varchar(200) null comment 'ip全名称',
area_province varchar(100) null comment 'ip名称省',
area_city varchar(100) null comment 'ip名称市',
area_county varchar(100) null comment 'ip名称县',
created_at timestamp default CURRENT_TIMESTAMP not null
);
alter table kylin_order_tickets add area varchar(200) null comment 'ip地域全名称';
alter table kylin_order_tickets add area_province varchar(100) null comment 'ip地域省';
alter table kylin_order_tickets add area_city varchar(100) null comment 'ip地域市';
alter table kylin_order_tickets add area_county varchar(100) null comment 'ip地域县';
...@@ -26,6 +26,7 @@ public class AdamRedisConst { ...@@ -26,6 +26,7 @@ public class AdamRedisConst {
*/ */
public static final String INFO_CERTIFICATION_JUNK = PREFIX.concat("info:certification_junk:"); public static final String INFO_CERTIFICATION_JUNK = PREFIX.concat("info:certification_junk:");
public static final String INFO_MEMBER_JOINUS = PREFIX.concat("info:member:joinus:");
public static final String INFO_MEMBER_SIMPLE = PREFIX.concat("info:member:simple"); 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_CATEGORY = PREFIX.concat("info:member:category:");
public static final String INFO_MEMBER_PRICE = PREFIX.concat("info:member:price:"); public static final String INFO_MEMBER_PRICE = PREFIX.concat("info:member:price:");
...@@ -55,6 +56,8 @@ public class AdamRedisConst { ...@@ -55,6 +56,8 @@ public class AdamRedisConst {
public static final String SWITCH_BUY_MEMBER = PREFIX.concat("switch:buy:member"); public static final String SWITCH_BUY_MEMBER = PREFIX.concat("switch:buy:member");
public static final String SERIAL_NUMBER_MEMBER = PREFIX.concat("serial_no:");
/* ----------------------------------------------------------------- */ /* ----------------------------------------------------------------- */
// public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member:no"; // public static final String LOCK_KEY_UMEMBER_NO = "adam:lk:member:no";
......
package com.liquidnet.service.adam.dto.vo; package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据") @ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据")
public class AdamLoginInfoVo implements Serializable, Cloneable { public class AdamLoginInfoVo implements Serializable, Cloneable {
......
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "AdamMemberJoinusVo", description = "领取的会员卡详情")
@Data
public class AdamMemberJoinusVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -2346451755376200201L;
@ApiModelProperty(position = 10, value = "")
private String qrCode;
@ApiModelProperty(position = 11, value = "标题[50]", example = "摩登天空会员卡")
private String title;
@ApiModelProperty(position = 12, value = "副标题[50]", example = "摩登天空专属会员卡")
private String subTitle;
@ApiModelProperty(position = 13, value = "卡面[200]", example = "https://img.zhengzai.tv/member_card/member1.png")
private String cardface;
@ApiModelProperty(position = 14, value = "卡类型[0-非会员|10-普通会员|50-VIP会员]", example = "0")
private Integer type;
@ApiModelProperty(position = 15, value = "卡状态[0-未领取|1-已领取]", example = "0")
private Integer state;
@ApiModelProperty(position = 16, value = "权益详情[200]", example = "加入摩登天空会员您可享受到.....")
private String interestsDetail;
private static final AdamMemberJoinusVo obj = new AdamMemberJoinusVo();
public static AdamMemberJoinusVo getNew() {
try {
return (AdamMemberJoinusVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberJoinusVo();
}
}
}
...@@ -31,6 +31,8 @@ public class AdamMemberRightsCouponVo implements java.io.Serializable, Cloneable ...@@ -31,6 +31,8 @@ public class AdamMemberRightsCouponVo implements java.io.Serializable, Cloneable
private BigDecimal valOver; private BigDecimal valOver;
@ApiModelProperty(position = 10, value = "满减~减") @ApiModelProperty(position = 10, value = "满减~减")
private BigDecimal valMinus; private BigDecimal valMinus;
@ApiModelProperty(position = 11, value = "折扣[8折即0.8]")
private BigDecimal discount;
/* com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponRuleVo */ /* com.liquidnet.service.adam.dto.vo.AdamMemberRightsCouponRuleVo */
private List<AdamMemberRightsCouponRuleVo> useRules; private List<AdamMemberRightsCouponRuleVo> useRules;
......
...@@ -120,13 +120,12 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable { ...@@ -120,13 +120,12 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
try { try {
return (AdamMemberVo) obj.clone(); return (AdamMemberVo) obj.clone();
} catch (CloneNotSupportedException e) { } catch (CloneNotSupportedException e) {
e.printStackTrace(); return new AdamMemberVo();
} }
return new AdamMemberVo();
} }
public AdamMemberVo copy(AdamMember source) { public AdamMemberVo copy(AdamMember source) {
if (null == this) return this; if (null == source) return this;
this.setMemberId(source.getMemberId()); this.setMemberId(source.getMemberId());
this.setName(source.getName()); this.setName(source.getName());
this.setTitle(source.getTitle()); this.setTitle(source.getTitle());
......
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel(value = "AdamUserProfileVo", description = "个人信息响应数据")
@Data
public class AdamUserProfileVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 3782062486028972984L;
@ApiModelProperty(position = 11, value = "用户信息")
private AdamUserInfoVo userInfo;
@ApiModelProperty(position = 12, value = "实名信息")
private AdamRealInfoVo realNameInfo;
@ApiModelProperty(position = 13, value = "用户第三方账号信息")
private List<AdamThirdPartInfoVo> thirdPartInfo;
@ApiModelProperty(position = 14, value = "会员信息")
private AdamMemberSimpleVo memberVo;
@ApiModelProperty(position = 15, value = "用户会员信息")
private AdamUserMemberVo userMemberVo;
@ApiModelProperty(position = 16, value = "会员卡信息")
private AdamMemberJoinusVo memberJoinusVo;
private static final AdamUserProfileVo obj = new AdamUserProfileVo();
public static AdamUserProfileVo getNew() {
try {
return (AdamUserProfileVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamUserProfileVo();
}
}
}
...@@ -41,7 +41,7 @@ public class CandyMemberCouponBuildParam { ...@@ -41,7 +41,7 @@ public class CandyMemberCouponBuildParam {
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|101-优先券]", allowableValues = "1,2,101") @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|101-优先券]", allowableValues = "1,2,101")
private Integer couType; private Integer couType;
// @NotNull(message = "券领取方式不能为空") // @NotNull(message = "券领取方式不能为空")
// @ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换]", allowableValues = "0,1") // @ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]", allowableValues = "0,1,2,3,4")
// private Integer bindType; // private Integer bindType;
// @ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8") // @ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8")
// private BigDecimal discount; // private BigDecimal discount;
......
package com.liquidnet.service.candy.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;
@ApiModel(value = "CandyMemberCouponMatchParam", description = "会员权益券配置入参")
@Data
public class CandyMemberCouponMatchParam {
@ApiModelProperty(required = true, value = "会员类型ID[64]", example = "1")
@NotBlank(message = "会员类型ID不能为空")
private String memberId;
@ApiModelProperty(required = true, value = "权益ID[64]", example = "21269184646476")
@NotBlank(message = "会员权益ID不能为空")
private String mrightsId;
@NotBlank(message = "权益券ID不能为空")
@ApiModelProperty(required = true, value = "券ID", example = "20211111161557612")
private String couponId;
@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-满减券|4-折扣券|101-优先券]", allowableValues = "1,2,4,101")
private Integer couType;
@NotNull(message = "券发放量不能为空")
@Max(value = 100, message = "发放量不满足1~100范围")
@Min(value = 1, message = "发放量不满足1~100范围")
@ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt;
@ApiModelProperty(required = true, value = "权益券操作类型[1-添加|2-删除|3-编辑]")
@NotNull(message = "操作类型不能为空")
private Integer oper;
@ApiModelProperty(required = false, value = "券ID(仅`state=3-编辑`时必填`)")
private String operCouponId;
}
...@@ -25,10 +25,10 @@ public class CandyMgtCouponBuildParam { ...@@ -25,10 +25,10 @@ public class CandyMgtCouponBuildParam {
@ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3") @ApiModelProperty(required = true, value = "业务类别[0-全场|1-演出|2-商品|3-优先购]", allowableValues = "0,1,2,3")
private Integer busiType; private Integer busiType;
@NotNull(message = "券类型不能为空") @NotNull(message = "券类型不能为空")
@ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]", allowableValues = "1,2,3,4,101") @ApiModelProperty(required = true, value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券101-优先券]", allowableValues = "1,2,3,4,101")
private Integer couType; private Integer couType;
@NotNull(message = "券领取方式不能为空") @NotNull(message = "券领取方式不能为空")
@ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换]", allowableValues = "0,1,2") @ApiModelProperty(required = true, value = "领取方式[0-用户输入兑换|1-发放至用户|2-积分商品|3-发送需领取|4-会员专属]", allowableValues = "0,1,2,3,4")
private Integer bindType; private Integer bindType;
@ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8") @ApiModelProperty(required = false, value = "折扣[8折即0.8]", example = "0.8")
private BigDecimal discount; private BigDecimal discount;
...@@ -72,7 +72,7 @@ public class CandyMgtCouponBuildParam { ...@@ -72,7 +72,7 @@ public class CandyMgtCouponBuildParam {
@Min(value = 1, message = "发放量不能小于1") @Min(value = 1, message = "发放量不能小于1")
@ApiModelProperty(required = true, value = "发放量", example = "1") @ApiModelProperty(required = true, value = "发放量", example = "1")
private Integer eventAmt; private Integer eventAmt;
@ApiModelProperty(required = false, value = "发放类型[0-保留|1-会员|2-手机号|10-全体用户]", allowableValues = "0,1,2,10") @ApiModelProperty(required = false, value = "发放类型[0-保留|1-会员|2-手机号10-全体用户]", allowableValues = "0,1,2,10")
private Integer eventType; private Integer eventType;
@ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "18510957291,17701223310") @ApiModelProperty(required = false, value = "`发放类型`为2-手机号时发放手机号以,分隔", example = "18510957291,17701223310")
private String eventLimit; private String eventLimit;
......
package com.liquidnet.service.candy.vo;
import com.liquidnet.service.candy.dto.CandyCouponInfoDto;
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 CandyCouponBasicVo implements Serializable, Cloneable {
/* --- --- --- CandyCoupon */
@ApiModelProperty(value = "标题")
private String title;
@ApiModelProperty(value = "标注")
private String label;
@ApiModelProperty(value = "须知")
private String notice;
@ApiModelProperty(value = "业务类别[0-全场|1-演出|2-商品|3-优先购]")
private Integer busiType;
@ApiModelProperty(value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券 | 101-优先券]")
private Integer couType;
@ApiModelProperty(value = "[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]")
private Integer bindType;
@ApiModelProperty(value = "折扣")
private BigDecimal discount;
@ApiModelProperty(value = "面值")
private BigDecimal valFace;
@ApiModelProperty(value = "满减~满")
private BigDecimal valOver;
@ApiModelProperty(value = "满减~减")
private BigDecimal valMinus;
@ApiModelProperty(value = "过期时间")
private String expireAt;
/* --- --- --- CandyCouponRule */
private List<CandyCouponRulesVo> useRules;
private static final CandyCouponBasicVo obj = new CandyCouponBasicVo();
public static CandyCouponBasicVo getNew() {
try {
return (CandyCouponBasicVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new CandyCouponBasicVo();
}
}
public CandyCouponBasicVo copy(CandyCouponInfoDto source) {
if (null == source) return this;
return this;
}
}
...@@ -29,7 +29,7 @@ public class CandyCouponVo implements Serializable, Cloneable { ...@@ -29,7 +29,7 @@ public class CandyCouponVo implements Serializable, Cloneable {
private Integer busiType; private Integer busiType;
@ApiModelProperty(value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券 | 101-优先券]",example = "1") @ApiModelProperty(value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券 | 101-优先券]",example = "1")
private Integer couType; private Integer couType;
@ApiModelProperty(value = "[0-用户输入兑换|1-发放至用户]",example = "1") @ApiModelProperty(value = "[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]",example = "1")
private Integer bindType; private Integer bindType;
@ApiModelProperty(value = "折扣 可null",example = "0.5") @ApiModelProperty(value = "折扣 可null",example = "0.5")
private BigDecimal discount; private BigDecimal discount;
......
...@@ -60,6 +60,7 @@ public class KylinRedisConst { ...@@ -60,6 +60,7 @@ public class KylinRedisConst {
public static final String ADMIN_UPUSH_LIST_IOS = "basicServices:upushList:IOS"; public static final String ADMIN_UPUSH_LIST_IOS = "basicServices:upushList:IOS";
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_UPUSH_LIST_READ_UID = "basicServices:upushList:read:uid";
public static final String ADMIN_BANNER_LIST = "kylin:bannerList"; public static final String ADMIN_BANNER_LIST = "kylin:bannerList";
} }
...@@ -85,4 +85,28 @@ public class KylinTableStatusConst { ...@@ -85,4 +85,28 @@ public class KylinTableStatusConst {
public static final Integer ORDER_EXPRESS_STATUS8000 = 8000; // 签收结单 public static final Integer ORDER_EXPRESS_STATUS8000 = 8000; // 签收结单
public static final Integer ORDER_EXPRESS_SEND_TYPE1 = 1; // 发货 public static final Integer ORDER_EXPRESS_SEND_TYPE1 = 1; // 发货
public static final Integer ORDER_EXPRESS_SEND_TYPE2 = 2; // 退款 public static final Integer ORDER_EXPRESS_SEND_TYPE2 = 2; // 退款
public enum PvUv {
TK_DETAILS("now_tk_detail", "详情页"),
TK_TICKET("now_tk_ticket", "票种页"),
TK_ORDER("now_tk_order", "预下单页"),
TK_PAY("now_tk_pay", "支付操作");
private final String key;
private final String desc;
PvUv(String key, String desc) {
this.key = key;
this.desc = desc;
}
public String getKey() {
return key;
}
public String getDesc() {
return desc;
}
}
} }
package com.liquidnet.service.kylin.dto.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: KylinIpArea
* @Package com.liquidnet.service.kylin.dto.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/24 11:57
*/
@Data
@ApiModel
public class KylinIpAreaVo implements Serializable,Cloneable{
@ApiModelProperty(value = "mid")
private String mid;
@ApiModelProperty(value = "ipBegin")
private String ipBegin;
@ApiModelProperty(value = "ipBegin")
private long ipBeginLong;
@ApiModelProperty(value = "ipEnd")
private String ipEnd;
@ApiModelProperty(value = "ipEnd")
private long ipEndLong;
@ApiModelProperty(value = "area")
private String area;
@ApiModelProperty(value = "province")
private String province;
@ApiModelProperty(value = "city")
private String city;
@ApiModelProperty(value = "county")
private String county;
@ApiModelProperty(value = "address")
private String address;
@ApiModelProperty(value = "createdAt")
private String createdAt;
private static final KylinIpAreaVo obj = new KylinIpAreaVo();
public static KylinIpAreaVo getNew() {
try {
return (KylinIpAreaVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinIpAreaVo();
}
}
}
...@@ -76,6 +76,15 @@ public interface IKylinPerformancesAdminService { ...@@ -76,6 +76,15 @@ public interface IKylinPerformancesAdminService {
*/ */
List<PerformanceSimpleAllDao> getListDetailByStatus(String status, String title); List<PerformanceSimpleAllDao> getListDetailByStatus(String status, String title);
/**
* 根据(演出\场次\票种)ID 查询演出、场次、票种信息
*
* @param scope ID所属字段
* @param id ID值
* @return 1条记录(包括演出名称、场次名称?、票种名称?及对于ID)
*/
PerformanceSimpleAllDao getSimpleDetailByScopeAndId(String scope, String id);
/** /**
* 修改演出的巡演关联 * 修改演出的巡演关联
......
...@@ -11,10 +11,12 @@ import java.time.LocalDateTime; ...@@ -11,10 +11,12 @@ import java.time.LocalDateTime;
@ApiModel(value = "StoneItemBuildParam", description = "新建积分物品") @ApiModel(value = "StoneItemBuildParam", description = "新建积分物品")
@Data @Data
public class StoneItemBuildParam { public class StoneItemBuildParam {
@ApiModelProperty(required = false, value = "积分物品id[创建不传]", example = "1") @ApiModelProperty(value = "积分物品id[创建不传]", example = "1")
private String itemId; private String itemId;
@ApiModelProperty(required = true, value = "目标类型[1-券|11-商品维度|21-演出维度]", example = "1")
private Integer type;
@NotBlank(message = "目标物品不能为空") @NotBlank(message = "目标物品不能为空")
@ApiModelProperty(required = true, value = "目标物品id", example = "1") @ApiModelProperty(value = "目标物品id", example = "1")
private String targetId; private String targetId;
@NotBlank(message = "目标物品不能为空") @NotBlank(message = "目标物品不能为空")
@ApiModelProperty(required = true, value = "目标物品标题", example = "测试券1") @ApiModelProperty(required = true, value = "目标物品标题", example = "测试券1")
......
...@@ -37,6 +37,7 @@ public class SweetConstant { ...@@ -37,6 +37,7 @@ public class SweetConstant {
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER_KEY = ":userId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_USER_KEY = ":userId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO = "sweet:integralActivity:DrawInfo:drawId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_DRAW_INFO = "sweet:integralActivity:DrawInfo:drawId:";
public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LOCK = "sweet:integralActivity:lock:userId:"; public static final String REDIS_KEY_SWEET_INTEGRAL_ACTIVITY_LOCK = "sweet:integralActivity:lock:userId:";
public static final String REDIS_KEY_SWEET_LUCKY_DRAW_NUM = "sweet:integralActivity:luckyDrawNum:activityId:";
// 答题活动 // 答题活动
public final static String REDIS_KEY_SWEET_ANSWER_PHONE = "sweet:answer:phone:"; public final static String REDIS_KEY_SWEET_ANSWER_PHONE = "sweet:answer:phone:";
// 城市投票活动 // 城市投票活动
...@@ -45,20 +46,21 @@ public class SweetConstant { ...@@ -45,20 +46,21 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_CITY_VOTE = "sweet:cityVote"; public final static String REDIS_KEY_SWEET_CITY_VOTE = "sweet:cityVote";
public final static String REDIS_KEY_SWEET_CITY_VOTE_USER = ":user:"; public final static String REDIS_KEY_SWEET_CITY_VOTE_USER = ":user:";
public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME = ":updateTime"; public final static String REDIS_KEY_SWEET_CITY_VOTE_STAT_UPDATE_TIME = ":updateTime";
// 微信用户相关 public final static String REDIS_KEY_SWEET_CITY_VOTE_START = "sweet:cityVote:startTime:";//活动开始时间
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO = "sweet:wechatUser:zhengzai:unionId:"; public final static String REDIS_KEY_SWEET_CITY_VOTE_END = "sweet:cityVote:endTime:";//活动结束时间
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_MODERNSKY = "sweet:wechatUser:modernsky:unionId:"; public final static String REDIS_KEY_SWEET_CITY_VOTE_BANNER = "sweet:cityVote:banner:";//活动banner
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID = "sweet:wechatUser:zhengzai:openId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_MODERNSKY = "sweet:wechatUser:modernsky:openId:"; // 2021草莓音乐节海报活动活动
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_PHONE = "sweet:wechatUser:zhengzai:phone:"; public static final String REDIS_KEY_SWEET_STRAWBERRY_POSTER_CLICK = "sweet:strawberryPoster:click:openId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_PHONE_MODERNSKY = "sweet:wechatUser:modernsky:phone:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID = "sweet:wechatUser:zhengzai:uid:"; // 微信服务号用户相关
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID_MODERNSKY = "sweet:wechatUser:modernsky:uid:";
// 微信服务号用户相关 新
public final static String REDIS_KEY_SWEET_WECHAT_USERS_UNIONID = "sweet:user:service:unionId:"; public final static String REDIS_KEY_SWEET_WECHAT_USERS_UNIONID = "sweet:user:service:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USERS_OPENID = "sweet:user:service:openId:"; public final static String REDIS_KEY_SWEET_WECHAT_USERS_OPENID = "sweet:user:service:openId:";
public final static String REDIS_KEY_SWEET_WECHAT_USERS_TYPE = ":type:"; public final static String REDIS_KEY_SWEET_WECHAT_USERS_TYPE = ":type:";
// 微信小程序用户相关 // 微信小程序用户相关
public final static String REDIS_KEY_SWEET_APPLET_USERS_PHONE = "sweet:user:applet:mobile:"; public final static String REDIS_KEY_SWEET_APPLET_USERS_PHONE = "sweet:user:applet:mobile:";
public final static String REDIS_KEY_SWEET_APPLET_USERS_UNIONID = "sweet:user:applet:unionid:"; public final static String REDIS_KEY_SWEET_APPLET_USERS_UNIONID = "sweet:user:applet:unionid:";
//2022草莓音乐节活动海报相关
public final static String REDIS_KEY_SWEET_STRAWBERRY_POSTER = "sweet:strawberry:poster";
} }
/*package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "SweetStrawMusicianParam", description = "音乐人")
@Data
public class SweetStrawListParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 10, required = true, value = "lineupNum", example = "lineupNum")
@NotBlank(message = "lineupNum不能为空")
private List<SweetStrawMusicianParam> lineup;
}*/
package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@ApiModel(value = "SweetStrawMusicianParam", description = "音乐人")
@Data
public class SweetStrawMusicianParam implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(position = 10, required = true, value = "lineupNum", example = "lineupNum")
@NotBlank(message = "lineupNum不能为空")
private String lineupNum;
@ApiModelProperty(position = 10, required = true, value = "musicianName", example = "musicianName")
@NotBlank(message = "musicianName不能为空")
private String[] musicianName;
}
package com.liquidnet.service.sweet.dto.param.poster;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "SweetStrawberryParam", description = "海报数据")
@Data
public class SweetStrawberryParam implements Serializable {
private static final long serialVersionUID = 9038992103808199663L;
@ApiModelProperty(position = 10, required = true, value = "openId", example = "openId")
@NotBlank(message = "openId不能为空")
private String openId;
@ApiModelProperty(position = 10, required = true, value = "unionId", example = "unionId")
@NotBlank(message = "unionId不能为空")
private String unionId;
@ApiModelProperty(position = 10, required = true, value = "nickname", example = "nickname")
@NotBlank(message = "nickname不能为空")
private String nickname;
@ApiModelProperty(position = 10, required = true, value = "cityName", example = "cityName")
@NotBlank(message = "cityName不能为空")
private String cityName;
@ApiModelProperty(position = 10, required = true, value = "cityCode", example = "cityCode")
@NotBlank(message = "cityCode不能为空")
private String cityCode;
@ApiModelProperty(position = 10, required = true, value = "customText", example = "customText")
@NotBlank(message = "customText不能为空")
private String customText;
@Valid
@ApiModelProperty(value = "阵容列表", example = "[{\"lineupNum\": \"lineup1\",\"musicianId\": 9999,\"musicianName\": \"歌手1\"},\n" +
" {\"lineupNum\": \"lineup1\",\"musicianId\": 23233,\"musicianName\": \"歌手D\"},\n" +
" {\"lineupNum\": \"lineup2\",\"musicianId\": 1111,\"musicianName\": \"歌手2\"}]")
@NotNull(message = "musicianList")
private List<SweetStrawMusicianParam> musicianList;
private static final SweetStrawberryParam obj = new SweetStrawberryParam();
public static SweetStrawberryParam getNew() {
try {
return (SweetStrawberryParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetStrawberryParam();
}
}
}
\ No newline at end of file
...@@ -38,6 +38,12 @@ public class IntegralActivityPrizeVo implements Serializable, Cloneable { ...@@ -38,6 +38,12 @@ public class IntegralActivityPrizeVo implements Serializable, Cloneable {
@ApiModelProperty(value = "单次奖励数量如积分 中奖给多少物") @ApiModelProperty(value = "单次奖励数量如积分 中奖给多少物")
private Integer prizeTypeNum; private Integer prizeTypeNum;
@ApiModelProperty(value = "奖品数量")
private Integer prizeNum;
@ApiModelProperty(value = "中奖概率")
private BigDecimal winningProbability;
@ApiModelProperty(value = "创建时间") @ApiModelProperty(value = "创建时间")
private LocalDateTime createdAt; private LocalDateTime createdAt;
...@@ -67,6 +73,8 @@ public class IntegralActivityPrizeVo implements Serializable, Cloneable { ...@@ -67,6 +73,8 @@ public class IntegralActivityPrizeVo implements Serializable, Cloneable {
this.setPrizeImgSelect(source.getPrizeImgSelect()); this.setPrizeImgSelect(source.getPrizeImgSelect());
this.setPrizeType(source.getPrizeType()); this.setPrizeType(source.getPrizeType());
this.setPrizeTypeNum(source.getPrizeTypeNum()); this.setPrizeTypeNum(source.getPrizeTypeNum());
this.setPrizeNum(source.getPrizeNum());
this.setWinningProbability(source.getWinningProbability());
this.setCreatedAt(source.getCreatedAt()); this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt()); this.setUpdatedAt(source.getUpdatedAt());
return this; return this;
......
...@@ -28,6 +28,9 @@ public class IntegralActivityVo implements Serializable, Cloneable { ...@@ -28,6 +28,9 @@ public class IntegralActivityVo implements Serializable, Cloneable {
@ApiModelProperty(value = "活动玩一次所需积分") @ApiModelProperty(value = "活动玩一次所需积分")
private Integer activityNum; private Integer activityNum;
@ApiModelProperty(value = "预估玩此活动的总人数")
private Integer estimatedNum;
@ApiModelProperty(value = "活动时间类型 1长期 2开始结束时间") @ApiModelProperty(value = "活动时间类型 1长期 2开始结束时间")
private Integer timeType; private Integer timeType;
...@@ -58,6 +61,12 @@ public class IntegralActivityVo implements Serializable, Cloneable { ...@@ -58,6 +61,12 @@ public class IntegralActivityVo implements Serializable, Cloneable {
@ApiModelProperty(value = "奖品列表") @ApiModelProperty(value = "奖品列表")
private List<IntegralActivityPrizeVo> prizeList; private List<IntegralActivityPrizeVo> prizeList;
@ApiModelProperty(value = "奖品列表 积分、券")
private List<IntegralActivityPrizeVo> prizeList1;
@ApiModelProperty(value = "奖品列表 实物、会员")
private List<IntegralActivityPrizeVo> prizeList2;
private static final IntegralActivityVo obj = new IntegralActivityVo(); private static final IntegralActivityVo obj = new IntegralActivityVo();
public static IntegralActivityVo getNew() { public static IntegralActivityVo getNew() {
try { try {
...@@ -74,6 +83,7 @@ public class IntegralActivityVo implements Serializable, Cloneable { ...@@ -74,6 +83,7 @@ public class IntegralActivityVo implements Serializable, Cloneable {
this.setActivityImg(source.getActivityImg()); this.setActivityImg(source.getActivityImg());
this.setActivityType(source.getActivityType()); this.setActivityType(source.getActivityType());
this.setActivityNum(source.getActivityNum()); this.setActivityNum(source.getActivityNum());
this.setEstimatedNum(source.getEstimatedNum());
this.setTimeType(source.getTimeType()); this.setTimeType(source.getTimeType());
this.setStartTime(source.getStartTime()); this.setStartTime(source.getStartTime());
this.setEndTime(source.getEndTime()); this.setEndTime(source.getEndTime());
......
package com.liquidnet.service.sweet.dto.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class TempBannerVo implements Serializable, Cloneable {
private static final long serialVersionUID = -6777064807434774542L;
@ApiModelProperty(value = "banner图片")
private String src;
@ApiModelProperty(value = "banner链接")
private String url;
}
package com.liquidnet.service.sweet.param;
import com.liquidnet.service.sweet.dto.vo.TempBannerVo;
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;
import java.util.List;
@ApiModel(value = "SweetCityVoteParam", description = "用户投票记录入参")
@Data
public class TempBannerParam implements Serializable {
@ApiModelProperty(position = 13, required = true, value = "临时banner数据")
@NotBlank(message = "tempBannerVo不能为空")
private List<TempBannerVo> tempBannerVo;
@ApiModelProperty(position = 14, required = true, value = "活动类型 1新裤子 2莫宰羊", example = "1")
@NotNull(message = "type不能为空")
private Integer type;
}
...@@ -3,7 +3,7 @@ package com.liquidnet.service.sweet.service; ...@@ -3,7 +3,7 @@ package com.liquidnet.service.sweet.service;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo; import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo; import com.liquidnet.service.sweet.dto.vo.IntegralActivityPrizeVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw; import com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
...@@ -19,7 +19,7 @@ import java.util.List; ...@@ -19,7 +19,7 @@ import java.util.List;
*/ */
public interface ISweetIntegralActivityDrawService extends IService<SweetIntegralActivityDraw> { public interface ISweetIntegralActivityDrawService extends IService<SweetIntegralActivityDraw> {
ResponseDto<SweetIntegralActivityPrizeVo> create(String integralActivityId); ResponseDto<IntegralActivityPrizeVo> create(String integralActivityId);
ResponseDto<PagedResult<IntegralActivityDrawVo>> drawList(Integer type, String integralActivityId, Integer pageNum); ResponseDto<PagedResult<IntegralActivityDrawVo>> drawList(Integer type, String integralActivityId, Integer pageNum);
......
package com.liquidnet.service.sweet.service;
import com.liquidnet.service.sweet.entity.SweetStrawberryPosterLineup;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 2021草莓音乐节海报活动选择阵容表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-11-25
*/
public interface ISweetStrawberryPosterLineupService extends IService<SweetStrawberryPosterLineup> {
}
package com.liquidnet.service.sweet.service;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.param.poster.SweetStrawberryParam;
import com.liquidnet.service.sweet.entity.SweetStrawberryPoster;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 2021草莓音乐节海报活动表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-11-25
*/
public interface ISweetStrawberryPosterService extends IService<SweetStrawberryPoster> {
ResponseDto<Boolean> addUserLikeMusician(SweetStrawberryParam sweetStrawberry);
}
...@@ -2,8 +2,8 @@ package com.liquidnet.service.sweet.utils; ...@@ -2,8 +2,8 @@ package com.liquidnet.service.sweet.utils;
import com.liquidnet.service.base.PagedResult; import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo; import com.liquidnet.service.sweet.dto.vo.IntegralActivityDrawVo;
import com.liquidnet.service.sweet.dto.vo.IntegralActivityPrizeVo;
import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo; import com.liquidnet.service.sweet.dto.vo.admin.SweetIntegralActivityPrizeVo;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityDraw;
import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize; import com.liquidnet.service.sweet.entity.SweetIntegralActivityPrize;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -11,6 +11,7 @@ import java.util.LinkedList; ...@@ -11,6 +11,7 @@ import java.util.LinkedList;
public class SweetNewObjectUtil { public class SweetNewObjectUtil {
private static final ArrayList<SweetIntegralActivityPrizeVo> sweetIntegralActivityPrizeVoArrayList = new ArrayList<>(); private static final ArrayList<SweetIntegralActivityPrizeVo> sweetIntegralActivityPrizeVoArrayList = new ArrayList<>();
private static final ArrayList<IntegralActivityPrizeVo> integralActivityPrizeVoArrayList = new ArrayList<>();
private static final ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = new ArrayList<>(); private static final ArrayList<SweetIntegralActivityPrize> sweetIntegralActivityPrizeArrayList = new ArrayList<>();
private static final LinkedList<IntegralActivityDrawVo> sweetIntegralActivityDrawVoLinkedList = new LinkedList<>(); private static final LinkedList<IntegralActivityDrawVo> sweetIntegralActivityDrawVoLinkedList = new LinkedList<>();
private static final PagedResult<IntegralActivityDrawVo> sweetIntegralActivityDrawVoPagedResult = new PagedResult<>(); private static final PagedResult<IntegralActivityDrawVo> sweetIntegralActivityDrawVoPagedResult = new PagedResult<>();
...@@ -31,4 +32,8 @@ public class SweetNewObjectUtil { ...@@ -31,4 +32,8 @@ public class SweetNewObjectUtil {
return (ArrayList<SweetIntegralActivityPrize>) sweetIntegralActivityPrizeArrayList.clone(); return (ArrayList<SweetIntegralActivityPrize>) sweetIntegralActivityPrizeArrayList.clone();
} }
public static ArrayList<IntegralActivityPrizeVo> getIntegralActivityPrizeVoArrayList() {
return (ArrayList<IntegralActivityPrizeVo>) integralActivityPrizeVoArrayList.clone();
}
} }
...@@ -43,6 +43,9 @@ public class SweetCItyVoteStatVo implements Serializable, Cloneable { ...@@ -43,6 +43,9 @@ public class SweetCItyVoteStatVo implements Serializable, Cloneable {
@ApiModelProperty("名次变动状态 1未变化 2上升 3下降") @ApiModelProperty("名次变动状态 1未变化 2上升 3下降")
private Integer rankingUpOrDown; private Integer rankingUpOrDown;
// @ApiModelProperty("状态[0-未开始|1-进行中|2-已结束]")
// private Integer status;
/*@ApiModelProperty("创建时间") /*@ApiModelProperty("创建时间")
private LocalDateTime createdAt; private LocalDateTime createdAt;
...@@ -50,6 +53,7 @@ public class SweetCItyVoteStatVo implements Serializable, Cloneable { ...@@ -50,6 +53,7 @@ public class SweetCItyVoteStatVo implements Serializable, Cloneable {
private LocalDateTime updatedAt;*/ private LocalDateTime updatedAt;*/
private static final SweetCItyVoteStatVo obj = new SweetCItyVoteStatVo(); private static final SweetCItyVoteStatVo obj = new SweetCItyVoteStatVo();
public static SweetCItyVoteStatVo getNew() { public static SweetCItyVoteStatVo getNew() {
try { try {
return (SweetCItyVoteStatVo) obj.clone(); return (SweetCItyVoteStatVo) obj.clone();
......
...@@ -56,10 +56,13 @@ public class BaseController ...@@ -56,10 +56,13 @@ public class BaseController
PageDomain pageDomain = TableSupport.buildPageRequest(); PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum(); Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize(); Integer pageSize = pageDomain.getPageSize();
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
{ {
String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy()); // String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
PageHelper.startPage(pageNum, pageSize, orderBy); PageHelper.startPage(pageNum, pageSize, orderBy);
} else {
PageHelper.startPage(1, 10, orderBy);
} }
} }
......
package com.liquidnet.client.admin.web.controller.zhengzai.candy; package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.baomidou.mybatisplus.core.toolkit.Wrappers;
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.zhengzai.candy.service.ICandyCouponAdminService; import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponRuleAdminService;
import com.liquidnet.service.candy.dto.admin.CandyCouponFilterDto;
import com.liquidnet.service.candy.dto.admin.CandyCouponListParam; import com.liquidnet.service.candy.dto.admin.CandyCouponListParam;
import com.liquidnet.service.candy.dto.admin.CandyCouponTemplateDto;
import com.liquidnet.service.candy.entity.CandyCoupon; import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRule;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
@Api(tags = "我的券包")
@Controller @Controller
@RequestMapping("candy/coupon") @RequestMapping("candy/coupon")
public class CandyCouponAdminController extends BaseController { public class CandyCouponAdminController extends BaseController {
@Autowired @Autowired
ICandyCouponAdminService candyCouponAdminService; ICandyCouponAdminService candyCouponAdminService;
@Autowired
ICandyCouponRuleAdminService candyCouponRuleAdminService;
@ApiOperation(value = "券列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = false, dataType = "Integer", name = "busiType", value = "业务类别[0-全场|1-演出|2-商品|3-优先购]"),
@ApiImplicitParam(type = "form", required = false, dataType = "Integer", name = "couType", value = "券类型[1-代金券|2-满减券|3-兑换券|4-折扣券|101-优先券]"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "bindType", value = "领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属],多种方式则以,分隔入参"),
@ApiImplicitParam(type = "form", required = false, dataType = "String", name = "keyword", value = "搜索关键字"),
})
@PostMapping("list") @PostMapping("list")
@ResponseBody @ResponseBody
public TableDataInfo list(CandyCouponListParam listParam) { public TableDataInfo list(CandyCouponListParam listParam) {
LambdaQueryWrapper<CandyCoupon> queryWrapper = Wrappers.lambdaQuery(CandyCoupon.class); LambdaQueryWrapper<CandyCoupon> queryWrapper = Wrappers.lambdaQuery(CandyCoupon.class);
queryWrapper.eq(CandyCoupon::getState, 1);
queryWrapper.select(CandyCoupon::getCouponId, CandyCoupon::getTitle); queryWrapper.select(CandyCoupon::getCouponId, CandyCoupon::getTitle);
queryWrapper.orderByDesc(CandyCoupon::getCreatedAt); queryWrapper.orderByDesc(CandyCoupon::getCreatedAt);
...@@ -38,12 +65,45 @@ public class CandyCouponAdminController extends BaseController { ...@@ -38,12 +65,45 @@ public class CandyCouponAdminController extends BaseController {
if (null != listParam.getCouType()) { if (null != listParam.getCouType()) {
queryWrapper.eq(CandyCoupon::getCouType, listParam.getCouType()); queryWrapper.eq(CandyCoupon::getCouType, listParam.getCouType());
} }
if (null != listParam.getBindType()) { // if (null != listParam.getBindType()) {
queryWrapper.eq(CandyCoupon::getBindType, listParam.getBindType()); // queryWrapper.eq(CandyCoupon::getBindType, listParam.getBindType());
// }
if (null != listParam.getBindType() && Pattern.matches("^[\\d,]*$", listParam.getBindType())) {
String[] bindTypeArr = listParam.getBindType().split(",");
if (bindTypeArr.length > 0) {
queryWrapper.in(CandyCoupon::getBindType, Arrays.stream(bindTypeArr).toArray());
}
} }
} }
startPage(); startPage();
return getDataTable(candyCouponAdminService.list(queryWrapper)); List<CandyCoupon> list = candyCouponAdminService.list(queryWrapper);
TableDataInfo dataTable = getDataTable(list);
List<CandyCouponFilterDto> dtoList = new ArrayList<>();
list.forEach(r -> {
dtoList.add(CandyCouponFilterDto.getNew().copy(r));
});
dataTable.setRows(dtoList);
return dataTable;
}
@ApiOperation(value = "券详情")
@GetMapping("info")
@ResponseBody
public AjaxResult info(String couponId) {
CandyCouponTemplateDto couponTemplateDto = CandyCouponTemplateDto.getNew();
LambdaQueryWrapper<CandyCoupon> couponLambdaQueryWrapper = Wrappers.lambdaQuery();
couponLambdaQueryWrapper.eq(CandyCoupon::getCouponId, couponId);
couponLambdaQueryWrapper.eq(CandyCoupon::getState, 1);
CandyCoupon coupon = candyCouponAdminService.getOne(couponLambdaQueryWrapper);
LambdaUpdateWrapper<CandyCouponRule> couponRuleLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponRule.class);
couponRuleLambdaUpdateWrapper.eq(CandyCouponRule::getCouponId, couponId);
couponRuleLambdaUpdateWrapper.eq(CandyCouponRule::getState, 1);
List<CandyCouponRule> couponRuleList = candyCouponRuleAdminService.list(couponRuleLambdaUpdateWrapper);
couponTemplateDto.setUseRules(couponRuleList);
return AjaxResult.success(couponTemplateDto.copy(coupon));
} }
} }
;(function ($) {
//这里放入插件代码
var RemoteSearchPerformance = function (element, options) {
this.$element = $(element);
this.options = $.extend(true, {}, $.fn.remoteSearchPerformance.defaults, options);
this.id = $(element).attr('id');
this.ulID = '#' + this.id + '_ul';
this.ulFoucus = false;
// Method overrides
this.render = this.options.render || this.render;
this.select = this.options.select || this.select;
this.ajax = $.extend({}, $.fn.remoteSearchPerformance.defaults.ajax, this.options.ajax);
this.listen();
}
RemoteSearchPerformance.prototype = {
listen: function () {
this.$element.on('blur', $.proxy(this.blur, this))
.on('keyup', $.proxy(this.keyup, this));
this.$element.parent('div.remote_wrapper').on('click',this.ulID, $.proxy(this.click, this));
},
blur: function (e) {
var that = this;
e.stopPropagation();
e.preventDefault();
setTimeout(function () {
if (!that.ulFoucus) {
that.$element.val(that.$element.attr('data-name'));
that.hide();
}
}, 150)
},
keyup: function (e) {
e.stopPropagation();
e.preventDefault();
switch (e.keyCode) {
case 40:
// down arrow
case 38:
// up arrow
break;
case 9:
// tab
case 13:
// enter
this.ajaxer();
case 27:
// escape
break;
default:
this.ajaxer();
}
},
hide: function () {
$(this.ulID).remove();
return this;
},
ajaxer: function () {
var that = this,
keyword = that.$element.val();
busiType = window.typeRadio;
couType = window.typeCoupe;
// Query changed
that.keyword = keyword;
// Cancel last timer if set
if (that.ajax.timerId) {
clearTimeout(that.ajax.timerId);
that.ajax.timerId = null;
}
// Query is good to send, set a timer
that.ajax.timerId = setTimeout(function() {
var params = {
keyword : keyword,
busiType: busiType,
couType: couType,
bindType: '1,4'
};
var jAjax = $.post;
jAjax(that.ajax.url, params, function(data){
return that.render(data.rows);
});
that.ajax.timerId = null;
}, that.ajax.timeout);
return that;
},
render: function (data) {
this.ulFoucus = false;
var liList = data || [];
var num = this._getNum();
//添加 ul
if($(this.ulID).length == 0) {
this.$element.after("<ul id='" + this.id + "_ul' class='remote_search remote_search_top'></ul>");
};
//添加li
var str = "";
if(num) {
if(liList.length) {
for(var i = 0; i < liList.length; i++) {
str += "<li data-id='"+liList[i].couponId+"' data-name='"+liList[i].title+"' title='"+liList[i].title+"' value='"+liList[i].couponId+"'>" + liList[i].title + "</li>";
}
} else {
str = "<li data-id='' data-name=''>搜索无数据</li>"
}
} else {
this.$element.attr('data-name',"");
this.$element.attr('data-id',"");
}
$(this.ulID).html(str);
var bodyHeight = $(document.body).height();
var offsetTop = this.$element.offset().top;
var height = $(this.ulID).outerHeight(true);
if(offsetTop + height > bodyHeight){
$(this.ulID).addClass('remote_search_bottom').removeClass('remote_search_top');
}else{
$(this.ulID).addClass('remote_search_top').removeClass('remote_search_bottom');
}
return this;
},
click: function (e) {
e.stopPropagation();
e.preventDefault();
var dataName = $(e.target).attr('data-name');
var dataID = $(e.target).attr('data-id');
this.$element.val(dataName);
this.$element.attr('data-name',dataName);
this.$element.attr('data-id',dataID);
this.options.chose(dataName,dataID);
this.ulFoucus = true;
return this.hide();
},
_getNum: function(){
return this.$element.val().length;
}
}
$.fn.remoteSearchPerformance = function (option) {
return this.each(function () {
var $this = $(this),
data = $this.data('remoteSearchPerformance'),
options = typeof option === 'object' && option;
if (!data) {
$this.data('remoteSearchPerformance', (data = new RemoteSearchPerformance(this, options)));
}
if (typeof option === 'string') {
data[option]();
}
});
}
$.fn.remoteSearchPerformance.defaults = {
hiddenVal: '',
chose: function () { },
ajax: {
url: null,
timeout: 300,
method: 'get',
timerId: null
},
success: function(res){
}
}
$.fn.remoteSearchPerformance.Constructor = RemoteSearchPerformance;
})(jQuery);
\ No newline at end of file
;(function ($) {
//这里放入插件代码
var RemoteSearchPerformance = function (element, options) {
this.$element = $(element);
this.options = $.extend(true, {}, $.fn.remoteSearchPerformance.defaults, options);
this.id = $(element).attr('id');
this.ulID = '#' + this.id + '_ul';
this.ulFoucus = false;
// Method overrides
this.render = this.options.render || this.render;
this.select = this.options.select || this.select;
this.ajax = $.extend({}, $.fn.remoteSearchPerformance.defaults.ajax, this.options.ajax);
this.listen();
}
RemoteSearchPerformance.prototype = {
listen: function () {
this.$element.on('blur', $.proxy(this.blur, this))
.on('keyup', $.proxy(this.keyup, this));
this.$element.parent('div.remote_wrapper').on('click',this.ulID, $.proxy(this.click, this));
},
blur: function (e) {
var that = this;
e.stopPropagation();
e.preventDefault();
setTimeout(function () {
if (!that.ulFoucus) {
that.$element.val(that.$element.attr('data-name'));
that.hide();
}
}, 150)
},
keyup: function (e) {
e.stopPropagation();
e.preventDefault();
switch (e.keyCode) {
case 40:
// down arrow
case 38:
// up arrow
break;
case 9:
// tab
case 13:
// enter
this.ajaxer();
case 27:
// escape
break;
default:
this.ajaxer();
}
},
hide: function () {
$(this.ulID).remove();
return this;
},
ajaxer: function () {
var that = this,
keyword = that.$element.val();
busiType = window.typeRadio;
couType = window.typeCoupe;
// Query changed
that.keyword = keyword;
// Cancel last timer if set
if (that.ajax.timerId) {
clearTimeout(that.ajax.timerId);
that.ajax.timerId = null;
}
// Query is good to send, set a timer
that.ajax.timerId = setTimeout(function() {
var params = {
keyword : keyword,
busiType: busiType,
couType: couType,
bindType: '1,4'
};
var jAjax = $.post;
jAjax(that.ajax.url, params, function(data){
return that.render(data.rows);
});
that.ajax.timerId = null;
}, that.ajax.timeout);
return that;
},
render: function (data) {
this.ulFoucus = false;
var liList = data || [];
var num = this._getNum();
//添加 ul
if($(this.ulID).length == 0) {
this.$element.after("<ul id='" + this.id + "_ul' class='remote_search remote_search_top'></ul>");
};
//添加li
var str = "";
if(num) {
if(liList.length) {
for(var i = 0; i < liList.length; i++) {
str += "<li data-id='"+liList[i].couponId+"' data-name='"+liList[i].title+"' title='"+liList[i].title+"' value='"+liList[i].couponId+"'>" + liList[i].title + "</li>";
}
} else {
str = "<li data-id='' data-name=''>搜索无数据</li>"
}
} else {
this.$element.attr('data-name',"");
this.$element.attr('data-id',"");
}
$(this.ulID).html(str);
var bodyHeight = $(document.body).height();
var offsetTop = this.$element.offset().top;
var height = $(this.ulID).outerHeight(true);
if(offsetTop + height > bodyHeight){
$(this.ulID).addClass('remote_search_bottom').removeClass('remote_search_top');
}else{
$(this.ulID).addClass('remote_search_top').removeClass('remote_search_bottom');
}
return this;
},
click: function (e) {
e.stopPropagation();
e.preventDefault();
var dataName = $(e.target).attr('data-name');
var dataID = $(e.target).attr('data-id');
this.$element.val(dataName);
this.$element.attr('data-name',dataName);
this.$element.attr('data-id',dataID);
this.options.chose(dataName,dataID);
this.ulFoucus = true;
return this.hide();
},
_getNum: function(){
return this.$element.val().length;
}
}
$.fn.remoteSearchPerformance = function (option) {
return this.each(function () {
var $this = $(this),
data = $this.data('remoteSearchPerformance'),
options = typeof option === 'object' && option;
if (!data) {
$this.data('remoteSearchPerformance', (data = new RemoteSearchPerformance(this, options)));
}
if (typeof option === 'string') {
data[option]();
}
});
}
$.fn.remoteSearchPerformance.defaults = {
hiddenVal: '',
chose: function () { },
ajax: {
url: null,
timeout: 300,
method: 'get',
timerId: null
},
success: function(res){
}
}
$.fn.remoteSearchPerformance.Constructor = RemoteSearchPerformance;
})(jQuery);
\ No newline at end of file
...@@ -43,6 +43,9 @@ ...@@ -43,6 +43,9 @@
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.6.1}"></script> <script th:src="@{/ruoyi/js/ry-ui.js?v=4.6.1}"></script>
<!--远程搜索下拉框--> <!--远程搜索下拉框-->
<script th:src="@{/js/remote-search-performance.js}"></script> <script th:src="@{/js/remote-search-performance.js}"></script>
<!--远程搜索下拉框:积分抽奖配置使用-->
<script th:src="@{/js/remote-search-coupon-list.js}"></script>
<script th:src="@{/js/remote-search-coupon.js}"></script>
</div> </div>
<!-- ztree树插件 --> <!-- ztree树插件 -->
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
<head> <head>
<th:block th:include="include :: header('会员设置')" /> <th:block th:include="include :: header('会员设置')" />
<th:block th:include="include :: bootstrap-fileinput-css" /> <th:block th:include="include :: bootstrap-fileinput-css" />
<!-- <script src="../../../../static/js/remote-search-coupon.js"></script>-->
</head> </head>
<style> <style>
.avatar_img { .avatar_img {
...@@ -72,6 +73,7 @@ ...@@ -72,6 +73,7 @@
} }
.pop_inner .form-group { .pop_inner .form-group {
float: left; float: left;
width: 100%;
padding-top: 20px; padding-top: 20px;
} }
.pop_inner .form-group .discount { .pop_inner .form-group .discount {
...@@ -123,6 +125,19 @@ ...@@ -123,6 +125,19 @@
margin-left: 5px; margin-left: 5px;
background: #f00; background: #f00;
} }
.radio-box {
float: left;
}
.goods_track {
display: none;
}
.user_rules {
display: none;
}
/*误删 该样式是控制动态添加数据的*/
.remote_search {
padding-left: 0;
}
</style> </style>
<body class="gray-bg" style="font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif !important;"> <body class="gray-bg" style="font: 14px Helvetica Neue, Helvetica, PingFang SC, 微软雅黑, Tahoma, Arial, sans-serif !important;">
<section class="section-content"> <section class="section-content">
...@@ -267,7 +282,6 @@ ...@@ -267,7 +282,6 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label">权益描述:</label> <label class="col-sm-2 control-label">权益描述:</label>
</div> </div>
<div th:if="${#lists.isEmpty(memberRightsList)}"> <div th:if="${#lists.isEmpty(memberRightsList)}">
<div class="form-group interests_item"> <div class="form-group interests_item">
<div class="text-center"> <div class="text-center">
...@@ -413,9 +427,10 @@ ...@@ -413,9 +427,10 @@
<div class="pop_inner"> <div class="pop_inner">
<input type="hidden" class="parentsIndex"/> <input type="hidden" class="parentsIndex"/>
<input type="hidden" class="childIndex"/> <input type="hidden" class="childIndex"/>
<div class="col-sm-10"> <input type="hidden" class="pop_oper"/>
<input type="text" id="coupeAdd_title" name="coupeAdd_title" placeholder="券标题"/> <!-- <div class="col-sm-10">-->
</div> <!-- <input type="text" id="coupeAdd_title" name="coupeAdd_title" placeholder="券标题"/>-->
<!-- </div>-->
<div class="form-group"> <div class="form-group">
<label class="col-sm-2 control-label">类别:</label> <label class="col-sm-2 control-label">类别:</label>
<div class="col-sm-10 coupenColumn"> <div class="col-sm-10 coupenColumn">
...@@ -454,10 +469,27 @@ ...@@ -454,10 +469,27 @@
<input type="radio" id="coupetypr1" class="coupeAddVal" name="coupe_type" value="1"/>代金券 <input type="radio" id="coupetypr1" class="coupeAddVal" name="coupe_type" value="1"/>代金券
</label> </label>
</div> </div>
<div class="radio-box goods_track">
<label for="radio2" onclick="coupetType(this)">
<input type="radio" id="coupetypr4" class="coupeAddVal" name="coupe_type" value="4"/>折扣券
</label>
</div>
</div> </div>
<!-- <div class="col-sm-10 discount">-->
<!-- <div class="coupetypr_discount">满 ¥ <input type="text" id="valOver"/> 减 ¥ <input type="text" id="valMinus"/></div>-->
<!-- <div class="coupetypr_price" style="display: none;">金额 ¥ <input type="text" id="valFace"/></div>-->
<!-- </div>-->
<div class="col-sm-10 discount"> <div class="col-sm-10 discount">
<div class="coupetypr_discount">满 ¥ <input type="text" id="valOver"/> 减 ¥ <input type="text" id="valMinus"/></div> <div class="coupetypr_search">
<div class="coupetypr_price" style="display: none;">金额 ¥ <input type="text" id="valFace"/></div> <div class="remote_wrapper" style="position: relative;">
<input name="ids" type="hidden">
<input type="text" id="remoteSearch" placeholder="请选择券">
</div>
</div>
</div>
<div class="form-group user_rules">
<label class="col-sm-2 control-label">适用范围:</label>
<div class="col-sm-10 rules_inner"></div>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
...@@ -503,6 +535,9 @@ ...@@ -503,6 +535,9 @@
var typeRadio = ''; var typeRadio = '';
var prefix = ctx + "adam/member"; var prefix = ctx + "adam/member";
var candyfix = ctx + "candy/coupon";
console.log(memberRightsList);
// 弹窗 // 弹窗
$(function () { $(function () {
$("#fileinput-demo-1").fileinput({ $("#fileinput-demo-1").fileinput({
...@@ -542,6 +577,20 @@ ...@@ -542,6 +577,20 @@
}); });
}); });
// 远程搜索券
$('#remoteSearch').remoteSearchPerformance({
ajax:{
url: candyfix + "/list",
type: "post"
},
chose: function(text,val){
window.couponId = val;
$('.user_rules').show();
coupenDetail(val, 1);
// document.getElementsByName("ids")[0].value = val;
}
});
function tabChange (num) { function tabChange (num) {
window.localStorage.setItem('tabActive', num); window.localStorage.setItem('tabActive', num);
} }
...@@ -619,8 +668,11 @@ ...@@ -619,8 +668,11 @@
valFace: valFace ? valFace : 1, valFace: valFace ? valFace : 1,
valOver: valOver ? valOver : 1, valOver: valOver ? valOver : 1,
valMinus: valMinus ? valMinus : 1, valMinus: valMinus ? valMinus : 1,
state: 1 oper: $('.pop_oper').val()
}; };
if ($('.pop_oper').val() == 3) {
MembercoupenData.operCouponId = this.operCouponId;
}
$.operate.saveModalBody(prefix + "/edit_coupon", JSON.stringify(MembercoupenData), function () { $.operate.saveModalBody(prefix + "/edit_coupon", JSON.stringify(MembercoupenData), function () {
$('.coupe_pop').hide(); $('.coupe_pop').hide();
$('.cover_pop').hide(); $('.cover_pop').hide();
...@@ -640,12 +692,19 @@ ...@@ -640,12 +692,19 @@
$(obj).find('input').attr('checked', true); $(obj).find('input').attr('checked', true);
this.typeRadio = typeRadio; this.typeRadio = typeRadio;
$('#remoteSearch').val('');
$('.user_rules').hide();
if (typeRadio == 3) { if (typeRadio == 3) {
$('.alltrack').hide(); $('.alltrack').hide();
$('.alltrack_limit').show(); $('.alltrack_limit').show();
} else { } else {
$('.alltrack').show(); $('.alltrack').show();
$('.alltrack_limit').hide(); $('.alltrack_limit').hide();
if (typeRadio == 2) {
$('.goods_track').show();
} else {
$('.goods_track').hide();
}
} }
} }
...@@ -653,6 +712,8 @@ ...@@ -653,6 +712,8 @@
function coupetType (obj) { function coupetType (obj) {
var typeCoupe = $(obj).find('input').val(); var typeCoupe = $(obj).find('input').val();
this.typeCoupe = typeCoupe; this.typeCoupe = typeCoupe;
$('#remoteSearch').val('');
$('.user_rules').hide();
if (typeCoupe == 1) { if (typeCoupe == 1) {
$('.coupetypr_price').show(); $('.coupetypr_price').show();
$('.coupetypr_discount').hide(); $('.coupetypr_discount').hide();
...@@ -662,6 +723,39 @@ ...@@ -662,6 +723,39 @@
} }
} }
// 券详情
function coupenDetail (val, num) {
$.ajax({
url: candyfix + "/info",
async: false,
data: {
couponId: val
},
dataType: 'json',
type: 'get',
success: function (res) {
var coupenData = res.data;
if (coupenData.busiType == 0) {
$('.user_rules .rules_inner').text('全部演出、商品');
} else if (coupenData.busiType == 1 || coupenData.busiType == 2) {
var coupenDataArr = [];
if (coupenData.useRules.length > 0) {
for (var i = 0; i < coupenData.useRules.length; i++ ) {
coupenDataArr.push(coupenData.useRules[i].busiName);
}
coupenDataArr.join("/");
$('.user_rules .rules_inner').text(coupenDataArr.join("/"));
}
} else if (coupenData.busiType == 3) {
$('.user_rules .rules_inner').text('全部演出');
}
if (num == 3) {
$('#remoteSearch').val(coupenData.title);
$('.user_rules').show();
}
}
})
}
// 权益图片上传 // 权益图片上传
function icon (obj, num) { function icon (obj, num) {
$('.coverFunNum').val(num); $('.coverFunNum').val(num);
...@@ -723,7 +817,7 @@ ...@@ -723,7 +817,7 @@
valFace: valFace ? valFace : 1, valFace: valFace ? valFace : 1,
valOver: valOver ? valOver : 1, valOver: valOver ? valOver : 1,
valMinus: valMinus ? valMinus : 1, valMinus: valMinus ? valMinus : 1,
state: 2 oper: 2
}; };
$.operate.saveModalBody(prefix + "/edit_coupon", JSON.stringify(MembercoupenData)); $.operate.saveModalBody(prefix + "/edit_coupon", JSON.stringify(MembercoupenData));
thisVal.remove(); thisVal.remove();
...@@ -733,6 +827,7 @@ ...@@ -733,6 +827,7 @@
function addCoupes (obj) { function addCoupes (obj) {
var addItemIndex = $('.member-coupes').index($(obj)); var addItemIndex = $('.member-coupes').index($(obj));
$('.parentsIndex').val(addItemIndex); $('.parentsIndex').val(addItemIndex);
$('.pop_oper').val(1);
$('.coupe_pop').show(); $('.coupe_pop').show();
} }
...@@ -759,8 +854,15 @@ ...@@ -759,8 +854,15 @@
var valOver = parentObj.find('#mrcvalOver').val(); var valOver = parentObj.find('#mrcvalOver').val();
var valMinus = parentObj.find('#mrcvalMinus').val(); var valMinus = parentObj.find('#mrcvalMinus').val();
if (this.typeCoupe == 4) {
$('#coupetypr4').parent().parent().parent().show();
} else {
$('#coupetypr4').parent().parent().parent().hide();
}
this.mrightsId = mrightsId; this.mrightsId = mrightsId;
this.couponId = couponId; this.couponId = couponId;
this.operCouponId = couponId;
$('#eventAmt').val(eventAmt); $('#eventAmt').val(eventAmt);
$('#valOver').val(valOver); $('#valOver').val(valOver);
...@@ -804,6 +906,8 @@ ...@@ -804,6 +906,8 @@
busiName: '优先购' busiName: '优先购'
}] }]
} }
$('.pop_oper').val(3);
coupenDetail(couponId, 3);
$('.coupe_pop').show(); $('.coupe_pop').show();
} }
......
...@@ -13,7 +13,9 @@ ...@@ -13,7 +13,9 @@
.main_title, .main_type, .money, .scope_application, .sendType,.phoneNumber,.playMethod { .main_title, .main_type, .money, .scope_application, .sendType,.phoneNumber,.playMethod {
margin-bottom: 20px; margin-bottom: 20px;
} }
#searchIpt {
/* display: none; */
}
.phoneNumber,.playMethod { .phoneNumber,.playMethod {
display: none; display: none;
} }
...@@ -153,10 +155,18 @@ ...@@ -153,10 +155,18 @@
<input type="radio" value="3" name="typeOne"><span>优先购</span> <input type="radio" value="3" name="typeOne"><span>优先购</span>
</div> </div>
</div> </div>
<div id="scoreType" class="main_type">
<span class="labelName"><i class="required">*</i>类别:</span>
<div class="layui-input-block" style="display: flex">
<!-- <input type="radio" value="0" name="selectType" checked><span>商品</span> -->
<input type="radio" value="1" name="selectType" checked><span></span>
</div>
</div>
<div class="scope_application" id="scope_application"> <div class="scope_application" id="scope_application">
<span class="labelName"><i class="required">*</i>券名称:</span> <span class="labelName"><i class="required">*</i>券名称:</span>
<div class="search_ipt" style="position: relative;display: inline;"> <div class="search_ipt" style="position: relative;display: inline;">
<input type="text" id="searchIpt" autocomplete="off" class="layui-input" placeholder="全部"> <input type="text" id="searchIpt" autocomplete="off" class="layui-input" placeholder="全部">
<!-- <input type="text" id="searchIptMall" autocomplete="off" class="layui-input" placeholder="全部"> -->
<ul id="dataList" style="position: absolute;"></ul> <ul id="dataList" style="position: absolute;"></ul>
</div> </div>
</div> </div>
...@@ -268,6 +278,9 @@ ...@@ -268,6 +278,9 @@
let showPicture = ''; // 展示图片 let showPicture = ''; // 展示图片
let limit = ''; // 限兑次数 let limit = ''; // 限兑次数
let itemId = ''; // let itemId = ''; //
let selectType = '1'
let type = '';
console.log('检测')
$(document).ready(function() { $(document).ready(function() {
var $summernote = $('#summernote').summernote({ var $summernote = $('#summernote').summernote({
height: 300, height: 300,
...@@ -340,6 +353,9 @@ ...@@ -340,6 +353,9 @@
$('#summernote').summernote('code', data.details) $('#summernote').summernote('code', data.details)
$('.summernote').eq(1).summernote('code', data.notice) $('.summernote').eq(1).summernote('code', data.notice)
// $("#attention").val(data.notice); // $("#attention").val(data.notice);
if (data.type == 1) {
$("input[name='selectType'][value='1']").attr("checked", "checked").siblings().removeAttr('checked');
}
if (data.limitCount != 0) { if (data.limitCount != 0) {
sendType = 1 sendType = 1
$("input[name='sendType'][value='1']").attr("checked", "checked").siblings().removeAttr('checked'); $("input[name='sendType'][value='1']").attr("checked", "checked").siblings().removeAttr('checked');
...@@ -443,6 +459,18 @@ ...@@ -443,6 +459,18 @@
$("input[name=typeOne]").change(function(e){ $("input[name=typeOne]").change(function(e){
typeOne = e.target.value; typeOne = e.target.value;
}); });
$("input[name=selectType]").change(function(e){
selectType = e.target.value;
if (selectType == 0) {
$("#searchIptMall").show()
$("#searchIpt").hide()
$("#searchIpt").val('')
} else {
$("#searchIptMall").hide()
$("#searchIptMall").val('')
$("#searchIpt").show()
}
});
$("input[name=sendType]").change(function(e){ $("input[name=sendType]").change(function(e){
sendType = e.target.value; sendType = e.target.value;
if (sendType == 1) { if (sendType == 1) {
...@@ -468,9 +496,18 @@ ...@@ -468,9 +496,18 @@
}); });
function create() { function create() {
if (!$('#searchIpt').val() || !showPicture || !$('#integralNum').val() || !$('#moneyNum').val() || !$('#inventory').val() || !$('#summernote').summernote('code') || !$('.summernote').eq(1).summernote('code')) { if (!showPicture || !$('#integralNum').val() || !$('#moneyNum').val() || !$('#inventory').val() || !$('#summernote').summernote('code') || !$('.summernote').eq(1).summernote('code')) {
return layer.msg('请将必填项输入完整~!'); return layer.msg('请将必填项输入完整~!');
} }
if (selectType == 1) {
if (!$('#searchIpt').val()) {
return layer.msg('请将必填项输入完整~!');
}
} else {
if (!$('#searchIptMall').val()) {
return layer.msg('请将必填项输入完整~!');
}
}
if (sendType == 1) { if (sendType == 1) {
if (!$("#linit").val()) { if (!$("#linit").val()) {
return layer.msg('请填写限兑次数!'); return layer.msg('请填写限兑次数!');
...@@ -502,7 +539,7 @@ ...@@ -502,7 +539,7 @@
startTime: $.common.dateFormat(startTime, 'yyyy-MM-dd HH:mm:ss'), // 上架时间status = 2 必传) startTime: $.common.dateFormat(startTime, 'yyyy-MM-dd HH:mm:ss'), // 上架时间status = 2 必传)
status: Number(shelves), // 上架状态[1-不限|2-定时|7-下线] status: Number(shelves), // 上架状态[1-不限|2-定时|7-下线]
targetId: showId, // 目标物品id targetId: showId, // 目标物品id
targetTitle: $('#searchIpt').val() // 目标物品标题 targetTitle: $('#searchIpt').val() || $("#searchIptMall").val() // 目标物品标题
} }
let type = 'post'; let type = 'post';
if (!itemId) { if (!itemId) {
...@@ -514,6 +551,12 @@ ...@@ -514,6 +551,12 @@
delete data.startTime delete data.startTime
delete data.endTime delete data.endTime
} }
if (selectType == 1) {
// delete data.targetId
data['type'] = 1
} else {
data['type'] = 11
}
promiseMethods(ctx+'stone/item',type,data).then(res=>{ promiseMethods(ctx+'stone/item',type,data).then(res=>{
layer.msg('' + res); layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) { if (res.code != undefined && res.code != web_status.SUCCESS) {
......
...@@ -189,6 +189,7 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp ...@@ -189,6 +189,7 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
AdminUpush updatePush = new AdminUpush(); AdminUpush updatePush = new AdminUpush();
try { try {
AndroidBroadcast broadcast = new AndroidBroadcast(androidAppkey, androidAppMasterSecret); AndroidBroadcast broadcast = new AndroidBroadcast(androidAppkey, androidAppMasterSecret);
broadcast.setBadge(1);
broadcast.setTicker(adminUpush.getPushTitle()); broadcast.setTicker(adminUpush.getPushTitle());
broadcast.setTitle(adminUpush.getPushTitle()); broadcast.setTitle(adminUpush.getPushTitle());
broadcast.setText(adminUpush.getPushContent()); broadcast.setText(adminUpush.getPushContent());
...@@ -257,7 +258,7 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp ...@@ -257,7 +258,7 @@ public class AdminUpushServiceImpl extends ServiceImpl<AdminUpushMapper, AdminUp
IOSBroadcast broadcast = new IOSBroadcast(iosAppkey, iosAppMasterSecret); IOSBroadcast broadcast = new IOSBroadcast(iosAppkey, iosAppMasterSecret);
//alert的值设置为字典 //alert的值设置为字典
broadcast.setAlert(adminUpush.getPushTitle(), "", adminUpush.getPushContent()); broadcast.setAlert(adminUpush.getPushTitle(), "", adminUpush.getPushContent());
broadcast.setBadge(0); broadcast.setBadge(1);
broadcast.setSound("default"); broadcast.setSound("default");
if (Arrays.asList(LnsEnum.ENV.dev.name(), LnsEnum.ENV.test.name()).contains(environment.getProperty(CurrentUtil.CK_ENV_ACTIVE))) { if (Arrays.asList(LnsEnum.ENV.dev.name(), LnsEnum.ENV.test.name()).contains(environment.getProperty(CurrentUtil.CK_ENV_ACTIVE))) {
broadcast.setTestMode(); broadcast.setTestMode();
......
...@@ -10,9 +10,11 @@ import java.util.List; ...@@ -10,9 +10,11 @@ import java.util.List;
public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> { public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter); // boolean saveMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter); // boolean editMgtCouponForMemberRights(CandyMemberCouponBuildParam parameter);
boolean saveUpdateMgtCouponForMemberRights(CandyMemberCouponMatchParam parameter, CandyCoupon coupon);
boolean saveMgtCouponForCouponBuild(CandyMgtCouponBuildParam parameter); boolean saveMgtCouponForCouponBuild(CandyMgtCouponBuildParam parameter);
...@@ -20,7 +22,7 @@ public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> { ...@@ -20,7 +22,7 @@ public interface ICandyMgtCouponAdminService extends IService<CandyMgtCoupon> {
boolean saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList); boolean saveMgtCouponInfo(CandyCoupon initCoupon, CandyMgtCoupon initMgtCoupon, List<CandyCouponRule> initCouponRuleList);
boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList); // boolean updateMgtCouponInfo(CandyCoupon updateCoupon, CandyMgtCoupon updateMgtCoupon, List<CandyCouponRule> initCouponRuleList);
List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam); List<CandyMgtCouponInfoDto> listForMgtCouponInfoDto(CandyMgtCouponListParam listParam);
......
...@@ -251,6 +251,20 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -251,6 +251,20 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
return dto2List; return dto2List;
} }
@Override
public PerformanceSimpleAllDao getSimpleDetailByScopeAndId(String scope, String id) {
switch (scope) {
case "1":
return performancesMapper.getPerformanceSimpleByPerformancesId(id);
case "2":
return performancesMapper.getPerformanceSimpleByTimesId(id);
case "3":
return performancesMapper.getPerformanceSimpleByTicketId(id);
default:
return null;
}
}
@Override @Override
public boolean changeRoadShowId(String performancesId, String roadShowId) { public boolean changeRoadShowId(String performancesId, String roadShowId) {
try { try {
......
...@@ -13,7 +13,7 @@ public abstract class AndroidNotification extends UmengNotification { ...@@ -13,7 +13,7 @@ public abstract class AndroidNotification extends UmengNotification {
// Keys can be set in the body level // Keys can be set in the body level
protected static final HashSet<String> BODY_KEYS = new HashSet<String>(Arrays.asList(new String[]{ protected static final HashSet<String> BODY_KEYS = new HashSet<String>(Arrays.asList(new String[]{
"ticker", "title", "text", "builder_id", "icon", "largeIcon", "img", "play_vibrate", "play_lights", "play_sound", "ticker", "title", "text", "builder_id", "icon", "largeIcon", "img", "play_vibrate", "play_lights", "play_sound",
"sound", "after_open", "url", "activity", "custom"})); "sound", "after_open", "url", "activity", "custom", "badge"}));
public enum DisplayType{ public enum DisplayType{
NOTIFICATION{public String getValue(){return "notification";}},///通知:消息送达到用户设备后,由友盟SDK接管处理并在通知栏上显示通知内容。 NOTIFICATION{public String getValue(){return "notification";}},///通知:消息送达到用户设备后,由友盟SDK接管处理并在通知栏上显示通知内容。
...@@ -81,6 +81,10 @@ public abstract class AndroidNotification extends UmengNotification { ...@@ -81,6 +81,10 @@ public abstract class AndroidNotification extends UmengNotification {
} }
return true; return true;
} }
public void setBadge(Integer badge) throws Exception {
setPredefinedKeyValue("badge", badge);
}
// Set extra key/value for Android notification // Set extra key/value for Android notification
public boolean setExtraField(String key, String value) throws Exception { public boolean setExtraField(String key, String value) throws Exception {
...@@ -102,8 +106,7 @@ public abstract class AndroidNotification extends UmengNotification { ...@@ -102,8 +106,7 @@ public abstract class AndroidNotification extends UmengNotification {
extraJson.put(key, value); extraJson.put(key, value);
return true; return true;
} }
//
public void setDisplayType(DisplayType d) throws Exception { public void setDisplayType(DisplayType d) throws Exception {
setPredefinedKeyValue("display_type", d.getValue()); setPredefinedKeyValue("display_type", d.getValue());
} }
......
...@@ -132,6 +132,13 @@ public class ItemServiceImpl implements IItemService { ...@@ -132,6 +132,13 @@ public class ItemServiceImpl implements IItemService {
if (param.getStatus() == 2 & (param.getStartTime() == null || param.getEndTime() == null)) { if (param.getStatus() == 2 & (param.getStartTime() == null || param.getEndTime() == null)) {
return "时间有误"; return "时间有误";
} }
if (param.getType() == 11) {
param.setTargetId("-999");
} else {
if (param.getType() == 1 && param.getTargetId() == null) {
return "参数异常";
}
}
StoneScoreItems data = BaseData(param); StoneScoreItems data = BaseData(param);
int generalPoor = param.getGeneralTotal() - 0; int generalPoor = param.getGeneralTotal() - 0;
data.setItemId(IDGenerator.nextTimeId2()); data.setItemId(IDGenerator.nextTimeId2());
...@@ -157,6 +164,13 @@ public class ItemServiceImpl implements IItemService { ...@@ -157,6 +164,13 @@ public class ItemServiceImpl implements IItemService {
if (param.getStatus() == 2 & (param.getStartTime() == null || param.getEndTime() == null)) { if (param.getStatus() == 2 & (param.getStartTime() == null || param.getEndTime() == null)) {
return "时间有误"; return "时间有误";
} }
if (param.getType() == 11) {
param.setTargetId("-999");
} else {
if (param.getType() == 1 && param.getTargetId() == null) {
return "参数异常";
}
}
StoneScoreItems data = BaseData(param); StoneScoreItems data = BaseData(param);
StoneScoreItems dataSingle = stoneScoreItemsMapper.selectOne(Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, param.getItemId())); StoneScoreItems dataSingle = stoneScoreItemsMapper.selectOne(Wrappers.lambdaQuery(StoneScoreItems.class).eq(StoneScoreItems::getItemId, param.getItemId()));
int generalPoor = param.getGeneralTotal() - dataSingle.getGeneralTotal(); int generalPoor = param.getGeneralTotal() - dataSingle.getGeneralTotal();
...@@ -187,7 +201,7 @@ public class ItemServiceImpl implements IItemService { ...@@ -187,7 +201,7 @@ public class ItemServiceImpl implements IItemService {
StoneScoreItems data = new StoneScoreItems(); StoneScoreItems data = new StoneScoreItems();
data.setTargetId(param.getTargetId()); data.setTargetId(param.getTargetId());
data.setTargetTitle(param.getTargetTitle()); data.setTargetTitle(param.getTargetTitle());
data.setType(1); data.setType(param.getType());
data.setImg(param.getImg()); data.setImg(param.getImg());
data.setScore(param.getScore()); data.setScore(param.getScore());
data.setPrice(BigDecimal.ZERO); data.setPrice(BigDecimal.ZERO);
...@@ -196,10 +210,10 @@ public class ItemServiceImpl implements IItemService { ...@@ -196,10 +210,10 @@ public class ItemServiceImpl implements IItemService {
data.setDetails(param.getDetails()); data.setDetails(param.getDetails());
data.setNotice(param.getNotice()); data.setNotice(param.getNotice());
data.setStatus(param.getStatus()); data.setStatus(param.getStatus());
if(param.getStartTime()!=null) { if (param.getStartTime() != null) {
data.setStartTime(LocalDateTime.parse(param.getStartTime(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS))); data.setStartTime(LocalDateTime.parse(param.getStartTime(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)));
} }
if(param.getEndTime()!=null) { if (param.getEndTime() != null) {
data.setEndTime(LocalDateTime.parse(param.getEndTime(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS))); data.setEndTime(LocalDateTime.parse(param.getEndTime(), DateTimeFormatter.ofPattern(DateUtils.YYYY_MM_DD_HH_MM_SS)));
} }
return data; return data;
......
...@@ -19,9 +19,11 @@ import com.liquidnet.service.sweet.mapper.SweetIntegralActivityPrizeRelationMapp ...@@ -19,9 +19,11 @@ import com.liquidnet.service.sweet.mapper.SweetIntegralActivityPrizeRelationMapp
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
...@@ -102,27 +104,64 @@ public class SweetIntegralActivityPrizeRelationServiceImpl extends ServiceImpl<S ...@@ -102,27 +104,64 @@ public class SweetIntegralActivityPrizeRelationServiceImpl extends ServiceImpl<S
Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId) Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
); );
IntegralActivityVo integralActivityVo = IntegralActivityVo.getNew().copy(sweetIntegralActivity); IntegralActivityVo integralActivityVo = IntegralActivityVo.getNew().copy(sweetIntegralActivity);
// 详情奖品 // 详情奖品 全部
List<SweetIntegralActivityPrize> sweetIntegralActivityPrizes = sweetIntegralActivityPrizeMapper.selectList( List<SweetIntegralActivityPrize> activityPrizes = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId) Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
); );
List<IntegralActivityPrizeVo> prizeList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList(); List<IntegralActivityPrizeVo> prizeList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
sweetIntegralActivityPrizes.forEach(r -> { activityPrizes.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r); IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
// 奖品券列表 // 奖品券列表
List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList( List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId()) Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId())
); );
ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList(); ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList();
prizeRelations.forEach(rr -> { if (!CollectionUtils.isEmpty(prizeRelations)) {
IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr); prizeRelations.forEach(rr -> {
prizeRelationVoList.add(copyR); IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr);
}); prizeRelationVoList.add(copyR);
});
}
copy.setPrizeRelationList(prizeRelationVoList); copy.setPrizeRelationList(prizeRelationVoList);
prizeList.add(copy); prizeList.add(copy);
}); });
integralActivityVo.setPrizeList(prizeList); integralActivityVo.setPrizeList(prizeList);
// 详情奖品 积分和券
List<SweetIntegralActivityPrize> activityPrizes1 = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(1,2))
);
List<IntegralActivityPrizeVo> prizeList1 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes1.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
// 奖品券列表
List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId())
);
ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList();
if (!CollectionUtils.isEmpty(prizeRelations)) {
prizeRelations.forEach(rr -> {
IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr);
prizeRelationVoList.add(copyR);
});
}
copy.setPrizeRelationList(prizeRelationVoList);
prizeList1.add(copy);
});
integralActivityVo.setPrizeList1(prizeList1);
// 详情奖品 实物等
List<SweetIntegralActivityPrize> activityPrizes2 = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(3,4))
);
List<IntegralActivityPrizeVo> prizeList2 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes2.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
prizeList2.add(copy);
});
integralActivityVo.setPrizeList2(prizeList2);
sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo); sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo);
} }
......
...@@ -33,6 +33,7 @@ import org.springframework.util.CollectionUtils; ...@@ -33,6 +33,7 @@ import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
/** /**
...@@ -194,27 +195,64 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA ...@@ -194,27 +195,64 @@ public class SweetIntegralActivityServiceImpl extends ServiceImpl<SweetIntegralA
Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId) Wrappers.lambdaQuery(SweetIntegralActivity.class).eq(SweetIntegralActivity::getIntegralActivityId, integralActivityId)
); );
IntegralActivityVo integralActivityVo = IntegralActivityVo.getNew().copy(sweetIntegralActivity); IntegralActivityVo integralActivityVo = IntegralActivityVo.getNew().copy(sweetIntegralActivity);
// 详情奖品 // 详情奖品 全部
List<SweetIntegralActivityPrize> sweetIntegralActivityPrizes = sweetIntegralActivityPrizeMapper.selectList( List<SweetIntegralActivityPrize> activityPrizes = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId) Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
); );
List<IntegralActivityPrizeVo> prizeList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList(); List<IntegralActivityPrizeVo> prizeList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
sweetIntegralActivityPrizes.forEach(r -> { activityPrizes.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r); IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
// 奖品券列表 // 奖品券列表
List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList( List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId()) Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId())
); );
ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList(); ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList();
prizeRelations.forEach(rr -> { if (!CollectionUtils.isEmpty(prizeRelations)) {
IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr); prizeRelations.forEach(rr -> {
prizeRelationVoList.add(copyR); IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr);
}); prizeRelationVoList.add(copyR);
});
}
copy.setPrizeRelationList(prizeRelationVoList); copy.setPrizeRelationList(prizeRelationVoList);
prizeList.add(copy); prizeList.add(copy);
}); });
integralActivityVo.setPrizeList(prizeList); integralActivityVo.setPrizeList(prizeList);
// 详情奖品 积分和券
List<SweetIntegralActivityPrize> activityPrizes1 = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(1,2))
);
List<IntegralActivityPrizeVo> prizeList1 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes1.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
// 奖品券列表
List<SweetIntegralActivityPrizeRelation> prizeRelations = relationMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrizeRelation.class).eq(SweetIntegralActivityPrizeRelation::getPrizeId, copy.getPrizeId())
);
ArrayList<IntegralActivityPrizeRelationVo> prizeRelationVoList = SweetObjectAdminUtil.getSweetIntegralActivityPrizeRelationVoList();
if (!CollectionUtils.isEmpty(prizeRelations)) {
prizeRelations.forEach(rr -> {
IntegralActivityPrizeRelationVo copyR = IntegralActivityPrizeRelationVo.getNew().copy(rr);
prizeRelationVoList.add(copyR);
});
}
copy.setPrizeRelationList(prizeRelationVoList);
prizeList1.add(copy);
});
integralActivityVo.setPrizeList1(prizeList1);
// 详情奖品 实物等
List<SweetIntegralActivityPrize> activityPrizes2 = sweetIntegralActivityPrizeMapper.selectList(
Wrappers.lambdaQuery(SweetIntegralActivityPrize.class).eq(SweetIntegralActivityPrize::getIntegralActivityId, integralActivityId)
.in(SweetIntegralActivityPrize::getPrizeType, Arrays.asList(3,4))
);
List<IntegralActivityPrizeVo> prizeList2 = SweetObjectAdminUtil.getSweetIntegralActivityPrizeVoList();
activityPrizes2.forEach(r -> {
IntegralActivityPrizeVo copy = IntegralActivityPrizeVo.getNew().copy(r);
prizeList2.add(copy);
});
integralActivityVo.setPrizeList2(prizeList2);
sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo); sweetRedisAdminUtils.setIntegralActivityInfo(integralActivityVo);
} }
......
package com.liquidnet.commons.lang.util;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IPUtil
* @Package com.liquidnet.commons.lang.util
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/24 13:29
*/
public class IPUtil {
/**
* ip地址转成long型数字
* 将IP地址转化成整数的方法如下:
* 1、通过String的split方法按.分隔得到4个长度的数组
* 2、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
* @param strIp
* @return
*/
public static long ipToLong(String strIp) {
String[]ip = strIp.split("\\.");
return (Long.parseLong(ip[0]) << 24) + (Long.parseLong(ip[1]) << 16) + (Long.parseLong(ip[2]) << 8) + Long.parseLong(ip[3]);
}
/**
* 将十进制整数形式转换成127.0.0.1形式的ip地址
* 将整数形式的IP地址转化成字符串的方法如下:
* 1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
* 2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
* 3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
* 4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
* @param longIp
* @return
*/
public static String longToIP(long longIp) {
StringBuffer sb = new StringBuffer("");
// 直接右移24位
sb.append(String.valueOf((longIp >>> 24)));
sb.append(".");
// 将高8位置0,然后右移16位
sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
sb.append(".");
// 将高16位置0,然后右移8位
sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
sb.append(".");
// 将高24位置0
sb.append(String.valueOf((longIp & 0x000000FF)));
return sb.toString();
}
public static void main(String[] args) {
System.out.println(ipToLong("219.239.110.138"));
System.out.println(longToIP(3689901706l));
}
}
...@@ -85,6 +85,8 @@ public class MQConst { ...@@ -85,6 +85,8 @@ public class MQConst {
SWEET_CITY_VOTE("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"), SWEET_CITY_VOTE("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"),
SWEET_ANTIGENIC_QUESTION("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"), SWEET_ANTIGENIC_QUESTION("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"),
SWEET_INTEGRAL_ACTIVITY_DRAW("sweet:stream:rk.integralActivityDraw", "group.integralActivityDraw", "积分抽奖"), SWEET_INTEGRAL_ACTIVITY_DRAW("sweet:stream:rk.integralActivityDraw", "group.integralActivityDraw", "积分抽奖"),
SWEET_POSTER("sweet:stream:rk.userLikeMusician", "group.userLikeMusician", "用户喜欢的音乐人"),
; ;
private final String key; private final String key;
......
...@@ -101,6 +101,7 @@ global-auth: ...@@ -101,6 +101,7 @@ global-auth:
- ${liquidnet.info.context}/ts - ${liquidnet.info.context}/ts
- ${liquidnet.info.context}/send - ${liquidnet.info.context}/send
- ${liquidnet.info.context}/member/info - ${liquidnet.info.context}/member/info
- ${liquidnet.info.context}/member/joininfo
- ${liquidnet.info.context}/member/info/rights - ${liquidnet.info.context}/member/info/rights
- ${liquidnet.info.context}/member/onsale - ${liquidnet.info.context}/member/onsale
- ${liquidnet.info.context}/member/check/depth - ${liquidnet.info.context}/member/check/depth
...@@ -112,8 +113,10 @@ global-auth: ...@@ -112,8 +113,10 @@ global-auth:
- ${liquidnet.info.context}/wxa/code2session - ${liquidnet.info.context}/wxa/code2session
- ${liquidnet.info.context}/wx/oauth2/access_token - ${liquidnet.info.context}/wx/oauth2/access_token
- ${liquidnet.info.context}/rsc/** - ${liquidnet.info.context}/rsc/**
include-url-pattern: # 模式II(与模式I互斥)
# - ${liquidnet.info.context}/**
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/** # - ${liquidnet.info.context}/**
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
\ No newline at end of file
...@@ -97,7 +97,7 @@ global-auth: ...@@ -97,7 +97,7 @@ global-auth:
- ${liquidnet.info.context}/candy-coupon/useBack - ${liquidnet.info.context}/candy-coupon/useBack
- ${liquidnet.info.context}/candy-coupon/useBackJxl - ${liquidnet.info.context}/candy-coupon/useBackJxl
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/** # - ${liquidnet.info.context}/**
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
\ No newline at end of file
...@@ -104,7 +104,7 @@ global-auth: ...@@ -104,7 +104,7 @@ global-auth:
- ${liquidnet.info.context}/user/userDislikeOperation - ${liquidnet.info.context}/user/userDislikeOperation
- ${liquidnet.info.context}/performance/getUserListByCon - ${liquidnet.info.context}/performance/getUserListByCon
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/** # - ${liquidnet.info.context}/**
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
\ No newline at end of file
...@@ -162,7 +162,7 @@ global-auth: ...@@ -162,7 +162,7 @@ global-auth:
# - ${liquidnet.info.context}/order/orderRefundWithdraw # - ${liquidnet.info.context}/order/orderRefundWithdraw
# - ${liquidnet.info.context}/orderRefund/sendOrderRefunds # - ${liquidnet.info.context}/orderRefund/sendOrderRefunds
# - ${liquidnet.info.context}/orderRefund/orderRefundWithdraw # - ${liquidnet.info.context}/orderRefund/orderRefundWithdraw
- ${liquidnet.info.context}/station/out # - ${liquidnet.info.context}/station/out
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -126,9 +126,7 @@ global-auth: ...@@ -126,9 +126,7 @@ global-auth:
- ${liquidnet.info.context}/user/logs/in2111 - ${liquidnet.info.context}/user/logs/in2111
- ${liquidnet.info.context}/user/logs/de2111 - ${liquidnet.info.context}/user/logs/de2111
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/** # - ${liquidnet.info.context}/**
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -117,7 +117,7 @@ global-auth: ...@@ -117,7 +117,7 @@ global-auth:
# 做积分任务 # 做积分任务
- ${liquidnet.info.context}/wechatUsers/doTask - ${liquidnet.info.context}/wechatUsers/doTask
oncheck-url-pattern: oncheck-url-pattern:
- ${liquidnet.info.context}/** # - ${liquidnet.info.context}/**
# ----------------------------------------------------------- # -----------------------------------------------------------
# ----------------------------------------------------------- # -----------------------------------------------------------
\ No newline at end of file
...@@ -19,7 +19,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{ ...@@ -19,7 +19,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
private String title; private String title;
private String label; private String label;
private String notice; private String notice;
private Integer exclusive; //private Integer exclusive;
private Integer busiType; private Integer busiType;
private Integer couType; private Integer couType;
private Integer bindType; private Integer bindType;
...@@ -44,6 +44,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{ ...@@ -44,6 +44,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
private String ccouponId; private String ccouponId;
private String mcouponId; private String mcouponId;
//private String couponId; //private String couponId;
private Integer exclusive;
private Integer state; private Integer state;
private Integer ranged; private Integer ranged;
//private String operator; //private String operator;
...@@ -71,7 +72,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{ ...@@ -71,7 +72,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
this.setTitle(coupon.getTitle()); this.setTitle(coupon.getTitle());
this.setLabel(coupon.getLabel()); this.setLabel(coupon.getLabel());
this.setNotice(coupon.getNotice()); this.setNotice(coupon.getNotice());
this.setExclusive(coupon.getExclusive()); //this.setExclusive(coupon.getExclusive());
this.setBusiType(coupon.getBusiType()); this.setBusiType(coupon.getBusiType());
this.setCouType(coupon.getCouType()); this.setCouType(coupon.getCouType());
this.setBindType(coupon.getBindType()); this.setBindType(coupon.getBindType());
...@@ -90,6 +91,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{ ...@@ -90,6 +91,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
this.setCcouponId(commonCoupon.getCcouponId()); this.setCcouponId(commonCoupon.getCcouponId());
this.setMcouponId(commonCoupon.getMcouponId()); this.setMcouponId(commonCoupon.getMcouponId());
this.setExclusive(commonCoupon.getExclusive());
this.setState(commonCoupon.getState()); this.setState(commonCoupon.getState());
this.setRanged(commonCoupon.getRanged()); this.setRanged(commonCoupon.getRanged());
this.setCreatedAt(commonCoupon.getCreatedAt()); this.setCreatedAt(commonCoupon.getCreatedAt());
......
...@@ -19,7 +19,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable { ...@@ -19,7 +19,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
private String title; private String title;
private String label; private String label;
private String notice; private String notice;
private Integer exclusive; //private Integer exclusive;
private Integer busiType; private Integer busiType;
private Integer couType; private Integer couType;
private Integer bindType; private Integer bindType;
...@@ -45,6 +45,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable { ...@@ -45,6 +45,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
private String mcouponId; private String mcouponId;
private String uid; private String uid;
//private String couponId; //private String couponId;
private Integer exclusive;
private Integer state; private Integer state;
private String ccode; private String ccode;
private LocalDateTime bindAt; private LocalDateTime bindAt;
...@@ -77,7 +78,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable { ...@@ -77,7 +78,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setTitle(coupon.getTitle()); this.setTitle(coupon.getTitle());
this.setLabel(coupon.getLabel()); this.setLabel(coupon.getLabel());
this.setNotice(coupon.getNotice()); this.setNotice(coupon.getNotice());
this.setExclusive(coupon.getExclusive()); //this.setExclusive(coupon.getExclusive());
this.setBusiType(coupon.getBusiType()); this.setBusiType(coupon.getBusiType());
this.setCouType(coupon.getCouType()); this.setCouType(coupon.getCouType());
this.setBindType(coupon.getBindType()); this.setBindType(coupon.getBindType());
...@@ -95,6 +96,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable { ...@@ -95,6 +96,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setUcouponId(userCoupon.getUcouponId()); this.setUcouponId(userCoupon.getUcouponId());
this.setMcouponId(userCoupon.getMcouponId()); this.setMcouponId(userCoupon.getMcouponId());
this.setUid(userCoupon.getUid()); this.setUid(userCoupon.getUid());
this.setExclusive(userCoupon.getExclusive());
this.setState(userCoupon.getState()); this.setState(userCoupon.getState());
this.setCcode(userCoupon.getCcode()); this.setCcode(userCoupon.getCcode());
this.setBindAt(userCoupon.getBindAt()); this.setBindAt(userCoupon.getBindAt());
......
package com.liquidnet.service.candy.dto.admin;
import com.liquidnet.service.candy.entity.CandyCoupon;
import lombok.Data;
import java.io.Serializable;
@Data
public class CandyCouponFilterDto implements Serializable, Cloneable {
private static final long serialVersionUID = -3287018184399499549L;
private String couponId;
private String title;
private static final CandyCouponFilterDto obj = new CandyCouponFilterDto();
public static CandyCouponFilterDto getNew() {
try {
return (CandyCouponFilterDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new CandyCouponFilterDto();
}
}
public CandyCouponFilterDto copy(CandyCoupon source) {
if (null == source) return this;
this.setCouponId(source.getCouponId());
this.setTitle(source.getTitle());
return this;
}
}
...@@ -10,9 +10,12 @@ public class CandyCouponListParam { ...@@ -10,9 +10,12 @@ public class CandyCouponListParam {
*/ */
private String keyword; private String keyword;
/** /**
* 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换] * 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]
* <p>
* 多种方式则以,分隔入参
* </p>
*/ */
private Integer bindType; private String bindType;
/** /**
* 业务类别[0-全场|1-演出|2-商品|3-优先购] * 业务类别[0-全场|1-演出|2-商品|3-优先购]
*/ */
...@@ -34,11 +37,11 @@ public class CandyCouponListParam { ...@@ -34,11 +37,11 @@ public class CandyCouponListParam {
this.keyword = keyword; this.keyword = keyword;
} }
public Integer getBindType() { public String getBindType() {
return bindType; return bindType;
} }
public void setBindType(Integer bindType) { public void setBindType(String bindType) {
this.bindType = bindType; this.bindType = bindType;
} }
......
package com.liquidnet.service.candy.dto.admin;
import com.liquidnet.service.candy.entity.CandyCoupon;
import com.liquidnet.service.candy.entity.CandyCouponRule;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class CandyCouponTemplateDto implements Serializable, Cloneable {
private static final long serialVersionUID = 6278406576442685501L;
/* com.liquidnet.service.candy.entity.CandyCoupon */
private String couponId;
private Integer state;
private String title;
private String label;
private String notice;
private Integer exclusive;
private Integer busiType;
private Integer couType;
private Integer bindType;
private BigDecimal discount;
private BigDecimal valFace;
private BigDecimal valOver;
private BigDecimal valMinus;
private Integer overlay;
private Integer overlayLevel;
private Integer validity;
private Integer redeemValidity;
private LocalDateTime redeemStart;
private LocalDateTime redeemStop;
private LocalDateTime effectAt;
private LocalDateTime expireAt;
//private String operator;
//private LocalDateTime createdAt;
//private LocalDateTime updatedAt;
//private String comment;
/* com.liquidnet.service.candy.entity.CandyCouponRule */
private List<CandyCouponRule> useRules;
private static final CandyCouponTemplateDto obj = new CandyCouponTemplateDto();
public static CandyCouponTemplateDto getNew() {
try {
return (CandyCouponTemplateDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new CandyCouponTemplateDto();
}
}
public CandyCouponTemplateDto copy(CandyCoupon source) {
if (null == source) return this;
this.setCouponId(source.getCouponId());
this.setState(source.getState());
this.setTitle(source.getTitle());
this.setLabel(source.getLabel());
this.setNotice(source.getNotice());
this.setExclusive(source.getExclusive());
this.setBusiType(source.getBusiType());
this.setCouType(source.getCouType());
this.setBindType(source.getBindType());
this.setDiscount(source.getDiscount());
this.setValFace(source.getValFace());
this.setValOver(source.getValOver());
this.setValMinus(source.getValMinus());
this.setOverlay(source.getOverlay());
this.setOverlayLevel(source.getOverlayLevel());
this.setValidity(source.getValidity());
this.setRedeemValidity(source.getRedeemValidity());
this.setRedeemStart(source.getRedeemStart());
this.setRedeemStop(source.getRedeemStop());
this.setEffectAt(source.getEffectAt());
this.setExpireAt(source.getExpireAt());
return this;
}
}
...@@ -12,7 +12,7 @@ public class CandyMgtCouponListParam { ...@@ -12,7 +12,7 @@ public class CandyMgtCouponListParam {
*/ */
private String keyword; private String keyword;
/** /**
* 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换] * 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]
*/ */
private Integer bindType; private Integer bindType;
/** /**
......
...@@ -37,6 +37,18 @@ public class CandyCommonCoupon implements Serializable { ...@@ -37,6 +37,18 @@ public class CandyCommonCoupon implements Serializable {
*/ */
private String couponId; private String couponId;
/**
* 专享标识[0-常规|1-会员专属]
* <p>
* 变更前:`candy_coupon.exclusive`用于根据会员有效期设置券有效期及标识用户端券分类(普通券、会员券等);
* 变更后:
* 原`candy_coupon.exclusive`废除
* 实际发放逻辑中,原标识"是否根据会员有效期设置券有效期"的`candy_coupon.exclusive`字段改为`candy_mgt_coupon.exclusively`
* 在`candy_user_coupon`及`candy_common_coupon`中添加`exclusive`字段,发放时直接由`candy_mgt_coupon.exclusively`赋值该属性
* </p>
*/
private Integer exclusive;
/** /**
* 公有券状态[1-可用|2-无效|3-已过期] * 公有券状态[1-可用|2-无效|3-已过期]
*/ */
......
...@@ -65,7 +65,7 @@ public class CandyCoupon implements Serializable { ...@@ -65,7 +65,7 @@ public class CandyCoupon implements Serializable {
private Integer couType; private Integer couType;
/** /**
* 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换] * 领取方式[0-用户输入兑换|1-发放至用户|2-积分兑换|3-发放需领取|4-会员专属]
*/ */
private Integer bindType; private Integer bindType;
......
...@@ -2,11 +2,12 @@ package com.liquidnet.service.candy.entity; ...@@ -2,11 +2,12 @@ package com.liquidnet.service.candy.entity;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/** /**
* <p> * <p>
* 券发放管理 * 券发放管理
...@@ -56,6 +57,18 @@ public class CandyMgtCoupon implements Serializable { ...@@ -56,6 +57,18 @@ public class CandyMgtCoupon implements Serializable {
*/ */
private LocalDateTime eventAt; private LocalDateTime eventAt;
/**
* 专享标识[0-常规|1-会员专属]
* <p>
* 变更前:`candy_coupon.exclusive`用于根据会员有效期设置券有效期及标识用户端券分类(普通券、会员券等);
* 变更后:
* 原`candy_coupon.exclusive`废除
* 实际发放逻辑中,原标识"是否根据会员有效期设置券有效期"的`candy_coupon.exclusive`字段改为`candy_mgt_coupon.exclusively`
* 在`candy_user_coupon`及`candy_common_coupon`中添加`exclusive`字段,发放时直接由`candy_mgt_coupon.exclusively`赋值该属性
* </p>
*/
private Integer exclusively;
/** /**
* 操作人 * 操作人
*/ */
......
...@@ -43,6 +43,18 @@ public class CandyUserCoupon implements Serializable,Cloneable { ...@@ -43,6 +43,18 @@ public class CandyUserCoupon implements Serializable,Cloneable {
*/ */
private String couponId; private String couponId;
/**
* 专享标识[0-常规|1-会员专属]
* <p>
* 变更前:`candy_coupon.exclusive`用于根据会员有效期设置券有效期及标识用户端券分类(普通券、会员券等);
* 变更后:
* 原`candy_coupon.exclusive`废除
* 实际发放逻辑中,原标识"是否根据会员有效期设置券有效期"的`candy_coupon.exclusive`字段改为`candy_mgt_coupon.exclusively`
* 在`candy_user_coupon`及`candy_common_coupon`中添加`exclusive`字段,发放时直接由`candy_mgt_coupon.exclusively`赋值该属性
* </p>
*/
private Integer exclusive;
/** /**
* 用户券状态[1-可用|2-无效|3-已过期|5-已使用] * 用户券状态[1-可用|2-无效|3-已过期|5-已使用]
*/ */
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<result column="title" jdbcType="VARCHAR" property="title"/> <result column="title" jdbcType="VARCHAR" property="title"/>
<result column="label" jdbcType="VARCHAR" property="label"/> <result column="label" jdbcType="VARCHAR" property="label"/>
<result column="notice" jdbcType="VARCHAR" property="notice"/> <result column="notice" jdbcType="VARCHAR" property="notice"/>
<result column="exclusive" jdbcType="SMALLINT" property="exclusive"/> <!-- <result column="exclusive" jdbcType="SMALLINT" property="exclusive"/>-->
<result column="busi_type" jdbcType="SMALLINT" property="busiType"/> <result column="busi_type" jdbcType="SMALLINT" property="busiType"/>
<result column="cou_type" jdbcType="SMALLINT" property="couType"/> <result column="cou_type" jdbcType="SMALLINT" property="couType"/>
<result column="bind_type" jdbcType="SMALLINT" property="bindType"/> <result column="bind_type" jdbcType="SMALLINT" property="bindType"/>
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
<result column="ccoupon_id" jdbcType="VARCHAR" property="ccouponId"/> <result column="ccoupon_id" jdbcType="VARCHAR" property="ccouponId"/>
<result column="mcoupon_id" jdbcType="VARCHAR" property="mcouponId"/> <result column="mcoupon_id" jdbcType="VARCHAR" property="mcouponId"/>
<!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />--> <!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />-->
<result column="exclusive" jdbcType="SMALLINT" property="exclusive"/>
<result column="state" jdbcType="TINYINT" property="state"/> <result column="state" jdbcType="TINYINT" property="state"/>
<result column="ranged" jdbcType="TINYINT" property="ranged"/> <result column="ranged" jdbcType="TINYINT" property="ranged"/>
<!-- <result column="operator" jdbcType="VARCHAR" property="operator" />--> <!-- <result column="operator" jdbcType="VARCHAR" property="operator" />-->
...@@ -41,11 +42,11 @@ ...@@ -41,11 +42,11 @@
</resultMap> </resultMap>
<sql id="Rst_CommonCouponBasicDto_Column_List"> <sql id="Rst_CommonCouponBasicDto_Column_List">
cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.`exclusive`, cc.busi_type, cc.cou_type, cc.bind_type, cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.busi_type, cc.cou_type, cc.bind_type,
cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level, cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level,
cc.validity, cc.redeem_validity, cc.redeem_start, cc.redeem_stop, cc.effect_at, cc.expire_at, cc.validity, cc.redeem_validity, cc.redeem_start, cc.redeem_stop, cc.effect_at, cc.expire_at,
ccc.ccoupon_id, ccc.mcoupon_id, ccc.`state`, ccc.ranged, ccc.created_at ccc.ccoupon_id, ccc.mcoupon_id, ccc.`exclusive`, ccc.`state`, ccc.ranged, ccc.created_at
</sql> </sql>
<select id="selectMultiForCommonCouponBasicDto" resultMap="Rst_CommonCouponBasicDto"> <select id="selectMultiForCommonCouponBasicDto" resultMap="Rst_CommonCouponBasicDto">
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<result column="title" jdbcType="VARCHAR" property="title"/> <result column="title" jdbcType="VARCHAR" property="title"/>
<result column="label" jdbcType="VARCHAR" property="label"/> <result column="label" jdbcType="VARCHAR" property="label"/>
<result column="notice" jdbcType="VARCHAR" property="notice"/> <result column="notice" jdbcType="VARCHAR" property="notice"/>
<result column="exclusive" jdbcType="SMALLINT" property="exclusive"/> <!-- <result column="exclusive" jdbcType="SMALLINT" property="exclusive"/>-->
<result column="busi_type" jdbcType="SMALLINT" property="busiType"/> <result column="busi_type" jdbcType="SMALLINT" property="busiType"/>
<result column="cou_type" jdbcType="SMALLINT" property="couType"/> <result column="cou_type" jdbcType="SMALLINT" property="couType"/>
<result column="bind_type" jdbcType="SMALLINT" property="bindType"/> <result column="bind_type" jdbcType="SMALLINT" property="bindType"/>
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
<!-- <result column="mcoupon_id" jdbcType="VARCHAR" property="mcouponId" />--> <!-- <result column="mcoupon_id" jdbcType="VARCHAR" property="mcouponId" />-->
<result column="uid" jdbcType="VARCHAR" property="uid"/> <result column="uid" jdbcType="VARCHAR" property="uid"/>
<!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />--> <!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />-->
<result column="exclusive" jdbcType="SMALLINT" property="exclusive"/>
<result column="state" jdbcType="TINYINT" property="state"/> <result column="state" jdbcType="TINYINT" property="state"/>
<result column="ccode" jdbcType="VARCHAR" property="ccode"/> <result column="ccode" jdbcType="VARCHAR" property="ccode"/>
<result column="bind_at" jdbcType="TIMESTAMP" property="bindAt"/> <result column="bind_at" jdbcType="TIMESTAMP" property="bindAt"/>
...@@ -43,11 +44,11 @@ ...@@ -43,11 +44,11 @@
</resultMap> </resultMap>
<sql id="Rst_UserCouponBasicDto_Column_List"> <sql id="Rst_UserCouponBasicDto_Column_List">
cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.`exclusive`, cc.busi_type, cc.cou_type, cc.bind_type, cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.busi_type, cc.cou_type, cc.bind_type,
cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level, cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level,
cc.validity, cc.redeem_validity, cc.redeem_start, cc.redeem_stop, cc.validity, cc.redeem_validity, cc.redeem_start, cc.redeem_stop,
cuc.ucoupon_id, cuc.mcoupon_id, cuc.`uid`, cuc.`state`, cuc.ccode, cuc.bind_at, cuc.dued_at, cuc.used_at, cuc.used_for cuc.ucoupon_id, cuc.mcoupon_id, cuc.`uid`, cuc.`exclusive`, cuc.`state`, cuc.ccode, cuc.bind_at, cuc.dued_at, cuc.used_at, cuc.used_for
</sql> </sql>
<select id="selectMultiForUserCouponBasicDto" resultMap="Rst_UserCouponBasicDto"> <select id="selectMultiForUserCouponBasicDto" resultMap="Rst_UserCouponBasicDto">
......
...@@ -213,6 +213,26 @@ public class KylinOrderTickets implements Serializable, Cloneable { ...@@ -213,6 +213,26 @@ public class KylinOrderTickets implements Serializable, Cloneable {
*/ */
private String comment; private String comment;
/**
* comment
*/
private String area;
/**
* Province
*/
private String areaProvince;
/**
* City
*/
private String areaCity;
/**
* County
*/
private String areaCounty;
/** /**
* 创建时间 * 创建时间
*/ */
...@@ -228,12 +248,12 @@ public class KylinOrderTickets implements Serializable, Cloneable { ...@@ -228,12 +248,12 @@ public class KylinOrderTickets implements Serializable, Cloneable {
* *
* @return * @return
*/ */
public Object[] getAddObject(String ipAddress) { public Object[] getAddObject(String ipAddress,String area,String areaProvince,String areaCity,String areaCounty) {
return new Object[]{ return new Object[]{
orderTicketsId, userId, userName, userMobile, performanceTitle, orderCode, qrCode, orderType, orderVersion, orderTicketsId, userId, userName, userMobile, performanceTitle, orderCode, qrCode, orderType, orderVersion,
number, price, priceMember, priceTotal, priceVoucher, priceActual, priceExpress, priceRefund, refundNumber, number, price, priceMember, priceTotal, priceVoucher, priceActual, priceExpress, priceRefund, refundNumber,
payType, paymentType, timePay, expressContacts, expressAddress, expressPhone, couponType, getTicketType, payType, paymentType, timePay, expressContacts, expressAddress, expressPhone, couponType, getTicketType,
getTicketDescribe, payCountdownMinute, comment, createdAt, updatedAt, payCode,ipAddress getTicketDescribe, payCountdownMinute, comment, createdAt, updatedAt, payCode,ipAddress,area,areaProvince,areaCity,areaCounty
}; };
} }
......
...@@ -55,4 +55,8 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> { ...@@ -55,4 +55,8 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<OrderExportDao> exportOrderByPerformanceIdAll(String performancesId); List<OrderExportDao> exportOrderByPerformanceIdAll(String performancesId);
List<OrderExportDao> exportOrderByPerformanceIdPay(String performancesId); List<OrderExportDao> exportOrderByPerformanceIdPay(String performancesId);
PerformanceSimpleAllDao getPerformanceSimpleByPerformancesId(String performancesId);
PerformanceSimpleAllDao getPerformanceSimpleByTimesId(String timesId);
PerformanceSimpleAllDao getPerformanceSimpleByTicketId(String ticketId);
} }
...@@ -58,7 +58,7 @@ ...@@ -58,7 +58,7 @@
<if test="statusStr == '9'"> <if test="statusStr == '9'">
AND a.status = 9 AND a.status = 9
</if> </if>
<if test="statusStr 1= '1'"> <if test="statusStr != '1'">
AND a.status = 1 AND a.type != 3 AND a.status = 1 AND a.type != 3
</if> </if>
<if test="statusStr != '1' and statusStr != '9'"> <if test="statusStr != '1' and statusStr != '9'">
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
<if test="statusStr == '9'"> <if test="statusStr == '9'">
AND a.status = 9 AND a.status = 9
</if> </if>
<if test="statusStr 1= '1'"> <if test="statusStr != '1'">
AND a.status = 1 AND a.type != 3 AND a.status = 1 AND a.type != 3
</if> </if>
<if test="statusStr != '1' and statusStr != '9'"> <if test="statusStr != '1' and statusStr != '9'">
......
package com.liquidnet.service.sweet.mapper; package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.entity.SweetStrawberryPosterLineup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
/** /**
* <p> * <p>
* 正在现场服务号关注事件储存用户信息表 Mapper 接口 * 2021草莓音乐节海报活动选择阵容表 Mapper 接口
* </p> * </p>
* *
* @author jiangxiulong * @author jiangxiulong
* @since 2021-08-03 * @since 2021-11-25
*/ */
public interface SweetWechatUserMapper extends BaseMapper<SweetWechatUser> { public interface SweetStrawberryPosterLineupMapper extends BaseMapper<SweetStrawberryPosterLineup> {
} }
package com.liquidnet.service.sweet.mapper; package com.liquidnet.service.sweet.mapper;
import com.liquidnet.service.sweet.entity.SweetAppletUser; import com.liquidnet.service.sweet.entity.SweetStrawberryPoster;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/** /**
* <p> * <p>
* 小程序登录记录用户解密后信息表 Mapper 接口 * 2021草莓音乐节海报活动表 Mapper 接口
* </p> * </p>
* *
* @author jiangxiulong * @author jiangxiulong
* @since 2021-11-08 * @since 2021-11-25
*/ */
public interface SweetAppletUserMapper extends BaseMapper<SweetAppletUser> { public interface SweetStrawberryPosterMapper extends BaseMapper<SweetStrawberryPoster> {
} }
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.liquidnet.service.sweet.mapper.SweetStrawberryPosterLineupMapper">
</mapper>
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