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

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

Merge remote-tracking branch 'origin/new_member' into pre

parents 047c734f 49c7f65e
......@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.constant;
public class AdamRedisConst {
public static final String PREFIX = "adam:";
public static final String LIB_DICT_LOCATE_MOBILE = PREFIX.concat("lib_dict:locate_mobile:");
public static final String VALID_SMS_CODE_MOBILE = PREFIX.concat("valid:sms:code:mobile");
public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:");
......
......@@ -31,7 +31,8 @@ public class AdamMemberBuildParam implements Serializable {
private String avatar;
@ApiModelProperty(required = true, value = "弹窗文案[200]", example = "加入摩登天空会员您可享受到.....")
@NotBlank(message = "弹窗文案不能为空")
private String interestsDetail;
// private String interestsDetail;
private String noticeInfo;
@ApiModelProperty(required = true, value = "注意事项[200]", example = "摩登天空会员需注意以下事项.....")
@NotBlank(message = "注意事项不能为空")
private String notes;
......
......@@ -36,6 +36,7 @@ public class KylinRedisConst {
public static final String ORDER_REFUND_ADDRESS = "kylin:order:refund:address";
// 手续费
public static final String ORDER_REFUND_POUNDAGE = "kylin:order:poundage";
public static final String ORDER_REFUND_POUNDAGE_EXPLAIN = "kylin:order:poundageExplain";
public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
......
......@@ -6,9 +6,12 @@ import lombok.Data;
import java.math.BigDecimal;
/**
* @version V1.0
* @class: OrderRefundPoundage
* @Copyright: LightNet @ Copyright (c) 2021
* <p>
* 退款手续费说明
* </p>
*
* @author jiangxiulong
* @since 2021-10-13
*/
@Data
public class OrderRefundPoundage implements Cloneable {
......
package com.liquidnet.service.kylin.dto.vo.admin;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* <p>
* 退款手续费说明
* </p>
*
* @author jiangxiulong
* @since 2021-10-13
*/
@Data
public class OrderRefundPoundageAll implements Serializable, Cloneable {
private static final long serialVersionUID = -5077177070181399707L;
@ApiModelProperty(value = "特殊说明")
private String explain;
@ApiModelProperty(value = "手续费列表")
private List<OrderRefundPoundage> orderRefundPoundageList;
private static final OrderRefundPoundageAll obj = new OrderRefundPoundageAll();
public static OrderRefundPoundageAll getNew() {
try {
return (OrderRefundPoundageAll) obj.clone();
} catch (CloneNotSupportedException e) {
return new OrderRefundPoundageAll();
}
}
}
......@@ -28,6 +28,8 @@ import java.util.List;
@ApiModel
public class KylinOrderRefundsVo implements Serializable,Cloneable {
private static final long serialVersionUID = 268172565273929795L;
@ApiModelProperty(value = "主键ID")
private String orderRefundsId;
......@@ -167,10 +169,10 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable {
this.statusName = "退款失败";
break;
case 7:
this.statusName = "二审通过等待退款";
this.statusName = "财务通过等待退款";
break;
case 8:
this.statusName = "二审驳回退款";
this.statusName = "财务驳回退款";
break;
default:
this.statusName = "其他";
......
package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.admin.OrderRefundPoundageAll;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
......@@ -43,7 +44,7 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable {
private BigDecimal priceRefund;
@ApiModelProperty(value = "退款张数")
private Integer refundNumber;
@ApiModelProperty(value = "是否使用优惠 exchange/no")
@ApiModelProperty(value = "是否使用优惠 exchange/no")
private String couponType;
@ApiModelProperty(value = "取票方式 电子票electronic快递票express")
private String getTicketType;
......@@ -89,12 +90,15 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable {
private Integer isRefundExpress;
@ApiModelProperty(value = "手续费规则列表")
private ArrayList<OrderRefundPoundage> refundPoundageList;
private OrderRefundPoundageAll refundPoundageAll;
@ApiModelProperty(value = "订单使用优惠券列表")
private ArrayList<KylinOrderCoupons> orderCouponList;
@ApiModelProperty(value = "退款快递统一寄回地址")
private OrderRefundAddress refundAddress;
@ApiModelProperty(value = "快递状态")
private Integer expressStatus;
private static final KylinOrderTicketPreVo obj = new KylinOrderTicketPreVo();
public static KylinOrderTicketPreVo getNew() {
......
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.client.admin.common.annotation.Log;
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.entity.SysUser;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberAdminService;
......@@ -32,6 +33,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
......@@ -88,7 +90,7 @@ public class AdamMemberAdminController extends BaseController {
AdamMember::getLimitation,
AdamMember::getLimitbAt,
AdamMember::getLimiteAt,
AdamMember::getInterestsDetail,
AdamMember::getNoticeInfo,
AdamMember::getNotes,
AdamMember::getType,
AdamMember::getOnsale,
......@@ -137,6 +139,14 @@ public class AdamMemberAdminController extends BaseController {
return prefix + "/info";
}
@RequiresPermissions("adam:member:edit:onsale")
@Log(title = "会员管理:会员卡编辑:开售停售", businessType = BusinessType.UPDATE)
@PostMapping("edit_onsale")
@ResponseBody
public AjaxResult editOnsale(AdamMemberBuildParam parameter) {
return this.toAjax(adamMemberService.edit(parameter));
}
@ApiOperation(value = "会员设置:基础信息编辑")
@RequiresPermissions("adam:member:edit:basic")
@Log(title = "会员管理:会员卡编辑:基础信息", businessType = BusinessType.UPDATE)
......
package com.liquidnet.client.admin.web.controller.zhengzai.candy;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
......@@ -9,9 +8,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.candy.dto.CandyCouponCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyUserCouponAdminService;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
......@@ -21,6 +22,7 @@ import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeListParam;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam;
import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -42,6 +44,8 @@ public class CandyCouponCodeAdminController extends BaseController {
private RedisUtil redisUtil;
@Autowired
private ICandyCouponCodeAdminService candyCouponCodeAdminService;
@Autowired
private ICandyUserCouponAdminService candyUserCouponAdminService;
@GetMapping()
public String view(@RequestParam String couponId, ModelMap mmap) {
......@@ -65,6 +69,7 @@ public class CandyCouponCodeAdminController extends BaseController {
.select(
CandyCouponCode::getCcode,
CandyCouponCode::getCouponId,
CandyCouponCode::getUcouponId,
CandyCouponCode::getRedeemMobile,
CandyCouponCode::getState
);
......@@ -142,13 +147,13 @@ public class CandyCouponCodeAdminController extends BaseController {
return AjaxResult.warn("无效传参");
}
String couponId = optParam.getCouponId();
List<String> ccodes = optParam.getCcodes();
if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ccodes)) {
List<String> ucouponIds = optParam.getUcouponIds();
if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ucouponIds)) {
return AjaxResult.warn("参数无效");
}
LambdaQueryWrapper<CandyCouponCode> couponCodeLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCouponCode.class);
couponCodeLambdaQueryWrapper.in(CandyCouponCode::getCcode, ccodes);
couponCodeLambdaQueryWrapper.in(CandyCouponCode::getUcouponId, ucouponIds);
couponCodeLambdaQueryWrapper.eq(CandyCouponCode::getCouponId, couponId);
List<CandyCouponCode> list = candyCouponCodeAdminService.list(couponCodeLambdaQueryWrapper);
......@@ -158,34 +163,39 @@ public class CandyCouponCodeAdminController extends BaseController {
List<CandyUserCouponBasicDto> vos = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey);
if (!CollectionUtils.isEmpty(vos)) {
CandyUserCouponBasicDto userCouponBasicDto = vos.stream().filter(v -> v.getCouponId().equals(couponId)).findAny().orElse(null);
vos.removeIf(rv -> rv.getUcouponId().equals(r.getUcouponId()));
}
if (null != userCouponBasicDto && userCouponBasicDto.getState() == 1) {
String cckey = CandyRedisConst.BASIC_COUPON_CODE.concat(r.getCcode());
CandyCouponCodeDto dto = (CandyCouponCodeDto) redisUtil.get(cckey);
ccodeUpdateList.add(r.getUcouponId());
});
if (null != dto && dto.getState() == 1) {
dto.setState(5);
redisUtil.set(cckey, dto);
if (!CollectionUtils.isEmpty(ccodeUpdateList)) {
LocalDateTime now = LocalDateTime.now();
String loginName = ShiroUtils.getLoginName(), comment = "RECOVER";
vos.removeIf(vr -> vr.getCouponId().equals(couponId));
redisUtil.set(uckey, vos);
LambdaUpdateWrapper<CandyUserCoupon> userCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyUserCoupon.class);
userCouponLambdaUpdateWrapper.in(CandyUserCoupon::getUcouponId, ccodeUpdateList);
userCouponLambdaUpdateWrapper.eq(CandyUserCoupon::getCouponId, couponId);
ccodeUpdateList.add(dto.getCcode());
}
}
}
});
userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getState, 2);
userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getUpdatedAt, now);
userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getOperator, loginName);
userCouponLambdaUpdateWrapper.set(CandyUserCoupon::getComment, comment);
boolean update = candyUserCouponAdminService.update(userCouponLambdaUpdateWrapper);
logger.info("Recover:coupon.code:[couponId={},updateUserCouponRst={}]", couponId, update);
if (!CollectionUtils.isEmpty(ccodeUpdateList)) {
LambdaUpdateWrapper<CandyCouponCode> couponCodeUpdateWrapper = Wrappers.lambdaUpdate(CandyCouponCode.class);
couponCodeUpdateWrapper.in(CandyCouponCode::getCcode, ccodeUpdateList).eq(CandyCouponCode::getCouponId, couponId);
couponCodeUpdateWrapper.in(CandyCouponCode::getUcouponId, ccodeUpdateList);
couponCodeUpdateWrapper.eq(CandyCouponCode::getCouponId, couponId);
CandyCouponCode updateCouponCode = new CandyCouponCode();
updateCouponCode.setState(5);
updateCouponCode.setUpdatedAt(LocalDateTime.now());
couponCodeUpdateWrapper.set(CandyCouponCode::getState, 5);
couponCodeUpdateWrapper.set(CandyCouponCode::getUpdatedAt, now);
couponCodeUpdateWrapper.set(CandyCouponCode::getOperator, loginName);
couponCodeUpdateWrapper.set(CandyCouponCode::getComment, comment);
update = candyCouponCodeAdminService.update(couponCodeUpdateWrapper);
logger.info("Recover:coupon.code:[couponId={},updateCouponCodeRst={}]", couponId, update);
return toAjax(candyCouponCodeAdminService.update(updateCouponCode, couponCodeUpdateWrapper));
return toAjax(update);
}
return toAjax(false);
}
......
......@@ -78,8 +78,9 @@ public class PerformancesExpressController extends BaseController {
@PostMapping("/performanceOrderList")
@ResponseBody
public TableDataInfo performanceOrderList(PerformanceExpressSearchAdminParam performanceExpressSearchAdminParam) {
List<PerformanceExpressPerformanceOrderListAdminDao> result = performancesExpressServiceImpl.getPerformancesOrderList(performanceExpressSearchAdminParam);
return getDataTable(result);
List<PerformanceExpressPerformanceOrderListAdminDao> orderList = performancesExpressServiceImpl.getPerformancesOrderList(performanceExpressSearchAdminParam);
// List<PerformancesTicketListDao> ticketList = performancesExpressServiceImpl.getPerformancesTicketList(performanceExpressSearchAdminParam.getPerformancesId());
return getDataTable(orderList);
}
/**
......
package com.liquidnet.client.admin.web.controller.zhengzai.tools;
import com.liquidnet.client.admin.common.core.controller.BaseController;
import com.liquidnet.client.admin.common.core.domain.AjaxResult;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo;
import com.liquidnet.client.admin.zhengzai.kylin.service.IExportService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@RequestMapping("/tools")
public class ToolsBaseController extends BaseController {
private String prefix = "zhengzai/tools";
@Autowired
private IExportService exportService;
@GetMapping()
public String tools() {
return prefix + "/tools";
}
@GetMapping(value = "/details/{id}")
public String detailsRoadShow(@PathVariable("id") Integer id, ModelMap mmap) {
if (id == 1) {
mmap.put("url", "/tools/export/mobile");
return prefix + "/fun1";
} else {
return prefix + "/edit";
}
}
@PostMapping("/export/mobile")
@ResponseBody
public AjaxResult exportMobile(Integer mobileType, String performanceId) {
if (performanceId == null || performanceId.trim().equals("")) {
return error("演出id有误");
}
List<OrderExportVo> list;
if (mobileType == 1) {//购票用户
list = exportService.exportOrderByPerformanceIdPay(performanceId);
} else if (mobileType == 2) {//下单用户
list = exportService.exportOrderByPerformanceIdAll(performanceId);
} else {
return error("查无订单");
}
if (list.size() == 0) {
return error("查无订单");
}
ExcelUtil<OrderExportVo> util = new ExcelUtil(OrderExportVo.class);
return util.exportExcel(list, list.get(0).getPerformanceTitle() + "-" + mobileType);
}
}
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-dev-这里是配置信息基本值
spring:
profiles:
include: client-admin-web
......@@ -224,7 +224,6 @@ var refreshItem = function(){
/** 关闭选项卡 */
var closeItem = function(dataId){
console.log(dataId, '这个科技')
var topWindow = $(window.parent.document);
if($.common.isNotEmpty(dataId)){
window.parent.$.modal.closeLoading();
......
......@@ -929,7 +929,6 @@ var table = {
},
// 关闭选项卡
closeTab: function (dataId) {
console.log(dataId, '看看这个是啥')
closeItem(dataId);
},
// 禁用按钮
......
......@@ -188,7 +188,8 @@
<div class="form-group">
<label class="col-sm-2 control-label">会员弹窗文案:</label>
<div class="col-sm-10">
<textarea class="form-control text_menber" name="interestsDetail" size="10" th:field="*{interestsDetail}"/>
<!-- <textarea class="form-control text_menber" name="interestsDetail" size="10" th:field="*{interestsDetail}"/>-->
<textarea class="form-control text_menber" name="noticeInfo" size="10" th:field="*{noticeInfo}"/>
</div>
</div>
<div class="form-group">
......@@ -317,7 +318,7 @@
</p>
<input type="text" class="form-control" id="interestsTitle" name="interestsTitle" placeholder="请输入标题" th:value="${mr.title}"/>
<input type="text" class="form-control" id="interestsSubTitle" name="interestsSubTitle" placeholder="请输入副标题" th:value="${mr.subTitle}"/>
<textarea class="form-control" id="interestsDesc" name="interestsDesc" placeholder="详情内容" th:value="${mr.detail}"></textarea>
<textarea class="form-control" id="interestsDesc" name="interestsDesc" placeholder="详情内容" th:text="${mr.detail}"></textarea>
<div class="member-coupes-item">
<ul th:each="mrc:${couponMemberDtoListMap.get(mr.mrightsId)}">
<div class="member-coupes-inner">
......@@ -417,25 +418,25 @@
</div>
<div class="form-group">
<label class="col-sm-2 control-label">类别:</label>
<div class="col-sm-10">
<div class="col-sm-10 coupenColumn">
<div class="radio-box">
<label for="radio1" onclick="radioType(this)">
<input type="radio" id="coupeAdd1" class="coupeAddVal" name="coupeAdd_type" value="0"/> 全场
<label for="radio2" onclick="radioType(this)">
<input type="radio" id="coupeAdd1" class="coupeAddVal" name="coupeAdd_type" value="0"/>全场
</label>
</div>
<div class="radio-box">
<label for="radio2" onclick="radioType(this)">
<input type="radio" id="coupeAdd2" class="coupeAddVal" onclick="radioType(this)" name="coupeAdd_type" value="1"/>演出
<input type="radio" id="coupeAdd2" class="coupeAddVal" name="coupeAdd_type" value="1"/>演出
</label>
</div>
<div class="radio-box">
<label for="radio2" onclick="radioType(this)">
<input type="radio" id="coupeAdd3" class="coupeAddVal" onclick="radioType(this)" name="coupeAdd_type" value="2"/>商品
<input type="radio" id="coupeAdd3" class="coupeAddVal" name="coupeAdd_type" value="2"/>商品
</label>
</div>
<div class="radio-box">
<label for="radio2" onclick="radioType(this)">
<input type="radio" id="coupeAdd4" class="coupeAddVal" onclick="radioType(this)" name="coupeAdd_type" value="3"/>优先购买
<input type="radio" id="coupeAdd4" class="coupeAddVal" name="coupeAdd_type" value="3"/>优先购买
</label>
</div>
</div>
......@@ -533,6 +534,14 @@
$('.tabs_inner').eq(Number(tabActive)).addClass('active');
$('.tab-pane').eq(Number(tabActive)).addClass('active');
}
$('.coupenColumn .iCheck-helper').click(function () {
radioType($(this).parent().parent());
});
$('.alltrack .iCheck-helper').click(function () {
coupetType($(this).parent().parent());
});
});
function tabChange (num) {
......@@ -560,17 +569,28 @@
} else {
var coupeTitle = $('#coupeAdd_title').val();
var busiType = this.typeRadio;
if (this.typeRadio == 0 || this.typeRadio == 1 || this.typeRadio == 3) {
var couponRuleList = [{
if (this.typeRadio == 0) {
var couponRuleList = [{
useScope: 100,
busiName: '全部演出'
busiName: '全场'
}]
} else if ( this.typeRadio == 1) {
var couponRuleList = [{
useScope: 90,
busiName: '演出'
}]
} else if ( this.typeRadio == 2) {
var couponRuleList = [{
useScope: 80,
busiName: '商品'
}]
} else {
var couponRuleList = [{
useScope: 100,
busiName: '全部商品'
useScope: 90,
busiName: '优先购'
}]
}
if (this.typeRadio == 3) {
var eventAmt = $('#eventAmt').val();
var overlay = this.overlay;
......@@ -618,6 +638,9 @@
// 类别
function radioType (obj) {
var typeRadio = $(obj).find('input').val();
$(obj).parent().parent().find('input').removeAttr('checked');
$(obj).find('input').attr('checked', true);
this.typeRadio = typeRadio;
if (typeRadio == 3) {
$('.alltrack').hide();
......@@ -664,17 +687,29 @@
var valOver = thisVal.find('#mrcvalOver').val();
var valMinus = thisVal.find('#mrcvalMinus').val();
// var mrightsId =
if (busiType == 0 || busiType == 1 || busiType == 3) {
var couponRuleList = [{
if (busiType == 0) {
var couponRuleList = [{
useScope: 100,
busiName: '全部演出'
busiName: '全场'
}]
} else if ( busiType == 1) {
var couponRuleList = [{
useScope: 90,
busiName: '演出'
}]
} else if ( busiType == 3 ) {
var couponRuleList = [{
useScope: 80,
busiName: '商品'
}]
} else {
var couponRuleList = [{
useScope: 100,
busiName: '全部商品'
useScope: 90,
busiName: '优先购'
}]
}
var MembercoupenData = {
busiType: busiType,
couType: couType == 3 ? 101 : couType,
......@@ -750,15 +785,25 @@
$('.coupetypr_discount').show();
}
if (this.typeRadio == 0 || this.typeRadio == 1 || this.typeRadio == 3) {
var couponRuleList = [{
if (this.typeRadio == 0) {
var couponRuleList = [{
useScope: 100,
busiName: '全部演出'
busiName: '全场'
}]
} else if ( this.typeRadio == 1) {
var couponRuleList = [{
useScope: 90,
busiName: '演出'
}]
} else if ( this.typeRadio == 2) {
var couponRuleList = [{
useScope: 80,
busiName: '商品'
}]
} else {
var couponRuleList = [{
useScope: 100,
busiName: '全部商品'
useScope: 90,
busiName: '优先购'
}]
}
......@@ -836,10 +881,13 @@
subTitle:{
required:true,
},
limitation:{
required:true,
},
interestsDetail:{
// limitation:{
// required:true,
// },
// interestsDetail:{
// required:true,
// },
noticeInfo:{
required:true,
},
notes:{
......@@ -856,14 +904,17 @@
"subTitle": {
required: "请输入会员说明",
},
"limitation": {
required: "请选择是否限购",
},
"interestsDetail": {
required: "请选择注意事项",
// "limitation": {
// required: "请选择是否限购",
// },
// "interestsDetail": {
// required: "请填写弹窗文案",
// },
"noticeInfo": {
required: "请填写弹窗文案",
},
"notes": {
required: "请选择是否限购",
required: "请填写注意事项",
},
"onsale": {
required: "请选择是否开售",
......
......@@ -15,6 +15,7 @@
<th:block th:include="include :: footer" />
<th:block th:include="include :: select2-js" />
<script th:inline="javascript">
var editOnsaleFlag = [[${@permission.hasPermi('adam:member:edit:onsale')}]] == 'hidden';
var editFlag = [[${@permission.hasPermi('adam:member:view:edit')}]];
var viewMemberCodeMgtFlag = [[${@permission.hasPermi('adam:member:code:mgt:list')}]];
var prefix = ctx + "adam/member";
......@@ -56,11 +57,18 @@
field: 'onsale',
title: '开售状态',
align: 'center',
formatter: function(value, row, index) {
var actions = [];
var listClass = "badge badge-" + (value === 1 ? 'primary' : 'danger');
actions.push($.common.sprintf("<span class='%s'>%s</span>", listClass, value === 1 ? '开售' : '停售'));
return actions;
// formatter: function(value, row, index) {
// var actions = [];
// var listClass = "badge badge-" + (value === 1 ? 'primary' : 'danger');
// actions.push($.common.sprintf("<span class='%s'>%s</span>", listClass, value === 1 ? '开售' : '停售'));
// return actions;
// }
formatter: function (value, row, index) {
if (value == 1) {
return '<i class=\"fa fa-toggle-on text-info fa-2x\" onclick="onsaleDisable(\'' + row.memberId + '\')"></i> ';
} else {
return '<i class=\"fa fa-toggle-off text-info fa-2x\" onclick="onsaleEnable(\'' + row.memberId + '\')"></i> ';
}
}
},
{
......@@ -69,7 +77,7 @@
formatter: function(value, row, index) {
var actions = [];
actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="$.operate.editTab(\'' + row.memberId + '\'); setVipTabs()"><i class="fa fa-edit"></i>编辑</a> ');
actions.push('<a class="btn btn-success btn-xs ' + viewMemberCodeMgtFlag + '" href="javascript:void(0)" onclick="memberCodeMgt(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>会员码管理</a> ');
// actions.push('<a class="btn btn-success btn-xs ' + viewMemberCodeMgtFlag + '" href="javascript:void(0)" onclick="memberCodeMgt(\'' + row.memberId + '\')"><i class="fa fa-edit"></i>会员码管理</a> ');
return actions.join('');
}
}]
......@@ -82,6 +90,24 @@
$.modal.openTab("会员码管理", 'adam/mcode/mgt?memberId=' + memberId);
}
/* 会员停售 */
function onsaleDisable(memberId) {
if (!editOnsaleFlag) {
$.modal.confirm("确认要停售VIP吗?", function() {
$.operate.post(prefix + "/edit_onsale", { "memberId": memberId, "onsale": 2 });
});
}
}
/* 会员开售 */
function onsaleEnable(memberId) {
if (!editOnsaleFlag) {
$.modal.confirm("确认要开售VIP吗?", function() {
$.operate.post(prefix + "/edit_onsale", { "memberId": memberId, "onsale": 1 });
});
}
}
function setVipTabs () {
window.localStorage.setItem('tabActive', 0);
}
......
......@@ -31,12 +31,12 @@
<a class="btn btn-warning multiple disabled" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export">
<i class="fa fa-download"></i> 导出
</a>
<a class="btn btn-primary multiple disabled selectChangeShowInvalid" style="display: none" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid">
<i class="fa fa-edit"></i> 批量失效
</a>
<a class="btn btn-danger multiple disabled selectChangeShowRecover" style="display: none" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover">
<i class="fa fa-remove"></i> 批量退回
</a>
<!-- <a class="btn btn-primary multiple disabled selectChangeShowInvalid" style="display: none" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid">-->
<!-- <i class="fa fa-edit"></i> 批量失效-->
<!-- </a>-->
<!-- <a class="btn btn-danger multiple disabled selectChangeShowRecover" style="display: none" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover">-->
<!-- <i class="fa fa-remove"></i> 批量退回-->
<!-- </a>-->
</div>
<div class="col-sm-12 select-table table-striped">
......@@ -92,7 +92,7 @@
if (row.state === 0) {
actions.push('<a class="btn btn-primary btn-xs ' + invalidFlag + '" href="javascript:void(0)" onclick="invalidHandler(\'' + row.ccode + '\')"><i class="fa fa-edit"></i>失效</a> ');
} else if (row.state === 1) {
actions.push('<a class="btn btn-danger btn-xs ' + recoverFlag + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.ccode + '\')"><i class="fa fa-remove"></i>退回</a>');
actions.push('<a class="btn btn-danger btn-xs ' + recoverFlag + '" href="javascript:void(0)" onclick="recoverHandler(\'' + row.ccode + '\',' + row.ucouponId + '\')"><i class="fa fa-remove"></i>退回</a>');
}
return actions.join('');
}
......@@ -120,26 +120,27 @@
}
}
function recoverHandler(ccode) {
function recoverHandler(ccode, ucouponId) {
if (ccode !== null && ccode !== undefined) {
var data = {"couponId":couponId,"ccodes": ccode};
var data = {"ucouponId":ucouponId,"couponId":couponId,"ccodes": ccode};
$.operate.submit('code/recover', "post", "json", data);
} else {
$.operate.batchProcessingForCouponCode(couponId, 2);
}
// else {
// $.operate.batchProcessingForCouponCode(couponId, 2);
// }
}
function selectChange() {
let val = $(".selectChange").val();
console.log(typeof val);
if (val === '0') {
$(".selectChangeShowInvalid").show();
} else if (val === '1') {
// $(".selectChangeShowRecover").show();
} else {
$(".selectChangeShowInvalid").hide();
$(".selectChangeShowRecover").hide();
}
// let val = $(".selectChange").val();
// console.log(typeof val);
// if (val === '0') {
// $(".selectChangeShowInvalid").show();
// } else if (val === '1') {
// // $(".selectChangeShowRecover").show();
// } else {
// $(".selectChangeShowInvalid").hide();
// $(".selectChangeShowRecover").hide();
// }
}
</script>
</body>
......
......@@ -171,10 +171,10 @@
<input type="text" id="searchIpt" autocomplete="off" class="layui-input" placeholder="全部">
<ul id="dataList" style="position: absolute;"></ul>
</div>
<select name="bindType" id="selectTwo">
<select name="bindType" id="selectTwo" placeholder="请选择场次">
<option value="">所有</option>
</select>
<select name="bindType" id="selectThree">
<select name="bindType" id="selectThree" placeholder="请选择票种">
<option value="">所有</option>
</select>
</div>
......@@ -271,10 +271,15 @@
let str = '';
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) {
let filterData = [];
searchData = res.value;
searchData.forEach((item,index)=>{
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>`
})
let obj = {};
searchData.reduce((cur,next) => {
if (!obj[next.performancesId]) {
obj[next.performancesId] = true
str+= `<li class="selectData" onclick="selectOne('${next.performancesId}','${next.title}')">${next.title}</li>`
}
},[]) //设置cur默认类型为数组,并且初始值为空的数组
$('#dataList').html(str);
} else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
......@@ -283,7 +288,7 @@
};
function getMallList() {
let data = {
title: ''
title: searchVal
}
let str = '';
promiseMethods(phpMallUrl + '/admin/goodListForQuick','get',data,'application/x-www-form-urlencoded').then(res=>{
......@@ -313,11 +318,19 @@
return
}
let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{
if (item.performancesId == id) {
str+= `<option value='${item.timeId}' label=${item.timeTitle}>${item.timeTitle}</option>`
filterData.push(item)
}
})
filterData.reduce((cur, next) => {
if (!obj[next.timeId]) {
obj[next.timeId] = true
str+= `<option value='${next.timeId}' label=${next.timeTitle}>${next.timeTitle}</option>`
}
}, [])
selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str);
......@@ -339,7 +352,13 @@
});
$("#searchIpt").keyup(function(){
searchVal = $("#searchIpt").val()
search()
// search()
if (typeOne == 2) {
getMallList()
} else {
console.log('search')
search()
}
});
$('#selectTwo').change(function(e){
......@@ -540,8 +559,14 @@
}
console.log(data,'data')
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
layer.msg('创建成功!');
closeItem();
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
return [];
} else if (res.code == web_status.SUCCESS) {
$.operate.successTabCallback(res);
closeItem();
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -212,7 +212,7 @@
<div class="main_bottom">
<div class="describe">
<span class="labelName">
描述说明:
<i class="required">*</i>描述说明:
</span>
<textarea id="describeTxt" class="form-control" rows="4"></textarea>
</div>
......@@ -267,9 +267,16 @@
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) {
searchData = res.value;
searchData.forEach((item,index)=>{
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>`
})
let obj = {};
searchData.reduce((cur,next) => {
if (!obj[next.performancesId]) {
obj[next.performancesId] = true
str+= `<li class="selectData" onclick="selectOne('${next.performancesId}','${next.title}')">${next.title}</li>`
}
},[]) //设置cur默认类型为数组,并且初始值为空的数组
// searchData.forEach((item,index)=>{
// str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>`
// })
$('#dataList').html(str);
} else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
......@@ -399,7 +406,7 @@
});
function create() {
if (!$('#title').val() || !$('#num').val() || !$('#ticketTime').val()) {
if (!$('#title').val() || !$('#num').val() || !$('#ticketTime').val() || !$('#describeTxt').val()) {
return layer.msg('请将必填项输入完整~!');
if (typeTwo != 1) {
if (!$('#exchangeTime').val()) {
......@@ -454,7 +461,14 @@
}
console.log(data,'data')
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
console.log(res)
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
return [];
} else if (res.code == web_status.SUCCESS) {
$.operate.successTabCallback(res);
closeItem();
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -275,9 +275,13 @@
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) {
searchData = res.value;
searchData.forEach((item,index)=>{
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>`
})
let obj = {};
searchData.reduce((cur,next) => {
if (!obj[next.performancesId]) {
obj[next.performancesId] = true
str+= `<li class="selectData" onclick="selectOne('${next.performancesId}','${next.title}')">${next.title}</li>`
}
},[]) //设置cur默认类型为数组,并且初始值为空的数组
$('#dataList').html(str);
} else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
......@@ -286,7 +290,7 @@
};
function getMallList() {
let data = {
title: ''
title: searchVal
}
let str = '';
promiseMethods(phpMallUrl + '/admin/goodListForQuick','get',data,'application/x-www-form-urlencoded').then(res=>{
......@@ -315,11 +319,19 @@
return
}
let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{
if (item.performancesId == id) {
str+= `<option value='${item.timeId}' label=${item.timeTitle}>${item.timeTitle}</option>`
filterData.push(item)
}
})
filterData.reduce((cur, next) => {
if (!obj[next.timeId]) {
obj[next.timeId] = true
str+= `<option value='${next.timeId}' label=${next.timeTitle}>${next.timeTitle}</option>`
}
}, [])
selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str);
......@@ -341,7 +353,13 @@
});
$("#searchIpt").keyup(function(){
searchVal = $("#searchIpt").val()
search()
// search()
if (typeOne == 2) {
getMallList()
} else {
console.log('search')
search()
}
});
$('#selectTwo').change(function(e){
......@@ -542,8 +560,14 @@
delete data.eventLimit;
}
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
layer.msg('创建成功!');
closeItem();
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
return [];
} else if (res.code == web_status.SUCCESS) {
$.operate.successTabCallback(res);
closeItem();
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -162,10 +162,10 @@
<select name="bindType" id="selectThree">
<option value="">所有</option>
</select>
<span style="margin-left: 12px;color: #ccc;" id="showNum">
<!-- <span style="margin-left: 12px;color: #ccc;" id="showNum">
演出库存:<span id="totalGeneral"></span>
兑换库存:<span id="totalExchange"></span>
</span>
</span> -->
</div>
<div class="changeData">
<div id="modalOne">
......@@ -219,9 +219,13 @@
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) {
searchData = res.value;
searchData.forEach((item,index)=>{
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>`
})
let obj = {};
searchData.reduce((cur,next) => {
if (!obj[next.performancesId]) {
obj[next.performancesId] = true
str+= `<li class="selectData" onclick="selectOne('${next.performancesId}','${next.title}')">${next.title}</li>`
}
},[]) //设置cur默认类型为数组,并且初始值为空的数组
$('#dataList').html(str);
} else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
......@@ -232,14 +236,19 @@
$("#searchIpt").val(name);
showId = id;
let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{
if (item.performancesId == id) {
$('#showNum').show();
$('#totalExchange').text(item.totalExchange);
$('#totalGeneral').text(item.totalGeneral);
str+= `<option value='${item.timeId}' label=${item.timeTitle}>${item.timeTitle}</option>`;
filterData.push(item)
}
})
filterData.reduce((cur, next) => {
if (!obj[next.timeId]) {
obj[next.timeId] = true
str+= `<option value='${next.timeId}' label=${next.timeTitle}>${next.timeTitle}</option>`
}
}, [])
selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str);
......@@ -324,8 +333,14 @@
"redeemValidity": Number($('#ticketTime').val()) // 兑换有效期
}
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
layer.msg('创建成功!');
closeItem();
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
return [];
} else if (res.code == web_status.SUCCESS) {
$.operate.successTabCallback(res);
closeItem();
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -236,7 +236,7 @@
let sendTimeType = '';
function getMallList() {
let data = {
title: ''
title: $('#searchIpt').val()
}
let str = '';
promiseMethods(phpMallUrl + '/admin/goodListForQuick','get',data,'application/x-www-form-urlencoded').then(res=>{
......@@ -285,7 +285,7 @@
});
$("#searchIpt").keyup(function(){
searchVal = $("#searchIpt").val()
search()
getMallList()
});
$("input[name=sendType]").change(function(e){
sendType = e.target.value;
......@@ -316,7 +316,7 @@
showId = '';
}
if (showId) {
useScope = 90;
useScope = 80;
busiName = $('#searchIpt').val();
busiId = showId;
}
......@@ -352,8 +352,14 @@
delete data.eventLimit;
}
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
layer.msg('创建成功!');
closeItem();
layer.msg('' + res);
if (res.code != undefined && res.code != web_status.SUCCESS) {
$.modal.alertWarning(res.msg);
return [];
} else if (res.code == web_status.SUCCESS) {
$.operate.successTabCallback(res);
closeItem();
}
})
}
function promiseMethods(url,type,data,contentType) {
......
......@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName: "createdAt",
sortOrder: "desc",
modalName: "代金券",
columns: [
{
......@@ -145,7 +146,7 @@
/* 查看码列表 */
function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url);
$.modal.openTab("代金码列表", url);
}
</script>
</body>
......
......@@ -64,6 +64,7 @@
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName: "createdAt",
sortOrder: "desc",
modalName: "优先券",
columns: [
{
......
<!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('代金券')" />
<th:block th:include="include :: header('满减券')" />
</head>
<body class="gray-bg">
<div class="container-div">
......@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName: "createdAt",
sortOrder: "desc",
modalName: "满减券",
columns: [
{
......@@ -145,7 +146,7 @@
/* 查看码列表 */
function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url);
$.modal.openTab("满减码列表", url);
}
</script>
</body>
......
......@@ -64,6 +64,7 @@
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName: "createdAt",
sortOrder: "desc",
modalName: "兑换券",
columns: [
{
......@@ -126,7 +127,7 @@
/* 查看码列表 */
function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url);
$.modal.openTab("兑换码列表", url);
}
</script>
</body>
......
......@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export",
sortName: "createdAt",
sortOrder: "desc",
modalName: "折扣券",
columns: [
{
......@@ -145,7 +146,7 @@
/* 查看码列表 */
function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url);
$.modal.openTab("折扣码列表", url);
}
</script>
</body>
......
......@@ -38,7 +38,7 @@
</div>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group" >
<label class="col-sm-3 control-label is-required">手续费:</label>
<div class="col-sm-8" th:if="*{isRefundPoundage==1}">
<div class="radio check-box">
......@@ -57,7 +57,7 @@
</div>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label is-required">退优惠券:</label>
<div class="col-sm-8" th:if="*{isRefundVoucher==1}">
<div class="radio check-box">
......@@ -76,7 +76,7 @@
</div>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label is-required">快递费:</label>
<div class="col-sm-8" th:if="*{isRefundExpress==1}">
<div class="radio check-box">
......@@ -95,19 +95,19 @@
</div>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label">收货人:</label>
<div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.name}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label">电话:</label>
<div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.phone}" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group" style="display: none">
<div class="form-group">
<label class="col-sm-3 control-label">收货地址:</label>
<div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.address}" class="form-control" type="text" readonly>
......
......@@ -298,6 +298,10 @@
field: 'statusName',
title: '退款状态'
},
{
field: 'mailno',
title: '运单号'
},
{
field: 'refundError',
title: '退款结果备注',
......
<!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="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<div class="form-group">
<div class="radio check-box">
<input type="radio" value="1" name="mobileType" checked> 支付用户</label>
</div>
<div class="radio check-box">
<input type="radio" value="2" name="mobileType"> 全部用户</label>
</div>
</div>
<div class="form-group">
<label class="control-label">演出id:</label>
<div class="input-group date">
<input id="performanceId" class="form-control" type="text">
</div>
</div>
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var options = {
modalName: "订单手机号",
exportUrl:[[${url}]],
}
$.table.init(options);
function submitHandler() {
var param = {
"mobileType": document.getElementsByName("mobileType")[0].checked ? 1 : 2,
"performanceId": $('#performanceId').val()
};
$.table.exportExcel("", param)
// $.operate.post([[${url}]], param, function (res) {
// });
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org">
<head>
<th:block th:include="include :: header('工具库')"/>
</head>
<style>
td {
horiz-align: center;
text-align: left;
padding: 10px;
}
</style>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
<form class="form-horizontal m" id="form-member-edit">
<div class="form-group">
<button id="fun1" type="button" class="btn btn-w-m btn-success" href="javascript:void(0)"
onclick="$.operate.edit(1)">
导出演出订单手机号
</button>
</div>
</form>
</div>
<th:block th:include="include :: footer"/>
<script th:inline="javascript">
var prefix = ctx + "tools/";
var options = {
url: prefix,
modalName: "",
updateUrl: prefix + "details/{id}"
};
$.table.init(options);
var fun1Flag = [[${@permission.hasPermi('tools:fun1')}]];
if (fun1Flag == "hidden") {
document.getElementById("fun1").style.display = "none";
}
</script>
</body>
</html>
......@@ -53,6 +53,7 @@ public class AdamMemberServiceAdminImpl extends ServiceImpl<AdamMemberMapper, Ad
AdamMember adamMember = new AdamMember();
BeanUtils.copyProperties(parameter, adamMember);
adamMember.setLimitation(0);
adamMember.setName(adamMember.getTitle());
// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
// adamMember.setLimitbAt(LocalDateTime.parse(parameter.getLimitbAt(), dateTimeFormatter));
// adamMember.setLimiteAt(LocalDateTime.parse(parameter.getLimitbAt(), dateTimeFormatter));
......
package com.liquidnet.client.admin.zhengzai.candy.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
public interface ICandyUserCouponAdminService extends IService<CandyUserCoupon> {
}
......@@ -84,7 +84,8 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
//initCoupon.setRedeemValidity();
//initCoupon.setRedeemStart();
//initCoupon.setRedeemStop();
//initCoupon.setEffectAt();
initCoupon.setEffectAt(nowTime);
// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
//initCoupon.setExpireAt();
initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime);
......@@ -151,6 +152,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
updateCoupon.setValMinus(parameter.getValMinus());
updateCoupon.setOverlay(parameter.getOverlay());
updateCoupon.setOperator(operator);
updateCoupon.setEffectAt(nowTime);// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
updateCoupon.setUpdatedAt(nowTime);
......
package com.liquidnet.client.admin.zhengzai.candy.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyUserCouponAdminService;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import com.liquidnet.service.candy.mapper.CandyUserCouponMapper;
import org.springframework.stereotype.Service;
@Service
public class CandyUserCouponAdminServiceImpl extends ServiceImpl<CandyUserCouponMapper, CandyUserCoupon> implements ICandyUserCouponAdminService {
}
package com.liquidnet.client.admin.zhengzai.kylin.dto;
import com.liquidnet.client.admin.common.annotation.Excel;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.kylin.dao.OrderExportDao;
import lombok.Data;
import java.io.Serializable;
@Data
public class OrderExportVo implements Serializable, Cloneable{
@Excel(name = "演出名称", cellType = Excel.ColumnType.STRING)
private String performanceTitle;
@Excel(name = "手机号", cellType = Excel.ColumnType.STRING)
private String userMobile;
@Excel(name = "姓名", cellType = Excel.ColumnType.STRING)
private String userName;
private static final OrderExportVo obj = new OrderExportVo();
public static OrderExportVo getNew() {
try {
return (OrderExportVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return new OrderExportVo();
}
public OrderExportVo copyOrderExportVo(OrderExportDao source) {
this.setPerformanceTitle(source.getPerformanceTitle());
this.setUserMobile(source.getUserMobile());
this.setUserName(source.getUserName());
return this;
}
}
package com.liquidnet.client.admin.zhengzai.kylin.service;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo;
import java.util.List;
public interface IExportService {
List<OrderExportVo> exportOrderByPerformanceIdAll(String performancesId);
List<OrderExportVo> exportOrderByPerformanceIdPay(String performancesId);
}
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.exception.BusinessException;
import com.liquidnet.client.admin.common.utils.StringUtils;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderExportVo;
import com.liquidnet.client.admin.zhengzai.kylin.dto.OrderOutLineVo;
import com.liquidnet.client.admin.zhengzai.kylin.service.IExportService;
import com.liquidnet.client.admin.zhengzai.kylin.service.IImportService;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.OrderUtils;
import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dao.OrderExportDao;
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.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
@Service
@Slf4j
public class ExportServiceImpl implements IExportService {
@Autowired
KylinPerformancesMapper performancesMapper;
@Override
public List<OrderExportVo> exportOrderByPerformanceIdAll(String performancesId) {
List<OrderExportDao> list = performancesMapper.exportOrderByPerformanceIdAll(performancesId);
List<OrderExportVo> voList = new ArrayList();
for (OrderExportDao item :list){
voList.add(OrderExportVo.getNew().copyOrderExportVo(item));
}
return voList;
}
@Override
public List<OrderExportVo> exportOrderByPerformanceIdPay(String performancesId) {
List<OrderExportDao> list = performancesMapper.exportOrderByPerformanceIdPay(performancesId);
List<OrderExportVo> voList = new ArrayList();
for (OrderExportDao item :list){
voList.add(OrderExportVo.getNew().copyOrderExportVo(item));
}
return voList;
}
}
......@@ -13,6 +13,7 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*;
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.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
......@@ -743,6 +744,11 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
Query.query(Criteria.where("orderTicketsId").in(orderTicketIdList)).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo))
);
mapMongo.put("useEnd", ticketVo.getUseEnd());
mongoTemplate.getCollection(KylinOrderTicketEntitiesVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderId").in(orderTicketIdList)).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo))
);
log.debug("修改场次相关 mongo time -> " + (System.currentTimeMillis() - time1) + " ms ");
time1 = System.currentTimeMillis();
......
......@@ -422,7 +422,7 @@ public class KylinRefundsStatusServiceImpl {
params.add("paymentId", oderInfo.getPaymentId());
params.add("paymentType", oderInfo.getPaymentType());
params.add("price", String.valueOf(refundPrice));
params.add("priceTotal", String.valueOf(oderInfo.getPriceTotal()));
params.add("priceTotal", String.valueOf(oderInfo.getPriceActual()));
params.add("reason", "按需退款");
MultiValueMap<String, String> headers = new LinkedMultiValueMap();
......
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-dev-这里是配置信息基本值
spring:
profiles:
include: client-job
config-server-git: test
#application-test-begin
#这里后续添加公共参数值
liquidnet:
secret:
passwd-salt: NTZiYzg4
security:
username: user
password: user123
jwt:
secret: qZHglvNP0n0aOOckHiQXq5JMD468J4eG
expire-ttl: 43200
refresh-ttl: 525600
blacklist_grace_period: 5
mysql:
urlHostAndPort: 172.17.205.50:3308
username: root
password: Zhengzai@rd2U#
rabbitmq:
host: 101.201.127.58
port: 5672
username: admin
password: admin
virtual-host: liquidnet
adam:
host: rabbitmq.zhengzai.tv
port: 5672
username: admin
password: admin
virtual-host: liquidnet
knife4j:
disable: false
redis:
database: 255
dbs: 0,256
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com
port: 6380
password: PO@B!Iud32
dragon:
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com
port: 6380
password: PO@B!Iud32
sweet:
host: r-2ze7002ckw5u75fguk.redis.rds.aliyuncs.com
port: 6380
password: PO@B!Iud32
mongodb:
host: 172.17.205.50:27017
port: 27017
user: admin
pwd: S&y$6d*JwJ
chime:
host: s-2ze04ffc16a54af4.mongodb.rds.aliyuncs.com:3717
port: 3717
user: admin
pwd: S&y$6d*JwJ
service:
adam:
url-pay:
pay: http://k8s-testdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://k8s-testdragon.zhengzai.tv/dragon/pay/checkOrder
callback: http://k8s-testadam.zhengzai.tv/adam/member/order/callback
url: http://k8s-testadam.zhengzai.tv
kylin:
url-pay:
pay: http://k8s-testdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://k8s-testdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://k8s-testkylin.zhengzai.tv/kylin/order/syncOrder
url: http://k8s-testkylin.zhengzai.tv/kylin
candy:
url: http://k8s-testcandy.zhengzai.tv/candy
order:
adam:
url: http://k8s-testadam.zhengzai.tv/adam
url-pay:
pay: http://k8s-testdragon.zhengzai.tv/dragon/pay/dragonPay
check: http://k8s-testdragon.zhengzai.tv/dragon/pay/checkOrder
localUrl: http://k8s-testorder.zhengzai.tv/order/order/syncOrder
dragon:
notifyUrl: https://k8s-testdragon.zhengzai.tv/dragon
platform:
url: http://k8s-testplatform.zhengzai.tv
sweet:
url: http://k8s-testsweet.zhengzai.tv
chime:
url: http://k8s-testchime.zhengzai.tv
executor-main:
xxl:
admin:
addresses: 172.17.121.166:8090
client:
admin:
phpPayUrl: http://k8s-testdragon.zhengzai.tv
phpMallUrl: https://k8s-testmall.zhengzai.tv
platformUrl: https://k8s-testplatform.zhengzai.tv
h5Url: https://k8s-testm.zhengzai.tv
aliyun:
dypns:
accessKeyId: LTAI4FvoqxJUT5T1ydJSyhUn
accessKeySecret: WNCgFn9dSjnoDdej2YTvR0v0216WWU
dysms:
accessKeyId: LTAI5tHt7yvm97G8zxackcMK
accessKeySecret: xC3i5qEptJ3JIIRaYLaKvhk4gVASfl
oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
wechat:
service:
zhengzai:
appid: wx3498304dda39c5a1
secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
zhengzaiActivity:
appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81
modernsky:
appid: wx6bf7999941a06d15
secret: a12012b31307a539719dbe4d137ca45a
applet:
zhengzai:
appid: wx4732efeaa2b08086
secret: 94562c1f92da1b6cb3f1327c8842c6d3
strawberry:
appid: wx08b852ade69f8019
secret: 0aac285fd1fbc6aa4e562b7ad81de392
five:
appid: wxb5371c8c95226957
secret: a6a909ae1ab25a79d4addd154eafbb7e
mdsk:
appid: wxc278ddf30f515188
secret: 21c0daa5d7d323f86c70c29db3c0613b
umeng:
ios:
appkey: 54fe819bfd98c546b50004f0
appMasterSecret: fsls9dv1vwyemqdv9lidjfppk37nmssa
android:
appkey: 5c6cf6cbb465f592e4000bae
appMasterSecret: dmsho74wlpd1hp7vrwp9bjehzwo29pza
shumei:
url:
easemob:
api-url: https://a1.easemob.com
org-name: 1106210901175651
app-name: demo
client-id: YXA6x4Xs7cYDQcOv6BPuM3hUDA
client-secret: YXA6olr2qaW65xlkFixS81kiWnplrW4
express:
shunfeng:
url: "https://butler-dev.sit.sf-express.com"
sk: 21e9a70f677a2bf29dfa2b3bead4f018
appid: 557104628450889728
custid: 7551234567
jCompany: 北京正在映画互联网有限公司
jContact: 摩登天空票务部
jTel: 4001680650
jProvince: 北京
jCity: 北京市
jAddress: 朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType: 2 # 默认顺丰特快
depositumInfo: 演出纸质票
#application-test-end
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://${liquidnet.mysql.master.urlHostAndPort}/${liquidnet.mysql.master.database-name}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ${liquidnet.mysql.master.username}
password: ${liquidnet.mysql.master.password}
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url: jdbc:mysql://${liquidnet.mysql.slave.urlHostAndPort}/${liquidnet.mysql.slave.database-name}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: ${liquidnet.mysql.slave.username}
password: ${liquidnet.mysql.slave.password}
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
webStatFilter:
enabled: true
statViewServlet:
enabled: true
# 设置白名单,不填则允许所有访问
allow:
url-pattern: /druid/*
# 控制台管理用户名和密码
login-username: ruoyi
login-password: 123456
filter:
stat:
enabled: true
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
\ No newline at end of file
# begin-test-这里是配置信息基本值
liquidnet:
info:
port: 7099
context:
name: liquidnet-client-admin-web
logfile:
path: /data/logs
name: client-admin-web
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
master:
urlHostAndPort: ${liquidnet.mysql.urlHostAndPort}
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
database-name: test_ln_scene
slave:
urlHostAndPort: ${liquidnet.mysql.urlHostAndPort}
username: ${liquidnet.mysql.username}
password: ${liquidnet.mysql.password}
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
# end-test-这里是配置信息基本值
\ No newline at end of file
liquidnet:
info:
context: /
name: liquidnet-client-job
port: 8090
logfile:
name: client-job
path: /data/logs
mysql:
database-name: test_ln_clijob
liquidnet:
system:
updating:
switch: false
info:
port: 9001
context: /adam
name: liquidnet-service-adam
logfile:
path: /data/logs
name: service-adam
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
url-pay:
pay: ${liquidnet.service.adam.url-pay.pay}
check: ${liquidnet.service.adam.url-pay.check}
callback: ${liquidnet.service.adam.url-pay.callback}
reviewer:
app-login:
mobile: 13724286255
user-info: false
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9009
context: /candy
name: liquidnet-service-candy
logfile:
path: /data/logs
name: service-candy
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
\ No newline at end of file
......@@ -99,4 +99,5 @@ global-auth:
- ${liquidnet.info.context}/webjars/**
- ${liquidnet.info.context}/swagger-resources/**
- ${liquidnet.info.context}/v2/api-docs*
- ${liquidnet.info.context}/candy-coupon/useBack
\ No newline at end of file
- ${liquidnet.info.context}/candy-coupon/useBack
- ${liquidnet.info.context}/candy-coupon/useBackJxl
\ No newline at end of file
liquidnet:
system:
updating:
switch: false
info:
port: 9011
context: /chime
name: liquidnet-service-chime
logfile:
path: /data/logs
name: service-chime
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
mongodb:
sslEnabled: false
database: test_ln_scene
liquidnet:
system:
updating:
switch: false
info:
port: 9005
context:
# context: /service-consumer
name: liquidnet-service-consumer-adam
logfile:
path: /data/logs
name: service-consumer-adam
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level-root: debug
mysql:
database-name: test_ln_scene
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9997
context:
# context: /service-consumer
name: liquidnet-service-consumer-dragon
logfile:
path: /data/logs
name: service-consumer-dragon
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level-root: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
dragon:
redis:
database: 255
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9999
context:
# context: /service-consumer
name: liquidnet-service-consumer-kylin
logfile:
path: /data/logs
name: service-consumer-kylin
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level-root: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9996
context:
# context: /service-consumer
name: liquidnet-service-consumer-sweet
logfile:
path: /data/logs
name: service-consumer-sweet
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level-root: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9006
context: /dragon
name: liquidnet-service-dragon
logfile:
path: /data/logs
name: service-dragon
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
dragon:
url: ${liquidnet.service.dragon.notifyUrl}
alipay:
gataway-url: https://openapi.alipay.com/gateway.do
appId: 2019082866535131
merchantPubKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmePaETscydypY3rV4mXa8MtcQIL5zjP1KxdusNkHpePeU61hAZxKn0Z8pDB1wNaTK72wgEWaORXeRp4YTbf4usHlW562Pe5wdiSutb3iT6EMJ5eBD4HLI9wWDgYBtwfHwS5JJFhf0eptP4R1XluLiMhmMynLwJvHepgkVrS3mN+jmoPRmKFhZHGIYDoWypBMbUKiFHWiToHK1n0NYHHIi4WgK2wt4Wj7nexQGD69W7ofRCirYmz35c/cNFUA1lqzOEKu2z7PpjA6jQV2GJolnJ4xXPJ8Dpgp4g/dgsGqRydlmFqZD71i/pDDpF0RfRKHL+WhWVhI1hqe6jLtvJE+zQIDAQAB
merchantPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCArhnBTpcAww8wSYBTwGp6oBvenzCCYFrugERgxJDZ7YnBZ3ZdiAaHjJ9PI0WymkpDr27FSg9czVbiH7G91zPq+8s9onrZi/l6cBZ2VjrwQ9BQPN2a8zHy8D6BfoKEV+PIicGz6hNPA7lgf04NgsXeWjeXnYD/IBTLZmnCxB2sPYo/0EN32mlSG9snO63HlPkoqn8ycw71a1cBrlQ+Y22fFnJAk/vrGoou8E0UHfL5zVE/up+ToOYW/eOKMFL/DSceCy32t9Za0RmpV3i2E9s8gBDewzT10Yf4+4mPUiTR6AhcLjqafAy2IaKPK57WZ6cGF9cGs9yq8bSTRpeNC4alAgMBAAECggEAH0Ms+qvPP94j6IVS6gYLWHNhkfp23JXwQZVkB2Z6EpgFKbmrJhoQDAp8Acv9+OBHPp52ePP/O3qfqxwsIIUSFfrKa9T3p7a8C6UDsAhPFWRETdobtLN05SK87NUBfImly2i8aKtruXycIveKzPmCfPzKGMmpN1Jh+vCMrUbcNqX8OUcxmhGvJwnQuBW4QEiepzl89Nl91iSwFmxaZoqLaB9lYUKke/z7FDHTpTWpZvtvxlZ0gvMVNLVp9NBNazolQ8eEjBG2PsQGD2cLUbM33mLTz+/VQjzZR3KXu5kQR9MloURILDsdxE1AyA4AkIXd4eMszEjA4Dv6CQK/jjrsgQKBgQDIiCt1OGmV2sqDBSn4nZNH7BzY3Hdnf+qsYUi+TXKhnQaT8XPKWZpKE/AcqsIKnANmO4sX0NL7ACBe7Rl1RcU9Mq5XuHhnkveFBVRRIHindzUfEN0WgdLy23qmJ2N+1i4FigelY0E5T2lojVb7wycAgAc6vflwE+eYf8W3968q0QKBgQCkRgsVCWWNMSLZeB0V9LV3Om2/UPWY/ovadTxAQtxg0Z75V6Wdu8u0hrYaPSeUK2ryaoE6HKgp7U8NiJGzgm2wpj7D2ysrPmhX5+CjiWkDMCuvWytVT7hLqhhLp7frZT39u8VhyfC8lE0xA67gAPsGSl1sBoZPwvvsmNAQ/h6rlQKBgQCtCtw9be2m88M3JnieYhOax8Po2u5qsLZoBBcKqLhXf7ISbhPWNFXwwJ29jxicoR5J1O3lIj09fVFxuLX0Pb3DXn2VksjLz8Wp0vx8eUHEeRis8xdleaf4C68du/WemOHjw8VvUWQSOVWjc/vwiumYA+K5LQAXWAXM0c1jP+e3UQKBgEWY/1z8TDATn0Yvo3MH6FIJSTIDJOqa/bmibdJ0AVZruUS+o4Y+aEGlyUU4n6og8wCdqv5p4b1Rs2pyb/hzy/FJndHw60s495A2x2/B6eHV6Mw0fhl42wYDnKOA/WUX0bnMcgXKPtpGoqWff9mb0L6LhyUbZpAodf95hr2MTIY5AoGBAIyPtYP6jRyR980h/Ud1MS0fBxymjQrR+kg3GWjnw0ZJJ8yFEXxDqLV8uLyXQKc89HGbI0cClWgZBTjfIPJ5U4Gl19Xlwx1SFrdgg5mGUqnMARTg7w1TG5QLSqNhZo2jgBM5FCJRbDUCO/MzLcFhTeGNva9yP7E7gW5/Dott9D7d
signtType: 2019082866535131
charset: 2019082866535131
wepay:
gataway-url: https://openapi.alipay.com/gateway.do
merchantId: 1551961491
appId: wx3498304dda39c5a1
partnerKey: itIuO65O9yKmemOu3S8g1S4orqvCGwXK
\ No newline at end of file
liquidnet:
info:
port: 8190
context: /service-executor-main
name: liquidnet-service-executor-main
logfile:
path: /data/logs
name: service-executor-main
xxl:
accessToken: qk52rqSejRBm9enf6BTTxw==
admin:
# Job执行器注册地址,多个地址则用逗号分隔
# addresses: ${liquidnet.service.executor-main.xxl.admin.addresses}
addresses: ${liquidnet.service.executor-main.xxl.admin.addresses}
executor:
# Job执行器IP,默认为空表示自动获取IP,多网卡时手动指定
ip:
# Job执行器端口,单机多个执行器端口号不能相同
port: 8191
# Job执行器心跳注册分组依据,按需配置
appname: liquidnet-service-executor
# Job执行器运行日志,注意目录读写权限
logpath: /data/logs/job
url:
platform: ${liquidnet.service.platform.url}
sweet: ${liquidnet.service.sweet.url}
liquidnet:
system:
updating:
switch: false
info:
port: 9002
context: /kylin
name: liquidnet-service-kylin
logfile:
path: /data/logs
name: service-kylin
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
url-pay:
pay: ${liquidnet.service.kylin.url-pay.pay}
check: ${liquidnet.service.kylin.url-pay.check}
localUrl: ${liquidnet.service.kylin.url-pay.localUrl}
adam:
url: ${liquidnet.service.adam.url}
\ No newline at end of file
liquidnet:
system:
updating:
switch: false
info:
port: 9007
context: /dragon
name: liquidnet-service-notify
logfile:
path: /data/logs
name: service-notify
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
rabbitmq:
connection-timeout: 5000
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
dragon:
url: ${liquidnet.service.dragon.notifyUrl}
alipay:
gataway-url: https://openapi.alipay.com/gateway.do
appId: 2019082866535131
merchantPubKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmePaETscydypY3rV4mXa8MtcQIL5zjP1KxdusNkHpePeU61hAZxKn0Z8pDB1wNaTK72wgEWaORXeRp4YTbf4usHlW562Pe5wdiSutb3iT6EMJ5eBD4HLI9wWDgYBtwfHwS5JJFhf0eptP4R1XluLiMhmMynLwJvHepgkVrS3mN+jmoPRmKFhZHGIYDoWypBMbUKiFHWiToHK1n0NYHHIi4WgK2wt4Wj7nexQGD69W7ofRCirYmz35c/cNFUA1lqzOEKu2z7PpjA6jQV2GJolnJ4xXPJ8Dpgp4g/dgsGqRydlmFqZD71i/pDDpF0RfRKHL+WhWVhI1hqe6jLtvJE+zQIDAQAB
merchantPrivateKey: MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCArhnBTpcAww8wSYBTwGp6oBvenzCCYFrugERgxJDZ7YnBZ3ZdiAaHjJ9PI0WymkpDr27FSg9czVbiH7G91zPq+8s9onrZi/l6cBZ2VjrwQ9BQPN2a8zHy8D6BfoKEV+PIicGz6hNPA7lgf04NgsXeWjeXnYD/IBTLZmnCxB2sPYo/0EN32mlSG9snO63HlPkoqn8ycw71a1cBrlQ+Y22fFnJAk/vrGoou8E0UHfL5zVE/up+ToOYW/eOKMFL/DSceCy32t9Za0RmpV3i2E9s8gBDewzT10Yf4+4mPUiTR6AhcLjqafAy2IaKPK57WZ6cGF9cGs9yq8bSTRpeNC4alAgMBAAECggEAH0Ms+qvPP94j6IVS6gYLWHNhkfp23JXwQZVkB2Z6EpgFKbmrJhoQDAp8Acv9+OBHPp52ePP/O3qfqxwsIIUSFfrKa9T3p7a8C6UDsAhPFWRETdobtLN05SK87NUBfImly2i8aKtruXycIveKzPmCfPzKGMmpN1Jh+vCMrUbcNqX8OUcxmhGvJwnQuBW4QEiepzl89Nl91iSwFmxaZoqLaB9lYUKke/z7FDHTpTWpZvtvxlZ0gvMVNLVp9NBNazolQ8eEjBG2PsQGD2cLUbM33mLTz+/VQjzZR3KXu5kQR9MloURILDsdxE1AyA4AkIXd4eMszEjA4Dv6CQK/jjrsgQKBgQDIiCt1OGmV2sqDBSn4nZNH7BzY3Hdnf+qsYUi+TXKhnQaT8XPKWZpKE/AcqsIKnANmO4sX0NL7ACBe7Rl1RcU9Mq5XuHhnkveFBVRRIHindzUfEN0WgdLy23qmJ2N+1i4FigelY0E5T2lojVb7wycAgAc6vflwE+eYf8W3968q0QKBgQCkRgsVCWWNMSLZeB0V9LV3Om2/UPWY/ovadTxAQtxg0Z75V6Wdu8u0hrYaPSeUK2ryaoE6HKgp7U8NiJGzgm2wpj7D2ysrPmhX5+CjiWkDMCuvWytVT7hLqhhLp7frZT39u8VhyfC8lE0xA67gAPsGSl1sBoZPwvvsmNAQ/h6rlQKBgQCtCtw9be2m88M3JnieYhOax8Po2u5qsLZoBBcKqLhXf7ISbhPWNFXwwJ29jxicoR5J1O3lIj09fVFxuLX0Pb3DXn2VksjLz8Wp0vx8eUHEeRis8xdleaf4C68du/WemOHjw8VvUWQSOVWjc/vwiumYA+K5LQAXWAXM0c1jP+e3UQKBgEWY/1z8TDATn0Yvo3MH6FIJSTIDJOqa/bmibdJ0AVZruUS+o4Y+aEGlyUU4n6og8wCdqv5p4b1Rs2pyb/hzy/FJndHw60s495A2x2/B6eHV6Mw0fhl42wYDnKOA/WUX0bnMcgXKPtpGoqWff9mb0L6LhyUbZpAodf95hr2MTIY5AoGBAIyPtYP6jRyR980h/Ud1MS0fBxymjQrR+kg3GWjnw0ZJJ8yFEXxDqLV8uLyXQKc89HGbI0cClWgZBTjfIPJ5U4Gl19Xlwx1SFrdgg5mGUqnMARTg7w1TG5QLSqNhZo2jgBM5FCJRbDUCO/MzLcFhTeGNva9yP7E7gW5/Dott9D7d
signtType: 2019082866535131
charset: 2019082866535131
wepay:
gataway-url: https://openapi.alipay.com/gateway.do
merchantId: 1551961491
appId: wx3498304dda39c5a1
partnerKey: itIuO65O9yKmemOu3S8g1S4orqvCGwXK
\ No newline at end of file
liquidnet:
system:
updating:
switch: false
info:
port: 9004
context: /order
name: liquidnet-service-order
logfile:
path: /data/logs
name: service-order
config: classpath:logback-spring.xml
file-max-size: 200MB
pattern-file: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-console: '%d{yyyy-MM-dd HH:mm:ss.SSS} [ %-5level] %thread [%logger{96}:%line] - %msg%n'
pattern-rolling-file-name: ${liquidnet.logfile.path}/${liquidnet.logfile.name}-%d{yyyy-MM-dd}.%i.log
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
url-pay:
pay: ${liquidnet.service.order.url-pay.pay}
check: ${liquidnet.service.order.url-pay.check}
localUrl: ${liquidnet.service.order.url-pay.localUrl}
adam:
url:${liquidnet.service.adam.url}
......@@ -15,10 +15,10 @@ liquidnet:
rabbitmq:
connection-timeout: 5000
mysql:
database-name: dev_ln_scene
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: dev_ln_scene
database: test_ln_scene
al-oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
......
liquidnet:
system:
updating:
switch: false
info:
port: 9003
context: /platform
name: liquidnet-service-platform
logfile:
path: /data/logs
name: service-platform
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
rabbitmq:
connection-timeout: 5000
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
shunfeng:
sk: ${liquidnet.client.admin.shunfeng.sk}
al-oss:
imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/"
endpoint: http://oss-cn-hangzhou.aliyuncs.com
accessKeyId: LTAI4FxrURzMvvu9reFgwY5o
accessKeySecret: Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9008
context: /sweet
name: liquidnet-service-sweet
logfile:
path: /data/logs
name: service-sweet
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
#以下为spring各环境个性配置
liquidnet:
system:
updating:
switch: false
info:
port: 9008
context: /sweet
name: liquidnet-service-sweet
logfile:
path: /data/logs
name: service-sweet
config: classpath:logback-spring.xml
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
#以下为spring各环境个性配置
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户手机号地域信息
* </p>
*
* @author liquidnet
* @since 2021-10-12
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamUserMobileLocate implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
private String uid;
/**
* 当前手机号
*/
private String mobile;
/**
* 姓名
*/
private String name;
/**
* 证件号
*/
private String idCard;
/**
* 0-INIT,1-NORMAL,2-INVALID
*/
private Integer state;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* 运营商
*/
private String corp;
/**
* 区号
*/
private String areaCode;
/**
* 邮编
*/
private String postCode;
/**
* 注册手机号
*/
private String registMobile;
/**
* 注册IP
*/
private String registAddr;
/**
* 注册来源
*/
private String registSource;
private LocalDateTime registAt;
/**
* 最近登录IP
*/
private String latestAddr;
/**
* 最近登录来源
*/
private String latestSource;
private LocalDateTime latestAt;
private LocalDateTime updatedAt;
private String comment;
}
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamUserMobileLocate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户手机号地域信息 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-10-11
*/
public interface AdamUserMobileLocateMapper extends BaseMapper<AdamUserMobileLocate> {
}
<?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.adam.mapper.AdamUserMobileLocateMapper">
</mapper>
......@@ -131,7 +131,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setCcode(cCode);
this.setState(1);
this.setBindAt(LocalDateTime.now());
this.setBindAt(couponInfoDto.getEffectAt());
this.setDuedAt(duedAt);
this.setUseRules(couponInfoDto.getUseRules());
......@@ -163,8 +163,6 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setUid(uid);
this.setState(1);
this.setBindAt(LocalDateTime.now());
// TODO: 2021/9/1
this.setBindAt(commonCouponBasicDto.getEffectAt());
this.setDuedAt(commonCouponBasicDto.getExpireAt());
......
......@@ -6,6 +6,10 @@ import java.util.List;
@Data
public class CandyCouponCodeOptParam {
/**
* ~candy_user_coupon.ucoupon_id
*/
private List<String> ucouponIds;
/**
* ~candy_coupon.coupon_id
*/
......
......@@ -114,13 +114,12 @@
cmc.event_limit,
cmc.event_at,
cmc.`operator`,
cmc.created_at,
cmc.created_at created_at,
cmc.updated_at
FROM candy_mgt_coupon cmc, candy_coupon cc
WHERE cmc.coupon_id = cc.coupon_id
AND cmc.state <![CDATA[<>]]> 2
FROM candy_mgt_coupon cmc
LEFT JOIN candy_coupon cc ON cmc.coupon_id = cc.coupon_id
WHERE cmc.state <![CDATA[<>]]> 2
AND cc.`exclusive` = 0
<if test="mcouponId != null and mcouponId != ''">
AND cmc.mcoupon_id = #{mcouponId,jdbcType=VARCHAR}
</if>
......@@ -136,8 +135,6 @@
<if test="busiType != null">
AND cc.busi_type = #{busiType,jdbcType=SMALLINT}
</if>
ORDER BY cmc.created_at DESC
</select>
<select id="selectMultiForMgtCouponMemberDto" resultMap="Rst_MgtCouponMemberDto">
select cc.coupon_id,
......
package com.liquidnet.service.kylin.dao;
import lombok.Data;
@Data
public class OrderExportDao {
private String performanceTitle;
private String userMobile;
private String userName;
}
......@@ -76,6 +76,8 @@ public class OrderRefundDao implements Serializable {
private String performanceTitle;
private String mailno;
public void setStatusName(Integer status){
this.status=status;
switch (status){
......@@ -101,10 +103,10 @@ public class OrderRefundDao implements Serializable {
this.statusName="退款失败";
break;
case 7:
this.statusName="二审通过等待退款";
this.statusName="财务通过等待退款";
break;
case 8:
this.statusName="二审驳回退款";
this.statusName="财务驳回退款";
break;
case 9:
this.statusName="已确认收货";
......
......@@ -20,4 +20,5 @@ public class OrderScriptDto {
String userId;
Integer number;
String couponCode;
Integer couponType;
}
......@@ -81,6 +81,7 @@ public class KylinOrderExpress implements Serializable, Cloneable {
private Integer isPrint;
private Integer printNum;
private String orderRefundsId;
/**
* 创建时间
......
......@@ -18,9 +18,9 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class KylinOrderRefunds implements Serializable {
public class KylinOrderRefunds implements Serializable, Cloneable{
private static final long serialVersionUID = 1L;
private static final long serialVersionUID = 5901424962410128552L;
@TableId(value = "mid", type = IdType.AUTO)
private Integer mid;
......
......@@ -52,4 +52,7 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<PerformanceExpressPerformanceListAdminDao> performanceExpressPerformanceList(Map<String, Object> map);
PerformanceExpressPerformanceListAdminDao countExpressNumber(String performancesId);
List<OrderExportDao> exportOrderByPerformanceIdAll(String performancesId);
List<OrderExportDao> exportOrderByPerformanceIdPay(String performancesId);
}
......@@ -34,10 +34,11 @@
<result column="created_at" property="createdAt"/>
</resultMap>
<select id="misRefundList" resultType="com.liquidnet.service.kylin.dao.OrderRefundDao" resultMap="misRefundListResult">
SELECT a.*, b.order_code, b.performance_title
SELECT a.*, b.order_code, b.performance_title, d.mailno
FROM kylin_order_refunds AS a
JOIN kylin_order_tickets AS b ON a.order_tickets_id = b.order_tickets_id
JOIN kylin_order_ticket_relations AS c ON a.order_tickets_id = c.order_id
LEFT JOIN kylin_order_express AS d ON d.order_refunds_id = a.order_refunds_id
<where>
<if test="orderTicketsId!=''">
AND a.order_tickets_id = #{orderTicketsId}
......@@ -75,7 +76,7 @@
</otherwise>
</choose>
</where>
ORDER BY mid DESC
ORDER BY a.mid DESC
</select>
<select id="selectRefundingCount" resultType="java.lang.Integer">
SELECT COUNT(*)
......
......@@ -54,6 +54,7 @@
<result column="number" property="number"/>
<result column="user_id" property="userId"/>
<result column="coupon_code" property="couponCode"/>
<result column="coupon_type" property="couponType"/>
</resultMap>
<select id="getPerformanceRefundOrderStatis" resultType="java.util.HashMap">
......@@ -267,7 +268,8 @@
ticket_id,
number,
user_id,
oc.coupon_code
oc.coupon_code,
oc.coupon_type
from (SELECT ot.mid,
order_tickets_id,
order_code,
......@@ -278,9 +280,8 @@
FROM kylin_order_tickets AS ot
inner JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
inner JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
WHERE status = 0 AND NOW() > DATE_SUB(ot.created_at,INTERVAL -(pay_countdown_minute+1) MINUTE)) as s
left JOIN kylin_order_coupons AS oc ON oc.order_id = s.order_tickets_id where oc.coupon_type != 101 or
oc.coupon_code is null
WHERE status = 0 AND ot.coupon_type !='exchange' AND NOW() > DATE_SUB(ot.created_at, INTERVAL -(pay_countdown_minute + 1) MINUTE)) as s
left JOIN kylin_order_coupons AS oc ON oc.order_id = s.order_tickets_id
<if test="userId!=''">
AND user_id = #{userId}
</if>
......@@ -312,7 +313,7 @@
INNER JOIN kylin_order_ticket_status kots ON kot.order_tickets_id = kots.order_id
INNER JOIN kylin_order_ticket_relations kotr ON kot.order_tickets_id = kotr.order_id
LEFT JOIN (SELECT * FROM kylin_order_express WHERE express_status NOT IN (1, 3)) AS oe ON oe.order_tickets_id =
LEFT JOIN (SELECT * FROM kylin_order_express WHERE express_status NOT IN (1, 3) AND send_type = 1) AS oe ON oe.order_tickets_id =
kot.order_tickets_id
-- LEFT JOIN (SELECT * FROM kylin_order_express_route ORDER BY mid DESC LIMIT 1) AS oer ON oe.order_express_id =
-- oer.order_express_id
......
......@@ -47,6 +47,12 @@
<result column="title" property="title"/>
</resultMap>
<resultMap id="OrderExportDaoResult" type="com.liquidnet.service.kylin.dao.OrderExportDao">
<result column="performance_title" property="performanceTitle"/>
<result column="user_mobile" property="userMobile"/>
<result column="user_name" property="userName"/>
</resultMap>
<resultMap id="PerformanceSimpleAllDaoResult" type="com.liquidnet.service.kylin.dao.PerformanceSimpleAllDao">
<result column="performances_id" property="performancesId"/>
<result column="title" property="title"/>
......@@ -278,7 +284,8 @@
LEFT JOIN kylin_order_ticket_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
WHERE
(ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no' and ots.transfer_status in (0,1,2,5)
(ots.`status` = 1 or ots.`status` = 0 or ots.`status` = 3 or ots.`status` = 6) and coupon_type ='no' and
ots.transfer_status in (0,1,2,5)
GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id
<where>
......@@ -354,7 +361,8 @@
INNER JOIN kylin_tickets AS t ON t.tickets_id = tr.ticket_id
INNER JOIN kylin_ticket_status AS ts ON ts.ticket_id = tr.ticket_id
<where>
<foreach collection="performanceList" item="performanceIds" index="index" open="performances_id in (" close=")" separator=",">
<foreach collection="performanceList" item="performanceIds" index="index" open="performances_id in ("
close=")" separator=",">
${performanceIds}
</foreach>
</where>
......@@ -518,7 +526,8 @@
</where>
order by sponsor_id
</select>
<select id="performanceExpressPerformanceList" resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
<select id="performanceExpressPerformanceList"
resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
SELECT
p.performances_id ,
p.title ,
......@@ -544,7 +553,8 @@
GROUP BY p.performances_id
ORDER BY p.created_at DESC
</select>
<select id="countExpressNumber" resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
<select id="countExpressNumber"
resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
SELECT
COUNT(*) total_number
FROM
......@@ -558,4 +568,23 @@
AND ots.transfer_status IN (0, 1, 3, 5)
AND ot.get_ticket_type = 'express'
</select>
<select id="exportOrderByPerformanceIdAll" resultMap="OrderExportDaoResult">
SELECT performance_title,user_mobile,user_name
FROM kylin_order_tickets kot
INNER JOIN kylin_order_ticket_relations as kotr on kotr.order_id = kot.order_tickets_id
INNER JOIN kylin_order_ticket_status as kots on kots.order_id = kot.order_tickets_id
WHERE performance_id = #{performancesId}
GROUP BY user_mobile;
</select>
<select id="exportOrderByPerformanceIdPay" resultMap="OrderExportDaoResult">
SELECT performance_title,user_mobile,user_name
FROM kylin_order_tickets kot
INNER JOIN kylin_order_ticket_relations as kotr on kotr.order_id = kot.order_tickets_id
INNER JOIN kylin_order_ticket_status as kots on kots.order_id = kot.order_tickets_id
WHERE performance_id = #{performancesId}
AND status IN (1, 3)
GROUP BY user_mobile;
</select>
</mapper>
......@@ -461,5 +461,34 @@ create table adam_member_code_batch
create index idx_adam_member_code_batch_no on adam_member_code_batch (batch_no);
alter table adam_member_code add batch_no int null comment '~`adam_member_code_batch.batch_no`' after mid;
-- >>------------------------------------------------------------------------------------|20211011手机号地域记录
drop table if exists adam_user_mobile_locate;
create table adam_user_mobile_locate
(
mid bigint unsigned auto_increment primary key,
uid varchar(64) not null,
mobile varchar(30) not null comment '当前手机号',
name varchar(50) comment '姓名',
id_card varchar(50) comment '证件号',
state tinyint comment '0-INIT,1-NORMAL,2-INVALID',
province varchar(50) comment '省份',
city varchar(50) comment '城市',
corp varchar(50) comment '运营商',
area_code varchar(50) comment '区号',
post_code varchar(50) comment '邮编',
regist_mobile varchar(50) comment '注册手机号',
regist_addr varchar(50) comment '注册IP',
regist_source varchar(50) comment '注册来源',
regist_at datetime(3),
latest_addr varchar(50) comment '最近登录IP',
latest_source varchar(50) comment '最近登录来源',
latest_at datetime(3),
updated_at datetime(3),
comment text
) engine = InnoDB comment '用户手机号地域信息';
create unique index uidx_auser_mobile_locate_id on adam_user_mobile_locate (uid);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......@@ -51,15 +51,16 @@ public class AdamMemberController {
memberVo.setUserMemberVo(userMemberVo);
if (null == userMemberVo || !userMemberVo.isActive()) {
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1));
} else if (userMemberVo.isActive()) {
memberVo.setRightsVoList(
userMemberVo.isOldMember() ? adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1)
: adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0)
: adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1)
);
}
} else {
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
memberVo.setUserMemberVo(null);
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 1));
}
}
return ResponseDto.success(memberVo);
......
......@@ -290,7 +290,14 @@ public class AdamUserController {
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) {
return ResponseDto.failure(ErrorMapping.get("10104"));
}
AdamRealInfoVo vo = adamUserService.identity(CurrentUtil.getCurrentUid(), name, idCard);
String currentUid = CurrentUtil.getCurrentUid();
AdamRealInfoVo realInfoVoByUid = adamRdmService.getRealInfoVoByUid(currentUid);
if (null != realInfoVoByUid) {
realInfoVoByUid.setName(SensitizeUtil.chineseName(realInfoVoByUid.getName()));
realInfoVoByUid.setIdCard(SensitizeUtil.custom(realInfoVoByUid.getIdCard(), 3, 2));
return ResponseDto.success(realInfoVoByUid);
}
AdamRealInfoVo vo = adamUserService.identity(currentUid, name, idCard);
vo.setName(SensitizeUtil.chineseName(vo.getName()));
vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2));
return ResponseDto.success(vo);
......
......@@ -41,6 +41,29 @@ public class AdamRdmService {
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | library of dict for locate by mobile */
/**
* 根据手机前缀(前7位)设置地理区域信息
*
* @param mobilePrefix 手机号(11位)前7位
* @param locateInfo 地理区域信息.eg:"{province}|{city}|{corp}|{areaCode}|{postCode}"
*/
public void setMobileLocateStr(String mobilePrefix, String locateInfo) {
redisUtil.set(AdamRedisConst.LIB_DICT_LOCATE_MOBILE.concat(mobilePrefix), locateInfo);
}
/**
* 根据手机号获取地理区域信息
*
* @param mobile 手机号(11位)
* @return String[]{ province,city,corp,areaCode,postCode }
*/
public String[] getMobileLocateArr(String mobile) {
String locateInfo = (String) redisUtil.get(AdamRedisConst.LIB_DICT_LOCATE_MOBILE.concat(mobile.substring(0, 7)));
return StringUtils.isEmpty(locateInfo) ? null : locateInfo.split("\\|");
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <Mobile, SMS CODE> */
public boolean setSmsCodeByMobile(String mobile, String smsCode) {
......
......@@ -29,10 +29,7 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
......@@ -262,6 +259,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
updateExistUserMemberVo.setState(1);
updateExistUserMemberVo.setExpiryAt(expiryAt);
updateExistUserMemberVo.setUpdatedAt(now);
long s = System.currentTimeMillis();
adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), updateExistUserMemberVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
......@@ -471,6 +469,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
(expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays())
.withHour(23).withMinute(59).withSecond(59)
);
updateExistUserMemberVo.setUpdatedAt(now);
toMqSqls.add(SqlMapping.get("adam_user_member.update"));
upsertUserMemberObjs.add(new Object[]{
updateExistUserMemberVo.getState(), updateExistUserMemberVo.getExpiryAt(), now, updateExistUserMemberVo.getUid()
......@@ -567,7 +566,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
orderVos.forEach(r -> vos.add(AdamMemberOrderSimpleVo.getNew().copy(r)));
pagedResult.setTotal(orderVos.size(), 20);
vos.sort(Comparator.comparing(AdamMemberOrderSimpleVo::getCreatedAt).reversed());
pagedResult.setTotal(orderVos.size(), 40);
pagedResult.setList(vos);
}
......
package com.liquidnet.service.adam.service.impl;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.service.adam.entity.AdamRealName;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.SqlMapping;
......@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
/**
......@@ -25,9 +28,9 @@ import java.util.List;
@Service
public class AdamRealNameServiceImpl implements IAdamRealNameService {
@Autowired
RedisUtil redisUtil;
private AdamRdmService adamRdmService;
@Autowired
QueueUtils queueUtils;
private QueueUtils queueUtils;
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
......@@ -41,10 +44,31 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
realName.getState(),
realName.getCreatedAt()
);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> initUserRealInfoObjs = CollectionUtil.linkedListObjectArr(),
updateUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_real_name.add"));
initUserRealInfoObjs.add(paramList.toArray());
String mobile = (String) CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_MOBILE);
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(mobile);
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.real_name"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
updateUserMobileLocateObjs.add(new Object[]{
realName.getName(), realName.getIdCard(), realName.getCreatedAt(), realName.getUid()
});
}
long s = System.currentTimeMillis();
// queueUtils.sendMsgByRedis(
// MQConst.AdamQueue.SQL_UCENTER.getKey(),
// SqlMapping.get("adam_real_name.add", paramList.toArray())
// );
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_real_name.add", paramList.toArray())
SqlMapping.gets(toMqSqls, initUserRealInfoObjs, updateUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
......
......@@ -187,9 +187,28 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
adamRdmService.setUserInfoVoByUid(uid, beforeUserInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
log.info("LNS_USER_MDF_MOBILE:[UID={},OLD_MOBILE={},NEW_MOBILE={},CLI_IP={},CLI_SOURCE={}]", uid, beforeUserInfoVo.getMobile(), mobile, CurrentUtil.getCliIpAddr(), CurrentUtil.getHeaderCliSource());
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> updateUserInfoObjs = CollectionUtil.linkedListObjectArr(),
updateUserMobileLocateObjs = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("adam_user.edit.mobile"));
updateUserInfoObjs.add(new Object[]{mobile, now, uid});
String[] mobileLocateArr = adamRdmService.getMobileLocateArr(mobile);
toMqSqls.add(SqlMapping.get("adam_user_mobile_locate.modify_mobile"));
if (null != mobileLocateArr && mobileLocateArr.length > 0) {
updateUserMobileLocateObjs.add(new Object[]{
mobile,
mobileLocateArr[0], mobileLocateArr[1], mobileLocateArr[2], mobileLocateArr[3], mobileLocateArr[4],
now, uid
});
}
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UCENTER.getKey(),
SqlMapping.get("adam_user.edit.mobile", mobile, now, uid)
SqlMapping.gets(toMqSqls, updateUserInfoObjs, updateUserMobileLocateObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
......
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 192.168.216.81:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-adam
......@@ -11,6 +11,7 @@ adam_user_info.update_by_member=UPDATE adam_user_info SET birthday=?, area=? WHE
# ----------------------------------------------------
adam_real_name.add=INSERT INTO adam_real_name (real_name_id, `uid`, `type`, `name`, id_card, `state`, created_at) VALUES (?,?,?,?,?,?,?)
adam_real_name.close=UPDATE adam_real_name SET `state`=2, updated_at=?, comment='close' WHERE `uid`=?
# ----------------------------------------------------
adam_third_party.add=INSERT INTO adam_third_party (`uid`, open_id, avatar, nickname, platform, `state`, created_at) values (?,?,?,?,?,?,?)
......@@ -64,9 +65,11 @@ candy_mgt_coupon.add_for_member=INSERT INTO candy_mgt_coupon (mcoupon_id, coupon
# ----------------------------------------------------
adam_user_busi_acct.add=INSERT INTO adam_user_busi_acct (`uid`, busi, uuid, `work`, ppwd, `state`, created_at) VALUES (?,?,?,?,?,?,?)
# ----------------------------------------------------
adam_user_mobile_locate.add=INSERT INTO adam_user_mobile_locate (`uid`, mobile, `state`, province, city, corp, area_code, post_code, regist_mobile, regist_addr, regist_source, regist_at, latest_addr, latest_source, latest_at, updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
adam_user_mobile_locate.modify_mobile=UPDATE adam_user_mobile_locate SET mobile=?, province=?, city=?, corp=?, area_code=?, post_code=?, updated_at=? WHERE uid=? AND `state`=1
adam_user_mobile_locate.real_name=UPDATE adam_user_mobile_locate SET name=?, id_card=?, updated_at=? WHERE uid=? AND `state`=1
adam_user_mobile_locate.close=UPDATE adam_user_mobile_locate SET `state`=2, updated_at=? WHERE uid=? AND `state`=1
# ----------------------------------------------------
......
import org.springframework.util.DigestUtils;
import com.liquidnet.commons.lang.util.IdentityUtils;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
public class TestAdam {
......@@ -11,28 +11,38 @@ public class TestAdam {
"adam:incr:member_no",
"adam:ad:info",
"adam:blacklist:member:uid",
"adam:valid:sms:code:mobile18518013286",
"adam:valid:sms:code:mobile18548596019",
"adam:valid:sms:code:mobile17701223310",
"adam:valid:sms:code:mobile13753596360",
"adam:valid:sms:code:mobile15901093014",
"adam:valid:sms:code:mobile15529282737",
"adam:identity:mobile:13724286255",
"adam:info:user:270535560903720963807517",
"adam:info:morder:2104440",
"adam:info:morder:2104440",
"adam:info:umember:2104440",
"adam:info:real_name:2104440",
"adam:info:third_party:2104440",
"adam:info:enters:2104440",
"adam:info:addresses:2104440",
"adam:identity:mobile:15529282737",
"adam:info:user:882883",
"adam:info:morder:882883",
"adam:info:umember:882883",
"adam:info:real_name:882883",
"adam:info:third_party:882883",
"adam:info:enters:882883",
"adam:info:addresses:882883",
"adam:info:member:code:GMRGBUQB30",
"adam:info:certification:1141181199209160192",
"adam:identity:mobile:18505123456",
"adam:identity:sso:245482441472573441815566",
"adam:info:user:310508344264376327445470",
"adam:identity:mobile:15529282737",
"adam:identity:sso:882883",
"adam:info:user:882883",
"adam:morder:2283655",
"adam:info:umember:1364947",
"adam:info:morder:1364947",
"adam:info:umember:1957341",
"adam:info:morder:331587681810022407979836",
"adam:info:member:simple",
"adam:info:member:category:1",
"adam:info:member:agreement",
"adam:info:member:rights:1",
"adam:info:member:price:1",
"adam:info:member:rights:v:1",
"adam:info:tags:music",
"adam:info:tags:sex",
......@@ -41,7 +51,7 @@ public class TestAdam {
"candy:basic:coupon_code:0Jxko0wLWQdoTTF4",
"candy:basic:coupon_code:MJIoHC2qVZ0lp9UI",
"candy:basic:user_coupon:270788673588551684937456",
"candy:basic:user_coupon:809406",
"candy:basic:coupon_info:20210906143324612",
"candy:basic:common_coupon",
......@@ -54,4 +64,14 @@ public class TestAdam {
System.out.printf("\n[%s] - idx:%s", key, idx);
}
}
@Test
public void test() {
System.out.println(IdentityUtils.aliThird("徐佳颖", "429004200001202586"));
}
@Test
public void testTmp() {
}
}
package com.liquidnet.service.candy.controller;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.CurrentUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.candy.service.ICandyCouponService;
......@@ -15,6 +17,7 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -22,6 +25,7 @@ import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -202,6 +206,29 @@ public class CandyCouponController {
return ResponseDto.success();
}
@PostMapping("useBackJxl")
@ApiOperation("回退券jxl")
@ApiImplicitParams({
@ApiImplicitParam(type = "form", dataType = "String", name = "uCouponIds", value = "uCouponIds", required = true),
@ApiImplicitParam(type = "form", dataType = "String", name = "uid", value = "uid", required = true),
})
public ResponseDto<Boolean> useBackCoupon(
@RequestParam("uCouponIds") @NotNull @NotBlank String uCouponIds,
@RequestParam("uid") @NotNull @NotBlank String uid
) {
BackCouponParam aNew = BackCouponParam.getNew();
aNew.setuCouponIds(uCouponIds);
aNew.setUid(uid);
List<BackCouponParam> backCouponParam = new ArrayList<>();
backCouponParam.add(aNew);
if (backCouponParam.size() > 100) {
return ResponseDto.failure("数据量不得大于100");
}
candyCouponService.useBackCoupon(backCouponParam);
return ResponseDto.success();
}
//兑换券
@PostMapping("receive")
@ApiOperation("领取券")
......
......@@ -215,7 +215,6 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, dtoList.size());
if (type == 1) {
if (baseVo.getState().equals(3) || dtoItem.getState().equals(5)) {
continue;
......@@ -394,19 +393,20 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
if (vo.getCouType() != -1) {
redisDataUtils.setCouponByUid(uid, dtoList);
LocalDateTime now = LocalDateTime.now();
//入库
if (dto.getCcouponId() == null) {
if (dto.getCcouponId() == null || (null != dto.getCcouponId() && dto.getUsedAt() != null)) {// 是公有券且为使用后退回的券,则更新
queueUtils.sendMsgByRedis(
MQConst.CandyQueue.COUPON_USE.getKey(),
SqlMapping.get("candy_coupon.use",
LocalDateTime.now(), content, uid, uCouponId
now, content, uid, uCouponId
)
);
} else {
queueUtils.sendMsgByRedis(
MQConst.CandyQueue.COUPON_USE.getKey(),
SqlMapping.get("candy_coupon.use_insert",
uCouponId, uid, dto.getCouponId(), LocalDateTime.now(), content
uCouponId, uid, dto.getCouponId(), dto.getBindAt(), dto.getDuedAt(), now, content, now
)
);
}
......@@ -477,13 +477,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
//删除code redis
redisDataUtils.delCouponByCode(ccode);
//添加baseDto -> baseDtoList
redisDataUtils.addCouponByUid(uid, baseDto,userCreateTime);
redisDataUtils.addCouponByUid(uid, baseDto, userCreateTime);
//入库
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> objsUserCoupon = CollectionUtil.linkedListObjectArr(),
objsCouponCode = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("candy_coupon.receive"));
objsUserCoupon.add(new Object[]{uCouponId, uid, 1, infoDto.getCouponId(), ccode, now, now, infoDto.getExpireAt()});
objsUserCoupon.add(new Object[]{uCouponId, uid, 1, infoDto.getCouponId(), ccode, infoDto.getEffectAt(), now, infoDto.getExpireAt()});
toMqSqls.add(SqlMapping.get("candy_coupon_code.receive"));// state:状态[0-可用|1-已用]
objsCouponCode.add(new Object[]{1, uCouponId, uid, mobile, now, now, dto.getCouponId(), ccode});
queueUtils.sendMsgByRedis(
......@@ -523,7 +523,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
String uid = CurrentUtil.getCurrentUid();
LocalDateTime userCreateTime;
try {
userCreateTime =DateUtil.Formatter.yyyyMMddHHmmssTrim.parse(CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED).toString());
userCreateTime = DateUtil.Formatter.yyyyMMddHHmmssTrim.parse(CurrentUtil.getTokenClaims().get(CurrentUtil.TOKEN_UCREATED).toString());
} catch (Exception e) {
userCreateTime = null;
}
......
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-candy
# -- 使用券 --
candy_coupon.use=UPDATE candy_user_coupon SET state = 3 ,used_at = ? , used_for = ? WHERE uid = ? AND ucoupon_id = ?
candy_coupon.use_insert=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , used_at , used_for ) VALUE ( ? , ? , 3 , ? , ? )
#candy_coupon.use_insert=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , used_at , used_for ) VALUE ( ? , ? , 3 , ? , ? ,? )
candy_coupon.use_insert=INSERT INTO candy_user_coupon (ucoupon_id , uid , state , coupon_id , bind_at, dued_at, used_at , used_for, created_at) VALUE ( ? , ? , 3 , ? , ? , ?, ?, ?, ?)
# -- 回退券 --
candy_coupon.back=UPDATE candy_user_coupon SET state = 1 WHERE uid = ? AND ucoupon_id = ?
# -- 领取券 --
......
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-chime
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-consumer-adam
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-consumer-dragon
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-consumer-kylin
# begin-test-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-test-这里是配置信息基本值
spring:
profiles:
include: service-consumer-sweet
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
#host: 172.17.207.177:7001
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-dragon
# begin-dev-这里是配置信息基本值
liquidnet:
cloudConfig:
profile: k8s-test
security:
username: user
password: user123
eureka:
instance:
prefer-ip-address: true
host: eureka-test-0.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-1.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka,eureka-test-2.eureka-test-svc.zhengzai-test:7001/eureka-server/eureka
# end-dev-这里是配置信息基本值
spring:
profiles:
include: service-executor-main
......@@ -875,6 +875,8 @@ alter table kylin_order_express add express_phone varchar(255) not null default
alter table kylin_order_express add send_express_address varchar(255) not null default '' comment '退票发货快递地址' after express_phone;
alter table kylin_order_express add appointment_time varchar(255) not null default '' comment '退票发货快递预约取件时间' after send_express_address;
alter table kylin_order_express add order_refunds_id varchar(255) NOT NULL DEFAULT '' COMMENT 'order_refunds_id' after order_tickets_id;
drop TABLE if exists `kylin_order_express_fee_info`;
CREATE TABLE `kylin_order_express_fee_info`
(
......
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