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

Commit a7bd4b04 authored by anjiabin's avatar anjiabin

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

# Conflicts:
#	liquidnet-bus-common/liquidnet-common-cache/liquidnet-common-cache-redis/src/main/java/com.liquidnet.common.cache/redis/util/RedisUtil.java
parents bdc3454b c7ab86e1
......@@ -33,24 +33,28 @@ public class AdamMemberOrderParam implements Serializable {
@Pattern(regexp = LnsRegex.Valid.DATETIME_YMD, message = "生日格式有误")
@NotBlank(message = "生日不能为空")
private String birthday;
@ApiModelProperty(position = 16, required = true, value = "支付终端", allowableValues = "app,wap,js,applet")
@ApiModelProperty(position = 16, required = true, value = "收获地址")
@Size(min = 1, max = 64, message = "收获地址长度限制1-64位字符")
@NotBlank(message = "收获地址不能为空")
private String addressId;
@ApiModelProperty(position = 17, required = true, value = "支付终端", allowableValues = "app,wap,js,applet")
@Pattern(regexp = LnsRegex.Valid.TRIPLE_PF_FOR_PAY_TERMINAL, message = "支付终端类型无效")
@NotBlank(message = "支付终端不能为空")
private String deviceFrom;
@ApiModelProperty(position = 17, required = true, value = "支付方式", allowableValues = "alipay,wepay")
@ApiModelProperty(position = 20, required = true, value = "支付方式", allowableValues = "alipay,wepay")
@Pattern(regexp = LnsRegex.Valid.TRIPLE_PF_FOR_PAY, message = "支付方式无效")
@NotBlank(message = "支付方式不能为空")
private String payType;
@ApiModelProperty(position = 18, required = false, value = "App内Apple支付必传")
@ApiModelProperty(position = 21, required = false, value = "App内Apple支付必传")
private String productId;
@ApiModelProperty(position = 19, required = false, value = "微信内网页及小程序支付必传")
@ApiModelProperty(position = 22, required = false, value = "微信内网页及小程序支付必传")
private String openId;
@ApiModelProperty(position = 23, required = false, value = "取消支付,点击取消支付宝回调地址")
private String showUrl;
@ApiModelProperty(position = 24, required = false, value = "支付成功,点击完成支付宝回调地址")
private String returnUrl;
@ApiModelProperty(position = 19, required = false, value = "姓名[未实名时必传]", example = "王武")
@ApiModelProperty(position = 30, required = false, value = "姓名[未实名时必传]", example = "王武")
private String name;
@ApiModelProperty(position = 20, required = false, value = "身份证件号[未实名时必传]", example = "111111111111111111")
@ApiModelProperty(position = 31, required = false, value = "身份证件号[未实名时必传]", example = "111111111111111111")
private String idCard;
}
......@@ -36,8 +36,8 @@ public class AdamUserInfoParam implements java.io.Serializable {
@ApiModelProperty(position = 16, required = true, value = "常住地/区域[100]", example = "北京 北京市 朝阳区")
// @NotBlank(message = "常住地不能为空")
private String area;
@ApiModelProperty(position = 17, required = true, value = "签名[15]", example = "...................")
// @Size(max = 15, message = "已超出签名长度限制")
@ApiModelProperty(position = 17, required = true, value = "签名[30]", example = "...................")
// @Size(max = 30, message = "已超出签名长度限制")
private String signature;
@ApiModelProperty(position = 18, required = true, value = "标签[500]", example = "[{\"val\":\"MMS01\",\"desc\":\"民歌\",\"tagVos\":[{\"val\":\"MMS0101\",\"desc\":\"A\"},{\"val\":\"MMS0102\",\"desc\":\"B\"}]},{\"val\":\"MMS02\",\"desc\":\"house\",\"tagVos\":[{\"val\":\"MMS0201\",\"desc\":\"C\"}]}]")
// @NotNull
......
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@ApiModel(value = "AdamLoginInfoVo", description = "登录成功响应数据")
@Data
public class AdamLoginInfoVo implements Serializable, Cloneable {
private static final long serialVersionUID = 4209754800686327524L;
@ApiModelProperty(position = 11, value = "TOKEN")
......@@ -29,14 +28,84 @@ public class AdamLoginInfoVo implements Serializable, Cloneable {
@ApiModelProperty(position = 18, value = "微信用户unionid(微信小程序登录返回,用于给小程序用户推送信息)")
private String wechatUnionid;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
public AdamUserInfoVo getUserInfo() {
return userInfo;
}
public void setUserInfo(AdamUserInfoVo userInfo) {
this.userInfo = userInfo;
}
public AdamRealInfoVo getRealNameInfo() {
return realNameInfo;
}
public void setRealNameInfo(AdamRealInfoVo realNameInfo) {
this.realNameInfo = realNameInfo;
}
public List<AdamThirdPartInfoVo> getThirdPartInfo() {
return thirdPartInfo;
}
public void setThirdPartInfo(List<AdamThirdPartInfoVo> thirdPartInfo) {
this.thirdPartInfo = thirdPartInfo;
}
public AdamMemberSimpleVo getMemberVo() {
return memberVo;
}
public void setMemberVo(AdamMemberSimpleVo memberVo) {
this.memberVo = memberVo;
}
public AdamUserMemberVo getUserMemberVo() {
return userMemberVo;
}
public void setUserMemberVo(AdamUserMemberVo userMemberVo) {
this.userMemberVo = userMemberVo;
}
public String getWechatOpenid() {
return wechatOpenid;
}
public void setWechatOpenid(String wechatOpenid) {
this.wechatOpenid = wechatOpenid;
}
public String getWechatUnionid() {
return wechatUnionid;
}
public void setWechatUnionid(String wechatUnionid) {
this.wechatUnionid = wechatUnionid;
}
private static final AdamLoginInfoVo obj = new AdamLoginInfoVo();
public static AdamLoginInfoVo getNew() {
try {
return (AdamLoginInfoVo) obj.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return new AdamLoginInfoVo();
}
return new AdamLoginInfoVo();
}
public AdamLoginInfoVo desensitize() {
this.userInfo.setPasswd(null);
// this.userInfo.setPayCode(null);
this.userInfo.setMobile(SensitizeUtil.custom(userInfo.getMobile(), 3, 4));
return this;
}
}
package com.liquidnet.service.adam.dto.vo;
import com.liquidnet.service.adam.entity.AdamMemberOrderExt;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@ApiModel(value = "AdamMemberOrderExtVo", description = "用户会员订单扩展信息")
@Data
public class AdamMemberOrderExtVo implements Serializable, Cloneable {
private static final long serialVersionUID = -1718738306110269600L;
@ApiModelProperty(position = 1, value = "订单号")
private String orderNo;
@ApiModelProperty(position = 2, value = "快递状态")
private Integer expressStatus;
@ApiModelProperty(position = 3, value = "收件人")
private String expressReceiver;
@ApiModelProperty(position = 4, value = "收件人电话")
private String expressPhone;
@ApiModelProperty(position = 5, value = "收件人地址")
private String expressAddress;
private static final AdamMemberOrderExtVo obj = new AdamMemberOrderExtVo();
public static AdamMemberOrderExtVo getNew() {
try {
return (AdamMemberOrderExtVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamMemberOrderExtVo();
}
}
public AdamMemberOrderExtVo copy(AdamMemberOrderExt source) {
if (null == source) return this;
this.setOrderNo(source.getOrderNo());
this.setExpressStatus(source.getExpressStatus());
this.setExpressReceiver(source.getExpressReceiver());
this.setExpressPhone(source.getExpressPhone());
this.setExpressAddress(source.getExpressAddress());
return this;
}
}
......@@ -3,6 +3,7 @@ package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.entity.AdamMemberOrderExt;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -61,9 +62,12 @@ public class AdamMemberOrderVo implements Serializable, Cloneable {
@ApiModelProperty(position = 20, value = "客户端版本")
private String version;
@ApiModelProperty(position = 21, value = "会员须知")
@ApiModelProperty(position = 21, value = "会员订单扩展信息")
private AdamMemberOrderExtVo extendVo;
@ApiModelProperty(position = 30, value = "会员须知")
private String memberNotes;
@ApiModelProperty(position = 22, value = "会员码信息")
@ApiModelProperty(position = 31, value = "会员码信息")
private AdamMemberCodeVo memberCodeVo;
public static final AdamMemberOrderVo obj = new AdamMemberOrderVo();
......
package com.liquidnet.service.adam.dto.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@ApiModel(value = "AdamRscPolymer01Vo", description = "票务下单所需信息")
@Data
public class AdamRscPolymer01Vo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = -4945093532123934888L;
@ApiModelProperty(position = 1, value = "会员身份[0-非会员,1-会员]")
private int membership;
@ApiModelProperty(position = 2, value = "收货地址")
private AdamAddressesVo addressesVo;
@ApiModelProperty(position = 3, value = "入场人列表")
private List<AdamEntersVo> entersVos;
private static final AdamRscPolymer01Vo obj = new AdamRscPolymer01Vo();
public static AdamRscPolymer01Vo getNew() {
try {
return (AdamRscPolymer01Vo) obj.clone();
} catch (CloneNotSupportedException e) {
return new AdamRscPolymer01Vo();
}
}
}
......@@ -2,6 +2,7 @@ package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.service.adam.entity.AdamThirdParty;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -39,4 +40,17 @@ public class AdamThirdPartInfoVo implements java.io.Serializable, Cloneable {
}
return new AdamThirdPartInfoVo();
}
public AdamThirdPartInfoVo copy(AdamThirdParty source) {
if (null == source) return this;
this.setUid(source.getUid());
this.setOpenId(source.getOpenId());
this.setNickname(source.getNickname());
this.setAvatar(source.getAvatar());
this.setPlatform(source.getPlatform());
this.setState(source.getState());
this.setCreatedAt(source.getCreatedAt());
this.setUpdatedAt(source.getUpdatedAt());
return this;
}
}
package com.liquidnet.service.adam.dto.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.type.TypeReference;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.commons.lang.util.SensitizeUtil;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -11,6 +14,7 @@ import java.time.LocalDateTime;
import java.util.List;
@ApiModel(value = "AdamUserInfoVo", description = "用户详情")
@Data
public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
private static final long serialVersionUID = 8479869354894030303L;
@ApiModelProperty(position = 10, value = "用户ID[64]")
......@@ -66,148 +70,36 @@ public class AdamUserInfoVo implements java.io.Serializable, Cloneable {
return new AdamUserInfoVo();
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPasswd() {
// return passwd;
return "*";
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public AdamTagVo getSex() {
return sex;
}
public void setSex(AdamTagVo sex) {
this.sex = sex;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getSignature() {
return signature;
}
public void setSignature(String signature) {
this.signature = signature;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getBackground() {
return background;
}
public void setBackground(String background) {
this.background = background;
}
public List<AdamTagParentVo> getTagMe() {
return tagMe;
}
public void setTagMe(List<AdamTagParentVo> tagMe) {
this.tagMe = tagMe;
}
public LocalDateTime getCreateAt() {
return createAt;
}
public void setCreateAt(LocalDateTime createAt) {
this.createAt = createAt;
}
public LocalDateTime getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(LocalDateTime updatedAt) {
this.updatedAt = updatedAt;
}
public LocalDateTime getClosedAt() {
return closedAt;
}
public void setClosedAt(LocalDateTime closedAt) {
this.closedAt = closedAt;
}
public Integer getIsComplete() {
return isComplete;
}
public void setIsComplete(Integer isComplete) {
this.isComplete = isComplete;
}
public String getRongCloudToken() {
return rongCloudToken;
}
public void setRongCloudToken(String rongCloudToken) {
this.rongCloudToken = rongCloudToken;
}
public String getQrCode() {
return qrCode;
}
public void setQrCode(String qrCode) {
this.qrCode = qrCode;
public AdamUserInfoVo copy(AdamUserInfoDto source) {
if (null == source) return this;
this.setUid(source.getUid());
this.setMobile(source.getMobile());
this.setPasswd(source.getPasswd());
this.setNickname(source.getNickname());
this.setState(source.getState());
this.setSex(JsonUtils.fromJson(source.getSex(), AdamTagVo.class));
this.setBirthday(source.getBirthday());
this.setArea(source.getArea());
this.setSignature(source.getSignature());
this.setAvatar(source.getAvatar());
this.setBackground(source.getBackground());
this.setTagMe(JsonUtils.fromJson(source.getTagMe(), new TypeReference<List<AdamTagParentVo>>() {}));
this.setCreateAt(source.getCreateAt());
this.setUpdatedAt(source.getUpdatedAt());
this.setClosedAt(source.getClosedAt());
this.setIsComplete(source.getIsComplete());
this.setRongCloudToken(source.getRongCloudToken());
this.setQrCode(source.getQrCode());
return this;
}
public AdamUserInfoVo desensitize() {
this.setPasswd(null);
// this.userInfo.setPayCode(null);
this.setMobile(SensitizeUtil.custom(this.getMobile(), 3, 4));
return this;
}
}
package com.liquidnet.service.adam.dto.vo.admin;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderExtVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
......@@ -21,4 +22,5 @@ public class MemberOrderDetailAdminVo {
private AdamUser adamUser;
private AdamUserInfoVo adamUserInfoVo;
private AdamUserMemberVo adamUserMemberVo;
private AdamMemberOrderExtVo adamMemberOrderExtVo;
}
......@@ -15,9 +15,10 @@ public interface IAdamMemberOrderService {
/**
* 购买会员或会员码
*
* @param uid
* @param param
*/
ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(AdamMemberOrderParam param);
ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String uid, AdamMemberOrderParam param);
/**
* 支付回调
......
package com.liquidnet.service.kylin.dto.param;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -7,7 +8,7 @@ import javax.validation.constraints.Min;
import java.math.BigDecimal;
@Data
public class SyncOrderParam {
public class SyncOrderParam implements Cloneable {
@ApiModelProperty(value = "status")
private Integer status;
@ApiModelProperty(value = "type")
......@@ -24,4 +25,13 @@ public class SyncOrderParam {
private String paymentType;
@ApiModelProperty(value = "paymentAt")
private String paymentAt;
private static final SyncOrderParam obj = new SyncOrderParam();
public static SyncOrderParam getNew() {
try {
return (SyncOrderParam) obj.clone();
} catch (CloneNotSupportedException e) {
return new SyncOrderParam();
}
}
}
......@@ -7,7 +7,7 @@ import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class PayInnerResultVo implements Serializable {
public class PayInnerResultVo implements Serializable,Cloneable {
private String code;
private String orderCode;
......@@ -18,4 +18,12 @@ public class PayInnerResultVo implements Serializable {
private BigDecimal price;
private PayDataVo payData;
private static final PayInnerResultVo obj = new PayInnerResultVo();
public static PayInnerResultVo getNew() {
try {
return (PayInnerResultVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new PayInnerResultVo();
}
}
}
......@@ -7,11 +7,20 @@ import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class PayResultVo implements Serializable {
public class PayResultVo implements Serializable,Cloneable {
private static final long serialVersionUID = 1541552316829686035L;
private String code;
private String message;
private PayInnerResultVo data;
private static final PayResultVo obj = new PayResultVo();
public static PayResultVo getNew() {
try {
return (PayResultVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new PayResultVo();
}
}
}
......@@ -65,7 +65,7 @@
<div class="form-group">
<label class="col-sm-3 control-label">会员卡名称:</label>
<div class="col-sm-8">
<input name="state" th:field="*{adamMemberOrderVo.memberName}" class="form-control" type="text" readonly>
<input name="memberName" th:field="*{adamMemberOrderVo.memberName}" class="form-control" type="text" readonly>
</div>
</div>
<!-- <div class="form-group">-->
......@@ -95,6 +95,18 @@
<!-- <input name="version" th:field="*{version}" class="form-control" type="text">-->
<!-- </div>-->
<!-- </div>-->
<div class="form-group">
<label class="col-sm-3 control-label">收件人:</label>
<div class="col-sm-8">
<input name="expressReceiver" th:value="|*{adamMemberOrderExtVo.expressReceiver} / *{adamMemberOrderExtVo.expressPhone}|" class="form-control" type="text" readonly>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">收件地址:</label>
<div class="col-sm-8">
<input name="expressAddress" th:value="*{adamMemberOrderExtVo.expressAddress}" class="form-control" type="text" readonly>
</div>
</div>
</form>
</div>
<th:block th:include="include :: footer" />
......
......@@ -158,7 +158,7 @@
var inputValue = $(td).find("input").val();
if (inputName == "priceDiscountMember") {//过滤修改列
performanceMemberAuditParam["ticketMemberAudit[" + i + "].priceDiscountMember"] = parseFloat(inputValue);
if (parseFloat($("td[name^='price']").text()) - parseFloat(inputValue) <= 0) {
if (parseFloat($("td[name^='price']").text()) - parseFloat(inputValue) < 0) {
canSubmit = 0;
}
}
......
package com.liquidnet.client.admin.zhengzai.adam.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.client.admin.zhengzai.adam.service.IAdamMemberOrderAdminService;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.service.adam.dto.MemberOrderDto;
import com.liquidnet.service.adam.dto.param.admin.MemberOrderListReq;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderExtVo;
import com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo;
import com.liquidnet.service.adam.dto.vo.AdamUserInfoVo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.dto.vo.admin.MemberOrderDetailAdminVo;
import com.liquidnet.service.adam.entity.AdamMemberOrder;
import com.liquidnet.service.adam.entity.AdamUser;
import com.liquidnet.service.adam.entity.AdamUserInfo;
import com.liquidnet.service.adam.entity.AdamUserMember;
import com.liquidnet.service.adam.mapper.AdamMemberOrderMapper;
import com.liquidnet.service.adam.mapper.AdamUserInfoMapper;
import com.liquidnet.service.adam.mapper.AdamUserMapper;
import com.liquidnet.service.adam.mapper.AdamUserMemberMapper;
import com.liquidnet.service.adam.entity.*;
import com.liquidnet.service.adam.mapper.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -46,6 +42,8 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
private AdamUserInfoMapper adamUserInfoMapper;
@Autowired
private AdamUserMapper adamUserMapper;
@Autowired
private AdamMemberOrderExtMapper adamMemberOrderExtMapper;
@Override
public List<MemberOrderDto> getMemberOrderList(MemberOrderListReq memberOrderListReq) {
......@@ -90,11 +88,14 @@ public class AdamMemberOrderAdminServiceImpl extends ServiceImpl<AdamMemberOrder
LambdaQueryWrapper<AdamUser> adamUserWrapper = new LambdaQueryWrapper();
adamUserWrapper.eq(AdamUser::getUid,adamMemberOrderVo.getUid());
adamUser = adamUserMapper.selectOne(adamUserWrapper);
// 查取快递信息
AdamMemberOrderExt adamMemberOrderExt = adamMemberOrderExtMapper.selectOne(Wrappers.lambdaQuery(AdamMemberOrderExt.class).eq(AdamMemberOrderExt::getOrderNo, orderNo));
detailAdminVo.setAdamMemberOrderVo(adamMemberOrderVo);
detailAdminVo.setAdamUserMemberVo(adamUserMemberVo);
detailAdminVo.setAdamUserInfoVo(adamUserInfoVo);
detailAdminVo.setAdamUser(adamUser);
detailAdminVo.setAdamMemberOrderExtVo(AdamMemberOrderExtVo.getNew().copy(adamMemberOrderExt));
return detailAdminVo;
}
}
package com.liquidnet.client.admin.zhengzai.kylin.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
......@@ -8,15 +9,19 @@ import com.liquidnet.client.admin.zhengzai.kylin.utils.DataUtils;
import com.liquidnet.client.admin.zhengzai.kylin.utils.PerformanceVoUtils;
import com.liquidnet.commons.lang.util.BeanUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.dto.param.*;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceAgentVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceDamaiVo;
import com.liquidnet.service.kylin.dto.vo.admin.KylinPerformanceMemberHistoryVo;
import com.liquidnet.service.kylin.dto.vo.admin.PerformanceRefundConfigVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinPerformanceMisVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketTimesPartnerVo;
import com.liquidnet.service.kylin.dto.vo.partner.TicketTimesTicketCreatePartnerVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.*;
import com.liquidnet.service.kylin.service.admin.IKylinPerformancesAdminService;
......@@ -83,13 +88,7 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
private KylinTicketStatusMapper ticketStatusMapper;
@Autowired
private KylinTicketRelationsMapper ticketRelationsMapper;
@Autowired
private KylinTicketTimesMapper ticketTimesMapper;
@Autowired
private KylinTicketTimeRelationMapper ticketTimeRelationMapper;
private KylinOrderTicketsMapper kylinOrderTicketsMapper;
@Override
public KylinPerformanceMisVo performanceDetails(String performancesId) {
......@@ -114,14 +113,13 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
map.put("auditStatus", auditStatus);
map.put("updatedAt", updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
BasicDBObject objectPerformanceVo = new BasicDBObject("$set", mongoConverter.convertToMongoType(map));
mongoTemplate.getCollection(PerformancePartnerVo.class.getSimpleName()).findOneAndUpdate(
mongoTemplate.getCollection(PerformancePartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("performancesId").is(performancesId)).getQueryObject(),
objectPerformanceVo,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
objectPerformanceVo
);
KylinPerformanceStatus sqlStatus = performanceStatusMapper.selectOne(new UpdateWrapper<KylinPerformanceStatus>().eq("performance_id", performancesId));
dataUtils.setPerformanceIsTrueName(performancesId,sqlStatus.getIsTrueName());
dataUtils.setPerformanceIsTrueName(performancesId, sqlStatus.getIsTrueName());
if (sqlStatus.getStatus() == 1) {
log.info(" PERFORMANCE 演出审核 第一次");
//修改
......@@ -159,10 +157,12 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
HashMap<String, Object> mapSql = new HashMap<>();
mapSql.put("status", 9);
mapSql.put("updatedAt", updatedAt.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
performanceVoUtils.updatePerformanceMySql(performancesId, mapSql, performanceVoUtils.getPerformanceMisVo(performancesId), updatedAt, auditStatus);
KylinPerformanceMisVo vo = performanceVoUtils.getPerformanceMisVo(performancesId);
performanceVoUtils.updatePerformanceMySql(performancesId, mapSql, vo, updatedAt, auditStatus);
if (sqlStatus.getStatus() >= 6 && sqlStatus.getStatus() != 7) {//若 演出上 则 线判断状态
performanceVoUtils.performanceVoStatus(performancesId);
}
delOrderTicketsRedis(vo);
}
dataUtils.delPerformanceRedis(performancesId);
......@@ -575,8 +575,8 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
vo.setPerformancesId(kylinPerformances.getPerformancesId());
vo.setTitle(kylinPerformances.getTitle());
vo.setIsCanRefund(kylinPerformanceStatus.getIsCanRefund());
vo.setRefundCloseTime(kylinPerformanceStatus.getRefundCloseTime()==null?"":DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundCloseTime()));
vo.setRefundOpenTime(kylinPerformanceStatus.getRefundOpenTime()==null?"":DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundOpenTime()));
vo.setRefundCloseTime(kylinPerformanceStatus.getRefundCloseTime() == null ? "" : DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundCloseTime()));
vo.setRefundOpenTime(kylinPerformanceStatus.getRefundOpenTime() == null ? "" : DateUtil.Formatter.yyyyMMddHHmmss.format(kylinPerformanceStatus.getRefundOpenTime()));
return vo;
}
......@@ -648,4 +648,33 @@ public class KylinPerformancesAdminServiceImpl extends ServiceImpl<KylinPerforma
public List<PerformanceSponsorDao> getPerformanceSponsorList(String sponsorType) {
return performancesMapper.getPerformanceSponsorList(sponsorType);
}
//删除演出下所有订单缓存(订单详情,订单列表)
public void delOrderTicketsRedis(KylinPerformanceMisVo vo) {
//找到所有ticketId
List<TicketTimesTicketCreatePartnerVo> timesVoList = vo.getTicketTimes();
for (TicketTimesTicketCreatePartnerVo timesVo : timesVoList) {
List<String> orderTicketRedisIdList = new ArrayList<>();
List<String> userRedisIdList = new ArrayList<>();
List<String> orderTicketIdList = new ArrayList<>();
List<OrderIdsDao> orderIdsDaoList = kylinOrderTicketsMapper.getOrderUserIdByTimesId(timesVo.getTicketTimesId());
for (OrderIdsDao item : orderIdsDaoList) {
orderTicketRedisIdList.add(KylinRedisConst.ORDER + item.getOrderTicketsId());
userRedisIdList.add(KylinRedisConst.ORDER_LIST + item.getUserId());
orderTicketIdList.add(item.getOrderTicketsId());
}
HashMap<String, Object> mapMongo = new HashMap<>();
mapMongo.put("useStart", timesVo.getUseStart());
long time1 = System.currentTimeMillis();
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderTicketsId").in(orderTicketIdList)).getQueryObject(),
new BasicDBObject("$set", mongoConverter.convertToMongoType(mapMongo))
);
log.debug("修改场次相关 mongo time -> " + (System.currentTimeMillis() - time1) + " ms ");
time1 = System.currentTimeMillis();
dataUtils.delOrderIdUserIdRedis(orderTicketRedisIdList, userRedisIdList);
log.debug("修改场次相关 redis time -> " + (System.currentTimeMillis() - time1) + " ms ");
}
}
}
......@@ -313,12 +313,18 @@ public class DataUtils {
redisUtil.del(KylinRedisConst.ORDER_REFUND.concat(id));
}
}
public void delOrderRefundVoByOrderId(List<String> orderIds){
for (String id : orderIds) {
redisUtil.del(KylinRedisConst.ORDER_REFUND_BY_ORDER_ID.concat(id));
}
}
public void delOrderIdUserIdRedis(List<String> orderTicketIdList,List<String> userIdList){
redisUtil.delList(orderTicketIdList);
redisUtil.delList(userIdList);
}
/**
* Object转BigDecimal类型
*
......
package com.liquidnet.client.admin.zhengzai.kylin.utils;
import com.liquidnet.commons.lang.util.CollectionUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.util.HashMap;
@Component
public class QueueUtils {
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* 发送消息 - REDIS
*
* @param streamKey Redis消费Key
* @param jsonMsg Json字符串
*/
public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
}
......@@ -71,9 +71,12 @@ public class MQConst {
public enum SweetQueue {
ARTISTS_RELATION("sweet:stream:rk.artists.relation", "group.artists.relation", "用户-关系"),
ARTISTS_RELATION("sweet:stream:rk.artists.relation", "group.artists.relation", "用户-关系"),
ARTISTS_RELATION_MDSK("sweet:stream:rk.artists.mdsk.relation", "group.artists.mdsk.relation", "用户-关系"),
LUCK_DRAW("sweet:stream:rk.luckDraw", "group.luckDraw", "用户-抽奖"),
ANSWERINSERT_DRAW("sweet:stream:rk.answerInsert", "group.answerInsert", "答案"),
SWEET_USER_INSERT_DRAW("sweet:stream:rk.sweetUserInsert", "group.sweetUserInsert", "关注服务号的用户信息"),
SWEET_REMIND_INSERT_DRAW("sweet:stream:rk.remindInsert", "group.remindInsert", "提醒记录"),
;
private final String key;
......
......@@ -6,24 +6,48 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMethod;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.List;
@Configuration
@EnableSwagger2WebMvc
public class Swagger2Config {
@Autowired
private Environment environment;
List<ResponseMessage> responseMessageList = new ArrayList<ResponseMessage>() {
private static final long serialVersionUID = -5089595359417116101L;
{
// add(
// new ResponseMessageBuilder().code(HttpStatus.INTERNAL_SERVER_ERROR.value()).message(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase())
// .responseModel(new ModelRef(HttpStatus.INTERNAL_SERVER_ERROR.getReasonPhrase()))
// .build()
// );
}
};
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.globalResponseMessage(RequestMethod.GET, responseMessageList)
.globalResponseMessage(RequestMethod.HEAD, responseMessageList)
.globalResponseMessage(RequestMethod.POST, responseMessageList)
.globalResponseMessage(RequestMethod.PUT, responseMessageList)
.globalResponseMessage(RequestMethod.PATCH, responseMessageList)
.globalResponseMessage(RequestMethod.DELETE, responseMessageList)
.globalResponseMessage(RequestMethod.OPTIONS, responseMessageList)
.globalResponseMessage(RequestMethod.TRACE, responseMessageList)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
......@@ -36,9 +60,9 @@ public class Swagger2Config {
return new ApiInfoBuilder()
.title((StringUtils.isEmpty(appName) ? "service-xxx" : appName.substring(10)) + " APIs")
.description(appName)
.contact(new Contact("lightnet", "", "**@lightnet.io"))
.contact(new Contact("lightnet", "", "**@zhengzai.tv"))
.version("all")
.termsOfServiceUrl("xxx.xxx.xxx")
.termsOfServiceUrl("xxx.zhengzai.tv/xxx")
.build();
}
......
......@@ -2,6 +2,8 @@ config-server-git: dev111
#application-dev-begin
#这里后续添加公共参数值
liquidnet:
secret:
passwd-salt: NTZiYzg4
security:
username: user
password: user123
......
......@@ -2,6 +2,8 @@ config-server-git: test
#application-test-begin
#这里后续添加公共参数值
liquidnet:
secret:
passwd-salt: NTZiYzg4
security:
username: user
password: user123
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......@@ -132,6 +132,7 @@ global-auth:
- ${liquidnet.info.context}/plz/ad
- ${liquidnet.info.context}/wxa/code2session
- ${liquidnet.info.context}/wx/oauth2/access_token
- ${liquidnet.info.context}/rsc/**
# -----------------------------------------------------------
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......@@ -121,11 +121,9 @@ spring:
# type: org.apache.tomcat.jdbc.pool.DataSource
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
# 迁移数据暂设500
maximum-pool-size: 500
# 迁移数据暂设10分钟
connection-timeout: 600000
minimum-idle: 8
maximum-pool-size: 50
connection-timeout: 60000
minimum-idle: 10
connection-test-query: SELECT 1
# -----------------------------------------------------------
......
......@@ -13,9 +13,9 @@ liquidnet:
file-max-size: 200MB
level: debug
mysql:
database-name: test_ln_scene
database-name: dev_ln_scene
mongodb:
sslEnabled: false
database: test_ln_scene
database: dev_ln_scene
#以下为spring各环境个性配置
......@@ -14,7 +14,7 @@ knife4j:
enable: true
production: ${liquidnet.knife4j.disable}
basic:
enable: false
enable: true
username: ${liquidnet.security.username}
password: ${liquidnet.security.password}
# -----------------------------------------------------------
......
package com.liquidnet.service.adam.dto;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class AdamUserInfoDto {
private String uid;
private String mobile;
private String passwd;
// private String payCode;
private String nickname;
private Integer state;
private String sex;
private String birthday;
private String area;
private String signature;
private String avatar;
private String background;
private String tagMe;
private LocalDateTime createAt;
private LocalDateTime updatedAt;
private LocalDateTime closedAt;
private Integer isComplete;
private String rongCloudToken;
private String qrCode;
}
package com.liquidnet.service.adam.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 用户会员订单扩展信息表
* </p>
*
* @author liquidnet
* @since 2021-08-11
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class AdamMemberOrderExt implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
private String orderNo;
/**
* 快递状态:0-待揽收|1-已揽收|2-在途中|3-已签收|4-已拒收
*/
private Integer expressStatus;
/**
* 收件人
*/
private String expressReceiver;
/**
* 收件人电话
*/
private String expressPhone;
/**
* 收件人地址
*/
private String expressAddress;
private String comment;
}
package com.liquidnet.service.adam.mapper;
import com.liquidnet.service.adam.entity.AdamMemberOrderExt;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户会员订单扩展信息表 Mapper 接口
* </p>
*
* @author liquidnet
* @since 2021-08-11
*/
public interface AdamMemberOrderExtMapper extends BaseMapper<AdamMemberOrderExt> {
}
package com.liquidnet.service.adam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.adam.dto.AdamUserInfoDto;
import com.liquidnet.service.adam.entity.AdamUser;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* <p>
......@@ -15,4 +19,29 @@ import org.apache.ibatis.annotations.Param;
public interface AdamUserMapper extends BaseMapper<AdamUser> {
int executeForDM(@Param("tn") String tn);
@Select({"select u.mid," +
"u.uid," +
"u.mobile," +
"u.passwd," +
"u.state," +
"u.is_complete as isComplete," +
"u.created_at as createAt," +
"u.updated_at as updatedAt," +
"u.closed_at as closedAt," +
"ui.nickname," +
"ui.sex," +
"ui.birthday," +
"ui.area," +
"ui.signature," +
"ui.avatar," +
"ui.background," +
"ui.qr_code as qrCode," +
"ui.tag_me as tagMe," +
"ui.rong_cloud_token as rongCloudToken " +
"from adam_user u,adam_user_info ui where u.uid = ui.uid " +
"order by u.uid " +
"limit #{rows},#{offset}"
})
List<AdamUserInfoDto> selectMultiForUserInfoDto(@Param("rows") int rows, @Param("offset") int offset);
}
<?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.AdamMemberOrderExtMapper">
</mapper>
package com.liquidnet.service.kylin.dao;
import lombok.Data;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: PerformanceOrderListDao
* @Package com.liquidnet.service.kylin.dao
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/6/4 13:31
*/
@Data
public class OrderIdsDao {
String orderTicketsId;
String userId;
}
package com.liquidnet.service.kylin.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.kylin.dao.OrderPushDamaiDto;
import com.liquidnet.service.kylin.dao.OrderScriptDto;
import com.liquidnet.service.kylin.dao.OrderTicketsListDao;
import com.liquidnet.service.kylin.dao.PerformanceExpressPerformanceOrderListAdminDao;
import com.liquidnet.service.kylin.dao.*;
import com.liquidnet.service.kylin.entity.KylinOrderTickets;
import org.apache.ibatis.annotations.Param;
......@@ -38,4 +35,6 @@ public interface KylinOrderTicketsMapper extends BaseMapper<KylinOrderTickets> {
List<KylinOrderTickets> getCanPlaceOrderList(@Param("performanceId") String performanceId, @Param("mid") int mid, @Param("limitNum") int limitNum);
List<OrderIdsDao> getOrderUserIdByTimesId(@Param("timeId") String timeId);
}
......@@ -112,7 +112,7 @@
kot.user_name,
kot.user_mobile,
kot.order_type,
date_format(kot.created_at, '%Y-%m-%d %H:%i:%s') created_at
date_format(kot.created_at, '%Y-%m-%d %H:%i:%s') created_at
FROM kylin_order_tickets kot
inner join kylin_order_ticket_status kots on kot.order_tickets_id = kots.order_id
inner join kylin_order_ticket_relations kotr on kot.order_tickets_id = kotr.order_id
......@@ -341,4 +341,9 @@
ORDER BY mid ASC
LIMIT ${limitNum}
</select>
<select id="getOrderUserIdByTimesId" resultType="com.liquidnet.service.kylin.dao.OrderIdsDao">
select order_tickets_id,user_id from kylin_order_tickets as kot left join kylin_order_ticket_relations as kotr on kotr.order_id = kot.order_tickets_id
where time_id =#{timeId}
</select>
</mapper>
......@@ -325,6 +325,20 @@ create table adam_member_code
create unique index uidx_amember_code_id on adam_member_code (code);
# MDB.idx:code,state
-- >>------------------------------------------------------------------------------------ |20210811用于会员改版前支持用户购买会员选礼包收货地址
drop table if exists adam_member_order_ext;
create table adam_member_order_ext
(
mid bigint unsigned auto_increment primary key,
order_no varchar(64) not null,
express_status tinyint comment '快递状态:0-待揽收|1-已揽收|2-在途中|3-已签收|4-已拒收',
express_receiver varchar(120) comment '收件人',
express_phone varchar(30) comment '收件人电话',
express_address text comment '收件人地址',
comment text
) engine = InnoDB comment '用户会员订单扩展信息表';
create unique index uidx_amember_order_ext_id on adam_member_order_ext (order_no);
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
-- >>------------------------------------------------------------------------------------
......@@ -3,8 +3,12 @@ package com.liquidnet.service.adam.config;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaRedisBetterConfigImpl;
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import javax.annotation.PostConstruct;
......@@ -67,11 +71,17 @@ public class WechatMaConfigure {
private WxMaService wxMaAppletFiveService;
private WxMaService wxMaAppletMdskService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@PostConstruct
public void init() {
wxMaAppletZhengzaiService = new WxMaServiceImpl() {
{
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "adam:accessToken:applet:zhengzai");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidZhengzai);
wxMaDefaultConfig.setSecret(appletSecretZhengzai);
wxMaDefaultConfig.setMsgDataFormat("JSON");
......@@ -81,7 +91,10 @@ public class WechatMaConfigure {
};
wxMaAppletStrawberryService = new WxMaServiceImpl() {
{
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:strawberry");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidStrawberry);
wxMaDefaultConfig.setSecret(appletSecretStrawberry);
wxMaDefaultConfig.setMsgDataFormat("JSON");
......@@ -91,7 +104,10 @@ public class WechatMaConfigure {
};
wxMaAppletFiveService = new WxMaServiceImpl() {
{
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:five");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidFive);
wxMaDefaultConfig.setSecret(appletSecretFive);
wxMaDefaultConfig.setMsgDataFormat("JSON");
......@@ -101,7 +117,10 @@ public class WechatMaConfigure {
};
wxMaAppletMdskService = new WxMaServiceImpl() {
{
WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:mdsk");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidMdsk);
wxMaDefaultConfig.setSecret(appletSecretMdsk);
wxMaDefaultConfig.setMsgDataFormat("JSON");
......
......@@ -131,7 +131,7 @@ public class AdamAddressesController {
return ResponseDto.success(vo);
}
/* ------------------------------------------------------------|API */
/* ------------------------------------------------------------|@API:RSC */
@ApiOperationSupport(order = 99)
@ApiOperation(value = "@API:收货地址", notes = "查取用户指定收货地址详情")
......
......@@ -191,8 +191,10 @@ public class AdamEntersController {
return ResponseDto.success(vo);
}
/* ------------------------------------------------------------|@API:RSC */
@ApiOperationSupport(order = 99)
@ApiOperation(value = "@API:入场人详情", notes = "查取用户指定入场人详情")
@ApiOperation(value = "@API:入场人详情", notes = "查取用户指定入场人详情,响应说明[`success`: true-成功返回信息,false-未查询到信息]")
@GetMapping("query/depth")
public ResponseDto<AdamEntersVo> queryForDepth(@NotBlank(message = "入场人ID不能为空") @RequestParam String entersId,
@NotBlank(message = "用户ID不能为空") @RequestParam String uid) {
......
......@@ -63,7 +63,7 @@ public class AdamMemberController {
return ResponseDto.success(adamRdmService.getMemberAgreement());
}
/* ------------------------------------------------------------|API */
/* ------------------------------------------------------------|@API:RSC */
@ApiOperationSupport(order = 99)
@ApiOperation(value = "@API:是否会员", notes = "根据UID判断用户是否会员,响应参数[`data`:true-是,false-否]")
......
......@@ -99,13 +99,10 @@ public class AdamMemberOrderController {
if (StringUtils.isBlank(param.getName()) || StringUtils.isBlank(param.getIdCard())) {
return ResponseDto.failure(ErrorMapping.get("10101"));
}
AdamRealInfoVo vo = adamUserService.identity(currentUid, param.getName(), param.getIdCard());
if (null == vo) {
return ResponseDto.failure(ErrorMapping.get("10000"));
}
adamUserService.identity(currentUid, param.getName(), param.getIdCard());
}
return adamMemberOrderService.buyMemberOrMemberCode(param);
return adamMemberOrderService.buyMemberOrMemberCode(currentUid, param);
}
/**
......@@ -190,6 +187,12 @@ public class AdamMemberOrderController {
return ResponseDto.success(0);
}
/**
* 购买会员黑名单校验
*
* @param uid 用户ID
* @return true-命中黑名单
*/
private boolean checkMobileOrUid(String uid) {
List<String> blacklist = adamRdmService.getBlacklistForMember();
return !CollectionUtils.isEmpty(blacklist) && blacklist.contains(uid);
......
package com.liquidnet.service.adam.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.github.xiaoymin.knife4j.annotations.ApiSupport;
import com.liquidnet.service.adam.dto.vo.AdamAddressesVo;
import com.liquidnet.service.adam.dto.vo.AdamEntersVo;
import com.liquidnet.service.adam.dto.vo.AdamRscPolymer01Vo;
import com.liquidnet.service.adam.dto.vo.AdamUserMemberVo;
import com.liquidnet.service.adam.service.AdamRdmService;
import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
import java.util.List;
@ApiSupport(order = 10080)
@Api(tags = "@API:RSC")
@Slf4j
@Validated
@RestController
@RequestMapping("rsc")
public class AdamRscController {
@Autowired
AdamRdmService adamRdmService;
@ApiOperationSupport(order = 10)
@ApiOperation(value = "@API:入场人列表", notes = "查取用户指定入场人列表")
@GetMapping("inquire/enters")
public ResponseDto<List<AdamEntersVo>> querysForDepth(@NotBlank(message = "入场人ID不能为空(多个ID以,分隔)") @RequestParam String entersIds,
@NotBlank(message = "用户ID不能为空") @RequestParam String uid) {
List<AdamEntersVo> vos = adamRdmService.getEntersVoByUidEntersIds(uid, entersIds.split(","));
return CollectionUtils.isEmpty(vos) ? ResponseDto.failure(ErrorMapping.get("10105")) : ResponseDto.success(vos);
}
@ApiOperationSupport(order = 20)
@ApiOperation(value = "@API:票务下单所需信息查询", notes = "包括是否会员、收货地址及入场人信息")
@GetMapping("inquire/of_buy_ticket")
public ResponseDto<AdamRscPolymer01Vo> queryForBuyTicket(@RequestParam(required = false) String addressId,
@RequestParam(required = false) String entersIds,
@NotBlank(message = "用户ID不能为空") @RequestParam String uid) {
AdamRscPolymer01Vo vo = AdamRscPolymer01Vo.getNew();
AdamUserMemberVo userMemberInfo = adamRdmService.getUserMemberVoByUid(uid);
vo.setMembership((null != userMemberInfo && userMemberInfo.isActive()) ? 1 : 0);
if (!StringUtils.isEmpty(addressId)) {
AdamAddressesVo addressesVo = adamRdmService.getAddressesVoByUidAddressesId(uid, addressId);
vo.setAddressesVo(addressesVo);
}
if (!StringUtils.isEmpty(entersIds)) {
List<AdamEntersVo> entersVos = adamRdmService.getEntersVoByUidEntersIds(uid, entersIds.split(","));
vo.setEntersVos(entersVos);
}
return ResponseDto.success(vo);
}
}
......@@ -309,8 +309,7 @@ public class AdamUserController {
Map<String, Object> map = CollectionUtil.mapStringObject();
AdamUserInfoVo userInfoVo = adamRdmService.getUserInfoVoByUid(currentUid);
userInfoVo.setMobile(SensitizeUtil.custom(userInfoVo.getMobile(), 3, 4));
map.put("userInfo", userInfoVo);
map.put("userInfo", userInfoVo.desensitize());
map.put("realNameInfo", adamRdmService.getRealInfoVoByUid(currentUid));
map.put("thirdPartInfo", adamRdmService.getThirdPartVoListByUid(currentUid));
map.put("userMemberVo", adamRdmService.getUserMemberVoByUid(currentUid));
......
......@@ -267,19 +267,18 @@ public class AdamRdmService {
}
public AdamEntersVo getEntersVoByUidEntersId(List<AdamEntersVo> vos, String entersId) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
public AdamEntersVo getEntersVoByUidEntersId(String uid, String entersId) {
return this.getEntersVoByUid(uid).stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
List<AdamEntersVo> vos = this.getEntersVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getEntersId().equals(entersId)).findAny().orElse(null);
}
public List<AdamEntersVo> getEntersVoByUidEntersIds(String uid, String... entersIds) {
List<String> entersIdList = Arrays.asList(entersIds);
return this.getEntersVoByUid(uid).stream().filter(r -> entersIdList.contains(r.getEntersId())).collect(Collectors.toList());
List<AdamEntersVo> vos = this.getEntersVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> entersIdList.contains(r.getEntersId())).collect(Collectors.toList());
}
public void delEntersVoByUid(String uid) {
......@@ -327,14 +326,12 @@ public class AdamRdmService {
}
public AdamAddressesVo getAddressesVoByUidAddressesId(List<AdamAddressesVo> vos, String addressesId) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public AdamAddressesVo getAddressesVoByUidAddressesId(String uid, String addressesId) {
return this.getAddressesVoByUid(uid).stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
List<AdamAddressesVo> vos = this.getAddressesVoByUid(uid);
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getAddressesId().equals(addressesId)).findAny().orElse(null);
}
public void delAddressesVoByUid(String uid) {
......@@ -453,15 +450,7 @@ public class AdamRdmService {
public AdamMemberPriceVo getMemberPriceVoByPriceId(String memberId, String memberPriceId) {
List<AdamMemberPriceVo> vos = this.getMemberPriceVoByMemberId(memberId);
if (!CollectionUtils.isEmpty(vos)) {
// for (AdamMemberPriceVo r : vos) {
// if (memberPriceId.equals(r.getMemberPriceId())) {
// return r;
// }
// }
return vos.stream().filter(r -> r.getMemberPriceId().equals(memberPriceId)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getMemberPriceId().equals(memberPriceId)).findAny().orElse(null);
}
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | <MEMBER_ID, List<AdamMemberRightsVo>> */
......@@ -530,10 +519,7 @@ public class AdamRdmService {
}
public AdamMemberOrderVo getMemberOrderVoByOrderNo(List<AdamMemberOrderVo> vos, String orderNo) {
if (!CollectionUtils.isEmpty(vos)) {
return vos.stream().filter(r -> r.getOrderNo().equals(orderNo)).findAny().orElse(null);
}
return null;
return CollectionUtils.isEmpty(vos) ? null : vos.stream().filter(r -> r.getOrderNo().equals(orderNo)).findAny().orElse(null);
}
public void delMemberOrderVoByUid(String uid) {
......
......@@ -48,7 +48,11 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(AdamMemberOrderParam param) {
public ResponseDto<AdamMemberOrderResult> buyMemberOrMemberCode(String currentUid, AdamMemberOrderParam param) {
AdamAddressesVo addressesVo = adamRdmService.getAddressesVoByUidAddressesId(currentUid, param.getAddressId());
if (null == addressesVo) {
return ResponseDto.failure(ErrorMapping.get("10106"));
}
AdamMemberVo memberVo = adamRdmService.getMemberVoByMemberId(param.getMemberId());
if (null == memberVo) {
return ResponseDto.failure(ErrorMapping.get("10201"));
......@@ -124,13 +128,24 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
memberOrderVo.setDeviceFrom(param.getDeviceFrom());
memberOrderVo.setPayType(param.getPayType());
memberOrderVo.setState(0);// 0-待支付
memberOrderVo.setUid(CurrentUtil.getCurrentUid());
memberOrderVo.setUid(currentUid);
memberOrderVo.setPrice(param.getPrice());
memberOrderVo.setClientIp(clientIp);
String headerCliVersion = CurrentUtil.getHeaderCliVersion(), headerCliSource = CurrentUtil.getHeaderCliSource();
memberOrderVo.setSource(null == headerCliSource ? "" : headerCliSource);
memberOrderVo.setVersion(null == headerCliVersion ? "" : headerCliVersion);
AdamMemberOrderExtVo memberOrderExtVo = AdamMemberOrderExtVo.getNew();
memberOrderExtVo.setOrderNo(orderNo);
memberOrderExtVo.setExpressStatus(-1);
memberOrderExtVo.setExpressReceiver(addressesVo.getName());
memberOrderExtVo.setExpressPhone(addressesVo.getPhone());
memberOrderExtVo.setExpressAddress(addressesVo.getProvince() + addressesVo.getCity() + addressesVo.getCounty() + addressesVo.getAddress());
memberOrderVo.setExtendVo(memberOrderExtVo);
if (!adamRdmService.setShotMemberOrderVoByOrderNo(orderNo, memberOrderVo)) {
log.warn("###购买会员创建订单失败[memberOrderVo:{}]", JsonUtils.toJson(memberOrderVo));
return ResponseDto.failure(ErrorMapping.get("10210"));
......@@ -201,7 +216,8 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
BeanUtils.copyProperties(shotMemberOrderVo, handleMemberOrderVo);
LinkedList<String> toMqSqls = CollectionUtil.linkedListString();
LinkedList<Object[]> operationObjs = CollectionUtil.linkedListObjectArr(),
updateMemberOrderObjs = CollectionUtil.linkedListObjectArr();
updateMemberOrderObjs = CollectionUtil.linkedListObjectArr(),
initMemberOrderExtObjs = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
if (0 == handleMemberOrderVo.getMode()) {// 购买会员回调
existUserMemberVo = adamRdmService.getUserMemberVoByUid(handleMemberOrderVo.getUid());
......@@ -213,7 +229,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
initUserMemberVo.setMemberId(handleMemberOrderVo.getMemberId());
initUserMemberVo.setMemberNo(memberNo);
initUserMemberVo.setState(1);// 1-正常,2-失效
initUserMemberVo.setExpiryAt(now.plusDays(memberPriceVo.getDays()).with(LocalTime.MAX));
initUserMemberVo.setExpiryAt(now.plusDays(memberPriceVo.getDays()).withHour(23).withMinute(59).withSecond(59));
initUserMemberVo.setCreatedAt(now);
long s = System.currentTimeMillis();
......@@ -231,7 +247,8 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
AdamUserMemberVo updateExistUserMemberVo = AdamUserMemberVo.getNew();
BeanUtils.copyProperties(existUserMemberVo, updateExistUserMemberVo);
LocalDateTime currentExpiryAt = existUserMemberVo.getExpiryAt();
LocalDateTime expiryAt = (currentExpiryAt.isBefore(now) ? now : currentExpiryAt).plusDays(memberPriceVo.getDays()).with(LocalTime.MAX);
LocalDateTime expiryAt = (currentExpiryAt.isBefore(now) ? now : currentExpiryAt)
.plusDays(memberPriceVo.getDays()).withHour(23).withMinute(59).withSecond(59);
updateExistUserMemberVo.setState(1);
updateExistUserMemberVo.setExpiryAt(expiryAt);
......@@ -291,14 +308,31 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
handleMemberOrderVo.getPricePaid(), handleMemberOrderVo.getMemberName(), handleMemberOrderVo.getMemberId(), handleMemberOrderVo.getMemberPriceId(),
handleMemberOrderVo.getDays(), handleMemberOrderVo.getState(), handleMemberOrderVo.getMemberNo(), handleMemberOrderVo.getBirthday(),
handleMemberOrderVo.getDeviceFrom(), handleMemberOrderVo.getPayType(), handleMemberOrderVo.getPayNo(), handleMemberOrderVo.getPaymentAt(),
handleMemberOrderVo.getCreatedAt(), handleMemberOrderVo.getClientIp(), handleMemberOrderVo.getSource(), handleMemberOrderVo.getVersion()
handleMemberOrderVo.getCreatedAt(), handleMemberOrderVo.getUpdatedAt(),
handleMemberOrderVo.getClientIp(), handleMemberOrderVo.getSource(), handleMemberOrderVo.getVersion()
});
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
AdamMemberOrderExtVo memberOrderExtVo = handleMemberOrderVo.getExtendVo();
if (null != memberOrderExtVo) {
toMqSqls.add(SqlMapping.get("adam_member_order_ext.add"));
initMemberOrderExtObjs.add(new Object[]{
memberOrderExtVo.getOrderNo(), memberOrderExtVo.getExpressStatus(), memberOrderExtVo.getExpressReceiver(),
memberOrderExtVo.getExpressPhone(), memberOrderExtVo.getExpressAddress()
});
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs, initMemberOrderExtObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
} else {
s = System.currentTimeMillis();
queueUtils.sendMsgByRedis(
MQConst.AdamQueue.SQL_UMEMBER.getKey(),
SqlMapping.gets(toMqSqls, operationObjs, updateMemberOrderObjs)
);
log.debug("#MQ耗时:{}ms", System.currentTimeMillis() - s);
}
return ResponseDto.success();
} catch (Exception e) {
......@@ -386,7 +420,8 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
updateExistUserMemberVo.setState(1);
LocalDateTime expiryAt = existUserMemberVo.getExpiryAt();
updateExistUserMemberVo.setExpiryAt(
(expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX)
(expiryAt.isBefore(now) ? now : expiryAt).plusDays(initMemberOrderVo.getDays())
.withHour(23).withMinute(59).withSecond(59)
);
toMqSqls.add(SqlMapping.get("adam_user_member.update"));
upsertUserMemberObjs.add(new Object[]{
......@@ -399,7 +434,7 @@ public class AdamMemberOrderServiceImpl implements IAdamMemberOrderService {
initUserMemberVo.setMemberId(memberCodeVo.getMemberId());
initUserMemberVo.setMemberNo(memberCodeVo.getMemberNo());
initUserMemberVo.setState(1);
initUserMemberVo.setExpiryAt(now.plusDays(initMemberOrderVo.getDays()).with(LocalTime.MAX));
initUserMemberVo.setExpiryAt(now.plusDays(initMemberOrderVo.getDays()).withHour(23).withMinute(59).withSecond(59));
initUserMemberVo.setCreatedAt(now);
toMqSqls.add(SqlMapping.get("adam_user_member.add"));
......
......@@ -44,10 +44,6 @@ public class AdamUserInfoServiceImpl implements IAdamUserInfoService {
@Override
// @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
public void edit(AdamUserInfoVo userInfoVo) {
userInfoVo.setCreateAt(null);
Document updateDoc = Document.parse(JsonUtils.toJson(userInfoVo));
updateDoc.replace("updatedAt", userInfoVo.getUpdatedAt());
long s = System.currentTimeMillis();
adamRdmService.setUserInfoVoByUid(userInfoVo.getUid(), userInfoVo);
log.debug("#RDS耗时:{}ms", System.currentTimeMillis() - s);
......
......@@ -3,12 +3,11 @@
40003=登录已过期
# ------------------------ 4开头错误码作系统保留
10000=请求频繁,稍后再试
10001=授权失败
10000=操作过于频繁,请稍后再试
10001=授权失败
10002=验证码发送失败
10003=发送过于频繁,请稍后再试
10004=验证码错误,请重新输入
10003=请输入正确手机号
10004=请输入正确验证码
10005=手机号获取失败,请更换登录方式
10006=第三方账号未注册
10007=该第三方账号已经被其他用户绑定
......@@ -17,7 +16,7 @@
10010=该手机号已被其它账号绑定
10011=性别标签无效
10012=音乐风格标签无效
10013=
10013=账号与密码不匹配
10014=
10015=入场人ID不能为空
10016=收货地址ID不能为空
......
......@@ -45,9 +45,12 @@ adam_member_code.add=INSERT INTO adam_member_code (code, `type`, member_id, memb
adam_member_code.exchange=UPDATE adam_member_code SET `state`=?, updated_at=?, use_order_no=?, use_uid=?, use_at=? WHERE code=?
# ----------------------------------------------------
adam_member_order.add=INSERT INTO adam_member_order (order_no, `uid`, `mode`, price, price_paid, member_name, member_id, member_price_id, `days`, `state`, member_no, birthday, device_from, pay_type, pay_no, payment_at, created_at, client_ip, `source`, version) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
adam_member_order.add=INSERT INTO adam_member_order (order_no, `uid`, `mode`, price, price_paid, member_name, member_id, member_price_id, `days`, `state`, member_no, birthday, device_from, pay_type, pay_no, payment_at, created_at, updated_at, client_ip, `source`, version) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
adam_member_order.update=UPDATE adam_member_order SET `state`=?, member_no=?, payment_at=?, updated_at=? WHERE order_no=?
# ----------------------------------------------------
adam_member_order_ext.add=INSERT INTO adam_member_order_ext (order_no, express_status, express_receiver, express_phone, express_address) values (?,?,?,?,?)
# ----------------------------------------------------
adam_user_member.add=INSERT INTO adam_user_member (`uid`, member_id, member_no, `state`, expiry_at, created_at) VALUES (?,?,?,?,?,?)
adam_user_member.update=UPDATE adam_user_member SET `state`=?, expiry_at=?, updated_at=? WHERE `uid`=?
......
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetAnswerRdsReceiver;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetSqlUserRelationRdsReceiver;
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.ANSWERINSERT_DRAW;
@Configuration
public class ConsumerSweetAnswerRedisStreamConfig {
@Autowired
ConsumerSweetAnswerRdsReceiver consumerSweetAnswerRdsReceiver;
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 receiveSqlAnswer(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(ANSWERINSERT_DRAW.getGroup(), ANSWERINSERT_DRAW.name() + t),
StreamOffset.create(ANSWERINSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetAnswerRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlAnswer(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAnswer2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlAnswer3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlAnswer(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetRemindRdsReceiver;
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_REMIND_INSERT_DRAW;
@Configuration
public class ConsumerSweetRemindRedisStreamConfig {
@Autowired
ConsumerSweetRemindRdsReceiver consumerSweetRemindRdsReceiver;
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 receiveSqlRemind(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_REMIND_INSERT_DRAW.getGroup(), SWEET_REMIND_INSERT_DRAW.name() + t),
StreamOffset.create(SWEET_REMIND_INSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetRemindRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlRemind(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlRemind2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlRemind3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlRemind(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.config;
import com.liquidnet.service.consumer.kylin.receiver.ConsumerSweetUserRdsReceiver;
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_USER_INSERT_DRAW;
@Configuration
public class ConsumerSweetUserRedisStreamConfig {
@Autowired
ConsumerSweetUserRdsReceiver consumerSweetUserRdsReceiver;
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 receiveSqlSweetUser(StreamMessageListenerContainer<String, MapRecord<String, String, String>> listenerContainer, int t) {
return listenerContainer.receiveAutoAck(
Consumer.from(SWEET_USER_INSERT_DRAW.getGroup(), SWEET_USER_INSERT_DRAW.name() + t),
StreamOffset.create(SWEET_USER_INSERT_DRAW.getKey(), ReadOffset.lastConsumed()), consumerSweetUserRdsReceiver
);
}
/* —————————————————————————— | —————————————————————————— | —————————————————————————— */
/* -------------------------------------------------------- | 缺票登记 */
@Bean
public Subscription subscriptionSqlSweetUser(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetUser2(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
@Bean
public Subscription subscriptionSqlSweetUser3(RedisConnectionFactory factory) {
var listenerContainer = this.buildStreamMessageListenerContainer(factory);
var subscription = receiveSqlSweetUser(listenerContainer, 1);
listenerContainer.start();
return subscription;
}
/* -------------------------------------------------------- | */
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetAnswerRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.ANSWERINSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.ANSWERINSERT_DRAW.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetRemindRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getGroup();
}
}
package com.liquidnet.service.consumer.kylin.receiver;
import com.liquidnet.service.base.constant.MQConst;
import org.springframework.stereotype.Component;
@Component
public class ConsumerSweetUserRdsReceiver extends AbstractSqlRedisReceiver {
@Override
protected String getRedisStreamKey() {
return MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey();
}
@Override
protected String getRedisStreamGroup() {
return MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getGroup();
}
}
......@@ -39,12 +39,12 @@ public class KylinOrderTicketsController {
@Autowired
IKylinOrderTicketsOrderService orderTicketsOrderService;
// @PostMapping("pre")
// @ApiOperation("下单")
// @ApiResponse(code = 200, message = "接口返回对象参数")
// public ResponseDto<PayInnerResultVo> checkCanOrder(@RequestBody @Valid PayOrderParam payOrderParam) {
// return orderTicketsOrderService.checkCanOrder(payOrderParam);
// }
@PostMapping("fc7bce6d6c2213b866f76493f92224b7")
@ApiOperation("fc7bce6d6c2213b866f76493f92224b7")
@ApiResponse(code = 200, message = "接口返回对象参数")
public ResponseDto<PayInnerResultVo> checkCanOrder(@RequestBody @Valid PayOrderParam payOrderParam) {
return orderTicketsOrderService.checkCanOrder(payOrderParam);
}
@DecryptAndVerify(decryptedClass = PayOrderParam.class)
@PostMapping("pre")
......
......@@ -487,51 +487,62 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
log.debug("redis 修改限购 -> time:" + (currentTime) + "毫秒");
}
}
// 调用支付
String time1 = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketData.getUseStart()), DateUtil.Formatter.MM_dd_zh);
String time2 = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketData.getUseEnd()), DateUtil.Formatter.MM_dd_zh);
String useTime = ticketData.getType() == 2 ? time1 + "~" + time2 : time2;
LinkedMultiValueMap<String, String> httpData = ObjectUtil.cloneLinkedMultiValueMapStringAndString();
httpData.add("type", "TICKET");
httpData.add("price", orderTickets.getPriceActual().toString());
httpData.add("name", useTime + ticketData.getTitle() + "-" + performanceData.getTitle());
httpData.add("detail", performanceData.getTitle() + "-" + ticketData.getTitle() + "-" + useTime);
httpData.add("orderCode", orderTickets.getOrderCode());
httpData.add("clientIp", CurrentUtil.getCliIpAddr());
httpData.add("notifyUrl", synUrl);
httpData.add("createDate", orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
httpData.add("expireTime", (orderTickets.getPayCountdownMinute()) + "");
httpData.add("payType", payOrderParam.getPayType());
httpData.add("deviceFrom", payOrderParam.getDeviceFrom());
if (payOrderParam.getDeviceFrom().equals("js") || payOrderParam.getDeviceFrom().equals("applet")) {
httpData.add("openId", payOrderParam.getOpenId());
}
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId);
httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId);
//是否免费
boolean isFree=false;
PayResultVo payResultVo;
if(orderTickets.getPriceActual().compareTo(BigDecimal.valueOf(0))>0){
// 调用支付
String time1 = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketData.getUseStart()), DateUtil.Formatter.MM_dd_zh);
String time2 = DateUtil.format(DateUtil.Formatter.yyyyMMddHHmmss.parse(ticketData.getUseEnd()), DateUtil.Formatter.MM_dd_zh);
String useTime = ticketData.getType() == 2 ? time1 + "~" + time2 : time2;
LinkedMultiValueMap<String, String> httpData = ObjectUtil.cloneLinkedMultiValueMapStringAndString();
httpData.add("type", "TICKET");
httpData.add("price", orderTickets.getPriceActual().toString());
httpData.add("name", useTime + ticketData.getTitle() + "-" + performanceData.getTitle());
httpData.add("detail", performanceData.getTitle() + "-" + ticketData.getTitle() + "-" + useTime);
httpData.add("orderCode", orderTickets.getOrderCode());
httpData.add("clientIp", CurrentUtil.getCliIpAddr());
httpData.add("notifyUrl", synUrl);
httpData.add("createDate", orderTickets.getCreatedAt().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
httpData.add("expireTime", (orderTickets.getPayCountdownMinute()) + "");
httpData.add("payType", payOrderParam.getPayType());
httpData.add("deviceFrom", payOrderParam.getDeviceFrom());
if (payOrderParam.getDeviceFrom().equals("js") || payOrderParam.getDeviceFrom().equals("applet")) {
httpData.add("openId", payOrderParam.getOpenId());
}
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
httpData.add("showUrl", payOrderParam.getShowUrl() + orderTicketId);
httpData.add("returnUrl", payOrderParam.getReturnUrl() + orderTicketId);
}
currentTime = System.currentTimeMillis();
String returnData = HttpUtil.post(payUrl, httpData);
currentTime = System.currentTimeMillis() - currentTime;
log.info("调用 DRAGON 支付 -> time:" + (currentTime) + "毫秒");
log.info("调用 DRAGON 结果 = " + returnData);
payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
payResultVo.getData().setOrderId(orderTicketId);
payResultVo.getData().setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getData().getCode());
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
payResultVo.getData().setShowUrl(payOrderParam.getShowUrl() + orderTicketId);
payResultVo.getData().setReturnUrl(payOrderParam.getReturnUrl() + orderTicketId);
}
}else{
isFree=true;
orderTickets.setPayType("FREE");
orderTickets.setPayCode("FREE_PAY_CODE");
payResultVo = PayResultVo.getNew();
PayInnerResultVo payInnerResultVo = PayInnerResultVo.getNew();
payInnerResultVo.setPrice(BigDecimal.valueOf(0));
payInnerResultVo.setOrderId(orderTickets.getOrderTicketsId());
payResultVo.setData(payInnerResultVo);
}
currentTime = System.currentTimeMillis();
String returnData = HttpUtil.post(payUrl, httpData);
currentTime = System.currentTimeMillis() - currentTime;
log.info("调用 DRAGON 支付 -> time:" + (currentTime) + "毫秒");
log.info("调用 DRAGON 结果 = " + returnData);
PayResultVo payResultVo = JsonUtils.fromJson(returnData, PayResultVo.class);
payResultVo.getData().setOrderId(orderTicketId);
payResultVo.getData().setPrice(orderTickets.getPriceActual());
orderTickets.setPayCode(payResultVo.getData().getCode());
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj();
sqlsDataA.add(orderTickets.getAddObject());
if (payOrderParam.getPayType().equals("alipay") && payOrderParam.getDeviceFrom().equals("wap")) {
payResultVo.getData().setShowUrl(payOrderParam.getShowUrl() + orderTicketId);
payResultVo.getData().setReturnUrl(payOrderParam.getReturnUrl() + orderTicketId);
}
// 生成vo
KylinOrderTicketVo orderTicketVo = KylinOrderTicketVo.getNew();
orderTicketVo.setOrderTicket(orderTickets);
......@@ -562,7 +573,20 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
currentTime = System.currentTimeMillis() - currentTime;
log.debug("MQ 发送 -> time:" + (currentTime) + "毫秒");
log.info(UserPathDto.setData("下单(唤起支付)", payOrderParam, payResultVo.getData()));
return ResponseDto.success(payResultVo.getData());
if(isFree){
SyncOrderParam syncOrderParam = SyncOrderParam.getNew();
syncOrderParam.setOrderCode(orderTickets.getOrderCode());
syncOrderParam.setPaymentAt(DateUtil.format(LocalDateTime.now(),DateUtil.Formatter.yyyyMMddHHmmss));
syncOrderParam.setCode(orderTickets.getPayCode());
syncOrderParam.setPrice(orderTickets.getPrice());
syncOrderParam.setPaymentId("FREE_PAYMENT_ID");
syncOrderParam.setPaymentType(orderTickets.getPaymentType());
syncOrderParam.setStatus(1);
syncOrder(syncOrderParam);
return ResponseDto.success(payResultVo.getData());
}else {
return ResponseDto.success(payResultVo.getData());
}
}
@Override
......
......@@ -6,7 +6,9 @@ import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.model.GenericResult;
import com.aliyun.oss.model.ProcessObjectRequest;
import com.aliyun.oss.model.PutObjectRequest;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.FilesUtils;
import com.liquidnet.commons.lang.util.IDGenerator;
......@@ -27,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.time.LocalDateTime;
import java.util.Formatter;
import java.util.List;
import java.util.UUID;
/**
......@@ -77,9 +80,12 @@ public class AlOssController {
// file md5
String fileMD5 = FilesUtils.getFileMD5(fileNew);
PlatformOssFiles platformOssFiles = platformOssFilesMapper.selectOne(Wrappers.lambdaQuery(PlatformOssFiles.class).eq(PlatformOssFiles::getMd5str, fileMD5));
List<PlatformOssFiles> platformOssFiles = platformOssFilesMapper.selectList(
Wrappers.lambdaQuery(PlatformOssFiles.class)
.eq(PlatformOssFiles::getMd5str, fileMD5)
);
UploadVo uploadVo = new UploadVo();
if (null == platformOssFiles) {
if (CollectionUtils.isEmpty(platformOssFiles)) {
String filename = file.getResource().getFilename();// time.jpeg
//这里文件名用了uuid 防止重复,可以根据自己的需要来写
String uploadName = UUID.randomUUID() + filename.substring(filename.lastIndexOf("."));// 078a77e0-cf80-481b-824c-5935247cff15.jpeg
......@@ -122,7 +128,8 @@ public class AlOssController {
BeanUtils.copyProperties(platformOssFilesDate, uploadVo);
} else {
BeanUtils.copyProperties(platformOssFiles, uploadVo);
PlatformOssFiles platformOssFilesOne = platformOssFiles.get(0);
BeanUtils.copyProperties(platformOssFilesOne, uploadVo);
}
return ResponseDto.success(uploadVo);
}
......
......@@ -14,7 +14,7 @@ import java.util.List;
public abstract class DataMigrationProcessorService {
public static final String MEMBER_NAME = "摩登天空会员";
public static final String MEMBER_ID = "1";
public static final String DG_MBL = "'13753596360','17701223310','18518013286','18548596019','15901093014','17382319723','13631444097','13671737873','15116988001','18611238122','18618244266','15810953641','18844355048','15600619088','15910772493','18511002336','13552662400','15011554195'";
public static final String DG_MBL = "'18634375237','18800114459','13724286255','13753596360','17701223310','18518013286','18548596019','15901093014','17382319723','13631444097','13671737873','15116988001','18611238122','18618244266','15810953641','18844355048','15600619088','15910772493','18511002336','13552662400','15011554195'";
public static final String DG_UID = "'2026628','544327','1997335','773650','809406','1167451','423063','677171','2199391','1837426','2109356','2322832','2337671','2334986','522474','2147432','2337752','2337199'";
public static List<String> reUidList = new ArrayList<>();
static {
......
......@@ -60,8 +60,8 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
if (null != dg) {
sqlCount = sqlCount + " and uid%" + dG + "=" + dg;
}
String field = "uid,mobile,username,sex,birthday,area,sign,face_url,back_url,created_at,updated_at,is_complete,rong_cloud_token,rong_cloud_tag";
// 1-uid,2-mobile,3-username,4-sex,5-birthday,6-area,7-sign,8-face_url,9-back_url,10-created_at,11-updated_at,12-is_complete,13-rong_cloud_token,14-rong_cloud_tag
String field = "uid,mobile,username,sex,birthday,area,sign,face_url,back_url,created_at,updated_at,is_complete,rong_cloud_token,rong_cloud_tag,password";
// 1-uid,2-mobile,3-username,4-sex,5-birthday,6-area,7-sign,8-face_url,9-back_url,10-created_at,11-updated_at,12-is_complete,13-rong_cloud_token,14-rong_cloud_tag,15-password
String sql = sqlCount.replace("count(1)", field);
boolean smFlg = "1".equals(flg);
if (smFlg) {
......@@ -103,6 +103,7 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
user.setUid(uid);
String mobile = row.getString(2);
user.setMobile(mobile);
user.setPasswd(row.getString(15));
LocalDateTime createdAt = row.getLocalDateTime(10), updatedAt = row.getLocalDateTime(11);
user.setIsComplete(row.getInt(12));
user.setCreatedAt(createdAt);
......@@ -125,6 +126,7 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
AdamUserInfoVo vo = AdamUserInfoVo.getNew();
vo.setUid(user.getUid());
vo.setMobile(user.getMobile());
vo.setPasswd(user.getPasswd());
vo.setNickname(userInfo.getNickname());
vo.setState(user.getState());
vo.setSex(sex);
......
......@@ -86,7 +86,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
public ResponseDto<String> create(String merchantId, String name, String pwd, String mobile) {
try {
int count = checkUserMapper.selectCount(Wrappers.lambdaQuery(KylinCheckUser.class).eq(KylinCheckUser::getMobile,mobile));
int count = checkUserMapper.selectCount(Wrappers.lambdaQuery(KylinCheckUser.class).eq(KylinCheckUser::getMobile,mobile).eq(KylinCheckUser::getStatus,1));
if(count>0){
return ResponseDto.failure("手机号已存在");
}
......@@ -114,7 +114,7 @@ public class KylinCheckUserPartnerServiceImpl extends ServiceImpl<KylinCheckUser
@Override
public ResponseDto<String> change(String merchantId, String checkUserId, String name, String pwd, String mobile) {
try {
KylinCheckUser kylinCheckUser = checkUserMapper.selectOne(Wrappers.lambdaQuery(KylinCheckUser.class).eq(KylinCheckUser::getMobile,mobile));
KylinCheckUser kylinCheckUser = checkUserMapper.selectOne(Wrappers.lambdaQuery(KylinCheckUser.class).eq(KylinCheckUser::getMobile,mobile).eq(KylinCheckUser::getStatus,1));
if(kylinCheckUser!=null && !kylinCheckUser.getCheckUserId().equals(checkUserId)){
return ResponseDto.failure("手机号已存在");
}
......
......@@ -10,6 +10,7 @@ import com.liquidnet.service.base.ErrorMapping;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.dto.param.CreateTicketTimesParam;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketPartnerVo;
import com.liquidnet.service.kylin.dto.vo.partner.KylinTicketTimesPartnerVo;
import com.liquidnet.service.kylin.entity.KylinPerformanceStatus;
import com.liquidnet.service.kylin.entity.KylinTicketTimeRelation;
......@@ -234,6 +235,16 @@ public class KylinTicketTimesPartnerServiceImpl extends ServiceImpl<KylinTicketT
object,
new FindOneAndUpdateOptions().returnDocument(ReturnDocument.AFTER)
);
HashMap<String,Object> ticketMap = new HashMap<>();
ticketMap.put("useEnd",kylinTicketTimesPartnerVo.getUseEnd());
ticketMap.put("useStart",kylinTicketTimesPartnerVo.getUseStart());
BasicDBObject ticketObject = ObjectUtil.cloneBasicDBObject().append("$set", ticketMap);
mongoTemplate.getCollection(KylinTicketPartnerVo.class.getSimpleName()).updateOne(
Query.query(Criteria.where("timesId").is(createTicketTimesParam.getTicketTimesId())).getQueryObject(),
ticketObject
);
log.info(UserPathDto.setPartnerData("0","changeTimes", createTicketTimesParam,JsonUtils.fromJson(doc.toJson(), KylinTicketTimesPartnerVo.class)));
return ResponseDto.success(JsonUtils.fromJson(doc.toJson(), KylinTicketTimesPartnerVo.class));
} catch (Exception e) {
......
......@@ -423,6 +423,17 @@ public class PerformanceVoTask {
for (int i = 0; i < misVo.getTicketTimes().size(); i++) {
TicketTimesTicketCreatePartnerVo times = misVo.getTicketTimes().get(i);
KylinTicketTimesVo timesVo = mongoVo.getTicketTimeList().get(i);
if(!times.getUseStart().equals(timesVo.getUseStart())){
log.debug("NEED CHANGE TIMES USE_START");
return true;
}
if(!times.getUseEnd().equals(timesVo.getUseEnd())){
log.debug("NEED CHANGE TIMES USE_END");
return true;
}
boolean exists2 = mongoTemplate.exists(Query.query(Criteria.where("status").is(-2).and("timesId").is(times.getTicketTimesId())), KylinTicketPartnerVo.class, KylinTicketPartnerVo.class.getSimpleName());
if (exists2) {
log.debug("NEED CHANGE NEW TICKET");
......
......@@ -183,34 +183,6 @@ CREATE TABLE `sweet_manual_shop`
COLLATE = utf8_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '电子宣传手册商铺表';
-- 正在现场服务号关注事件储存用户信息表
drop TABLE if exists `sweet_wechat_user`;
CREATE TABLE `sweet_wechat_user`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT 'user_id',
`openId` varchar(200) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(200) NOT NULL DEFAULT '' COMMENT 'unionId',
`nickname` varchar(200) NOT NULL DEFAULT '' COMMENT '昵称',
`sexDesc` varchar(200) NOT NULL DEFAULT '' COMMENT '性别',
`sex` tinyint NOT NULL DEFAULT 0 COMMENT '性别 男1',
`headImgUrl` varchar(200) NOT NULL DEFAULT '' COMMENT '头像',
`language` varchar(200) NOT NULL DEFAULT '' COMMENT 'zh_CN',
`country` varchar(200) NOT NULL DEFAULT '' COMMENT '国家',
`province` varchar(200) NOT NULL DEFAULT '' COMMENT '省',
`city` varchar(200) NOT NULL DEFAULT '' COMMENT '市',
`subscribeTime` datetime NULL DEFAULT null COMMENT '关注时间',
`subscribeScene` varchar(200) NOT NULL DEFAULT '' COMMENT 'ADD_SCENE_SEARCH 关注方式',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_wechat_user_user_id` (`user_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
-- 用户 收藏/喜欢等状态
drop TABLE if exists `sweet_user_relation`;
CREATE TABLE `sweet_user_relation`
......@@ -437,12 +409,40 @@ CREATE TABLE `sweet_luck_draw`
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '抽奖表';
-- 正在现场服务号关注事件储存用户信息表
drop TABLE if exists `sweet_wechat_user`;
CREATE TABLE `sweet_wechat_user`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(200) NOT NULL DEFAULT '' COMMENT 'user_id',
`openId` varchar(200) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(200) NOT NULL DEFAULT '' COMMENT 'unionId',
`nickname` varchar(200) NOT NULL DEFAULT '' COMMENT '昵称',
`sexDesc` varchar(200) NOT NULL DEFAULT '' COMMENT '性别',
`sex` tinyint NOT NULL DEFAULT 0 COMMENT '性别 男1',
`headImgUrl` varchar(200) NOT NULL DEFAULT '' COMMENT '头像',
`language` varchar(200) NOT NULL DEFAULT '' COMMENT 'zh_CN',
`country` varchar(200) NOT NULL DEFAULT '' COMMENT '国家',
`province` varchar(200) NOT NULL DEFAULT '' COMMENT '省',
`city` varchar(200) NOT NULL DEFAULT '' COMMENT '市',
`subscribeTime` datetime NULL DEFAULT null COMMENT '关注时间',
`subscribeScene` varchar(200) NOT NULL DEFAULT '' COMMENT 'ADD_SCENE_SEARCH 关注方式',
`is_cancel` tinyint NOT NULL DEFAULT 1 COMMENT '是否取关 1关注 2已取消',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_wechat_user_user_id` (`user_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '正在现场服务号关注事件储存用户信息表';
-- 答题表
drop TABLE if exists `sweet_answer`;
CREATE TABLE `sweet_answer`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`answer_id` varchar(200) NOT NULL DEFAULT '' COMMENT 'answer_id',
`answer_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'answer_id',
`phone` varchar(11) NOT NULL DEFAULT '' COMMENT '手机号',
`answer_json` varchar(255) NOT NULL DEFAULT '' COMMENT '答案json',
`img_url` varchar(255) NOT NULL DEFAULT '' COMMENT '图片',
......@@ -455,3 +455,23 @@ CREATE TABLE `sweet_answer`
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '答题表';
-- 提醒记录
drop TABLE if exists `sweet_remind`;
CREATE TABLE `sweet_remind`
(
`mid` bigint unsigned NOT NULL AUTO_INCREMENT,
`remind_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'remind_id',
`openId` varchar(255) NOT NULL DEFAULT '' COMMENT 'openId',
`unionId` varchar(255) NOT NULL DEFAULT '' COMMENT 'unionId',
`performancesId` varchar(255) NOT NULL DEFAULT '' COMMENT '演出id',
`is_push` tinyint NOT NULL DEFAULT 1 COMMENT '是否推送 1未推送 2已推送',
`push_time` varchar(255) NOT NULL DEFAULT '' COMMENT '推送时间',
`created_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`mid`),
KEY `sweet_remind_id` (`remind_id`)
) ENGINE = InnoDB
DEFAULT CHARSET utf8mb4
COLLATE utf8mb4_unicode_ci
ROW_FORMAT = DYNAMIC COMMENT '提醒记录表';
......@@ -7,4 +7,16 @@ XGROUP CREATE sweet:stream:rk.artists.mdsk.relation group.artists.mdsk.relation
-- 抽奖 --
XADD sweet:stream:rk.luckDraw * 0 0
XGROUP CREATE sweet:stream:rk.luckDraw group.luckDraw 0
\ No newline at end of file
XGROUP CREATE sweet:stream:rk.luckDraw group.luckDraw 0
-- 答案 --
XADD sweet:stream:rk.answerInsert * 0 0
XGROUP CREATE sweet:stream:rk.answerInsert group.answerInsert 0
-- 关注服务号的用户信息 --
XADD sweet:stream:rk.sweetUserInsert * 0 0
XGROUP CREATE sweet:stream:rk.sweetUserInsert group.sweetUserInsert 0
-- 提醒记录 --
XADD sweet:stream:rk.remindInsert * 0 0
XGROUP CREATE sweet:stream:rk.remindInsert group.remindInsert 0
\ No newline at end of file
package com.liquidnet.service.sweet.config;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import cn.binarywang.wx.miniapp.config.impl.WxMaRedisBetterConfigImpl;
import me.chanjar.weixin.common.redis.RedisTemplateWxRedisOps;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.StringRedisTemplate;
import javax.annotation.PostConstruct;
@Configuration
public class WechatMaConfigure {
private static String appletAppidZhengzai;
private static String appletSecretZhengzai;
private static String appletAppidStrawberry;
private static String appletSecretStrawberry;
private static String appletAppidFive;
private static String appletSecretFive;
private static String appletAppidMdsk;
private static String appletSecretMdsk;
@Value("${liquidnet.wechat.applet.zhengzai.appid}")
public void setAppletAppidZhengzai(String appletAppidZhengzai) {
WechatMaConfigure.appletAppidZhengzai = appletAppidZhengzai;
}
@Value("${liquidnet.wechat.applet.zhengzai.secret}")
public void setAppletSecretZhengzai(String appletSecretZhengzai) {
WechatMaConfigure.appletSecretZhengzai = appletSecretZhengzai;
}
@Value("${liquidnet.wechat.applet.strawberry.appid}")
public void setAppletAppidStrawberry(String appletAppidStrawberry) {
WechatMaConfigure.appletAppidStrawberry = appletAppidStrawberry;
}
@Value("${liquidnet.wechat.applet.strawberry.secret}")
public void setAppletSecretStrawberry(String appletSecretStrawberry) {
WechatMaConfigure.appletSecretStrawberry = appletSecretStrawberry;
}
@Value("${liquidnet.wechat.applet.five.appid}")
public void setAppletAppidFive(String appletAppidFive) {
WechatMaConfigure.appletAppidFive = appletAppidFive;
}
@Value("${liquidnet.wechat.applet.five.secret}")
public void setAppletSecretFive(String appletSecretFive) {
WechatMaConfigure.appletSecretFive = appletSecretFive;
}
@Value("${liquidnet.wechat.applet.mdsk.appid}")
public void setAppletAppidMdsk(String appletAppidMdsk) {
WechatMaConfigure.appletAppidMdsk = appletAppidMdsk;
}
@Value("${liquidnet.wechat.applet.mdsk.secret}")
public void setAppletSecretMdsk(String appletSecretMdsk) {
WechatMaConfigure.appletSecretMdsk = appletSecretMdsk;
}
private WxMaService wxMaAppletZhengzaiService;
private WxMaService wxMaAppletStrawberryService;
private WxMaService wxMaAppletFiveService;
private WxMaService wxMaAppletMdskService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@PostConstruct
public void init() {
wxMaAppletZhengzaiService = new WxMaServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:zhengzai");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidZhengzai);
wxMaDefaultConfig.setSecret(appletSecretZhengzai);
wxMaDefaultConfig.setMsgDataFormat("JSON");
this.setWxMaConfig(wxMaDefaultConfig);
}
};
wxMaAppletStrawberryService = new WxMaServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:strawberry");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidStrawberry);
wxMaDefaultConfig.setSecret(appletSecretStrawberry);
wxMaDefaultConfig.setMsgDataFormat("JSON");
this.setWxMaConfig(wxMaDefaultConfig);
}
};
wxMaAppletFiveService = new WxMaServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:five");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidFive);
wxMaDefaultConfig.setSecret(appletSecretFive);
wxMaDefaultConfig.setMsgDataFormat("JSON");
this.setWxMaConfig(wxMaDefaultConfig);
}
};
wxMaAppletMdskService = new WxMaServiceImpl() {
{
RedisTemplateWxRedisOps redisTemplateWxRedisOps = new RedisTemplateWxRedisOps(stringRedisTemplate);
WxMaRedisBetterConfigImpl wxMaDefaultConfig = new WxMaRedisBetterConfigImpl(redisTemplateWxRedisOps, "sweet:accessToken:applet:mdsk");
// WxMaDefaultConfigImpl wxMaDefaultConfig = new WxMaDefaultConfigImpl();
wxMaDefaultConfig.setAppid(appletAppidMdsk);
wxMaDefaultConfig.setSecret(appletSecretMdsk);
wxMaDefaultConfig.setMsgDataFormat("JSON");
this.setWxMaConfig(wxMaDefaultConfig);
}
};
}
public WxMaService getWxMaService(Integer anum) {
switch (anum) {
case 4:
return wxMaAppletZhengzaiService;
case 1:
return wxMaAppletStrawberryService;
case 2:
return wxMaAppletFiveService;
case 3:
return wxMaAppletMdskService;
}
return null;
}
}
......@@ -15,10 +15,9 @@ public class SweetConstant {
public final static String REDIS_KEY_SWEET_SHOP = "sweet:artists:shop:manual:";
public final static String REDIS_KEY_SWEET_LUCK_DRAW = "sweet:artists:luckDraw:uid:";
public final static String REDIS_KEY_SWEET_REMIND="sweet:remind:unionId:";
public static final String REDIS_KEY_SWEET_REMIND_ALL = "sweet:remind:unionId*";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO="sweet:wechatUser:unionId:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_INFO_STR="sweet:wechatUser:unionIdStr:";
public final static String REDIS_KEY_SWEET_WECHAT_USER_UNIONID="sweet:wechatUser:openId:";
public final static String REDIS_KEY_SWEET_ANSWER_PHONE="sweet:answer:phone:";
// public enum ManualPosition {
......
......@@ -8,6 +8,7 @@ import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.entity.SweetManualNotify;
import com.liquidnet.service.sweet.entity.SweetManualShop;
import com.liquidnet.service.sweet.entity.SweetRichtext;
import com.liquidnet.service.sweet.utils.ObjectUtil;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
import com.liquidnet.service.sweet.vo.SweetManualShopAllVo;
......@@ -35,7 +36,7 @@ public class SweetAppletController {
})
public ResponseDto<List<SweetManualAppletDto>> timeSelect(@RequestParam String name) {
List<SweetManualAppletDto> dto = redisDataUtils.getPushList();
List<SweetManualAppletDto> vo = new ArrayList<>();
List<SweetManualAppletDto> vo = ObjectUtil.getSweetManualAppletDtoList();
for (SweetManualAppletDto item : dto) {
if (item.getTitle().contains(name)) {
vo.add(item);
......@@ -90,8 +91,8 @@ public class SweetAppletController {
@RequestParam(required = false) Integer size,
@RequestParam String uid) {
List<SweetManualArtistListDto> allReturnArtist = new ArrayList();
List<SweetManualArtistListDto> returnArtist = new ArrayList();
List<SweetManualArtistListDto> allReturnArtist = ObjectUtil.getSweetManualArtistListDtoList();
List<SweetManualArtistListDto> returnArtist = ObjectUtil.getSweetManualArtistListDtoList();
SweetManualArtistList2Dto data = redisDataUtils.getTimeList(manualId);
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -296,9 +297,9 @@ public class SweetAppletController {
public ResponseDto<SweetManualShopAllVo> manualShop(@RequestParam String manualId) {
List<SweetManualShop> shopList = redisDataUtils.getManualShopRedisData(manualId);
List<SweetManualShop> recommend = new ArrayList<>();
List<SweetManualShop> eat = new ArrayList<>();
List<SweetManualShop> play = new ArrayList<>();
List<SweetManualShop> recommend = ObjectUtil.getSweetManualShopList();
List<SweetManualShop> eat = ObjectUtil.getSweetManualShopList();
List<SweetManualShop> play = ObjectUtil.getSweetManualShopList();
SweetManualShopAllVo vo = SweetManualShopAllVo.getNew();
for (SweetManualShop item : shopList) {
......
......@@ -4,6 +4,7 @@ import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.sweet.dto.*;
import com.liquidnet.service.sweet.entity.*;
import com.liquidnet.service.sweet.utils.ObjectUtil;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.utils.RedisMDSKDataUtils;
import com.liquidnet.service.sweet.vo.SweetArtistsRelationVo;
......@@ -36,7 +37,7 @@ public class SweetAppletMdskController {
})
public ResponseDto<List<SweetManualAppletMDSKDto>> timeSelect(@RequestParam String name) {
List<SweetManualAppletMDSKDto> dto = redisDataUtils.getPushList();
List<SweetManualAppletMDSKDto> vo = new ArrayList<>();
List<SweetManualAppletMDSKDto> vo = ObjectUtil.getSweetManualAppletMDSKDtoList();
for (SweetManualAppletMDSKDto item : dto) {
if (item.getTitle().contains(name)) {
vo.add(item);
......@@ -91,8 +92,8 @@ public class SweetAppletMdskController {
@RequestParam(required = false) Integer size,
@RequestParam String uid) {
List<SweetManualArtistListMDSKDto> allReturnArtist = new ArrayList();
List<SweetManualArtistListMDSKDto> returnArtist = new ArrayList();
List<SweetManualArtistListMDSKDto> allReturnArtist = ObjectUtil.getSweetManualArtistListMDSKDtoList();
List<SweetManualArtistListMDSKDto> returnArtist = ObjectUtil.getSweetManualArtistListMDSKDtoList();
SweetManualArtistList2MDSKDto data = redisDataUtils.getTimeList(manualId);
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -240,9 +241,9 @@ public class SweetAppletMdskController {
if (vo.getWatchList() != null) {
watchSize = vo.getWatchList().size();
}
HashMap<String,Object> map = CollectionUtil.mapStringObject();
map.put("signSize",signSize);
map.put("watchSize",watchSize);
HashMap<String, Object> map = CollectionUtil.mapStringObject();
map.put("signSize", signSize);
map.put("watchSize", watchSize);
return ResponseDto.success(map);
}
......@@ -254,8 +255,8 @@ public class SweetAppletMdskController {
@ApiImplicitParam(type = "query", dataType = "String", name = "uid", value = "用户id", required = true)
})
public ResponseDto<SweetManualArtistListMDSKDto> artistsDetails(@RequestParam String artistsId,
@RequestParam String manualId,
@RequestParam String uid) {
@RequestParam String manualId,
@RequestParam String uid) {
SweetManualArtistList2MDSKDto data = redisDataUtils.getTimeList(manualId);
List<SweetManualArtistListMDSKDto> dataList = data.getData();
SweetArtistsRelationVo relationData = redisDataUtils.getArtistsRelationRedisVo(uid, manualId);
......@@ -297,9 +298,9 @@ public class SweetAppletMdskController {
public ResponseDto<SweetManualShopMdskAllVo> manualShop(@RequestParam String manualId) {
List<SweetManualShopMdsk> shopList = redisDataUtils.getManualShopRedisData(manualId);
List<SweetManualShopMdsk> recommend = new ArrayList<>();
List<SweetManualShopMdsk> eat = new ArrayList<>();
List<SweetManualShopMdsk> play = new ArrayList<>();
List<SweetManualShopMdsk> recommend = ObjectUtil.getSweetManualShopMdskList();
List<SweetManualShopMdsk> eat = ObjectUtil.getSweetManualShopMdskList();
List<SweetManualShopMdsk> play = ObjectUtil.getSweetManualShopMdskList();
SweetManualShopMdskAllVo vo = SweetManualShopMdskAllVo.getNew();
for (SweetManualShopMdsk item : shopList) {
......
......@@ -20,7 +20,7 @@ public class SweetWechatTemplateController {
@GetMapping("send")
@ApiOperation("发送模版消息")
public ResponseDto send() {
return sweetTemplateService.sendMsg();
return sweetTemplateService.sendRemindMsg();
}
@PostMapping("remind")
......@@ -46,11 +46,16 @@ public class SweetWechatTemplateController {
public ResponseDto followStatus(
@RequestParam() String unionId
) {
boolean status = sweetTemplateService.followStatus(unionId);
boolean status = sweetTemplateService.followStatusStr(unionId);
if (status) {
return ResponseDto.success(1);
} else {
return ResponseDto.success(2);
status = sweetTemplateService.followStatus(unionId);
if (status) {
return ResponseDto.success(1);
} else {
return ResponseDto.success(2);
}
}
}
......
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-08-13
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class SweetRemind implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "mid", type = IdType.AUTO)
private Long mid;
/**
* remind_id
*/
private String remindId;
/**
* openId
*/
@TableField("openId")
private String openId;
/**
* unionId
*/
@TableField("unionId")
private String unionId;
/**
* 演出id
*/
@TableField("performancesId")
private String performancesId;
/**
* 是否推送 1未推送 2已推送
*/
private Integer isPush;
/**
* 推送时间
*/
private String pushTime;
/**
* 创建时间
*/
private LocalDateTime createdAt;
/**
* 更新时间
*/
private LocalDateTime updatedAt;
private static final SweetRemind obj = new SweetRemind();
public static SweetRemind getNew() {
try {
return (SweetRemind) obj.clone();
} catch (CloneNotSupportedException e) {
return new SweetRemind();
}
}
}
......@@ -96,6 +96,11 @@ public class SweetWechatUser implements Serializable {
@TableField("subscribeScene")
private String subscribeScene;
/**
* 是否取消关注
*/
private Integer isCancel;
/**
* 创建时间
*/
......
package com.liquidnet.service.sweet.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
......@@ -19,6 +23,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -36,6 +41,8 @@ public class SubscribeHandler implements WxMpMessageHandler {
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
private QueueUtils queueUtils;
@Autowired
private SweetWechatTemplateServiceImpl sweetWechatTemplateService;
......@@ -52,7 +59,7 @@ public class SubscribeHandler implements WxMpMessageHandler {
}
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
// 记录用户信息
SweetWechatUser userInfo = sweetWechatUserMapper.selectOne(Wrappers.lambdaQuery(SweetWechatUser.class).eq(SweetWechatUser::getOpenId, wxMpUser.getOpenId()));
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(wxMpUser.getUnionId());
SweetWechatUser sweetWechatUser = SweetWechatUser.getNew();
sweetWechatUser.setOpenId(wxMpUser.getOpenId());
sweetWechatUser.setUnionId(wxMpUser.getUnionId());
......@@ -68,20 +75,22 @@ public class SubscribeHandler implements WxMpMessageHandler {
sweetWechatUser.setSubscribeScene(wxMpUser.getSubscribeScene());
if (null == userInfo) {
sweetWechatUser.setUserId(IDGenerator.nextSnowId());
sweetWechatUserMapper.insert(sweetWechatUser);
sweetWechatTemplateService.subscribeSend(sweetWechatUser);
} else {
sweetWechatUser.setUpdatedAt(LocalDateTime.now());
sweetWechatUserMapper.update(sweetWechatUser, Wrappers.lambdaUpdate(SweetWechatUser.class).eq(SweetWechatUser::getUserId, userInfo.getUserId()));
}
String unionId = wxMpUser.getUnionId();
if (!unionId.isEmpty()) {
if (null != userInfo) {
sweetWechatUser.setMid(userInfo.getMid());
sweetWechatUser.setUserId(userInfo.getUserId());
sweetWechatUser.setCreatedAt(userInfo.getCreatedAt());
}
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_user.insert"));
sqlsDataA.add(new Object[]{
sweetWechatUser.getUserId(), sweetWechatUser.getOpenId(), sweetWechatUser.getUnionId(), sweetWechatUser.getNickname(),
sweetWechatUser.getSexDesc(), sweetWechatUser.getSex(), sweetWechatUser.getHeadImgUrl(), sweetWechatUser.getLanguage(),
sweetWechatUser.getCountry(), sweetWechatUser.getProvince(), sweetWechatUser.getCity(),
sweetWechatUser.getSubscribeTime(), sweetWechatUser.getSubscribeScene()
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
// 入缓存
redisDataUtils.setSweetWechatUser(sweetWechatUser);
//发送模版消息
sweetWechatTemplateService.subscribeSend(sweetWechatUser);
}
return null;
......
package com.liquidnet.service.sweet.handler;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetWechatUser;
import com.liquidnet.service.sweet.mapper.SweetWechatUserMapper;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
......@@ -15,6 +18,8 @@ import me.chanjar.weixin.mp.bean.result.WxMpUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.LinkedList;
import java.util.Map;
/**
......@@ -33,6 +38,8 @@ public class UnsubscribeHandler implements WxMpMessageHandler {
private SweetWechatUserMapper sweetWechatUserMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
private QueueUtils queueUtils;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map<String, Object> context, WxMpService wxMpService,
......@@ -47,13 +54,21 @@ public class UnsubscribeHandler implements WxMpMessageHandler {
}
log.info("根据 openId:[{}]获取到的微信用户信息:[{}]", wxMessage.getFromUser(), wxMpUser.toString());
// 删除用户信息
SweetWechatUser userInfo = sweetWechatUserMapper.selectOne(Wrappers.lambdaQuery(SweetWechatUser.class).eq(SweetWechatUser::getOpenId, wxMpUser.getOpenId()));
if (null != userInfo) {
int resNum = sweetWechatUserMapper.delete(Wrappers.lambdaQuery(SweetWechatUser.class).eq(SweetWechatUser::getUserId, userInfo.getUserId()));
}
String unionId = wxMpUser.getUnionId();
if (!unionId.isEmpty()) {
redisDataUtils.delSweetRemind(unionId);
String sweetWechatUserUnionid = redisDataUtils.getSweetWechatUserUnionid(wxMpUser.getOpenId());
if (null != sweetWechatUserUnionid && !sweetWechatUserUnionid.isEmpty()) {
SweetWechatUser userInfo = redisDataUtils.getSweetWechatUser(sweetWechatUserUnionid);
if (null != userInfo) {
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_user.update"));
sqlsDataA.add(new Object[]{
2, now, sweetWechatUserUnionid
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_USER_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
redisDataUtils.delSweetWechatUser(sweetWechatUserUnionid, wxMpUser.getOpenId());
}
}
return null;
}
......
package com.liquidnet.service.sweet.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.sweet.entity.SweetRemind;
/**
* <p>
* 提醒记录表 Mapper 接口
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
public interface SweetRemindMapper extends BaseMapper<SweetRemind> {
}
package com.liquidnet.service.sweet.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.liquidnet.service.sweet.entity.SweetRemind;
/**
* <p>
* 提醒记录表 服务类
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
public interface ISweetRemindService extends IService<SweetRemind> {
}
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.sweet.entity.SweetAnswer;
import com.liquidnet.service.sweet.mapper.SweetAnswerMapper;
import com.liquidnet.service.sweet.service.ISweetAnswerService;
import com.liquidnet.service.sweet.utils.QueueUtils;
import com.liquidnet.service.sweet.utils.RedisDataUtils;
import com.liquidnet.service.sweet.vo.SweetAnswerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.LinkedList;
/**
* <p>
* 答题表 服务实现类
......@@ -26,6 +33,8 @@ public class SweetAnswerServiceImpl extends ServiceImpl<SweetAnswerMapper, Sweet
private SweetAnswerMapper sweetAnswerMapper;
@Autowired
private RedisDataUtils redisDataUtils;
@Autowired
QueueUtils queueUtils;
@Override
public ResponseDto<SweetAnswerVo> getInfo(String phone) {
......@@ -40,7 +49,18 @@ public class SweetAnswerServiceImpl extends ServiceImpl<SweetAnswerMapper, Sweet
sweetAnswer.setPhone(phone);
sweetAnswer.setAnswerJson(answerJson);
sweetAnswer.setImgUrl(imgUrl);
sweetAnswerMapper.insert(sweetAnswer);
// sweetAnswerMapper.insert(sweetAnswer);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_answer.insert"));
sqlsDataA.add(new Object[]{
sweetAnswer.getAnswerId(), phone, answerJson, imgUrl
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.ANSWERINSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
SweetAnswerVo sweetAnswerVo = SweetAnswerVo.getNew().copy(sweetAnswer);
redisDataUtils.setSweetAnswer(sweetAnswerVo);
......
package com.liquidnet.service.sweet.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.liquidnet.service.sweet.entity.SweetRemind;
import com.liquidnet.service.sweet.mapper.SweetRemindMapper;
import com.liquidnet.service.sweet.service.ISweetRemindService;
import org.springframework.stereotype.Service;
/**
* <p>
* 提醒记录表 服务实现类
* </p>
*
* @author jiangxiulong
* @since 2021-08-13
*/
@Service
public class SweetRemindServiceImpl extends ServiceImpl<SweetRemindMapper, SweetRemind> implements ISweetRemindService {
}
......@@ -7,10 +7,12 @@ import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import cn.binarywang.wx.miniapp.config.WxMaConfig;
import cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
......@@ -49,7 +51,46 @@ public class SweetWechatLoginServiceImpl {
@Value("${liquidnet.wechat.applet.zhengzai.secret}")
private String zhengzaiSecret;
@Autowired
private SweetWechatService sweetWechatService;
public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) {
log.info("\n参数code:[{}] ", code);
log.info("\n参数encryptedData:[{}] ", encryptedData);
log.info("\n参数iv:[{}] ", iv);
log.info("\n参数type:[{}] ", type);
try {
WxMaJscode2SessionResult sessionInfo = sweetWechatService.sessionInfo(code, type);
log.info("\nWxMaJscode2SessionResult:[{}] ", JsonUtils.toJson(sessionInfo));
if (null == sessionInfo) {
return ResponseDto.failure("login handler error");
}
// 解密手机号码信息
WxMaPhoneNumberInfo wxMaPhoneNumberInfo = sweetWechatService.phoneNumberInfo(sessionInfo.getSessionKey(), encryptedData, iv, type);
log.info("\nWxMaPhoneNumberInfo:[{}] ", wxMaPhoneNumberInfo.toString());
if (Objects.isNull(wxMaPhoneNumberInfo) || StringUtils.isBlank(wxMaPhoneNumberInfo.getPhoneNumber())) {
return ResponseDto.failure("解密手机号码信息错误");
}
String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid();
HashMap<String,Object> userInfo = CollectionUtil.mapStringObject();
userInfo.put("unionId", unionId);
userInfo.put("openId", openId);
userInfo.put("getPhoneNumber", wxMaPhoneNumberInfo.getPhoneNumber());
userInfo.put("getPurePhoneNumber", wxMaPhoneNumberInfo.getPurePhoneNumber());
userInfo.put("getCountryCode", wxMaPhoneNumberInfo.getCountryCode());
return ResponseDto.success(userInfo);
} catch (Exception e) {
log.error("WechatUserInfoError", e);
return ResponseDto.failure();
}
}
/*public ResponseDto userInfo(String code, String encryptedData, String iv, Integer type) {
log.info("\n参数code:[{}] ", code);
log.info("\n参数encryptedData:[{}] ", encryptedData);
log.info("\n参数iv:[{}] ", iv);
......@@ -94,7 +135,7 @@ public class SweetWechatLoginServiceImpl {
String unionId = sessionInfo.getUnionid();
String openId = sessionInfo.getOpenid();
HashMap userInfo = new HashMap();
HashMap<String,Object> userInfo = CollectionUtil.mapStringObject();
userInfo.put("unionId", unionId);
userInfo.put("openId", openId);
userInfo.put("getPhoneNumber", wxMaPhoneNumberInfo.getPhoneNumber());
......@@ -106,7 +147,7 @@ public class SweetWechatLoginServiceImpl {
e.printStackTrace();
return ResponseDto.failure();
}
}
}*/
private WxMaConfig wxMaConfig(String appId, String appSecret) {
WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();
......
package com.liquidnet.service.sweet.service.impl;
import cn.binarywang.wx.miniapp.api.WxMaService;
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;
import cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;
import cn.binarywang.wx.miniapp.bean.WxMaUserInfo;
import com.liquidnet.service.sweet.config.WechatMaConfigure;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class SweetWechatService {
@Autowired
WechatMaConfigure wechatMaConfigure;
public WxMaJscode2SessionResult sessionInfo(String code, Integer anum) throws WxErrorException {
WxMaService wxMaService = wechatMaConfigure.getWxMaService(anum);
log.info("isAccessTokenExpired:[{}] ", wxMaService.getWxMaConfig().isAccessTokenExpired());
log.info("getAccessToken:[{}] ", wxMaService.getWxMaConfig().getAccessToken());
return wxMaService.getUserService().getSessionInfo(code);
}
public WxMaUserInfo userInfo(String sessionKey, String encryptedData, String iv, Integer anum) {
WxMaService wxMaService = wechatMaConfigure.getWxMaService(anum);
return wxMaService.getUserService().getUserInfo(sessionKey, encryptedData, iv);
}
public WxMaPhoneNumberInfo phoneNumberInfo(String sessionKey, String encryptedData, String iv, Integer anum) {
WxMaService wxMaService = wechatMaConfigure.getWxMaService(anum);
return wxMaService.getUserService().getPhoneNoInfo(sessionKey, encryptedData, iv);
}
}
package com.liquidnet.service.sweet.utils;
import com.liquidnet.service.base.PagedResult;
import com.liquidnet.service.sweet.dto.SweetManualAppletDto;
import com.liquidnet.service.sweet.dto.SweetManualAppletMDSKDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListDto;
import com.liquidnet.service.sweet.dto.SweetManualArtistListMDSKDto;
import com.liquidnet.service.sweet.entity.SweetManualShop;
import com.liquidnet.service.sweet.entity.SweetManualShopMdsk;
import java.util.ArrayList;
public class ObjectUtil {
private static final ArrayList<SweetManualAppletDto> sweetManualAppletDtoList = new ArrayList<>();
private static final ArrayList<SweetManualArtistListDto> sweetManualArtistListDtoList = new ArrayList<>();
private static final ArrayList<SweetManualShop> sweetManualShopList = new ArrayList<>();
private static final ArrayList<SweetManualAppletMDSKDto> sweetManualAppletMDSKDtoList = new ArrayList<>();
private static final ArrayList<SweetManualArtistListMDSKDto> sweetManualArtistListMDSKDtoList = new ArrayList<>();
private static final ArrayList<SweetManualShopMdsk> sweetManualShopMDSKList = new ArrayList<>();
public static ArrayList<SweetManualAppletDto> getSweetManualAppletDtoList() {
return (ArrayList<SweetManualAppletDto>)sweetManualAppletDtoList.clone();
}
public static ArrayList<SweetManualArtistListDto> getSweetManualArtistListDtoList() {
return (ArrayList<SweetManualArtistListDto>)sweetManualArtistListDtoList.clone();
}
public static ArrayList<SweetManualShop> getSweetManualShopList() {
return (ArrayList<SweetManualShop>)sweetManualShopList.clone();
}
public static ArrayList<SweetManualAppletMDSKDto> getSweetManualAppletMDSKDtoList() {
return (ArrayList<SweetManualAppletMDSKDto>)sweetManualAppletMDSKDtoList.clone();
}
public static ArrayList<SweetManualArtistListMDSKDto> getSweetManualArtistListMDSKDtoList() {
return (ArrayList<SweetManualArtistListMDSKDto>)sweetManualArtistListMDSKDtoList.clone();
}
public static ArrayList<SweetManualShopMdsk> getSweetManualShopMdskList() {
return (ArrayList<SweetManualShopMdsk>)sweetManualShopMDSKList.clone();
}
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IDGenerator;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -98,7 +99,7 @@ public class RedisDataUtils {
Date dateEnd = DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart = DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart, dateEnd);
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list = CollectionUtil.arrayListString();
list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(dateStart, i + 1), DateUtil.Formatter.yyyy_MM_dd));
......@@ -219,7 +220,7 @@ public class RedisDataUtils {
vo.setUid(uid);
if (type.equalsIgnoreCase("sign")) {
if (vo.getSignList() == null) {
ArrayList<String> signList = new ArrayList<>();
ArrayList<String> signList = CollectionUtil.arrayListString();
signList.add(artistsId);
vo.setSignList(signList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
......@@ -243,7 +244,7 @@ public class RedisDataUtils {
}
} else if (type.equalsIgnoreCase("watch")) {
if (vo.getWatchList() == null) {
ArrayList<String> watchList = new ArrayList<>();
ArrayList<String> watchList = CollectionUtil.arrayListString();
watchList.add(artistsId);
vo.setWatchList(watchList);
sqls.add(SqlMapping.get("sweet_user_relation.insert"));
......@@ -304,33 +305,38 @@ public class RedisDataUtils {
// 小程序演出提醒
public void setSweetRemind(String openId, String unionId, String performancesId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_REMIND.concat(unionId);
SweetRemindVo sweetRemindVo = SweetRemindVo.getNew();
sweetRemindVo.setRemindId(IDGenerator.nextSnowId());
sweetRemindVo.setCreatedAt(DateUtil.getNowTime());
sweetRemindVo.setPerformancesId(performancesId);
sweetRemindVo.setUnionId(unionId);
sweetRemindVo.setOpenId(openId);
// if (null != performanceInfo) {
// sweetRemindVo.setFieldName(performanceInfo.getFieldName());
// sweetRemindVo.setTitle(performanceInfo.getTitle());
// sweetRemindVo.setTimeStart(performanceInfo.getTimeStart());
// sweetRemindVo.setSellTime(performanceInfo.getSellTime());
// }
redisUtil.set(redisKey, sweetRemindVo);
}
public void delSweetRemind(String unionId) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_REMIND.concat(unionId);
redisUtil.del(redisKey);
LinkedList<String> sqls = CollectionUtil.linkedListString();
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
LocalDateTime now = LocalDateTime.now();
sqls.add(SqlMapping.get("sweet_remind.insert"));
sqlsDataA.add(new Object[]{
sweetRemindVo.getRemindId(), sweetRemindVo.getOpenId(), sweetRemindVo.getUnionId(), sweetRemindVo.getPerformancesId(),
});
queueUtils.sendMsgByRedis(MQConst.SweetQueue.SWEET_REMIND_INSERT_DRAW.getKey(),
SqlMapping.gets(sqls, sqlsDataA));
}
// 正在现场服务号关注事件储存用户信息
public void setSweetWechatUser(SweetWechatUser sweetWechatUser) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(sweetWechatUser.getUnionId());
String redisKeyUnid = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(sweetWechatUser.getOpenId());
redisUtil.set(redisKey, sweetWechatUser);
redisUtil.set(redisKeyUnid, sweetWechatUser.getUnionId());
}
public String getSweetWechatUserUnionid(String openid) {
if (openid.isEmpty()) {
return null;
}
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(openid);
return (String) redisUtil.get(redisKey);
}
public SweetWechatUser getSweetWechatUser(String unionid) {
if (unionid.isEmpty()) {
return null;
......@@ -338,6 +344,26 @@ public class RedisDataUtils {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
return (SweetWechatUser) redisUtil.get(redisKey);
}
public String getSweetWechatUserStr(String unionid) {
if (unionid.isEmpty()) {
return "";
}
String key = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO_STR.concat(unionid);
String str = (String) redisUtil.get(key);
return str;
}
public void setSweetWechatUserStr(String unionid) {
String key = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO_STR.concat(unionid);
redisUtil.set(key, "1");
}
public void delSweetWechatUser(String unionid, String openid) {
if (!unionid.isEmpty()) {
String redisKey = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_INFO.concat(unionid);
redisUtil.del(redisKey);
String redisKeyUnid = SweetConstant.REDIS_KEY_SWEET_WECHAT_USER_UNIONID.concat(openid);
redisUtil.del(redisKeyUnid);
}
}
// 艺人详情
public SweetArtists setArtistsDetails(String artistsId) {
......
......@@ -92,7 +92,7 @@ public class RedisMDSKDataUtils {
Date dateEnd = DateUtil.parse(sweetManualAppletDto.getTimeEnd(), DateUtil.DATE_SMALL_STR);
Date dateStart = DateUtil.parse(sweetManualAppletDto.getTimeStart(), DateUtil.DATE_SMALL_STR);
int intervalDay = (int) DateUtil.intervalDays(dateStart, dateEnd);
ArrayList<String> list = new ArrayList<>();
ArrayList<String> list = CollectionUtil.arrayListString();
list.add(DateUtil.format(dateStart, DateUtil.Formatter.yyyy_MM_dd));
for (int i = 0; i < intervalDay; i++) {
list.add(DateUtil.format(DateUtil.addDay(dateStart, i + 1), DateUtil.Formatter.yyyy_MM_dd));
......@@ -213,7 +213,7 @@ public class RedisMDSKDataUtils {
vo.setUid(uid);
if (type.equalsIgnoreCase("sign")) {
if (vo.getSignList() == null) {
ArrayList<String> signList = new ArrayList<>();
ArrayList<String> signList = CollectionUtil.arrayListString();
signList.add(artistsId);
vo.setSignList(signList);
sqls.add(SqlMapping.get("sweet_user_relation_mdsk.insert"));
......@@ -237,7 +237,7 @@ public class RedisMDSKDataUtils {
}
} else if (type.equalsIgnoreCase("watch")) {
if (vo.getWatchList() == null) {
ArrayList<String> watchList = new ArrayList<>();
ArrayList<String> watchList = CollectionUtil.arrayListString();
watchList.add(artistsId);
vo.setWatchList(watchList);
sqls.add(SqlMapping.get("sweet_user_relation_mdsk.insert"));
......
......@@ -9,6 +9,7 @@ public class SweetRemindVo implements Serializable, Cloneable {
private String performancesId;
private String openId;
private String unionId;
private String remindId;
/*private String title;
private String timeStart;
private String sellTime;
......
<?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.sweet.mapper.SweetRemindMapper">
</mapper>
......@@ -59,3 +59,11 @@ sweet_user_relation_mdsk.delete=DELETE FROM sweet_user_relation_mdsk WHERE user
# ------------------------用户关系----------------------------
sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (user_id,luck_draw_num,status,created_at) VALUES (?,?,1,?)
# --------------------------答案--------------------------
sweet_answer.insert=INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
# --------------------------关注/取消服务号的用户信息--------------------------
sweet_user.insert=INSERT INTO sweet_wechat_user (user_id,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update=UPDATE sweet_wechat_user SET is_cancel = ?, updated_at = ? WHERE unionId = ?
# --------------------------提醒记录--------------------------
sweet_remind.insert=INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
\ No newline at end of file
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