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

Commit b9c8aef4 authored by jiangxiulong's avatar jiangxiulong

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

parents 539ed3c2 e50b8595
......@@ -3,6 +3,7 @@ package com.liquidnet.commons.lang.util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.Map;
public class CurrentUtil {
......@@ -17,7 +18,18 @@ public class CurrentUtil {
}
public static Map getTokenClaims() {
return JsonUtils.fromJson(ServletUtils.getRequest().getHeader(uTag), Map.class);
String utag = ServletUtils.getRequest().getHeader(uTag);
// TODO: 2021/5/14 dev联调API未启用token默认使用1
if (StringUtils.isEmpty(utag)) {
Map<String, Object> map = new HashMap<>();
map.put("mobile", "000");
map.put("nickname", "111");
map.put("uid", "1");
return map;
}
return JsonUtils.fromJson(utag, Map.class);
}
public static String getCurrentUid() {
......
......@@ -66,10 +66,15 @@ public class IDGenerator {
}
public static String ticketOrderCode(String orderTicketId) {
String number = orderTicketId + "06d";
int len =orderTicketId.length();
String time = System.currentTimeMillis()/1000+"";
return "T" + number.substring(0,len-4)+time.substring(7,8)+number.substring(len-2)+time.substring(8,9)+number.substring(len-4,2);
String number = orderTicketId;
int len = orderTicketId.length();
String time = System.currentTimeMillis() / 1000 + "";
String orderCode = "T" + number.substring(0, len - 4);
orderCode+=time.substring(7, 8);
orderCode+=number.substring(len - 2);
orderCode+=time.substring(8, 9);
orderCode+=number.substring(len - 4, len-2);
return orderCode;
}
private static long genTime() {
......
......@@ -12,43 +12,36 @@ import java.time.LocalDateTime;
@Data
public class AdamMemberOrderParam implements Serializable {
private static final long serialVersionUID = 3219448286221952517L;
/**
* 会员卡id
*/
@ApiModelProperty(position = 0, required = true, value = "会员ID[50]", example = "62960077673504768")
@ApiModelProperty(position = 10, required = true, value = "会员ID[50]", example = "62960077673504768")
private String memberId;
@ApiModelProperty(position = 1, required = true, value = "购买方式:0-购买会员 1-购买会员码,2-使用会员码", example = "0")
@ApiModelProperty(position = 11, required = true, value = "购买方式:0-购买会员,1-购买会员码,2-使用会员码", example = "0")
private Integer mode;
@ApiModelProperty(position = 2, required = true, value = "应付金额", example = "0")
@ApiModelProperty(position = 12, required = true, value = "应付金额", example = "0")
private BigDecimal price;
@ApiModelProperty(position = 3, required = true, value = "实付金额", example = "0")
@ApiModelProperty(position = 13, required = true, value = "实付金额", example = "0")
private BigDecimal pricePaid;
@ApiModelProperty(position = 4, required = true, value = "会员价格id", example = "0")
@ApiModelProperty(position = 14, required = true, value = "会员价格ID", example = "0")
private String memberPriceId;
@ApiModelProperty(position = 5, required = false, value = "先这么写,应该从token取才对", example = "0")
private String uid;
@ApiModelProperty(position = 6, required = true, value = "用户生日", example = "0")
@ApiModelProperty(position = 15, required = true, value = "用户生日", example = "0")
private LocalDateTime birthday;
/**
* 支付方式
* ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP
*/
@ApiModelProperty(position = 7, required = true, value = "支付方式:ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP")
@ApiModelProperty(position = 16, required = true, value = "支付方式:ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP")
private String payChannel;
/**
* AuthCode
*/
@ApiModelProperty(position = 8, required = true, value = "支付用的AuthCode")
@ApiModelProperty(position = 17, required = true, value = "支付用的AuthCode")
private String authCode;
@ApiModelProperty(position = 9, required = true, value = "支付用的productId")
@ApiModelProperty(position = 18, required = true, value = "支付用的productId")
private String productId;
@ApiModelProperty(position = 10, required = true, value = "支付用的openId")
@ApiModelProperty(position = 19, required = true, value = "支付用的openId")
private String openId;
@ApiModelProperty(position = 11, required = false, value = "ip地址")
@ApiModelProperty(position = 20, required = false, value = "姓名")
private String name;
@ApiModelProperty(position = 21, required = false, value = "身份证件号")
private String idCard;
@ApiModelProperty(position = 22, required = false, value = "用户ID", example = "1")
private String uid;
@ApiModelProperty(position = 23, required = false, value = "IP地址")
private String clientIp;
@ApiModelProperty(position = 12, required = false, value = "版本")
@ApiModelProperty(position = 24, required = false, value = "版本")
private String version;
@ApiModelProperty(position = 13, required = false, value = "来源")
@ApiModelProperty(position = 25, required = false, value = "来源")
private String source;
}
......@@ -62,7 +62,7 @@ public class AdamMemberParam implements Serializable {
/**
* '是否展示须知'
*/
@ApiModelProperty(position = 8, required = true, value = "是否展示须知[200]", example = "0")
@ApiModelProperty(position = 8, required = true, value = "是否展示须知[[0-否,1-是]]", allowableValues = "0,1")
private Integer isNotice;
/**
......@@ -80,13 +80,13 @@ public class AdamMemberParam implements Serializable {
/**
* 是否需要答题 0不需要 1需要
*/
@ApiModelProperty(position = 11, required = true, value = "是否需要答题[200]", example = "0")
@ApiModelProperty(position = 11, required = true, value = "是否需要答题[0-否,1-是]", allowableValues = "0,1")
private Integer needQuestion;
/**
* 是否展示协议 0否1是
*/
@ApiModelProperty(position = 12, required = true, value = "是否展示协议[200]", example = "0")
@ApiModelProperty(position = 12, required = true, value = "是否展示协议[0-否,1-是]", allowableValues = "0,1")
private Integer displayAgreement;
/**
......@@ -101,6 +101,6 @@ public class AdamMemberParam implements Serializable {
@ApiModelProperty(position = 14, required = true, value = "限购数量,0不限购[200]", example = "0")
private Integer limitation;
@ApiModelProperty(position = 15, required = true, value = "会员卡价格ID", dataType = "List", example = "63666042953703424")
@ApiModelProperty(position = 15, required = true, value = "会员卡价格ID", example = "[63666042953703424]")
private List<String> memberPriceList;
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberOrderPreviewVo", description = "会员订单预览")
@Data
public class AdamMemberOrderPreviewVo implements Serializable {
private static final long serialVersionUID = 2035177741044060344L;
@ApiModelProperty(position = 10, value = "会员ID[50]")
private String memberId;
@ApiModelProperty(position = 11, value = "会员标题[50]", example = "摩登天空会员")
private String memberTitle;
@ApiModelProperty(position = 12, value = "价格详情")
private AdamMemberPriceVo priceVo;
@ApiModelProperty(position = 13, value = "是否实名[true-是]")
private Boolean realNamed;
private static final AdamMemberOrderPreviewVo obj = new AdamMemberOrderPreviewVo();
public static AdamMemberOrderPreviewVo getNew() {
try {
return (AdamMemberOrderPreviewVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberOrderPreviewVo();
}
}
}
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Arrays;
import java.util.List;
@ApiModel(value = "AdamMemberRightsVo", description = "会员")
@Data
public class AdamMemberRightsVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -2407106925001008460L;
@ApiModelProperty(position = 0, value = "权益封面[255]")
private String cover;
@ApiModelProperty(position = 1, value = "权益名称[10]")
private String name;
@ApiModelProperty(position = 2, value = "展示顺序[2]")
private Integer sort;
private static final AdamMemberRightsVo obj = new AdamMemberRightsVo();
public static AdamMemberRightsVo getNew() {
try {
return (AdamMemberRightsVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new AdamMemberRightsVo();
}
public AdamMemberRightsVo setCover(String cover) {
this.cover = cover;
return this;
}
public AdamMemberRightsVo setName(String name) {
this.name = name;
return this;
}
public AdamMemberRightsVo setSort(Integer sort) {
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")
);
}
}
......@@ -17,101 +17,44 @@ import java.util.List;
@Data
public class AdamMemberVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 5258094625450569125L;
private static final AdamMemberVo obj = new AdamMemberVo();
/**
* 会员卡id
*/
@ApiModelProperty(position = 0, required = false, value = "会员ID[50]")
@ApiModelProperty(position = 0, value = "会员ID[50]")
private String memberId;
/**
* 会员卡名称
*/
@ApiModelProperty(position = 1, required = false, value = "会员名称[50]", example = "摩登天空会员卡")
@ApiModelProperty(position = 1, value = "会员名称[50]", example = "摩登天空会员卡")
private String name;
/**
* 标题
*/
@ApiModelProperty(position = 2, required = true, value = "会员标题[50]", example = "摩登天空会员卡")
@ApiModelProperty(position = 2, value = "会员标题[50]", example = "摩登天空会员卡")
private String title;
/**
* 副标题
*/
@ApiModelProperty(position = 3, required = true, value = "会员副标题[50]", example = "摩登天空会员卡副标题")
@ApiModelProperty(position = 3, value = "会员副标题[50]", example = "摩登天空会员卡副标题")
private String subTitle;
/**
* 图标
*/
@ApiModelProperty(position = 4, required = true, value = "icon图标[200]", example = "https://img.zhengzai.tv/files/2020/08/28/5f490418d30b4.png")
@ApiModelProperty(position = 4, value = "icon图标[200]", example = "https://img.zhengzai.tv/files/2020/08/28/5f490418d30b4.png")
private String icon;
/**
* 头像
*/
@ApiModelProperty(position = 5, required = true, value = "会员头像[200]", example = "https://img.zhengzai.tv/files/2020/08/31/5f4c75095e9bc.pngv")
@ApiModelProperty(position = 5, value = "会员头像[200]", example = "https://img.zhengzai.tv/files/2020/08/31/5f4c75095e9bc.pngv")
private String avatar;
/**
* 权益详情
*/
@ApiModelProperty(position = 6, required = true, value = "权益详情[200]", example = "加入摩登天空会员您可享受到.....")
@ApiModelProperty(position = 6, value = "权益详情[200]", example = "加入摩登天空会员您可享受到.....")
private String interestsDetail;
/**
* 注意事项
*/
@ApiModelProperty(position = 7, required = true, value = "注意事项[200]", example = "摩登天空会员需注意以下事项.....")
@ApiModelProperty(position = 7, value = "注意事项[200]", example = "摩登天空会员需注意以下事项.....")
private String notes;
/**
* '是否展示须知'
*/
@ApiModelProperty(position = 8, required = true, value = "是否展示须知[200]", example = "0")
@ApiModelProperty(position = 8, value = "是否展示须知[200]", example = "0")
private Integer isNotice;
/**
* 须知内容
*/
@ApiModelProperty(position = 9, required = true, value = "会员须知内容[200]", example = "会员须知细则1.xxxx\n2.xxxx")
@ApiModelProperty(position = 9, value = "会员须知内容[200]", example = "会员须知细则1.xxxx\n2.xxxx")
private String noticeInfo;
/**
* 须知标题
*/
@ApiModelProperty(position = 10, required = true, value = "会员须知标题[200]", example = "摩登天空会员须知")
@ApiModelProperty(position = 10, value = "会员须知标题[200]", example = "摩登天空会员须知")
private String noticeTitle;
/**
* 是否需要答题 0不需要 1需要
*/
@ApiModelProperty(position = 11, required = true, value = "是否需要答题[200]", example = "0")
@ApiModelProperty(position = 11, value = "是否需要答题[200]", example = "0")
private Integer needQuestion;
/**
* 是否展示协议 0否1是
*/
@ApiModelProperty(position = 12, required = true, value = "是否展示协议[200]", example = "0")
@ApiModelProperty(position = 12, value = "是否展示协议[200]", example = "0")
private Integer displayAgreement;
/**
* 会员协议
*/
@ApiModelProperty(position = 13, required = true, value = "会员协议内容[200]", example = "摩登天空会员协议须知....")
private String agreement;
/**
* 限购数量
*/
@ApiModelProperty(position = 14, required = true, value = "限购数量,0不限购[200]", example = "0")
// @ApiModelProperty(position = 13, value = "会员协议内容[200]", example = "摩登天空会员协议须知....")
// private String agreement;
@ApiModelProperty(position = 14, value = "限购数量,0不限购[200]", example = "0")
private Integer limitation;
@ApiModelProperty(position = 15, value = "会员卡价格信息")
private List<AdamMemberPriceVo> priceVoList;
@ApiModelProperty(position = 16, value = "会员专属权益")
private List<AdamMemberRightsVo> rightsVoList;
@ApiModelProperty(position = 17, value = "用户会员信息")
private AdamUserMemberVo memberInfo;
@ApiModelProperty(position = 15, required = true, value = "会员卡价格ID", dataType = "List")
private List<AdamMemberPriceVo> adamMemberPrice;
private static final AdamMemberVo obj = new AdamMemberVo();
public static AdamMemberVo getNew() {
try {
......@@ -128,7 +71,7 @@ public class AdamMemberVo implements java.io.Serializable, Cloneable {
* @return
*/
@JsonIgnore
public List<AdamMemberPriceVo> setMemberPrice(List<AdamMemberPrice> adamMemberPrices){
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);
......
......@@ -2,13 +2,14 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.dto.vo.AdamMemberRightsVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
import com.liquidnet.service.adam.service.IAdamMemberService;
import com.liquidnet.service.adam.service.IAdamUserMemberService;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.adam.dto.vo.AdamMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
......@@ -16,7 +17,10 @@ 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.web.bind.annotation.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Date;
......@@ -30,19 +34,29 @@ public class AdamMemberController {
@Autowired
IAdamMemberService adamMemberService;
@Autowired
IAdamMemberOrderService adamMemberOrderService;
@Autowired
IAdamUserMemberService adamUserMemberService;
@ApiOperationSupport(order = 0)
@ApiOperation(value = "会员信息")
@GetMapping("info")
public ResponseDto<AdamMemberVo> query() {
AdamMemberVo info = adamMemberService.queryMemberInfo();
if (null != info) {
info.setMemberInfo(adamUserMemberService.getUserMemberInfo(CurrentUtil.getCurrentUid()));
info.setRightsVoList(AdamMemberRightsVo.getNew().initDefault());
}
return ResponseDto.success(info);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "会员协议")
@GetMapping("agreement")
public ResponseDto<String> agreement() {
return ResponseDto.success("<p style=\"text-align: center;\"><span class=\"ql-size-large\">摩登天空登登登会员服务协议</span></p><p style=\"text-align: center;\"><br></p><p style=\"text-align: center;\">本版本更新时间:2021年1月26日&nbsp;</p><p style=\"text-align: right;\">&nbsp;</p><p style=\"text-align: justify;\">一 、接受协议</p><p style=\"text-align: justify;\">1.1一旦您注册成为摩登天空登登登会员用户,便表示您(以下简称“用户”)已经完全理解并同意接受本协议(以下简称“协议”)。</p><p style=\"text-align: justify;\">1.2在您接受本协议之后,本协议可能因国家政策、产品与/或服务以及履行本协议的环境发生变化而进行修改,一旦本协议内容发生变更的,本网站将在相应页面、站内信或以其他合理方式进行通知,请您仔细阅读。如您在本协议更新后继续使用摩登天空登登登会员服务,即表示您已充分阅读、理解并接受更新后的本协议并愿意接受更新后的协议约束。如果您不同意变更的内容,您可以选择停止使用摩登天空登登登会员服务。更新后的协议自发布之日起生效。</p><p style=\"text-align: justify;\">1.3若您是未成年人,请您在监护人监护、指导下阅读并决定是否同意本协议。未成年人行使和履行本协议项下的权利和义务视为已获得了监护人的认可。</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">二、服务内容</p><p style=\"text-align: justify;\">2.1摩登天空登登登会员是指完成了成为会员的所有程序,且在遵守本协议的前提下,在会员时长有效期内享受摩登天空提供的登登登会员服务的自然人。</p><p style=\"text-align: justify;\"><strong>2.2 摩登天空有权根据法律法规及政策变更,合作方要求以及自身运营策略变更对登登登会员服务内容(包括但不限于登登登会员权益细则,收费标准和收费方式)进行部分或全部变更。就前述变更,本网站将在相应页面、站内信或以其他合理方式进行发布,发布之后立即生效。如果您不同意变更的内容,您可以选择停止使用摩登天空登登登会员服务。</strong></p><p style=\"text-align: justify;\">2.3摩登天空登登登会员服务协议是《正在现场注册协议》以及《正在现场隐私权保护协议》的补充协议。</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">三、会员账号及权益</p><p style=\"text-align: justify;\">3.1在用户的登登登会员服务有效期内,用户在本网站所使用的账号即为用户的登登登会员账号。用户有责任维持自己所注册的账号和密码的安全,用户应对所有使用本人的密码及账号的活动负完全责任。用户同意:(a) 本人的密码或账号遭到未获授权的使用。或者发生其他任何安全问题时,请立即通知本网站,且(b)每次上网完毕都会把本人的账号关掉。<strong>如未能依前述规定行事,对于任何人利用该密码及账号所进行的任何行为,用户应负完全的责任。对于因此而产生的任何损失或损害,本网站无法也不承担任何责任。 根据有关法律法规,本网站在此郑重提请用户注意,任何经由我们的服务以上载、张贴、发送电子邮件或其他任何方式传送的资讯、资料、文字、软件、音乐、音讯、照片、图形、视讯、信息或其它资料(以下简称“内容”),无论系公开还是私下传送,均由内容提供者、上传者承担责任。本网站无法控制经由我们的服务传送之内容,因此不保证内容的正确性、完整性或品质。 如用户已预知使用我们的服务时,可能会接触到令人不适之内容,在任何情况下,本网站均不为此负责。包含但不限于任何内容之任何错误或遗漏,以及经由我们的服务及张贴、发送电子邮件或其它方式传送任何内容而衍生之任何损失或损害。本网站有权依法停止传输任何前述内容并采取相应行动,包含但不限于暂停用户使用我们的服务的全部或部分,保持有关记录,并向有关机关报备。</strong></p><p style=\"text-align: justify;\">3.2 登登登会员权益:</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;摩登天空登登登会员权益包括:</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.超过百场演出优先购票权、入场权及专属通道*</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.会员专属纪念品礼盒</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.会员独享限定款商品及音像制品的购买权利(专属商品上线)</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.超过百款商品的会员优惠价</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5.会员专属的演出以及线上线下活动</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.会员专属的视频音频节目</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7.想不到的惊喜</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8.免费观演以及免费商品的抽奖权利。</p><p>•&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>(具体享有会员权益的演出场次和商品以本网站指定为准)</strong></p><p style=\"text-align: justify;\"><strong>本网站可能会根据法律法规及政策变更、版权状态变化、自身运营策略对前述会员权益作出部分修改。</strong></p><p style=\"text-align: justify;\">3.3 登登登会员服务期限及延期:</p><p style=\"text-align: justify;\"><strong>用户的登登登会员服务的服务期限自用户成为登登登会员之时起算,以用户自行选择并支付相应会员费用对应的服务期限为准,用户可以通过登录本网站会员中心免费查询。该期限不因您未使用等情况而延长。当会员服务期限到期后,本网站将停止继续向您提供登登登会员服务;但如您开通自动续费服务且您在服务期限到期前续费成功的,会员服务期限将在原服务期限的基础上顺延。</strong></p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">四、隐私保护</p><p style=\"text-align: justify;\">4.1 本网站保证不对外公开或向第三方提供单个用户的注册资料及用户在使用网络服务时存储在本网站的非公开内容,但下列情况除外:</p><p style=\"text-align: justify;\">4.1.1事先获得用户的明确授权;</p><p style=\"text-align: justify;\">4.1.2根据有关的法律法规要求;</p><p style=\"text-align: justify;\">4.1.3按照相关政府主管部门的要求;</p><p style=\"text-align: justify;\">4.1.4为维护社会公众的利益;</p><p style=\"text-align: justify;\">4.1.5为维护本网站的合法权益;</p><p style=\"text-align: justify;\">4.1.6其他需要公开、编辑或透露个人信息的情况。</p><p style=\"text-align: justify;\"><strong>4.2 本网站可能会与第三方合作向用户提供相关的网络服务,在此情况下,如第三方同意承担与本网站同等的保护用户隐私的责任,则本网站有权将用户的注册资料等提供给该第三方。</strong></p><p style=\"text-align: justify;\"><strong>4.3 在不透露单个用户隐私资料的前提下,本网站有权对整个用户数据库进行分析并对用户数据库进行商业上的利用。</strong></p><p style=\"text-align: justify;\">&nbsp;</p><p>五、服务终止</p><p>本网站终止摩登天空登登登会员服务包括但不限于如下情况:</p><p>1. 用户自主提出的</p><p>2. 用户利用会员身份获得/购得的音乐节以及场馆演出类门票或商城商品,不得转让、代拍。如果私自转让或代拍,一经本网站发现,本网站有权取消该用户的会员资格且该用户利用会员身份进行转票/代拍所获得/购得的音乐节以及场馆演出类门票视为无效(本网站有权视具体情况要求该用户寄回或直接作废),同时清算该用户的使用权益并退回差价。会员权益计价按如下标准执行:</p><p>&nbsp;</p><p>1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;优先购票权、入场权及专属通道按照50元/次计价</p><p>2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会员专属纪念品礼盒按照100元计价</p><p>3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会员专属优惠商品的会员优惠价按照实际优惠价格计算</p><p>4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;会员专属的演出以及线上线下活动,已经观看的按照50元/次计价</p><p>5)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;抽取到会员免费观演以及免费商品的按照实际演出和商品的价格计算</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">l&nbsp;用户存在或本网站独立判断用户存在任何违反国家法律法规或监管政策的行为</p><p style=\"text-align: justify;\">l&nbsp;根据法律法规、政策规定、维护账号与系统安全等紧急情况以及不可抗力因素等其他本网站无法抗拒的情况</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">六、通知送达</p><p style=\"text-align: justify;\">6.1本网站对于摩登天空登登登用户所有的通知均可通过网页公告、电子邮件、手机短信或其他常规的信件传送等方式进行;该等通知于发送之日视为已送达收件人。</p><p style=\"text-align: justify;\">6.2用户对于本网站的通知应当通过本网站对外正式公布的通信地址、传真号码、电子邮件等联系信息进行送达。</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">七、责权限制</p><p style=\"text-align: justify;\">用户明确了解并同意,基于以下原因造成的包括但不限于利益、信誉、应用、数据损失或其它无形损失,本网站不承担任何直接、间接、附带、特别、衍生性或惩罚性赔偿责任(即使本网站事先已被告知发生此种赔偿之可能性亦然): (i)我们的服务之使用或无法使用,(ii)为替换从或通过我们的服务购买或取得之任何商品、数据、信息、服务、收到的讯息,或缔结之交易而发生的成本,(iii)用户的传输数据遭到未获授权的存取或编造,(iv)任何第三方在我们的服务中所做之声明或行为;或(v)与我们的服务相关的其它事宜,但本协议有明确规定的除外。</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">八、法律管辖与适用</p><p style=\"text-align: justify;\">8.1 本服务协议的生效、履行、解释及争议的解决均适用于中华人民共和国法律。</p><p style=\"text-align: justify;\">8.2 如本协议内容或其执行发生任何争议,应尽量友好协商解决;协商不成时,您同意将争议提交至北京市朝阳区人民法院诉讼解决。双方同意,解决争议时,应以您同意的最新《摩登天空登登登会员服务协议》为准。</p><p style=\"text-align: justify;\">&nbsp;</p><p style=\"text-align: justify;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;北京正在映画互联网科技有限公司</p><p style=\"text-align: justify;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2021年1月26日</p><p style=\"text-align: justify;\">&nbsp;</p>");
}
@ApiOperationSupport(order = 2)
@ApiOperation(value = "判断是否会员")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户ID[64]", example = "1"),
......
......@@ -3,18 +3,25 @@ package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.AdamMemberOrderCallbackResult;
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.entity.AdamMemberOrder;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
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.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
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.web.bind.annotation.*;
......@@ -24,18 +31,47 @@ import java.util.List;
@Api(tags = "购买会员")
@Slf4j
@RestController
@RequestMapping("/member/order")
@RequestMapping("member/order")
public class AdamMemberOrderController {
@Autowired
IAdamMemberOrderService adamMemberOrderService;
@Autowired
IAdamMemberPriceService adamMemberPriceService;
@Autowired
IAdamRealNameService adamRealNameService;
@Autowired
IAdamUserService adamUserService;
@ApiOperationSupport(order = 0)
@ApiOperation(value = "购买会员预览")
@GetMapping("preview/{mno}/{id}")
public ResponseDto<AdamMemberOrderPreviewVo> preview(@PathVariable String mno, @PathVariable String id) {
AdamMemberOrderPreviewVo previewVo = AdamMemberOrderPreviewVo.getNew();
previewVo.setMemberId(mno);
previewVo.setMemberTitle("摩登天空会员");
previewVo.setRealNamed(null != adamRealNameService.queryByUid(CurrentUtil.getCurrentUid()));
previewVo.setPriceVo(adamMemberPriceService.query(mno, id));
return ResponseDto.success(previewVo);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "购买会员或会员码")
@PostMapping("/buy/member")
@PostMapping("buy")
public ResponseDto<AdamMemberOrderResult> buyMemberOrCode(AdamMemberOrderParam param) {
AdamMemberOrderResult adamMemberOrderResult = null;
try {
param.setUid(CurrentUtil.getCurrentUid());
log.info("member/order/buy:param:{}", JsonUtils.toJson(param));
AdamRealInfoVo realInfoVo = adamRealNameService.queryByUid(CurrentUtil.getCurrentUid());
if (null == realInfoVo) {
if (StringUtils.isBlank(param.getName()) || StringUtils.isBlank(param.getIdCard())) {
return ResponseDto.failure(ErrorMapping.get("10101"));
}
adamUserService.identity(param.getUid(), param.getName(), param.getIdCard());
}
adamMemberOrderResult = adamMemberOrderService.buyMemberOrMemberCode(param);
} catch (Exception e) {
e.printStackTrace();
......@@ -44,9 +80,9 @@ public class AdamMemberOrderController {
return ResponseDto.success(adamMemberOrderResult);
}
@ApiOperationSupport(order = 1)
@ApiOperationSupport(order = 2)
@ApiOperation(value = "使用兑换码")
@PostMapping("/use/memberCode")
@PostMapping("use/memberCode")
public ResponseDto<AdamMemberOrder> useMemberCode(AdamMemberOrderCodeParam param) {
try {
param.setIp("127.0.0.1");
......@@ -63,27 +99,27 @@ public class AdamMemberOrderController {
}
}
@ApiOperationSupport(order = 2)
@ApiOperationSupport(order = 3)
@ApiOperation(value = "会员订单列表")
@GetMapping("/member/order/list")
@GetMapping("list")
public ResponseDto<List<AdamMemberOrderVo>> getMemberOrderList() {
String currentUid = CurrentUtil.getCurrentUid();
List<AdamMemberOrderVo> memberOrderList = adamMemberOrderService.getMemberOrderList(currentUid);
return ResponseDto.success(memberOrderList);
}
@ApiOperationSupport(order = 3)
@ApiOperationSupport(order = 4)
@ApiOperation(value = "会员订单详情")
@GetMapping("/member/order/info/{orderNo}")
@GetMapping("info/{orderNo}")
public ResponseDto<AdamMemberOrderVo> getMemberOrderList(@PathVariable String orderNo) {
String currentUid = CurrentUtil.getCurrentUid();
AdamMemberOrderVo memberOrderInfo = adamMemberOrderService.getMemberOrderInfo(currentUid, orderNo);
return ResponseDto.success(memberOrderInfo);
}
@ApiOperationSupport(order = 4)
@ApiOperationSupport(order = 5)
@ApiOperation(value = "会员支付回调")
@PostMapping("/member/order/callback")
@PostMapping("callback")
public ResponseDto<Object> memberOrderCallBack(AdamMemberOrderCallbackResult result){
boolean b = adamMemberOrderService.memberNotifyCallBack(result);
if (b) {
......
......@@ -111,7 +111,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
return result;
}
// 验证价格是否有效
List<AdamMemberPriceVo> adamMemberPrice = adamMemberVo.getAdamMemberPrice();
List<AdamMemberPriceVo> adamMemberPrice = adamMemberVo.getPriceVoList();
AdamMemberPriceVo priceVo = null;
for (int i = 0; i < adamMemberPrice.size(); i++) {
AdamMemberPriceVo adamMemberPriceVo = adamMemberPrice.get(i);
......
......@@ -15,11 +15,12 @@ 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 java.util.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
@Slf4j
......@@ -38,12 +39,13 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
@Autowired
RedisUtil redisUtil;
// TODO: 2021/5/26 数据存取更正,不走MySql
@Override
public AdamMemberVo queryMemberInfo() {
AdamMemberVo info = null;
List<AdamMemberVo> adamMemberVoList = mongoTemplate.findAll(AdamMemberVo.class);
int tag = 0;
if (adamMemberVoList.size() > 0){
if (adamMemberVoList.size() > 0) {
info = adamMemberVoList.get(0);
} else {
AdamMember firstMember = adamMemberMapper.getFirstMember();
......@@ -65,7 +67,7 @@ public class AdamMemberServiceImpl extends ServiceImpl<AdamMemberMapper, AdamMem
memberPrice.add(tempMemberPrice);
}
info.setAdamMemberPrice(memberPrice);
info.setPriceVoList(memberPrice);
if (1 == tag) {
mongoTemplate.insert(info, AdamMemberVo.class.getSimpleName());
}
......
......@@ -75,7 +75,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
BeanUtils.copyProperties(adamMember, amv);
List<AdamMemberPrice> adamMemberPrices = adamMemberPriceMapper.memberPriceList(adamMember.getMemberId());
amv.setAdamMemberPrice((new AdamMemberVo()).setMemberPrice(adamMemberPrices));
amv.setPriceVoList(AdamMemberVo.setMemberPrice(adamMemberPrices));
// 添加数据到 Mongo
mongoTemplate.insert(Collections.singletonList(amv), AdamMemberVo.class.getSimpleName());
......
......@@ -8,7 +8,7 @@
10008=已绑定同类型第三方账号
10101=
10101=姓名或身份证件号无效
10102=
10103=
10104=
......
......@@ -47,4 +47,13 @@ public class PayOrderParam {
@ApiModelProperty(value = "支付类型")
@NotNull(message = "必传")
private String payType;
@ApiModelProperty(value = "支付来源")
@NotNull(message = "必传")
private String deviceFrom;
@ApiModelProperty(value = "openId")
private String openId;
@ApiModelProperty(value = "showUrl")
private String showUrl;
@ApiModelProperty(value = "returnUrl")
private String returnUrl;
}
......@@ -7,4 +7,19 @@ import java.io.Serializable;
@Data
public class KylinOrderTicketEntitiesVo implements Serializable {
private static final long serialVersionUID = 1207664465164005975L;
private String orderTicketEntitiesId;
private String orderId;
private String ticketId;
private String userId;
private String performanceId;
private String timeId;
private Integer enterType;
private String enterName;
private String enterMobile;
private String enterIdCode;
private Integer status;
private Integer sysDamai;
private String checkClient;
private Integer isPayment;
}
package com.liquidnet.service.kylin.dto.vo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class KylinOrderTicketVo implements Serializable {
private static final long serialVersionUID = 5325511589667456213L;
private String orderTicketsId;
private String userId;
private String userName;
private String userMobile;
private String performanceTitle;
private String orderCode;
private String payCode;
private String qrCode;
private String orderType;
private String orderVersion;
private Integer number;
private BigDecimal price;
private BigDecimal priceMember;
private BigDecimal priceTotal;
private BigDecimal priceVoucher;
private BigDecimal priceActual;
private BigDecimal priceExpress;
private BigDecimal priceRefund;
private Integer refundNumber;
private String payType;
private String paymentType;
private String timePay;
private String expressContacts;
private String expressAddress;
private String expressPhone;
private String couponType;
private String getTicketType;
private String getTicketDescribe;
private Integer payCountdownMinute;
private Integer expressType;
private Integer isStudent;
private Integer transferStatus;
private Integer status;
private Integer payStatus;
private String transferId;
private String liveId;
private String performanceId;
private String timeId;
private String ticketId;
private String agentId;
private Integer isMember;
public void setOrderTicket(KylinOrderTickets orderTicket) {
BeanUtils.copyProperties(orderTicket,this);
}
public void setOrderTicketStatus(KylinOrderTicketStatus orderTicketStatus) {
BeanUtils.copyProperties(orderTicketStatus,this);
}
public void setOrderTicketRelation(KylinOrderTicketRelations orderTicketRelation) {
BeanUtils.copyProperties(orderTicketRelation,this);
}
}
package com.liquidnet.service.kylin.dto.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class PayDataVo implements Serializable {
private static final long serialVersionUID = -5841205289132250565L;
private String appid;
private String noncestr;
private String packages;
private String partnerid;
private String prepayid;
private String sign;
private long timestamp;
}
package com.liquidnet.service.kylin.dto.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class PayResultVo implements Serializable {
private static final long serialVersionUID = 1541552316829686035L;
private String code;
private String order_code;
private String order_id;
private BigDecimal price;
private PayDataVo pay_data;
}
......@@ -4,6 +4,7 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.PayResultVo;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -20,10 +21,10 @@ import java.util.List;
public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> {
// 下单前判断接口(判断是否可锁定库存)(无订单->待支付->可支付)
ResponseDto<String>checkCanOrder(PayOrderParam payOrderParam);
ResponseDto<PayResultVo>checkCanOrder(PayOrderParam payOrderParam);
// 下单接口(无订单->待支付->可支付)
ResponseDto<String> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData);
ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData);
// 再次支付(待支付->可支付->倒计时结束释放库存)
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.controller;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.vo.PayResultVo;
import com.liquidnet.service.kylin.service.impl.KylinOrderTicketsServiceImpl;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
......@@ -29,7 +30,7 @@ public class KylinOrderTicketsController {
@PostMapping("pre")
@ApiOperation("下单")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> checkCanOrder(@RequestBody PayOrderParam payOrderParam) {
public ResponseDto<PayResultVo> checkCanOrder(@RequestBody PayOrderParam payOrderParam) {
return orderTicketsService.checkCanOrder(payOrderParam);
}
......
......@@ -6,23 +6,26 @@ import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.dto.vo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.*;
import com.liquidnet.service.kylin.entity.*;
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 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.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* <p>
......@@ -38,18 +41,20 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Autowired
private DataUtils dataUtils;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private RabbitTemplate rabbitTemplate;
@Autowired
private FeignAdamBaseClient feignAdamBaseClient;
@Override
public ResponseDto<String> checkCanOrder(PayOrderParam payOrderParam) {
public ResponseDto<PayResultVo> checkCanOrder(PayOrderParam payOrderParam) {
boolean isDownGeneral = false;
try {
String uid = CurrentUtil.getCurrentUid();
KylinPerformanceVo performanceData = dataUtils.getPerformanceVo(payOrderParam.getPerformanceId());
KylinTicketTimesVo ticketTimesData = dataUtils.getTicketTimesVo(payOrderParam.getPerformanceId());
KylinTicketVo ticketData = dataUtils.getTicketVo(payOrderParam.getPerformanceId());
KylinTicketTimesVo ticketTimesData = dataUtils.getTicketTimesVo(payOrderParam.getTimeId());
KylinTicketVo ticketData = dataUtils.getTicketVo(payOrderParam.getTicketId());
if (performanceData == null || ticketTimesData == null || ticketData == null) {
return ResponseDto.failure("参数错误");//参数错误
}
......@@ -129,27 +134,27 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (isTrueName == 1) {
//已购买数量 身份证
performanceBuyCount = 0+payOrderParam.getNumber(); //演出下所有票种购买数量 TODO
ticketBuyCount = 0+payOrderParam.getNumber(); // 单一票种购买数量 TODO
performanceBuyCount = 0 + payOrderParam.getNumber(); //演出下所有票种购买数量 TODO
ticketBuyCount = 0 + payOrderParam.getNumber(); // 单一票种购买数量 TODO
} else {
//已购买数量 数量
performanceBuyCount = 0+payOrderParam.getNumber(); //演出下所有票种购买数量 TODO
ticketBuyCount = 0+payOrderParam.getNumber(); // 单一票种购买数量 TODO
performanceBuyCount = 0 + payOrderParam.getNumber(); //演出下所有票种购买数量 TODO
ticketBuyCount = 0 + payOrderParam.getNumber(); // 单一票种购买数量 TODO
}
//会员区间
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
return ResponseDto.failure("该演出只能购买"+performanceMemberLimit+"张");//超过演出维度购买量
return ResponseDto.failure("该演出只能购买" + performanceMemberLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
return ResponseDto.failure("该票种只能购买"+ticketMemberLimit+"张");//超过票维度购买量
return ResponseDto.failure("该票种只能购买" + ticketMemberLimit + "张");//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
return ResponseDto.failure("该演出只能购买"+performanceLimit+"张");//超过演出维度购买量
return ResponseDto.failure("该演出只能购买" + performanceLimit + "张");//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
return ResponseDto.failure("该票种只能购买"+ticketLimit+"张");//超过票维度购买量
return ResponseDto.failure("该票种只能购买" + ticketLimit + "张");//超过票维度购买量
}
}
return order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData);
......@@ -164,7 +169,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
}
@Override
public ResponseDto<String> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData) {
public ResponseDto<PayResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData) {
LinkedList<String> sqls = new LinkedList<>();
LinkedList<Object[]> paramsList = new LinkedList<>();
String source = CurrentUtil.getCliSource();
......@@ -172,7 +177,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
List<AdamEntersVo> entersVoList = new ArrayList();
//学生票 判断
if (payOrderParam.getIsStudent() == 1) {
if (null != payOrderParam.getIsStudent() && payOrderParam.getIsStudent() == 1) {
for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData();
entersVoList.add(adamEnters);
......@@ -187,8 +192,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String orderTicketId = IDGenerator.nextSnowId().toString();
orderTickets.setOrderTicketsId(orderTicketId);
orderTickets.setUserId(uid);
orderTickets.setUserName(CurrentUtil.getTokenClaims().get("nickname").toString());
orderTickets.setUserMobile(CurrentUtil.getTokenClaims().get("mobile").toString());
Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName((String) token.get("nickname"));
orderTickets.setUserMobile((String) token.get("mobile"));
orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setPayCode("");
......@@ -203,8 +209,9 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
} else {
orderTickets.setPriceTotal(ticketData.getPrice().multiply(new BigDecimal(payOrderParam.getNumber())).add(payOrderParam.getIsExpress() == 1 ? ticketData.getPriceExpress() : new BigDecimal("0")));
}
orderTickets.setPriceActual(orderTickets.getPriceTotal());
orderTickets.setPriceVoucher(new BigDecimal("0.0"));
orderTickets.setPriceActual(new BigDecimal("0.0"));
orderTickets.setPriceExpress(ticketData.getPriceExpress());
orderTickets.setPriceRefund(new BigDecimal("0.0"));
orderTickets.setRefundNumber(0);
......@@ -228,7 +235,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTickets.setPayCountdownMinute(performanceData.getPayCountdownMinute());
orderTickets.setCreatedAt(LocalDateTime.now());
orderTickets.setUpdatedAt(null);
//TODO mq sql
sqls.add("kylin_order_ticket.add");
paramsList.add(orderTickets.getAddObject());
......@@ -245,7 +251,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketStatus.setPayStatus(0);
orderTicketStatus.setCreatedAt(LocalDateTime.now());
orderTicketStatus.setUpdatedAt(null);
//TODO mq sql
sqls.add("kylin_order_ticket_status.add");
paramsList.add(orderTicketStatus.getAddObject());
......@@ -263,7 +268,6 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketRelations.setTicketId(payOrderParam.getTicketId());
orderTicketRelations.setCreatedAt(LocalDateTime.now());
orderTicketRelations.setUpdatedAt(null);
//TODO mq sql
sqls.add("kylin_order_ticket_relation.add");
paramsList.add(orderTicketRelations.getAddObject());
......@@ -290,10 +294,12 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketEntities.setComment("");
orderTicketEntities.setCreatedAt(LocalDateTime.now());
orderTicketEntities.setUpdatedAt(null);
//TODO mq sql
sqls.add("kylin_order_ticket_entities.add");
paramsList.add(orderTicketEntities.getAddObject());
// 生成vo
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo();
BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo);
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
}
} else {
for (int i = 0; i < payOrderParam.getNumber(); i++) {
......@@ -314,15 +320,50 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
orderTicketEntities.setComment("");
orderTicketEntities.setCreatedAt(LocalDateTime.now());
orderTicketEntities.setUpdatedAt(null);
//TODO mq sql
sqls.add("kylin_order_ticket_entities.add");
paramsList.add(orderTicketEntities.getAddObject());
// 生成vo
KylinOrderTicketEntitiesVo orderTicketEntitiesVo = new KylinOrderTicketEntitiesVo();
BeanUtils.copyProperties(orderTicketEntities, orderTicketEntitiesVo);
mongoTemplate.insert(orderTicketEntitiesVo, KylinOrderTicketEntitiesVo.class.getSimpleName());
}
}
// 调用支付 别忘记生成支付单号
// $pay_result = zhengzai::getPayParam($pay_params, $device_from, $pay_type);
LinkedMultiValueMap<String, String> httpData = new LinkedMultiValueMap<String, String>();
httpData.add("type","TICKET");
httpData.add("price","0.01");
httpData.add("name",ticketData.getUseStart()+""+ticketData.getTitle());
httpData.add("detail",performanceData.getTitle()+"-"+ticketData.getTitle()+"-"+ticketData.getUseStart());
httpData.add("order_code",orderTickets.getOrderCode());
httpData.add("client_ip","127.0.0.1");
httpData.add("notify_url","http://www.baidu.com");
httpData.add("create_date",orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
httpData.add("expire_time",orderTickets.getPayCountdownMinute().toString());
if (payOrderParam.getDeviceFrom().equals("js") || payOrderParam.getDeviceFrom().equals("applet")) {
httpData.add("open_id",payOrderParam.getOpenId());
}
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
httpData.add("show_url",payOrderParam.getOpenId());
httpData.add("return_url",payOrderParam.getOpenId());
}
// 执行sql 生成vo 调用支付
String returnData = HttpUtil.post("http://testpay.zhengzai.tv/"+payOrderParam.getDeviceFrom()+"/"+payOrderParam.getPayType(), httpData);
PayResultVo payResultVo = JsonUtils.fromJson(returnData,PayResultVo.class);
payResultVo.setOrder_id(orderTicketId);
payResultVo.setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getOrder_code());
// 生成vo
KylinOrderTicketVo orderTicketVo = new KylinOrderTicketVo();
orderTicketVo.setOrderTicket(orderTickets);
orderTicketVo.setOrderTicketStatus(orderTicketStatus);
orderTicketVo.setOrderTicketRelation(orderTicketRelations);
mongoTemplate.insert(orderTicketVo, KylinOrderTicketVo.class.getSimpleName());
// 执行sql
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL, MQConst.ROUTING_KEY_SQL,
// SqlMapping.get(sqls, paramsList));
return ResponseDto.success("下单完成");
return ResponseDto.success(payResultVo);
}
}
......@@ -124,7 +124,7 @@ public class DataUtils {
public KylinTicketTimesVo getTicketTimesVo(String ticketTimeId){
if(redisUtil.hHasKey(KylinRedisConst.TIMES,ticketTimeId)){
}else{
KylinTicketTimesVo ticketTimesData = mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(ticketTimeId)), KylinTicketTimesVo.class, KylinTicketTimes.class.getSimpleName());
KylinTicketTimesVo ticketTimesData = mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(ticketTimeId)), KylinTicketTimesVo.class, KylinTicketTimesVo.class.getSimpleName());
redisUtil.hset(KylinRedisConst.TIMES,ticketTimeId,ticketTimesData);
}
return (KylinTicketTimesVo) redisUtil.hget(KylinRedisConst.TIMES,ticketTimeId);
......
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