feat:开通会员订单记录
This commit is contained in:
1 parent
87e5e30b78
commit
0fe57d4feb
17 files changed
+279
-49
No files matched your search
@@ -44,6 +44,11 @@
|
||||
<version>${revision}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cn.iocoder.boot</groupId>
|
||||
<artifactId>yudao-spring-boot-starter-protection</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- 业务组件 -->
|
||||
<dependency>
|
||||
<groupId>cn.iocoder.boot</groupId>
|
||||
|
||||
+3
-2
@@ -1,5 +1,8 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.pay.api.notify.dto.PayOrderNotifyReqDTO;
|
||||
import cn.iocoder.yudao.module.pay.api.notify.dto.PayRefundNotifyReqDTO;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -13,7 +16,6 @@ import io.swagger.v3.oas.annotations.Parameter;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
|
||||
import javax.annotation.security.PermitAll;
|
||||
import javax.validation.constraints.*;
|
||||
import javax.validation.*;
|
||||
import javax.servlet.http.*;
|
||||
import java.util.*;
|
||||
@@ -33,7 +35,6 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
|
||||
|
||||
+50
@@ -0,0 +1,50 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.idempotent.core.annotation.Idempotent;
|
||||
import cn.iocoder.yudao.framework.idempotent.core.keyresolver.impl.UserIdempotentKeyResolver;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
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.annotation.Resource;
|
||||
import javax.validation.Valid;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
|
||||
|
||||
@Tag(name = "管理后台 - 会员开通记录")
|
||||
@RestController
|
||||
@RequestMapping("/member/open-type/history")
|
||||
@Validated
|
||||
public class OpenTypeUserController {
|
||||
|
||||
@Resource
|
||||
private OpenTypeService openTypeService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得会员开通记录分页")
|
||||
public CommonResult<PageResult<OpenTypeUserRespVO>> getOpenTypePage(@Valid OpenTypeUserReqVO pageReqVO) {
|
||||
return success(openTypeService.getOpenTypeUserPage(pageReqVO));
|
||||
}
|
||||
|
||||
@GetMapping("/refund")
|
||||
@Operation(summary = "退款")
|
||||
@Idempotent(timeout = 3, timeUnit = TimeUnit.SECONDS, keyResolver = UserIdempotentKeyResolver.class, message = "正在退款中,请稍后重试")
|
||||
public CommonResult<Boolean> refund(@RequestParam("id") Long id) {
|
||||
openTypeService.refundWalletRecharge(id, getClientIP());
|
||||
return success(true);
|
||||
}
|
||||
|
||||
}
|
||||
+1
-2
@@ -1,7 +1,6 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
+2
-3
@@ -1,9 +1,8 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
+1
-2
@@ -1,9 +1,8 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo;
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
|
||||
@Schema(description = "管理后台 - 会员类型新增/修改 Request VO")
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import sun.util.resources.LocaleData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class OpenTypeUserReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "会员id")
|
||||
private Long memberId;
|
||||
|
||||
@Schema(description = "会员开通类型")
|
||||
private String status;
|
||||
|
||||
@Schema(description = "支付状态")
|
||||
private String payStatus;
|
||||
|
||||
@Schema(description = "退款状态")
|
||||
private String refundStatus;
|
||||
|
||||
@Schema(description = "会员名称")
|
||||
private String memberName;
|
||||
|
||||
@Schema(description = "创建时间")
|
||||
private List<LocaleData> createTimeList;
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - 会员开通记录 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
public class OpenTypeUserRespVO {
|
||||
|
||||
@Schema(description = "id")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "会员开通类型编号")
|
||||
private Long openTypeId;
|
||||
|
||||
@Schema(description = "用户编号")
|
||||
private Long memberId;
|
||||
|
||||
@Schema(description = "购买价格")
|
||||
private Integer payPrice;
|
||||
|
||||
@Schema(description = "开始时间")
|
||||
private LocalDateTime startTime;
|
||||
|
||||
@Schema(description = "结束时间")
|
||||
private LocalDateTime endTime;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private String status;
|
||||
|
||||
@Schema(description = "是否已支付")
|
||||
private Boolean payStatus;
|
||||
|
||||
@Schema(description = "支付订单编号")
|
||||
private Long payOrderId;
|
||||
|
||||
@Schema(description = "支付成功的支付渠道")
|
||||
private String payChannelCode;
|
||||
|
||||
@Schema(description = "订单支付时间")
|
||||
private LocalDateTime payTime;
|
||||
|
||||
@Schema(description = "支付退款单编号")
|
||||
private Long payRefundId;
|
||||
|
||||
@Schema(description = "退款支付金额")
|
||||
private Integer refundPayPrice;
|
||||
|
||||
@Schema(description = "退款时间")
|
||||
private LocalDateTime refundTime;
|
||||
|
||||
@Schema(description = "退款状态")
|
||||
private Integer refundStatus;
|
||||
|
||||
/**
|
||||
* 用户相关
|
||||
*/
|
||||
private String memberNickname;
|
||||
|
||||
private String memberAvatar;
|
||||
|
||||
private String memberMobile;
|
||||
|
||||
/**
|
||||
* vip相关
|
||||
*/
|
||||
private String vipTitle;
|
||||
|
||||
private String vipDuration;
|
||||
}
|
||||
+2
-2
@@ -2,8 +2,8 @@ package cn.iocoder.yudao.module.member.controller.app.opentype;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.OpenTypeRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.OpenTypeService;
|
||||
|
||||
+1
-1
@@ -5,9 +5,9 @@ import java.util.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
|
||||
|
||||
/**
|
||||
* 会员类型 Mapper
|
||||
|
||||
+10
@@ -1,11 +1,16 @@
|
||||
package cn.iocoder.yudao.module.member.dal.mysql.opentype;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeUserDO;
|
||||
import cn.iocoder.yudao.module.member.enums.opentype.OpenTypeStatusEnum;
|
||||
import cn.iocoder.yudao.module.member.enums.opentype.OpenTypeUserStatusEnum;
|
||||
import cn.iocoder.yudao.module.member.service.opentype.BO.OpenTypeExtBO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
@@ -36,4 +41,9 @@ public interface OpenTypeUserMapper extends BaseMapperX<OpenTypeUserDO> {
|
||||
}
|
||||
|
||||
List<OpenTypeExtBO> getExtByMemeberIdList(@Param("memberIdList") List<Long> memberIdList);
|
||||
|
||||
/**
|
||||
* 获得会员开通记录分页
|
||||
*/
|
||||
IPage<OpenTypeUserRespVO> page(IPage<Page> page, @Param("dto") OpenTypeUserReqVO dto);
|
||||
}
|
||||
+9
-2
@@ -1,9 +1,11 @@
|
||||
package cn.iocoder.yudao.module.member.service.opentype;
|
||||
|
||||
import javax.validation.*;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
@@ -41,6 +43,11 @@ public interface OpenTypeService {
|
||||
*/
|
||||
PageResult<OpenTypeDO> getOpenTypePage(OpenTypePageReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得会员开通记录分页
|
||||
*/
|
||||
PageResult<OpenTypeUserRespVO> getOpenTypeUserPage(OpenTypeUserReqVO pageReqVO);
|
||||
|
||||
/**
|
||||
* 获得会员类列表
|
||||
*/
|
||||
|
||||
+26
-9
@@ -7,6 +7,10 @@ import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.member.client.service.ChatApi;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalReqVO;
|
||||
import cn.iocoder.yudao.module.member.client.vo.chat.privatemsg.ChatPrivateTotalMessageTotalResVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypePageReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openType.OpenTypeSaveReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserReqVO;
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO;
|
||||
import cn.iocoder.yudao.module.member.controller.app.opentype.vo.AppPayOpenReqType;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.config.MemberConfigDO;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeUserDO;
|
||||
@@ -27,6 +31,8 @@ import cn.iocoder.yudao.module.pay.api.refund.dto.PayRefundRespDTO;
|
||||
import cn.iocoder.yudao.module.pay.enums.order.PayOrderStatusEnum;
|
||||
import cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -36,7 +42,6 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
|
||||
import cn.iocoder.yudao.module.member.controller.admin.opentype.vo.*;
|
||||
import cn.iocoder.yudao.module.member.dal.dataobject.opentype.OpenTypeDO;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
@@ -64,15 +69,13 @@ import static cn.iocoder.yudao.module.pay.enums.refund.PayRefundStatusEnum.*;
|
||||
@Validated
|
||||
public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
|
||||
@Resource
|
||||
private MemberUserService memberUserService;
|
||||
@Resource
|
||||
private OpenTypeMapper openTypeMapper;
|
||||
@Resource
|
||||
private OpenTypeUserMapper openTypeUserMapper;
|
||||
@Resource
|
||||
private MemberRecentTagMapper memberRecentTagMapper;
|
||||
|
||||
@Resource
|
||||
private MemberUserService memberUserService;
|
||||
@Resource
|
||||
private MemberConfigService memberConfigService;
|
||||
|
||||
@@ -135,6 +138,20 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
return openTypeMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得会员开通记录分页
|
||||
*/
|
||||
@Override
|
||||
public PageResult<OpenTypeUserRespVO> getOpenTypeUserPage(OpenTypeUserReqVO pageReqVO) {
|
||||
IPage<OpenTypeUserRespVO> pageList = openTypeUserMapper.page(new Page(pageReqVO.getPageNo(), pageReqVO.getPageSize()), pageReqVO);
|
||||
List<OpenTypeUserRespVO> list = pageList.getRecords();
|
||||
|
||||
PageResult<OpenTypeUserRespVO> result = new PageResult<OpenTypeUserRespVO>();
|
||||
result.setList(list);
|
||||
result.setTotal(pageList.getTotal());
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得会员类列表
|
||||
*/
|
||||
@@ -423,7 +440,7 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
// 校验退款订单匹配
|
||||
if (notEqual(openTypeUserDO.getPayRefundId(), payRefundId)) {
|
||||
log.error("[校验开通会员是否已退款][钱包充值({}) 退款单不匹配({}),请进行处理!钱包充值的数据是:{}]", openTypeUserDO.getId(), payRefundId, toJsonString(openTypeUserDO));
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,钱包退款单编号不匹配");
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,退款单编号不匹配");
|
||||
}
|
||||
// 校验退款订单
|
||||
PayRefundRespDTO payRefund = payRefundApi.getRefund(payRefundId);
|
||||
@@ -439,7 +456,7 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
// 校验退款订单商户订单是否匹配
|
||||
if (notEqual(payRefund.getMerchantOrderId(), openTypeUserDO.getId().toString())) {
|
||||
log.error("[校验开通会员是否已退款][开通会员({}) 退款单不匹配({}),请进行处理!payRefund 数据是:{}]", openTypeUserDO.getId(), payRefundId, toJsonString(payRefund));
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,钱包退款单编号不匹配");
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员退款更新失败,退款单编号不匹配");
|
||||
}
|
||||
return payRefund;
|
||||
}
|
||||
@@ -450,11 +467,11 @@ public class OpenTypeServiceImpl implements OpenTypeService {
|
||||
private void validateOpenTypeCanRefund(OpenTypeUserDO walletRecharge) {
|
||||
// 校验充值订单是否支付
|
||||
if (!walletRecharge.getPayStatus()) {
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,钱包充值订单未支付");
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,该订单未支付");
|
||||
}
|
||||
// 校验充值订单是否已退款
|
||||
if (walletRecharge.getPayRefundId() != null) {
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,钱包充值订单已退款");
|
||||
throw exception(MemberErrorCode.EMPTY, "开通会员发起退款失败,该订单已退款");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+58
@@ -2,6 +2,45 @@
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="cn.iocoder.yudao.module.member.dal.mysql.opentype.OpenTypeUserMapper">
|
||||
<sql id="selectA">
|
||||
select a.id,
|
||||
a.open_type_id,
|
||||
a.member_id,
|
||||
a.pay_price,
|
||||
a.start_time,
|
||||
a.end_time,
|
||||
a.status,
|
||||
a.pay_status,
|
||||
a.pay_order_id,
|
||||
a.pay_channel_code,
|
||||
a.pay_time,
|
||||
a.pay_refund_id,
|
||||
a.refund_pay_price,
|
||||
a.refund_status,
|
||||
a.refund_time,
|
||||
a.creator,
|
||||
a.create_time,
|
||||
a.updater,
|
||||
a.update_time,
|
||||
a.deleted,
|
||||
a.tenant_id
|
||||
</sql>
|
||||
|
||||
<sql id="whereA">
|
||||
a.deleted = '0'
|
||||
<if test="dto.memberId != null">
|
||||
and a.member_id = #{dto.memberId}
|
||||
</if>
|
||||
<if test="dto.payStatus != null and dto.payStatus != '' ">
|
||||
and a.pay_status = #{dto.payStatus}
|
||||
</if>
|
||||
<if test="dto.refundStatus != null and dto.refundStatus != '' ">
|
||||
and a.refund_status = #{dto.refundStatus}
|
||||
</if>
|
||||
<if test="dto.createTimeList != null and dto.createTimeList.size() != 0">
|
||||
and a.createTime between #{dto.createTimeList[0]} and #{dto.createTimeList[1]}
|
||||
</if>
|
||||
</sql>
|
||||
|
||||
<select id="getExtByMemeberIdList" resultType="cn.iocoder.yudao.module.member.service.opentype.BO.OpenTypeExtBO">
|
||||
select a.member_id as memberId, TRUE as isVip, a.end_time as expirationTime
|
||||
@@ -23,4 +62,23 @@
|
||||
order by a.end_time desc
|
||||
</select>
|
||||
|
||||
<select id="page"
|
||||
resultType="cn.iocoder.yudao.module.member.controller.admin.opentype.vo.openTypeUser.OpenTypeUserRespVO">
|
||||
<include refid="selectA"/>,
|
||||
u.nickname as memberNickname,
|
||||
u.mobile as memberMobile,
|
||||
u.avatar as memberAvatar,
|
||||
o.title as vipTitle,
|
||||
o.duration as vipDuration
|
||||
from member_open_type_user a
|
||||
left join member_user u on a.member_id = u.id
|
||||
left join member_open_type o on a.open_type_id = o.id
|
||||
<where>
|
||||
<include refid="whereA"/>
|
||||
<if test="dto.memberName != null">
|
||||
and u.nickname like concat('%', #{dto.memberName}, '%')
|
||||
</if>
|
||||
</where>
|
||||
order by a.create_time desc , a.id desc
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -158,8 +158,8 @@ wx: # 参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-sta
|
||||
key-prefix: wx # Redis Key 的前缀
|
||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||
appid: wx63c280fe3248a3e7
|
||||
secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||
appid: wx2b4e4d3feff8267f
|
||||
secret: cf47cf478af51adf2e65fc626537c1c0
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
key-prefix: wa # Redis Key 的前缀
|
||||
|
||||
@@ -171,26 +171,16 @@ debug: false
|
||||
--- #################### 微信公众号、小程序相关配置 ####################
|
||||
wx:
|
||||
mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
|
||||
# app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
|
||||
# secret: 5abee519483bc9f8cb37ce280e814bd0
|
||||
app-id: wx5b23ba7a5589ecbb # 测试号(自己的)
|
||||
secret: 2a7b3b20c537e52e74afd395eb85f61f
|
||||
# app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
|
||||
# secret: bd4f9fab889591b62aeac0d7b8d8b4a0
|
||||
# 存储配置,解决 AccessToken 的跨节点的共享
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
key-prefix: wx # Redis Key 的前缀
|
||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||
# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
|
||||
# secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||
# appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
|
||||
# secret: 4a1a04e07f6a4a0751b39c3064a92c8b
|
||||
appid: wx48555e58acd79c3d # 测试号(puhui 提供的)
|
||||
secret: f0f5fd485bac7f377af6f5ca97636dd4
|
||||
appid: wx2b4e4d3feff8267f # 测试号(puhui 提供的)
|
||||
secret: cf47cf478af51adf2e65fc626537c1c0
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
key-prefix: wa # Redis Key 的前缀
|
||||
|
||||
@@ -167,26 +167,16 @@ debug: false
|
||||
--- #################### 微信公众号、小程序相关配置 ####################
|
||||
wx:
|
||||
mp: # 公众号配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 文档
|
||||
# app-id: wx041349c6f39b268b # 测试号(牛希尧提供的)
|
||||
# secret: 5abee519483bc9f8cb37ce280e814bd0
|
||||
app-id: wx5fb544743d0a860f
|
||||
secret: 6bed0b5b798db383af35e1ec54026d85
|
||||
# app-id: wxa69ab825b163be19 # 测试号(Kongdy 提供的)
|
||||
# secret: bd4f9fab889591b62aeac0d7b8d8b4a0
|
||||
# 存储配置,解决 AccessToken 的跨节点的共享
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
key-prefix: wx # Redis Key 的前缀
|
||||
http-client-type: HttpClient # 采用 HttpClient 请求微信公众号平台
|
||||
miniapp: # 小程序配置(必填),参见 https://github.com/Wechat-Group/WxJava/blob/develop/spring-boot-starters/wx-java-miniapp-spring-boot-starter/README.md 文档
|
||||
# appid: wx62056c0d5e8db250 # 测试号(牛希尧提供的)
|
||||
# secret: 333ae72f41552af1e998fe1f54e1584a
|
||||
# appid: wx63c280fe3248a3e7 # wenhualian的接口测试号
|
||||
# secret: 6f270509224a7ae1296bbf1c8cb97aed
|
||||
# appid: wxc4598c446f8a9cb3 # 测试号(Kongdy 提供的)
|
||||
# secret: 4a1a04e07f6a4a0751b39c3064a92c8b
|
||||
appid: wx48555e58acd79c3d # 测试号(puhui 提供的)
|
||||
secret: f0f5fd485bac7f377af6f5ca97636dd4
|
||||
appid: wx2b4e4d3feff8267f # 测试号(puhui 提供的)
|
||||
secret: cf47cf478af51adf2e65fc626537c1c0
|
||||
config-storage:
|
||||
type: RedisTemplate # 采用 RedisTemplate 操作 Redis,会自动从 Spring 中获取
|
||||
key-prefix: wa # Redis Key 的前缀
|
||||
|
||||
Reference in new issue
Block a user