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

Commit 3a27fe17 authored by liuran's avatar liuran

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

parents 3674358a dcdeb634
...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.constant; ...@@ -3,6 +3,8 @@ package com.liquidnet.service.adam.constant;
public class AdamRedisConst { public class AdamRedisConst {
public static final String PREFIX = "adam:"; 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 VALID_SMS_CODE_MOBILE = PREFIX.concat("valid:sms:code:mobile");
public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:"); public static final String IDENTITY_MOBILE = PREFIX.concat("identity:mobile:");
......
...@@ -34,7 +34,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable { ...@@ -34,7 +34,7 @@ public class AdamUserMemberVo implements Serializable, Cloneable {
@JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR) @JsonFormat(shape=JsonFormat.Shape.STRING, pattern= DateUtil.DATE_FULL_STR)
private LocalDateTime updatedAt; private LocalDateTime updatedAt;
public static final LocalDateTime spotTime = LocalDateTime.parse("2021-12-31 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); public static final LocalDateTime spotTime = LocalDateTime.parse("2021-10-01 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
private static final AdamUserMemberVo obj = new AdamUserMemberVo(); private static final AdamUserMemberVo obj = new AdamUserMemberVo();
public static AdamUserMemberVo getNew() { public static AdamUserMemberVo getNew() {
......
...@@ -36,6 +36,7 @@ public class KylinRedisConst { ...@@ -36,6 +36,7 @@ public class KylinRedisConst {
public static final String ORDER_REFUND_ADDRESS = "kylin:order:refund:address"; 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 = "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 USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:"; public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
......
...@@ -6,9 +6,12 @@ import lombok.Data; ...@@ -6,9 +6,12 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
* @version V1.0 * <p>
* @class: OrderRefundPoundage * 退款手续费说明
* @Copyright: LightNet @ Copyright (c) 2021 * </p>
*
* @author jiangxiulong
* @since 2021-10-13
*/ */
@Data @Data
public class OrderRefundPoundage implements Cloneable { 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();
}
}
}
package com.liquidnet.service.kylin.dto.vo.returns; package com.liquidnet.service.kylin.dto.vo.returns;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao; import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao;
import lombok.Data; import lombok.Data;
...@@ -21,7 +20,7 @@ import java.util.List; ...@@ -21,7 +20,7 @@ import java.util.List;
@ApiModel @ApiModel
public class KylinOrderRefundBatchesPerformanceVo implements Serializable { public class KylinOrderRefundBatchesPerformanceVo implements Serializable {
private KylinPerformanceMisVo kylinPerformanceMisVo; private String title;
private List<PerformanceOrderStatisticalDao> performanceOrderStatisticalDao; private List<PerformanceOrderStatisticalDao> performanceOrderStatisticalDao;
} }
...@@ -66,6 +66,7 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable { ...@@ -66,6 +66,7 @@ public class KylinOrderRefundsVo implements Serializable,Cloneable {
private Integer status; private Integer status;
private String statusName; private String statusName;
private Integer refundCate;
@ApiModelProperty(value = "退款差异: 0申请退款返还库存 1自动退款无法取消退款不返还库存") @ApiModelProperty(value = "退款差异: 0申请退款返还库存 1自动退款无法取消退款不返还库存")
private Integer type; private Integer type;
......
package com.liquidnet.service.kylin.dto.vo.returns; 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.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations; import com.liquidnet.service.kylin.entity.KylinOrderTicketRelations;
import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus; import com.liquidnet.service.kylin.entity.KylinOrderTicketStatus;
...@@ -89,12 +90,15 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable { ...@@ -89,12 +90,15 @@ public class KylinOrderTicketPreVo implements Serializable, Cloneable {
private Integer isRefundExpress; private Integer isRefundExpress;
@ApiModelProperty(value = "手续费规则列表") @ApiModelProperty(value = "手续费规则列表")
private ArrayList<OrderRefundPoundage> refundPoundageList; private OrderRefundPoundageAll refundPoundageAll;
@ApiModelProperty(value = "订单使用优惠券列表") @ApiModelProperty(value = "订单使用优惠券列表")
private ArrayList<KylinOrderCoupons> orderCouponList; private ArrayList<KylinOrderCoupons> orderCouponList;
@ApiModelProperty(value = "退款快递统一寄回地址") @ApiModelProperty(value = "退款快递统一寄回地址")
private OrderRefundAddress refundAddress; private OrderRefundAddress refundAddress;
@ApiModelProperty(value = "快递状态")
private Integer expressStatus;
private static final KylinOrderTicketPreVo obj = new KylinOrderTicketPreVo(); private static final KylinOrderTicketPreVo obj = new KylinOrderTicketPreVo();
public static KylinOrderTicketPreVo getNew() { public static KylinOrderTicketPreVo getNew() {
......
...@@ -25,6 +25,9 @@ public interface IKylinOrderTicketsService { ...@@ -25,6 +25,9 @@ public interface IKylinOrderTicketsService {
//订单列表(状态 待支付 已支付 倒计时 已失效) //订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderList(); PageInfo<List<KylinOrderListVo>> orderList();
//订单列表(状态 待支付 已支付 倒计时 已失效)
PageInfo<List<KylinOrderListVo>> orderListMongo(Integer page,Integer size);
//订单详情 //订单详情
OrderDetailsVo orderDetails(String orderId); OrderDetailsVo orderDetails(String orderId);
...@@ -53,20 +56,18 @@ public interface IKylinOrderTicketsService { ...@@ -53,20 +56,18 @@ public interface IKylinOrderTicketsService {
ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId); ResponseDto<KylinOrderTicketPreVo> toOrderRefundDetails(String orderId);
//退款详情 //退款详情
ResponseDto<OrderRefundVo> orderRefundDetails(String orderId, String orderRefundId); ResponseDto<OrderRefundVo> orderRefundDetails(String orderId,String orderRefundId);
/** /**
* 发起退款 * 发起退款
* * @param orderId 订单id
* @param orderId 订单id * @param orderTicketEntitiesId 票单id
* @param orderTicketEntitiesId 票单id * @param reason 退款原因
* @param reason 退款原因 * @param picList 证据截图
* @param picList 证据截图 * @return 是否成功
* @return 是否成功
*/ */
String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList); String sendOrderRefund(String orderId, String orderTicketEntitiesId, String reason, String picList);
//退款撤回 //退款撤回
ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId); ResponseDto<Boolean> orderRefundWithdraw(String orderRefundsId);
} }
package com.liquidnet.service.kylin.service; package com.liquidnet.service.kylin.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao; import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao;
import com.liquidnet.service.kylin.entity.KylinPerformances; import com.liquidnet.service.kylin.entity.KylinPerformances;
...@@ -15,4 +16,12 @@ import java.util.List; ...@@ -15,4 +16,12 @@ import java.util.List;
* @since 2021-05-05 * @since 2021-05-05
*/ */
public interface IKylinPerformancesService { public interface IKylinPerformancesService {
/**
* 根据 券适用范围查询演出id
* @param useScope
* @param busiId
* @return
*/
ResponseDto<String> getPerformanceIdByInfo(Integer useScope,String busiId);
} }
...@@ -6,10 +6,13 @@ import com.liquidnet.service.kylin.entity.KylinTickets; ...@@ -6,10 +6,13 @@ import com.liquidnet.service.kylin.entity.KylinTickets;
public interface DamaiService { public interface DamaiService {
//同步演出 //同步演出
Boolean sycPerformance(String performanceId); Boolean sycPerformance(String performanceId);
//同步场次 //同步场次
Boolean sycTimes(long performanceId, KylinTicketTimes timesData); Boolean sycTimes(long performanceId, KylinTicketTimes timesData, Long venueId);
//同步票 //同步票
Boolean sycTicket(long timeId, KylinTickets ticketsData); Boolean sycTicket(long timeId, KylinTickets ticketsData);
//订单 //订单
Boolean sycOrder(long timeId, String ticketsId,long ticketsmId); Boolean sycOrder(long timeId, String ticketsId, long ticketsmId,long ticketIdMemberKey);
} }
package com.liquidnet.service.sweet.dto.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.*;
import java.io.Serializable;
@ApiModel(value = "SweetAntigenicQuestionParam", description = "防疫答题记录入参")
@Data
public class SweetAntigenicQuestionParam implements Serializable {
private static final long serialVersionUID = 9038992103808199663L;
@ApiModelProperty(position = 10, required = true, value = "type 1MDSK防疫答题 2草莓防疫答题", example = "1")
@NotNull(message = "type不能为空") @Min(value = 1, message = "type无效") @Max(value = 2, message = "type无效")
private Integer type;
@ApiModelProperty(position = 10, required = true, value = "openId", example = "openId")
@NotBlank(message = "openId不能为空")
private String openId;
@ApiModelProperty(position = 10, required = true, value = "unionId", example = "unionId")
@NotBlank(message = "unionId不能为空")
private String unionId;
@ApiModelProperty(position = 10, required = true, value = "姓名", example = "姓名")
@NotBlank(message = "姓名不能为空")
private String nickname;
@ApiModelProperty(position = 10, required = true, value = "居住地址", example = "居住地址")
@NotBlank(message = "居住地址不能为空")
private String address;
@ApiModelProperty(position = 10, required = true, value = "联系电话", example = "15811009011")
@NotBlank(message = "联系电话不能为空")
private String phone;
@ApiModelProperty(position = 10, required = true, value = "紧急联系人电话", example = "15811009011")
// @NotBlank(message = "紧急联系人电话不能为空")
private String urgentPhone;
@ApiModelProperty(position = 10, required = true, value = "keyword1", example = "1")
@NotBlank(message = "keyword1不能为空")
private String keyword1;
@ApiModelProperty(position = 10, required = false, value = "keyword11", example = "补充信息")
private String keyword11;
@ApiModelProperty(position = 10, required = true, value = "keyword2", example = "1")
@NotBlank(message = "keyword2不能为空")
private String keyword2;
@ApiModelProperty(position = 10, required = true, value = "keyword3", example = "1")
@NotBlank(message = "keyword3不能为空")
private String keyword3;
@ApiModelProperty(position = 10, required = true, value = "keyword4", example = "1")
@NotBlank(message = "keyword4不能为空")
private String keyword4;
@ApiModelProperty(position = 10, required = true, value = "keyword5", example = "1")
@NotBlank(message = "keyword5不能为空")
private String keyword5;
@ApiModelProperty(position = 10, required = true, value = "keyword6", example = "1")
@NotBlank(message = "keyword6不能为空")
private String keyword6;
@ApiModelProperty(position = 10, required = true, value = "keyword7", example = "1")
@NotBlank(message = "keyword7不能为空")
private String keyword7;
}
package com.liquidnet.service.sweet.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import me.chanjar.weixin.common.bean.oauth2.WxOAuth2AccessToken;
import java.io.Serializable;
/**
* <p>
* WxOAuth2AccessToken vo
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Data
@ApiModel
public class WechatTokenInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 3404938811111878417L;
@ApiModelProperty(value = "openId")
private String openId;
@ApiModelProperty(value = "unionId")
private String unionId;
private static final WechatTokenInfoVo obj = new WechatTokenInfoVo();
public static WechatTokenInfoVo getNew() {
try {
return (WechatTokenInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new WechatTokenInfoVo();
}
}
public WechatTokenInfoVo copy(WxOAuth2AccessToken source) {
if (null == source) return this;
this.setOpenId(source.getOpenId());
this.setUnionId(source.getUnionId());
return this;
}
}
package com.liquidnet.service.sweet.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import me.chanjar.weixin.common.bean.WxOAuth2UserInfo;
import java.io.Serializable;
/**
* <p>
* WxOAuth2UserInfo vo
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
@Data
@ApiModel
public class WechatUserInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 5067978046376025813L;
@ApiModelProperty(value = "普通用户的标识,对当前开发者帐号唯一")
private String openid;
@ApiModelProperty(value = "普通用户昵称")
private String nickname;
@ApiModelProperty(value = "普通用户性别,1为男性,2为女性")
private Integer sex;
@ApiModelProperty(value = "普通用户个人资料填写的城市")
private String city;
@ApiModelProperty(value = "普通用户个人资料填写的省份")
private String province;
@ApiModelProperty(value = "国家,如中国为CN")
private String country;
@ApiModelProperty(value = "用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像) 用户没有头像时该项为空")
private String headImgUrl;
@ApiModelProperty(value = "用户统一标识。针对一个微信开放平台帐号下的应用,同一用户的unionid是唯一的")
private String unionId;
@ApiModelProperty(value = "用户特权信息,json数组,如微信沃卡用户为(chinaunicom)")
private String[] privileges;
private static final WechatUserInfoVo obj = new WechatUserInfoVo();
public static WechatUserInfoVo getNew() {
try {
return (WechatUserInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new WechatUserInfoVo();
}
}
public WechatUserInfoVo copy(WxOAuth2UserInfo source) {
if (null == source) return this;
this.setOpenid(source.getOpenid());
this.setNickname(source.getNickname());
this.setSex(source.getSex());
this.setCity(source.getCity());
this.setProvince(source.getProvince());
this.setCountry(source.getCountry());
this.setHeadImgUrl(source.getHeadImgUrl());
this.setUnionId(source.getUnionId());
this.setPrivileges(source.getPrivileges());
return this;
}
}
...@@ -17,9 +17,9 @@ ...@@ -17,9 +17,9 @@
<module>liquidnet-service-adam-api</module> <module>liquidnet-service-adam-api</module>
<module>liquidnet-service-kylin-api</module> <module>liquidnet-service-kylin-api</module>
<module>liquidnet-service-dragon-api</module> <module>liquidnet-service-dragon-api</module>
<module>liquidnet-service-sweet-api</module>
<module>liquidnet-service-chime-api</module> <module>liquidnet-service-chime-api</module>
<module>liquidnet-service-candy-api</module> <module>liquidnet-service-candy-api</module>
<module>liquidnet-service-sweet-api</module>
</modules> </modules>
<dependencies> <dependencies>
<dependency> <dependency>
......
package com.liquidnet.client.admin.web.controller.zhengzai.candy; 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.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
...@@ -9,9 +8,11 @@ import com.liquidnet.client.admin.common.core.controller.BaseController; ...@@ -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.domain.AjaxResult;
import com.liquidnet.client.admin.common.core.page.TableDataInfo; import com.liquidnet.client.admin.common.core.page.TableDataInfo;
import com.liquidnet.client.admin.common.enums.BusinessType; import com.liquidnet.client.admin.common.enums.BusinessType;
import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.poi.ExcelUtil; 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.dto.CandyCouponCodeExcelDto;
import com.liquidnet.client.admin.zhengzai.candy.service.ICandyCouponCodeAdminService; 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.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
...@@ -21,6 +22,7 @@ import com.liquidnet.service.candy.dto.CandyUserCouponBasicDto; ...@@ -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.CandyCouponCodeListParam;
import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam; import com.liquidnet.service.candy.dto.admin.CandyCouponCodeOptParam;
import com.liquidnet.service.candy.entity.CandyCouponCode; import com.liquidnet.service.candy.entity.CandyCouponCode;
import com.liquidnet.service.candy.entity.CandyUserCoupon;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -42,6 +44,8 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -42,6 +44,8 @@ public class CandyCouponCodeAdminController extends BaseController {
private RedisUtil redisUtil; private RedisUtil redisUtil;
@Autowired @Autowired
private ICandyCouponCodeAdminService candyCouponCodeAdminService; private ICandyCouponCodeAdminService candyCouponCodeAdminService;
@Autowired
private ICandyUserCouponAdminService candyUserCouponAdminService;
@GetMapping() @GetMapping()
public String view(@RequestParam String couponId, ModelMap mmap) { public String view(@RequestParam String couponId, ModelMap mmap) {
...@@ -65,6 +69,7 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -65,6 +69,7 @@ public class CandyCouponCodeAdminController extends BaseController {
.select( .select(
CandyCouponCode::getCcode, CandyCouponCode::getCcode,
CandyCouponCode::getCouponId, CandyCouponCode::getCouponId,
CandyCouponCode::getUcouponId,
CandyCouponCode::getRedeemMobile, CandyCouponCode::getRedeemMobile,
CandyCouponCode::getState CandyCouponCode::getState
); );
...@@ -142,13 +147,13 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -142,13 +147,13 @@ public class CandyCouponCodeAdminController extends BaseController {
return AjaxResult.warn("无效传参"); return AjaxResult.warn("无效传参");
} }
String couponId = optParam.getCouponId(); String couponId = optParam.getCouponId();
List<String> ccodes = optParam.getCcodes(); List<String> ucouponIds = optParam.getUcouponIds();
if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ccodes)) { if (StringUtils.isBlank(couponId) || CollectionUtils.isEmpty(ucouponIds)) {
return AjaxResult.warn("参数无效"); return AjaxResult.warn("参数无效");
} }
LambdaQueryWrapper<CandyCouponCode> couponCodeLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCouponCode.class); LambdaQueryWrapper<CandyCouponCode> couponCodeLambdaQueryWrapper = Wrappers.lambdaQuery(CandyCouponCode.class);
couponCodeLambdaQueryWrapper.in(CandyCouponCode::getCcode, ccodes); couponCodeLambdaQueryWrapper.in(CandyCouponCode::getUcouponId, ucouponIds);
couponCodeLambdaQueryWrapper.eq(CandyCouponCode::getCouponId, couponId); couponCodeLambdaQueryWrapper.eq(CandyCouponCode::getCouponId, couponId);
List<CandyCouponCode> list = candyCouponCodeAdminService.list(couponCodeLambdaQueryWrapper); List<CandyCouponCode> list = candyCouponCodeAdminService.list(couponCodeLambdaQueryWrapper);
...@@ -158,34 +163,39 @@ public class CandyCouponCodeAdminController extends BaseController { ...@@ -158,34 +163,39 @@ public class CandyCouponCodeAdminController extends BaseController {
List<CandyUserCouponBasicDto> vos = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey); List<CandyUserCouponBasicDto> vos = (List<CandyUserCouponBasicDto>) redisUtil.get(uckey);
if (!CollectionUtils.isEmpty(vos)) { if (!CollectionUtils.isEmpty(vos)) {
CandyUserCouponBasicDto userCouponBasicDto = vos.parallelStream().filter(v -> v.getCouponId().equals(couponId)).findAny().orElse(null); vos.removeIf(rv -> rv.getUcouponId().equals(r.getUcouponId()));
}
if (null != userCouponBasicDto && userCouponBasicDto.getState() == 1) { ccodeUpdateList.add(r.getUcouponId());
String cckey = CandyRedisConst.BASIC_COUPON_CODE.concat(r.getCcode()); });
CandyCouponCodeDto dto = (CandyCouponCodeDto) redisUtil.get(cckey);
if (null != dto && dto.getState() == 1) { if (!CollectionUtils.isEmpty(ccodeUpdateList)) {
dto.setState(5); LocalDateTime now = LocalDateTime.now();
redisUtil.set(cckey, dto); String loginName = ShiroUtils.getLoginName(), comment = "RECOVER";
vos.removeIf(vr -> vr.getCouponId().equals(couponId)); LambdaUpdateWrapper<CandyUserCoupon> userCouponLambdaUpdateWrapper = Wrappers.lambdaUpdate(CandyUserCoupon.class);
redisUtil.set(uckey, vos); 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); 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(); couponCodeUpdateWrapper.set(CandyCouponCode::getState, 5);
updateCouponCode.setState(5); couponCodeUpdateWrapper.set(CandyCouponCode::getUpdatedAt, now);
updateCouponCode.setUpdatedAt(LocalDateTime.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); return toAjax(false);
} }
......
package com.liquidnet.client.admin.web.controller.zhengzai.kylin; package com.liquidnet.client.admin.web.controller.zhengzai.kylin;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.liquidnet.client.admin.common.annotation.Log; import com.liquidnet.client.admin.common.annotation.Log;
import com.liquidnet.client.admin.common.core.controller.BaseController; import com.liquidnet.client.admin.common.core.controller.BaseController;
...@@ -13,9 +14,12 @@ import com.liquidnet.service.kylin.dao.OrderRefundBatchDao; ...@@ -13,9 +14,12 @@ import com.liquidnet.service.kylin.dao.OrderRefundBatchDao;
import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao; import com.liquidnet.service.kylin.dao.PerformanceOrderStatisticalDao;
import com.liquidnet.service.kylin.dto.param.RefundBatchApplyParam; import com.liquidnet.service.kylin.dto.param.RefundBatchApplyParam;
import com.liquidnet.service.kylin.dto.param.RefundBatchSearchParam; import com.liquidnet.service.kylin.dto.param.RefundBatchSearchParam;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundBatchesPerformanceVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundBatchesPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundBatchesVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundBatchesVo;
import com.liquidnet.service.kylin.entity.KylinPerformanceStatus;
import com.liquidnet.service.kylin.entity.KylinPerformances;
import com.liquidnet.service.kylin.mapper.KylinPerformanceStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinPerformancesMapper;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -45,6 +49,12 @@ public class KylinOrderRefundBatchAdminController extends BaseController { ...@@ -45,6 +49,12 @@ public class KylinOrderRefundBatchAdminController extends BaseController {
@Autowired @Autowired
private KylinPerformancesAdminServiceImpl kylinPerformancesService; private KylinPerformancesAdminServiceImpl kylinPerformancesService;
@Autowired
private KylinPerformanceStatusMapper performanceStatusMapper;
@Autowired
private KylinPerformancesMapper performancesMapper;
@RequiresPermissions("kylin:refundBatch:view") @RequiresPermissions("kylin:refundBatch:view")
@GetMapping() @GetMapping()
public String operlog() public String operlog()
...@@ -83,16 +93,23 @@ public class KylinOrderRefundBatchAdminController extends BaseController { ...@@ -83,16 +93,23 @@ public class KylinOrderRefundBatchAdminController extends BaseController {
public AjaxResult applyPerformance(RefundBatchApplyParam refundBatchApplyParam) { public AjaxResult applyPerformance(RefundBatchApplyParam refundBatchApplyParam) {
String performancesId = refundBatchApplyParam.getTargetId(); String performancesId = refundBatchApplyParam.getTargetId();
//获取演出详情 //获取演出详情
KylinPerformanceMisVo performanceMisVo = kylinPerformancesService.performanceDetails(performancesId); KylinPerformances kylinPerformances = performancesMapper.selectOne(Wrappers.lambdaQuery(KylinPerformances.class)
if (null == performanceMisVo) { .eq(KylinPerformances::getPerformancesId, performancesId)
.select(KylinPerformances::getTitle)
);
KylinPerformanceStatus kylinPerformanceStatus = performanceStatusMapper.selectOne(Wrappers.lambdaQuery(KylinPerformanceStatus.class)
.eq(KylinPerformanceStatus::getPerformanceId, performancesId)
.select(KylinPerformanceStatus::getStatus)
);
if (null == kylinPerformances) {
return error("未找到该演出数据"); return error("未找到该演出数据");
} }
if (performanceMisVo.getStatus() != 7) { if (kylinPerformanceStatus.getStatus() != 7) {
return error("当前演出未下架,不可退款"); return error("当前演出未下架,不可退款");
} }
List<PerformanceOrderStatisticalDao> result = kylinPerformancesService.getPerformanceOrderStatisticalList(performancesId); List<PerformanceOrderStatisticalDao> result = kylinPerformancesService.getPerformanceOrderStatisticalList(performancesId);
KylinOrderRefundBatchesPerformanceVo kylinOrderRefundBatchesPerformanceVo = new KylinOrderRefundBatchesPerformanceVo(); KylinOrderRefundBatchesPerformanceVo kylinOrderRefundBatchesPerformanceVo = new KylinOrderRefundBatchesPerformanceVo();
kylinOrderRefundBatchesPerformanceVo.setKylinPerformanceMisVo(performanceMisVo); kylinOrderRefundBatchesPerformanceVo.setTitle(kylinPerformances.getTitle());
kylinOrderRefundBatchesPerformanceVo.setPerformanceOrderStatisticalDao(result); kylinOrderRefundBatchesPerformanceVo.setPerformanceOrderStatisticalDao(result);
return AjaxResult.success(kylinOrderRefundBatchesPerformanceVo); return AjaxResult.success(kylinOrderRefundBatchesPerformanceVo);
} }
......
...@@ -343,14 +343,13 @@ public class PerformancesExpressController extends BaseController { ...@@ -343,14 +343,13 @@ public class PerformancesExpressController extends BaseController {
list.forEach(r -> { list.forEach(r -> {
excelList.add(OrderExpressExportExcelListDao.getNew().copy(r)); excelList.add(OrderExpressExportExcelListDao.getNew().copy(r));
}); });
return excelUtil.exportExcel(excelList, "券码数据"); return excelUtil.exportExcel(excelList, "快递信息");
} }
/** /**
* 下载导入模版 * 下载导入模版
* @return * @return
*/ */
@RequiresPermissions("kylin:performancesExpress:view")
@GetMapping("/importTemplate") @GetMapping("/importTemplate")
@ResponseBody @ResponseBody
public AjaxResult importTemplate() public AjaxResult importTemplate()
......
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);
}
}
...@@ -317,7 +317,7 @@ ...@@ -317,7 +317,7 @@
</p> </p>
<input type="text" class="form-control" id="interestsTitle" name="interestsTitle" placeholder="请输入标题" th:value="${mr.title}"/> <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}"/> <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"> <div class="member-coupes-item">
<ul th:each="mrc:${couponMemberDtoListMap.get(mr.mrightsId)}"> <ul th:each="mrc:${couponMemberDtoListMap.get(mr.mrightsId)}">
<div class="member-coupes-inner"> <div class="member-coupes-inner">
......
...@@ -69,7 +69,7 @@ ...@@ -69,7 +69,7 @@
formatter: function(value, row, index) { formatter: function(value, row, index) {
var actions = []; 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 ' + 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(''); return actions.join('');
} }
}] }]
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" > <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('会员订单详情')" /> <th:block th:include="include :: header('会员订单详情')" />
<style type="text/css">.user-info-head{position:relative;display:inline-block;}.user-info-head:hover:after{content:'\f030';position:absolute;left:0;right:0;top:0;bottom:0;color:#eee;background:rgba(0,0,0,0.5);font-family:FontAwesome;font-size:24px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;line-height:110px;border-radius:50%;}</style> <style type="text/css">.user-info-head{position:relative;display:inline-block;}.user-info-head:hover:after{content:'\f030';position:absolute;left:0;right:0;top:0;bottom:0;color:#eee;background:rgba(0,0,0,0.5);font-family:FontAwesome;font-size:24px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;cursor:pointer;line-height:110px;border-radius:50%;}</style>
...@@ -121,9 +121,10 @@ ...@@ -121,9 +121,10 @@
<a class="btn btn-danger" href="#" onclick="closeItem()"> <a class="btn btn-danger" href="#" onclick="closeItem()">
<i class="fa fa-reply-all"></i>&nbsp;&nbsp;&nbsp; <i class="fa fa-reply-all"></i>&nbsp;&nbsp;&nbsp;
</a> </a>
<a class="btn btn-primary" style="margin-left: 15px;" href="#member-refund-form" data-toggle="modal" shiro:hasPermission="adam:order:orderlist:refund" th:if="${orderDetailsVo.adamMemberOrderVo.state == 1 && orderDetailsVo.adamUserMemberVo.state == 1}"> <a class="btn btn-primary" style="margin-left: 15px;" href="#member-refund-form" data-toggle="modal" shiro:hasPermission="adam:order:orderlist:refund" th:if="${orderDetailsVo.adamMemberOrderVo.state == 1 && orderDetailsVo.adamUserMemberVo.state == 1 && orderDetailsVo.adamMemberOrderVo.mode == 0}">
申请退款 申请退款
</a> </a>
</div> </div>
<div id="member-refund-form" class="modal fade" aria-hidden="true"> <div id="member-refund-form" class="modal fade" aria-hidden="true">
...@@ -180,7 +181,7 @@ ...@@ -180,7 +181,7 @@
</section> </section>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<script> <script th:inline="javascript">
var pricePaid = [[${orderDetailsVo.adamMemberOrderVo.pricePaid}]]; var pricePaid = [[${orderDetailsVo.adamMemberOrderVo.pricePaid}]];
$("#form-member-order-refund").validate({ $("#form-member-order-refund").validate({
......
...@@ -82,7 +82,7 @@ ...@@ -82,7 +82,7 @@
</div> </div>
<th:block th:include="include :: footer" /> <th:block th:include="include :: footer" />
<script th:inline="javascript"> <script th:inline="javascript">
var detailFlag = [[${@permission.hasPermi('adam:order:orderList')}]]; var detailFlag = [[${@permission.hasPermi('adam:order:orderlist:detail')}]];
var prefix = ctx + "adam/order/orderList"; var prefix = ctx + "adam/order/orderList";
var orderStatusDic = [[${@dict.getType('zhengzai_member_order_status')}]]; var orderStatusDic = [[${@dict.getType('zhengzai_member_order_status')}]];
......
...@@ -31,12 +31,12 @@ ...@@ -31,12 +31,12 @@
<a class="btn btn-warning multiple disabled" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export"> <a class="btn btn-warning multiple disabled" onclick="$.table.exportExcel()" shiro:hasPermission="candy:coupon:code:export">
<i class="fa fa-download"></i> 导出 <i class="fa fa-download"></i> 导出
</a> </a>
<a class="btn btn-primary multiple disabled selectChangeShowInvalid" style="display: none" onclick="invalidHandler()" shiro:hasPermission="candy:coupon:code:invalid"> <!-- <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> 批量失效 <!-- <i class="fa fa-edit"></i> 批量失效-->
</a> <!-- </a>-->
<a class="btn btn-danger multiple disabled selectChangeShowRecover" style="display: none" onclick="recoverHandler()" shiro:hasPermission="candy:coupon:code:recover"> <!-- <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> 批量退回 <!-- <i class="fa fa-remove"></i> 批量退回-->
</a> <!-- </a>-->
</div> </div>
<div class="col-sm-12 select-table table-striped"> <div class="col-sm-12 select-table table-striped">
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
if (row.state === 0) { 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> '); 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) { } 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(''); return actions.join('');
} }
...@@ -120,26 +120,27 @@ ...@@ -120,26 +120,27 @@
} }
} }
function recoverHandler(ccode) { function recoverHandler(ccode, ucouponId) {
if (ccode !== null && ccode !== undefined) { 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); $.operate.submit('code/recover', "post", "json", data);
} else {
$.operate.batchProcessingForCouponCode(couponId, 2);
} }
// else {
// $.operate.batchProcessingForCouponCode(couponId, 2);
// }
} }
function selectChange() { function selectChange() {
let val = $(".selectChange").val(); // let val = $(".selectChange").val();
console.log(typeof val); // console.log(typeof val);
if (val === '0') { // if (val === '0') {
$(".selectChangeShowInvalid").show(); // $(".selectChangeShowInvalid").show();
} else if (val === '1') { // } else if (val === '1') {
// $(".selectChangeShowRecover").show(); // // $(".selectChangeShowRecover").show();
} else { // } else {
$(".selectChangeShowInvalid").hide(); // $(".selectChangeShowInvalid").hide();
$(".selectChangeShowRecover").hide(); // $(".selectChangeShowRecover").hide();
} // }
} }
</script> </script>
</body> </body>
......
...@@ -171,10 +171,10 @@ ...@@ -171,10 +171,10 @@
<input type="text" id="searchIpt" autocomplete="off" class="layui-input" placeholder="全部"> <input type="text" id="searchIpt" autocomplete="off" class="layui-input" placeholder="全部">
<ul id="dataList" style="position: absolute;"></ul> <ul id="dataList" style="position: absolute;"></ul>
</div> </div>
<select name="bindType" id="selectTwo"> <select name="bindType" id="selectTwo" placeholder="请选择场次">
<option value="">所有</option> <option value="">所有111</option>
</select> </select>
<select name="bindType" id="selectThree"> <select name="bindType" id="selectThree" placeholder="请选择票种">
<option value="">所有</option> <option value="">所有</option>
</select> </select>
</div> </div>
...@@ -271,10 +271,15 @@ ...@@ -271,10 +271,15 @@
let str = ''; let str = '';
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{ promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) { if (res.value.length>0) {
let filterData = [];
searchData = res.value; searchData = res.value;
searchData.forEach((item,index)=>{ let obj = {};
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>` 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); $('#dataList').html(str);
} else { } else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>'); $('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
...@@ -313,11 +318,19 @@ ...@@ -313,11 +318,19 @@
return return
} }
let str = `<option value="0" label="">所有</option>`; let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{ searchData.forEach(item=>{
if (item.performancesId == id) { 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 selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str); $('#selectTwo').empty().append(str);
......
...@@ -275,9 +275,13 @@ ...@@ -275,9 +275,13 @@
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{ promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) { if (res.value.length>0) {
searchData = res.value; searchData = res.value;
searchData.forEach((item,index)=>{ let obj = {};
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>` 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); $('#dataList').html(str);
} else { } else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>'); $('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
...@@ -315,11 +319,19 @@ ...@@ -315,11 +319,19 @@
return return
} }
let str = `<option value="0" label="">所有</option>`; let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{ searchData.forEach(item=>{
if (item.performancesId == id) { 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 selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str); $('#selectTwo').empty().append(str);
......
...@@ -162,10 +162,10 @@ ...@@ -162,10 +162,10 @@
<select name="bindType" id="selectThree"> <select name="bindType" id="selectThree">
<option value="">所有</option> <option value="">所有</option>
</select> </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="totalGeneral"></span>
兑换库存:<span id="totalExchange"></span> 兑换库存:<span id="totalExchange"></span>
</span> </span> -->
</div> </div>
<div class="changeData"> <div class="changeData">
<div id="modalOne"> <div id="modalOne">
...@@ -219,9 +219,13 @@ ...@@ -219,9 +219,13 @@
promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{ promiseMethods(ctx+'kylin/base/performance/status','get',data,'application/x-www-form-urlencoded').then(res=>{
if (res.value.length>0) { if (res.value.length>0) {
searchData = res.value; searchData = res.value;
searchData.forEach((item,index)=>{ let obj = {};
str+= `<li class="selectData" onclick="selectOne('${item.performancesId}','${item.title}')">${item.title}</li>` 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); $('#dataList').html(str);
} else { } else {
$('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>'); $('#dataList').html('<li style="width:100%;text-align:center;color:#ccc;">--- 暂无数据 ---</li>');
...@@ -232,14 +236,19 @@ ...@@ -232,14 +236,19 @@
$("#searchIpt").val(name); $("#searchIpt").val(name);
showId = id; showId = id;
let str = `<option value="0" label="">所有</option>`; let str = `<option value="0" label="">所有</option>`;
let obj = {};
let filterData = [];
searchData.forEach(item=>{ searchData.forEach(item=>{
if (item.performancesId == id) { if (item.performancesId == id) {
$('#showNum').show(); filterData.push(item)
$('#totalExchange').text(item.totalExchange);
$('#totalGeneral').text(item.totalGeneral);
str+= `<option value='${item.timeId}' label=${item.timeTitle}>${item.timeTitle}</option>`;
} }
}) })
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 selectTwoId = ''; // 选中演出下级的ID
selectThreeId = ''; // 选中演出三级的ID selectThreeId = ''; // 选中演出三级的ID
$('#selectTwo').empty().append(str); $('#selectTwo').empty().append(str);
...@@ -325,6 +334,14 @@ ...@@ -325,6 +334,14 @@
} }
promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{ promiseMethods('/candy/coupon/mgt/add','post',JSON.stringify(data),'application/json').then(res=>{
layer.msg('创建成功!'); layer.msg('创建成功!');
let data = {
pageSize: 10,
pageNum: 1,
orderByColumn: 'createdAt',
isAsc: 'desc',
couType: 3
}
$.operate.save(prefix + "/list", data);
closeItem(); closeItem();
}) })
} }
......
...@@ -236,7 +236,7 @@ ...@@ -236,7 +236,7 @@
let sendTimeType = ''; let sendTimeType = '';
function getMallList() { function getMallList() {
let data = { let data = {
title: '' title: $('#searchIpt').val()
} }
let str = ''; let str = '';
promiseMethods(phpMallUrl + '/admin/goodListForQuick','get',data,'application/x-www-form-urlencoded').then(res=>{ promiseMethods(phpMallUrl + '/admin/goodListForQuick','get',data,'application/x-www-form-urlencoded').then(res=>{
...@@ -285,7 +285,7 @@ ...@@ -285,7 +285,7 @@
}); });
$("#searchIpt").keyup(function(){ $("#searchIpt").keyup(function(){
searchVal = $("#searchIpt").val() searchVal = $("#searchIpt").val()
search() getMallList()
}); });
$("input[name=sendType]").change(function(e){ $("input[name=sendType]").change(function(e){
sendType = e.target.value; sendType = e.target.value;
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "代金券", modalName: "代金券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("代金码列表", url);
} }
</script> </script>
</body> </body>
......
<!DOCTYPE html> <!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
<head> <head>
<th:block th:include="include :: header('代金券')" /> <th:block th:include="include :: header('满减券')" />
</head> </head>
<body class="gray-bg"> <body class="gray-bg">
<div class="container-div"> <div class="container-div">
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "满减券", modalName: "满减券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("满减码列表", url);
} }
</script> </script>
</body> </body>
......
...@@ -64,6 +64,7 @@ ...@@ -64,6 +64,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "兑换券", modalName: "兑换券",
columns: [ columns: [
{ {
...@@ -126,7 +127,7 @@ ...@@ -126,7 +127,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("兑换码列表", url);
} }
</script> </script>
</body> </body>
......
...@@ -66,6 +66,7 @@ ...@@ -66,6 +66,7 @@
// updateUrl: prefix + "/edit/{id}", // updateUrl: prefix + "/edit/{id}",
// exportUrl: prefix + "/export", // exportUrl: prefix + "/export",
sortName: "createdAt", sortName: "createdAt",
sortOrder: "desc",
modalName: "折扣券", modalName: "折扣券",
columns: [ columns: [
{ {
...@@ -145,7 +146,7 @@ ...@@ -145,7 +146,7 @@
/* 查看码列表 */ /* 查看码列表 */
function couponCodeList(couponId) { function couponCodeList(couponId) {
var url = 'candy/coupon/code?couponId=' + couponId; var url = 'candy/coupon/code?couponId=' + couponId;
$.modal.openTab("查看码列表", url); $.modal.openTab("折扣码列表", url);
} }
</script> </script>
</body> </body>
......
...@@ -106,6 +106,28 @@ ...@@ -106,6 +106,28 @@
<!-- <i class="fa fa-download"></i> 导出--> <!-- <i class="fa fa-download"></i> 导出-->
<!-- </a>--> <!-- </a>-->
<!-- </div>--> <!-- </div>-->
<div class="col-sm-12 search-collapse">
<form id="formId2">
<div class="select-list">
<ul>
<li>
<label>短订单号:</label>
<input type="text" name="findCode"/>
</li>
<li>
<a class="btn btn-primary btn-rounded btn-sm" onclick="findCode()"><i
class="fa fa-search"></i>&nbsp;查询</a>
</li>
<li>
<label>长订单号:</label>
<input type="text" name="allCode" readonly/>
</li>
</ul>
</div>
</form>
</div>
<div class="col-sm-12 select-table table-bordered"> <div class="col-sm-12 select-table table-bordered">
<table id="bootstrap-table"></table> <table id="bootstrap-table"></table>
</div> </div>
...@@ -122,6 +144,16 @@ ...@@ -122,6 +144,16 @@
var getTicketTypeDic = [[${@dict.getType('zhengzai_get_ticket_type')}]]; var getTicketTypeDic = [[${@dict.getType('zhengzai_get_ticket_type')}]];
var payTypeDic = [[${@dict.getType('zhengzai_pay_type')}]]; var payTypeDic = [[${@dict.getType('zhengzai_pay_type')}]];
var prefix2 = ctx + "kylin/refund";
function findCode() {
var shortCode = document.getElementsByName("findCode")[0].value;
var allCode = document.getElementsByName("allCode")[0];
$.operate.get(prefix2 + "/search/code?code=" + shortCode + "&type=2", function (res) {
allCode.value = res.msg;
});
}
$(function() { $(function() {
var options = { var options = {
url: prefix + "/list", url: prefix + "/list",
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group" >
<label class="col-sm-3 control-label is-required">手续费:</label> <label class="col-sm-3 control-label is-required">手续费:</label>
<div class="col-sm-8" th:if="*{isRefundPoundage==1}"> <div class="col-sm-8" th:if="*{isRefundPoundage==1}">
<div class="radio check-box"> <div class="radio check-box">
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group">
<label class="col-sm-3 control-label is-required">退优惠券:</label> <label class="col-sm-3 control-label is-required">退优惠券:</label>
<div class="col-sm-8" th:if="*{isRefundVoucher==1}"> <div class="col-sm-8" th:if="*{isRefundVoucher==1}">
<div class="radio check-box"> <div class="radio check-box">
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group">
<label class="col-sm-3 control-label is-required">快递费:</label> <label class="col-sm-3 control-label is-required">快递费:</label>
<div class="col-sm-8" th:if="*{isRefundExpress==1}"> <div class="col-sm-8" th:if="*{isRefundExpress==1}">
<div class="radio check-box"> <div class="radio check-box">
...@@ -95,19 +95,19 @@ ...@@ -95,19 +95,19 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group">
<label class="col-sm-3 control-label">收货人:</label> <label class="col-sm-3 control-label">收货人:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.name}" class="form-control" type="text" readonly> <input name="title" th:field="*{orderRefundAddress.name}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group">
<label class="col-sm-3 control-label">电话:</label> <label class="col-sm-3 control-label">电话:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.phone}" class="form-control" type="text" readonly> <input name="title" th:field="*{orderRefundAddress.phone}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group" style="display: none"> <div class="form-group">
<label class="col-sm-3 control-label">收货地址:</label> <label class="col-sm-3 control-label">收货地址:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="title" th:field="*{orderRefundAddress.address}" class="form-control" type="text" readonly> <input name="title" th:field="*{orderRefundAddress.address}" class="form-control" type="text" readonly>
......
...@@ -325,7 +325,7 @@ ...@@ -325,7 +325,7 @@
var rows = result.rows; var rows = result.rows;
var html = '<option value="">全部</option>'; var html = '<option value="">全部</option>';
$.each(rows,function(index,value){ $.each(rows,function(index,value){
html += '<option value="'+value.ticketsId+'">'+value.title+'</option>' html += '<option value="'+value.ticketsId+'">'+value.title+'-'+value.timeTitle+'</option>'
}); });
$('#selectTicketDiv').find('#openTicketListTplSelect').html(html); $('#selectTicketDiv').find('#openTicketListTplSelect').html(html);
openTicketList("openTicketListTpl", performanceId); openTicketList("openTicketListTpl", performanceId);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
<option value="2">取消退款</option> <option value="2">取消退款</option>
<option value="1">运营审核通过</option> <option value="1">运营审核通过</option>
<option value="5">运营审核驳回退款</option> <option value="5">运营审核驳回退款</option>
<option value="9">已确认收货</option>
<option value="7">财务审核通过等待退款</option> <option value="7">财务审核通过等待退款</option>
<option value="8">财务审核驳回退款</option> <option value="8">财务审核驳回退款</option>
<option value="4">完成退款</option> <option value="4">完成退款</option>
...@@ -40,6 +41,7 @@ ...@@ -40,6 +41,7 @@
<option value="2">取消退款</option> <option value="2">取消退款</option>
<option value="1">运营审核通过</option> <option value="1">运营审核通过</option>
<option value="5">运营审核驳回退款</option> <option value="5">运营审核驳回退款</option>
<option value="9">已确认收货</option>
<option value="7">财务审核通过等待退款</option> <option value="7">财务审核通过等待退款</option>
<option value="8">财务审核驳回退款</option> <option value="8">财务审核驳回退款</option>
<option value="4">完成退款</option> <option value="4">完成退款</option>
...@@ -48,9 +50,11 @@ ...@@ -48,9 +50,11 @@
</shiro:hasPermission> </shiro:hasPermission>
<shiro:hasPermission name="kylin:refund:review"> <shiro:hasPermission name="kylin:refund:review">
<shiro:lacksRole name="admin"> <shiro:lacksRole name="admin">
<option value="0,8">全部</option> <option value="0,8,4,6">全部</option>
<option value="0">请求退款</option> <option value="0">请求退款</option>
<option value="8">财务审核驳回退款</option> <option value="8">财务审核驳回退款</option>
<option value="4">完成退款</option>
<option value="6">退款失败</option>
</shiro:lacksRole> </shiro:lacksRole>
</shiro:hasPermission> </shiro:hasPermission>
<shiro:hasPermission name="kylin:refund:ticketAudit"> <shiro:hasPermission name="kylin:refund:ticketAudit">
...@@ -60,9 +64,11 @@ ...@@ -60,9 +64,11 @@
</shiro:hasPermission> </shiro:hasPermission>
<shiro:hasPermission name="kylin:refund:execute"> <shiro:hasPermission name="kylin:refund:execute">
<shiro:lacksRole name="admin"> <shiro:lacksRole name="admin">
<option value="1,9">全部</option> <option value="1,9,4,6">全部</option>
<option value="1">运营审核通过</option> <option value="1">运营审核通过</option>
<option value="9">已确认收货</option> <option value="9">已确认收货</option>
<option value="4">完成退款</option>
<option value="6">退款失败</option>
</shiro:lacksRole> </shiro:lacksRole>
</shiro:hasPermission> </shiro:hasPermission>
</select> </select>
......
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
layer.msg(result.msg); layer.msg(result.msg);
return false; return false;
} }
$("#performanceTitle").text(result.data.kylinPerformanceMisVo.title); $("#performanceTitle").text(result.data.title);
var options = { var options = {
data: result.data.performanceOrderStatisticalDao, data: result.data.performanceOrderStatisticalDao,
pagination: false, pagination: false,
......
...@@ -60,9 +60,9 @@ ...@@ -60,9 +60,9 @@
</a> </a>
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="ibox-content" style="height:480px">
<div class="echarts" id="provinceDataChart"></div> <div class="echarts" id="provinceDataChart" style = "height:400px"></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -90,9 +90,9 @@ ...@@ -90,9 +90,9 @@
</a> </a>
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="ibox-content" style="height:480px">
<div class="echarts" id="cityDataChart"></div> <div class="echarts" id="cityDataChart" style="height:400px"></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -120,9 +120,9 @@ ...@@ -120,9 +120,9 @@
</a> </a>
</div> </div>
</div> </div>
<div class="ibox-content"> <div class="ibox-content" style="height:480px">
<div class="echarts" id="ageDataChart"></div> <div class="echarts" id="ageDataChart" style="height:400px"></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -281,14 +281,21 @@ ...@@ -281,14 +281,21 @@
grid:{ grid:{
x:30, x:30,
x2:40, x2:40,
y2:24 y2:100
}, },
calculable : true, calculable : true,
xAxis : [ xAxis : [
{ {
type : 'category', type : 'category',
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] // data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data : name data : name,
axisLabel:{
formatter:function(value){
return value.split("").join("\n");
}
// interval: 0,
// rotate: 30
}
} }
], ],
yAxis : [ yAxis : [
...@@ -390,14 +397,21 @@ ...@@ -390,14 +397,21 @@
grid:{ grid:{
x:30, x:30,
x2:40, x2:40,
y2:24 y2:100
}, },
calculable : true, calculable : true,
xAxis : [ xAxis : [
{ {
type : 'category', type : 'category',
// data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月'] // data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
data : name data : name,
axisLabel:{
formatter:function(value){
return value.split("").join("\n");
}
// interval: 0,
// rotate: 30
}
} }
], ],
yAxis : [ yAxis : [
...@@ -615,7 +629,8 @@ ...@@ -615,7 +629,8 @@
}, },
tooltip : { tooltip : {
trigger: 'item', trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)" // formatter: "{a} <br/>{b} : {c} ({d}%)"
formatter: "{b} ({d}%)"
}, },
legend: { legend: {
orient : 'vertical', orient : 'vertical',
...@@ -634,7 +649,8 @@ ...@@ -634,7 +649,8 @@
normal:{ normal:{
label:{ label:{
show:true, show:true,
formatter: "{b} :\n {c} \n ({d}%)", // formatter: "{b} :\n {c} \n ({d}%)",
formatter: "{b} :\n {d}%",
position:"inner" position:"inner"
} }
} }
......
<!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>
...@@ -171,6 +171,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -171,6 +171,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
updateInfoMemberOrder.setMid(memberOrder.getMid()); updateInfoMemberOrder.setMid(memberOrder.getMid());
updateInfoMemberOrder.setState(4); updateInfoMemberOrder.setState(4);
updateInfoMemberOrder.setUpdatedAt(now); updateInfoMemberOrder.setUpdatedAt(now);
updateInfoMemberOrder.setComment("R");
adamMemberOrderMapper.updateById(updateInfoMemberOrder); adamMemberOrderMapper.updateById(updateInfoMemberOrder);
String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid(); String moKey = AdamRedisConst.INFO_MEMBER_ORDER + memberOrder.getUid();
...@@ -184,9 +185,10 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -184,9 +185,10 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
vos.set(idx, vo); vos.set(idx, vo);
redisUtil.set(moKey, vos); redisUtil.set(moKey, vos);
if (memberRefund.getRenewable() == 2) { if (memberRefund.getRenewable() == 2) {// 拉黑用户,直接更新用户会员状态信息
AdamUserMember updateUserMember = new AdamUserMember(); AdamUserMember updateUserMember = new AdamUserMember();
updateUserMember.setState(2); updateUserMember.setState(2);
updateUserMember.setExpiryAt(now);
updateUserMember.setUpdatedAt(now); updateUserMember.setUpdatedAt(now);
updateUserMember.setComment("R"); updateUserMember.setComment("R");
...@@ -198,6 +200,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder ...@@ -198,6 +200,7 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisUtil.get(umkey); AdamUserMemberVo userMemberVo = (AdamUserMemberVo) redisUtil.get(umkey);
userMemberVo.setState(2); userMemberVo.setState(2);
userMemberVo.setExpiryAt(now);
userMemberVo.setUpdatedAt(now); userMemberVo.setUpdatedAt(now);
redisUtil.set(umkey, userMemberVo); redisUtil.set(umkey, userMemberVo);
......
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 ...@@ -84,7 +84,8 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
//initCoupon.setRedeemValidity(); //initCoupon.setRedeemValidity();
//initCoupon.setRedeemStart(); //initCoupon.setRedeemStart();
//initCoupon.setRedeemStop(); //initCoupon.setRedeemStop();
//initCoupon.setEffectAt(); initCoupon.setEffectAt(nowTime);
// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
//initCoupon.setExpireAt(); //initCoupon.setExpireAt();
initCoupon.setOperator(operator); initCoupon.setOperator(operator);
initCoupon.setCreatedAt(nowTime); initCoupon.setCreatedAt(nowTime);
...@@ -151,6 +152,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa ...@@ -151,6 +152,7 @@ public class CandyMgtCouponAdminServiceImpl extends ServiceImpl<CandyMgtCouponMa
updateCoupon.setValMinus(parameter.getValMinus()); updateCoupon.setValMinus(parameter.getValMinus());
updateCoupon.setOverlay(parameter.getOverlay()); updateCoupon.setOverlay(parameter.getOverlay());
updateCoupon.setOperator(operator); updateCoupon.setOperator(operator);
updateCoupon.setEffectAt(nowTime);// 会员权益券失效时间duedAt需要同步会员到期时间expiryAt
updateCoupon.setUpdatedAt(nowTime); 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;
}
}
...@@ -33,8 +33,8 @@ public class OrderExpressExportExcelListDao implements Serializable, Cloneable { ...@@ -33,8 +33,8 @@ public class OrderExpressExportExcelListDao implements Serializable, Cloneable {
private String enterName; private String enterName;
@Excel(name = "入场人手机号") @Excel(name = "入场人手机号")
private String enterMobile; private String enterMobile;
@Excel(name = "入场人身份证") @Excel(name = "入场人证件号")
private String enterIdCod; private String enterIdCode;
private static final OrderExpressExportExcelListDao obj = new OrderExpressExportExcelListDao(); private static final OrderExpressExportExcelListDao obj = new OrderExpressExportExcelListDao();
...@@ -59,7 +59,7 @@ public class OrderExpressExportExcelListDao implements Serializable, Cloneable { ...@@ -59,7 +59,7 @@ public class OrderExpressExportExcelListDao implements Serializable, Cloneable {
this.setExpressAddress(source.getExpressAddress()); this.setExpressAddress(source.getExpressAddress());
this.setEnterName(source.getEnterName()); this.setEnterName(source.getEnterName());
this.setEnterMobile(source.getEnterMobile()); this.setEnterMobile(source.getEnterMobile());
this.setEnterIdCod(source.getEnterIdCod()); this.setEnterIdCode(source.getEnterIdCode());
return this; 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; ...@@ -13,6 +13,7 @@ import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*; import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*; import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.*; import com.liquidnet.service.kylin.dto.vo.admin.*;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; 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.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo; import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
...@@ -743,6 +744,11 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma ...@@ -743,6 +744,11 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
Query.query(Criteria.where("orderTicketsId").in(orderTicketIdList)).getQueryObject(), Query.query(Criteria.where("orderTicketsId").in(orderTicketIdList)).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo)) 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 "); log.debug("修改场次相关 mongo time -> " + (System.currentTimeMillis() - time1) + " ms ");
time1 = System.currentTimeMillis(); time1 = System.currentTimeMillis();
......
...@@ -7,6 +7,7 @@ import com.liquidnet.client.admin.common.utils.ShiroUtils; ...@@ -7,6 +7,7 @@ import com.liquidnet.client.admin.common.utils.ShiroUtils;
import com.liquidnet.client.admin.common.utils.StringUtils; import com.liquidnet.client.admin.common.utils.StringUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils; import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils; import com.liquidnet.client.admin.zhengzai.kylin.utils.MongoVoUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.TaobaoTicketUtils;
import com.liquidnet.commons.lang.util.*; import com.liquidnet.commons.lang.util.*;
import com.liquidnet.service.base.UserPathDto; import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst; import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
...@@ -15,6 +16,7 @@ import com.liquidnet.service.kylin.dto.param.RefundCallbackParam; ...@@ -15,6 +16,7 @@ import com.liquidnet.service.kylin.dto.param.RefundCallbackParam;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo; import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo;
import com.liquidnet.service.kylin.entity.*; import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*; import com.liquidnet.service.kylin.mapper.*;
...@@ -91,6 +93,9 @@ public class KylinRefundsStatusServiceImpl { ...@@ -91,6 +93,9 @@ public class KylinRefundsStatusServiceImpl {
@Autowired @Autowired
private MongoVoUtils mongoVoUtils; private MongoVoUtils mongoVoUtils;
@Autowired
private TaobaoTicketUtils taobaoTicketUtils;
public Boolean orderTicketRefunding( public Boolean orderTicketRefunding(
RefundApplyParam refundApplyParam, KylinOrderTickets orderInfo, String orderTicketsId, RefundApplyParam refundApplyParam, KylinOrderTickets orderInfo, String orderTicketsId,
BigDecimal RefundPriceExpress, BigDecimal RefundPriceExpress,
...@@ -417,7 +422,7 @@ public class KylinRefundsStatusServiceImpl { ...@@ -417,7 +422,7 @@ public class KylinRefundsStatusServiceImpl {
params.add("paymentId", oderInfo.getPaymentId()); params.add("paymentId", oderInfo.getPaymentId());
params.add("paymentType", oderInfo.getPaymentType()); params.add("paymentType", oderInfo.getPaymentType());
params.add("price", String.valueOf(refundPrice)); params.add("price", String.valueOf(refundPrice));
params.add("priceTotal", String.valueOf(oderInfo.getPriceTotal())); params.add("priceTotal", String.valueOf(oderInfo.getPriceActual()));
params.add("reason", "按需退款"); params.add("reason", "按需退款");
MultiValueMap<String, String> headers = new LinkedMultiValueMap(); MultiValueMap<String, String> headers = new LinkedMultiValueMap();
...@@ -457,6 +462,13 @@ public class KylinRefundsStatusServiceImpl { ...@@ -457,6 +462,13 @@ public class KylinRefundsStatusServiceImpl {
dataUtils.delOrderRefundVoByOrderId(strings1); dataUtils.delOrderRefundVoByOrderId(strings1);
continue; continue;
}else{
//TODO 秀龙 大麦退款
for (KylinOrderRefunds item : refundList) {
KylinOrderTicketVo orderData = dataUtils.getOrderTicketVo(item.getOrderTicketsId());
KylinPerformanceVo vo = dataUtils.getPerformanceVo(orderData.getPerformanceId());
taobaoTicketUtils.refundDamaiOrder(orderData,vo);
}
} }
} catch (Exception e) { } catch (Exception e) {
log.info("退款请求pay失败e" + e.getMessage()); log.info("退款请求pay失败e" + e.getMessage());
......
package com.liquidnet.client.admin.zhengzai.kylin.utils; package com.liquidnet.client.admin.zhengzai.kylin.utils;
import com.liquidnet.commons.lang.util.IDGenerator;
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.taobao.api.DefaultTaobaoClient; import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient; import com.taobao.api.TaobaoClient;
import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest; import com.taobao.api.request.AlibabaDamaiMevOpenWithdrawticketRequest;
import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse; import com.taobao.api.response.AlibabaDamaiMevOpenWithdrawticketResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Service @Service
@Slf4j
public class TaobaoTicketUtils { public class TaobaoTicketUtils {
private String URL = "http://gw.api.taobao.com/router/rest"; private String URL = "http://gw.api.taobao.com/router/rest";
...@@ -55,4 +65,52 @@ public class TaobaoTicketUtils { ...@@ -55,4 +65,52 @@ public class TaobaoTicketUtils {
return false; return false;
} }
} }
public boolean refundDamaiOrder(KylinOrderTicketVo orderData,KylinPerformanceVo vo) {
try {
int isSysDamai = 0;
for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getTicketsId().equals(orderData.getTicketId())) {
isSysDamai = ticketItem.getSysDamai();
break;
}
}
}
if (isSysDamai == 1) {
List<KylinOrderTicketEntitiesVo> listData = orderData.getEntitiesVoList();
for (int i = 0; i < listData.size(); i++) {
KylinOrderTicketEntitiesVo item = listData.get(i);
long ticketTimesKey;
if (item.getTicketId().length() > 13) {
ticketTimesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getTimeId()));
} else {
ticketTimesKey = Long.parseLong(item.getTimeId());
}
long orderTicketEntitiesKey;
// if (item.getOrderTicketEntitiesId().length() > 13) {
// orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()));
// } else {
// orderTicketEntitiesKey = Long.valueOf(item.getOrderTicketEntitiesId());//票单号 入场人id
// }
if (orderData.getIsMember() == 1) {
orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("010"));
} else {
orderTicketEntitiesKey = Long.valueOf(IDGenerator.getDamaiCode(item.getOrderTicketEntitiesId()).toString().concat("020"));
}
withdrawDamaiOrder(ticketTimesKey, orderTicketEntitiesKey);
}
return true;
}
return true;
}catch (Exception e){
log.info("REFUND DAMAI ERROR = {}",e);
return false;
}
}
} }
...@@ -83,6 +83,8 @@ public class MQConst { ...@@ -83,6 +83,8 @@ public class MQConst {
SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"), SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"),
SWEET_APPLET_USER_INSERT_DRAW("sweet:stream:rk.sweetAppletUserInsert", "group.sweetAppletUserInsert", "小程序登录记录用户解密后信息"), SWEET_APPLET_USER_INSERT_DRAW("sweet:stream:rk.sweetAppletUserInsert", "group.sweetAppletUserInsert", "小程序登录记录用户解密后信息"),
SWEET_TEMPLATE_MSG("sweet:stream:rk.sweetTemplateMsg", "group.sweetTemplateMsg", "发送模版消息"), SWEET_TEMPLATE_MSG("sweet:stream:rk.sweetTemplateMsg", "group.sweetTemplateMsg", "发送模版消息"),
SWEET_CITY_VOTE_DRAW("sweet:stream:rk.cityVote", "group.cityVote", "用户投票记录"),
SWEET_ANTIGENIC_QUESTION_DRAW("sweet:stream:rk.antigenicQuestion", "group.antigenicQuestion", "防疫答题"),
; ;
private final String key; private final String key;
......
...@@ -18,6 +18,8 @@ import org.springframework.util.LinkedMultiValueMap; ...@@ -18,6 +18,8 @@ import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap; import org.springframework.util.MultiValueMap;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import java.nio.charset.StandardCharsets;
/** /**
* @author AnJiabin <anjiabin@zhengzai.tv> * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 * @version V1.0
...@@ -36,6 +38,9 @@ public class EasemobUtil{ ...@@ -36,6 +38,9 @@ public class EasemobUtil{
@Autowired @Autowired
private RedisUtil redisUtil; private RedisUtil redisUtil;
private static MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
private static MultiValueMap<String, String> commonParams = new LinkedMultiValueMap();
private String getAccessToken(){ private String getAccessToken(){
//构造请求参数 //构造请求参数
...@@ -76,7 +81,8 @@ public class EasemobUtil{ ...@@ -76,7 +81,8 @@ public class EasemobUtil{
} }
public String createUser(String userName, String password, String nickName){ public String createUser(String userName, String password, String nickName){
MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap(); // MultiValueMap<String, String> commonHeader = new LinkedMultiValueMap();
commonHeader.clear();
commonHeader.add("Authorization", "Bearer "+this.getAccessToken()); commonHeader.add("Authorization", "Bearer "+this.getAccessToken());
JSONObject json = new JSONObject(); JSONObject json = new JSONObject();
...@@ -114,4 +120,22 @@ public class EasemobUtil{ ...@@ -114,4 +120,22 @@ public class EasemobUtil{
//result //result
// {application=c785eced-c603-41c3-afe8-13ee3378540c, access_token=YWMt_rE7Rg8DEeyy6gf--JvBcwAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7utOj1gBPGgANws4VZcHltyc-SPep4q09E0mqitzKe5IA6Npu-MqLBg, expires_in=5184000} // {application=c785eced-c603-41c3-afe8-13ee3378540c, access_token=YWMt_rE7Rg8DEeyy6gf--JvBcwAAAAAAAAAAAAAAAAAAAAHHheztxgNBw6_oE-4zeFQMAgMAAAF7utOj1gBPGgANws4VZcHltyc-SPep4q09E0mqitzKe5IA6Npu-MqLBg, expires_in=5184000}
} }
public void settingNoticeNickname(String nickname, String username) {
try {
commonHeader.clear();
commonHeader.add("Authorization", "Bearer " + this.getAccessToken());
commonParams.clear();
commonParams.add("nickname", nickname);
String url = easemobConfig.getPreUrl().concat(EasemobConstant.CREATE_USER_URL).concat("/").concat(username);
String response = HttpUtil.put(url, commonParams, commonHeader);
log.info("IM setting notice.nickname:[url={},nickname={},response={}]", url, nickname, response);
} catch (HttpClientErrorException e) {
String responseBodyAsString = e.getResponseBodyAsString(StandardCharsets.UTF_8);
log.error("IM setting notice.nickname error:[request.status=400,msg={}]", responseBodyAsString);
} catch (Exception e) {
log.error("IM setting notice.nickname exception", e);
}
}
} }
...@@ -112,9 +112,12 @@ liquidnet: ...@@ -112,9 +112,12 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847 token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky: zhengzaiActivity:
appid: wx769aa9167bef9ce2 appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81 secret: bebccc204b9472ba41661372b197eb81
modernsky:
appid: wx6bf7999941a06d15
secret: a12012b31307a539719dbe4d137ca45a
applet: applet:
zhengzai: zhengzai:
appid: wx4732efeaa2b08086 appid: wx4732efeaa2b08086
...@@ -155,7 +158,7 @@ liquidnet: ...@@ -155,7 +158,7 @@ liquidnet:
jProvince: 北京 jProvince: 北京
jCity: 北京市 jCity: 北京市
jAddress: 朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空 jAddress: 朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType: 1 # 默认顺丰特快 expressType: 2 # 默认顺丰特快
depositumInfo: 演出纸质票 depositumInfo: 演出纸质票
......
...@@ -114,9 +114,12 @@ liquidnet: ...@@ -114,9 +114,12 @@ liquidnet:
secret: a1307fab0a5f2380086a7c636f7339ea secret: a1307fab0a5f2380086a7c636f7339ea
token: tftipg1427706847 token: tftipg1427706847
aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx aeskey: LwVpmpuOcl7Mi3mtfQgBol11MsmMCATIqbPgHrEpDzx
modernsky: zhengzaiActivity:
appid: wx769aa9167bef9ce2 appid: wx769aa9167bef9ce2
secret: bebccc204b9472ba41661372b197eb81 secret: bebccc204b9472ba41661372b197eb81
modernsky:
appid: wx6bf7999941a06d15
secret: a12012b31307a539719dbe4d137ca45a
applet: applet:
zhengzai: zhengzai:
appid: wx4732efeaa2b08086 appid: wx4732efeaa2b08086
...@@ -157,7 +160,7 @@ liquidnet: ...@@ -157,7 +160,7 @@ liquidnet:
jProvince: 北京 jProvince: 北京
jCity: 北京市 jCity: 北京市
jAddress: 朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空 jAddress: 朝阳区广渠路1号北京市商业储运公司3-12号 摩登天空
expressType: 1 # 默认顺丰特快 expressType: 2 # 默认顺丰特快
depositumInfo: 演出纸质票 depositumInfo: 演出纸质票
......
...@@ -147,6 +147,7 @@ global-auth: ...@@ -147,6 +147,7 @@ global-auth:
- ${liquidnet.info.context}/performance/calendar - ${liquidnet.info.context}/performance/calendar
- ${liquidnet.info.context}/performance/calendarPerformances - ${liquidnet.info.context}/performance/calendarPerformances
- ${liquidnet.info.context}/performance/* - ${liquidnet.info.context}/performance/*
- ${liquidnet.info.context}/myPerformance/*
# ----------------------------------------------------------- # -----------------------------------------------------------
......
...@@ -15,10 +15,10 @@ liquidnet: ...@@ -15,10 +15,10 @@ liquidnet:
rabbitmq: rabbitmq:
connection-timeout: 5000 connection-timeout: 5000
mysql: mysql:
database-name: dev_ln_scene database-name: test_ln_scene
mongodb: mongodb:
sslEnabled: false sslEnabled: false
database: dev_ln_scene database: test_ln_scene
al-oss: al-oss:
imgUrl: "https://img.zhengzai.tv/" imgUrl: "https://img.zhengzai.tv/"
appUrl: "https://app.zhengzai.tv/" appUrl: "https://app.zhengzai.tv/"
......
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 { ...@@ -131,7 +131,7 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setCcode(cCode); this.setCcode(cCode);
this.setState(1); this.setState(1);
this.setBindAt(LocalDateTime.now()); this.setBindAt(couponInfoDto.getEffectAt());
this.setDuedAt(duedAt); this.setDuedAt(duedAt);
this.setUseRules(couponInfoDto.getUseRules()); this.setUseRules(couponInfoDto.getUseRules());
...@@ -163,8 +163,6 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable { ...@@ -163,8 +163,6 @@ public class CandyUserCouponBasicDto implements Serializable, Cloneable {
this.setUid(uid); this.setUid(uid);
this.setState(1); this.setState(1);
this.setBindAt(LocalDateTime.now());
// TODO: 2021/9/1
this.setBindAt(commonCouponBasicDto.getEffectAt()); this.setBindAt(commonCouponBasicDto.getEffectAt());
this.setDuedAt(commonCouponBasicDto.getExpireAt()); this.setDuedAt(commonCouponBasicDto.getExpireAt());
......
...@@ -6,6 +6,10 @@ import java.util.List; ...@@ -6,6 +6,10 @@ import java.util.List;
@Data @Data
public class CandyCouponCodeOptParam { public class CandyCouponCodeOptParam {
/**
* ~candy_user_coupon.ucoupon_id
*/
private List<String> ucouponIds;
/** /**
* ~candy_coupon.coupon_id * ~candy_coupon.coupon_id
*/ */
......
...@@ -114,13 +114,12 @@ ...@@ -114,13 +114,12 @@
cmc.event_limit, cmc.event_limit,
cmc.event_at, cmc.event_at,
cmc.`operator`, cmc.`operator`,
cmc.created_at, cmc.created_at created_at,
cmc.updated_at cmc.updated_at
FROM candy_mgt_coupon cmc, candy_coupon cc FROM candy_mgt_coupon cmc
WHERE cmc.coupon_id = cc.coupon_id LEFT JOIN candy_coupon cc ON cmc.coupon_id = cc.coupon_id
AND cmc.state <![CDATA[<>]]> 2 WHERE cmc.state <![CDATA[<>]]> 2
AND cc.`exclusive` = 0 AND cc.`exclusive` = 0
<if test="mcouponId != null and mcouponId != ''"> <if test="mcouponId != null and mcouponId != ''">
AND cmc.mcoupon_id = #{mcouponId,jdbcType=VARCHAR} AND cmc.mcoupon_id = #{mcouponId,jdbcType=VARCHAR}
</if> </if>
...@@ -136,8 +135,6 @@ ...@@ -136,8 +135,6 @@
<if test="busiType != null"> <if test="busiType != null">
AND cc.busi_type = #{busiType,jdbcType=SMALLINT} AND cc.busi_type = #{busiType,jdbcType=SMALLINT}
</if> </if>
ORDER BY cmc.created_at DESC
</select> </select>
<select id="selectMultiForMgtCouponMemberDto" resultMap="Rst_MgtCouponMemberDto"> <select id="selectMultiForMgtCouponMemberDto" resultMap="Rst_MgtCouponMemberDto">
select cc.coupon_id, 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;
}
...@@ -20,5 +20,5 @@ public class OrderExpressExportListDao implements Serializable { ...@@ -20,5 +20,5 @@ public class OrderExpressExportListDao implements Serializable {
private String expressAddress; private String expressAddress;
private String enterName; private String enterName;
private String enterMobile; private String enterMobile;
private String enterIdCod; private String enterIdCode;
} }
...@@ -20,4 +20,5 @@ public class OrderScriptDto { ...@@ -20,4 +20,5 @@ public class OrderScriptDto {
String userId; String userId;
Integer number; Integer number;
String couponCode; String couponCode;
Integer couponType;
} }
...@@ -11,6 +11,7 @@ public class PerformancesTicketListDao implements Serializable, Cloneable { ...@@ -11,6 +11,7 @@ public class PerformancesTicketListDao implements Serializable, Cloneable {
private String ticketsId; private String ticketsId;
private String title; private String title;
private String timeTitle;
private static final PerformancesTicketListDao obj = new PerformancesTicketListDao(); private static final PerformancesTicketListDao obj = new PerformancesTicketListDao();
......
...@@ -52,4 +52,7 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> { ...@@ -52,4 +52,7 @@ public interface KylinPerformancesMapper extends BaseMapper<KylinPerformances> {
List<PerformanceExpressPerformanceListAdminDao> performanceExpressPerformanceList(Map<String, Object> map); List<PerformanceExpressPerformanceListAdminDao> performanceExpressPerformanceList(Map<String, Object> map);
PerformanceExpressPerformanceListAdminDao countExpressNumber(String performancesId); PerformanceExpressPerformanceListAdminDao countExpressNumber(String performancesId);
List<OrderExportDao> exportOrderByPerformanceIdAll(String performancesId);
List<OrderExportDao> exportOrderByPerformanceIdPay(String performancesId);
} }
...@@ -54,6 +54,7 @@ ...@@ -54,6 +54,7 @@
<result column="number" property="number"/> <result column="number" property="number"/>
<result column="user_id" property="userId"/> <result column="user_id" property="userId"/>
<result column="coupon_code" property="couponCode"/> <result column="coupon_code" property="couponCode"/>
<result column="coupon_type" property="couponType"/>
</resultMap> </resultMap>
<select id="getPerformanceRefundOrderStatis" resultType="java.util.HashMap"> <select id="getPerformanceRefundOrderStatis" resultType="java.util.HashMap">
...@@ -256,24 +257,31 @@ ...@@ -256,24 +257,31 @@
LEFT JOIN kylin_order_ticket_entities AS ote ON ote.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_entities AS ote ON ote.order_id = ot.order_tickets_id
LEFT JOIN kylin_ticket_status AS kys ON kys.ticket_id = otr.ticket_id LEFT JOIN kylin_ticket_status AS kys ON kys.ticket_id = otr.ticket_id
WHERE (ots.status = 1 or ots.status = 3 or ots.status = 4 or ots.status = 6) WHERE (ots.status = 1 or ots.status = 3 or ots.status = 4 or ots.status = 6)
AND ote.ticket_id = ${ticketsId} AND ote.ticket_id = ${ticketsId} group by order_ticket_entities_id
</select> </select>
<select id="orderScriptDto" parameterType="java.lang.String" resultMap="orderScriptDtoResult"> <select id="orderScriptDto" parameterType="java.lang.String" resultMap="orderScriptDtoResult">
SELECT ot.mid, select s.mid,
order_tickets_id, order_tickets_id,
order_code, order_code,
status, status,
ticket_id, ticket_id,
number, number,
user_id, user_id,
oc.coupon_code oc.coupon_code,
oc.coupon_type
from (SELECT ot.mid,
order_tickets_id,
order_code,
status,
ticket_id,
number,
user_id
FROM kylin_order_tickets AS ot 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_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 inner JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
inner JOIN kylin_order_coupons AS oc ON oc.order_id = ot.order_tickets_id WHERE status = 0 AND ot.coupon_type !='exchange' AND NOW() > DATE_SUB(ot.created_at, INTERVAL -(pay_countdown_minute + 1) MINUTE)) as s
WHERE status = 0 AND NOW() > DATE_SUB(ot.created_at,INTERVAL -(pay_countdown_minute+1) MINUTE) AND left JOIN kylin_order_coupons AS oc ON oc.order_id = s.order_tickets_id
oc.coupon_type != 101
<if test="userId!=''"> <if test="userId!=''">
AND user_id = #{userId} AND user_id = #{userId}
</if> </if>
...@@ -307,8 +315,8 @@ ...@@ -307,8 +315,8 @@
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)) AS oe ON oe.order_tickets_id =
kot.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 = -- 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 -- oer.order_express_id
<where> <where>
kotr.performance_id = #{performancesId} kotr.performance_id = #{performancesId}
AND kot.get_ticket_type = 'express' AND kot.get_ticket_type = 'express'
...@@ -327,7 +335,9 @@ ...@@ -327,7 +335,9 @@
<if test="expressContacts != null and expressContacts != ''">AND kot.express_contacts LIKE concat('%', <if test="expressContacts != null and expressContacts != ''">AND kot.express_contacts LIKE concat('%',
#{expressContacts}, '%') #{expressContacts}, '%')
</if> </if>
<if test="expressStatus != '' and expressStatus != 1 and expressStatus != 70">AND oe.express_status = ${expressStatus}</if> <if test="expressStatus != '' and expressStatus != 1 and expressStatus != 70">AND oe.express_status =
${expressStatus}
</if>
<if test="expressStatus == 1">AND (oe.express_status IS NULL OR oe.express_status = ${expressStatus})</if> <if test="expressStatus == 1">AND (oe.express_status IS NULL OR oe.express_status = ${expressStatus})</if>
<if test="expressStatus == 70">AND (oe.express_status > 3 AND oe.express_status != 80)</if> <if test="expressStatus == 70">AND (oe.express_status > 3 AND oe.express_status != 80)</if>
<if test="mailno != ''">AND oe.mailno LIKE concat('%', #{mailno}, '%')</if> <if test="mailno != ''">AND oe.mailno LIKE concat('%', #{mailno}, '%')</if>
......
...@@ -47,6 +47,12 @@ ...@@ -47,6 +47,12 @@
<result column="title" property="title"/> <result column="title" property="title"/>
</resultMap> </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"> <resultMap id="PerformanceSimpleAllDaoResult" type="com.liquidnet.service.kylin.dao.PerformanceSimpleAllDao">
<result column="performances_id" property="performancesId"/> <result column="performances_id" property="performancesId"/>
<result column="title" property="title"/> <result column="title" property="title"/>
...@@ -278,7 +284,8 @@ ...@@ -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_status AS ots ON ots.order_id = ot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id LEFT JOIN kylin_order_ticket_relations AS otr ON otr.order_id = ot.order_tickets_id
WHERE 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 GROUP BY otr.performance_id
) AS ot ON ot.performance_id = p.performances_id ) AS ot ON ot.performance_id = p.performances_id
<where> <where>
...@@ -354,7 +361,8 @@ ...@@ -354,7 +361,8 @@
INNER JOIN kylin_tickets AS t ON t.tickets_id = tr.ticket_id 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 INNER JOIN kylin_ticket_status AS ts ON ts.ticket_id = tr.ticket_id
<where> <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} ${performanceIds}
</foreach> </foreach>
</where> </where>
...@@ -505,7 +513,7 @@ ...@@ -505,7 +513,7 @@
group by kotr.performance_id,kot.user_id group by kotr.performance_id,kot.user_id
) t ) t
) AS ut ON ut.performance_id = kp.performances_id ) AS ut ON ut.performance_id = kp.performances_id
order by kt.type desc,kt.use_start asc order by kt.type desc,kt.title,kt.use_start asc
</select> </select>
<select id="getPerformanceSponsorList" resultMap="performanceSponsorDaoResult"> <select id="getPerformanceSponsorList" resultMap="performanceSponsorDaoResult">
select distinct kp.sponsor_id, kp.sponsor, kp.sponsor_type select distinct kp.sponsor_id, kp.sponsor, kp.sponsor_type
...@@ -518,7 +526,8 @@ ...@@ -518,7 +526,8 @@
</where> </where>
order by sponsor_id order by sponsor_id
</select> </select>
<select id="performanceExpressPerformanceList" resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao"> <select id="performanceExpressPerformanceList"
resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
SELECT SELECT
p.performances_id , p.performances_id ,
p.title , p.title ,
...@@ -544,7 +553,8 @@ ...@@ -544,7 +553,8 @@
GROUP BY p.performances_id GROUP BY p.performances_id
ORDER BY p.created_at DESC ORDER BY p.created_at DESC
</select> </select>
<select id="countExpressNumber" resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao"> <select id="countExpressNumber"
resultType="com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceListAdminDao">
SELECT SELECT
COUNT(*) total_number COUNT(*) total_number
FROM FROM
...@@ -558,4 +568,23 @@ ...@@ -558,4 +568,23 @@
AND ots.transfer_status IN (0, 1, 3, 5) AND ots.transfer_status IN (0, 1, 3, 5)
AND ot.get_ticket_type = 'express' AND ot.get_ticket_type = 'express'
</select> </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> </mapper>
...@@ -45,12 +45,14 @@ ...@@ -45,12 +45,14 @@
<select id="getPerformancesTicketList" resultType="com.liquidnet.service.kylin.dao.PerformancesTicketListDao"> <select id="getPerformancesTicketList" resultType="com.liquidnet.service.kylin.dao.PerformancesTicketListDao">
SELECT SELECT
a.tickets_id , a.tickets_id ,
a.title a.title,
e.title as time_title
FROM FROM
kylin_tickets AS a kylin_tickets AS a
LEFT JOIN kylin_ticket_status AS b ON b.ticket_id = a.tickets_id LEFT JOIN kylin_ticket_status AS b ON b.ticket_id = a.tickets_id
LEFT JOIN kylin_ticket_relations AS c ON c.ticket_id = a.tickets_id LEFT JOIN kylin_ticket_relations AS c ON c.ticket_id = a.tickets_id
LEFT JOIN kylin_ticket_time_relation AS d ON d.times_id = c.times_id LEFT JOIN kylin_ticket_time_relation AS d ON d.times_id = c.times_id
LEFT JOIN kylin_ticket_times AS e ON e.ticket_times_id = d.times_id
where d.performance_id = ${performanceId} where d.performance_id = ${performanceId}
and b.is_express = 1 and b.is_express = 1
and b.status IN (2, 3, 6, 7, 8, 9, 10) and b.status IN (2, 3, 6, 7, 8, 9, 10)
......
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
WHERE 1 > 0 WHERE 1 > 0
and kotr.performance_id = ${performanceId} and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6) and kots.`status` in (1, 3, 6)
and kots.transfer_status in('0','1','3','5')
and kot.coupon_type = 'no' and kot.coupon_type = 'no'
group by kotr.performance_id,ca.province group by kotr.performance_id,ca.province
) x order by x.total_number desc ) x order by x.total_number desc
...@@ -55,9 +56,10 @@ ...@@ -55,9 +56,10 @@
left join sys_dict_id_card_area ca on substr(kote.enter_id_code,1,6) = ca.code left join sys_dict_id_card_area ca on substr(kote.enter_id_code,1,6) = ca.code
WHERE 1>0 and kotr.performance_id = #{performanceId} WHERE 1>0 and kotr.performance_id = #{performanceId}
and kots.`status` in(1,3,6) and kots.`status` in(1,3,6)
and kots.transfer_status in('0','1','3','5')
and kot.coupon_type ='no' and kot.coupon_type ='no'
group by kotr.performance_id,ca.pre_city group by kotr.performance_id,ca.pre_city
) x order by x.total_number desc ) x order by x.total_number desc limit 20
</select> </select>
<!-- 演出按年龄统计--> <!-- 演出按年龄统计-->
<select id="getAgeDataList" parameterType="java.lang.String" resultMap="getAgeDataListResult"> <select id="getAgeDataList" parameterType="java.lang.String" resultMap="getAgeDataListResult">
...@@ -72,6 +74,7 @@ ...@@ -72,6 +74,7 @@
WHERE 1 > 0 WHERE 1 > 0
and kotr.performance_id = #{performanceId} and kotr.performance_id = #{performanceId}
and kots.`status` in (1, 3, 6) and kots.`status` in (1, 3, 6)
and kots.transfer_status in('0','1','3','5')
and kot.coupon_type = 'no' and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18 and length(kote.enter_id_code)=18
group by kotr.performance_id, substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4) group by kotr.performance_id, substr(curdate(), 1, 4) - substr(kote.enter_id_code, 7, 4)
...@@ -89,6 +92,7 @@ ...@@ -89,6 +92,7 @@
WHERE 1 > 0 WHERE 1 > 0
and kotr.performance_id = ${performanceId} and kotr.performance_id = ${performanceId}
and kots.`status` in (1, 3, 6) and kots.`status` in (1, 3, 6)
and kots.transfer_status in('0','1','3','5')
and kot.coupon_type = 'no' and kot.coupon_type = 'no'
and length(kote.enter_id_code)=18 and length(kote.enter_id_code)=18
)x group by x.sex )x group by x.sex
......
package com.liquidnet.service.sweet.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 防疫答题表
* </p>
*
* @author jiangxiulong
* @since 2021-09-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetAntigenicQuestion implements Serializable {
private static final long serialVersionUID = 1268639425174449151L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* question_id
*/
private String questionId;
/**
* 活动类型 1MDSK防疫答题 2草莓防疫答题
*/
private Integer type;
/**
* openId
*/
@TableField("openId")
private String openId;
/**
* unionId
*/
@TableField("unionId")
private String unionId;
/**
* 姓名
*/
private String nickname;
/**
* 居住地址
*/
private String address;
/**
* 联系电话
*/
private String phone;
/**
* 紧急联系人电话
*/
private String urgentPhone;
/**
* 答案
*/
private String keyword1;
/**
* 答案补充
*/
private String keyword11;
/**
* 答案
*/
private String keyword2;
/**
* 答案
*/
private String keyword3;
/**
* 答案
*/
private String keyword4;
/**
* 答案
*/
private String keyword5;
/**
* 答案
*/
private String keyword6;
/**
* 答案
*/
private String keyword7;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
}
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetAntigenicQuestion;
/**
* <p>
* 防疫答题表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-09-28
*/
public interface SweetAntigenicQuestionMapper extends BaseMapper<SweetAntigenicQuestion> {
}
...@@ -19,8 +19,8 @@ ...@@ -19,8 +19,8 @@
<module>liquidnet-service-kylin-do</module> <module>liquidnet-service-kylin-do</module>
<module>liquidnet-service-adam-do</module> <module>liquidnet-service-adam-do</module>
<module>liquidnet-service-dragon-do</module> <module>liquidnet-service-dragon-do</module>
<module>liquidnet-service-candy-do</module>
<module>liquidnet-service-sweet-do</module> <module>liquidnet-service-sweet-do</module>
<module>liquidnet-service-candy-do</module>
</modules> </modules>
<dependencies> <dependencies>
......
package com.liquidnet.service.feign.kylin.api; package com.liquidnet.service.feign.kylin.api;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.feign.kylin.config.SecuringRequestInterceptor;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo; import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import feign.hystrix.FallbackFactory; import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
...@@ -25,8 +24,7 @@ import java.util.List; ...@@ -25,8 +24,7 @@ import java.util.List;
@FeignClient(name = "liquidnet-service-kylin", @FeignClient(name = "liquidnet-service-kylin",
contextId = "FeignKylinForChimeClient", path = "", contextId = "FeignKylinForChimeClient", path = "",
url = "${liquidnet.service.kylin.url}", url = "${liquidnet.service.kylin.url}",
fallback = FallbackFactory.Default.class, fallback = FallbackFactory.Default.class)
configuration = SecuringRequestInterceptor.class)
public interface FeignKylinForChimeClient { public interface FeignKylinForChimeClient {
@GetMapping("myPerformance/performancesList") @GetMapping("myPerformance/performancesList")
ResponseDto<List<KylinPerformanceVo>> myPerformancesList(); ResponseDto<List<KylinPerformanceVo>> myPerformancesList();
......
package com.liquidnet.service.feign.kylin.config; //package com.liquidnet.service.feign.kylin.config;
//
import feign.RequestInterceptor; //import feign.RequestInterceptor;
import feign.RequestTemplate; //import feign.RequestTemplate;
import org.springframework.stereotype.Component; //import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; //import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; //import org.springframework.web.context.request.ServletRequestAttributes;
//
import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletRequest;
import java.util.Enumeration; //import java.util.Enumeration;
//
/** ///**
* @author AnJiabin <anjiabin@zhengzai.tv> // * @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0 // * @version V1.0
* @Description: 解决feign调用传递header问题 // * @Description: 解决feign调用传递header问题
* @class: SecuringRequestInterceptor // * @class: SecuringRequestInterceptor
* @Package com.liquidnet.service.chime.config // * @Package com.liquidnet.service.chime.config
* @Copyright: LightNet @ Copyright (c) 2021 // * @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/11 19:22 // * @date 2021/9/11 19:22
*/ // */
@Component //@Component
public class SecuringRequestInterceptor implements RequestInterceptor { //public class SecuringRequestInterceptor implements RequestInterceptor {
@Override // @Override
public void apply(RequestTemplate requestTemplate) { // public void apply(RequestTemplate requestTemplate) {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder // ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
.getRequestAttributes(); // .getRequestAttributes();
HttpServletRequest request = attributes.getRequest(); // HttpServletRequest request = attributes.getRequest();
Enumeration<String> headerNames = request.getHeaderNames(); // Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) { // if (headerNames != null) {
while (headerNames.hasMoreElements()) { // while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement(); // String name = headerNames.nextElement();
String values = request.getHeader(name); // String values = request.getHeader(name);
requestTemplate.header(name, values); // requestTemplate.header(name, values);
} // }
} // }
} // }
} //}
\ No newline at end of file \ No newline at end of file
...@@ -5,12 +5,12 @@ import feign.hystrix.FallbackFactory; ...@@ -5,12 +5,12 @@ import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Component @Component
@FeignClient(name = "liquidnet-service-platform", @FeignClient(name = "liquidnet-service-platform",
contextId = "FeignPlatformAlipayBackClient", path = "", contextId = "FeignPlatformAlipayBackClient", path = "",
url = "", url = "${liquidnet.service.platform.url}",
// url = "",
fallback = FallbackFactory.Default.class) fallback = FallbackFactory.Default.class)
public interface FeignPlatformAlipayBackClient { public interface FeignPlatformAlipayBackClient {
......
package com.liquidnet.service.feign.sweet.task;
import com.liquidnet.service.base.ResponseDto;
import feign.hystrix.FallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@Component
@FeignClient(name = "liquidnet-service-sweet",
contextId = "FeignSweetTaskActivityClient", path = "",
url = "${liquidnet.service.sweet.url}",
fallback = FallbackFactory.Default.class)
public interface FeignSweetTaskActivityClient {
@GetMapping("sweet/sweetCityVote/setStatList")
ResponseDto<Boolean> setStatList();
}
...@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping; ...@@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping;
@Component @Component
@FeignClient(name = "liquidnet-service-sweet", @FeignClient(name = "liquidnet-service-sweet",
contextId = "FeignSweetWechatClient", path = "", contextId = "FeignSweetWechatClient", path = "",
url = "", url = "${liquidnet.service.sweet.url}",
fallback = FallbackFactory.Default.class) fallback = FallbackFactory.Default.class)
public interface FeignSweetWechatClient { public interface FeignSweetWechatClient {
......
...@@ -461,5 +461,34 @@ create table adam_member_code_batch ...@@ -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); 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; 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);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------ -- >>------------------------------------------------------------------------------------
...@@ -50,7 +50,7 @@ public class AdamMemberController { ...@@ -50,7 +50,7 @@ public class AdamMemberController {
memberVo.setUserMemberVo(userMemberVo); memberVo.setUserMemberVo(userMemberVo);
if (null == userMemberVo) { if (null == userMemberVo || !userMemberVo.isActive()) {
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0)); memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
} else if (userMemberVo.isActive()) { } else if (userMemberVo.isActive()) {
memberVo.setRightsVoList( memberVo.setRightsVoList(
...@@ -59,6 +59,7 @@ public class AdamMemberController { ...@@ -59,6 +59,7 @@ public class AdamMemberController {
); );
} }
} else { } else {
memberVo.setUserMemberVo(null);
memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0)); memberVo.setRightsVoList(adamRdmService.getMemberRightsVoByMemberId(memberVo.getMemberId(), 0));
} }
} }
......
...@@ -103,7 +103,7 @@ public class AdamRscController { ...@@ -103,7 +103,7 @@ public class AdamRscController {
} }
try { try {
List<String> uidList = req.getUidList(); List<String> uidList = req.getUidList();
uidList.parallelStream().forEach(r -> { uidList.forEach(r -> {
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(r); AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(r);
if (null != userInfoVo) { if (null != userInfoVo) {
list.add(AdamChimeUinfoDto.getNew().copy(userInfoVo)); list.add(AdamChimeUinfoDto.getNew().copy(userInfoVo));
......
...@@ -290,7 +290,14 @@ public class AdamUserController { ...@@ -290,7 +290,14 @@ public class AdamUserController {
if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) { if (!java.util.regex.Pattern.matches(LnsRegex.Valid.CN_ID_CARD_REF, idCard)) {
return ResponseDto.failure(ErrorMapping.get("10104")); 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.setName(SensitizeUtil.chineseName(vo.getName()));
vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2)); vo.setIdCard(SensitizeUtil.custom(vo.getIdCard(), 3, 2));
return ResponseDto.success(vo); return ResponseDto.success(vo);
......
...@@ -41,6 +41,29 @@ public class AdamRdmService { ...@@ -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> */ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <Mobile, SMS CODE> */
public boolean setSmsCodeByMobile(String mobile, String smsCode) { public boolean setSmsCodeByMobile(String mobile, String smsCode) {
......
...@@ -29,10 +29,7 @@ import org.springframework.util.StringUtils; ...@@ -29,10 +29,7 @@ import org.springframework.util.StringUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -139,6 +136,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -139,6 +136,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
memberOrderVo.setState(0);// 0-待支付 memberOrderVo.setState(0);// 0-待支付
memberOrderVo.setUid(currentUid); memberOrderVo.setUid(currentUid);
memberOrderVo.setPrice(param.getPrice()); memberOrderVo.setPrice(param.getPrice());
memberOrderVo.setPricePaid(paymentPrice);
memberOrderVo.setClientIp(clientIp); memberOrderVo.setClientIp(clientIp);
String headerCliVersion = CurrentUtil.getHeaderCliVersion(), headerCliSource = CurrentUtil.getHeaderCliSource(); String headerCliVersion = CurrentUtil.getHeaderCliVersion(), headerCliSource = CurrentUtil.getHeaderCliSource();
memberOrderVo.setSource(null == headerCliSource ? "" : headerCliSource); memberOrderVo.setSource(null == headerCliSource ? "" : headerCliSource);
...@@ -201,7 +199,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -201,7 +199,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
if (1 == shotMemberOrderVo.getState() || 3 == shotMemberOrderVo.getState()) { if (1 == shotMemberOrderVo.getState() || 3 == shotMemberOrderVo.getState()) {
return ResponseDto.failure(ErrorMapping.get("10502"), parameter); return ResponseDto.failure(ErrorMapping.get("10502"), parameter);
} }
if (parameter.getPrice().compareTo(shotMemberOrderVo.getPrice()) != 0) { if (parameter.getPrice().compareTo(shotMemberOrderVo.getPricePaid()) != 0) {
// 订单金额比对 // 订单金额比对
return ResponseDto.failure(ErrorMapping.get("10503"), parameter); return ResponseDto.failure(ErrorMapping.get("10503"), parameter);
} }
...@@ -261,6 +259,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -261,6 +259,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
updateExistUserMemberVo.setState(1); updateExistUserMemberVo.setState(1);
updateExistUserMemberVo.setExpiryAt(expiryAt); updateExistUserMemberVo.setExpiryAt(expiryAt);
updateExistUserMemberVo.setUpdatedAt(now);
long s = System.currentTimeMillis(); long s = System.currentTimeMillis();
adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), updateExistUserMemberVo); adamRdmService.setUserMemberVoByUid(handleMemberOrderVo.getUid(), updateExistUserMemberVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
...@@ -470,6 +469,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -470,6 +469,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
(expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays()) (expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays())
.withHour(23).withMinute(59).withSecond(59) .withHour(23).withMinute(59).withSecond(59)
); );
updateExistUserMemberVo.setUpdatedAt(now);
toMqSqls.add(SqlMapping.get("adam_user_member.update")); toMqSqls.add(SqlMapping.get("adam_user_member.update"));
upsertUserMemberObjs.add(new Object[]{ upsertUserMemberObjs.add(new Object[]{
updateExistUserMemberVo.getState(), updateExistUserMemberVo.getExpiryAt(), now, updateExistUserMemberVo.getUid() updateExistUserMemberVo.getState(), updateExistUserMemberVo.getExpiryAt(), now, updateExistUserMemberVo.getUid()
...@@ -566,7 +566,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -566,7 +566,9 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
orderVos.forEach(r -> vos.add(AdamMemberOrderSimpleVo.getNew().copy(r))); 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); pagedResult.setList(vos);
} }
...@@ -611,7 +613,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService { ...@@ -611,7 +613,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
if (!CollectionUtils.isEmpty(memberRightsCouponVoList)) { if (!CollectionUtils.isEmpty(memberRightsCouponVoList)) {
// 该权益下关联券统计 // 该权益下关联券统计
Map<String, Long> rightsCouponCtMap = memberRightsCouponVoList.parallelStream() Map<String, Long> rightsCouponCtMap = memberRightsCouponVoList.stream()
.collect(Collectors.groupingBy(AdamMemberRightsCouponVo::getCouponId, Collectors.counting())); .collect(Collectors.groupingBy(AdamMemberRightsCouponVo::getCouponId, Collectors.counting()));
rightsCouponCtMap.forEach((couponId, num) -> { rightsCouponCtMap.forEach((couponId, num) -> {
......
package com.liquidnet.service.adam.service.impl; 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.entity.AdamRealName;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.adam.service.IAdamRealNameService; import com.liquidnet.service.adam.service.IAdamRealNameService;
import com.liquidnet.service.adam.util.QueueUtils; import com.liquidnet.service.adam.util.QueueUtils;
import com.liquidnet.service.base.SqlMapping; import com.liquidnet.service.base.SqlMapping;
...@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -11,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays; import java.util.Arrays;
import java.util.LinkedList;
import java.util.List; import java.util.List;
/** /**
...@@ -25,9 +28,9 @@ import java.util.List; ...@@ -25,9 +28,9 @@ import java.util.List;
@Service @Service
public class AdamRealNameServiceImpl implements IAdamRealNameService { public class AdamRealNameServiceImpl implements IAdamRealNameService {
@Autowired @Autowired
RedisUtil redisUtil; private AdamRdmService adamRdmService;
@Autowired @Autowired
QueueUtils queueUtils; private QueueUtils queueUtils;
@Override @Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class) // @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
...@@ -41,10 +44,31 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService { ...@@ -41,10 +44,31 @@ public class AdamRealNameServiceImpl implements IAdamRealNameService {
realName.getState(), realName.getState(),
realName.getCreatedAt() 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(); long s = System.currentTimeMillis();
// queueUtils.sendMsgByRedis(
// MQConst.AdamQueue.SQL_UCENTER.getKey(),
// SqlMapping.get("adam_real_name.add", paramList.toArray())
// );
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UCENTER.getKey(), 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); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} }
......
...@@ -18,6 +18,7 @@ import com.liquidnet.service.base.SqlMapping; ...@@ -18,6 +18,7 @@ import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.feign.adam.rsc.FeignAdamChimeClient; import com.liquidnet.service.feign.adam.rsc.FeignAdamChimeClient;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -92,8 +93,6 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -92,8 +93,6 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
syncChimeRegisterFlg = true; syncChimeRegisterFlg = true;
} }
} else if (isComplete == 11) {// 同步IM信息
// TODO: 2021/9/17 暂未接入
} }
syncChimeFlg = true; syncChimeFlg = true;
...@@ -101,6 +100,12 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -101,6 +100,12 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
tagMe = existUserInfoVo.getTagMe(); tagMe = existUserInfoVo.getTagMe();
} }
String beforeNickname = existUserInfoVo.getNickname();
if (StringUtils.isEmpty(beforeNickname) || !beforeNickname.equals(parameter.getNickname())) {
// IM设置推送昵称
easemobUtil.settingNoticeNickname(parameter.getNickname(), existUserInfoVo.getUid());
}
existUserInfoVo.setAvatar(parameter.getAvatar()); existUserInfoVo.setAvatar(parameter.getAvatar());
existUserInfoVo.setBackground(parameter.getBackground()); existUserInfoVo.setBackground(parameter.getBackground());
existUserInfoVo.setNickname(parameter.getNickname()); existUserInfoVo.setNickname(parameter.getNickname());
...@@ -122,7 +127,8 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -122,7 +127,8 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
String sexStr = JsonUtils.toJson(existUserInfoVo.getSex()); String sexStr = JsonUtils.toJson(existUserInfoVo.getSex());
String tagMeStr = JsonUtils.toJson(tagMe); String tagMeStr = JsonUtils.toJson(tagMe);
if (syncChimeFlg || null == beforeSex || !parameter.getSex().getVal().equals(beforeSex.getVal())) {// 同步`service-chime` if (syncChimeFlg || null == beforeSex || (null != parameter.getSex() && !parameter.getSex().getVal().equals(beforeSex.getVal()))) {
// 同步`service-chime`
ResponseDto<String> chimeRegisterRstFlg = null; ResponseDto<String> chimeRegisterRstFlg = null;
try { try {
chimeRegisterRstFlg = feignAdamChimeClient.registerForUser( chimeRegisterRstFlg = feignAdamChimeClient.registerForUser(
...@@ -181,9 +187,28 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService { ...@@ -181,9 +187,28 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
adamRdmService.setUserInfoVoByUid(uid, beforeUserInfoVo); adamRdmService.setUserInfoVoByUid(uid, beforeUserInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s); 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(); s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(MQConst.AdamQueue.SQL_UCENTER.getKey(), 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); log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
......
...@@ -11,6 +11,7 @@ adam_user_info.update_by_member=UPDATE adam_user_info SET birthday=?, area=? WHE ...@@ -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.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 (?,?,?,?,?,?,?) 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 ...@@ -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_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; import java.util.Scanner;
public class TestAdam { public class TestAdam {
...@@ -11,28 +11,38 @@ public class TestAdam { ...@@ -11,28 +11,38 @@ public class TestAdam {
"adam:incr:member_no", "adam:incr:member_no",
"adam:ad:info", "adam:ad:info",
"adam:blacklist:member:uid", "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:identity:mobile:13724286255",
"adam:info:user:270535560903720963807517", "adam:identity:mobile:15529282737",
"adam:info:morder:2104440", "adam:info:user:882883",
"adam:info:morder:2104440", "adam:info:morder:882883",
"adam:info:umember:2104440", "adam:info:umember:882883",
"adam:info:real_name:2104440", "adam:info:real_name:882883",
"adam:info:third_party:2104440", "adam:info:third_party:882883",
"adam:info:enters:2104440", "adam:info:enters:882883",
"adam:info:addresses:2104440", "adam:info:addresses:882883",
"adam:info:member:code:GMRGBUQB30", "adam:info:member:code:GMRGBUQB30",
"adam:info:certification:1141181199209160192",
"adam:identity:mobile:18505123456", "adam:identity:mobile:15529282737",
"adam:identity:sso:245482441472573441815566", "adam:identity:sso:882883",
"adam:info:user:310508344264376327445470", "adam:info:user:882883",
"adam:morder:2283655", "adam:morder:2283655",
"adam:info:umember:1364947", "adam:info:umember:1957341",
"adam:info:morder:1364947", "adam:info:morder:331587681810022407979836",
"adam:info:member:simple", "adam:info:member:simple",
"adam:info:member:category:1", "adam:info:member:category:1",
"adam:info:member:agreement",
"adam:info:member:rights:1", "adam:info:member:rights:1",
"adam:info:member:price:1",
"adam:info:member:rights:v:1", "adam:info:member:rights:v:1",
"adam:info:tags:music", "adam:info:tags:music",
"adam:info:tags:sex", "adam:info:tags:sex",
...@@ -41,7 +51,7 @@ public class TestAdam { ...@@ -41,7 +51,7 @@ public class TestAdam {
"candy:basic:coupon_code:0Jxko0wLWQdoTTF4", "candy:basic:coupon_code:0Jxko0wLWQdoTTF4",
"candy:basic:coupon_code:MJIoHC2qVZ0lp9UI", "candy:basic:coupon_code:MJIoHC2qVZ0lp9UI",
"candy:basic:user_coupon:270788673588551684937456", "candy:basic:user_coupon:809406",
"candy:basic:coupon_info:20210906143324612", "candy:basic:coupon_info:20210906143324612",
"candy:basic:common_coupon", "candy:basic:common_coupon",
...@@ -54,4 +64,14 @@ public class TestAdam { ...@@ -54,4 +64,14 @@ public class TestAdam {
System.out.printf("\n[%s] - idx:%s", key, idx); System.out.printf("\n[%s] - idx:%s", key, idx);
} }
} }
@Test
public void test() {
System.out.println(IdentityUtils.aliThird("徐佳颖", "429004200001202586"));
}
@Test
public void testTmp() {
}
} }
...@@ -95,7 +95,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -95,7 +95,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
} }
List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime); List<CandyUserCouponBasicDto> dtoList = redisDataUtils.getCouponByUid(uid, userCreateTime);
if (!CollectionUtil.isEmpty(dtoList)) { if (!CollectionUtil.isEmpty(dtoList)) {
Map<String, Long> mCouponCountMap = dtoList.parallelStream() Map<String, Long> mCouponCountMap = dtoList.stream()
.filter(r -> (r.getExclusive() == 1 && r.getState() == 1)) .filter(r -> (r.getExclusive() == 1 && r.getState() == 1))
.collect(Collectors.groupingBy(CandyUserCouponBasicDto::getMcouponId, Collectors.counting())); .collect(Collectors.groupingBy(CandyUserCouponBasicDto::getMcouponId, Collectors.counting()));
...@@ -215,7 +215,6 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -215,7 +215,6 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
for (CandyUserCouponBasicDto dtoItem : dtoList) { for (CandyUserCouponBasicDto dtoItem : dtoList) {
CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, dtoList.size()); CandyCouponVo baseVo = CouponBaseUtil.getGoodCouponUserVo(dtoItem, priceTotal, goodId, dtoList.size());
if (type == 1) { if (type == 1) {
if (baseVo.getState().equals(3) || dtoItem.getState().equals(5)) { if (baseVo.getState().equals(3) || dtoItem.getState().equals(5)) {
continue; continue;
...@@ -477,13 +476,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -477,13 +476,13 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
//删除code redis //删除code redis
redisDataUtils.delCouponByCode(ccode); redisDataUtils.delCouponByCode(ccode);
//添加baseDto -> baseDtoList //添加baseDto -> baseDtoList
redisDataUtils.addCouponByUid(uid, baseDto,userCreateTime); redisDataUtils.addCouponByUid(uid, baseDto, userCreateTime);
//入库 //入库
LinkedList<String> toMqSqls = CollectionUtil.linkedListString(); LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> objsUserCoupon = CollectionUtil.linkedListObjectArr(), LinkedList<Object[]> objsUserCoupon = CollectionUtil.linkedListObjectArr(),
objsCouponCode = CollectionUtil.linkedListObjectArr(); objsCouponCode = CollectionUtil.linkedListObjectArr();
toMqSqls.add(SqlMapping.get("candy_coupon.receive")); 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-已用] toMqSqls.add(SqlMapping.get("candy_coupon_code.receive"));// state:状态[0-可用|1-已用]
objsCouponCode.add(new Object[]{1, uCouponId, uid, mobile, now, now, dto.getCouponId(), ccode}); objsCouponCode.add(new Object[]{1, uCouponId, uid, mobile, now, now, dto.getCouponId(), ccode});
queueUtils.sendMsgByRedis( queueUtils.sendMsgByRedis(
...@@ -523,7 +522,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService { ...@@ -523,7 +522,7 @@ public class CandyCouponServiceImpl implements ICandyCouponService {
String uid = CurrentUtil.getCurrentUid(); String uid = CurrentUtil.getCurrentUid();
LocalDateTime userCreateTime; LocalDateTime userCreateTime;
try { 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) { } catch (Exception e) {
userCreateTime = null; userCreateTime = null;
} }
......
...@@ -40,12 +40,14 @@ public class CouponBaseUtil { ...@@ -40,12 +40,14 @@ public class CouponBaseUtil {
vo.setUsedAt(DateUtil.format(dtoItem.getUsedAt(), DateUtil.Formatter.yyyy_MM_dd)); vo.setUsedAt(DateUtil.format(dtoItem.getUsedAt(), DateUtil.Formatter.yyyy_MM_dd));
vo.setUsedFor(dtoItem.getUsedFor()); vo.setUsedFor(dtoItem.getUsedFor());
//适用范围 规则 //适用范围 规则
for (CandyCouponRuleDto ruleItem : dtoItem.getUseRules()) { if (dtoItem.getUseRules() != null) {
CandyCouponRulesVo voRules = CandyCouponRulesVo.getNew(); for (CandyCouponRuleDto ruleItem : dtoItem.getUseRules()) {
voRules.setUseScope(ruleItem.getUseScope()); CandyCouponRulesVo voRules = CandyCouponRulesVo.getNew();
voRules.setBusiId(ruleItem.getBusiId()); voRules.setUseScope(ruleItem.getUseScope());
voRules.setBusiName(ruleItem.getBusiName()); voRules.setBusiId(ruleItem.getBusiId());
rulesVoList.add(voRules); voRules.setBusiName(ruleItem.getBusiName());
rulesVoList.add(voRules);
}
} }
//券类别 //券类别
if (dtoItem.getBusiType().equals(3)) { if (dtoItem.getBusiType().equals(3)) {
......
...@@ -41,24 +41,24 @@ public class RedisDataUtils { ...@@ -41,24 +41,24 @@ public class RedisDataUtils {
if (obj == null) { if (obj == null) {
//降级 //降级
// userDto = new ArrayList(); // userDto = new ArrayList();
ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForUserCouponBasicDto(uid); // ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForUserCouponBasicDto(uid);
if (responseDto.isSuccess()) { // if (responseDto.isSuccess()) {
userDto = (List<CandyUserCouponBasicDto>) responseDto.getData(); // userDto = (List<CandyUserCouponBasicDto>) responseDto.getData();
} else { // } else {
userDto = ObjectUtil.getCandyUserCouponBasicDtoArrayList(); userDto = ObjectUtil.getCandyUserCouponBasicDtoArrayList();
} // }
} else { } else {
userDto = (List<CandyUserCouponBasicDto>) obj; userDto = (List<CandyUserCouponBasicDto>) obj;
} }
if (obj2 == null) { if (obj2 == null) {
//降级 //降级
ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForCommonCouponBasicDto(DateUtil.Formatter.yyyyMMddHHmmss.format(userCreateTime)); // ResponseDto<Object> responseDto = feignPlatformCandyDemoteClient.queryForCommonCouponBasicDto(DateUtil.Formatter.yyyyMMddHHmmss.format(userCreateTime));
if (responseDto.isSuccess()) { // if (responseDto.isSuccess()) {
pubDto = (List<CandyCommonCouponBasicDto>) responseDto.getData(); // pubDto = (List<CandyCommonCouponBasicDto>) responseDto.getData();
} else { // } else {
pubDto = ObjectUtil.getCandyCommonCouponBasicDtoArrayList(); pubDto = ObjectUtil.getCandyCommonCouponBasicDtoArrayList();
} // }
} else { } else {
pubDto = (List<CandyCommonCouponBasicDto>) obj2; pubDto = (List<CandyCommonCouponBasicDto>) obj2;
} }
......
# -- 使用券 -- # -- 使用券 --
candy_coupon.use=UPDATE candy_user_coupon SET state = 3 ,used_at = ? , used_for = ? WHERE uid = ? AND ucoupon_id = ? 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.back=UPDATE candy_user_coupon SET state = 1 WHERE uid = ? AND ucoupon_id = ? candy_coupon.back=UPDATE candy_user_coupon SET state = 1 WHERE uid = ? AND ucoupon_id = ?
# -- 领取券 -- # -- 领取券 --
......
...@@ -82,7 +82,7 @@ public class ChimeUserBiz { ...@@ -82,7 +82,7 @@ public class ChimeUserBiz {
} }
List<ChimeUserTagsMappingVo> userTagList = new ArrayList<>(); List<ChimeUserTagsMappingVo> userTagList = new ArrayList<>();
//设置用户id //设置用户id
userTagVoList.parallelStream().forEach(vo -> { userTagVoList.forEach(vo -> {
ChimeUserTagsMappingVo userTagsMappingVo = ChimeUserTagsMappingVo.getNew(); ChimeUserTagsMappingVo userTagsMappingVo = ChimeUserTagsMappingVo.getNew();
userTagsMappingVo.setTagCode(vo.getVal()); userTagsMappingVo.setTagCode(vo.getVal());
userTagsMappingVo.setTagDesc(vo.getDesc()); userTagsMappingVo.setTagDesc(vo.getDesc());
...@@ -111,7 +111,7 @@ public class ChimeUserBiz { ...@@ -111,7 +111,7 @@ public class ChimeUserBiz {
// } // }
// } // }
// //设置用户id // //设置用户id
// userTagVoList.parallelStream().forEach(vo -> { // userTagVoList.forEach(vo -> {
// ChimeUserTagDto userTagDto = ChimeUserTagDto.getNew(); // ChimeUserTagDto userTagDto = ChimeUserTagDto.getNew();
// userTagDto.setTagCode(vo.getVal()); // userTagDto.setTagCode(vo.getVal());
// userTagDto.setTagDesc(vo.getDesc()); // userTagDto.setTagDesc(vo.getDesc());
...@@ -198,6 +198,7 @@ public class ChimeUserBiz { ...@@ -198,6 +198,7 @@ public class ChimeUserBiz {
KylinPerformanceVo kylinPerformanceVo = responseDto.getData(); KylinPerformanceVo kylinPerformanceVo = responseDto.getData();
if(kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS6.getIndex() if(kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS6.getIndex()
||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS8.getIndex() ||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS8.getIndex()
||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS11.getIndex()
||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS9.getIndex()){ ||kylinPerformanceVo.getAppStatus() == KylinPerformanceStatusEnum.PERFORMANCESTATUS9.getIndex()){
isOnline = true; isOnline = true;
} }
...@@ -257,7 +258,7 @@ public class ChimeUserBiz { ...@@ -257,7 +258,7 @@ public class ChimeUserBiz {
return null; return null;
} }
} }
String rsSexDesc = "其他"; String rsSexDesc = "保密";
switch (adamTagVo.getDesc()){ switch (adamTagVo.getDesc()){
case "男性": case "男性":
rsSexDesc = "男"; rsSexDesc = "男";
......
...@@ -242,7 +242,7 @@ public class TestDataUtils { ...@@ -242,7 +242,7 @@ public class TestDataUtils {
// reqDto.setTags("tags40,tags80"); // reqDto.setTags("tags40,tags80");
NewPageResult<ChimeUserInfoDto> pageInfo = chimePerformanceService.getUserListByCon(reqDto); NewPageResult<ChimeUserInfoDto> pageInfo = chimePerformanceService.getUserListByCon(reqDto);
log.info("总共获取总数pagecount:{}",pageInfo.getList().size()); log.info("总共获取总数pagecount:{}",pageInfo.getList().size());
pageInfo.getList().parallelStream().forEach(dto -> { pageInfo.getList().forEach(dto -> {
// System.out.println(dto.getUserId()); // System.out.println(dto.getUserId());
// System.out.println(JsonUtils.toJson(dto.getUserTags())); // System.out.println(JsonUtils.toJson(dto.getUserTags()));
}); });
......
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerAntigenicQuestionRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_ANTIGENIC_QUESTION_DRAW;
@Configuration
public class ConsumerAntigenicQuestionRedisStreamConfig {
@Autowired
ConsumerAntigenicQuestionRdsReceiver consumerAntigenicQuestionRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveSqlAntigenicQuestion(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_ANTIGENIC_QUESTION_DRAW.getGroup(), SWEET_ANTIGENIC_QUESTION_DRAW.name() + t),
StreamOffset.create(SWEET_ANTIGENIC_QUESTION_DRAW.getKey(), ReadOffset.lastConsumed()), consumerAntigenicQuestionRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlAntigenicQuestion(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAntigenicQuestion2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAntigenicQuestion3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAntigenicQuestion(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.sweet.config;
import com.liquidnet.service.consumer.sweet.receiver.ConsumerCityVoteRdsReceiver;
import lombok.var;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.stream.Consumer;
import org.springframework.data.redis.connection.stream.MapRecord;
import org.springframework.data.redis.connection.stream.ReadOffset;
import org.springframework.data.redis.connection.stream.StreamOffset;
import org.springframework.data.redis.stream.StreamMessageListenerContainer;
import org.springframework.data.redis.stream.Subscription;
import java.time.Duration;
import static com.liquidnet.service.base.constant.MQConst.SweetQueue.SWEET_CITY_VOTE_DRAW;
@Configuration
public class ConsumerCityVoteRedisStreamConfig {
@Autowired
ConsumerCityVoteRdsReceiver consumerCityVoteRdsReceiver;
private StreamMessageListenerContainer<String, MapRecord<String, String, String>> buildStreamMessageListenerContainer(RedisConnectionFactory factory) {
var options = StreamMessageListenerContainer
.StreamMessageListenerContainerOptions
.builder()
.pollTimeout(Duration.ofMillis(1))
.build();
return StreamMessageListenerContainer.create(factory, options);
}
/**
* 缺票登记
*
* @param listenerContainer
* @param t
* @return
*/
private Subscription receiveSqlCityVote(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_CITY_VOTE_DRAW.getGroup(), SWEET_CITY_VOTE_DRAW.name() + t),
StreamOffset.create(SWEET_CITY_VOTE_DRAW.getKey(), ReadOffset.lastConsumed()), consumerCityVoteRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlCityVote(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCityVote(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlCityVote2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCityVote(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlCityVote3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlCityVote(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
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