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

Commit b662ab3d authored by jiangxiulong's avatar jiangxiulong

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

parents 8bb96d6c 62a6bb18
......@@ -8,6 +8,8 @@ import java.util.Map;
public class CurrentUtil {
public static final String uTag = "u-tag";
public static final String uToken = "u-token";
public static final String CLI_SOURCE = "source";
public static final String CLI_VERSION = "version";
public static String getToken() {
String authToken = ServletUtils.getRequest().getHeader(uToken);
......@@ -23,4 +25,12 @@ public class CurrentUtil {
// TODO: 2021/5/14 dev联调API未启用token默认使用1
return CollectionUtils.isEmpty(tokenClaims) ? "1" : (String) tokenClaims.get("uid");
}
public static String getCliSource() {
return ServletUtils.getRequest().getHeader(CLI_SOURCE);
}
public static String getCliVersion() {
return ServletUtils.getRequest().getHeader(CLI_VERSION);
}
}
......@@ -198,10 +198,13 @@ public abstract class DateUtil {
/**
* 使用参数Format将字符串转为Date
*/
public static Date parse(String strDate, String pattern)
throws ParseException {
return StringUtils.isBlank(strDate) ? null : new SimpleDateFormat(
pattern).parse(strDate);
public static Date parse(String strDate, String pattern) {
try {
return StringUtils.isBlank(strDate) ? null : new SimpleDateFormat(
pattern).parse(strDate);
} catch (ParseException e) {
return null;
}
}
public static Date asDate(LocalDate localDate) {
......@@ -256,12 +259,8 @@ public abstract class DateUtil {
* 比较日期
*/
public static int compareDay(Date date1, Date date2) {
try {
date1 = parse(format(date1, Formatter.yyyyMMdd), Formatter.yyyyMMdd.toString());
date2 = parse(format(date2, Formatter.yyyyMMdd), Formatter.yyyyMMdd.toString());
} catch (ParseException e) {
e.printStackTrace();
}
date1 = parse(format(date1, Formatter.yyyyMMdd), Formatter.yyyyMMdd.toString());
date2 = parse(format(date2, Formatter.yyyyMMdd), Formatter.yyyyMMdd.toString());
return date1.compareTo(date2);
}
......@@ -481,12 +480,8 @@ public abstract class DateUtil {
// System.out.println(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(
// DateUtil.getBeforeDayEnd(calendarEnd,-1)));
try {
long dayNum = DateUtil.intervalHours(DateUtil.parse("2016-08-31 18:02:00", "yyyy-MM-dd HH:mm:ss"), new Date());
System.out.print("dayNum=======" + dayNum);
} catch (ParseException e) {
e.printStackTrace();
}
// long dayNum = DateUtil.intervalHours(DateUtil.parse("2016-08-31 18:02:00", "yyyy-MM-dd HH:mm:ss"), new Date());
// System.out.print("dayNum=======" + dayNum);
// Set<String> holidays = new HashSet<>();
// holidays.add("20160416");
......
......@@ -6,6 +6,7 @@ import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -23,4 +24,13 @@ public interface FeignAdamBaseClient {
@PostMapping("addr/query/{id}")
ResponseDto<AdamAddressesVo> queryAddresses(@PathVariable(name = "id") String addrId,
@RequestParam(name = "uid", required = false) String uid);
/**
* 判断是否会员
*
* @param uid 用户ID
* @return 是否会员:true-是
*/
@GetMapping("member/check/{uid}")
ResponseDto<Boolean> isMember(@PathVariable String uid);
}
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
@ApiModel(value = "AdamUserMemberVo", description = "会员用户信息")
@Data
......
......@@ -131,6 +131,9 @@ public class AdamLoginController {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", userInfoVo.getUid());
// TODO: 2021/5/25 修改手机号更新TOKEN
claimsMap.put("mobile", userInfoVo.getMobile());
claimsMap.put("nickname", userInfoVo.getNickname());
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(loginInfoVo);
}
......@@ -161,6 +164,8 @@ public class AdamLoginController {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", userInfoVo.getUid());
claimsMap.put("mobile", userInfoVo.getMobile());
claimsMap.put("nickname", userInfoVo.getNickname());
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(AdamLoginInfoVo.getNew());
}
......@@ -190,6 +195,8 @@ public class AdamLoginController {
Map<String, Object> claimsMap = new HashMap<>();
claimsMap.put("uid", loginInfoVo.getUserInfo().getUid());
claimsMap.put("mobile", loginInfoVo.getUserInfo().getMobile());
claimsMap.put("nickname", loginInfoVo.getUserInfo().getNickname());
loginInfoVo.setToken(this.ssoProcess(claimsMap));
return ResponseDto.success(loginInfoVo);
}
......
......@@ -2,17 +2,23 @@ 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.DateUtil;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.service.IAdamMemberOrderService;
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;
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.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@ApiSupport(order = 10030)
@Api(tags = "会员信息")
......@@ -25,6 +31,8 @@ public class AdamMemberController {
IAdamMemberService adamMemberService;
@Autowired
IAdamMemberOrderService adamMemberOrderService;
@Autowired
IAdamUserMemberService adamUserMemberService;
@ApiOperationSupport(order = 0)
@ApiOperation(value = "会员信息")
......@@ -33,4 +41,26 @@ public class AdamMemberController {
AdamMemberVo info = adamMemberService.queryMemberInfo();
return ResponseDto.success(info);
}
@ApiOperationSupport(order = 1)
@ApiOperation(value = "判断是否会员")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", required = true, dataType = "String", name = "uid", value = "用户ID[64]", example = "1"),
})
@GetMapping("check/{uid}")
public ResponseDto<Boolean> isMember(@PathVariable String uid) {
if (StringUtils.isBlank(uid)) return ResponseDto.success(false);
AdamUserMemberVo userMemberInfo = adamUserMemberService.getUserMemberInfo(uid);
if (null != userMemberInfo) {
Integer state = userMemberInfo.getState();
if (null != state && state == 1) {
// TODO: 2021/5/25 时间界定
Date expiryAtDate = DateUtil.parse(userMemberInfo.getExpiryAt(), DateUtil.DATE_SMALL_STR);
return ResponseDto.success(null != expiryAtDate && expiryAtDate.after(DateUtil.now()));
}
}
return ResponseDto.success(false);
}
}
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class CheckPerformanceRelationParam {
@ApiModelProperty(value = "演出id")
private String performanceId;
@ApiModelProperty(value = "可下载时间")
private String canDownTime;
}
package com.liquidnet.service.kylin.dto.param;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.List;
@Data
public class PayOrderParam {
@ApiModelProperty(value = "演出id")
@NotNull(message = "必传")
private String performanceId;
@ApiModelProperty(value = "场次id")
@NotNull(message = "必传")
private String timeId;
@ApiModelProperty(value = "票种id")
@NotNull(message = "必传")
private String ticketId;
@ApiModelProperty(value = "数量")
@NotNull(message = "必传")
private Integer number;
@ApiModelProperty(value = "是否学生票")
@NotNull(message = "必传")
private Integer isStudent;
@ApiModelProperty(value = "是否电子票")
@NotNull(message = "必传")
private Integer isElectronic;
@ApiModelProperty(value = "是否快递票")
@NotNull(message = "必传")
private Integer isExpress;
@ApiModelProperty(value = "收货地址id")
private String addressId;
@ApiModelProperty(value = "入场人id数组")
private List<String> enterIdList;
@ApiModelProperty(value = "代理id")
@NotNull(message = "必传")
private String agentId;
@ApiModelProperty(value = "支付类型")
@NotNull(message = "必传")
private String payType;
}
......@@ -9,7 +9,7 @@ import java.util.List;
@Data
@ApiModel
public class CheckUserPerformanceVo implements Serializable {
public class KylinCheckUserPerformanceVo implements Serializable {
@ApiModelProperty(value = "id")
private String checkUserId;
......
......@@ -8,7 +8,7 @@ import java.io.Serializable;
@Data
@ApiModel
public class CheckUserVo implements Serializable {
public class KylinCheckUserVo implements Serializable {
@ApiModelProperty(value = "id")
private String checkUserId;
......
package com.liquidnet.service.kylin.service;
import com.liquidnet.service.kylin.dto.param.PayOrderParam;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -14,6 +15,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
public interface IKylinOrderTicketsService extends IService<KylinOrderTickets> {
// 下单前判断接口(判断是否可锁定库存)
boolean checkCanOrder(PayOrderParam payOrderParam);
// 下单接口(无订单->待支付->可支付)
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.partner;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.ChildPerformanceDao;
import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam;
import com.liquidnet.service.kylin.entity.KylinCheckUserPerformances;
import com.baomidou.mybatisplus.extension.service.IService;
......@@ -26,7 +27,7 @@ public interface IKylinCheckUserPerformancesPartnerService extends IService<Kyli
ResponseDto<PageInfo<ChildPerformanceDao>> unChildPerformanceList(String merchantId,String checkUserId,int page,int size);
// 添加配置
ResponseDto<String> setPerformance(List<String> performanceIds,String checkUserId, String canDownTime);
ResponseDto<String> setPerformance(List<CheckPerformanceRelationParam> param, String checkUserId);
// 删除配置
ResponseDto<String> delPerformance(List<String> performanceIds, String checkUserId);
......
......@@ -73,7 +73,7 @@ public class KylinOrderTickets implements Serializable {
/**
* 数量
*/
private String number;
private Integer number;
/**
* 单价
......@@ -113,7 +113,7 @@ public class KylinOrderTickets implements Serializable {
/**
* 退款张数
*/
private BigDecimal priceNumber;
private Integer refundNumber;
/**
* 选择支付方式
......
......@@ -22,7 +22,7 @@
mobile
FROM kylin_check_user
<where>
merchant_id=#{merchantId}
merchant_id=#{merchantId} AND `status` = 1
<if test="mobile !=null and mobile !='' ">
AND `mobile` LIKE concat('%', #{mobile}, '%')
</if>
......
......@@ -417,7 +417,7 @@ CREATE TABLE `kylin_order_tickets`
`qr_code` varchar(255) NOT NULL DEFAULT '' COMMENT '二维码地址',
`order_type` varchar(255) NOT NULL DEFAULT '' COMMENT '下单方式',
`order_version` varchar(255) NOT NULL DEFAULT '' COMMENT '下单版本',
`number` varchar(255) NOT NULL DEFAULT '' COMMENT '数量',
`number` int(32) NOT NULL DEFAULT 0 COMMENT '数量',
`price` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '单价',
`price_member` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '会员单价',
`price_total` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '应付价格',
......@@ -425,10 +425,10 @@ CREATE TABLE `kylin_order_tickets`
`price_actual` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '实付价格',
`price_express` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '快递价格',
`price_refund` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '退款价格',
`price_number` decimal(8, 2) NOT NULL DEFAULT '0.00' COMMENT '退款张数',
`refund_number` int(32) NOT NULL DEFAULT 0 COMMENT '退款张数',
`pay_type` varchar(255) NOT NULL DEFAULT '' COMMENT '选择支付方式',
`payment_type` varchar(255) NOT NULL DEFAULT '' COMMENT '实际支付方式',
`time_pay` varchar(255) NOT NULL DEFAULT '' COMMENT '支付时间',
`payment_type` varchar(255) NULL DEFAULT '' COMMENT '实际支付方式',
`time_pay` varchar(255) NULL DEFAULT '' COMMENT '支付时间',
`express_contacts` varchar(255) NOT NULL DEFAULT '' COMMENT '收货人',
`express_address` varchar(255) NOT NULL DEFAULT '' COMMENT '收货地址',
`express_phone` varchar(255) NOT NULL DEFAULT '' COMMENT '收货人联系方式',
......
......@@ -24,12 +24,23 @@
<artifactId>liquidnet-common-cache-redis</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-mq</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-common-cache-redisson</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.liquidnet</groupId>
<artifactId>liquidnet-api-feign-adam</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<!-- other -->
<dependency>
......
......@@ -54,7 +54,7 @@ public class KylinCheckUserPartnerController {
public ResponseDto<String> change(@RequestParam("merchantId") String merchantId,
@RequestParam("checkUserId") String checkUserId,
@RequestParam("name") String name,
@RequestParam("pwd") String pwd,
@RequestParam(value = "pwd",required = false) String pwd,
@RequestParam("mobile") String mobile) {
return checkUserPartnerService.change(merchantId, checkUserId, name, pwd, mobile);
}
......
......@@ -4,6 +4,7 @@ package com.liquidnet.service.kylin.controller.partner;
import com.github.pagehelper.PageInfo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.ChildPerformanceDao;
import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam;
import com.liquidnet.service.kylin.mapper.KylinCheckUserPerformancesMapper;
import com.liquidnet.service.kylin.service.impl.partner.KylinCheckUserPerformancesPartnerServiceImpl;
import com.liquidnet.service.kylin.service.impl.partner.KylinTicketsPartnerServiceImpl;
......@@ -35,10 +36,9 @@ public class KylinCheckUserPerformancesPartnerController {
@PostMapping(value = "")
@ApiOperation(value = "添加关联关系", position = 1)
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<String> setPerformance(@RequestParam("performanceIds") List<String> performanceIds,
@RequestParam("checkUserId") String checkUserId,
@RequestParam("canDownTime") String canDownTime) {
return userPerformancesPartnerService.setPerformance(performanceIds, checkUserId, canDownTime);
public ResponseDto<String> setPerformance(@RequestParam("param") List<CheckPerformanceRelationParam> param,
@RequestParam("checkUserId") String checkUserId) {
return userPerformancesPartnerService.setPerformance(param, checkUserId);
}
@DeleteMapping(value = "")
......
package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDCard;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.entity.AdamEnters;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.adam.api.FeignAdamBaseClient;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
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.entity.KylinOrderTickets;
import com.liquidnet.service.kylin.entity.KylinTicketTimes;
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.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 java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* <p>
* 订单 服务实现类
......@@ -17,4 +42,175 @@ import org.springframework.stereotype.Service;
@Service
public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsMapper, KylinOrderTickets> implements IKylinOrderTicketsService {
@Autowired
private DataUtils dataUtils;
@Autowired
private RedisUtil redisUtil;
@Autowired
private MongoTemplate mongoTemplate;
@Autowired
private FeignAdamBaseClient feignAdamBaseClient;
@Override
public boolean checkCanOrder(PayOrderParam payOrderParam) {
String uid = CurrentUtil.getCurrentUid();
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(payOrderParam.getPerformanceId())), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
KylinTicketTimesVo ticketTimesData = mongoTemplate.findOne(Query.query(Criteria.where("ticketTimesId").is(payOrderParam.getTimeId())), KylinTicketTimesVo.class, KylinTicketTimes.class.getSimpleName());
KylinTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(payOrderParam.getTicketId())), KylinTicketVo.class, KylinTicketVo.class.getSimpleName());
if (performanceData == null || ticketTimesData == null || ticketData == null) {
return false;//参数错误
}
if (!ticketData.getTimeId().equals(payOrderParam.getTimeId()) || !ticketTimesData.getPerformanceId().equals(payOrderParam.getPerformanceId())) {
return false;//参数错误
}
//会员时间获取
String memberTimeStart = ticketData.getMemberTimeStart(); // 会员开售时间
String timeStart = ticketData.getTimeStart(); // 普通开售时间
String timeEnd = ticketData.getTimeEnd(); // 购票停售时间
String timeExpressEnd = ticketData.getTimeEndExpress(); // 快递停售时间
int performanceBuyCount = 0; //演出下所有票种购买数量
int ticketBuyCount = 0; // 单一票种购买数量
boolean isMember = false;//获取是否是会员 TODO
int memberType; //会员状态 不需要判断会员 1判断会员逻辑 2会员专属
if (ticketData.getIsExclusive() == 1) {
memberType = 2;
if (!isMember) {
return false;//没有会员权限
}
} else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1 && ticketData.getIsMember() == 1) {
// 会员购买逻辑
memberType = 1;
if (!isMember) {
return false;//没有会员权限
}
} else {
// 普通用户购买逻辑
memberType = 0;
}
}
// 获取限购 实名
int ticketLimit = ticketData.getLimitCount();//普通票种限购
int ticketMemberLimit = ticketData.getLimitCountMember();//会员票种限购
int performanceLimit = performanceData.getLimitCount();//普通演出限购
int performanceMemberLimit = performanceData.getLimitCountMember();//会员演出限购
int isTrueName = performanceData.getIsTrueName();//是否演出实名
//通用判断时间
if (isMember) {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), memberTimeStart) == -1) {
return false;//未开始
}
} else {
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeStart) == -1) {
return false;//未开始
}
}
if (DateUtil.compareStrDay(DateUtil.getNowTime(), timeEnd) == 1) {
return false;//已结束
}
//快递票判断
if (payOrderParam.getIsExpress() == 1 && DateUtil.compareStrDay(DateUtil.getNowTime(), timeExpressEnd) == 1) {
return false;//快递票不卖
}
if (payOrderParam.getIsExpress() == 1 && payOrderParam.getAddressId().isEmpty()) {
return false;//快递票未填写收货地址
}
//实名判断
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() <= 0) {
return false;//需要实名 未实名
}
if (isTrueName == 1 && payOrderParam.getEnterIdList().size() != payOrderParam.getNumber()) {
return false;//入场人数量错误
}
//学生票 判断
if (payOrderParam.getIsStudent() == 1) {
for (String enterId : payOrderParam.getEnterIdList()) {
AdamEntersVo adamEnters = feignAdamBaseClient.queryEnters(enterId, uid).getData();
int age = IDCard.getAgeByIdCard(adamEnters.getIdCard());
if (age > 25) {
return false;//年龄超了
}
}
}
//限购判断 如果实名 则身份证维度限购 如果不实名则数量限购
if (performanceData.getIsTrueName() == 1) {
//已购买数量 身份证
performanceBuyCount = 0; //演出下所有票种购买数量 TODO
ticketBuyCount = 0; // 单一票种购买数量 TODO
} else {
//已购买数量 数量
performanceBuyCount = 0; //演出下所有票种购买数量 TODO
ticketBuyCount = 0; // 单一票种购买数量 TODO
}
//会员区间
if (memberType == 1 || memberType == 2) {
if (performanceBuyCount >= performanceMemberLimit && performanceMemberLimit != 0) {
return false;//超过演出维度购买量
}
if (ticketBuyCount >= ticketMemberLimit && ticketMemberLimit != 0) {
return false;//超过票维度购买量
}
} else {//非会员区间
if (performanceBuyCount >= performanceLimit && performanceLimit != 0) {
return false;//超过演出维度购买量
}
if (ticketBuyCount >= ticketLimit && ticketLimit != 0) {
return false;//超过票维度购买量
}
}
// 判断库存
int surplusGeneral = dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), -payOrderParam.getNumber());
if (surplusGeneral < 0) {//库存回滚
dataUtils.changeSurplusGeneral(payOrderParam.getTicketId(), payOrderParam.getNumber());
return false;//没抢到
}
//生成订单
KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setOrderTicketsId(IDGenerator.nextSnowId().toString());
orderTickets.setUserId(uid);
// orderTickets.setUserName();
// orderTickets.setUserMobile();
orderTickets.setPerformanceTitle(performanceData.getTitle());
// orderTickets.setOrderCode();
// orderTickets.setQrCode();
// orderTickets.setOrderType();
// orderTickets.setOrderVersion();
orderTickets.setNumber(payOrderParam.getNumber());
orderTickets.setPrice(ticketData.getPrice());
orderTickets.setPriceMember(ticketData.getMemberPrice());
// orderTickets.setPriceTotal();
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);
orderTickets.setPayType(payOrderParam.getPayType());
orderTickets.setPaymentType(null);
orderTickets.setTimePay(null);
if (ticketData.getIsExpress() == 1) {
AdamAddressesVo addressesVo = feignAdamBaseClient.queryAddresses(payOrderParam.getAddressId(), uid).getData();
orderTickets.setExpressContacts(addressesVo.getName());
orderTickets.setExpressAddress(addressesVo.getAddress());
orderTickets.setExpressPhone(addressesVo.getPhone());
orderTickets.setGetTicketType("express");
} else {
orderTickets.setExpressContacts("");
orderTickets.setExpressAddress("");
orderTickets.setExpressPhone("");
orderTickets.setGetTicketType("electronic");
}
orderTickets.setCouponType("no");
orderTickets.setGetTicketDescribe("");
// orderTickets.setPayCountdownMinute();
orderTickets.setCreatedAt(LocalDateTime.now());
orderTickets.setUpdatedAt(null);
//生成票
return true;
}
}
......@@ -10,14 +10,12 @@ import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.ChildDetailsDao;
import com.liquidnet.service.kylin.dao.ChildListDao;
import com.liquidnet.service.kylin.dto.vo.CheckUserVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketTimesPartnerVo;
import com.liquidnet.service.kylin.dto.vo.KylinCheckUserVo;
import com.liquidnet.service.kylin.entity.KylinCheckUser;
import com.liquidnet.service.kylin.mapper.KylinCheckUserMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.kylin.service.partner.IKylinCheckUserPartnerService;
import com.mongodb.BasicDBObject;
import org.apache.tomcat.jni.Local;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
......@@ -79,7 +77,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
// mongoTemplate.getCollection(CheckUserVo.class.getSimpleName()).updateOne(
// Query.query(Criteria.where("checkUserId").is(checkUserId)).getQueryObject(),
// obj
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)), CheckUserVo.class, CheckUserVo.class.getSimpleName());
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)), KylinCheckUserVo.class, KylinCheckUserVo.class.getSimpleName());
return ResponseDto.success("删除成功");
} catch (Exception e) {
return ResponseDto.failure(ErrorMapping.get(20102));
......@@ -99,9 +97,9 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
checkUser.setStatus(1);
checkUserMapper.insert(checkUser);
CheckUserVo checkUserVo = new CheckUserVo();
BeanUtils.copyProperties(checkUser, checkUserVo);
mongoTemplate.insert(checkUserVo, CheckUserVo.class.getSimpleName());
KylinCheckUserVo kylinCheckUserVo = new KylinCheckUserVo();
BeanUtils.copyProperties(checkUser, kylinCheckUserVo);
mongoTemplate.insert(kylinCheckUserVo, KylinCheckUserVo.class.getSimpleName());
return ResponseDto.success("添加成功");
} catch (Exception e) {
......@@ -114,12 +112,14 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
try {
KylinCheckUser checkUser = new KylinCheckUser();
checkUser.setName(name);
checkUser.setPwd(DigestUtils.md5DigestAsHex(pwd.getBytes()));
if(null!=pwd) {
checkUser.setPwd(DigestUtils.md5DigestAsHex(pwd.getBytes()));
}
checkUser.setMobile(mobile);
checkUser.setUpdatedAt(LocalDateTime.now());
checkUserMapper.update(checkUser, new UpdateWrapper<KylinCheckUser>().eq("check_user_id", checkUserId).eq("merchant_id", merchantId));
BasicDBObject obj = new BasicDBObject("$set", mongoConverter.convertToMongoType(checkUser));
mongoTemplate.getCollection(CheckUserVo.class.getSimpleName()).updateOne(
mongoTemplate.getCollection(KylinCheckUserVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("checkUserId").is(checkUserId)).getQueryObject(),
obj
);
......
......@@ -9,7 +9,8 @@ import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.ChildPerformanceDao;
import com.liquidnet.service.kylin.dto.vo.CheckUserPerformanceVo;
import com.liquidnet.service.kylin.dto.param.CheckPerformanceRelationParam;
import com.liquidnet.service.kylin.dto.vo.KylinCheckUserPerformanceVo;
import com.liquidnet.service.kylin.entity.KylinCheckUserPerformances;
import com.liquidnet.service.kylin.mapper.KylinCheckUserPerformancesMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -73,25 +74,25 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
}
@Override
public ResponseDto<String> setPerformance(List<String> performanceIds, String checkUserId, String canDownTime) {
public ResponseDto<String> setPerformance(List<CheckPerformanceRelationParam> param, String checkUserId) {
try {
List<String> performanceList = new ArrayList<>();
for (String performanceId : performanceIds) {
for (CheckPerformanceRelationParam item : param) {
KylinCheckUserPerformances checkUserPerformances = new KylinCheckUserPerformances();
checkUserPerformances.setCheckUserId(checkUserId);
checkUserPerformances.setCanDownTime(LocalDateTime.parse(canDownTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
checkUserPerformances.setPerformanceId(performanceId);
checkUserPerformances.setCanDownTime(LocalDateTime.parse(item.getCanDownTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
checkUserPerformances.setPerformanceId(item.getPerformanceId());
checkUserPerformances.setCheckUserPerformanceId(IDGenerator.nextSnowId().toString());
checkUserPerformances.setCreatedAt(LocalDateTime.now());
checkUserPerformances.setStatus(1);
checkUserPerformancesMapper.insert(checkUserPerformances);
performanceList.add(performanceId);
performanceList.add(item.getPerformanceId());
}
CheckUserPerformanceVo userPerformanceVo = new CheckUserPerformanceVo();
KylinCheckUserPerformanceVo userPerformanceVo = new KylinCheckUserPerformanceVo();
userPerformanceVo.setCheckUserId(checkUserId);
userPerformanceVo.setPerformanceList(performanceList);
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)),CheckUserPerformanceVo.class,CheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.insert(userPerformanceVo,CheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)), KylinCheckUserPerformanceVo.class, KylinCheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName());
redisUtil.hdel(KylinRedisConst.CHECK_USER_RELATION,checkUserId);
return ResponseDto.success("添加成功");
......@@ -108,11 +109,11 @@ public class KylinCheckUserPerformancesPartnerServiceImpl extends ServiceImpl<Ky
performanceList.add(performanceId);
checkUserPerformancesMapper.delete(new UpdateWrapper<KylinCheckUserPerformances>().eq("check_user_id", checkUserId).eq("performance_id", performanceId));
}
CheckUserPerformanceVo userPerformanceVo = new CheckUserPerformanceVo();
KylinCheckUserPerformanceVo userPerformanceVo = new KylinCheckUserPerformanceVo();
userPerformanceVo.setCheckUserId(checkUserId);
userPerformanceVo.setPerformanceList(performanceList);
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)),CheckUserPerformanceVo.class,CheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.insert(userPerformanceVo,CheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.remove(Query.query(Criteria.where("checkUserId").is(checkUserId)), KylinCheckUserPerformanceVo.class, KylinCheckUserPerformanceVo.class.getSimpleName());
mongoTemplate.insert(userPerformanceVo, KylinCheckUserPerformanceVo.class.getSimpleName());
redisUtil.hdel(KylinRedisConst.CHECK_USER_RELATION,checkUserId);
return ResponseDto.success("删除成功");
}catch (Exception e){
......
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