refactor(payment): 调整支付宝支付
parent
79bf09e235
commit
e97b6492b2
|
@ -6,12 +6,11 @@ import com.mcwl.common.utils.SecurityUtils;
|
||||||
import com.mcwl.memberCenter.domain.MemberConsume;
|
import com.mcwl.memberCenter.domain.MemberConsume;
|
||||||
import com.mcwl.memberCenter.domain.Member;
|
import com.mcwl.memberCenter.domain.Member;
|
||||||
import com.mcwl.memberCenter.domain.MemberLevel;
|
import com.mcwl.memberCenter.domain.MemberLevel;
|
||||||
import com.mcwl.memberCenter.service.MemberBenefitService;
|
import com.mcwl.memberCenter.domain.MemberPromotion;
|
||||||
|
import com.mcwl.memberCenter.enums.PromotionEnum;
|
||||||
|
import com.mcwl.memberCenter.service.*;
|
||||||
import com.mcwl.memberCenter.domain.dto.RechargePointsDto;
|
import com.mcwl.memberCenter.domain.dto.RechargePointsDto;
|
||||||
import com.mcwl.memberCenter.domain.dto.UserMemberDto;
|
import com.mcwl.memberCenter.domain.dto.UserMemberDto;
|
||||||
import com.mcwl.memberCenter.service.MemberConsumeService;
|
|
||||||
import com.mcwl.memberCenter.service.MemberLevelService;
|
|
||||||
import com.mcwl.memberCenter.service.MemberService;
|
|
||||||
import com.mcwl.system.service.ISysUserService;
|
import com.mcwl.system.service.ISysUserService;
|
||||||
import com.mcwl.memberCenter.domain.vo.PointsVO;
|
import com.mcwl.memberCenter.domain.vo.PointsVO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
@ -23,6 +22,7 @@ import org.springframework.web.bind.annotation.*;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
@RestController
|
@RestController
|
||||||
|
@ -41,6 +41,8 @@ public class MemberController {
|
||||||
|
|
||||||
private final MemberLevelService memberLevelService;
|
private final MemberLevelService memberLevelService;
|
||||||
|
|
||||||
|
private final MemberPromotionService memberPromotionService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建用户会员
|
* 创建用户会员
|
||||||
*
|
*
|
||||||
|
@ -152,7 +154,20 @@ public class MemberController {
|
||||||
*/
|
*/
|
||||||
@GetMapping("calculatePayment")
|
@GetMapping("calculatePayment")
|
||||||
@ApiOperation(value = "根据会员等级和活动计算支付金额")
|
@ApiOperation(value = "根据会员等级和活动计算支付金额")
|
||||||
public AjaxResult calculatePayment(@NotNull(message = "请选择会员") Long memberLevelId, @RequestParam(required = false) Long promotionId) {
|
public AjaxResult calculatePayment(@Valid @NotNull(message = "请选择会员") Long memberLevelId, @RequestParam(required = false) Long promotionId) {
|
||||||
|
|
||||||
|
// 获取当前用户
|
||||||
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
MemberPromotion memberPromotion = memberPromotionService.lambdaQuery()
|
||||||
|
.eq(MemberPromotion::getUserId, userId)
|
||||||
|
.eq(MemberPromotion::getPromotionId, promotionId)
|
||||||
|
.eq(MemberPromotion::getStatus, PromotionEnum.PARTICIPATE)
|
||||||
|
.one();
|
||||||
|
|
||||||
|
// if (Objects.isNull(memberPromotion)) {
|
||||||
|
// return AjaxResult.warn("未参与活动或已过期");
|
||||||
|
// }
|
||||||
|
|
||||||
MemberLevel memberLevel = memberLevelService.getById(memberLevelId);
|
MemberLevel memberLevel = memberLevelService.getById(memberLevelId);
|
||||||
Double unitPrice = memberLevel.getUnitPrice();
|
Double unitPrice = memberLevel.getUnitPrice();
|
||||||
unitPrice = memberService.calculatePayment(unitPrice, promotionId);
|
unitPrice = memberService.calculatePayment(unitPrice, promotionId);
|
||||||
|
|
|
@ -13,6 +13,7 @@ import com.mcwl.common.utils.SecurityUtils;
|
||||||
import com.mcwl.common.utils.ShareCodeUtils;
|
import com.mcwl.common.utils.ShareCodeUtils;
|
||||||
import com.mcwl.pay.domain.OrderTrade;
|
import com.mcwl.pay.domain.OrderTrade;
|
||||||
import com.mcwl.pay.domain.OrderTradeDto;
|
import com.mcwl.pay.domain.OrderTradeDto;
|
||||||
|
import com.mcwl.pay.domain.vo.PayVo;
|
||||||
import com.mcwl.pay.service.AliPayService;
|
import com.mcwl.pay.service.AliPayService;
|
||||||
import com.mcwl.pay.service.OrderTradeService;
|
import com.mcwl.pay.service.OrderTradeService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
@ -119,21 +120,22 @@ public class AliPayController extends BaseController {
|
||||||
@Anonymous
|
@Anonymous
|
||||||
@PostMapping("/doPay")
|
@PostMapping("/doPay")
|
||||||
@ApiOperation(value = "支付宝支付")
|
@ApiOperation(value = "支付宝支付")
|
||||||
public void doPay(@Valid
|
@ResponseBody
|
||||||
@RequestBody
|
public AjaxResult doPay(@Valid
|
||||||
OrderTradeDto orderTradeDto,
|
@RequestBody
|
||||||
HttpServletResponse response) throws Exception {
|
OrderTradeDto orderTradeDto,
|
||||||
String qrUrl = null;
|
HttpServletResponse response) throws Exception {
|
||||||
|
PayVo payVo = null;
|
||||||
|
|
||||||
String type = orderTradeDto.getType();
|
String type = orderTradeDto.getType();
|
||||||
|
|
||||||
if ("member".equalsIgnoreCase(type)) {
|
if ("member".equalsIgnoreCase(type)) {
|
||||||
qrUrl = aliPayService.memberPay(orderTradeDto);
|
payVo = aliPayService.memberPay(orderTradeDto);
|
||||||
} else if ("points".equalsIgnoreCase(type)) {
|
} else if ("points".equalsIgnoreCase(type)) {
|
||||||
qrUrl = aliPayService.pointsPay(orderTradeDto.getPaymentAmount());
|
payVo = aliPayService.pointsPay(orderTradeDto.getPaymentAmount());
|
||||||
}
|
}
|
||||||
|
|
||||||
QrCodeUtil.generate(qrUrl, 300, 300, "png", response.getOutputStream());
|
return AjaxResult.success(payVo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -23,12 +23,16 @@ import com.mcwl.pay.domain.OrderTrade;
|
||||||
import com.mcwl.pay.domain.OrderTradeDto;
|
import com.mcwl.pay.domain.OrderTradeDto;
|
||||||
import com.mcwl.pay.service.AliPayService;
|
import com.mcwl.pay.service.AliPayService;
|
||||||
import com.mcwl.pay.service.OrderTradeService;
|
import com.mcwl.pay.service.OrderTradeService;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import javax.validation.Valid;
|
||||||
|
import javax.validation.constraints.NotBlank;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLEncoder;
|
import java.net.URLEncoder;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
|
@ -49,6 +53,7 @@ import java.util.Random;
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/web/pay")
|
@RequestMapping("/web/pay")
|
||||||
@Validated
|
@Validated
|
||||||
|
@Api(tags = "订单模块")
|
||||||
public class OrderTradeController extends BaseController {
|
public class OrderTradeController extends BaseController {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -61,6 +66,7 @@ public class OrderTradeController extends BaseController {
|
||||||
* 查询列表
|
* 查询列表
|
||||||
*/
|
*/
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
|
@ApiOperation(value = "查询订单列表")
|
||||||
public TableDataInfo list(OrderTrade orderTrade) {
|
public TableDataInfo list(OrderTrade orderTrade) {
|
||||||
startPage();
|
startPage();
|
||||||
List<OrderTrade> list = orderTradeService.selectMallProductList(orderTrade);
|
List<OrderTrade> list = orderTradeService.selectMallProductList(orderTrade);
|
||||||
|
@ -71,6 +77,7 @@ public class OrderTradeController extends BaseController {
|
||||||
* 新增
|
* 新增
|
||||||
*/
|
*/
|
||||||
@PostMapping("/add")
|
@PostMapping("/add")
|
||||||
|
@ApiOperation(value = "新增订单")
|
||||||
public AjaxResult add(@RequestBody OrderTrade orderTrade) {
|
public AjaxResult add(@RequestBody OrderTrade orderTrade) {
|
||||||
// 获取当前用户
|
// 获取当前用户
|
||||||
Long userId = SecurityUtils.getUserId();
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
@ -86,6 +93,7 @@ public class OrderTradeController extends BaseController {
|
||||||
* 修改
|
* 修改
|
||||||
*/
|
*/
|
||||||
@PostMapping("/upda")
|
@PostMapping("/upda")
|
||||||
|
@ApiOperation(value = "修改订单")
|
||||||
public AjaxResult upda(@RequestBody OrderTrade orderTrade) {
|
public AjaxResult upda(@RequestBody OrderTrade orderTrade) {
|
||||||
// 获取当前用户
|
// 获取当前用户
|
||||||
Long userId = SecurityUtils.getUserId();
|
Long userId = SecurityUtils.getUserId();
|
||||||
|
@ -101,14 +109,19 @@ public class OrderTradeController extends BaseController {
|
||||||
* 删除
|
* 删除
|
||||||
*/
|
*/
|
||||||
@PostMapping
|
@PostMapping
|
||||||
|
@ApiOperation(value = "删除订单")
|
||||||
public AjaxResult remove(@RequestBody IdsParam ids) {
|
public AjaxResult remove(@RequestBody IdsParam ids) {
|
||||||
orderTradeService.deleteMallProductByIds(ids);
|
orderTradeService.deleteMallProductByIds(ids);
|
||||||
return success();
|
return success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询交易状态
|
||||||
|
*/
|
||||||
@GetMapping("/queryTradeStatus")
|
@GetMapping("/queryTradeStatus")
|
||||||
public Object queryTradeStatus(@RequestParam String outTradeNo) throws Exception {
|
@ApiOperation(value = "查询交易状态")
|
||||||
|
public Object queryTradeStatus(@Valid @NotBlank(message = "订单号不能为空") @RequestParam String outTradeNo) throws Exception {
|
||||||
Factory.setOptions(config);
|
Factory.setOptions(config);
|
||||||
AlipayTradeQueryResponse query = Factory.Payment.Common().query(outTradeNo);
|
AlipayTradeQueryResponse query = Factory.Payment.Common().query(outTradeNo);
|
||||||
Map<String, Object> map = JSONUtils.jsonToMap(query.getHttpBody());
|
Map<String, Object> map = JSONUtils.jsonToMap(query.getHttpBody());
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
package com.mcwl.memberCenter.domain;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
|
import com.mcwl.common.core.domain.BaseEntity;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权益表
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("mem_benefit")
|
||||||
|
public class Benefit extends BaseEntity {
|
||||||
|
|
||||||
|
@TableId
|
||||||
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 权益名称
|
||||||
|
*/
|
||||||
|
private String benefitName;
|
||||||
|
/**
|
||||||
|
* 权益描述
|
||||||
|
*/
|
||||||
|
private String benefitDesc;
|
||||||
|
/**
|
||||||
|
* 权益类型
|
||||||
|
*/
|
||||||
|
private String benefitType;
|
||||||
|
/**
|
||||||
|
* 权益折扣,当权益类型为折扣时,记录折扣具体数值
|
||||||
|
*/
|
||||||
|
private Double benefitDiscount;
|
||||||
|
/**
|
||||||
|
* 权益排序
|
||||||
|
*/
|
||||||
|
private Integer benefitOrder;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -8,7 +8,7 @@ import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员权益表
|
* 会员权益关联表
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@ -21,17 +21,8 @@ public class MemberBenefit extends BaseEntity {
|
||||||
// 会员等级id
|
// 会员等级id
|
||||||
private Long memberLevelId;
|
private Long memberLevelId;
|
||||||
|
|
||||||
// 权益名称
|
// 权益id
|
||||||
private String benefitName;
|
private Long benefitId;
|
||||||
|
|
||||||
// 权益描述
|
|
||||||
private String benefitDesc;
|
|
||||||
|
|
||||||
// 权益类型
|
|
||||||
private MemberBenefitTypeEnum benefitType;
|
|
||||||
|
|
||||||
// 权益折扣 当权益类型为折扣时,记录折扣的具体数值,如0.9代表9折
|
|
||||||
private Double benefitDiscount;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.mcwl.memberCenter.domain.vo;
|
package com.mcwl.memberCenter.domain.vo;
|
||||||
|
|
||||||
|
import com.mcwl.memberCenter.domain.Benefit;
|
||||||
import com.mcwl.memberCenter.domain.MemberBenefit;
|
import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||||
import com.mcwl.memberCenter.domain.MemberLevel;
|
import com.mcwl.memberCenter.domain.MemberLevel;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
|
@ -19,7 +20,7 @@ public class MemberBenefitVO {
|
||||||
private String memberLevelName;
|
private String memberLevelName;
|
||||||
|
|
||||||
// 会员权益
|
// 会员权益
|
||||||
private List<MemberBenefit> memberBenefitList = new ArrayList<>();
|
private List<Benefit> memberBenefitList = new ArrayList<>();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.mcwl.memberCenter.mapper;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
|
import com.mcwl.memberCenter.domain.Benefit;
|
||||||
|
import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 权益 Mapper
|
||||||
|
*/
|
||||||
|
@Mapper
|
||||||
|
public interface BenefitMapper extends BaseMapper<Benefit> {
|
||||||
|
List<Benefit> getBenefitList();
|
||||||
|
|
||||||
|
List<Benefit> getBenefitListByMemberLevelId(@Param("memberLevelId") Long memberLevelId);
|
||||||
|
|
||||||
|
List<Benefit> getNotBenefitList(@Param("memberLevelId") Long memberLevelId);
|
||||||
|
|
||||||
|
Benefit getBenefitByType(@Param("memberLevelId") Long memberLevelId, @Param("benefitType") String benefitType);
|
||||||
|
}
|
|
@ -5,7 +5,7 @@ import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 会员权益 Mapper
|
* 会员权益关联 Mapper
|
||||||
*/
|
*/
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface MemberBenefitMapper extends BaseMapper<MemberBenefit> {
|
public interface MemberBenefitMapper extends BaseMapper<MemberBenefit> {
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
package com.mcwl.memberCenter.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import com.mcwl.memberCenter.domain.Benefit;
|
||||||
|
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface BenefitService extends IService<Benefit> {
|
||||||
|
|
||||||
|
List<Benefit> getBenefitList();
|
||||||
|
|
||||||
|
|
||||||
|
List<Benefit> getBenefitListByMemberLevelId(Long memberLevelId);
|
||||||
|
|
||||||
|
|
||||||
|
List<Benefit> getNotBenefitList(Long memberLevelId);
|
||||||
|
|
||||||
|
Benefit getBenefitByType(Long memberLevelId, MemberBenefitTypeEnum memberBenefitTypeEnum);
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.mcwl.memberCenter.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.mcwl.memberCenter.domain.Benefit;
|
||||||
|
import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||||
|
import com.mcwl.memberCenter.domain.MemberLevel;
|
||||||
|
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
|
||||||
|
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
|
||||||
|
import com.mcwl.memberCenter.mapper.BenefitMapper;
|
||||||
|
import com.mcwl.memberCenter.mapper.MemberBenefitMapper;
|
||||||
|
import com.mcwl.memberCenter.service.BenefitService;
|
||||||
|
import com.mcwl.memberCenter.service.MemberBenefitService;
|
||||||
|
import com.mcwl.memberCenter.service.MemberLevelService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class BenefitServiceImpl extends ServiceImpl<BenefitMapper, Benefit> implements BenefitService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Benefit> getBenefitList() {
|
||||||
|
return baseMapper.getBenefitList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Benefit> getBenefitListByMemberLevelId(Long memberLevelId) {
|
||||||
|
return baseMapper.getBenefitListByMemberLevelId(memberLevelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Benefit> getNotBenefitList(Long memberLevelId) {
|
||||||
|
return baseMapper.getNotBenefitList(memberLevelId);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Benefit getBenefitByType(Long memberLevelId, MemberBenefitTypeEnum memberBenefitTypeEnum) {
|
||||||
|
return baseMapper.getBenefitByType(memberLevelId, memberBenefitTypeEnum.getValue());
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,17 +3,19 @@ package com.mcwl.memberCenter.service.impl;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import com.mcwl.memberCenter.domain.Benefit;
|
||||||
import com.mcwl.memberCenter.domain.MemberBenefit;
|
import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||||
import com.mcwl.memberCenter.domain.MemberLevel;
|
import com.mcwl.memberCenter.domain.MemberLevel;
|
||||||
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
|
import com.mcwl.memberCenter.domain.vo.MemberBenefitVO;
|
||||||
|
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
|
||||||
import com.mcwl.memberCenter.mapper.MemberBenefitMapper;
|
import com.mcwl.memberCenter.mapper.MemberBenefitMapper;
|
||||||
|
import com.mcwl.memberCenter.service.BenefitService;
|
||||||
import com.mcwl.memberCenter.service.MemberBenefitService;
|
import com.mcwl.memberCenter.service.MemberBenefitService;
|
||||||
import com.mcwl.memberCenter.service.MemberLevelService;
|
import com.mcwl.memberCenter.service.MemberLevelService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
|
@ -21,6 +23,8 @@ public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, M
|
||||||
|
|
||||||
private final MemberLevelService memberLevelService;
|
private final MemberLevelService memberLevelService;
|
||||||
|
|
||||||
|
private final BenefitService benefitService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MemberBenefitVO> getMemberBenefitList() {
|
public List<MemberBenefitVO> getMemberBenefitList() {
|
||||||
List<MemberBenefitVO> memberBenefitVOList = initList();
|
List<MemberBenefitVO> memberBenefitVOList = initList();
|
||||||
|
@ -30,10 +34,17 @@ public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, M
|
||||||
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
|
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
|
||||||
memberBenefitVO.setMemberLevelName(memberLevel.getMemberName());
|
memberBenefitVO.setMemberLevelName(memberLevel.getMemberName());
|
||||||
// 获取会员等级对应的权益
|
// 获取会员等级对应的权益
|
||||||
List<MemberBenefit> memberBenefitList = baseMapper.selectList(new LambdaQueryWrapper<MemberBenefit>()
|
List<Benefit> benefitList = benefitService.getBenefitListByMemberLevelId(memberLevel.getId());
|
||||||
.eq(MemberBenefit::getMemberLevelId, memberLevel.getId()));
|
|
||||||
|
|
||||||
memberBenefitVO.setMemberBenefitList(memberBenefitList);
|
// 获取会员等级没有的权益
|
||||||
|
List<Benefit> notBenefitList = benefitService.getNotBenefitList(memberLevel.getId());
|
||||||
|
|
||||||
|
benefitList.addAll(notBenefitList);
|
||||||
|
|
||||||
|
// 排序
|
||||||
|
benefitList.sort(Comparator.comparingInt(Benefit::getBenefitOrder));
|
||||||
|
|
||||||
|
memberBenefitVO.setMemberBenefitList(benefitList);
|
||||||
memberBenefitVOList.add(memberBenefitVO);
|
memberBenefitVOList.add(memberBenefitVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +55,7 @@ public class MemberBenefitServiceImpl extends ServiceImpl<MemberBenefitMapper, M
|
||||||
List<MemberBenefitVO> memberBenefitVOList = new ArrayList<>();
|
List<MemberBenefitVO> memberBenefitVOList = new ArrayList<>();
|
||||||
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
|
MemberBenefitVO memberBenefitVO = new MemberBenefitVO();
|
||||||
memberBenefitVO.setMemberLevelName("会员权益");
|
memberBenefitVO.setMemberLevelName("会员权益");
|
||||||
memberBenefitVO.setMemberBenefitList(baseMapper.selectList(null));
|
memberBenefitVO.setMemberBenefitList(benefitService.getBenefitList());
|
||||||
memberBenefitVOList.add(memberBenefitVO);
|
memberBenefitVOList.add(memberBenefitVO);
|
||||||
return memberBenefitVOList;
|
return memberBenefitVOList;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||||
|
|
||||||
private final MemberConsumeService memberConsumeService;
|
private final MemberConsumeService memberConsumeService;
|
||||||
|
|
||||||
|
private final BenefitService benefitService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod, Long promotionId) {
|
public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod, Long promotionId) {
|
||||||
if (userId == null) {
|
if (userId == null) {
|
||||||
|
@ -80,12 +82,9 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置积分
|
// 设置积分
|
||||||
MemberBenefit memberBenefit = memberBenefitService.lambdaQuery()
|
Benefit benefit = benefitService.getBenefitByType(memberLevelId, MemberBenefitTypeEnum.POINTS);
|
||||||
.eq(MemberBenefit::getMemberLevelId, memberLevelId)
|
if (Objects.nonNull(benefit)) {
|
||||||
.eq(MemberBenefit::getBenefitType, MemberBenefitTypeEnum.POINTS)
|
Double points = benefit.getBenefitDiscount();
|
||||||
.one();
|
|
||||||
if (memberBenefit != null) {
|
|
||||||
Double points = memberBenefit.getBenefitDiscount();
|
|
||||||
// 根据活动id查询活动类型,如果为积分,则积分加成
|
// 根据活动id查询活动类型,如果为积分,则积分加成
|
||||||
if (promotionId != null) {
|
if (promotionId != null) {
|
||||||
Promotion promotion = promotionMapper.selectById(promotionId);
|
Promotion promotion = promotionMapper.selectById(promotionId);
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?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.mcwl.memberCenter.mapper.BenefitMapper">
|
||||||
|
|
||||||
|
<select id="getBenefitList" resultType="com.mcwl.memberCenter.domain.Benefit">
|
||||||
|
select id, benefit_name, benefit_desc, benefit_discount, benefit_order
|
||||||
|
from mem_benefit
|
||||||
|
where del_flag = '0'
|
||||||
|
order by benefit_order
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="getBenefitListByMemberLevelId" resultType="com.mcwl.memberCenter.domain.Benefit">
|
||||||
|
select b.id, benefit_name, benefit_desc, benefit_discount, benefit_order
|
||||||
|
from mem_benefit b
|
||||||
|
left join mem_member_benefit mb on b.id = mb.benefit_id
|
||||||
|
where mb.member_level_id = #{memberLevelId}
|
||||||
|
and b.del_flag = '0'
|
||||||
|
and mb.del_flag = '0'
|
||||||
|
order by b.benefit_order
|
||||||
|
</select>
|
||||||
|
<select id="getNotBenefitList" resultType="com.mcwl.memberCenter.domain.Benefit">
|
||||||
|
select benefit_name, benefit_desc, benefit_order
|
||||||
|
from mem_benefit b
|
||||||
|
where b.id not in (select mb.benefit_id
|
||||||
|
from mem_member_benefit mb
|
||||||
|
where mb.member_level_id = #{memberLevelId}
|
||||||
|
and mb.del_flag = '0')
|
||||||
|
and b.del_flag = '0'
|
||||||
|
order by b.benefit_order
|
||||||
|
</select>
|
||||||
|
<select id="getBenefitByType" resultType="com.mcwl.memberCenter.domain.Benefit">
|
||||||
|
select mb.id, benefit_name, benefit_desc, benefit_type, benefit_discount, benefit_order
|
||||||
|
from mem_benefit mb
|
||||||
|
left join mem_member_benefit mmb on mb.id = mmb.benefit_id
|
||||||
|
where mb.del_flag = '0'
|
||||||
|
and mmb.del_flag = '0'
|
||||||
|
and member_level_id = #{memberLevelId}
|
||||||
|
and benefit_type = #{benefitType}
|
||||||
|
</select>
|
||||||
|
</mapper>
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.mcwl.pay.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class PayVo {
|
||||||
|
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
private String orderNo;
|
||||||
|
|
||||||
|
}
|
|
@ -3,13 +3,14 @@ package com.mcwl.pay.service;
|
||||||
import com.alipay.api.AlipayApiException;
|
import com.alipay.api.AlipayApiException;
|
||||||
import com.mcwl.common.core.domain.AjaxResult;
|
import com.mcwl.common.core.domain.AjaxResult;
|
||||||
import com.mcwl.pay.domain.OrderTradeDto;
|
import com.mcwl.pay.domain.OrderTradeDto;
|
||||||
|
import com.mcwl.pay.domain.vo.PayVo;
|
||||||
|
|
||||||
public interface AliPayService {
|
public interface AliPayService {
|
||||||
String bindingCallback(String authCode, String state);
|
String bindingCallback(String authCode, String state);
|
||||||
|
|
||||||
String memberPay(OrderTradeDto orderTradeDto) throws Exception;
|
PayVo memberPay(OrderTradeDto orderTradeDto) throws Exception;
|
||||||
|
|
||||||
String pointsPay(Double paymentAmount) throws Exception;
|
PayVo pointsPay(Double paymentAmount) throws Exception;
|
||||||
|
|
||||||
AjaxResult fetch(String outBizNo, String amount) throws AlipayApiException;
|
AjaxResult fetch(String outBizNo, String amount) throws AlipayApiException;
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ import com.mcwl.memberCenter.service.MemberLevelService;
|
||||||
import com.mcwl.pay.config.AliConfig;
|
import com.mcwl.pay.config.AliConfig;
|
||||||
import com.mcwl.pay.domain.OrderTrade;
|
import com.mcwl.pay.domain.OrderTrade;
|
||||||
import com.mcwl.pay.domain.OrderTradeDto;
|
import com.mcwl.pay.domain.OrderTradeDto;
|
||||||
|
import com.mcwl.pay.domain.vo.PayVo;
|
||||||
import com.mcwl.pay.service.AliPayService;
|
import com.mcwl.pay.service.AliPayService;
|
||||||
import com.mcwl.system.domain.SysUserPayAccount;
|
import com.mcwl.system.domain.SysUserPayAccount;
|
||||||
import com.mcwl.system.domain.SysUserPayAccountLog;
|
import com.mcwl.system.domain.SysUserPayAccountLog;
|
||||||
|
@ -132,7 +133,7 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String memberPay(OrderTradeDto orderTradeDto) throws Exception {
|
public PayVo memberPay(OrderTradeDto orderTradeDto) throws Exception {
|
||||||
|
|
||||||
// 会员等级id
|
// 会员等级id
|
||||||
Integer productId = orderTradeDto.getProductId();
|
Integer productId = orderTradeDto.getProductId();
|
||||||
|
@ -168,7 +169,11 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
//参照官方文档响应示例,解析返回结果
|
//参照官方文档响应示例,解析返回结果
|
||||||
String httpBodyStr = payResponse.getHttpBody();
|
String httpBodyStr = payResponse.getHttpBody();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||||
return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
|
||||||
|
PayVo payVo = new PayVo();
|
||||||
|
payVo.setOrderNo(tradeEntity.getCode());
|
||||||
|
payVo.setUrl(jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString());
|
||||||
|
return payVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -180,7 +185,7 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String pointsPay(Double paymentAmount) throws Exception {
|
public PayVo pointsPay(Double paymentAmount) throws Exception {
|
||||||
// 设置orderTrade信息
|
// 设置orderTrade信息
|
||||||
OrderTrade tradeEntity = new OrderTrade();
|
OrderTrade tradeEntity = new OrderTrade();
|
||||||
tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
|
tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
|
||||||
|
@ -200,7 +205,13 @@ public class AliPayServiceImpl implements AliPayService {
|
||||||
//参照官方文档响应示例,解析返回结果
|
//参照官方文档响应示例,解析返回结果
|
||||||
String httpBodyStr = payResponse.getHttpBody();
|
String httpBodyStr = payResponse.getHttpBody();
|
||||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||||
return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
|
||||||
|
String url = jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||||
|
PayVo payVo = new PayVo();
|
||||||
|
payVo.setOrderNo(tradeEntity.getCode());
|
||||||
|
payVo.setUrl(url);
|
||||||
|
|
||||||
|
return payVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
|
<select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
|
||||||
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,u.wallet u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
|
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex,u.wallet, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from sys_user u
|
||||||
left join sys_dept d on u.dept_id = d.dept_id
|
left join sys_dept d on u.dept_id = d.dept_id
|
||||||
where u.del_flag = '0'
|
where u.del_flag = '0'
|
||||||
<if test="userId != null and userId != 0">
|
<if test="userId != null and userId != 0">
|
||||||
|
|
Loading…
Reference in New Issue