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

Commit 31e8fdb8 authored by qinshuangshuang's avatar qinshuangshuang
parents 21b63356 d55113c0
......@@ -16,7 +16,7 @@
**/target
# Test
**/test
#**/test
# Gradle
build
......
package com.liquidnet.service.adam.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@ApiModel(value = "AdamMemberOrderCallbackResult", description = "购买会员或会员码的支付回调")
@ApiModel(value = "AdamMemberOrderCallbackParam", description = "购买会员或会员码的支付回调")
@Data
public class AdamMemberOrderCallbackResult implements Serializable {
public class AdamMemberOrderCallbackParam implements Serializable {
private static final long serialVersionUID = -4161563334263071103L;
@ApiModelProperty(position = 0, required = true, value = "订单状态")
private Integer status;
@ApiModelProperty(position = 1, required = true, value = "订单号")
@JsonProperty("order_code")
private String orderCode;
@ApiModelProperty(position = 2, required = true, value = "支付单号")
private String code;
@ApiModelProperty(position = 3, required = true, value = "购买类型")
private String type;
@ApiModelProperty(position = 4, required = true, value = "金额")
private BigDecimal price;
@ApiModelProperty(position = 5, required = true, value = "支付类型")
@JsonProperty("payment_type")
private String paymentType;
@ApiModelProperty(position = 6, required = true, value = "支付时间")
private LocalDateTime paymentAt;
@JsonProperty("payment_at")
private String paymentAt;
}
package com.liquidnet.service.adam.dto;
import com.liquidnet.commons.lang.constant.LnsRegex;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
@ApiModel(value = "AdamMemberOrderCodeParam", description = "使用兑换码入参")
......@@ -11,10 +13,13 @@ import java.io.Serializable;
public class AdamMemberOrderCodeParam implements Serializable {
private static final long serialVersionUID = 2500742355642406263L;
@ApiModelProperty(position = 10, required = true, value = "类型:2-会员码,3-礼包码", example = "3")
@NotNull@Min(2)@Max(3)
private Integer type;
@ApiModelProperty(position = 11, required = true, value = "兑换码", example = "0")
@NotBlank
private String memberCode;
@ApiModelProperty(position = 12, required = true, value = "生日", example = "2021-05-27")
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "时间格式有误")
private String birthday;
@ApiModelProperty(position = 13, required = false, value = "姓名")
private String name;
......
......@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
......@@ -12,18 +13,25 @@ import java.math.BigDecimal;
public class AdamMemberOrderParam implements Serializable {
private static final long serialVersionUID = -2605176979349053352L;
@ApiModelProperty(position = 10, required = true, value = "会员ID[50]")
@NotBlank
private String memberId;
@ApiModelProperty(position = 11, required = true, value = "购买方式:0-购买会员,1-购买会员码", allowableValues = "0,1")
@NotNull@Min(0)@Max(1)
private Integer mode;
@ApiModelProperty(position = 12, required = true, value = "应付金额", example = "199")
@ApiModelProperty(position = 12, required = true, value = "应付金额", example = "0.01")
@DecimalMin("0.01")
private BigDecimal price;
@ApiModelProperty(position = 13, required = true, value = "实付金额", example = "199")
@ApiModelProperty(position = 13, required = true, value = "实付金额", example = "0.01")
@DecimalMin("0.01")
private BigDecimal pricePaid;
@ApiModelProperty(position = 14, required = true, value = "会员价格ID")
@NotBlank
private String memberPriceId;
@ApiModelProperty(position = 15, required = true, value = "支付终端", allowableValues = "app,wap,js,applet")
@NotBlank
private String deviceFrom;
@ApiModelProperty(position = 16, required = true, value = "支付方式", allowableValues = "alipay,wepay")
@NotBlank
private String payType;
@ApiModelProperty(position = 17, required = false, value = "苹果支付使用")
private String productId;
......
......@@ -3,33 +3,42 @@ package com.liquidnet.service.adam.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NonNull;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 会员价格
*/
@ApiModel(value = "AdamMemberPriceParam", description = "添加编辑会员价格")
@ApiModel(value = "AdamMemberPriceParam", description = "添加/编辑会员价格")
@Data
public class AdamMemberPriceParam implements Serializable {
private static final long serialVersionUID = -6432796310264973696L;
@ApiModelProperty(position = 0, required = false, value = "价格id")
private Integer mid;
@ApiModelProperty(position = 1, required = false, value = "会员价格ID")
@ApiModelProperty(position = 1, value = "会员价格ID")
private String memberPriceId;
@ApiModelProperty(position = 2, required = false, value = "会员类型ID")
@ApiModelProperty(position = 2, value = "会员类型ID")
@NotBlank
private String memberId;
@ApiModelProperty(position = 3, required = false, value = "状态0 不可用 1上线中 2已下线", allowableValues = "0,1,2")
private Integer status;
@ApiModelProperty(position = 4, required = false, value = "会员价格包名称", example = "年卡")
@ApiModelProperty(position = 3, value = "状态:0-不可用,1-上线中,2-已下线", allowableValues = "0,1,2")
@NonNull
@Min(0)
@Max(2)
private Integer state;
@ApiModelProperty(position = 4, value = "会员价格包名称", example = "年卡")
@Size(min = 1, max = 30)
private String name;
@ApiModelProperty(position = 5, required = false, value = "原价", example = "199")
@ApiModelProperty(position = 5, value = "原价", example = "199")
@DecimalMin("0.01")
private BigDecimal price;
@ApiModelProperty(position = 6, required = false, value = "折扣价", example = "199")
@ApiModelProperty(position = 6, value = "折扣价", example = "199")
@DecimalMin("0.01")
private BigDecimal priceFixed;
@ApiModelProperty(position = 7, required = false, value = "会员包有效天数", example = "365")
@ApiModelProperty(position = 7, value = "会员包有效天数", example = "365")
@NotNull
@Min(30)
private Integer days;
@ApiModelProperty(position = 8, required = false, value = "会员包须知", example = "会员包须知")
@ApiModelProperty(position = 8, value = "会员包须知", example = "会员包须知")
private String detail;
}
......@@ -21,7 +21,7 @@ public class AdamMemberCodeVo implements Serializable, Cloneable {
@ApiModelProperty(position = 4, value = "会员编号")
private String memberNo;
@ApiModelProperty(position = 5, value = "状态:0-未使用,1-已使用,2-不可用")
private int state;
private Integer state;
@ApiModelProperty(position = 6, value = "购买会员码的订单编号")
private String buyOrderNo;
@ApiModelProperty(position = 7, value = "购买会员码的用户id")
......
......@@ -16,7 +16,7 @@ public class AdamMemberOrderPreviewVo implements Serializable {
private String memberTitle;
@ApiModelProperty(position = 12, value = "价格详情")
private AdamMemberPriceVo priceVo;
@ApiModelProperty(position = 13, value = "是否实名[true-是]")
@ApiModelProperty(position = 13, value = "实名信息")
private AdamRealInfoVo realInfoVo;
@ApiModelProperty(position = 14, value = "生日")
private String birthday;
......
......@@ -33,25 +33,26 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
private String memberNo;
@ApiModelProperty(position = 9, value = "支付终端", allowableValues = "app,wap,js,applet")
private String deviceFrom;
@ApiModelProperty(position = 9, value = "支付方式", allowableValues = "alipay,wepay")
@ApiModelProperty(position = 10, value = "支付方式", allowableValues = "alipay,wepay")
private String payType;
@ApiModelProperty(position = 10, value = "支付单号")
@ApiModelProperty(position = 11, value = "支付单号")
private String payNo;
@ApiModelProperty(position = 11, value = "支付时间")
@ApiModelProperty(position = 12, value = "支付时间")
private String paymentAt;
@ApiModelProperty(position = 13, value = "创建时间")
private String createdAt;
@ApiModelProperty(position = 14, value = "兑换码")
private String memberCode;
@ApiModelProperty(position = 15, value = "价格")
@ApiModelProperty(position = 14, value = "价格")
private BigDecimal price;
@ApiModelProperty(position = 16, value = "客户端IP")
@ApiModelProperty(position = 15, value = "客户端IP")
private String ip;
@ApiModelProperty(position = 17, value = "客户端来源")
@ApiModelProperty(position = 16, value = "客户端来源")
private String source;
@ApiModelProperty(position = 18, value = "客户端版本")
@ApiModelProperty(position = 17, value = "客户端版本")
private String version;
@ApiModelProperty(position = 20, value = "兑换码")
private String memberCode;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
public static AdamMemberOrderVo getNew() {
......@@ -63,7 +64,7 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
return new AdamMemberOrderVo();
}
public static List<Object> getMemberOrderMqList (AdamMemberOrderVo orderVo) {
public static List<Object> getMemberOrderMqList(AdamMemberOrderVo orderVo) {
List<Object> mqList = new ArrayList<>();
mqList.add(orderVo.getOrderNo());
mqList.add(orderVo.getUid());
......
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamAddresses;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -16,7 +19,7 @@ public class AdamMemberPriceVo implements Serializable {
@ApiModelProperty(position = 2, value = "会员类型ID")
private String memberId;
@ApiModelProperty(position = 3, value = "价格状态[0-不可用,1-上线中,2-已下线]")
private Integer status;
private Integer state;
@ApiModelProperty(position = 4, value = "价格包名称")
private String name;
@ApiModelProperty(position = 5, value = "原价")
......@@ -31,4 +34,28 @@ public class AdamMemberPriceVo implements Serializable {
private String createdAt;
@ApiModelProperty(position = 10, value = "更新时间")
private String updatedAt;
private static final AdamMemberPriceVo obj = new AdamMemberPriceVo();
public static AdamMemberPriceVo getNew() {
try {
return (AdamMemberPriceVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberPriceVo();
}
}
public AdamMemberPriceVo copy(AdamMemberPrice source) {
this.setMemberPriceId(source.getMemberPriceId());
this.setMemberId(source.getMemberId());
this.setState(source.getState());
this.setName(source.getName());
this.setPrice(source.getPrice());
this.setPriceFixed(source.getPriceFixed());
this.setDays(source.getDays());
this.setDetail(source.getDetail());
this.setCreatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(source.getCreatedAt()));
this.setUpdatedAt(DateUtil.Formatter.yyyyMMddHHmmss.format(source.getUpdatedAt()));
return this;
}
}
......@@ -43,16 +43,4 @@ public class AdamMemberRightsVo implements java.io.Serializable, Cloneable {
this.sort = sort;
return this;
}
public List<AdamMemberRightsVo> initDefault() {
return Arrays.asList(AdamMemberRightsVo.getNew().setName("专属").setSort(1)
.setCover("https://img.zhengzai.tv/files/2020/08/28/5f490c4477d72.png"),
AdamMemberRightsVo.getNew().setName("优惠").setSort(2)
.setCover("https://img.zhengzai.tv/files/2020/08/28/5f490c685e7a8.png"),
AdamMemberRightsVo.getNew().setName("优先").setSort(3)
.setCover("https://img.zhengzai.tv/files/2020/08/28/5f490c726a750.png"),
AdamMemberRightsVo.getNew().setName("专属").setSort(4)
.setCover("https://img.zhengzai.tv/files/2020/08/28/5f490c5de2870.png")
);
}
}
......@@ -43,15 +43,15 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
@ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0")
private Integer displayAgreement;
@ApiModelProperty(position = 13, value = "状态[1-NORMAL,2-INVALID]")
private String state;
private Integer state;
@ApiModelProperty(position = 14, value = "限购数量,0不限购[200]", example = "0")
private Integer limitation;
@ApiModelProperty(position = 15, value = "会员卡价格信息")
private List<AdamMemberPriceVo> priceVoList;
@ApiModelProperty(position = 20, value = "会员专属权益")
@ApiModelProperty(position = 20, value = "会员卡价格信息")
private List<AdamMemberPriceVo> priceVoList;
@ApiModelProperty(position = 21, value = "会员专属权益")
private List<AdamMemberRightsVo> rightsVoList;
@ApiModelProperty(position = 21, value = "用户会员信息")
@ApiModelProperty(position = 22, value = "用户会员信息")
private AdamUserMemberVo memberInfo;
private static final AdamMemberVo obj = new AdamMemberVo();
......@@ -65,48 +65,67 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
return new AdamMemberVo();
}
/**
* 设置会员价格
* @param adamMemberPrices
* @return
*/
@JsonIgnore
public static List<AdamMemberPriceVo> setMemberPrice(List<AdamMemberPrice> adamMemberPrices){
List<AdamMemberPriceVo> adamMemberPricesVo = new ArrayList<>();
for (int i =0;i<adamMemberPrices.size();i++){
AdamMemberPrice adamMemberPrice = adamMemberPrices.get(i);
AdamMemberPriceVo adamMemberPriceVo = new AdamMemberPriceVo();
BeanUtils.copyProperties(adamMemberPrice, adamMemberPriceVo);
adamMemberPriceVo.setCreatedAt(DateUtil.format(adamMemberPrice.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
adamMemberPriceVo.setUpdatedAt(DateUtil.format(adamMemberPrice.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
}
return adamMemberPricesVo;
public AdamMemberVo copy(AdamMember source) {
this.setMemberId(source.getMemberId());
this.setName(source.getName());
this.setTitle(source.getTitle());
this.setSubTitle(source.getSubTitle());
this.setIcon(source.getIcon());
this.setAvatar(source.getAvatar());
this.setInterestsDetail(source.getInterestsDetail());
this.setNotes(source.getNotes());
this.setIsNotice(source.getIsNotice());
this.setNoticeInfo(source.getNoticeInfo());
this.setNoticeTitle(source.getNoticeTitle());
this.setNeedQuestion(source.getNeedQuestion());
this.setDisplayAgreement(source.getDisplayAgreement());
this.setState(source.getState());
this.setLimitation(source.getLimitation());
return this;
}
/**
* 组装MQ需要的对象
* @param adamMember
* @return
*/
@JsonIgnore
public List<Object> getMqList(AdamMember adamMember){
List<Object> paramList = new ArrayList<>();
paramList.add(adamMember.getName());
paramList.add(adamMember.getTitle());
paramList.add(adamMember.getSubTitle());
paramList.add(adamMember.getIcon());
paramList.add(adamMember.getAvatar());
paramList.add(adamMember.getStartNo());
paramList.add(adamMember.getType());
paramList.add(adamMember.getInterestsDetail());
paramList.add(adamMember.getNotes());
paramList.add(adamMember.getIsNotice());
paramList.add(adamMember.getNoticeInfo());
paramList.add(adamMember.getNoticeTitle());
paramList.add(adamMember.getNeedQuestion());
paramList.add(adamMember.getDisplayAgreement());
paramList.add(adamMember.getMemberId());
paramList.add(adamMember.getLimitation());
return paramList;
}
// /**
// * 设置会员价格
// * @param adamMemberPrices
// * @return
// */
// @JsonIgnore
// public static List<AdamMemberPriceVo> setMemberPrice(List<AdamMemberPrice> adamMemberPrices){
// List<AdamMemberPriceVo> adamMemberPricesVo = new ArrayList<>();
// for (int i =0;i<adamMemberPrices.size();i++){
// AdamMemberPrice adamMemberPrice = adamMemberPrices.get(i);
// AdamMemberPriceVo adamMemberPriceVo = new AdamMemberPriceVo();
// BeanUtils.copyProperties(adamMemberPrice, adamMemberPriceVo);
// adamMemberPriceVo.setCreatedAt(DateUtil.format(adamMemberPrice.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
// adamMemberPriceVo.setUpdatedAt(DateUtil.format(adamMemberPrice.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
// }
// return adamMemberPricesVo;
// }
// /**
// * 组装MQ需要的对象
// * @param adamMember
// * @return
// */
// @JsonIgnore
// public List<Object> getMqList(AdamMember adamMember){
// List<Object> paramList = new ArrayList<>();
// paramList.add(adamMember.getName());
// paramList.add(adamMember.getTitle());
// paramList.add(adamMember.getSubTitle());
// paramList.add(adamMember.getIcon());
// paramList.add(adamMember.getAvatar());
// paramList.add(adamMember.getStartNo());
// paramList.add(adamMember.getType());
// paramList.add(adamMember.getInterestsDetail());
// paramList.add(adamMember.getNotes());
// paramList.add(adamMember.getIsNotice());
// paramList.add(adamMember.getNoticeInfo());
// paramList.add(adamMember.getNoticeTitle());
// paramList.add(adamMember.getNeedQuestion());
// paramList.add(adamMember.getDisplayAgreement());
// paramList.add(adamMember.getMemberId());
// paramList.add(adamMember.getLimitation());
// return paramList;
// }
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
......@@ -48,6 +48,6 @@ public interface IAdamMemberOrderService extends IService<AdamMemberOrder> {
* 支付回调
* @return
*/
ResponseDto<Object> memberNotifyCallBack(AdamMemberOrderCallbackResult result);
ResponseDto<Object> memberNotifyCallBack(AdamMemberOrderCallbackParam parameter);
}
......@@ -63,8 +63,26 @@ public interface IAdamRdmService {
AdamMemberSimpleVo getMemberSimpleVo();
AdamMemberVo getMemberVoByMemberId(String memberId);
boolean setMemberPriceVoByMemberId(String memberId, List<AdamMemberPriceVo> vos);
List<AdamMemberPriceVo> getMemberPriceVoByMemberId(String memberId);
AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId);
boolean setMemberRightsVoByMemberId(String memberId, List<AdamMemberRightsVo> vos);
List<AdamMemberRightsVo> getMemberRightsVoByMemberId(String memberId);
String getMemberAgreement();
boolean setMemberNoByMemberId(String memberId, long val);
long incrMemberNoByMemberId(String memberId);
Object getMemberMaxNoByMemberId(String memberId);
boolean setTagsForSex(List<AdamTagVo> voList);
List<AdamTagVo> getTagsForSex();
......@@ -72,4 +90,8 @@ public interface IAdamRdmService {
boolean setTagsForMusic(List<AdamTagParentVo> voList);
List<AdamTagParentVo> getTagsForMusic();
boolean setMemberCodeVoByCode(String memberCode, AdamMemberCodeVo vo);
AdamMemberCodeVo getMemberCodeVoByCode(String memberCode);
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName;
/**
......@@ -13,8 +12,5 @@ import com.liquidnet.service.adam.entity.AdamRealName;
* @since 2021-05-10
*/
public interface IAdamRealNameService extends IService<AdamRealName> {
AdamRealInfoVo queryByUid(String uid);
void add(AdamRealName realName);
}
package com.liquidnet.service.adam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamUserMember;
/**
......@@ -9,22 +8,12 @@ import com.liquidnet.service.adam.entity.AdamUserMember;
*/
public interface IAdamUserMemberService extends IService<AdamUserMember> {
String getMaxMemberNo(String memberId);
String getNextMemberNo(String memberId);
// 获取用户会员信息
// AdamUserMemberVo getUserMemberInfo(String uid);
/**
* 获取会员库存
* @param memberId
* @return
*/
boolean getOneFromRepertory(String memberId);
/**
* 限购数量
* @param memberId
* @return
*/
Integer getRepertoryCount(String memberId);
// /**
// * 获取会员库存
// * @param memberId
// * @return
// */
// boolean getOneFromRepertory(String memberId);
}
......@@ -4,15 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.entity.AdamMember;
import java.util.List;
/**
* 会员信息
*/
public interface IAdamMemberAdminService extends IService<AdamMember> {
List<AdamMember> list();
void add(AdamMemberParam info);
void edit(AdamMember info);
......
package com.liquidnet.service.adam.service.admin;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import java.util.List;
public interface IAdamMemberPriceService extends IService<AdamMemberPrice> {
List<AdamMemberPrice> list(String memberId);
public interface IAdamMemberPriceAdminService extends IService<AdamMemberPrice> {
void add(AdamMemberPrice info);
AdamMemberPriceVo query(String memberId, String memberPriceId);
boolean edit(AdamMemberPrice info);
void edit(AdamMemberPriceParam param);
}
package com.liquidnet.service.kylin.constant;
public class KylinRedisConst {
public static final String FIELDS = "kylin:fields:id:";
public static final String FIELDS = "kylin:fields:id";
public static final String PERFORMANCES = "kylin:performances:id:";
public static final String PERFORMANCES_RECOMMEND = "kylin:performances:recommend:id:";
public static final String PERFORMANCES_INVENTORY = "kylin:performances_inventory:ticket:id:";
......
......@@ -24,6 +24,7 @@ import java.util.List;
public class BannersParam implements Serializable {
@ApiModelProperty(value = "Banner主键ID", example = "9822346783245")
private String bannersId;
private String ids;
@ApiModelProperty(value = "标题", required = true, example = "这是一个banner标题")
@NotBlank(message = "请填写标题")
......@@ -62,10 +63,10 @@ public class BannersParam implements Serializable {
@ApiModelProperty(value = "展示的位置 多选 数组", example = "[\"1\", \"3\", \"5\", \"6\", \"8\"]")
@NotEmpty(message = "请选择展示位置")
private List positionList;
private List<String> positionList;
@ApiModelProperty(value = "推广省份 多选 数组", example = "[\"110000\", \"120000\", \"210100\"]")
private List provincesList;
private List<String> provincesList;
@ApiModelProperty(value = "推广省份 多选 数组", example = "[\"北京市\", \"天津市\", \"沈阳市\"]")
private List provincesNameList;
......
......@@ -13,4 +13,16 @@ import lombok.Data;
*/
@Data
public class OrderListReq {
private String orderCode;
private String performanceTitle;
private String userMobile;
private String timePayStart;
private String timePayEnd;
private String sponsorId;
private String paymentType;
private String orderStatus;
private String orderSource;
private String getTicketType;
private String expressStatus;
private String tiedType;
}
......@@ -8,6 +8,7 @@ import java.io.Serializable;
public class KylinOrderTicketEntitiesVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1207664465164005975L;
private Integer mid;
private String orderTicketEntitiesId;
private String orderId;
private String ticketId;
......@@ -31,6 +32,9 @@ public class KylinOrderTicketEntitiesVo implements Serializable, Cloneable {
private String createdAt;
private String updatedAt;
private Integer ticketsmId;
private Integer timemId;
private String checkType;
private String checkedAt;
private String checkUserId;
......
......@@ -14,6 +14,7 @@ import java.math.BigDecimal;
@ApiModel(value = "KylinOrderTicketVo", description = "订单数据")
@Data
public class KylinOrderTicketVo implements Serializable {
private Integer mid;
private static final long serialVersionUID = 5325511589667456213L;
@ApiModelProperty(position = 10, value = "ID")
private String orderTicketsId;
......
......@@ -11,7 +11,9 @@ public interface DamaiService {
//同步演出
Boolean sycPerformance(String performanceId);
//同步场次
Boolean sycTimes(String performanceId, KylinTicketTimes timesData);
Boolean sycTimes(long performanceId, KylinTicketTimes timesData);
//同步票
Boolean sycTicket(String timeId, KylinTickets ticketsData);
Boolean sycTicket(long timeId, KylinTickets ticketsData);
//订单
Boolean sycOrder(long timeId, String ticketsId,long ticketsmId);
}
package com.liquidnet.client.admin.common.enums;
import java.util.*;
/**
* <p>
* banner展示位置
* </p>
*
* @author jiangxiulong
* @since 2021-06-08 12:21 下午
*/
public enum BannersDisplayLocation {
DISPLAY_LOCATION1("首页", 1),
DISPLAY_LOCATION4("演出", 4),
DISPLAY_LOCATION3("周边", 3),
DISPLAY_LOCATION5("积分商城", 5),
DISPLAY_LOCATION6("YOUNG BLOOD", 6),
DISPLAY_LOCATION8("视频", 8);
private String name;
private int index;
BannersDisplayLocation(String name, int index) {
this.name = name;
this.index = index;
}
public String getName() {
return this.name;
}
public int getIndex() {
return this.index;
}
private static List<Object> resultTypeListR = null;
static {
ArrayList<Object> resultTypeList = new ArrayList<>();
for (BannersDisplayLocation resultType : BannersDisplayLocation.values()) {
Map<String, Object> mapTemp = new HashMap<>();
mapTemp.put("id", resultType.index);
mapTemp.put("name", resultType.name);
resultTypeList.add(mapTemp);
}
resultTypeListR = Collections.unmodifiableList(resultTypeList);
}
public static List<Object> getResultType() {
return resultTypeListR;
}
}
package com.liquidnet.client.admin.common.enums;
import org.apache.ibatis.annotations.ResultType;
import java.util.*;
/**
* <p>
* banner跳转类型
* </p>
*
* @author jiangxiulong
* @since 2021-06-08 11:23 上午
*/
public enum BannersTargetType {
TARGET_TYPE1("PGC点播", 1),
TARGET_TYPE2("PGC直播", 2),
TARGET_TYPE5("场地", 5),
TARGET_TYPE6("票务", 6),
TARGET_TYPE7("商品", 7),
TARGET_TYPE8("巡演", 8),
TARGET_TYPE12("活动跳转-可分享", 12),
TARGET_TYPE100("活动跳转", 100),
TARGET_TYPE13("积分商品", 13),
TARGET_TYPE14("商品集合", 14),
TARGET_TYPE20("音乐人", 20),
TARGET_TYPE21("歌曲", 21),
TARGET_TYPE22("专辑", 22),
TARGET_TYPE23("视频播单", 23),
TARGET_TYPE24("音乐人集合", 24),
TARGET_TYPE26("摩登会员", 26),
TARGET_TYPE201("youngBlood报名跳转", 201),
TARGET_TYPE0("不跳转", 0);
private String name;
private int index;
BannersTargetType(String name, int index) {
this.name = name;
this.index = index;
}
public String getName() {
return this.name;
}
public int getIndex() {
return this.index;
}
private static List<Object> resultTypeListR = null;
static {
ArrayList<Object> resultTypeList = new ArrayList<>();
for (BannersTargetType resultType : BannersTargetType.values()) {
Map<String, Object> mapTemp = new HashMap<>();
mapTemp.put("id", resultType.index);
mapTemp.put("name", resultType.name);
resultTypeList.add(mapTemp);
}
resultTypeListR = Collections.unmodifiableList(resultTypeList);
}
public static List<Object> getResultType() {
return resultTypeListR;
}
public static String getTypeName(int index) {
for (BannersTargetType c : BannersTargetType.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
}
......@@ -4,19 +4,23 @@ import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BannersDisplayLocation;
import com.liquidnet.client.admin.common.enums.BannersTargetType;
import com.liquidnet.client.admin.zhengzai.kylin.service.impl.KylinBannersServiceImpl;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.BannerDetailsListDao;
import com.liquidnet.service.kylin.dto.param.BannersParam;
import com.liquidnet.service.kylin.dto.param.BannersSearchParam;
import com.liquidnet.service.kylin.dto.vo.KylinBannersVo;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 轮播图 后端管理控制器
......@@ -32,6 +36,37 @@ public class KylinBannersAdminController extends BaseController {
private String prefix = "zhengzai/kylin/banners";
@Value("${liquidnet.url-banner.provinces}")
private String provinces;
@Value("${liquidnet.url-banner.url1}")
private String url1;
@Value("${liquidnet.url-banner.url2}")
private String url2;
@Value("${liquidnet.url-banner.url5}")
private String url5;
@Value("${liquidnet.url-banner.url6}")
private String url6;
@Value("${liquidnet.url-banner.url7}")
private String url7;
@Value("${liquidnet.url-banner.url8}")
private String url8;
@Value("${liquidnet.url-banner.url13}")
private String url13;
@Value("${liquidnet.url-banner.url14}")
private String url14;
@Value("${liquidnet.url-banner.url20}")
private String url20;
@Value("${liquidnet.url-banner.url21}")
private String url21;
@Value("${liquidnet.url-banner.url22}")
private String url22;
@Value("${liquidnet.url-banner.url23}")
private String url23;
@Value("${liquidnet.url-banner.url24}")
private String url24;
@Value("${liquidnet.url-banner.url26}")
private String url26;
@Autowired
private KylinBannersServiceImpl kylinBannersServiceImpl;
......@@ -42,15 +77,35 @@ public class KylinBannersAdminController extends BaseController {
}
@GetMapping("/create")
public String create()
{
public String create(ModelMap mmap) {
List<Object> bannersTargetType = BannersTargetType.getResultType();
List<Object> bannersDisplayLocation = BannersDisplayLocation.getResultType();
mmap.put("BannersTargetType", bannersTargetType);
mmap.put("BannersDisplayLocation", bannersDisplayLocation);
mmap.put("provinces", provinces);
mmap.put("url1", url1);
mmap.put("url2", url2);
mmap.put("url5", url5);
mmap.put("url6", url6);
mmap.put("url7", url7);
mmap.put("url8", url8);
mmap.put("url13", url13);
mmap.put("url14", url14);
mmap.put("url20", url20);
mmap.put("url21", url21);
mmap.put("url22", url22);
mmap.put("url23", url23);
mmap.put("url24", url24);
mmap.put("url26", url26);
return prefix + "/create";
}
@RequiresPermissions("kylin:banners:create")
@PostMapping("create")
@ResponseBody
public AjaxResult createSave(@RequestBody @Validated BannersParam bannersParam) {
public AjaxResult createSave(BannersParam bannersParam) {
Boolean res = kylinBannersServiceImpl.create(bannersParam);
if (res) {
return success();
......@@ -60,8 +115,7 @@ public class KylinBannersAdminController extends BaseController {
}
@GetMapping("/update/{bannersId}")
public String update(@PathVariable("bannersId") String bannersId, ModelMap mmap)
{
public String update(@PathVariable("bannersId") String bannersId, ModelMap mmap) {
KylinBannersVo result = null;
result = kylinBannersServiceImpl.detail(bannersId);
mmap.put("KylinBannersVo", result);
......@@ -80,14 +134,14 @@ public class KylinBannersAdminController extends BaseController {
}
}
@RequiresPermissions("kylin:banners:detail")
/*@RequiresPermissions("kylin:banners:detail")
@GetMapping("/details/{bannersId}")
public String detail(@PathVariable("bannersId") String bannersId, ModelMap mmap) {
KylinBannersVo result = null;
result = kylinBannersServiceImpl.detail(bannersId);
mmap.put("KylinBannersVo", result);
return prefix + "/details";
}
}*/
@RequiresPermissions("kylin:banners:list")
@PostMapping("list")
......@@ -101,7 +155,7 @@ public class KylinBannersAdminController extends BaseController {
@PostMapping("delete")
@ResponseBody
public AjaxResult delete(BannersParam bannersParam) {
String bannersId = bannersParam.getBannersId();
String bannersId = bannersParam.getIds();
boolean result = kylinBannersServiceImpl.delete(bannersId);
if (result) {
return success("删除成功");
......
......@@ -20,6 +20,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 后台单订单退款 服务实现类
......
......@@ -27,6 +27,22 @@ liquidnet:
url-refund:
apply: "http://devpay.zhengzai.tv/refund/single"
notify: "https://devzuul.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://devservice.zhengzai.tv/provinces" #省份
url1: "https://devmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://devmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://devmall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://devmall.zhengzai.tv/admin/performanceListForQuick?page=1&per_page=50&status=3,6,7,8,9,10" #票务
url7: "https://devmall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://devmall.zhengzai.tv/admin/roadShowListForQuick?page=1&per_page=50" #巡演
url13: "https://devmall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://devmall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://devmerchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
url21: "https://devmerchantapi.zhengzai.tv/admin/mis/song/quick?page=1&per_page=50" #歌曲
url22: "https://devmerchantapi.zhengzai.tv/admin/mis/album/quick?page=1&per_page=50" #专辑
url23: "https://devmediaapi.zhengzai.tv/api/play/list?page=1&per_page=50" #视频播单
url24: "https://devmerchantapi.zhengzai.tv/admin/mis/musician/collect?page=1&per_page=50" #音乐人合集
url26: "https://devpassport.zhengzai.tv/admin/vip/card/list?page=1&per_page=50&status=1" #摩登会员
# end-dev-这里是配置信息基本值
......
......@@ -27,6 +27,22 @@ liquidnet:
url-refund:
apply: "http://pay.zhengzai.tv/refund/single"
notify: "https://zuul.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://service.zhengzai.tv/provinces" #省份
url1: "https://mediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://mediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://mall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://mall.zhengzai.tv/admin/performanceListForQuick?page=1&per_page=50&status=3,6,7,8,9,10" #票务
url7: "https://mall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://mall.zhengzai.tv/admin/roadShowListForQuick?page=1&per_page=50" #巡演
url13: "https://mall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://mall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://merchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
url21: "https://merchantapi.zhengzai.tv/admin/mis/song/quick?page=1&per_page=50" #歌曲
url22: "https://merchantapi.zhengzai.tv/admin/mis/album/quick?page=1&per_page=50" #专辑
url23: "https://mediaapi.zhengzai.tv/api/play/list?page=1&per_page=50" #视频播单
url24: "https://merchantapi.zhengzai.tv/admin/mis/musician/collect?page=1&per_page=50" #音乐人合集
url26: "https://passport.zhengzai.tv/admin/vip/card/list?page=1&per_page=50&status=1" #摩登会员
# end-dev-这里是配置信息基本值
spring:
......
......@@ -27,6 +27,22 @@ liquidnet:
url-refund:
apply: "http://testpay.zhengzai.tv/refund/single"
notify: "https://zuul.zhengzai.tv/kylin/refund/callback"
url-banner:
provinces: "https://testservice.zhengzai.tv/provinces" #省份
url1: "https://testmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=1" #PGC点播
url2: "https://testmediaapi.zhengzai.tv/api/video/list?per_page=50&page=1&type=2" #PGC直播
url5: "https://testmall.zhengzai.tv/admin/fieldListForQuick?page=1&per_page=50" #场地
url6: "https://testmall.zhengzai.tv/admin/performanceListForQuick?page=1&per_page=50&status=3,6,7,8,9,10" #票务
url7: "https://testmall.zhengzai.tv/admin/goodListForQuick?page=1&per_page=50" #商品
url8: "https://testmall.zhengzai.tv/admin/roadShowListForQuick?page=1&per_page=50" #巡演
url13: "https://testmall.zhengzai.tv/admin/integrationListForQuick?page=1&per_page=50" #积分商城
url14: "https://testmall.zhengzai.tv/admin/good/collective/quick?page=1&per_page=50" #商品集合
url20: "https://testmerchantapi.zhengzai.tv/admin/mis/musician/quick?page=1&per_page=50" #音乐人
url21: "https://testmerchantapi.zhengzai.tv/admin/mis/song/quick?page=1&per_page=50" #歌曲
url22: "https://testmerchantapi.zhengzai.tv/admin/mis/album/quick?page=1&per_page=50" #专辑
url23: "https://testmediaapi.zhengzai.tv/api/play/list?page=1&per_page=50" #视频播单
url24: "https://testmerchantapi.zhengzai.tv/admin/mis/musician/collect?page=1&per_page=50" #音乐人合集
url26: "https://testpassport.zhengzai.tv/admin/vip/card/list?page=1&per_page=50&status=1" #摩登会员
# end-dev-这里是配置信息基本值
spring:
......
......@@ -1013,7 +1013,8 @@ var table = {
message = message ?? "确定删除该条" + table.options.modalName + "信息吗?";
$.modal.confirm(message, function() {
if (!url) {
url = $.common.isEmpty(id) ? table.options.urls : table.options.urls.replace("{id}", id);
url = table.options.removeUrl;
// url = $.common.isEmpty(id) ? table.options.urls : table.options.urls.replace("{id}", id);
}
if(table.options.type == table_type.bootstrapTreeTable) {
$.operate.get(url);
......
......@@ -11,84 +11,45 @@
<div class="select-list">
<ul>
<li>
<label>支付时间</label>
<label>订单号</label>
<input type="text" name="orderNo"/>
</li>
<li>
<label>支付时间</label>
<input type="text" name="uid"/>
<label>电话</label>
<input type="text" name="mobile"/>
</li>
<li>
<label>购买方式:0-购买会员 1-购买会员码,2-使用会员码:</label>
<input type="text" name="mode"/>
</li>
<li>
<label>原价:</label>
<input type="text" name="price"/>
</li>
<li>
<label>实际支付:</label>
<input type="text" name="pricePaid"/>
</li>
<li>
<label>实际支付:</label>
<input type="text" name="memberName"/>
</li>
<li>
<label>会员id:</label>
<input type="text" name="memberId"/>
</li>
<li>
<label>会员价格id:</label>
<input type="text" name="memberPriceId"/>
</li>
<li>
<label>购买天数:</label>
<input type="text" name="days"/>
<label>支付方式:</label>
<select name="paymentType" th:with="type=${@dict.getType('zhengzai_pay_type')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>订单状态:</label>
<input type="text" name="state"/>
</li>
<li>
<label>会员号:</label>
<input type="text" name="memberNo"/>
<select name="orderStatus" th:with="type=${@dict.getType('zhengzai_order_status')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>支付渠道:</label>
<input type="text" name="payChannel"/>
<label>购买方式:</label>
<select name="buyMode" th:with="type=${@dict.getType('zhengzai_buy_mode')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>支付订单:</label>
<input type="text" name="payNo"/>
<label>客户端:</label>
<select name="orderSource" th:with="type=${@dict.getType('zhengzai_order_source')}">
<option value="">所有</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>用户生日:</label>
<input type="text" class="time-input" placeholder="请选择用户生日" name="birthday"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" class="time-input" placeholder="请选择支付时间" name="paymentAt"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" class="time-input" placeholder="请选择支付时间" name="createdAt"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" class="time-input" placeholder="请选择支付时间" name="updatedAt"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" name="clientIp"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" name="source"/>
</li>
<li>
<label>支付时间:</label>
<input type="text" name="version"/>
<li class="select-time">
<label>支付时间: </label>
<input type="text" class="time-input" id="timePayStart" placeholder="开始日期" name="params[beginTime]"/>
<span>-</span>
<input type="text" class="time-input" id="timePayEnd" placeholder="结束日期" name="params[endTime]"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
......
......@@ -53,8 +53,7 @@
<a class="btn btn-success" onclick="$.operate.add()" shiro:hasPermission="kylin:banners:create">
<i class="fa fa-plus"></i> 添加
</a>
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll('确定取消选中的退款申请吗?', 'banners/delete')"
shiro:hasPermission="kylin:banners:delete">
<a class="btn btn-danger multiple disabled" onclick="$.operate.removeAll()" shiro:hasPermission="kylin:banners:delete">
删除
</a>
</div>
......@@ -65,18 +64,17 @@
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var detailFlag = [[${@permission.hasPermi('kylin:banners:detail')}]];
var updateFlag = [[${@permission.hasPermi('kylin:banners:update')}]];
var deleteFlag = [[${@permission.hasPermi('kylin:banners:delete')}]];
var removeFlag = [[${@permission.hasPermi('kylin:banners:delete')}]];
var prefix = ctx + "kylin/banners";
$(function () {
var options = {
url: prefix + "/list",
updateFlag: prefix + "/update",
detailUrl: prefix + "/details/{id}",
deleteFlag: prefix + "/delete",
modalName: "-Banner",
updateUrl: prefix + "/update",
createUrl: prefix + "/create",
removeUrl: prefix + "/delete",
modalName: "Banner",
columns: [{
checkbox: true
},
......@@ -90,10 +88,17 @@
},
{
field: 'coverImg',
title: '封面图'
title: '封面图',
formatter: function(value, row, index) {
return $.table.imageView(value,"300", "600");
}
},
{
field: 'promotionTypeName',
title: '推广类型'
},
{
field: 'targetType',
field: 'targetTypeName',
title: '跳转类型'
},
{
......@@ -101,7 +106,7 @@
title: '跳转目标'
},
{
field: 'isOnline',
field: 'isOnlineName',
title: '是否上线'
},
{
......@@ -112,10 +117,6 @@
field: 'onlineEndTime',
title: '上线结束时间'
},
{
field: 'promotionType',
title: '推广类型'
},
{
field: 'createdAt',
title: '创建时间'
......@@ -125,9 +126,8 @@
align: 'center',
formatter: function (value, row, index) {
var actions = [];
actions.push('<a class="btn btn-info btn-xs' + detailFlag + '" href="javascript:void(0)" onclick="$.operate.detailTab(\'' + row.orderRefundsId + '\')"></i>查看</a> ');
actions.push('<a class="btn btn-success btn-xs ' + updateFlag + '" href="javascript:void(0)" onclick="review(\'' + row.orderRefundsId + '\')"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + deleteFlag + '" href="javascript:void(0)" onclick="execute(\'' + row.orderRefundsId + '\')"></i>删除</a> ');
actions.push('<a class="btn btn-success btn-xs ' + updateFlag + '" href="javascript:void(0)" onclick="review(\'' + row.bannersId + '\')"></i>编辑</a> ');
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.bannersId + '\')"></i>删除</a> ');
return actions.join('');
}
}]
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('退款详情')"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m-t" id="signupForm">
<div class="form-group">
<label class="col-sm-2 control-label">退款单id:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.orderRefundsId}"></div>
<label class="col-sm-2 control-label">票务订单id:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.orderTicketsId}"></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">退款编号:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.orderRefundCode}"></div>
<label class="col-sm-2 control-label">退款中心退款编号:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.RefundCode}"></div>
<label class="col-sm-2 control-label">第三方退款编号:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.RefundId}"></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">退款总金额:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.price}"></div>
<label class="col-sm-2 control-label">退款状态:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.statusName}"></div>
<label class="col-sm-2 control-label">成功退款时间:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.RefundAt}"></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">申请人名称:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.applicantName}"></div>
<label class="col-sm-2 control-label">申请时间:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.applicantAt}"></div>
<label class="col-sm-2 control-label">申请备注:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.reason}"></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">审核人名称:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.auditorName}"></div>
<label class="col-sm-2 control-label">审核时间:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.auditorAt}"></div>
<label class="col-sm-2 control-label">审核备注:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.reject}"></div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">执行人名称:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.executorName}"></div>
<label class="col-sm-2 control-label">执行时间:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.executorAt}"></div>
<label class="col-sm-2 control-label">执行备注:</label>
<div class="form-control-static" th:text="${KylinOrderRefundsVo.refuse}"></div>
</div>
<div class="form-group">
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
<legend>票种</legend>
</fieldset>
<table class="col-sm-8 select-table table-bordered">
<thead>
<tr>
<th>票种名称</th>
<th>适用日期</th>
<th>入场人</th>
<th>状态</th>
<th>价格</th>
</tr>
</thead>
<tbody>
<tr th:each="v : ${KylinOrderRefundsVo.entities}">
<td th:text="${v.title}"></td>
<td th:text="${v.useStart}"></td>
<td th:text="${v.enterName}"></td>
<td th:text="${v.isPaymentName}"></td>
<td th:text="${v.price}"></td>
</tr>
</tbody>
</table>
</div>
</form>
</div>
<th:block th:include="include :: footer"/>
</body>
</html>
\ No newline at end of file
......@@ -6,14 +6,147 @@
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-tickets-edit" th:object="${orderDetailsVo.orderTicketVo}">
<form class="form-horizontal m" id="form-tickets-edit" th:object="${orderDetailsVo}">
<!-- <input name="mid" th:field="*{mid}" type="hidden">-->
<div class="form-group">
<label class="col-sm-3 control-label is-required">order_tickets_id</label>
<label class="col-sm-3 control-label is-required">演出名称</label>
<div class="col-sm-8">
<input name="orderTicketsId" th:field="*{orderTicketsId}" class="form-control" type="text" required>
<input name="performanceTitle" th:field="*{performanceVo.title}" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">票名:</label>
<div class="col-sm-8">
<input name="performanceTitle" th:field="*{ticketVo.title}" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">单价:</label>
<div class="col-sm-8">
<input name="price" th:field="*{orderTicketVo.price}" class="form-control" type="text" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">数量:</label>
<div class="col-sm-8">
<input name="number" th:field="*{orderTicketVo.number}" class="form-control" type="text" required>
</div>
</div>
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">适用日期:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="payCountdownMinute" th:field="*{payCountdownMinute}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">应付价格:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceTotal" th:field="*{priceTotal}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">优惠价格:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceVoucher" th:field="*{priceVoucher}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">实付价格:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceActual" th:field="*{priceActual}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">快递价格:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceExpress" th:field="*{priceExpress}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">退款价格:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceRefund" th:field="*{priceRefund}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">订单状态:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceVoucher" th:field="*{priceVoucher}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">转增状态:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="priceVoucher" th:field="*{priceVoucher}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">订单号:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">生成时间:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <div class="input-group date">-->
<!-- <input name="createdAt" th:value="${#dates.format(kylinOrderTickets.createdAt, 'yyyy-MM-dd')}" class="form-control" placeholder="yyyy-MM-dd" type="text">-->
<!-- <span class="input-group-addon"><i class="fa fa-calendar"></i></span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">实际支付方式:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <select name="paymentType" class="form-control m-b">-->
<!-- <option value="">所有</option>-->
<!-- </select>-->
<!-- <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">微信订单号:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label">支付时间:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="timePay" th:field="*{timePay}" class="form-control" type="text">-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">取票方式:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <select name="getTicketType" class="form-control m-b" required>-->
<!-- <option value="">所有</option>-->
<!-- </select>-->
<!-- <span class="help-block m-b-none"><i class="fa fa-info-circle"></i> 代码生成请选择字典属性</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="form-group">-->
<!-- <label class="col-sm-3 control-label is-required">取票人1:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- <label class="col-sm-3 control-label">证件号:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- <label class="col-sm-3 control-label">电话:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- <label class="col-sm-3 control-label">票务状态:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- <label class="col-sm-3 control-label">支付时间:</label>-->
<!-- <div class="col-sm-8">-->
<!-- <input name="orderCode" th:field="*{orderCode}" class="form-control" type="text" required>-->
<!-- </div>-->
<!-- </div>-->
</form>
</div>
<th:block th:include="include :: footer" />
......
......@@ -30,7 +30,7 @@
</li>
<li>
<label>第三方:</label>
<select name="orderType">
<select name="sponsorId">
<option value="">所有</option>
<option value="-1">代码生成请选择字典属性</option>
</select>
......@@ -58,23 +58,21 @@
</li>
<li>
<label>取票方式:</label>
<select name="orderType">
<select name="getTicketType" th:with="type=${@dict.getType('zhengzai_get_ticket_type')}">
<option value="">所有</option>
<option value="-1">代码生成请选择字典属性</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>快递状态:</label>
<select name="orderType">
<option value="">所有</option>
<option value="-1">代码生成请选择字典属性</option>
<select name="expressStatus" th:with="type=${@dict.getType('zhengzai_express_status')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
<label>搭售商品:</label>
<select name="orderType">
<option value="">所有</option>
<option value="-1">代码生成请选择字典属性</option>
<select name="tiedType" th:with="type=${@dict.getType('zhengzai_tied_type')}">
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
</select>
</li>
<li>
......@@ -119,21 +117,17 @@
columns: [{
checkbox: true
},
{
field: 'userId',
title: '第三方'
},
{
field: 'orderCode',
title: '订单号'
},
{
field: 'performanceTitle',
title: '演出名称'
title: '订单状态'
},
{
field: 'getTicketType',
title: '订单状态'
title: '支付方式'
},
{
field: 'getTicketType',
......
......@@ -89,7 +89,6 @@
}
if ($.validate.form()) {
var data = $('#form-post-add').serializeArray();
data.push({"ticketEntityIds":rows.join()});
data.push({"name":"ticketEntityIds","value":rows});
$.operate.save(prefix + "/apply", data);
}
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.enums.BannersTargetType;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
......@@ -81,15 +82,21 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
List<String> positionList = bannersParam.getPositionList();
KylinBannersRelations kylinBannersRelations = new KylinBannersRelations();
String bannersRelationsId = IDGenerator.nextSnowId().toString();
kylinBannersRelations.setBannersRelationsId(bannersRelationsId);
kylinBannersRelations.setBannersId(bannersId);
kylinBannersRelations.setCreatedAt(createdAtString);
for (String fieldId : positionList) {
KylinBannersRelations relations = kylinBannersRelations.newData(bannersId, fieldId, 1, createdAtString);
kylinBannersRelationsMapper.insert(relations);
kylinBannersRelations.setFieldId(fieldId);
kylinBannersRelations.setFieldIdType(1);
kylinBannersRelationsMapper.insert(kylinBannersRelations);
}
List<String> provincesList = bannersParam.getProvincesList();
if (!provincesList.isEmpty()) {
for (String fieldId : provincesList) {
KylinBannersRelations relations = kylinBannersRelations.newData(bannersId, fieldId, 2, createdAtString);
kylinBannersRelationsMapper.insert(relations);
kylinBannersRelations.setFieldId(fieldId);
kylinBannersRelations.setFieldIdType(2);
kylinBannersRelationsMapper.insert(kylinBannersRelations);
}
} else {
provincesList = new ArrayList();
......@@ -151,13 +158,18 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
List<String> positionList = bannersParam.getPositionList();
KylinBannersRelations kylinBannersRelations = new KylinBannersRelations();
String bannersRelationsId = IDGenerator.nextSnowId().toString();
kylinBannersRelations.setBannersRelationsId(bannersRelationsId);
kylinBannersRelations.setBannersId(bannersId);
kylinBannersRelations.setCreatedAt(updatedAtString);
// 入数据库 先删除之前的
kylinBannersRelationsMapper.delete(
new UpdateWrapper<KylinBannersRelations>().eq("banners_id", bannersId).eq("field_id_type", 1)
);
for (String fieldId : positionList) {
KylinBannersRelations relations = kylinBannersRelations.newData(bannersId, fieldId, 1, updatedAtString);
kylinBannersRelationsMapper.insert(relations);
kylinBannersRelations.setFieldId(fieldId);
kylinBannersRelations.setFieldIdType(1);
kylinBannersRelationsMapper.insert(kylinBannersRelations);
}
List<String> provincesList = bannersParam.getProvincesList();
if (!provincesList.isEmpty()) {
......@@ -166,8 +178,9 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
new UpdateWrapper<KylinBannersRelations>().eq("banners_id", bannersId).eq("field_id_type", 2)
);
for (String fieldId : provincesList) {
KylinBannersRelations relations = kylinBannersRelations.newData(bannersId, fieldId, 2, updatedAtString);
kylinBannersRelationsMapper.insert(relations);
kylinBannersRelations.setFieldId(fieldId);
kylinBannersRelations.setFieldIdType(2);
kylinBannersRelationsMapper.insert(kylinBannersRelations);
}
} else {
provincesList = new ArrayList();
......@@ -219,6 +232,13 @@ public class KylinBannersServiceImpl extends ServiceImpl<KylinBannersMapper, Kyl
try {
PageHelper.startPage(bannersSearchParam.getPageNum(), bannersSearchParam.getPageSize());
List<BannerDetailsListDao> voList = bannersMapper.searchBannersList(BeanUtil.convertBeanToMap(bannersSearchParam));
for (BannerDetailsListDao item : voList) {
item.setIsOnlineName(item.getIsOnline());
item.setPromotionTypeName(item.getPromotionType());
String typeName = BannersTargetType.getTypeName(item.getTargetType());
item.setTargetTypeName(typeName);
}
pageInfoTmp = new PageInfo(voList);
} catch (Exception e) {
return new PageInfo();
......
......@@ -17,9 +17,12 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.beans.IntrospectionException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
......@@ -54,9 +57,17 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic
@Override
public List<OrderTicketsListDao> orderList(OrderListReq orderListReq) {
HashMap<String, Object> map = new HashMap<>();
map.put("title", "");
List<OrderTicketsListDao> list = kylinOrderTicketsMapper.orderList(map);
Map<String, Object> reqParamMap = new HashMap<>();
try {
reqParamMap = BeanUtil.convertBeanToMap(orderListReq,false);
} catch (IntrospectionException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
List<OrderTicketsListDao> list = kylinOrderTicketsMapper.orderList(reqParamMap);
return list;
}
......
......@@ -39,7 +39,7 @@ public class RestControllerAdviceHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public ResponseEntity<Error> serviceExceptionHandler(Exception rex, HttpServletRequest req) {
logger.error("Handler.RestControllerEx:{},ex:{},request:{},param:{}",
logger.error("Ex.Handler.RestController:{},ex:{},request:{},param:{}",
rex.getClass().getSimpleName(), rex.getLocalizedMessage(), req.getRequestURI(), JSON.toJSONString(req.getParameterMap()));
if (rex instanceof MissingServletRequestParameterException) {
MissingServletRequestParameterException ygex = ((MissingServletRequestParameterException) rex);
......@@ -73,6 +73,7 @@ public class RestControllerAdviceHandler {
message = message == null ? ygex.errorCode().getMessage() : message;
return new ResponseEntity<Error>(new Error(errorCode, message), HttpStatus.OK);
} else {
logger.error("Unprocessed exception", rex);
return new ResponseEntity<Error>(new Error(ErrorCode.HTTP_SYSTEM_ERROR.getCode(), ErrorCode.HTTP_SYSTEM_ERROR.getMessage()), HttpStatus.OK);
}
}
......
......@@ -99,6 +99,7 @@ public class SqlMapping {
return JsonUtils.toJson(sqlMessage);
}
@SafeVarargs
public static String gets(LinkedList<String> sqls, LinkedList<Object[]>... paramsList) {
SqlMapping.SqlMessage sqlMessage = SqlMapping.SqlMessage.getInstance();
sqlMessage.setSqls(sqls);
......
......@@ -23,12 +23,12 @@ liquidnet:
knife4j:
disable: false
redis:
# host: r-2zefzyjbij5vbez65y.redis.rds.aliyuncs.com
# port: 6380
# password: PO@B!Iud32
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com
host: r-2zefzyjbij5vbez65y.redis.rds.aliyuncs.com
port: 6380
password: PO@B!Iud32
# host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com
# port: 6380
# password: PO@B!Iud32
mongodb:
host: s-2zef656730e5a1d4.mongodb.rds.aliyuncs.com:3717,s-2ze49872ed6aeb14.mongodb.rds.aliyuncs.com:3717
port: 3717
......
......@@ -2,8 +2,8 @@ server:
port: ${liquidnet.info.port}
tomcat:
uri-encoding: UTF-8
maxThreads: 10000 #默认200
minSpareThreads: 5000 #默认10
maxThreads: 3000 #默认200
minSpareThreads: 3000 #默认10
maxConnections: 20000 #默认10000
acceptCount: 5000 #默认100
processorCache: -1 #默认200
......@@ -104,9 +104,11 @@ ribbon:
eureka:
enabled: true # 为Ribbon禁用Eureka
ReadTimeout: 15000
SocketTimeout: 15000
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 0
ConnectTimeout: 15000
MaxAutoRetries: 1
MaxAutoRetriesNextServer: 1
MaxConnectionsPerHost: 5000
MaxTotalConnections: 25000
#liquidnet-service-sequence:
# ribbon:
# listOfServers: 192.168.137.1:9001
......
......@@ -34,7 +34,7 @@ public class AdamMemberPrice implements Serializable {
/**
* 状态 0 不可用 1上线中 2已下线
*/
private Integer status;
private Integer state;
/**
* 会员包名称
......
......@@ -14,17 +14,20 @@ public class BannerDetailsListDao implements Serializable {
private String coverImg;
private String targetType;
private Integer targetType;
private String targetTypeName;
private String targetObj;
private Integer isOnline;
private String isOnlineName;
private String onlineStartTime;
private String onlineEndTime;
private Integer promotionType;
private String promotionTypeName;
private Integer bannersSort;
......@@ -33,4 +36,34 @@ public class BannerDetailsListDao implements Serializable {
private String createdAt;
private String updatedAt;
public void setIsOnlineName(Integer isOnline){
this.isOnline=isOnline;
switch (isOnline){
case 0:
this.isOnlineName="下线";
break;
case 1:
this.isOnlineName="上线";
break;
default:
this.isOnlineName="--";
break;
}
}
public void setPromotionTypeName(Integer promotionType){
this.promotionType=promotionType;
switch (promotionType){
case 1:
this.promotionTypeName="全国";
break;
case 2:
this.promotionTypeName="省份";
break;
default:
this.promotionTypeName="--";
break;
}
}
}
package com.liquidnet.service.kylin.dao;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @class: PerformanceOrderListDao
* @Package com.liquidnet.service.kylin.dao
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/4 13:31
*/
@Data
public class OrderPushDamaiDto {
String orderTicketsId;
Integer mid;
String enterName;
String enterIdCode;
Integer enterType;
String enterMobile;
String timePay;
String timeId;
String ticketId;
Integer isMember;
String orderTicketEntitiesId;
String getTicketType;
}
package com.liquidnet.service.kylin.dao;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceOrderListDao
* @Package com.liquidnet.service.kylin.dao
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/4 13:31
*/
@Data
public class PerformanceOrderListDao {
String orderTicketsId;
String sponsor;
String orderCode;
String title;
String status;
String getTicketType;
String payType;
String paymentType;
String tied;
String price;
String number;
String priceMember;
String priceTotal;
String priceVoucher;
String priceActual;
String priceExpress;
String priceRefund;
String refundNumber;
String userId;
String userName;
String userMobile;
}
......@@ -54,16 +54,4 @@ public class KylinBannersRelations implements Serializable {
*/
private String updatedAt;
// 整合入库数据
// @JsonIgnore
public KylinBannersRelations newData(String bannersId, String fieldId, int fieldIdType, String createdAtString) {
// String bannersRelationsId = IDGenerator.nextSnowId().toString();
// this.setBannersRelationsId(bannersRelationsId);
this.setBannersId(bannersId);
this.setFieldId(fieldId);
this.setFieldIdType(fieldIdType);
this.setCreatedAt(createdAtString);
return this;
}
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.OrderPushDamaiDto;
import com.liquidnet.service.kylin.dao.OrderTicketsListDao;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import org.apache.ibatis.annotations.Param;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -27,5 +29,7 @@ public interface KylinOrderTicketsMapper extends BaseMapper<KylinOrderTickets> {
// 获取订单和购票信息
List<KylinOrderTickets> getOrderList(@Param("targetId") String targetId, @Param("mid") int mid, @Param("limitNum") int limitNum);
List<OrderTicketsListDao> orderList(HashMap<String, Object> map);
List<OrderTicketsListDao> orderList(Map<String, Object> map);
List<OrderPushDamaiDto> pushDamaiDetailsList(String ticketsId);
}
<?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.kylin.mapper.KylinBannersMapper">
<!-- 详情 -->
<resultMap id="bannerDetailsResult" type="com.liquidnet.service.kylin.dao.BannerDetailsDao">
<result column="banners_id" property="bannersId"/>
<result column="banners_name" property="bannersName"/>
<result column="cover_img" property="coverImg"/>
<result column="target_type" property="targetType"/>
<result column="target_obj" property="targetObj"/>
<result column="is_online" property="isOnline"/>
<result column="online_start_time" property="onlineStartTime"/>
<result column="online_end_time" property="onlineEndTime"/>
<result column="promotion_type" property="promotionType"/>
<result column="banners_sort" property="bannersSort"/>
<result column="remarks" property="remarks"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<select id="detail" parameterType="java.lang.String" resultMap="bannerDetailsResult">
<select id="detail" parameterType="java.lang.String">
SELECT
*
FROM kylin_banners
......@@ -27,7 +11,7 @@
</select>
<!-- admin banner列表 -->
<select id="searchBannersList" parameterType="java.util.Map" resultType="com.liquidnet.service.kylin.dao.BannerDetailsListDao" resultMap="bannerDetailsResult">
<select id="searchBannersList" parameterType="java.util.Map" resultType="com.liquidnet.service.kylin.dao.BannerDetailsListDao">
SELECT *
FROM kylin_banners
<where>
......
......@@ -25,6 +25,22 @@
<result column="user_mobile" property="userMobile"/>
<result column="order_source" property="orderSource"/>
</resultMap>
<resultMap id="orderPushDamaiDto" type="com.liquidnet.service.kylin.dao.OrderPushDamaiDto">
<result column="order_tickets_id" property="orderTicketsId"/>
<result column="mid" property="mid"/>
<result column="enter_name" property="enterName"/>
<result column="enter_id_code" property="enterIdCode"/>
<result column="enter_mobile" property="enterMobile"/>
<result column="enter_type" property="enterType"/>
<result column="time_pay" property="timePay"/>
<result column="time_id" property="timeId"/>
<result column="ticket_id" property="ticketId"/>
<result column="is_member" property="isMember"/>
<result column="order_ticket_entities_id" property="orderTicketEntitiesId"/>
<result column="get_ticket_type" property="getTicketType"/>
</resultMap>
<select id="getPriceNum" resultType="java.util.HashMap">
SELECT SUM(o.price_actual) as total_price, SUM(o.number) as total_num
FROM kylin_order_tickets AS o
......@@ -54,7 +70,8 @@
</foreach>
</where>
</select>
<select id="getOrderList" parameterType="java.lang.String" resultType="com.liquidnet.service.kylin.entity.KylinOrderTickets">
<select id="getOrderList" parameterType="java.lang.String"
resultType="com.liquidnet.service.kylin.entity.KylinOrderTickets">
SELECT o.mid, order_tickets_id, number, price_actual, performance_title
FROM kylin_order_tickets AS o
JOIN kylin_order_ticket_relations AS r ON r.order_id = o.order_tickets_id
......@@ -97,42 +114,72 @@
inner join kylin_order_ticket_relations kotr on kot.order_tickets_id = kotr.order_id
inner join kylin_performances kp on kotr.performance_id = kp.performances_id
<where>
<if test="orderTicketsId != null and orderTicketsId != ''"> and kot.order_tickets_id = #{orderTicketsId}</if>
<if test="userId != null and userId != ''"> and kot.user_id = #{userId}</if>
<if test="userName != null and userName != ''"> and kot.user_name like concat('%', #{userName}, '%')</if>
<if test="userMobile != null and userMobile != ''"> and kot.user_mobile = #{userMobile}</if>
<if test="performanceTitle != null and performanceTitle != ''"> and kot.performance_title = #{performanceTitle}</if>
<if test="orderCode != null and orderCode != ''"> and kot.order_code = #{orderCode}</if>
<if test="payCode != null and payCode != ''"> and kot.pay_code = #{payCode}</if>
<if test="qrCode != null and qrCode != ''"> and kot.qr_code = #{qrCode}</if>
<if test="orderType != null and orderType != ''"> and kot.order_type = #{orderType}</if>
<if test="orderVersion != null and orderVersion != ''"> and kot.order_version = #{orderVersion}</if>
<if test="number != null "> and kot.number = #{number}</if>
<if test="price != null "> and kot.price = #{price}</if>
<if test="priceMember != null "> and kot.price_member = #{priceMember}</if>
<if test="priceTotal != null "> and kot.price_total = #{priceTotal}</if>
<if test="priceVoucher != null "> and kot.price_voucher = #{priceVoucher}</if>
<if test="priceActual != null "> and kot.price_actual = #{priceActual}</if>
<if test="priceExpress != null "> and kot.price_express = #{priceExpress}</if>
<if test="priceRefund != null "> and kot.price_refund = #{priceRefund}</if>
<if test="refundNumber != null "> and kot.refund_number = #{refundNumber}</if>
<if test="payType != null and payType != ''"> and kot.pay_type = #{payType}</if>
<if test="paymentType != null and paymentType != ''"> and kot.payment_type = #{paymentType}</if>
<if test="timePay != null and timePay != ''"> and kot.time_pay = #{timePay}</if>
<if test="expressContacts != null and expressContacts != ''"> and kot.express_contacts = #{expressContacts}</if>
<if test="expressAddress != null and expressAddress != ''"> and kot.express_address = #{expressAddress}</if>
<if test="expressPhone != null and expressPhone != ''"> and kot.express_phone = #{expressPhone}</if>
<if test="couponType != null and couponType != ''"> and kot.coupon_type = #{couponType}</if>
<if test="getTicketType != null and getTicketType != ''"> and kot.get_ticket_type = #{getTicketType}</if>
<if test="getTicketDescribe != null and getTicketDescribe != ''"> and kot.get_ticket_describe = #{getTicketDescribe}</if>
<if test="payCountdownMinute != null "> and kot.pay_countdown_minute = #{payCountdownMinute}</if>
<if test="comment != null and comment != ''"> and kot.comment = #{comment}</if>
<if test="createdAt != null "> and kot.created_at = #{createdAt}</if>
<if test="updatedAt != null "> and kot.updated_at = #{updatedAt}</if>
<if test="orderSource != null and orderSource != ''"> and kot.order_source = #{orderSource}</if>
<if test="orderTicketsId != null and orderTicketsId != ''">and kot.order_tickets_id = #{orderTicketsId}
</if>
<if test="userId != null and userId != ''">and kot.user_id = #{userId}</if>
<if test="userName != null and userName != ''">and kot.user_name like concat('%', #{userName}, '%')</if>
<if test="userMobile != null and userMobile != ''">and kot.user_mobile = #{userMobile}</if>
<if test="performanceTitle != null and performanceTitle != ''">and kot.performance_title =
#{performanceTitle}
</if>
<if test="orderCode != null and orderCode != ''">and kot.order_code = #{orderCode}</if>
<if test="payCode != null and payCode != ''">and kot.pay_code = #{payCode}</if>
<if test="qrCode != null and qrCode != ''">and kot.qr_code = #{qrCode}</if>
<if test="orderType != null and orderType != ''">and kot.order_type = #{orderType}</if>
<if test="orderVersion != null and orderVersion != ''">and kot.order_version = #{orderVersion}</if>
<if test="number != null ">and kot.number = #{number}</if>
<if test="price != null ">and kot.price = #{price}</if>
<if test="priceMember != null ">and kot.price_member = #{priceMember}</if>
<if test="priceTotal != null ">and kot.price_total = #{priceTotal}</if>
<if test="priceVoucher != null ">and kot.price_voucher = #{priceVoucher}</if>
<if test="priceActual != null ">and kot.price_actual = #{priceActual}</if>
<if test="priceExpress != null ">and kot.price_express = #{priceExpress}</if>
<if test="priceRefund != null ">and kot.price_refund = #{priceRefund}</if>
<if test="refundNumber != null ">and kot.refund_number = #{refundNumber}</if>
<if test="payType != null and payType != ''">and kot.pay_type = #{payType}</if>
<if test="paymentType != null and paymentType != ''">and kot.payment_type = #{paymentType}</if>
<if test="timePay != null and timePay != ''">and kot.time_pay = #{timePay}</if>
<if test="expressContacts != null and expressContacts != ''">and kot.express_contacts =
#{expressContacts}
</if>
<if test="expressAddress != null and expressAddress != ''">and kot.express_address = #{expressAddress}</if>
<if test="expressPhone != null and expressPhone != ''">and kot.express_phone = #{expressPhone}</if>
<if test="couponType != null and couponType != ''">and kot.coupon_type = #{couponType}</if>
<if test="getTicketType != null and getTicketType != ''">and kot.get_ticket_type = #{getTicketType}</if>
<if test="getTicketDescribe != null and getTicketDescribe != ''">and kot.get_ticket_describe =
#{getTicketDescribe}
</if>
<if test="payCountdownMinute != null ">and kot.pay_countdown_minute = #{payCountdownMinute}</if>
<if test="comment != null and comment != ''">and kot.comment = #{comment}</if>
<if test="createdAt != null ">and kot.created_at = #{createdAt}</if>
<if test="updatedAt != null ">and kot.updated_at = #{updatedAt}</if>
<if test="orderSource != null and orderSource != ''">and kot.order_source = #{orderSource}</if>
</where>
<!-- <if test="orderItem!=''">-->
<!-- ORDER BY ${orderItem} ${orderSc}-->
<!-- </if>-->
<!-- <if test="orderItem!=''">-->
<!-- ORDER BY ${orderItem} ${orderSc}-->
<!-- </if>-->
</select>
<select id="pushDamaiDetailsList" parameterType="java.lang.String" resultMap="orderPushDamaiDto">
SELECT ote.mid,
order_tickets_id,
enter_name,
enter_id_code,
enter_type,
enter_mobile,
time_pay,
otr.time_id,
otr.ticket_id,
otr.is_member,
ote.order_ticket_entities_id,
get_ticket_type
FROM kylin_order_tickets AS ot
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_entities AS ote ON ote.order_id = ot.order_tickets_id
WHERE ots.pay_status = 1
AND ote.is_payment = 1
AND ote.sys_damai = 1
AND ote.ticket_id = ${ticketsId}
</select>
</mapper>
......@@ -92,6 +92,24 @@
<result column="total_paying_number" property="totalPayingNumber"/>
<result column="total_buy_users" property="totalBuyUsers"/>
</resultMap>
<resultMap id="performanceOrderListDaoResult" type="com.liquidnet.service.kylin.dao.PerformanceOrderListDao">
<result column="performances_id" property="performancesId"/>
<result column="tickets_id" property="ticketsId"/>
<result column="title" property="title"/>
<result column="price" property="price"/>
<result column="type" property="type"/>
<result column="use_start" property="useStart"/>
<result column="total_general" property="totalGeneral"/>
<result column="sale_general" property="saleGeneral"/>
<result column="surplus_general" property="surplusGeneral"/>
<result column="total_sale_price" property="totalSalePrice"/>
<result column="total_exchange" property="totalExchange"/>
<result column="total_refund_general" property="totalRefundGeneral"/>
<result column="total_refund_price" property="totalRefundPrice"/>
<result column="total_member_number" property="totalMemberNumber"/>
<result column="total_paying_number" property="totalPayingNumber"/>
<result column="total_buy_users" property="totalBuyUsers"/>
</resultMap>
<!-- 第三方演出列表 (不包含退票信息) -->
<select id="partnerPerformanceList" parameterType="java.util.Map" resultMap="partnerPerformanceListResult">
......@@ -395,4 +413,93 @@
) t
) AS ut ON ut.performance_id = kp.performances_id
</select>
<select id="orderList" resultMap="performanceOrderListDaoResult">
SELECT
kot.order_tickets_id,
kp.sponsor,
kot.order_code,
kp.title,
kots.status,
kot.get_ticket_type,
kot.pay_type,
kot.payment_type,
'无' as tied,
kot.price,
kot.number,
kot.price_member,
kot.price_total,
kot.price_voucher,
kot.price_actual,
kot.price_express,
kot.price_refund,
kot.refund_number,
kot.user_id,
kot.user_name,
kot.user_mobile
FROM kylin_order_tickets kot
inner join kylin_order_ticket_status kots on kot.order_tickets_id = kots.order_id
inner join kylin_order_ticket_relations kotr on kot.order_tickets_id = kotr.order_id
inner join kylin_performances kp on kotr.performance_id = kp.performances_id
<where>
<if test="orderTicketsId != null and orderTicketsId != ''"> and order_tickets_id = #{orderTicketsId}</if>
<if test="userId != null and userId != ''"> and user_id = #{userId}</if>
<if test="userName != null and userName != ''"> and user_name like concat('%', #{userName}, '%')</if>
<if test="userMobile != null and userMobile != ''"> and user_mobile = #{userMobile}</if>
<if test="performanceTitle != null and performanceTitle != ''"> and performance_title = #{performanceTitle}</if>
<if test="orderCode != null and orderCode != ''"> and order_code = #{orderCode}</if>
<if test="payCode != null and payCode != ''"> and pay_code = #{payCode}</if>
<if test="qrCode != null and qrCode != ''"> and qr_code = #{qrCode}</if>
<if test="orderType != null and orderType != ''"> and order_type = #{orderType}</if>
<if test="orderVersion != null and orderVersion != ''"> and order_version = #{orderVersion}</if>
<if test="number != null "> and number = #{number}</if>
<if test="price != null "> and price = #{price}</if>
<if test="priceMember != null "> and price_member = #{priceMember}</if>
<if test="priceTotal != null "> and price_total = #{priceTotal}</if>
<if test="priceVoucher != null "> and price_voucher = #{priceVoucher}</if>
<if test="priceActual != null "> and price_actual = #{priceActual}</if>
<if test="priceExpress != null "> and price_express = #{priceExpress}</if>
<if test="priceRefund != null "> and price_refund = #{priceRefund}</if>
<if test="refundNumber != null "> and refund_number = #{refundNumber}</if>
<if test="payType != null and payType != ''"> and pay_type = #{payType}</if>
<if test="paymentType != null and paymentType != ''"> and payment_type = #{paymentType}</if>
<if test="timePay != null and timePay != ''"> and time_pay = #{timePay}</if>
<if test="expressContacts != null and expressContacts != ''"> and express_contacts = #{expressContacts}</if>
<if test="expressAddress != null and expressAddress != ''"> and express_address = #{expressAddress}</if>
<if test="expressPhone != null and expressPhone != ''"> and express_phone = #{expressPhone}</if>
<if test="couponType != null and couponType != ''"> and coupon_type = #{couponType}</if>
<if test="getTicketType != null and getTicketType != ''"> and get_ticket_type = #{getTicketType}</if>
<if test="getTicketDescribe != null and getTicketDescribe != ''"> and get_ticket_describe = #{getTicketDescribe}</if>
<if test="payCountdownMinute != null "> and pay_countdown_minute = #{payCountdownMinute}</if>
<if test="comment != null and comment != ''"> and comment = #{comment}</if>
<if test="createdAt != null "> and created_at = #{createdAt}</if>
<if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
<if test="orderSourece != null and orderSourece != ''"> and order_sourece = #{orderSourece}</if>
</where>
<where>
<if test="title!=''">
AND title LIKE concat('%', #{title}, '%')
</if>
<if test="cityName!=''">
AND city_name LIKE concat('%', #{cityName}, '%')
</if>
<if test="status!='-2'">
AND ps.STATUS = #{status}
</if>
<if test="status=='-2'">
AND ps.STATUS >= 3 or ps.STATUS = 1
</if>
<if test="auditStatus!='-2'">
AND ps.audit_status = #{auditStatus}
</if>
<!-- <if test="auditStatus=='-2'">-->
<!-- AND (ps.audit_status = 0 or ps.audit_status = 1 or ps.audit_status = 2)-->
<!-- </if>-->
<if test="stopSellDay!=-2">
AND p.time_end BETWEEN #{stopSellTime} AND NOW()
</if>
</where>
<if test="orderItem!=''">
ORDER BY ${orderItem} ${orderSc}
</if>
</select>
</mapper>
......@@ -223,7 +223,8 @@ create table adam_member
need_question int default 0 comment '是否需要答题 0不需要 1需要',
display_agreement int NOT NULL DEFAULT '0' COMMENT '是否打开0否1是',
state int NOT NULL COMMENT '状态:1-NORMAL,2-INVALID',
limitation int default 0 comment '限购数量,0不限购'
limitation int default 0 comment '限购数量,0不限购',
comment text
);
-- >>------------------------------------------------------------------------------------
drop table if exists adam_member_price;
......@@ -231,15 +232,16 @@ create table adam_member_price
(
mid int unsigned auto_increment primary key,
member_price_id varchar(64) comment '会员价格id',
member_id varchar(64) NOT NULL comment '会员种类ID',
status tinyint NOT NULL DEFAULT '0' COMMENT '0不可用、1上线中、2已下线',
name varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '会员包名称',
member_id varchar(64) NOT NULL comment '会员种类ID',
state tinyint NOT NULL DEFAULT '0' COMMENT '0不可用、1上线中、2已下线',
name varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '会员包名称',
price decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '会员包价格',
price_fixed decimal(8, 2) comment '折扣价',
days int NOT NULL DEFAULT '0' COMMENT '会员包天数',
detail text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '会员包须知',
created_at datetime,
updated_at datetime
updated_at datetime,
comment text
);
-- >>------------------------------------------------------------------------------------
drop table if exists adam_member_order;
......@@ -258,7 +260,7 @@ create table adam_member_order
state tinyint comment '订单状态',
member_no varchar(20) comment '会员号',
device_from varchar(20) comment '支付终端:app,wap,js,applet',
pay_type varchar(20) comment '支付方式:alipay,wepay',
pay_type varchar(20) comment '支付方式:alipay,wepay',
pay_no varchar(64) comment '支付订单',
birthday date default null comment '用户生日',
payment_at datetime default null comment '支付时间',
......@@ -266,7 +268,8 @@ create table adam_member_order
updated_at datetime,
client_ip varchar(50),
source varchar(20),
version varchar(20)
version varchar(20),
comment text
);
-- >>------------------------------------------------------------------------------------
drop table if exists adam_user_member;
......@@ -279,7 +282,8 @@ create table adam_user_member
state tinyint comment '1-NORMAL,2-INVALID',
expiry_at datetime comment '到期日期',
created_at datetime,
updated_at datetime
updated_at datetime,
comment text
);
-- >>------------------------------------------------------------------------------------
drop table if exists adam_member_code;
......@@ -299,7 +303,8 @@ create table adam_member_code
buy_at datetime default null comment '购买时间',
use_order_no varchar(64) default null comment '消费订单号',
use_uid varchar(64) default null comment '消费用户ID',
use_at datetime default null
use_at datetime default null,
comment text
);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......
......@@ -7,27 +7,36 @@ public class AdamRedisConst {
public static final String ADAM = "adam:";
public static final String IDENTITY = ADAM.concat("identity:");
public static final String IDENTITY_MOBILE = IDENTITY.concat("mobile:");
public static final String IDENTITY_THIRD_PARTY = IDENTITY.concat("third_party:");
public static final String INFO = ADAM.concat("info:");
public static final String INFO_USER = INFO.concat("user:");
public static final String INFO_REAL_NAME = INFO.concat("real_name:");
public static final String INFO_THIRD_PARTY = INFO.concat("third_party:");
public static final String INFO_USER_MEMBER = INFO.concat("user_member:");
public static final String INFO_MEMBER_SIMPLE = INFO.concat("member:simple");
public static final String INFO_MEMBER_CATEGORY = INFO.concat("member:category:");
public static final String INFO_MEMBER_PRICE = INFO.concat("member:price:");
public static final String INFO_MEMBER_RIGHTS = INFO.concat("member:rights:");
public static final String INFO_MEMBER_AGREEMENT = INFO.concat("member:agreement");
public static final String INFO_MEMBER_USER = INFO.concat("member:user");
public static final String INFO_MEMBER_CODE = INFO.concat("member:code:");
public static final String INFO_ENTERS = INFO.concat("enters:");
public static final String INFO_ADDRESSES = INFO.concat("addresses:");
public static final String INFO_TAGS_SEX = INFO.concat("tags:sex");
public static final String INFO_TAGS_MUSIC = INFO.concat("tags:music");
public static final String INFO_MEMBER_SIMPLE = INFO.concat("member:simple");
public static final String INFO_MEMBER_AGREEMENT = INFO.concat("member:agreement");
public static final String INCR = ADAM.concat("incr:");
public static final String INCR_MEMBER_NO = INCR.concat(":member_no:");
public static final String INFO_MEMBERS = ADAM.concat(":list:members");
public static final String INFO_MEMBERS_INFO = ADAM.concat(":list:members:info:");
public static final String INFO_MEMBERS_PRICE_INFO = ADAM.concat(":list:members:price:info:");
public static final String INFO_MEMBERS_CODE_INFO = ADAM.concat(":list:members:code:info:");
public static final String MEMBER_MEMBER_NO_MAX_KEY = ADAM.concat(":members:member_no_max:");
public static final String INFO_MEMBERS_REPERTORY_INFO = ADAM.concat(":list:members:repertory:");
public static final String INFO_MEMBERS_ORDER_INFO = ADAM.concat(":list:members:order:");
}
......@@ -122,19 +122,23 @@ public class AdamLoginController {
@Pattern(regexp = "\\d{6}", message = "验证码格式有误")
@RequestParam String code) {
log.debug("mobile:{},code:{}", mobile, code);
if (!this.checkSmsCode(mobile, code)) return ResponseDto.failure(ErrorMapping.get("10002"));
long startTime = System.currentTimeMillis();
String uid = adamRdmService.getUidByMobile(mobile);
AdamUserInfoVo userInfoVo =
StringUtils.isEmpty(uid) ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
log.info("redis getUidByMobile calltime: {}",System.currentTimeMillis() - startTime);
boolean toRegister = StringUtils.isEmpty(uid);
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
// if (userInfoVo.getIsComplete() == 1) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(userInfoVo.getUid()));
if (!toRegister) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(userInfoVo.getUid()));
}
loginInfoVo.setMemberSimpleVo(adamRdmService.getMemberSimpleVo());
// }
loginInfoVo.setUserInfo(userInfoVo);
loginInfoVo.setToken(this.ssoProcess(userInfoVo));
return ResponseDto.success(loginInfoVo);
......@@ -148,20 +152,22 @@ public class AdamLoginController {
@PostMapping(value = {"login/mobile"})
public ResponseDto<AdamLoginInfoVo> loginByMobile(@NotBlank(message = "访问令牌不能为空") @RequestParam String accessToken) {
log.debug("login by mobile access token:{}", accessToken);
String mobile = this.getMobile(accessToken);
if (StringUtils.isEmpty(mobile)) return ResponseDto.failure(ErrorMapping.get("10005"));
String uid = adamRdmService.getUidByMobile(mobile);
AdamUserInfoVo userInfoVo =
StringUtils.isEmpty(uid) ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
boolean toRegister = StringUtils.isEmpty(uid);
AdamUserInfoVo userInfoVo = toRegister ? adamUserService.register(mobile) : adamRdmService.getUserInfoVoByUid(uid);
AdamLoginInfoVo loginInfoVo = AdamLoginInfoVo.getNew();
// if (loginInfoVo.getUserInfo().getIsComplete() == 1) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(userInfoVo.getUid()));
if (!toRegister) {
loginInfoVo.setRealNameInfo(adamRdmService.getRealInfoVoByUid(userInfoVo.getUid()));
loginInfoVo.setThirdPartInfo(adamRdmService.getThirdPartVoListByUid(userInfoVo.getUid()));
loginInfoVo.setUserMemberVo(adamRdmService.getUserMemberVoByUid(userInfoVo.getUid()));
}
loginInfoVo.setMemberSimpleVo(adamRdmService.getMemberSimpleVo());
// }
loginInfoVo.setUserInfo(userInfoVo);
loginInfoVo.setToken(this.ssoProcess(userInfoVo));
return ResponseDto.success(AdamLoginInfoVo.getNew());
......@@ -266,6 +272,7 @@ public class AdamLoginController {
}
private String ssoProcess(AdamUserInfoVo userInfoVo) {
long startTime = System.currentTimeMillis();
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("sub", userInfoVo.getUid());
// TODO: 2021/5/25 修改手机号更新TOKEN
......@@ -280,7 +287,7 @@ public class AdamLoginController {
DigestUtils.md5DigestAsHex(token.getBytes(StandardCharsets.UTF_8)),
jwtValidator.getExpireTtl() * 60
);
log.info(" redis ssoProcess calltime: {}",System.currentTimeMillis() - startTime);
return token;
}
}
......@@ -6,36 +6,36 @@ import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
import com.liquidnet.service.adam.constant.AdamMemberConst;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderCodeParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderPreviewVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.service.IAdamUserService;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceAdminService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.vo.PayResultVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.constraints.NotNull;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
@ApiSupport(order = 10031)
@Api(tags = "购买会员")
@Slf4j
@Validated
@RestController
@RequestMapping("member/order")
public class AdamMemberOrderController {
......@@ -44,7 +44,7 @@ public class AdamMemberOrderController {
@Autowired
IAdamMemberOrderService adamMemberOrderService;
@Autowired
IAdamMemberPriceService adamMemberPriceService;
IAdamMemberPriceAdminService adamMemberPriceService;
@Autowired
IAdamRealNameService adamRealNameService;
@Autowired
......@@ -55,27 +55,37 @@ public class AdamMemberOrderController {
@ApiOperationSupport(order = 0)
@ApiOperation(value = "购买会员预览")
@GetMapping("preview/{mno}/{id}")
public ResponseDto<AdamMemberOrderPreviewVo> preview(@PathVariable String mno, @PathVariable String id) {
public ResponseDto<AdamMemberOrderPreviewVo> preview(@NotBlank @PathVariable String mno,
@NotBlank @PathVariable String id) {
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(mno);
if (null == memberVo) {
return ResponseDto.failure(ErrorMapping.get("10107"));
}
AdamMemberOrderPreviewVo previewVo = AdamMemberOrderPreviewVo.getNew();
previewVo.setMemberId(mno);
previewVo.setMemberTitle("摩登天空会员");
AdamRealInfoVo realInfoVo = adamRealNameService.queryByUid(CurrentUtil.getCurrentUid());
previewVo.setRealInfoVo(realInfoVo);
previewVo.setPriceVo(adamMemberPriceService.query(mno, id));
previewVo.setMemberTitle(memberVo.getTitle());
previewVo.setRealInfoVo(adamRdmService.getRealInfoVoByUid(CurrentUtil.getCurrentUid()));
previewVo.setPriceVo(adamRdmService.getMemberPriceVoByPriceId(mno, id));
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(CurrentUtil.getCurrentUid());
previewVo.setBirthday(null == userInfoVo ? null : userInfoVo.getBirthday());
return ResponseDto.success(previewVo);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "购买会员或会员码")
@PostMapping("buy")
public ResponseDto<AdamMemberOrderResult> buyMemberOrCode(@RequestBody AdamMemberOrderParam param) {
public ResponseDto<AdamMemberOrderResult> buyMemberOrCode(@Valid @RequestBody AdamMemberOrderParam param) {
try {
log.info("member/order/buy:param:{}", JsonUtils.toJson(param));
log.debug("member/order/buy:param:{}", JsonUtils.toJson(param));
AdamRealInfoVo realInfoVo = adamRealNameService.queryByUid(CurrentUtil.getCurrentUid());
// TODO: 2021/6/9 判断黑名单,待定(暂不做)
AdamRealInfoVo realInfoVo = adamRdmService.getRealInfoVoByUid(CurrentUtil.getCurrentUid());
if (null == realInfoVo) {
if (StringUtils.isBlank(param.getName()) || StringUtils.isBlank(param.getIdCard())) {
return ResponseDto.failure(ErrorMapping.get("10101"));
......@@ -85,17 +95,46 @@ public class AdamMemberOrderController {
return adamMemberOrderService.buyMemberOrMemberCode(param);
} catch (Exception e) {
log.error("系统异常:购买会员或会员码", e);
log.error("购买会员或会员码异常", e);
return ResponseDto.failure();
}
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "会员支付回调")
@PostMapping("callback")
public String paymentCallBack(@ModelAttribute AdamMemberOrderCallbackParam parameter){
log.debug("/member/callback.parameter:{}", JsonUtils.toJson(parameter));
if (1 != parameter.getStatus() ||
!parameter.getType().equals(AdamMemberConst.TYPE_VIP) ||
null == parameter.getOrderCode() ||
null == parameter.getCode()) {
log.error("会员支付回调参数有误:{}", JsonUtils.toJson(parameter));
return "fail";
}
ResponseDto<Object> dto = adamMemberOrderService.memberNotifyCallBack(parameter);
if (!dto.isSuccess()) {
log.warn("###会员支付回调处理失败:handleDto:{},CallbackParam:{}", JsonUtils.toJson(dto), JsonUtils.toJson(parameter));
return "fail";
}
return "success";
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "使用兑换码")
@PostMapping("use/memberCode")
public ResponseDto<AdamMemberOrderResult> useMemberCode(@RequestBody AdamMemberOrderCodeParam param) {
@PostMapping("exchange")
public ResponseDto<AdamMemberOrderResult> useMemberCode(@Valid @RequestBody AdamMemberOrderCodeParam param) {
try {
AdamRealInfoVo realInfoVo = adamRealNameService.queryByUid(CurrentUtil.getCurrentUid());
log.debug("member/order/exchange:param:{}", JsonUtils.toJson(param));
// TODO: 2021/6/9 判断黑名单,待定(暂不做)
AdamRealInfoVo realInfoVo = adamRdmService.getRealInfoVoByUid(CurrentUtil.getCurrentUid());
if (null == realInfoVo) {
if (StringUtils.isBlank(param.getName()) || StringUtils.isBlank(param.getIdCard())) {
return ResponseDto.failure(ErrorMapping.get("10101"));
......@@ -105,12 +144,12 @@ public class AdamMemberOrderController {
return adamMemberOrderService.useMemberCode(param);
} catch (Exception e) {
log.error("系统异常:使用兑换码", e);
log.error("使用兑换码异常", e);
return ResponseDto.failure();
}
}
@ApiOperationSupport(order = 3)
@ApiOperationSupport(order = 4)
@ApiOperation(value = "会员订单列表")
@GetMapping("list")
public ResponseDto<List<AdamMemberOrderVo>> getMemberOrderList() {
......@@ -119,27 +158,18 @@ public class AdamMemberOrderController {
return ResponseDto.success(memberOrderList);
}
@ApiOperationSupport(order = 4)
@ApiOperationSupport(order = 5)
@ApiOperation(value = "会员订单详情")
@GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@PathVariable String orderNo) {
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@NotBlank @PathVariable String orderNo) {
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(CurrentUtil.getCurrentUid(), orderNo);
return ResponseDto.success(memberOrderInfo);
}
@ApiOperationSupport(order = 5)
@ApiOperation(value = "会员支付回调")
@PostMapping("callback")
public void memberOrderCallBack(@RequestBody AdamMemberOrderCallbackResult result){
ResponseDto<Object> dto = adamMemberOrderService.memberNotifyCallBack(result);
if (!dto.isSuccess()) {
log.warn(JsonUtils.toJson(dto));
}
}
@ApiOperationSupport(order = 6)
@ApiOperation(value = "会员订单状态")
@GetMapping("check")
public ResponseDto<Integer> checkOrderResult(@RequestParam @NotNull String orderNo) {
public ResponseDto<Integer> checkOrderResult(@NotBlank @RequestParam String orderNo) {
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(CurrentUtil.getCurrentUid(), orderNo);
if (null == memberOrderInfo) {
return ResponseDto.failure(ErrorMapping.get("10210"));
......
......@@ -28,8 +28,8 @@ import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
import java.util.*;
import java.util.stream.Collectors;
@ApiSupport(order = 10020)
@Api(tags = "用户中心")
......@@ -54,25 +54,55 @@ public class AdamUserController {
@ApiOperationSupport(order = 1)
@ApiOperation(value = "个人资料编辑")
@PostMapping(value = {"edit"})
public ResponseDto<AdamUserInfoVo> edit(@RequestBody @Valid AdamUserInfoParam parameter) {
public ResponseDto<AdamUserInfoVo> edit(@Valid @RequestBody AdamUserInfoParam parameter) {
log.debug("parameter:{}", JsonUtils.toJson(parameter));
if (!this.getTagsForSex().getData().contains(parameter.getSex())) {
final AdamTagVo sex = parameter.getSex();
if (null == sex) {
return ResponseDto.failure(ErrorMapping.get("10011"));
}
if (!this.getTagsForMusic().getData().contains(parameter.getTagMe())) {
List<AdamTagVo> sexList = this.getTagsForSex().getData();
List<AdamTagVo> existSexVoList = sexList.stream().filter(r -> r.getVal().equals(sex.getVal())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(existSexVoList)) {
return ResponseDto.failure(ErrorMapping.get("10011"));
}
List<AdamTagParentVo> tagMe = parameter.getTagMe();
if (null == tagMe) {
return ResponseDto.failure(ErrorMapping.get("10012"));
}
List<String> chooseTagMeParentValList = tagMe.stream().map(AdamTagParentVo::getVal).collect(Collectors.toList());
List<AdamTagParentVo> existParentVoList = this.getTagsForMusic().getData()
.stream().filter(r -> chooseTagMeParentValList.contains(r.getVal())).collect(Collectors.toList());
if (chooseTagMeParentValList.size() != existParentVoList.size()) {
return ResponseDto.failure(ErrorMapping.get("10012"));
}
for (AdamTagParentVo parentVo : existParentVoList) {
List<AdamTagVo> tagVos = parentVo.getTagVos();
List<AdamTagVo> chooseTagVos =
tagMe.stream().filter(r -> r.getVal().equals(parentVo.getVal())).collect(Collectors.toList()).get(0).getTagVos();
if (tagVos.size() < chooseTagVos.size()) {
return ResponseDto.failure(ErrorMapping.get("10012"));
}
List<String> chooseTagVoVals = chooseTagVos.stream().map(AdamTagVo::getVal).collect(Collectors.toList());
List<AdamTagVo> existTagVos = tagVos.stream().filter(r -> chooseTagVoVals.contains(r.getVal())).collect(Collectors.toList());
if (chooseTagVoVals.size() != existTagVos.size()) {
return ResponseDto.failure(ErrorMapping.get("10012"));
}
}
AdamUserInfoVo editUserInfoVo = adamRdmService.getUserInfoVoByUid(CurrentUtil.getCurrentUid());
editUserInfoVo.setAvatar(parameter.getAvatar());
editUserInfoVo.setBackground(parameter.getBackground());
editUserInfoVo.setNickname(parameter.getNickname());
editUserInfoVo.setSex(parameter.getSex());
editUserInfoVo.setSex(existSexVoList.get(0));
editUserInfoVo.setBirthday(parameter.getBirthday());
editUserInfoVo.setArea(parameter.getArea());
editUserInfoVo.setSignature(parameter.getSignature());
editUserInfoVo.setTagMe(parameter.getTagMe());
editUserInfoVo.setTagMe(tagMe);
editUserInfoVo.setIsComplete(StringUtils.isEmpty(editUserInfoVo.getUpdatedAt()) ? 0 : 1);
editUserInfoVo.setUpdatedAt(DateUtil.getNowTime());
......
package com.liquidnet.service.adam.controller.admin;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceAdminService;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -15,52 +14,58 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.List;
@ApiSupport(order = 90061)
@Api(tags = "后台管理:会员价格")
@Slf4j
@Validated
@RestController
@RequestMapping("admin/member/price")
public class AdamMemberPriceController {
public class AdamMemberPriceAdminController {
@Autowired
IAdamMemberPriceService adamMemberPriceService;
IAdamMemberPriceAdminService adamMemberPriceService;
@ApiOperationSupport(order = 1)
@ApiOperation(value = "会员价格列表")
@ApiImplicitParams({
@ApiImplicitParam(type = "path", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
})
@GetMapping("list/{memberId}")
public ResponseDto<Object> list(@PathVariable String memberId) {
List<AdamMemberPrice> list = adamMemberPriceService.list(memberId);
List<AdamMemberPriceVo> adamMemberPriceVos = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
AdamMemberPriceVo apv = new AdamMemberPriceVo();
AdamMemberPrice amp = list.get(i);
BeanUtils.copyProperties(amp, apv);
apv.setCreatedAt(DateUtil.format(amp.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
apv.setUpdatedAt(DateUtil.format(amp.getUpdatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
adamMemberPriceVos.add(apv);
}
return ResponseDto.success(adamMemberPriceVos);
@GetMapping("list")
public ResponseDto<List<AdamMemberPrice>> list(@NotBlank @RequestParam String memberId) {
return ResponseDto.success(
adamMemberPriceService.list(
Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberId, memberId)
)
);
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "会员价格详情")
@GetMapping("info/{memberId}/{memberPriceId}")
public ResponseDto<AdamMemberPriceVo> query(@PathVariable(name = "memberId") String memberId, @PathVariable(name = "memberPriceId") String memberPriceId){
AdamMemberPriceVo adamMemberPrice = adamMemberPriceService.query(memberId, memberPriceId);
return ResponseDto.success(adamMemberPrice);
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberId", value = "会员卡ID[64]"),
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "memberPriceId", value = "会员卡价格ID[64]"),
})
@GetMapping("info")
public ResponseDto<AdamMemberPrice> query(@NotBlank @RequestParam String memberId, @NotBlank @RequestParam String memberPriceId) {
return ResponseDto.success(
adamMemberPriceService.getOne(
Wrappers.lambdaQuery(AdamMemberPrice.class)
.eq(AdamMemberPrice::getMemberPriceId, memberPriceId)
.eq(AdamMemberPrice::getMemberId, memberId)
)
);
}
@ApiOperationSupport(order = 3)
@ApiOperation(value = "添加会员价格")
@PostMapping("add")
public ResponseDto<Object> add(@RequestBody AdamMemberPriceParam param) {
public ResponseDto<Object> add(@Valid @RequestBody AdamMemberPriceParam param) {
AdamMemberPrice entity = new AdamMemberPrice();
BeanUtils.copyProperties(param, entity);
adamMemberPriceService.add(entity);
......@@ -70,10 +75,8 @@ public class AdamMemberPriceController {
@ApiOperationSupport(order = 4)
@ApiOperation(value = "编辑会员价格")
@PostMapping("edit")
public ResponseDto<Object> edit(@RequestBody AdamMemberPriceParam param) {
AdamMemberPrice entity = new AdamMemberPrice();
BeanUtils.copyProperties(param, entity);
adamMemberPriceService.edit(entity);
public ResponseDto<Object> edit(@Valid @RequestBody AdamMemberPriceParam param) {
adamMemberPriceService.edit(param);
return ResponseDto.success();
}
}
......@@ -61,7 +61,7 @@ public class AdamMemberCodeServiceImpl extends ServiceImpl<AdamMemberCodeMapper,
// redis
Map<String, Object> redisMap = new HashMap<>();
redisMap.put(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(adamMemberCode.getMemberPriceId()), vo);
redisMap.put(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(adamMemberCode.getMemberPriceId()), vo);
redisUtil.hmset(AdamRedisConst.INFO_MEMBERS_CODE_INFO.concat(adamMemberCode.getBuyUid()) , redisMap);
}
}
......@@ -38,7 +38,6 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
@Autowired
RedisUtil redisUtil;
// TODO: 2021/5/26 数据存取更正,不走MySql
@Override
public AdamMemberVo queryMemberInfo() {
AdamMemberVo info = null;
......
......@@ -2,7 +2,7 @@ package com.liquidnet.service.adam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.service.adam.dto.vo.AdamRealInfoVo;
import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.mapper.AdamRealNameMapper;
......@@ -11,14 +11,11 @@ import com.liquidnet.service.base.SqlMapping;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
......@@ -38,18 +35,6 @@ public class AdamRealNameServiceImpl extends ServiceImpl<AdamRealNameMapper, Ada
@Autowired
RabbitTemplate rabbitTemplate;
@Override
public AdamRealInfoVo queryByUid(String uid) {
AdamRealInfoVo realInfoVo = (AdamRealInfoVo) redisUtil.hget(AdamRedisConst.INFO_REAL_NAME, uid);
if (null == realInfoVo) {
realInfoVo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid).and("state").is(1)),
AdamRealInfoVo.class, AdamRealInfoVo.class.getSimpleName());
if (null != realInfoVo) redisUtil.hset(AdamRedisConst.INFO_REAL_NAME, uid, realInfoVo);
}
return realInfoVo;
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamRealName realName) {
......@@ -64,7 +49,7 @@ public class AdamRealNameServiceImpl extends ServiceImpl<AdamRealNameMapper, Ada
realName.getState(),
realName.getCreatedAt()
);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_real_name.add", paramList.toArray()));
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.get("adam_real_name.add", paramList.toArray()));
}
}
......@@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamMemberCodeMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.adam.service.IAdamRdmService;
import com.liquidnet.service.adam.service.IAdamUserMemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
......@@ -22,86 +25,60 @@ import java.util.regex.Pattern;
@Slf4j
@Service
public class AdamUserMemberServiceImpl extends ServiceImpl<AdamUserMemberMapper, AdamUserMember> implements IAdamUserMemberService {
@Autowired
AdamUserMemberMapper adamUserMemberMapper;
@Autowired
AdamMemberCodeMapper adamMemberCodeMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
IAdamRdmService adamRdmService;
@Override
public String getMaxMemberNo(String memberId) {
String memberNoMaxKey = AdamRedisConst.MEMBER_MEMBER_NO_MAX_KEY.concat(memberId);
Object maxNumber = redisUtil.get(memberNoMaxKey);
public String getNextMemberNo(String memberId) {
Object memberMaxNoByMemberId = adamRdmService.getMemberMaxNoByMemberId(memberId);
if (null == memberMaxNoByMemberId) {
// TODO: 2021/6/8 +锁:查取MONGO当前最大会员号
if (null != maxNumber) {
maxNumber = maxNumber.toString();
String newNumber = String.valueOf(redisUtil.incr(memberNoMaxKey, 1));
Integer newNumberInt = newNumber.length() - 1;
String pattern = "/([\\d])\\1{" + newNumberInt + "}/";
if (Pattern.matches(pattern, newNumber)) {// 不能是完全相同的数字
newNumber = String.valueOf(redisUtil.incr(memberNoMaxKey, 1));
}
return newNumber;
Query query = Query.query(Criteria.where("memberId").is(memberId)).with(Sort.by(Sort.Direction.DESC, "memberNo")).limit(1);
AdamUserMemberVo latestMaxMemberNoVo = mongoTemplate.findOne(query, AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
long currentMaxMemberNo = Long.parseLong(latestMaxMemberNoVo.getMemberNo());
adamRdmService.setMemberNoByMemberId(memberId, currentMaxMemberNo + 1);
return String.valueOf(adamRdmService.incrMemberNoByMemberId(memberId));
} else {
maxNumber = adamMemberCodeMapper.getMaxMemberNo(memberId);// 1000
if (null != maxNumber) {
redisUtil.set(memberNoMaxKey, maxNumber);
redisUtil.incr(memberNoMaxKey, 1);
String nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNoByMemberId(memberId));
if (Pattern.matches("([\\d])\\1{" + (nextMemberNoStr.length() - 1) + "}", nextMemberNoStr)) {
// 不能是完全相同的数字
nextMemberNoStr = String.valueOf(adamRdmService.incrMemberNoByMemberId(memberId));
}
return redisUtil.get(memberNoMaxKey).toString();
return nextMemberNoStr;
}
}
// @Override
// public AdamUserMemberVo getUserMemberInfo(String uid) {
// AdamUserMemberVo adamUserMemberVo = (AdamUserMemberVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_USER, uid);
// if (null == adamUserMemberVo) {
// adamUserMemberVo = mongoTemplate.findOne(Query.query(Criteria.where("uid").is(uid)), AdamUserMemberVo.class, AdamUserMemberVo.class.getSimpleName());
//
// if (null != adamUserMemberVo) redisUtil.hset(AdamRedisConst.INFO_MEMBERS_USER, uid, adamUserMemberVo);
// public boolean getOneFromRepertory(String memberId) {
// AdamMemberVo adamMemberVo = (AdamMemberVo) redisUtil.get(AdamRedisConst.INFO_MEMBERS_INFO.concat(memberId));
// if (null == adamMemberVo) {
// adamMemberVo = mongoTemplate.findOne(Query.query(Criteria.where("memberId").is(memberId)), AdamMemberVo.class, AdamMemberVo.class.getSimpleName());
// }
// if (0 == adamMemberVo.getLimitation()) {
// return true;
// }
// String repertoryKey = AdamRedisConst.INFO_MEMBERS_REPERTORY_INFO.concat(memberId);
// Object repertory = redisUtil.get(repertoryKey);
// // 判断,如果没有从redis中拿到库存数量,则把MongoDB中查出的库存插入redis
// if (null == repertory) {
// redisUtil.set(repertoryKey, adamMemberVo.getLimitation());
// repertory = adamMemberVo.getLimitation();
// }
// Long limitation = Long.parseLong(repertory.toString());
// limitation = redisUtil.decr(repertoryKey, limitation);
// // 库存大于0 正常返回,否则回滚一位库存
// if (limitation >= 0) {
// return true;
// } else {
// redisUtil.incr(repertoryKey, 1);
// return false;
// }
// return adamUserMemberVo;
// }
@Override
public boolean getOneFromRepertory(String memberId) {
AdamMemberVo adamMemberVo = (AdamMemberVo) redisUtil.get(AdamRedisConst.INFO_MEMBERS_INFO.concat(memberId));
if (null == adamMemberVo) {
adamMemberVo = mongoTemplate.findOne(Query.query(Criteria.where("memberId").is(memberId)), AdamMemberVo.class, AdamMemberVo.class.getSimpleName());
}
if (0 == adamMemberVo.getLimitation()) {
return true;
}
String repertoryKey = AdamRedisConst.INFO_MEMBERS_REPERTORY_INFO.concat(memberId);
Object repertory = redisUtil.get(repertoryKey);
// 判断,如果没有从redis中拿到库存数量,则把MongoDB中查出的库存插入redis
if (null == repertory) {
redisUtil.set(repertoryKey, adamMemberVo.getLimitation());
repertory = adamMemberVo.getLimitation();
}
Long limitation = Long.parseLong(repertory.toString());
limitation = redisUtil.decr(repertoryKey, limitation);
// 库存大于0 正常返回,否则回滚一位库存
if (limitation >= 0) {
return true;
} else {
redisUtil.incr(repertoryKey, 1);
return false;
}
}
@Override
public Integer getRepertoryCount(String memberId) {
return 0;
}
}
......@@ -17,6 +17,7 @@ import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.mongodb.client.result.UpdateResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.bson.Document;
......@@ -43,6 +44,7 @@ import java.util.List;
* @author liquidnet
* @since 2021-05-10
*/
@Slf4j
@Service
public class AdamUserServiceImpl extends ServiceImpl<AdamUserMapper, AdamUser> implements IAdamUserService {
@Autowired
......@@ -96,7 +98,9 @@ public class AdamUserServiceImpl extends ServiceImpl<AdamUserMapper, AdamUser> i
userInfoVo.setQrCode("lN".concat(userInfoVo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfoVo.setCreateAt(nowStr);
long startTime = System.currentTimeMillis();
AdamUserInfoVo insert = mongoTemplate.insert(userInfoVo, AdamUserInfoVo.class.getSimpleName());
log.info("mongodb register insert calltime: {}",System.currentTimeMillis() - startTime);
List<Object> paramList = Arrays.asList(userInfoVo.getUid(), userInfoVo.getMobile(), userInfoVo.getState(), now);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
......
......@@ -37,7 +37,7 @@ public class AdamMemberCodeAdminServiceImpl extends ServiceImpl<AdamMemberCodeMa
// 需要主动生成会员编号
AdamMemberCode adamMemberCode = new AdamMemberCode();
adamMemberCode.setType(param.getType());
adamMemberCode.setCode(MemberUtil.buyCode());
adamMemberCode.setCode(MemberUtil.freeCode());
adamMemberCode.setMemberId(param.getMemberId());
adamMemberCode.setMemberPriceId(param.getMemberPriceId());
adamMemberCode.setState(0);
......
package com.liquidnet.service.adam.service.impl.admin;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberPriceParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberPriceVo;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceService;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.FindOneAndUpdateOptions;
import com.mongodb.client.model.ReturnDocument;
import com.liquidnet.service.adam.service.admin.IAdamMemberPriceAdminService;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
......@@ -29,83 +22,47 @@ import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
public class AdamMemberPriceServiceImpl extends ServiceImpl<AdamMemberPriceMapper, AdamMemberPrice> implements IAdamMemberPriceService {
public class AdamMemberPriceAdminServiceImpl extends ServiceImpl<AdamMemberPriceMapper, AdamMemberPrice> implements IAdamMemberPriceAdminService {
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
AdamMemberPriceMapper adamMemberPriceMapper;
@Autowired
RabbitTemplate rabbitTemplate;
MongoTemplate mongoTemplate;
@Autowired
RedisUtil redisUtil;
@Autowired
AdamMemberPriceMapper adamMemberPriceMapper;
@Override
public List<AdamMemberPrice> list(String memberId) {
Map<String,Object> map = new HashMap<>();
map.put("member_id", memberId);
List<AdamMemberPrice> adamMemberPrices = adamMemberPriceMapper.selectByMap(map);
return adamMemberPrices;
}
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void add(AdamMemberPrice info) {
// mysql
info.setMemberPriceId(IDGenerator.nextSnowId().toString());
info.setCreatedAt(LocalDateTime.now());
adamMemberPriceMapper.insert(info);
// mongo
AdamMemberPriceVo vo = new AdamMemberPriceVo();
BeanUtils.copyProperties(info, vo);
vo.setCreatedAt(DateUtil.format(info.getCreatedAt(), DateUtil.Formatter.yyyyMMddHHmmss));
mongoTemplate.insert(vo, AdamMemberPriceVo.class.getSimpleName());
// redis
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(info.getMemberId()), vo.getMemberPriceId(), vo);
adamMemberPriceMapper.insert(info);
mongoTemplate.insert(AdamMemberPriceVo.getNew().copy(info), AdamMemberPriceVo.class.getSimpleName());
}
@Override
public AdamMemberPriceVo query(String memberId, String memberPriceId) {
AdamMemberPriceVo priceVo = (AdamMemberPriceVo) redisUtil.hget(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId), memberPriceId);
if (null == priceVo) {
priceVo = mongoTemplate.findOne(Query.query(Criteria.where("memberPriceId").is(memberPriceId)), AdamMemberPriceVo.class, AdamMemberPriceVo.class.getSimpleName());
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamMemberPriceParam param) {
AdamMemberPrice updateInfo = new AdamMemberPrice();
updateInfo.setState(param.getState());
updateInfo.setName(param.getName());
updateInfo.setPrice(param.getPrice());
updateInfo.setPriceFixed(param.getPriceFixed());
updateInfo.setDays(param.getDays());
updateInfo.setDetail(param.getDetail());
updateInfo.setUpdatedAt(LocalDateTime.now());
if (null != priceVo) redisUtil.hset(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(memberId), memberPriceId, priceVo);
}
return priceVo;
}
String memberPriceId = param.getMemberPriceId();
@Override
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public boolean edit(AdamMemberPrice info) {
try {
String memberPriceId = info.getMemberPriceId();
LocalDateTime updatedAt = LocalDateTime.now();
info.setUpdatedAt(updatedAt);
// mysql
adamMemberPriceMapper.update(
info, new UpdateWrapper<AdamMemberPrice>().eq("member_price_id", memberPriceId));
// mongo
BasicDBObject object = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(info)));
Document doc = mongoTemplate.getCollection(AdamMemberPrice.class.getSimpleName())
.findOneAndUpdate(
Query.query(Criteria.where("memberPriceId").is(memberPriceId)).getQueryObject(),
object,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
// reids
redisUtil.hset(AdamRedisConst.INFO_MEMBERS_PRICE_INFO.concat(info.getMemberId()), info.getMemberPriceId(), info);
} catch (Exception e){
return false;
}
return true;
adamMemberPriceMapper.update(
updateInfo, Wrappers.lambdaQuery(AdamMemberPrice.class).eq(AdamMemberPrice::getMemberPriceId, memberPriceId));
mongoTemplate.getCollection(AdamMemberPriceVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("memberPriceId").is(memberPriceId)).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(updateInfo)))
);
redisUtil.del(AdamRedisConst.INFO_MEMBER_PRICE.concat(memberPriceId));
}
}
package com.liquidnet.service.adam.service.impl.admin;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
......@@ -9,90 +8,54 @@ import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamMemberParam;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.entity.AdamMember;
import com.liquidnet.service.adam.entity.AdamMemberPrice;
import com.liquidnet.service.adam.mapper.AdamMemberMapper;
import com.liquidnet.service.adam.mapper.AdamMemberPriceMapper;
import com.liquidnet.service.adam.service.admin.IAdamMemberAdminService;
import com.mongodb.BasicDBObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.bson.Document;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.convert.MongoConverter;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.*;
@Slf4j
@Service
public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, AdamMember> implements IAdamMemberAdminService {
@Autowired
AdamMemberMapper adamMemberMapper;
@Autowired
AdamMemberPriceMapper adamMemberPriceMapper;
@Autowired
MongoTemplate mongoTemplate;
@Autowired
MongoConverter mongoConverter;
@Autowired
RabbitTemplate rabbitTemplate;
@Autowired
RedisUtil redisUtil;
@Override
public List<AdamMember> list() {
List<AdamMember> infoList = new ArrayList<>();
List<Object> list = redisUtil.lGet(AdamRedisConst.INFO_MEMBERS, 0, -1);
if (CollectionUtils.isEmpty(list)) {
infoList = mongoTemplate.findAll(AdamMember.class);
} else {
for (Object o : list) {
infoList.add((AdamMember) o);
}
}
return infoList;
}
@Override
public void add(AdamMemberParam info) {
// mysql
AdamMember adamMember = new AdamMember();
BeanUtils.copyProperties(info, adamMember);
adamMember.setMemberId(IDGenerator.nextSnowId().toString());
adamMember.setStartNo(1000);
adamMember.setStartNo(10000);
adamMember.setCreatedAt(LocalDateTime.now());
adamMember.setUpdatedAt(LocalDateTime.now());
adamMemberMapper.insert(adamMember);
AdamMemberVo amv = new AdamMemberVo();
BeanUtils.copyProperties(adamMember, amv);
List<AdamMemberPrice> adamMemberPrices = adamMemberPriceMapper.memberPriceList(adamMember.getMemberId());
amv.setPriceVoList(AdamMemberVo.setMemberPrice(adamMemberPrices));
adamMemberMapper.insert(adamMember);
// 添加数据到 Mongo
mongoTemplate.insert(amv, AdamMemberVo.class.getSimpleName());
// todo 放入MQ
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get("adam_member.add", (new AdamMemberVo()).getMqList(adamMember).toArray()));
// todo 同步redis
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(adamMember.getMemberId()), amv);
mongoTemplate.insert(AdamMemberVo.getNew().copy(adamMember), AdamMemberVo.class.getSimpleName());
}
@Override
public void edit(AdamMember info) {
BasicDBObject object = new BasicDBObject("$set", JSON.parse(JsonUtils.toJson(info)));
info.setUpdatedAt(LocalDateTime.now());
mongoTemplate.getCollection(AdamMemberVo.class.getSimpleName())
.updateOne(Query.query(Criteria.where("mId").is(info.getMid())).getQueryObject(), object);
AdamMemberVo updateVo = AdamMemberVo.getNew().copy(info);
redisUtil.set(AdamRedisConst.INFO_MEMBERS_INFO.concat(info.getMid().toString()), info);
mongoTemplate.getCollection(AdamMemberVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("mId").is(info.getMid())).getQueryObject(),
new Document("$set", Document.parse(JsonUtils.toJson(updateVo)))
);
redisUtil.del(AdamRedisConst.INFO_MEMBER_CATEGORY.concat(info.getMemberId()));
}
}
......@@ -22,6 +22,7 @@
10104=
10105=入场人不存在
10106=收获地址不存在
10107=会员卡信息不存在
......@@ -50,7 +51,8 @@
10500=会员订单回调参数有误,请核实
10500=
10501=会员订单回调处理失败,请核实
10502=会员订单回调处理失败,该订单已处理
10503=会员订单回调处理失败,订单金额有误
\ No newline at end of file
10503=会员订单回调处理失败,订单金额有误
10504=会员卡信息不存在,请核实
......@@ -13,10 +13,18 @@ adam_third_party.add=INSERT INTO adam_third_party (`uid`, open_id, avatar, nickn
adam_third_party.unbind=UPDATE adam_third_party SET `state`=2, updated_at=? WHERE `uid`=? AND platform=? AND `state`=1
# ----------------------------------------------------
adam_member.add=INSERT INTO `adam_member` ( `name`, `title`, `sub_title`, `icon`, `avatar`, `start_no`, `type`, `interests_detail`, `notes`, `is_notice`, `notice_info`, `notice_title`, `need_question`, `display_agreement`, `agreement`, `member_id`, `limitation`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
adam_member_order.add=INSERT INTO `adam_member_order` ( `order_no`, `uid`, `mode`, `price`, `price_paid`, `member_name`, `member_id`, `member_price_id`, `days`, `state`, `member_no`, `pay_channel`, `pay_no`, `birthday`, `payment_at`, `created_at`, `updated_at`, `client_ip`, `source`, `version`) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
adam_user_member_add=
adam_user_member_update=
adam_member.add=INSERT INTO adam_member ( `name`, `title`, `sub_title`, `icon`, `avatar`, `start_no`, `type`, `interests_detail`, `notes`, `is_notice`, `notice_info`, `notice_title`, `need_question`, `display_agreement`, `agreement`, `member_id`, `limitation`) VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
# ----------------------------------------------------
adam_member_order.add=INSERT INTO adam_member_order ( `order_no`, `uid`, `mode`, `price`, `price_paid`, `member_name`, `member_id`, `member_price_id`, `days`, `state`, `member_no`, `pay_channel`, `pay_no`, `birthday`, `payment_at`, `created_at`, `updated_at`, `client_ip`, `source`, `version`) values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
adam_member_order.update=UPDATE adam_member_order SET `state` =?, member_no =?, payment_at =?, updated_at =? WHERE order_no =?
# ----------------------------------------------------
adam_member_code.add=INSERT INTO adam_member_code (code, `type`, member_id, member_price_id, member_no, `state`, created_at, buy_order_no, buy_uid, buy_at) VALUES (?,?,?,?,?,?,?,?,?,?)
# ----------------------------------------------------
adam_user_member.add=INSERT INTO adam_user_member (`uid`, member_id, member_no, `state`, expiry_at, created_at) VALUES (?,?,?,?,?,?)
adam_user_member.update=UPDATE adam_user_member SET `state` =?, expiry_at =?, updated_at =? WHERE `uid` =?
# ----------------------------------------------------
adam_addresses.add=
......
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbHashIndexCreate {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
HashMap<String,String[]> colNameMap = new HashMap();
colNameMap.put("AdamUserInfoVo", new String[]{"uid","state"});
colNameMap.put("AdamRealInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamThirdPartInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamUserMemberVo",new String[]{"uid"});
colNameMap.put("AdamMemberVo",new String[]{"member_id"});
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
for(Map.Entry<String, String[]> entry: colNameMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
if(entry.getKey().equalsIgnoreCase(collectionName)){
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
String[] indexColArray = entry.getValue();
for(String indexName:indexColArray){
BasicDBObject index1 = new BasicDBObject();
index1.put(indexName,"hashed");
indexModels.add(new IndexModel(index1));
}
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
}
}
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbIndexCreate {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
HashMap<String,String[]> colNameMap = new HashMap();
colNameMap.put("AdamUserInfoVo", new String[]{"uid","state"});
colNameMap.put("AdamRealInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamThirdPartInfoVo",new String[]{"uid","state"});
colNameMap.put("AdamUserMemberVo",new String[]{"uid"});
colNameMap.put("AdamMemberVo",new String[]{"member_id"});
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
for(Map.Entry<String, String[]> entry: colNameMap.entrySet()) {
System.out.print(entry.getKey() + ":" + entry.getValue() + "\t");
if(entry.getKey().equalsIgnoreCase(collectionName)){
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
String[] indexColArray = entry.getValue();
for(String indexName:indexColArray){
BasicDBObject index1 = new BasicDBObject();
index1.put(indexName,1);
indexModels.add(new IndexModel(index1));
}
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
}
}
package com.liquidnet.service.adam.test;
import com.mongodb.BasicDBObject;
import com.mongodb.client.model.IndexModel;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMongodbIndexCreate
* @Package com.liquidnet.service.adam.test
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/7 17:02
*/
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMongodbIndexCreateExample {
@Autowired
private MongoTemplate mongoTemplate;
@Test
public void createMongodbIndex(){
String[] collectionNames = {"test-mongo"};
// String[] collectionNames = {"AdamUserInfoVo","AdamRealInfoVo","AdamThirdPartInfoVo","AdamUserMemberVo","AdamMemberVo"};
for(String collectionName:collectionNames){
if(mongoTemplate.collectionExists(collectionName)){
System.out.printf("执行错误!");
return;
}
//需要创建的索引集合
List<IndexModel> indexModels = new ArrayList<>();
BasicDBObject index1 = new BasicDBObject();
index1.put("name",1);
indexModels.add(new IndexModel(index1));
BasicDBObject index2 = new BasicDBObject();
index2.put("name",1);
index2.put("age",1);
indexModels.add(new IndexModel((index2)));
mongoTemplate.createCollection(collectionName).createIndexes(indexModels);
}
}
}
......@@ -48,6 +48,14 @@
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>taobao-sdk-impl</groupId>
<artifactId>taobao-sdk-impl</artifactId>
<version>0.0.2</version>
<type>jar</type>
<scope>system</scope>
<systemPath>${basedir}/lib/taobao-sdk-java-auto_1600401599540-20210607-impl.jar</systemPath>
</dependency>
</dependencies>
<build>
......@@ -58,4 +66,4 @@
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
</project>
......@@ -268,11 +268,12 @@ public class KylinStationController {
if (null == checkUserRelationVo || CollectionUtils.isEmpty(relationParams = checkUserRelationVo.getRelationParams())) {
return ResponseDto.failure(ErrorMapping.get("20606"));
}
Optional<CheckPerformanceRelationParam> optional = relationParams.stream().findFirst().filter(r -> r.getPerformanceId().equals(performanceId));
if (!optional.isPresent()) {
List<CheckPerformanceRelationParam> performanceRelationParams =
relationParams.stream().filter(r -> r.getPerformanceId().equals(performanceId)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(performanceRelationParams)) {
return ResponseDto.failure(ErrorMapping.get("20607"));
}
CheckPerformanceRelationParam relationParam = optional.get();
CheckPerformanceRelationParam relationParam = performanceRelationParams.get(0);
LocalDateTime canDownDt = DateUtil.Formatter.yyyyMMddHHmmss.parse(relationParam.getCanDownTime());
if (canDownDt.isAfter(LocalDateTime.now())) {
return ResponseDto.failure(ErrorMapping.get("20608"));
......@@ -358,11 +359,11 @@ public class KylinStationController {
if (null == checkUserRelationVo || CollectionUtils.isEmpty(relationParams = checkUserRelationVo.getRelationParams())) {
return ResponseDto.failure(ErrorMapping.get("20606"));
}
Optional<CheckPerformanceRelationParam> optional = relationParams.stream().findFirst().filter(r -> r.getPerformanceId().equals(performanceId));
if (!optional.isPresent()) {
List<CheckPerformanceRelationParam> performanceRelationParamList = relationParams.stream().filter(r -> r.getPerformanceId().equals(performanceId)).collect(Collectors.toList());
if (CollectionUtils.isEmpty(performanceRelationParamList)) {
return ResponseDto.failure(ErrorMapping.get("20607"));
}
CheckPerformanceRelationParam relationParam = optional.get();
CheckPerformanceRelationParam relationParam = performanceRelationParamList.get(0);
LocalDateTime canDownDt = DateUtil.Formatter.yyyyMMddHHmmss.parse(relationParam.getCanDownTime());
if (canDownDt.isAfter(LocalDateTime.now())) {
return ResponseDto.failure(ErrorMapping.get("20608"));
......
......@@ -23,8 +23,11 @@ import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.TaobaoTicketUtils;
import com.mongodb.BasicDBObject;
import com.taobao.api.request.AlibabaDamaiMevOpenBatchpushticketRequest;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RLock;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
......@@ -84,6 +87,8 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
private FeignAdamBaseClient feignAdamBaseClient;
@Autowired
private ExpressesMapper expressesMapper;
@Autowired
private TaobaoTicketUtils taobaoTicketUtils;
@Override
public ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam) {
......@@ -492,7 +497,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTickets.setPayCode(payResultVo.getCode());
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
payResultVo.setShowUrl(payOrderParam.getShowUrl());
payResultVo.setReturnUrl(payOrderParam.getReturnUrl()+orderTicketId);
payResultVo.setReturnUrl(payOrderParam.getReturnUrl() + orderTicketId);
}
// 生成vo
KylinOrderTicketVo orderTicketVo = new KylinOrderTicketVo();
......@@ -700,9 +705,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
SqlMapping.gets(sqls, sqlsDataA,sqlsDataB,sqlsDataC));
SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC));
// 发短信
// 大麦回调
// sycOrder(orderTickets.getOrderTicketsId());
return "success";
}
......@@ -897,4 +905,39 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
return true;
}
}
private boolean sycOrder(String orderId) {
try {
KylinOrderTicketVo orderData = mongoTemplate.findOne(
Query.query(Criteria.where("orderTicketsId").is(orderId)),
KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
List<KylinOrderTicketEntitiesVo> listData = mongoTemplate.find(Query.query(Criteria.where("orderId").is(orderId)), KylinOrderTicketEntitiesVo.class, KylinOrderTicketEntitiesVo.class.getSimpleName());
AlibabaDamaiMevOpenBatchpushticketRequest req = new AlibabaDamaiMevOpenBatchpushticketRequest();
List<AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam> list2 = new ArrayList<AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam>();
for (int i = 0; i < listData.size(); i++) {
KylinOrderTicketEntitiesVo item = listData.get(i);
AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam obj3 = new AlibabaDamaiMevOpenBatchpushticketRequest.ThirdTicketPushOpenParam();
list2.add(obj3);
obj3.setUserName(item.getEnterName());//用户名 入场人姓名
obj3.setCertificateNo(item.getEnterIdCode());//证件号 入场人身份证
obj3.setOrderUserMobile(item.getEnterMobile());//用户手机号 入场人手机号
obj3.setCertificateType(item.getEnterType().longValue());//证件内容 入场人证件type
obj3.setPayTime(DateUtils.parseDate(orderData.getTimePay(),new String[]{"yyyy-MM-dd HH:mm:ss"}));//支付时间
// obj3.setPerformId(timemId);//场次id
// obj3.setTicketItemId(ticketsmId);
obj3.setVoucherId(item.getMid().longValue());//票单号 入场人id
obj3.setOrderId(Long.parseLong(orderData.getOrderTicketsId()));//订单id orderId
obj3.setMediumType(orderData.getGetTicketType().equals("express") ? 1L : 2L);//票类型 快递 电子
obj3.setSupplierSecret(taobaoTicketUtils.getSupplierSecret());
obj3.setSystemId(taobaoTicketUtils.getSystemId());
obj3.setSeatType(1L);
obj3.setTicketType(1L);//票类型
}
return true;
} catch (Exception e) {
return false;
}
}
}
package com.liquidnet.service.kylin.utils;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import org.springframework.stereotype.Service;
@Service
public class TaobaoTicketUtils {
private String URL = "http://gw.api.taobao.com/router/rest";
private String APPKEY = "27542597";
private String SECRET = "900025efc616fd2446344bb8fa21d039";
private String SUPPLIER_SECRET= "444d0752439f921a75eaf5951a8bc03c";
private Long SYSTEM_ID= 15669L;
// private String url = "http://gw.api.tbsandbox.com/router/rest";
// private String appkey = "4272";
// private String secret = "0ebbcccfee18d7ad1aebc5b135ffa906";
private TaobaoClient client = null;
public TaobaoClient initTaobaoClient() {
if (client == null) {
client = new DefaultTaobaoClient(URL, APPKEY, SECRET);
}
return client;
}
public String getSupplierSecret(){
return SUPPLIER_SECRET;
}
public Long getSystemId(){
return SYSTEM_ID;
}
}
......@@ -9,9 +9,9 @@ eureka:
spring:
cloud:
config:
# uri: http://127.0.0.1:7002/support-config
profile: ${liquidnet.cloudConfig.profile}
name: ${spring.application.name} #默认为spring.application.name
discovery:
enabled: true
service-id: liquidnet-support-config
\ No newline at end of file
uri: http://39.106.122.201:7002/support-config
# profile: ${liquidnet.cloudConfig.profile}
# name: ${spring.application.name} #默认为spring.application.name
# discovery:
# enabled: true
# service-id: liquidnet-support-config
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