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

Commit 436151d8 authored by 姜秀龙's avatar 姜秀龙

Merge remote-tracking branch 'refs/remotes/origin/master' into jxl_20240417_test

parents 920b5d2b bc42bd81
...@@ -17,8 +17,8 @@ public class AdamEntersParam implements java.io.Serializable { ...@@ -17,8 +17,8 @@ public class AdamEntersParam implements java.io.Serializable {
@Size(min = 1, max = 30, message = "姓名长度限制1-30位") @Size(min = 1, max = 30, message = "姓名长度限制1-30位")
private String name; private String name;
@ApiModelProperty(position = 12, required = true, value = "入场人手机号[11]", example = "13100000000") @ApiModelProperty(position = 12, required = true, value = "入场人手机号[11]", example = "13100000000")
@Pattern(regexp = "\\d{11}", message = "手机号格式有误") // @Pattern(regexp = "\\d{11}", message = "手机号格式有误")
@NotBlank(message = "手机号不能为空") // @NotBlank(message = "手机号不能为空")
private String mobile; private String mobile;
@ApiModelProperty(position = 13, required = true, value = "证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证", allowableValues = "1,2,3,4,5") @ApiModelProperty(position = 13, required = true, value = "证件类型:1-大陆身份证,2-港澳通行证,3-台胞证,4-护照,5-军官证", allowableValues = "1,2,3,4,5")
@NotNull(message = "证件类型不能位空") @Min(value = 1, message = "证件类型无效") @Max(value = 5, message = "证件类型无效") @NotNull(message = "证件类型不能位空") @Min(value = 1, message = "证件类型无效") @Max(value = 5, message = "证件类型无效")
......
...@@ -64,4 +64,6 @@ public class PayOrderParam { ...@@ -64,4 +64,6 @@ public class PayOrderParam {
private String productCode; private String productCode;
@ApiModelProperty(value = "入场人地址vo") @ApiModelProperty(value = "入场人地址vo")
private AddressVo addressesVo; private AddressVo addressesVo;
@ApiModelProperty(value = "联系方式")
private String userMobile;
} }
...@@ -107,6 +107,9 @@ public class TicketCreateParam implements Serializable { ...@@ -107,6 +107,9 @@ public class TicketCreateParam implements Serializable {
@ApiModelProperty(value = "", hidden = true) @ApiModelProperty(value = "", hidden = true)
private String createdAt; private String createdAt;
@ApiModelProperty(value = "票观演人数量")
private Integer viewersNumber;
@JsonIgnore @JsonIgnore
public KylinTickets kylinTickets(String ticketsId, LocalDateTime createdAt, LocalDateTime updatedAt) { public KylinTickets kylinTickets(String ticketsId, LocalDateTime createdAt, LocalDateTime updatedAt) {
KylinTickets kylinTickets = new KylinTickets(); KylinTickets kylinTickets = new KylinTickets();
......
package com.liquidnet.service.kylin.dto.param.admin;
import lombok.Data;
import java.io.Serializable;
/**
* <p>
* 观演人修改记录表
* </p>
*
* @author jiangxiulong
* @since 2024-06-19
*/
@Data
public class EntitiesEditParam implements Serializable {
/**
* order_ticket_entities_id
*/
private String orderTicketEntitiesId;
/**
* 入场人证件类型 1大陆身份证 2港澳通行证 3台胞证 4护照 5军官证
*/
private Integer enterType;
/**
* 入场人姓名
*/
private String enterName;
/**
* 入场人证件号
*/
private String enterIdCode;
/**
* 备注原因
*/
private String remark;
/**
* 凭证图片
*/
private String images;
}
...@@ -117,6 +117,9 @@ public class KylinTicketPartnerVo implements Serializable,Cloneable { ...@@ -117,6 +117,9 @@ public class KylinTicketPartnerVo implements Serializable,Cloneable {
@ApiModelProperty(value = "") @ApiModelProperty(value = "")
private String updatedAt; private String updatedAt;
@ApiModelProperty(value = "票观演人数量")
private Integer viewersNumber;
public void setDefault(){ public void setDefault(){
this.setIsMember(0); this.setIsMember(0);
this.setIsTransfer(0); this.setIsTransfer(0);
......
...@@ -36,6 +36,9 @@ public class OrderDetailsVo implements Cloneable { ...@@ -36,6 +36,9 @@ public class OrderDetailsVo implements Cloneable {
private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList; private List<KylinOrderRefundsOrderCodeVo> orderRefundsVoList;
private List<KylinOrderCoupons> orderCouponsList; private List<KylinOrderCoupons> orderCouponsList;
@ApiModelProperty(value = "联系方式")
private String userMobile;
private static final OrderDetailsVo obj = new OrderDetailsVo(); private static final OrderDetailsVo obj = new OrderDetailsVo();
public static OrderDetailsVo getNew() { public static OrderDetailsVo getNew() {
......
...@@ -29,4 +29,11 @@ public class PayDetailVo implements Serializable { ...@@ -29,4 +29,11 @@ public class PayDetailVo implements Serializable {
@ApiModelProperty(value = "快递可选择列表") @ApiModelProperty(value = "快递可选择列表")
private List<ExpressModuleVo> ExpressModuleList; private List<ExpressModuleVo> ExpressModuleList;
@ApiModelProperty(value = "观演人数量")
private Integer viewersNumber;
@ApiModelProperty(value = "联系方式")
private String userMobile;
} }
package com.liquidnet.service.kylin.service.admin;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntitiesEditLog;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 观演人修改记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2024-06-19
*/
public interface IKylinOrderTicketEntitiesEditLogService extends IService<KylinOrderTicketEntitiesEditLog> {
}
...@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.admin; ...@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.service.admin;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam; import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.SysDamaiParam; import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
...@@ -310,4 +311,13 @@ public interface IKylinPerformancesAdminService { ...@@ -310,4 +311,13 @@ public interface IKylinPerformancesAdminService {
List<PerformanceOrderStatisticalDao> getPerformanceOrderStatisticalList(String performancesId); List<PerformanceOrderStatisticalDao> getPerformanceOrderStatisticalList(String performancesId);
List<PerformanceSponsorDao> getPerformanceSponsorList(String sponsorType); List<PerformanceSponsorDao> getPerformanceSponsorList(String sponsorType);
/*
* @description: 获取预约信息
* @author: zjp
* @date: 2024/9/11 17:11
* @param: [performancesId]
* @return: com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo
**/
List<KylinPerformanceSubscribeTicketStatisticalDao> getPerformanceSubscribe(String performancesId);
} }
drop table if exists kylin_order_ticket_entities_edit_log;
CREATE TABLE `kylin_order_ticket_entities_edit_log`
(
`mid` bigint unsigned AUTO_INCREMENT PRIMARY KEY,
`entities_edit_log_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'entities_edit_log_id',
`order_ticket_entities_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'order_ticket_entities_id',
`sys_user_id` bigint NOT NULL DEFAULT 0 COMMENT '操作人ID',
`sys_user_name` varchar(100) NOT NULL DEFAULT '' COMMENT '操作人昵称',
`enter_type_old` tinyint NOT NULL DEFAULT 1 COMMENT '旧 入场人证件类型',
`enter_name_old` varchar(100) NOT NULL DEFAULT '' COMMENT '旧 入场人姓名',
`enter_id_code_old` varchar(50) NOT NULL DEFAULT '' COMMENT '旧 入场人证件号',
`enter_type` tinyint NOT NULL DEFAULT 1 COMMENT '入场人证件类型 1大陆身份证 2港澳通行证 3台胞证 4护照 5军官证',
`enter_name` varchar(100) NOT NULL DEFAULT '' COMMENT '入场人姓名',
`enter_id_code` varchar(50) NOT NULL DEFAULT '' COMMENT '入场人证件号',
`remark` varchar(255) NOT NULL DEFAULT '' COMMENT '备注原因',
`images` text NULL COMMENT '凭证图片',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
KEY `idx_entities_edit_log_id` (`entities_edit_log_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci COMMENT '观演人修改记录表';
\ No newline at end of file
package com.liquidnet.client.admin.web.controller.zhengzai.kylin; package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log; import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult; import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.domain.entity.SysUser;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BannersTargetType;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.zhengzai.adam.service.impl.AdamIdCodeService;
import com.liquidnet.client.admin.zhengzai.kylin.service.IToolService;
import com.liquidnet.commons.lang.constant.LnsRegex;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.OrderTicketsListDao; import com.liquidnet.service.kylin.dao.OrderTicketsListDao;
import com.liquidnet.service.kylin.dao.PerformanceSponsorDao; import com.liquidnet.service.kylin.dao.PerformanceSponsorDao;
import com.liquidnet.service.kylin.dto.param.admin.EntitiesEditParam;
import com.liquidnet.service.kylin.dto.param.admin.OrderListReq; import com.liquidnet.service.kylin.dto.param.admin.OrderListReq;
import com.liquidnet.service.kylin.dto.vo.admin.OrderDetailsAdminVo; import com.liquidnet.service.kylin.dto.vo.admin.OrderDetailsAdminVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntities;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntitiesEditLog;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesEditLogMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketEntitiesMapper;
import com.liquidnet.service.kylin.service.admin.IKylinOrderTicketsAdminService; import com.liquidnet.service.kylin.service.admin.IKylinOrderTicketsAdminService;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService; import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap; import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
/** /**
* 订单Controller * 订单Controller
...@@ -30,18 +49,157 @@ import java.util.List; ...@@ -30,18 +49,157 @@ import java.util.List;
public class KylinOrderTicketsController extends BaseController { public class KylinOrderTicketsController extends BaseController {
private String prefix = "zhengzai/kylin/order"; private String prefix = "zhengzai/kylin/order";
@Value("${liquidnet.client.admin.platformUrl}")
private String platformUrl;
@Value("${liquidnet.aliyun.oss.imgUrl}")
private String imgUrl;
@Autowired @Autowired
private IKylinOrderTicketsAdminService iKylinOrderTicketsAdminService; private IKylinOrderTicketsAdminService iKylinOrderTicketsAdminService;
@Autowired @Autowired
private IKylinPerformancesAdminService kylinPerformancesService; private IKylinPerformancesAdminService kylinPerformancesService;
@Autowired
private IToolService toolService;
@Autowired
private AdamIdCodeService adamIdCodeService;
@Autowired
private KylinOrderTicketEntitiesMapper kylinOrderTicketEntitiesMapper;
@Autowired
private KylinOrderTicketEntitiesEditLogMapper kylinOrderTicketEntitiesEditLogMapper;
@RequiresPermissions("kylin:order:orderlist:view") @RequiresPermissions("kylin:order:orderlist:view")
@GetMapping("/orderList") @GetMapping("/orderList")
public String tickets() { public String tickets() {
return prefix + "/orderList/orderList"; return prefix + "/orderList/orderList";
} }
@GetMapping("/enterEditList/{id}")
@RequiresPermissions("kylin:order:orderlist:view")
public String enterEditList(@PathVariable("id") String id, ModelMap mmap) {
mmap.put("id", id);
return prefix + "/orderList/enterEditList";
}
@Log(title = "观演人信息修改记录列表", businessType = BusinessType.LIST)
@RequiresPermissions("kylin:order:orderlist:view")
@PostMapping("/enterEditList/{id}")
@ResponseBody
public TableDataInfo enterEditListPost(@PathVariable("id") String id) {
List<KylinOrderTicketEntitiesEditLog> editLogs = kylinOrderTicketEntitiesEditLogMapper.selectList(
Wrappers.lambdaQuery(KylinOrderTicketEntitiesEditLog.class)
.eq(KylinOrderTicketEntitiesEditLog::getOrderTicketEntitiesId, id)
);
for (KylinOrderTicketEntitiesEditLog editLog : editLogs) {
String result = Arrays.stream(editLog.getImages().split(","))
.map(url -> imgUrl + url)
.collect(Collectors.joining(","));
editLog.setImages(result);
}
return getDataTable(editLogs);
}
@GetMapping("/enterEdit/{id}")
@RequiresPermissions("kylin:order:orderlist:view")
public String enterEdit(@PathVariable("id") String id, ModelMap mmap) {
mmap.put("id", id);
mmap.put("platformUrl", platformUrl);
List<Object> bannersTargetType = BannersTargetType.getResultType();
mmap.put("BannersTargetType", bannersTargetType);
KylinOrderTicketEntities kylinOrderTicketEntities = kylinOrderTicketEntitiesMapper.selectOne(
Wrappers.lambdaQuery(KylinOrderTicketEntities.class)
.eq(KylinOrderTicketEntities::getOrderTicketEntitiesId, id)
);
mmap.put("entitie", kylinOrderTicketEntities);
return prefix + "/orderList/enterEdit";
}
@PostMapping("/enterEdit")
@RequiresPermissions("kylin:order:orderlist:view")
@Log(title = "修改观演人信息", businessType = BusinessType.UPDATE)
@ResponseBody
public AjaxResult enterEditPost(EntitiesEditParam param) {
String orderTicketEntitiesId = param.getOrderTicketEntitiesId();
KylinOrderTicketEntities entities = kylinOrderTicketEntitiesMapper.selectOne(
Wrappers.lambdaQuery(KylinOrderTicketEntities.class)
.eq(KylinOrderTicketEntities::getOrderTicketEntitiesId, orderTicketEntitiesId)
);
String enterName = param.getEnterName();
String enterMobile = entities.getEnterMobile();
String enterIdCode = param.getEnterIdCode();
Integer enterType = param.getEnterType();
String orderId = entities.getOrderId();
// 验证
switch (param.getEnterType()) {
case 1:
if (!Pattern.matches(LnsRegex.Valid.CN_HANZI, enterName)) {
return error("观演人姓名只能为中文");
}
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, enterIdCode)) {
return error("身份证号码不合规");
}
try {
adamIdCodeService.identityHandler1(enterName, enterIdCode);
} catch (Exception e) {
return error(e.getMessage());
}
break;
case 2:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_HM, enterIdCode)) {
return error("港澳居民来往内地通行证号码不合规");
}
break;
case 3:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_TW, enterIdCode)) {
return error("台湾居民来往大陆通行证号码不合规");
}
break;
case 4:
if (Pattern.matches(LnsRegex.Valid.CN_ID_CARD_PP, enterIdCode)) {
return error("不支持中国大陆护照");
}
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_PP_NON, enterIdCode)) {
return error("护照号码不合规");
}
break;
case 5:
if (!Pattern.matches(LnsRegex.Valid.CN_ID_CARD_MO, enterIdCode)) {
return error("军官证号不合规");
}
break;
default:
return error("证件类型不正确");
}
// 修改
toolService.supplementEnter(orderTicketEntitiesId, enterName, enterMobile, enterIdCode, enterType, orderId);
// 记录
KylinOrderTicketEntitiesEditLog editLog = KylinOrderTicketEntitiesEditLog.getNew();
editLog.setEntitiesEditLogId(IDGenerator.nextSnowId());
editLog.setOrderTicketEntitiesId(orderTicketEntitiesId);
editLog.setEnterType(enterType);
editLog.setEnterIdCode(enterIdCode);
editLog.setEnterName(enterName);
editLog.setRemark(param.getRemark());
editLog.setImages(param.getImages());
SysUser sysUser = ShiroUtils.getSysUser();
editLog.setSysUserId(sysUser.getUserId());
editLog.setSysUserName(sysUser.getUserName());
editLog.setEnterNameOld(entities.getEnterName());
editLog.setEnterTypeOld(entities.getEnterType());
editLog.setEnterIdCodeOld(entities.getEnterIdCode());
kylinOrderTicketEntitiesEditLogMapper.insert(editLog);
return success();
}
/** /**
* 查询订单列表 * 查询订单列表
*/ */
......
...@@ -7,13 +7,17 @@ import com.liquidnet.client.admin.common.core.controller.BaseController; ...@@ -7,13 +7,17 @@ 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.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.kylin.dto.KylinOrderImportDto; import com.liquidnet.client.admin.zhengzai.kylin.dto.KylinOrderImportDto;
import com.liquidnet.client.admin.zhengzai.kylin.dto.KylinPerformanceSubscribeTicketStatisticalExportDao;
import com.liquidnet.client.admin.zhengzai.kylin.dto.PerformanceOrderStatisCountResp; import com.liquidnet.client.admin.zhengzai.kylin.dto.PerformanceOrderStatisCountResp;
import com.liquidnet.client.admin.zhengzai.stone.service.dto.StoneScoreListExportDto;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.goblin.param.GoblinFrontCubeParam; import com.liquidnet.service.goblin.param.GoblinFrontCubeParam;
import com.liquidnet.service.kylin.dao.PerformanceAdminListDao; import com.liquidnet.service.kylin.dao.PerformanceAdminListDao;
import com.liquidnet.service.kylin.dao.PerformanceMemberAuditDao; import com.liquidnet.service.kylin.dao.PerformanceMemberAuditDao;
import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao; import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam; import com.liquidnet.service.kylin.dto.param.PerformanceAdminListParam;
import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam; import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.param.SysDamaiParam; import com.liquidnet.service.kylin.dto.param.SysDamaiParam;
...@@ -188,7 +192,38 @@ public class KylinPerformancesController extends BaseController { ...@@ -188,7 +192,38 @@ public class KylinPerformancesController extends BaseController {
mmap.put("kylinPerformancePayTxtVo", result); mmap.put("kylinPerformancePayTxtVo", result);
return prefix + "/payTxt"; return prefix + "/payTxt";
} }
/*
* @description: 预约统计
* @author: zjp
* @date: 2024/9/11 17:03
* @param: [performancesId, mmap]
* @return: java.lang.String
**/
@GetMapping(value = "/subscribe/{performancesId}")
public String subscribe(@PathVariable("performancesId") String performancesId, ModelMap mmap) {
List<KylinPerformanceSubscribeTicketStatisticalDao> result = kylinPerformancesService.getPerformanceSubscribe(performancesId);
mmap.put("subscribeStaticList", result);
mmap.put("performancesId",performancesId);
return prefix + "/subscribe";
}
@Log(title = "预约统计:导出列表")
@PostMapping("/subscribe/export")
@ResponseBody
public AjaxResult subscribeExport(@RequestParam("performancesId") String performancesId) {
List<KylinPerformanceSubscribeTicketStatisticalDao> list = kylinPerformancesService.getPerformanceSubscribe(performancesId);
ArrayList<KylinPerformanceSubscribeTicketStatisticalExportDao> listExport = new ArrayList<>();
for (KylinPerformanceSubscribeTicketStatisticalDao kylinPerformanceSubscribeTicketStatisticalDao : list) {
KylinPerformanceSubscribeTicketStatisticalExportDao kylinPerformanceSubscribeTicketStatisticalExportDao = new KylinPerformanceSubscribeTicketStatisticalExportDao();
kylinPerformanceSubscribeTicketStatisticalExportDao.setTimeTitle(kylinPerformanceSubscribeTicketStatisticalDao.getTimeTitle());
kylinPerformanceSubscribeTicketStatisticalExportDao.setTicketTimesTitle(kylinPerformanceSubscribeTicketStatisticalDao.getTicketTimesTitle());
kylinPerformanceSubscribeTicketStatisticalExportDao.setSubscribeTotal(kylinPerformanceSubscribeTicketStatisticalDao.getSubscribeTotal());
listExport.add(kylinPerformanceSubscribeTicketStatisticalExportDao);
}
ExcelUtil<KylinPerformanceSubscribeTicketStatisticalExportDao> util = new ExcelUtil(KylinPerformanceSubscribeTicketStatisticalExportDao.class);
return util.exportExcel(listExport, "预约统计");
}
//@RequiresPermissions("kylin:performances:view") //@RequiresPermissions("kylin:performances:view")
@PostMapping(value = "/agent/change") @PostMapping(value = "/agent/change")
@ResponseBody @ResponseBody
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('修改订单')" /> <th:block th:include="include :: header('修改订单')" />
<th:block th:include="include :: datetimepicker-css" /> <th:block th:include="include :: datetimepicker-css" />
...@@ -89,6 +89,11 @@ ...@@ -89,6 +89,11 @@
<div class="form-control-static" th:text="${@dict.getLabel('zhengzai_get_ticket_type',orderDetailsVo.orderTicketVo.getTicketType)}"> <div class="form-control-static" th:text="${@dict.getLabel('zhengzai_get_ticket_type',orderDetailsVo.orderTicketVo.getTicketType)}">
</div> </div>
</div> </div>
<div class="form-group">
<label class="col-sm-3 control-label is-required">联系方式:</label>
<div class="form-control-static" th:text="*{orderTicketVo.userMobile}">
</div>
</div>
<div th:each="ticketEntity,ticketEntityStat : *{orderTicketEntitiesVo}" class="form-group select-list" > <div th:each="ticketEntity,ticketEntityStat : *{orderTicketEntitiesVo}" class="form-group select-list" >
<div class="hr-line-dashed"></div> <div class="hr-line-dashed"></div>
<label class="col-sm-3 control-label is-required">取票人[[${ticketEntityStat.count}]]:</label> <label class="col-sm-3 control-label is-required">取票人[[${ticketEntityStat.count}]]:</label>
...@@ -99,31 +104,43 @@ ...@@ -99,31 +104,43 @@
<div class="col-sm-3"> <div class="col-sm-3">
<input th:value="${@dict.getLabel('zhengzai_certificate_type',ticketEntity.enterType)}" class="form-control" type="text" readonly> <input th:value="${@dict.getLabel('zhengzai_certificate_type',ticketEntity.enterType)}" class="form-control" type="text" readonly>
</div> </div>
<label class="col-sm-3 control-label">电话:</label> <!-- <label class="col-sm-3 control-label">电话:</label>-->
<div class="col-sm-3"> <!-- <div class="col-sm-3">-->
<input th:value="${ticketEntity.enterMobile}" class="form-control" type="text" readonly> <!-- <input th:value="${ticketEntity.enterMobile}" class="form-control" type="text" readonly>-->
</div> <!-- </div>-->
<label class="col-sm-3 control-label">证件号:</label>
<div class="col-sm-3">
<input th:value="${ticketEntity.enterIdCode}" class="form-control" type="text" readonly>
</div>
<label class="col-sm-3 control-label">票务状态:</label> <label class="col-sm-3 control-label">票务状态:</label>
<div class="col-sm-3"> <div class="col-sm-3">
<input th:value="${@dict.getLabel('zhengzai_payment_type',ticketEntity.isPayment)}" class="form-control" type="text" readonly> <input th:value="${@dict.getLabel('zhengzai_payment_type',ticketEntity.isPayment)}" class="form-control" type="text" readonly>
</div> </div>
<label class="col-sm-3 control-label">出票状态</label> <label class="col-sm-3 control-label">证件号</label>
<div class="col-sm-3"> <div class="col-sm-3">
<input th:value="${@dict.getLabel('zhengzai_ticket_status',ticketEntity.status)}" class="form-control" type="text" readonly> <input th:value="${ticketEntity.enterIdCode}" class="form-control" type="text" readonly>
</div> </div>
<!-- <label class="col-sm-3 control-label">出票状态:</label>-->
<!-- <div class="col-sm-3">-->
<!-- <input th:value="${@dict.getLabel('zhengzai_ticket_status',ticketEntity.status)}" class="form-control" type="text" readonly>-->
<!-- </div>-->
<!-- <label class="col-sm-3 control-label">操作:</label>-->
<!-- <div class="col-sm-3">-->
<!-- <a class="btn btn-danger btn-xs" th:onclick="enterEdit([[${ticketEntity.orderTicketEntitiesId}]])">修改</a>-->
<!-- <a class="btn btn-success btn-xs" th:onclick="enterEditList([[${ticketEntity.orderTicketEntitiesId}]])">修改记录</a>-->
<!-- </div>-->
</div> </div>
</form> </form>
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" /> <th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript"> <script th:inline="javascript">
var prefix = ctx + "kylin/tickets"; var prefix = ctx + "kylin/order";
var payTypeDatas = [[${@dict.getType('zhengzai_pay_type')}]]; var payTypeDatas = [[${@dict.getType('zhengzai_pay_type')}]];
function enterEdit(id) {
$.modal.open('修改观演人信息', prefix + "/enterEdit/"+id)
}
function enterEditList(id) {
$.modal.open('观演人信息修改记录', prefix + "/enterEditList/"+id)
}
$("#form-tickets-edit").validate({ $("#form-tickets-edit").validate({
focusCleanup: true focusCleanup: true
}); });
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('修改观演人信息')"/>
<th:block th:include="include :: select2-css"/>
<th:block th:include="include :: bootstrap-fileinput-css"/>
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-post-add">
<div class="form-group">
<label class="col-sm-2 control-label is-required">观演人姓名</label>
<div class="col-sm-10">
<input th:value="${#strings.defaultString(entitie.enterName, '')}" class="form-control" type="text" name="enterName" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label is-required">证件类型</label>
<div class="col-sm-10">
<select required class="form-control" name="enterType" th:with="type=${@dict.getType('zhengzai_certificate_type')}">
<option value="">--请选择证件类型--</option>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"
th:field="*{entitie.enterType}">
</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label is-required">证件号</label>
<div class="col-sm-10">
<input th:value="${#strings.defaultString(entitie.enterIdCode, '')}" class="form-control" type="text" name="enterIdCode" required>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label is-required">备注原因</label>
<div class="col-sm-10">
<textarea rows="3" name="remark" placeholder="" class="form-control" required></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label is-required">上传凭证</label>
<div class="col-sm-10">
<div class="file-loading">
<input id="fileinput-1" type="file" name="file" data-max-file-count="20" multiple>
</div>
</div>
</div>
<input hidden id="images" name="images">
<input hidden id="orderTicketEntitiesId" name="orderTicketEntitiesId" th:value="${entitie.orderTicketEntitiesId}">
</form>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: select2-js"/>
<th:block th:include="include :: bootstrap-fileinput-js"/>
<th:block th:include="include :: bootstrap-suggest-js"/>
<script type="text/javascript">
var prefix = ctx + "kylin/order";
var platformUrl = "[[${platformUrl}]]";
function submitHandler() {
if ($.validate.form()) {
var data = $('#form-post-add').serializeArray();
var images = $('#images').val();
if (!images) {
layer.msg("请上传图片,请勿忘记点击上传按钮");
return false;
}
$.operate.save(prefix + "/enterEdit", data);
}
}
$(function () {
let uploadedFilePaths = [];
$("#fileinput-1").fileinput({
'theme': 'explorer-fas',
layoutTemplates: {
actionUpload: '',
},
'uploadUrl': platformUrl + "/platform/basicServices/alOss/upload",
"uploadExtraData": {
"pathName" : "kylinOrderEnter",
"buckType" : 1
},
showClose: false,
browseOnZoneClick: false,
}).on("fileuploaded", function (event, data, previewId, index) {
// 将上传的文件路径添加到数组中
uploadedFilePaths.push(data.response.data.ossPath);
// 更新隐藏输入字段的值
$("#images").val(uploadedFilePaths.join(','));
});
})
</script>
</body>
</html>
\ No newline at end of file
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('观演人信息修改记录')"/>
<style>
.img-circle {
border-radius: 0 !important; /* 覆盖 border-radius 样式,设置为0 */
}
</style>
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<div class="col-sm-12 select-table table-bordered">
<table id="bootstrap-table"></table>
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<th:block th:include="include :: bootstrap-suggest-js"/>
<th:block th:include="include :: bootstrap-typeahead-js"/>
<script th:inline="javascript">
var prefix = ctx + "kylin/order";
var id = [[${id}]];
var certificateType = [[${@dict.getType('zhengzai_certificate_type')}]];
$(function () {
var options = {
url: prefix + "/enterEditList/" + id,
modalName: "观演人信息修改记录",
columns: [{
field: 'createdAt',
title: '时间',
formatter: function (value, row, index) {
return $.common.sprintf("<span>%s</span>", null != value ? value.replace("T"," ").substring(0, 19) : value);
}
},
{
field: 'formatter',
title: '原信息',
formatter: function (value, row, index) {
return '证件类型: ' + $.table.selectDictLabel(certificateType, row.enterTypeOld) + '<br>' +
'姓名: ' + row.enterNameOld + '<br>' +
'证件号: ' + row.enterIdCodeOld + '<br>';
}
},
{
field: 'formatter',
title: '变更信息',
formatter: function (value, row, index) {
return '证件类型: ' + $.table.selectDictLabel(certificateType, row.enterType) + '<br>' +
'姓名: ' + row.enterName + '<br>' +
'证件号: ' + row.enterIdCode + '<br>';
}
},
{
field: 'remark',
title: '备注原因'
},
{
field: 'images',
title: '变更凭证',
formatter: function(value, row, index) {
var arr = value.split(",");
var str = "";
for(var i=0;i<arr.length;i++){
str += $.table.imageView(arr[i],"300", "600");
}
return str;
}
},
{
field: 'sysUserName',
title: '操作人'
}]
};
$.table.init(options);
});
</script>
</body>
</html>
\ No newline at end of file
...@@ -41,6 +41,8 @@ ...@@ -41,6 +41,8 @@
</li> </li>
<li id="li-tab-9"><a data-toggle="tab" href="#tab-9" aria-expanded="false" onclick="payTxtInfo()">支付文案</a> <li id="li-tab-9"><a data-toggle="tab" href="#tab-9" aria-expanded="false" onclick="payTxtInfo()">支付文案</a>
</li> </li>
<li id="li-tab-11"><a data-toggle="tab" href="#tab-11" aria-expanded="false" onclick="subscribeInfo()">预约统计</a>
</li>
</ul> </ul>
<div class="tab-content"> <div class="tab-content">
<div id="tab-1" class="tab-pane"> <div id="tab-1" class="tab-pane">
...@@ -343,6 +345,13 @@ ...@@ -343,6 +345,13 @@
height=800px frameborder=0></iframe> height=800px frameborder=0></iframe>
</div> </div>
</div> </div>
<div id="tab-11" class="tab-pane">
<div class="panel-body">
<iframe id="subscribe_iframe" name="subscribe_iframe" marginwidth=0 marginheight=0
width=100%
height=800px frameborder=0></iframe>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -420,7 +429,11 @@ ...@@ -420,7 +429,11 @@
if (payTxt == "hidden") { if (payTxt == "hidden") {
document.getElementById("li-tab-9").style.display = "none"; document.getElementById("li-tab-9").style.display = "none";
} }
//预约演出
var subscribe = [[${@permission.hasPermi('kylin:performances:subscribe')}]];
if (subscribe == "hidden") {
document.getElementById("li-tab-11").style.display = "none";
}
if (auditStatus == 1 || fieldStatus == 1 || fieldStatus == 2 || auditStatus == 2) { if (auditStatus == 1 || fieldStatus == 1 || fieldStatus == 2 || auditStatus == 2) {
document.getElementsByName("auditBtn")[0].style.display = "none"; document.getElementsByName("auditBtn")[0].style.display = "none";
} }
...@@ -533,6 +546,10 @@ ...@@ -533,6 +546,10 @@
function payTxtInfo() { function payTxtInfo() {
document.getElementById("pay_txt_iframe").src = "../payTxt/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""); document.getElementById("pay_txt_iframe").src = "../payTxt/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
} }
//预约统计
function subscribeInfo() {
document.getElementById("subscribe_iframe").src = "../subscribe/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "");
}
$("#tab-nav-1").bind("click", function () { $("#tab-nav-1").bind("click", function () {
$("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", "")); $("#tab_iframe_1").attr("src", prefix + "/performanceStatic/" + '[[${kylinPerformanceMisVo.performancesId}]]'.replaceAll("\"", ""));
......
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head>
<th:block th:include="include :: header('预约统计')" />
</head>
<body class="gray-bg">
<div class="container-div">
<div class="row">
<button id="fun1" type="button" class="btn btn-w-m btn-success" href="javascript:void(0)"
onclick="searchExport()">导出
</button>
<table class="col-sm-12 select-table table-bordered table table-stripped small m-t-md">
<thead>
<tr>
<th>
<div class="cell">场次</div>
</th>
<th>
<div class="cell">票种</div>
</th>
<th>
<div class="cell">预约人数</div>
</th>
</tr>
</thead>
<tbody>
<tr th:each="respBean,respBeanStat:${subscribeStaticList}">
<td>
<div class="cell" th:text="${respBean.ticketTimesTitle}">-</div>
</td>
<td>
<div class="cell" th:text="${respBean.timeTitle}">-</div>
</td>
<td>
<div class="cell" th:text="${respBean.subscribeTotal}">-</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<th:block th:include="include :: footer" />
<script th:inline="javascript">
var performancesId=[[${performancesId}]];
var prefix = ctx + "kylin/performances";
function searchExport(){
$.modal.loading("正在导出数据,请稍后...");
$.post(prefix+'/subscribe/export', {performancesId: performancesId}, function(result) {
if (result.code == web_status.SUCCESS) {
window.location.href = ctx + "common/download?fileName=" + encodeURI(result.msg) + "&delete=" + true;
} else {
$.modal.alertError(result.msg);
}
$.modal.closeLoading();
});
}
</script>
</body>
</html>
...@@ -55,7 +55,12 @@ ...@@ -55,7 +55,12 @@
<td th:text="${item.title}"></td> <td th:text="${item.title}"></td>
</div> </div>
<td>总销售张数</td> <td>总销售张数</td>
<td>总销售金额</td> <td>票面票房金额</td>
<td>总支付金额</td>
<td>快递费总金额</td>
<td>优惠券金额</td>
<td>实际销售金额</td>
<td>佣金比例</td>
<td>总销售佣金</td> <td>总销售佣金</td>
<td>打款状态</td> <td>打款状态</td>
<td>是否黑名单</td> <td>是否黑名单</td>
...@@ -75,7 +80,12 @@ ...@@ -75,7 +80,12 @@
<td th:text="${item.agentName}"></td> <td th:text="${item.agentName}"></td>
<td th:each="itemAgent : ${item.dataAgentVos}" th:text="${itemAgent.number}"></td> <td th:each="itemAgent : ${item.dataAgentVos}" th:text="${itemAgent.number}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![number])}"></td> <td th:text="${#aggregates.sum(item.dataAgentVos.![number])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![faceTotalPrice])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![priceReal])}"></td> <td th:text="${#aggregates.sum(item.dataAgentVos.![priceReal])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![totalPriceExpress])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![voucherPrice])}"></td>
<td th:text="${#aggregates.sum(item.dataAgentVos.![realTotalPrice])}"></td>
<td th:text="${item.agentDistributions}"></td>
<td th:text="${item.totalCommission}"></td> <td th:text="${item.totalCommission}"></td>
<td th:if="${item.priceStatus!=0}" th:text="待打款"></td> <td th:if="${item.priceStatus!=0}" th:text="待打款"></td>
<td th:if="${item.priceStatus==0}" th:text="已打款"></td> <td th:if="${item.priceStatus==0}" th:text="已打款"></td>
......
package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.IdentityUtils;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@Slf4j
@Service
public class AdamIdCodeService {
@Autowired
RedisDataSourceUtil redisDataSourceUtil;
public boolean setCertificationJunk(int idType, String idNo, String idName) {
return redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.INFO_CERTIFICATION_JUNK + idType + idNo, idName, 604800);
}
public boolean isCertificationJunk(int idType, String idNo, String idName) {
String o = (String) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.INFO_CERTIFICATION_JUNK + idType + idNo);
return !StringUtils.isEmpty(o) && o.equals(idName);
}
/**
* 目前只针对身份证类型三方服务认证成功的标记
*
* @param idType
* @param idNo
* @param idName
* @return
*/
public boolean setCertification(int idType, String idNo, String idName) {
return redisDataSourceUtil.getRedisAdamUtil().set(AdamRedisConst.INFO_CERTIFICATION + idType + idNo, idName);
}
/**
* 目前只针对身份证类型三方服务认证成功的标记
*
* @param idType
* @param idNo
* @param idName
* @return
*/
public int isCertification(int idType, String idNo, String idName) {
String o = (String) redisDataSourceUtil.getRedisAdamUtil().get(AdamRedisConst.INFO_CERTIFICATION + idType + idNo);
if (StringUtils.isEmpty(o)) {
return -1;
}
return o.equals(idName) ? 1 : 0;
}
/**
* 身份证实名处理
*
* @param name
* @param idCard
*/
public void identityHandler1(String name, String idCard) {
String msg = "身份证号与姓名不符";
String code = "10102";
int rst = this.isCertification(1, idCard, name);
switch (rst) {
// 本地存在,验证不通过 改名字了重新验证
case 0:
// 本地不存在
case -1:
if (this.isCertificationJunk(1, idCard, name)) {
throw new LiquidnetServiceException(code, msg);
}
String respStr = IdentityUtils.aliThird(name, idCard), respErrorCode = null;
JsonNode respJNode = JsonUtils.fromJson(respStr, JsonNode.class);
if (null == respJNode || !"0".equals(respErrorCode = String.valueOf(respJNode.get("error_code")))) {
log.info("###实名认证失败[{}]", respStr);
if (!StringUtils.isEmpty(respErrorCode) && org.apache.commons.lang3.StringUtils.indexOf("3000290033", respErrorCode) < 0) {
// 认证服务商'30002'、'90033'为运营商导致的失败,这里不做缓存标记
this.setCertificationJunk(1, idCard, name);
}
throw new LiquidnetServiceException(code, msg);
}
this.setCertification(1, idCard, name);
break;
// 本地存在,验证通过
case 1:
break;
default:
throw new LiquidnetServiceException(code, "认证失败标记类型错误");
}
}
}
package com.liquidnet.client.admin.zhengzai.kylin.dto;
import com.liquidnet.client.admin.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
@Data
public class KylinPerformanceSubscribeTicketStatisticalExportDao implements Serializable, Cloneable {
@Excel(name = "场次", cellType = Excel.ColumnType.STRING)
private String ticketTimesTitle;
@Excel(name = "票种", cellType = Excel.ColumnType.STRING)
private String timeTitle;
@Excel(name = "预约人数", cellType = Excel.ColumnType.NUMERIC)
private Integer subscribeTotal;
}
...@@ -173,9 +173,9 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic ...@@ -173,9 +173,9 @@ public class KylinOrderTicketsAdminServiceImpl extends ServiceImpl<KylinOrderTic
if (item.getEnterIdCode().length() == 18) { if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16)); item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
} }
if (item.getEnterMobile().length() == 11) { // if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7)); // item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
} // }
} }
//计算 倒计时 //计算 倒计时
if (orderTicketVo.getStatus() == KylinTableStatusConst.ORDER_STATUS0) { if (orderTicketVo.getStatus() == KylinTableStatusConst.ORDER_STATUS0) {
......
...@@ -19,6 +19,7 @@ import com.liquidnet.commons.lang.util.DateUtil; ...@@ -19,6 +19,7 @@ import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.goblin.dto.vo.SmileAgentVo; import com.liquidnet.service.goblin.dto.vo.SmileAgentVo;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dao.report.KylinPerformanceSubscribeTicketStatisticalDao;
import com.liquidnet.service.kylin.dto.param.*; import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.*; import com.liquidnet.service.kylin.dto.vo.admin.*;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
...@@ -971,6 +972,11 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -971,6 +972,11 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
return performancesMapper.getPerformanceSponsorList(sponsorType); return performancesMapper.getPerformanceSponsorList(sponsorType);
} }
@Override
public List<KylinPerformanceSubscribeTicketStatisticalDao> getPerformanceSubscribe(String performancesId) {
return performancesMapper.getSubscribeTicketStatisticalByPerformancesId(performancesId);
}
//删除演出下所有订单缓存(订单详情,订单列表) //删除演出下所有订单缓存(订单详情,订单列表)
public void delOrderTicketsRedis(KylinPerformanceMisVo vo) { public void delOrderTicketsRedis(KylinPerformanceMisVo vo) {
//找到所有ticketId //找到所有ticketId
......
...@@ -484,6 +484,23 @@ public class KylinRefundsStatusServiceImpl { ...@@ -484,6 +484,23 @@ public class KylinRefundsStatusServiceImpl {
continue; continue;
} else { } else {
//未退款入场人数量为0才退优先卷
List<KylinOrderTicketEntities> kylinOrderTicketEntities = kylinOrderTicketEntitiesMapper.selectList(
Wrappers.lambdaQuery(KylinOrderTicketEntities.class).eq(KylinOrderTicketEntities::getOrderId, refund.getOrderTicketsId()).eq(KylinOrderTicketEntities::getIsPayment, 1));
log.info("admin退款请求未退款入场人数量number={}",kylinOrderTicketEntities.size());
if(kylinOrderTicketEntities.size()==0){
//获取订单详情
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(refund.getOrderTicketsId());
//退优先卷
ArrayList<KylinOrderCoupons> orderCoupons = dataUtils.getOrderCoupon(refund.getOrderTicketsId());
if (orderCoupons.size() > 0) {
for (KylinOrderCoupons item : orderCoupons) {
if (item.getCouponType() == 101) {
dataUtils.backCoupon(item.getCouponCode(), orderTicketVo.getUserId());
}
}
}
}
// 同步大麦 票务平台 // 同步大麦 票务平台
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(refund.getOrderTicketsId()); KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(refund.getOrderTicketsId());
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId()); KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
......
package com.liquidnet.client.admin.zhengzai.kylin.utils; package com.liquidnet.client.admin.zhengzai.kylin.utils;
import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo; import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil; import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.kylin.constant.KylinRedisConst; import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.KylinExpressModuleVo; import com.liquidnet.service.kylin.dto.vo.KylinExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress; import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundAddress;
...@@ -14,20 +17,25 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; ...@@ -14,20 +17,25 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.entity.KylinOrderCoupons;
import com.liquidnet.service.slime.constant.SlimeRedisConst; import com.liquidnet.service.slime.constant.SlimeRedisConst;
import com.liquidnet.service.slime.dto.vo.SlimeFieldsVo; import com.liquidnet.service.slime.dto.vo.SlimeFieldsVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.BigInteger; import java.math.BigInteger;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@Slf4j
@Component @Component
public class DataUtils { public class DataUtils {
...@@ -37,6 +45,8 @@ public class DataUtils { ...@@ -37,6 +45,8 @@ public class DataUtils {
private RedisDataSourceUtil redisDataSourceUtil; private RedisDataSourceUtil redisDataSourceUtil;
@Autowired @Autowired
private MongoVoUtils mongoVoUtils; private MongoVoUtils mongoVoUtils;
@Value("${liquidnet.service.candy.url}")
private String candyUrl;
/** /**
* 初始化普通库存 * 初始化普通库存
...@@ -581,4 +591,33 @@ public class DataUtils { ...@@ -581,4 +591,33 @@ public class DataUtils {
return (ArrayList<OrderRefundPoundage>) obj; return (ArrayList<OrderRefundPoundage>) obj;
} }
} }
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
Object obj = redisDataSourceUtil.getRedisKylinUtil().get(redisKey);
if (obj == null) {
return getKylinOrderCouponsArrayList();
} else {
return (ArrayList<KylinOrderCoupons>) obj;
}
}
public void backCoupon(String uCouponId, String uid) {
try {
BackCouponParam param = BackCouponParam.getNew();
param.setuCouponIds(uCouponId);
param.setUid(uid);
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
ArrayList<BackCouponParam> params = new ArrayList();
params.add(param);
String jsonString = JSON.toJSONString(params);
String returnData = HttpUtil.postRaw(candyUrl + "/candy-coupon/useBack", jsonString, header);
} catch (Exception e) {
log.error("回退券ERROR:{}", e);
}
}
private static final ArrayList<KylinOrderCoupons> kylinOrderCouponsArrayList = new ArrayList<>();
public static ArrayList<KylinOrderCoupons> getKylinOrderCouponsArrayList() {
return (ArrayList<KylinOrderCoupons>) kylinOrderCouponsArrayList.clone();
}
} }
...@@ -45,4 +45,8 @@ public class ShowAgentVo { ...@@ -45,4 +45,8 @@ public class ShowAgentVo {
*/ */
@ApiModelProperty(value = "普代票提", example = "") @ApiModelProperty(value = "普代票提", example = "")
private BigDecimal ordCarry; private BigDecimal ordCarry;
@ApiModelProperty(value = "票种单价", example = "")
private BigDecimal price;
} }
...@@ -77,7 +77,8 @@ public class UserData implements Serializable, Cloneable { ...@@ -77,7 +77,8 @@ public class UserData implements Serializable, Cloneable {
@ApiModelProperty(value = "总佣金") @ApiModelProperty(value = "总佣金")
private BigDecimal totalCommission; private BigDecimal totalCommission;
@ApiModelProperty(value = "票提", example = "")
private BigDecimal agentDistributions;
private static final UserData obj = new UserData(); private static final UserData obj = new UserData();
......
...@@ -53,6 +53,40 @@ public class UserDataAgentVo implements Serializable, Cloneable{ ...@@ -53,6 +53,40 @@ public class UserDataAgentVo implements Serializable, Cloneable{
@ApiModelProperty(value = "提成", example = "") @ApiModelProperty(value = "提成", example = "")
private BigDecimal commission; private BigDecimal commission;
/**
* 实际销售金额 实际支付金额-快递费=提成基数
*/
@ApiModelProperty(value = "实际销售金额", example = "")
private BigDecimal realTotalPrice;
/**
* 优惠券金额
*/
@ApiModelProperty(value = "优惠券金额", example = "")
private BigDecimal voucherPrice;
/**
* 票面金额
*/
@ApiModelProperty(value = "票面金额", example = "")
private BigDecimal faceTotalPrice;
/**
* 快递费总金额
*/
@ApiModelProperty(value = "快递费总金额", example = "")
private BigDecimal totalPriceExpress;
/**
* 票提
*/
@ApiModelProperty(value = "票提", example = "")
private BigDecimal agentDistributions;
private static final UserDataAgentVo obj = new UserDataAgentVo(); private static final UserDataAgentVo obj = new UserDataAgentVo();
public static UserDataAgentVo getNew() { public static UserDataAgentVo getNew() {
......
package com.liquidnet.service.kylin.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 观演人修改记录表
* </p>
*
* @author jiangxiulong
* @since 2024-06-19
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinOrderTicketEntitiesEditLog implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* entities_edit_log_id
*/
private String entitiesEditLogId;
/**
* order_ticket_entities_id
*/
private String orderTicketEntitiesId;
/**
* 操作人ID
*/
private Long sysUserId;
/**
* 操作人昵称
*/
private String sysUserName;
/**
* 旧 入场人证件类型
*/
private Integer enterTypeOld;
/**
* 旧 入场人姓名
*/
private String enterNameOld;
/**
* 旧 入场人证件号
*/
private String enterIdCodeOld;
/**
* 入场人证件类型 1大陆身份证 2港澳通行证 3台胞证 4护照 5军官证
*/
private Integer enterType;
/**
* 入场人姓名
*/
private String enterName;
/**
* 入场人证件号
*/
private String enterIdCode;
/**
* 备注原因
*/
private String remark;
/**
* 凭证图片
*/
private String images;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final KylinOrderTicketEntitiesEditLog obj = new KylinOrderTicketEntitiesEditLog();
public static KylinOrderTicketEntitiesEditLog getNew() {
try {
return (KylinOrderTicketEntitiesEditLog) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinOrderTicketEntitiesEditLog();
}
}
}
...@@ -115,6 +115,12 @@ public class KylinTickets implements Serializable ,Cloneable{ ...@@ -115,6 +115,12 @@ public class KylinTickets implements Serializable ,Cloneable{
*/ */
private Integer saleRemindMinute; private Integer saleRemindMinute;
/**
* 票观演人数量
*/
private Integer viewersNumber;
/** /**
* comment * comment
*/ */
...@@ -147,7 +153,8 @@ public class KylinTickets implements Serializable ,Cloneable{ ...@@ -147,7 +153,8 @@ public class KylinTickets implements Serializable ,Cloneable{
vo.getDescribeElectronic(),vo.getAdvanceMinuteMember(), vo.getDescribeElectronic(),vo.getAdvanceMinuteMember(),
vo.getTimeStart(),vo.getTimeEnd(),vo.getTimeEndExpress(), vo.getTimeStart(),vo.getTimeEnd(),vo.getTimeEndExpress(),
vo.getUseStart(),vo.getUseEnd(),vo.getPayCountdownMinute(), vo.getUseStart(),vo.getUseEnd(),vo.getPayCountdownMinute(),
vo.getSaleRemindMinute(),vo.getComment(),vo.getCreatedAt(), vo.getSaleRemindMinute(),vo.getViewersNumber()
,vo.getComment(),vo.getCreatedAt(),
vo.getUpdatedAt() vo.getUpdatedAt()
}; };
} }
......
package com.liquidnet.service.kylin.mapper;
import com.liquidnet.service.kylin.entity.KylinOrderTicketEntitiesEditLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 观演人修改记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2024-06-19
*/
public interface KylinOrderTicketEntitiesEditLogMapper extends BaseMapper<KylinOrderTicketEntitiesEditLog> {
}
<?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.KylinOrderTicketEntitiesEditLogMapper">
</mapper>
...@@ -741,8 +741,8 @@ GROUP BY user_mobile,tickets_id; ...@@ -741,8 +741,8 @@ GROUP BY user_mobile,tickets_id;
LEFT JOIN ( LEFT JOIN (
SELECT SELECT
kk.performance_id, kk.performance_id,
sum( kot.number - kot.refund_number ) AS `open`, sum(kot.number) AS `open`,
sum( kot.price_actual - kot.price_refund ) AS price sum(kot.price_actual) AS price
FROM FROM
kylin_order_tickets AS kot kylin_order_tickets AS kot
LEFT JOIN ( LEFT JOIN (
...@@ -759,7 +759,7 @@ GROUP BY user_mobile,tickets_id; ...@@ -759,7 +759,7 @@ GROUP BY user_mobile,tickets_id;
LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id
INNER JOIN smile_user AS su ON su.uid = kotr.agent_id INNER JOIN smile_user AS su ON su.uid = kotr.agent_id
WHERE WHERE
kots.STATUS IN ( 1, 6 ,3 ) kots.STATUS IN (1)
) AS kk ON kot.order_tickets_id = kk.order_id ) AS kk ON kot.order_tickets_id = kk.order_id
WHERE WHERE
kk.agent_id != 0 kk.agent_id != 0
......
...@@ -80,6 +80,30 @@ public class ShowBaseVoDto implements Serializable, Cloneable{ ...@@ -80,6 +80,30 @@ public class ShowBaseVoDto implements Serializable, Cloneable{
*/ */
private BigDecimal totalPrice; private BigDecimal totalPrice;
/**
* 实际销售金额
*/
private BigDecimal realTotalPrice;
/**
* 优惠券金额
*/
private BigDecimal voucherPrice;
/**
* 票面金额
*/
private BigDecimal faceTotalPrice;
/**
* 快递费总金额
*/
private BigDecimal totalPriceExpress;
/**
* 佣金比例
*/
private BigDecimal agentDistributions;
private static final ShowBaseVoDto obj = new ShowBaseVoDto(); private static final ShowBaseVoDto obj = new ShowBaseVoDto();
public static ShowBaseVoDto getNew() { public static ShowBaseVoDto getNew() {
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<select id="getUserOrgByPerIdAndUidAndAgentMaster" resultType="java.util.Map"> <select id="getUserOrgByPerIdAndUidAndAgentMaster" resultType="java.util.Map">
SELECT SELECT
kotr.agent_id_master uid, kotr.agent_id_master uid,
SUM( ( kot.price_actual - kot.price_refund )* kotr.agent_distributions_master ) totalPrice SUM( ( kot.price_actual - kot.price_express )* kotr.agent_distributions_master ) totalPrice
FROM FROM
kylin_order_ticket_relations AS kotr kylin_order_ticket_relations AS kotr
INNER JOIN kylin_order_tickets AS kot ON kot.order_tickets_id = kotr.order_id INNER JOIN kylin_order_tickets AS kot ON kot.order_tickets_id = kotr.order_id
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
kylin_order_ticket_relations AS kotr kylin_order_ticket_relations AS kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id LEFT JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id
WHERE WHERE
kots.STATUS IN ( 1, 6, 3 ) ) kots.STATUS IN (1) )
AND kotr.performance_id = #{performancesId} AND kotr.performance_id = #{performancesId}
AND kotr.ticket_id IN ( AND kotr.ticket_id IN (
SELECT SELECT
...@@ -83,10 +83,15 @@ ...@@ -83,10 +83,15 @@
sukotr.state, sukotr.state,
sukotr.agentName, sukotr.agentName,
kot.price, kot.price,
SUM(kot.price_actual - kot.price_refund) price_real, SUM(kot.price_actual) price_real,
sukotr.agent_distributions AS `use`, sukotr.agent_distributions AS `use`,
SUM( kot.number - kot.refund_number ) number, SUM( kot.number ) number,
SUM( ( kot.price_actual - kot.price_refund ) * sukotr.agent_distributions ) totalPrice SUM( (kot.price_actual - kot.price_express) * sukotr.agent_distributions ) totalPrice,
SUM( (kot.price_actual - kot.price_express) ) realTotalPrice,
SUM( kot.price_voucher ) voucherPrice,
SUM( kot.price_express ) totalPriceExpress,
SUM( kot.price_total - kot.price_express ) faceTotalPrice,
MAX(sukotr.agent_distributions ) agentDistributions
FROM FROM
kylin_order_tickets AS kot kylin_order_tickets AS kot
INNER JOIN ( INNER JOIN (
...@@ -114,7 +119,7 @@ ...@@ -114,7 +119,7 @@
FROM kylin_order_ticket_relations as kotr FROM kylin_order_ticket_relations as kotr
LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id LEFT JOIN kylin_order_ticket_status AS kots ON kotr.order_id = kots.order_id
INNER JOIN smile_user AS su ON su.uid = kotr.agent_id INNER JOIN smile_user AS su ON su.uid = kotr.agent_id
WHERE kots.status IN (1,6,3) WHERE kots.status IN (1)
AND kotr.agent_id != 0 AND kotr.agent_id != 0
AND (kotr.agent_distributions_master !=0 or kotr.agent_distributions!=0) AND (kotr.agent_distributions_master !=0 or kotr.agent_distributions!=0)
AND kotr.performance_id = #{performancesId} AND kotr.performance_id = #{performancesId}
...@@ -122,11 +127,18 @@ ...@@ -122,11 +127,18 @@
) )
AND kotr.performance_id = #{performancesId} AND kotr.performance_id = #{performancesId}
AND (kotr.agent_distributions_master !=0 or kotr.agent_distributions!=0) AND (kotr.agent_distributions_master !=0 or kotr.agent_distributions!=0)
AND kots.`status` IN ( 1, 6 ,3) AND kots.`status` IN (1)
) AS sukotr ON sukotr.order_id = kot.order_tickets_id ) AS sukotr ON sukotr.order_id = kot.order_tickets_id
GROUP BY GROUP BY
sukotr.uid, sukotr.uid,
sukotr.ticket_id sukotr.ticket_id
ORDER BY
CASE sukotr.type
WHEN 2 THEN 1
WHEN 1 THEN 2
WHEN 5 THEN 3
ELSE 4
END
</select> </select>
<update id="upTakeByPerId"> <update id="upTakeByPerId">
......
...@@ -186,7 +186,7 @@ ...@@ -186,7 +186,7 @@
FROM kylin_order_ticket_relations AS kotr FROM kylin_order_ticket_relations AS kotr
INNER JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id INNER JOIN kylin_order_ticket_status AS kots ON kots.order_id = kotr.order_id
WHERE kotr.performance_id = #{performancesId} WHERE kotr.performance_id = #{performancesId}
AND kotr.agent_id != 0 AND kots.status IN (1,6,3)) kk ON su.uid = kk.agent_id_master AND kotr.agent_id != 0 AND kots.status IN (1)) kk ON su.uid = kk.agent_id_master
GROUP BY su.uid GROUP BY su.uid
</select> </select>
......
...@@ -196,7 +196,7 @@ public class AdamEntersController { ...@@ -196,7 +196,7 @@ public class AdamEntersController {
AdamEntersVo enters = adamRdmService.getEntersVoByUidEntersId(currentUid, entersId); AdamEntersVo enters = adamRdmService.getEntersVoByUidEntersId(currentUid, entersId);
if (null == enters) return ResponseDto.failure(ErrorMapping.get("10105")); if (null == enters) return ResponseDto.failure(ErrorMapping.get("10105"));
// adamEntersService.remove(currentUid, entersId); adamEntersService.remove(currentUid, entersId);
return ResponseDto.success(); return ResponseDto.success();
} }
......
...@@ -262,6 +262,12 @@ public class AdamRdmService { ...@@ -262,6 +262,12 @@ public class AdamRdmService {
*/ */
public void identityHandler1(String uid, String name, String idCard) { public void identityHandler1(String uid, String name, String idCard) {
int rst = this.isCertification(1, idCard, name); int rst = this.isCertification(1, idCard, name);
//增加判断逻辑 用户添加的时候先去调自己的库,如果有身份证数据但和名字不匹配的时候,再请求第三方接口去验
if(rst==0){
//本地存在,验证不通过 删除标记
redisUtil.del(AdamRedisConst.INFO_CERTIFICATION + 1 + idCard);
rst=-1;
}
switch (rst) { switch (rst) {
case -1:// 本地不存在 case -1:// 本地不存在
if (this.isCertificationJunk(1, idCard, name)) { if (this.isCertificationJunk(1, idCard, name)) {
...@@ -437,7 +443,7 @@ public class AdamRdmService { ...@@ -437,7 +443,7 @@ public class AdamRdmService {
if (null == vos) { if (null == vos) {
vos = ObjectUtil.getAdamEntersVoArrayList(); vos = ObjectUtil.getAdamEntersVoArrayList();
} }
vos.add(vo); vos.add(0,vo);
return redisUtil.set(AdamRedisConst.INFO_ENTERS + uid, vos); return redisUtil.set(AdamRedisConst.INFO_ENTERS + uid, vos);
} }
......
package com.liquidnet.service.adam.service.impl; package com.liquidnet.service.adam.service.impl;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.exception.LiquidnetServiceException; import com.liquidnet.common.exception.LiquidnetServiceException;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.adam.dto.AdamEntersParam; import com.liquidnet.service.adam.dto.AdamEntersParam;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.service.AdamRdmService; import com.liquidnet.service.adam.service.AdamRdmService;
......
...@@ -18,18 +18,18 @@ ...@@ -18,18 +18,18 @@
10012=\u97F3\u4E50\u98CE\u683C\u6807\u7B7E\u65E0\u6548 10012=\u97F3\u4E50\u98CE\u683C\u6807\u7B7E\u65E0\u6548
10013=\u8D26\u53F7\u4E0E\u5BC6\u7801\u4E0D\u5339\u914D 10013=\u8D26\u53F7\u4E0E\u5BC6\u7801\u4E0D\u5339\u914D
10014=\u7F16\u8F91\u65E0\u6548 10014=\u7F16\u8F91\u65E0\u6548
10015=\u5165\u573A\u4EBAID\u4E0D\u80FD\u4E3A\u7A7A 10015=\u89C2\u6F14\u4EBAID\u4E0D\u80FD\u4E3A\u7A7A
10016=\u6536\u8D27\u5730\u5740ID\u4E0D\u80FD\u4E3A\u7A7A 10016=\u6536\u8D27\u5730\u5740ID\u4E0D\u80FD\u4E3A\u7A7A
10017=\u5165\u573A\u4EBA\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E 10017=\u89C2\u6F14\u4EBA\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E
10018=\u6536\u8D27\u5730\u5740\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E 10018=\u6536\u8D27\u5730\u5740\u4E0D\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E
10019=\u5165\u573A\u4EBA\u5DF2\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E 10019=\u89C2\u6F14\u4EBA\u5DF2\u5B58\u5728\uFF0C\u8BF7\u6838\u5B9E
10020=\u6635\u79F0\u4E0D\u5408\u89C4 10020=\u6635\u79F0\u4E0D\u5408\u89C4
10021=\u7B7E\u540D\u4E0D\u5408\u89C4 10021=\u7B7E\u540D\u4E0D\u5408\u89C4
10022=\u5934\u50CF\u4E0D\u5408\u89C4 10022=\u5934\u50CF\u4E0D\u5408\u89C4
10023=\u80CC\u666F\u56FE\u4E0D\u5408\u89C4 10023=\u80CC\u666F\u56FE\u4E0D\u5408\u89C4
10024=\u8BE5\u8D26\u53F7\u5DF2\u88AB\u4E3B\u52A8\u6CE8\u9500 10024=\u8BE5\u8D26\u53F7\u5DF2\u88AB\u4E3B\u52A8\u6CE8\u9500
10025=\u5165\u573A\u4EBA\u5DF2\u8FBE\u4E0A\u9650 10025=\u89C2\u6F14\u4EBA\u5DF2\u8FBE\u4E0A\u9650
10026=\u5165\u573A\u4EBA\u4ECA\u65E5\u64CD\u4F5C\u5DF2\u8FBE\u4E0A\u9650 10026=\u89C2\u6F14\u4EBA\u4ECA\u65E5\u64CD\u4F5C\u5DF2\u8FBE\u4E0A\u9650
10027=\u670D\u52A1\u5347\u7EA7\uFF0C\u6682\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C 10027=\u670D\u52A1\u5347\u7EA7\uFF0C\u6682\u4E0D\u652F\u6301\u8BE5\u64CD\u4F5C
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
10102=\u8EAB\u4EFD\u8BC1\u53F7\u4E0E\u59D3\u540D\u4E0D\u7B26 10102=\u8EAB\u4EFD\u8BC1\u53F7\u4E0E\u59D3\u540D\u4E0D\u7B26
10103=\u8EAB\u4EFD\u8BC1\u59D3\u540D\u4E0D\u5408\u89C4 10103=\u8EAB\u4EFD\u8BC1\u59D3\u540D\u4E0D\u5408\u89C4
10104=\u8EAB\u4EFD\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4 10104=\u8EAB\u4EFD\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4
10105=\u5165\u573A\u4EBA\u4E0D\u5B58\u5728 10105=\u89C2\u6F14\u4EBA\u4E0D\u5B58\u5728
10106=\u6536\u83B7\u5730\u5740\u4E0D\u5B58\u5728 10106=\u6536\u83B7\u5730\u5740\u4E0D\u5B58\u5728
10107=\u6E2F\u6FB3\u5C45\u6C11\u6765\u5F80\u5185\u5730\u901A\u884C\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4 10107=\u6E2F\u6FB3\u5C45\u6C11\u6765\u5F80\u5185\u5730\u901A\u884C\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4
10108=\u53F0\u6E7E\u5C45\u6C11\u6765\u5F80\u5927\u9646\u901A\u884C\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4 10108=\u53F0\u6E7E\u5C45\u6C11\u6765\u5F80\u5927\u9646\u901A\u884C\u8BC1\u53F7\u7801\u4E0D\u5408\u89C4
......
...@@ -350,9 +350,11 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin ...@@ -350,9 +350,11 @@ public abstract class AbstractOrderCloseReceiver implements StreamListener<Strin
ArrayList<KylinOrderCoupons> orderCoupons = kylinOrderUtils.getOrderCoupon(kylinOrderTicketVo.getOrderTicketsId()); ArrayList<KylinOrderCoupons> orderCoupons = kylinOrderUtils.getOrderCoupon(kylinOrderTicketVo.getOrderTicketsId());
if (orderCoupons.size() > 0) { if (orderCoupons.size() > 0) {
for (KylinOrderCoupons item : orderCoupons) { for (KylinOrderCoupons item : orderCoupons) {
if (item.getCouponType() != 101) { /*if (item.getCouponType() != 101) {
kylinOrderUtils.backCoupon(item.getCouponCode(), kylinOrderTicketVo.getUserId()); kylinOrderUtils.backCoupon(item.getCouponCode(), kylinOrderTicketVo.getUserId());
} }*/
//所有卷都退
kylinOrderUtils.backCoupon(item.getCouponCode(), kylinOrderTicketVo.getUserId());
} }
} }
......
...@@ -99,9 +99,9 @@ public class KylinOrderTicketsRefundServiceImpl { ...@@ -99,9 +99,9 @@ public class KylinOrderTicketsRefundServiceImpl {
if (item.getEnterIdCode().length() == 18) { if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16)); item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
} }
if (item.getEnterMobile().length() == 11) { // if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7)); // item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
} // }
item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber()), 2, BigDecimal.ROUND_HALF_UP)); item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber()), 2, BigDecimal.ROUND_HALF_UP));
item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId())); item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId()));
// 手续费处理 TODO 手续费计算改成 按照实付金额计算 // 手续费处理 TODO 手续费计算改成 按照实付金额计算
......
...@@ -3,7 +3,6 @@ package com.liquidnet.service.kylin.service.impl; ...@@ -3,7 +3,6 @@ package com.liquidnet.service.kylin.service.impl;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo; import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.base.ErrorMapping; import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
...@@ -11,10 +10,10 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -11,10 +10,10 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.KylinFieldsVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo; import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.returns.*; import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService; import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
...@@ -252,9 +251,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -252,9 +251,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (item.getEnterIdCode().length() == 18) { if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16)); item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
} }
if (item.getEnterMobile().length() == 11) { // if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7)); // item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
} // }
} }
//计算 倒计时 //计算 倒计时
...@@ -322,6 +321,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -322,6 +321,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} else { } else {
vo.setIsCanRefund(0); vo.setIsCanRefund(0);
} }
//是否可转 //是否可转
if (null != performanceVo.getIsTransfer() && performanceVo.getIsTransfer() == 1) { if (null != performanceVo.getIsTransfer() && performanceVo.getIsTransfer() == 1) {
LocalDateTime transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferStartTime()); LocalDateTime transferStartTime = DateUtil.Formatter.yyyyMMddHHmmss.parse(performanceVo.getTransferStartTime());
...@@ -367,6 +367,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -367,6 +367,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
vo.setEnterDescribe(dataUtils.getEnterInfo(performanceVo.getType(), orderTicketVo.getGetTicketType(), orderTicketVo.getIsStudent(), ticketVo.getIsTrueName())); vo.setEnterDescribe(dataUtils.getEnterInfo(performanceVo.getType(), orderTicketVo.getGetTicketType(), orderTicketVo.getIsStudent(), ticketVo.getIsTrueName()));
// 添加 优惠券相关 // 添加 优惠券相关
vo.setOrderCouponsList(dataUtils.getOrderCoupon(orderId)); vo.setOrderCouponsList(dataUtils.getOrderCoupon(orderId));
//联系方式
vo.setUserMobile(orderTicketVo.getUserMobile());
} }
log.info(UserPathDto.setData("订单详情", orderId, vo)); log.info(UserPathDto.setData("订单详情", orderId, vo));
return vo; return vo;
...@@ -376,6 +379,16 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -376,6 +379,16 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
} }
} }
private boolean isSingleTicket(String ticketsId) {
KylinTicketPartnerVo kylinTicketPartnerVo = dataUtils.getKylinTicketPartnerVoByTicketId(ticketsId);
if (null != kylinTicketPartnerVo && null != kylinTicketPartnerVo.getViewersNumber()) {
return kylinTicketPartnerVo.getViewersNumber() == 1;
}else {
log.info("[isSingleTicket] 票信息为空, ticketsId: {}", ticketsId);
return false;
}
}
@Override @Override
public ResponseDto<Integer> orderUnPayCount() { public ResponseDto<Integer> orderUnPayCount() {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
...@@ -1036,9 +1049,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService { ...@@ -1036,9 +1049,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
if (item.getEnterIdCode().length() == 18) { if (item.getEnterIdCode().length() == 18) {
item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16)); item.setEnterIdCode(item.getEnterIdCode().substring(0, 3) + "*************" + item.getEnterIdCode().substring(16));
} }
if (item.getEnterMobile().length() == 11) { // if (item.getEnterMobile().length() == 11) {
item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7)); // item.setEnterMobile(item.getEnterMobile().substring(0, 3) + "****" + item.getEnterMobile().substring(7));
} // }
item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber()))); item.setPriceActual(orderTicketVo.getPriceActual().subtract(orderTicketVo.getPriceExpress()).divide(BigDecimal.valueOf(orderTicketVo.getNumber())));
item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId())); item.setPriceCanRefund(dataUtils.getCanRefundOrderEntitiesPrice(orderTicketVo, kylinOrderRefundsVoBaseList, item.getOrderTicketEntitiesId()));
BeanUtils.copyProperties(item, refundVo); BeanUtils.copyProperties(item, refundVo);
......
...@@ -537,10 +537,30 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService { ...@@ -537,10 +537,30 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
payDetailVo.setPerformanceInfo(performancesInfo); payDetailVo.setPerformanceInfo(performancesInfo);
payDetailVo.setTicketInfo(ticketVo); payDetailVo.setTicketInfo(ticketVo);
// 设置票观演人数量
payDetailVo.setViewersNumber(getViewersNumberByTicketsId(ticketsId));
//设置默认手机号
Map token = CurrentUtil.getTokenClaims();
payDetailVo.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
log.info(UserPathDto.setData("预支付演出票种详情", "performancesId=" + performancesId + " ticketsId=" + ticketsId, payDetailVo)); log.info(UserPathDto.setData("预支付演出票种详情", "performancesId=" + performancesId + " ticketsId=" + ticketsId, payDetailVo));
return payDetailVo; return payDetailVo;
} }
/**
* 设置观演人数量
* @param ticketsId
*/
private Integer getViewersNumberByTicketsId(String ticketsId) {
List<KylinTicketPartnerVo> voTickets = mongoTemplate.find(Query.query(Criteria.where("ticketsId").is(ticketsId)),
KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
if (voTickets.isEmpty()) {
return 0;
}
return voTickets.get(0).getViewersNumber();
}
public List<KylinPerformanceVo> checkAppStatus(List<KylinPerformanceVo> list) { public List<KylinPerformanceVo> checkAppStatus(List<KylinPerformanceVo> list) {
List<KylinPerformanceVo> newList = ObjectUtil.getKylinPerformanceVoArrayList(); List<KylinPerformanceVo> newList = ObjectUtil.getKylinPerformanceVoArrayList();
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
......
...@@ -22,6 +22,7 @@ import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo; ...@@ -22,6 +22,7 @@ import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressRouteVo;
import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo; import com.liquidnet.service.kylin.dto.vo.express.KylinOrderExpressVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*; import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketExpressModuleVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.dto.vo.returns.NoticeKylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.returns.NoticeKylinPerformanceVo;
...@@ -1595,4 +1596,10 @@ public class DataUtils { ...@@ -1595,4 +1596,10 @@ public class DataUtils {
return (int) obj; return (int) obj;
} }
} }
public KylinTicketPartnerVo getKylinTicketPartnerVoByTicketId(String ticketId) {
return mongoTemplate.findOne(Query.query(Criteria.where("ticketsId").is(ticketId)),
KylinTicketPartnerVo.class,
KylinTicketPartnerVo.class.getSimpleName());
}
} }
...@@ -21,6 +21,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo; ...@@ -21,6 +21,7 @@ import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo; import com.liquidnet.service.kylin.dto.vo.returns.PayInnerResultVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo; import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
...@@ -337,7 +338,18 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -337,7 +338,18 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid); orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid);
return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名 return ResponseDto.failure(ErrorMapping.get("20015"));//需要实名 未实名
} }
if (isTrueName == 1 && entersVoList.size() != payOrderParam.getNumber()) {
// 根据票ID获取观演人数量
KylinTicketPartnerVo ticketPartnerVo = mongoTemplate.findOne(Query
.query(Criteria.where("ticketsId").is(payOrderParam.getTicketId())),
KylinTicketPartnerVo.class,
KylinTicketPartnerVo.class.getSimpleName());
int num = payOrderParam.getNumber();
if (ticketPartnerVo != null && ticketPartnerVo.getViewersNumber() != null) {
num = num * ticketPartnerVo.getViewersNumber();
}
if (isTrueName == 1 && entersVoList.size() != num) {
orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid); orderUtils.backAdvanceCoupon(payOrderParam.getAdvanceCode(), uid);
return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误 return ResponseDto.failure(ErrorMapping.get("20015"));//入场人数量错误
} }
...@@ -445,7 +457,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ ...@@ -445,7 +457,12 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
orderTickets.setUserId(uid); orderTickets.setUserId(uid);
Map token = CurrentUtil.getTokenClaims(); Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), "")); orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), "")); if(!StringUtil.isEmpty(payOrderParam.getUserMobile())){
orderTickets.setUserMobile(payOrderParam.getUserMobile());
}else {
//默认联系方式
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
}
orderTickets.setPerformanceTitle(performanceData.getTitle()); orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(orderCode); orderTickets.setOrderCode(orderCode);
orderTickets.setPayCode(""); orderTickets.setPayCode("");
......
...@@ -277,4 +277,8 @@ create table kylin_ticket_express_module ...@@ -277,4 +277,8 @@ create table kylin_ticket_express_module
ALTER TABLE kylin_performance_status ALTER TABLE kylin_performance_status
ADD id_count int DEFAULT NULL COMMENT '实名限购数'; ADD id_count int DEFAULT NULL COMMENT '实名限购数';
ALTER TABLE kylin_ticket_status ALTER TABLE kylin_ticket_status
ADD id_count int DEFAULT NULL COMMENT '实名限购数'; ADD id_count int DEFAULT NULL COMMENT '实名限购数';
\ No newline at end of file
ALTER TABLE kylin_tickets
ADD viewers_number int(11) comment '观演人数量';
\ No newline at end of file
...@@ -36,6 +36,7 @@ public class KylinTicketsPartnerController { ...@@ -36,6 +36,7 @@ public class KylinTicketsPartnerController {
@ApiOperation(value = "创建票务",position = 1 ) @ApiOperation(value = "创建票务",position = 1 )
@ApiResponse(response = KylinTicketPartnerVo.class, code = 200, message = "接口返回对象参数") @ApiResponse(response = KylinTicketPartnerVo.class, code = 200, message = "接口返回对象参数")
public ResponseDto<KylinTicketPartnerVo> createTicketSummary(@RequestBody @Valid TicketCreateParam ticketCreateParam) { public ResponseDto<KylinTicketPartnerVo> createTicketSummary(@RequestBody @Valid TicketCreateParam ticketCreateParam) {
ticketCreateParam.setViewersNumber(1);
return ticketsPartnerService.createTicketSummary(ticketCreateParam); return ticketsPartnerService.createTicketSummary(ticketCreateParam);
} }
...@@ -43,6 +44,7 @@ public class KylinTicketsPartnerController { ...@@ -43,6 +44,7 @@ public class KylinTicketsPartnerController {
@ApiOperation(value = "修改票务",position = 2) @ApiOperation(value = "修改票务",position = 2)
@ApiResponse(response = KylinTicketPartnerVo.class, code = 200, message = "接口返回对象参数") @ApiResponse(response = KylinTicketPartnerVo.class, code = 200, message = "接口返回对象参数")
public ResponseDto<KylinTicketPartnerVo> updateTicket(@RequestBody @Valid TicketCreateParam ticketCreateParam) { public ResponseDto<KylinTicketPartnerVo> updateTicket(@RequestBody @Valid TicketCreateParam ticketCreateParam) {
ticketCreateParam.setViewersNumber(1);
return ticketsPartnerService.updateTicket(ticketCreateParam); return ticketsPartnerService.updateTicket(ticketCreateParam);
} }
......
...@@ -445,7 +445,7 @@ public class KylinPerformancesPartnerServiceImpl implements IKylinPerformancesPa ...@@ -445,7 +445,7 @@ public class KylinPerformancesPartnerServiceImpl implements IKylinPerformancesPa
sqlsDataC.add(new Object[]{ sqlsDataC.add(new Object[]{
DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeEnd()), DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeStart()), DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeEnd()), DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeStart()),
DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeEndExpress()), kylinPerformanceMisVo.getPayCountdownMinute(), DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketItem.getTimeEndExpress()), kylinPerformanceMisVo.getPayCountdownMinute(),
ticketItem.getPrice(), ticketItem.getTicketsId(), now, now ticketItem.getPrice(), ticketItem.getViewersNumber(), ticketItem.getTicketsId(), now, now
}); });
//修改 mysql 购票限购、库存 //修改 mysql 购票限购、库存
sqlsDataD.add(new Object[]{ sqlsDataD.add(new Object[]{
......
...@@ -124,10 +124,14 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi ...@@ -124,10 +124,14 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi
kylinTicketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); kylinTicketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
} }
// 根据票种类别设置观演人数量
putViewersNumber(ticketCreateParam, kylinTicketPartnerVo);
mongoSlimeUtils.insertTicketPartnerVo(kylinTicketPartnerVo); mongoSlimeUtils.insertTicketPartnerVo(kylinTicketPartnerVo);
return ResponseDto.success(kylinTicketPartnerVo); return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); //e.printStackTrace();
log.error("error", e);
log.info(UserPathDto.setPartnerData("0", "createTicket", ticketCreateParam, e)); log.info(UserPathDto.setPartnerData("0", "createTicket", ticketCreateParam, e));
return ResponseDto.failure(ErrorMapping.get(20105)); return ResponseDto.failure(ErrorMapping.get(20105));
} }
...@@ -185,14 +189,21 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi ...@@ -185,14 +189,21 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi
kylinTicketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); kylinTicketPartnerVo.setQrCodeShowTime(ticketCreateParam.getQrCodeShowTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
} }
putViewersNumber(ticketCreateParam, kylinTicketPartnerVo);
mongoSlimeUtils.insertTicketPartnerVo(kylinTicketPartnerVo); mongoSlimeUtils.insertTicketPartnerVo(kylinTicketPartnerVo);
return ResponseDto.success(kylinTicketPartnerVo); return ResponseDto.success(kylinTicketPartnerVo);
} catch (Exception e) { } catch (Exception e) {
log.error("error", e);
log.info(UserPathDto.setPartnerData("0", "addNewTicket", ticketCreateParam, e)); log.info(UserPathDto.setPartnerData("0", "addNewTicket", ticketCreateParam, e));
return ResponseDto.failure(ErrorMapping.get(20101)); return ResponseDto.failure(ErrorMapping.get(20101));
} }
} }
private void putViewersNumber(TicketCreateParam ticketCreateParam, KylinTicketPartnerVo kylinTicketPartnerVo) {
kylinTicketPartnerVo.setViewersNumber(ticketCreateParam.getViewersNumber());
}
@Override @Override
public ResponseDto<KylinTicketPartnerVo> updateTicket(TicketCreateParam ticketCreateParam) { public ResponseDto<KylinTicketPartnerVo> updateTicket(TicketCreateParam ticketCreateParam) {
try { try {
...@@ -240,12 +251,16 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi ...@@ -240,12 +251,16 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi
kylinTicketPartnerVo.setQrCodeShowTime("2030-01-01 12:00:00"); kylinTicketPartnerVo.setQrCodeShowTime("2030-01-01 12:00:00");
} }
// 根据票种类别设置观演人数量
putViewersNumber(ticketCreateParam, kylinTicketPartnerVo);
mongoSlimeUtils.updateTicketPartnerVo(kylinTicketPartnerVo); mongoSlimeUtils.updateTicketPartnerVo(kylinTicketPartnerVo);
// KylinTicketPartnerVo kylinTicketPartnerVoData = JsonUtils.fromJson(doc.toJson(), KylinTicketPartnerVo.class); // KylinTicketPartnerVo kylinTicketPartnerVoData = JsonUtils.fromJson(doc.toJson(), KylinTicketPartnerVo.class);
log.info(UserPathDto.setPartnerData("0", "updateTicket", ticketCreateParam, "SUCCESS")); log.info(UserPathDto.setPartnerData("0", "updateTicket", ticketCreateParam, "SUCCESS"));
return ResponseDto.success(null); return ResponseDto.success(null);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); //e.printStackTrace();
log.error("error", e);
log.info(UserPathDto.setPartnerData("0", "updateTicket", ticketCreateParam, e)); log.info(UserPathDto.setPartnerData("0", "updateTicket", ticketCreateParam, e));
return ResponseDto.failure(ErrorMapping.get(20103)); return ResponseDto.failure(ErrorMapping.get(20103));
} }
...@@ -463,26 +478,41 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi ...@@ -463,26 +478,41 @@ public class KylinTicketsPartnerServiceImpl implements IKylinTicketsPartnerServi
private boolean judgeTEM(String ticketId, int expressType, List<String> expressModuleIdList) { private boolean judgeTEM(String ticketId, int expressType, List<String> expressModuleIdList) {
if (expressType != 0) {//无类型 if (expressType != 0) {//无类型
if (expressModuleIdList.size() == 0) {
return false; List<ExpressModuleVo> voList = new ArrayList<>();
}
KylinTicketExpressModuleVo expressModuleVo = KylinTicketExpressModuleVo.getNew();
expressModuleVo.setTicketId(ticketId);
List<ExpressModuleVo> voList = new ArrayList();
List<KylinExpressModuleVo> kylinExpressModuleVoList = redisSlimeUtils.expressList(); List<KylinExpressModuleVo> kylinExpressModuleVoList = redisSlimeUtils.expressList();
for (String produceCode : expressModuleIdList) {
// 包邮
if (expressType == 3) {
for (KylinExpressModuleVo item2 : kylinExpressModuleVoList) { for (KylinExpressModuleVo item2 : kylinExpressModuleVoList) {
if (item2.getProductCode().toString().equals(produceCode)) { ExpressModuleVo vo = ExpressModuleVo.getNew();
ExpressModuleVo vo = ExpressModuleVo.getNew(); vo.setProductCode(item2.getProductCode().toString());
vo.setProductCode(item2.getProductCode().toString()); vo.setTitle(item2.getTitle());
vo.setTitle(item2.getTitle()); vo.setEstimatePriceMin(item2.getEstimatePriceMin());
vo.setEstimatePriceMin(item2.getEstimatePriceMin()); vo.setEstimatePriceMax(item2.getEstimatePriceMax());
vo.setEstimatePriceMax(item2.getEstimatePriceMax()); voList.add(vo);
voList.add(vo); }
break; }else {
if(expressModuleIdList.isEmpty()) {
log.error("[judgeTEM] expressType: {}, expressModuleIdList: {}", expressType, expressModuleIdList);
return false;
}
for (String produceCode : expressModuleIdList) {
for (KylinExpressModuleVo item2 : kylinExpressModuleVoList) {
if (item2.getProductCode().toString().equals(produceCode)) {
ExpressModuleVo vo = ExpressModuleVo.getNew();
vo.setProductCode(item2.getProductCode().toString());
vo.setTitle(item2.getTitle());
vo.setEstimatePriceMin(item2.getEstimatePriceMin());
vo.setEstimatePriceMax(item2.getEstimatePriceMax());
voList.add(vo);
break;
}
} }
} }
} }
KylinTicketExpressModuleVo expressModuleVo = KylinTicketExpressModuleVo.getNew();
expressModuleVo.setTicketId(ticketId);
expressModuleVo.setProduceCodeList(voList); expressModuleVo.setProduceCodeList(voList);
redisSlimeUtils.setTEMMerchantVo(ticketId, expressModuleVo); redisSlimeUtils.setTEMMerchantVo(ticketId, expressModuleVo);
} }
......
...@@ -43,7 +43,7 @@ kylin_performances_reject_txt.fieldsStatus = UPDATE kylin_performances SET rejec ...@@ -43,7 +43,7 @@ kylin_performances_reject_txt.fieldsStatus = UPDATE kylin_performances SET rejec
# ---- \u6F14\u51FA\u7B2C\u4E8C\u6B65\u9AA4\u64CD\u4F5C ---- # ---- \u6F14\u51FA\u7B2C\u4E8C\u6B65\u9AA4\u64CD\u4F5C ----
kylin_performance.updateStep2=UPDATE kylin_performances SET audit_time = ? , notice_image = ? WHERE performances_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_performance.updateStep2=UPDATE kylin_performances SET audit_time = ? , notice_image = ? WHERE performances_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_performance_status.updateStep2=UPDATE kylin_performance_status SET field_audit_status = ? ,audit_status = ? , is_true_name = ? , limit_count = ?,id_count =? WHERE performance_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_performance_status.updateStep2=UPDATE kylin_performance_status SET field_audit_status = ? ,audit_status = ? , is_true_name = ? , limit_count = ?,id_count =? WHERE performance_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_ticket.updateStep2=UPDATE kylin_tickets SET time_end = ? , time_start = ? ,time_end_express = ? ,pay_countdown_minute = ? ,price = ? WHERE tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_ticket.updateStep2=UPDATE kylin_tickets SET time_end = ? , time_start = ? ,time_end_express = ? ,pay_countdown_minute = ? ,price = ?, viewers_number = ? WHERE tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_ticket_status.updateStep2=UPDATE kylin_ticket_status SET total_exchange = ? , total_general = ? , is_true_name = ? , limit_count = ? ,id_count =? , is_lack_register = ? , is_express = ? , is_electronic = ? ,counts = ? , is_show_code = ? ,qr_code_show_time = ? WHERE ticket_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_ticket_status.updateStep2=UPDATE kylin_ticket_status SET total_exchange = ? , total_general = ? , is_true_name = ? , limit_count = ? ,id_count =? , is_lack_register = ? , is_express = ? , is_electronic = ? ,counts = ? , is_show_code = ? ,qr_code_show_time = ? WHERE ticket_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
# ---- VoStatus ---- # ---- VoStatus ----
kylin_ticket_status.VoStatus=UPDATE kylin_ticket_status SET status = ?, surplus_general = ? WHERE ticket_id = ? and (updated_at <= ? or created_at = ? or updated_at is null) kylin_ticket_status.VoStatus=UPDATE kylin_ticket_status SET status = ?, surplus_general = ? WHERE ticket_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
...@@ -67,7 +67,7 @@ kylin_tickets.del=DELETE FROM kylin_tickets WHERE tickets_id = ? ...@@ -67,7 +67,7 @@ kylin_tickets.del=DELETE FROM kylin_tickets WHERE tickets_id = ?
kylin_ticket_status.del=DELETE FROM kylin_ticket_status WHERE ticket_id = ? kylin_ticket_status.del=DELETE FROM kylin_ticket_status WHERE ticket_id = ?
kylin_ticket_relations.del=DELETE FROM kylin_ticket_relations WHERE ticket_id = ? kylin_ticket_relations.del=DELETE FROM kylin_ticket_relations WHERE ticket_id = ?
kylin_tickets.insert=INSERT INTO kylin_tickets (tickets_id,title,type,price,price_express,price_discount_member,price_discount,describes,describe_express,describe_electronic,advance_minute_member,time_start,time_end,time_end_express,use_start,use_end,pay_countdown_minute,sale_remind_minute,comment,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) kylin_tickets.insert=INSERT INTO kylin_tickets (tickets_id,title,type,price,price_express,price_discount_member,price_discount,describes,describe_express,describe_electronic,advance_minute_member,time_start,time_end,time_end_express,use_start,use_end,pay_countdown_minute,sale_remind_minute,viewers_number,comment,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_ticket_status.insert=INSERT INTO kylin_ticket_status (ticket_status_id,ticket_id,is_student,is_electronic,is_express,status,counts,status_exchange,is_show_code,qr_code_show_time,is_lack_register,total_general,total_exchange,surplus_general,surplus_exchange,express_type,is_transfer,is_true_name,limit_count,id_count,member_limit_count,is_exclusive,is_member,is_agent,sync_damai,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) kylin_ticket_status.insert=INSERT INTO kylin_ticket_status (ticket_status_id,ticket_id,is_student,is_electronic,is_express,status,counts,status_exchange,is_show_code,qr_code_show_time,is_lack_register,total_general,total_exchange,surplus_general,surplus_exchange,express_type,is_transfer,is_true_name,limit_count,id_count,member_limit_count,is_exclusive,is_member,is_agent,sync_damai,created_at,updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_ticket_relations.insert=INSERT INTO kylin_ticket_relations (ticket_relations_id,ticket_id,times_id,created_at,updated_at) VALUES (?,?,?,?,?) kylin_ticket_relations.insert=INSERT INTO kylin_ticket_relations (ticket_relations_id,ticket_id,times_id,created_at,updated_at) VALUES (?,?,?,?,?)
......
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