Commit c35bfbdd by giaogiao

vip开通

parent 435053c1
package com.sien.common.controller; package com.sien.common.controller;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.param.VipRecordOpenParam; import com.sien.common.param.VipOpenParam;
import com.sien.common.service.VipRecordService; import com.sien.common.service.VipRecordService;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
import io.geekidea.springbootplus.framework.common.controller.BaseController; import io.geekidea.springbootplus.framework.common.controller.BaseController;
...@@ -40,9 +40,9 @@ public class VipRecordController extends BaseController { ...@@ -40,9 +40,9 @@ public class VipRecordController extends BaseController {
@PostMapping("/open") @PostMapping("/open")
@OperationLog(name = "开通Vip", type = OperationLogType.ADD) @OperationLog(name = "开通Vip", type = OperationLogType.ADD)
@ApiOperation(value = "开通Vip") @ApiOperation(value = "开通Vip")
public ApiResult<WxPayMpOrderResult> openVip(@Validated(Add.class) @RequestBody VipRecordOpenParam vipRecordOpenParam) throws Exception { public ApiResult<WxPayMpOrderResult> openVip(@Validated(Add.class) @RequestBody VipOpenParam vipOpenParam) throws Exception {
return vipRecordService.openVip(vipRecordOpenParam); return vipRecordService.openVip(vipOpenParam);
} }
// /** // /**
......
package com.sien.common.param;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* <pre>
* 开通会员参数对象
* </pre>
*
* @author hewei
* @date 2021-02-25
*/
@Data
@Accessors(chain = true)
@ApiModel(value = "VipOpenParam")
public class VipOpenParam implements Serializable {
private static final long serialVersionUID = 1L;
// @ApiModelProperty("开通会员金额")
// private BigDecimal money;
@NotNull(message = "开通多久不能为空")
@ApiModelProperty("开通多少年")
private Integer years;
@NotBlank(message = "会员等级id不能为空")
@ApiModelProperty("会员等级id,传入由会员列表接口返回的id")
private Long vipLevelId;
@NotBlank(message = "不能为空")
@ApiModelProperty("是否代替他人开通")
private Boolean isReplace;
@ApiModelProperty("捐款接收用户手机号,当isAgent=1为必填")
private String userPhone;
@ApiModelProperty("手机区号,当isAgent=1为必填")
private String phoneArea;
}
...@@ -2,7 +2,7 @@ package com.sien.common.service; ...@@ -2,7 +2,7 @@ package com.sien.common.service;
import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult; import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
import com.sien.common.entity.VipRecord; import com.sien.common.entity.VipRecord;
import com.sien.common.param.VipRecordOpenParam; import com.sien.common.param.VipOpenParam;
import com.sien.common.param.VipRecordPageParam; import com.sien.common.param.VipRecordPageParam;
import com.sien.common.vo.VipRecordQueryVo; import com.sien.common.vo.VipRecordQueryVo;
import io.geekidea.springbootplus.framework.common.api.ApiResult; import io.geekidea.springbootplus.framework.common.api.ApiResult;
...@@ -35,11 +35,12 @@ public interface VipRecordService extends BaseService<VipRecord> { ...@@ -35,11 +35,12 @@ public interface VipRecordService extends BaseService<VipRecord> {
/** /**
* 开通vip * 开通vip
* @param vipRecordOpenParam *
* @param vipOpenParam
* @return * @return
* @throws Exception * @throws Exception
*/ */
ApiResult<WxPayMpOrderResult> openVip(VipRecordOpenParam vipRecordOpenParam)throws Exception; ApiResult<WxPayMpOrderResult> openVip(VipOpenParam vipOpenParam) throws Exception;
/** /**
* 修改 * 修改
......
...@@ -32,6 +32,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken; ...@@ -32,6 +32,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -52,7 +53,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap ...@@ -52,7 +53,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
private static final String BODY = "厦门市四恩慈善会捐款"; private static final String BODY = "厦门市四恩慈善会捐款";
private static final String NOTIFY_URL = "https://c7a30ed052d8.ngrok.io/api/pay/notify/donationOrder"; private static final String NOTIFY_URL = "/api/pay/notify/donationOrder";
@Autowired @Autowired
private DonationRecordMapper donationRecordMapper; private DonationRecordMapper donationRecordMapper;
...@@ -63,6 +64,10 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap ...@@ -63,6 +64,10 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
@Resource @Resource
HttpServletRequest httpServletRequest; HttpServletRequest httpServletRequest;
@Value("${spring-boot-plus.domain}")
private String domain;
@Autowired @Autowired
private AppUserService appUserService; private AppUserService appUserService;
...@@ -196,7 +201,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap ...@@ -196,7 +201,7 @@ public class DonationRecordServiceImpl extends BaseServiceImpl<DonationRecordMap
wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp); wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 // 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest.setNotifyUrl(DonationRecordServiceImpl.NOTIFY_URL); wxPayUnifiedOrderRequest.setNotifyUrl(domain + DonationRecordServiceImpl.NOTIFY_URL);
wxPayUnifiedOrderRequest.setOpenid(openid); wxPayUnifiedOrderRequest.setOpenid(openid);
String jsapi = "JSAPI"; String jsapi = "JSAPI";
......
...@@ -14,7 +14,7 @@ import com.github.binarywang.wxpay.service.WxPayService; ...@@ -14,7 +14,7 @@ import com.github.binarywang.wxpay.service.WxPayService;
import com.sien.common.entity.AppUser; import com.sien.common.entity.AppUser;
import com.sien.common.entity.VipRecord; import com.sien.common.entity.VipRecord;
import com.sien.common.mapper.VipRecordMapper; import com.sien.common.mapper.VipRecordMapper;
import com.sien.common.param.VipRecordOpenParam; import com.sien.common.param.VipOpenParam;
import com.sien.common.param.VipRecordPageParam; import com.sien.common.param.VipRecordPageParam;
import com.sien.common.service.AppUserService; import com.sien.common.service.AppUserService;
import com.sien.common.service.VipPriceService; import com.sien.common.service.VipPriceService;
...@@ -31,6 +31,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken; ...@@ -31,6 +31,7 @@ import io.geekidea.springbootplus.framework.shiro.jwt.JwtToken;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -51,9 +52,9 @@ import java.util.Date; ...@@ -51,9 +52,9 @@ import java.util.Date;
public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRecord> implements VipRecordService { public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRecord> implements VipRecordService {
private static final String BODY = "厦门市四恩慈善会会员开通"; private static final String BODY = "厦门市四恩慈善会开通会员";
private static final String NOTIFY_URL = "https://c7a30ed052d8.ngrok.io/api/pay/notify/vipOrder"; private static final String NOTIFY_URL = "/api/pay/notify/vipOrder";
@Autowired @Autowired
private VipRecordMapper vipRecordMapper; private VipRecordMapper vipRecordMapper;
...@@ -69,6 +70,9 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe ...@@ -69,6 +70,9 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe
@Autowired @Autowired
private VipPriceService vipPriceService; private VipPriceService vipPriceService;
@Value("${spring-boot-plus.domain}")
private String domain;
@Override @Override
public String vipOrderNotifyResult(String xmlData) { public String vipOrderNotifyResult(String xmlData) {
...@@ -120,7 +124,7 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe ...@@ -120,7 +124,7 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe
wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp); wxPayUnifiedOrderRequest.setSpbillCreateIp(spbillCreateIp);
// 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 // 接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。
wxPayUnifiedOrderRequest.setNotifyUrl(VipRecordServiceImpl.NOTIFY_URL); wxPayUnifiedOrderRequest.setNotifyUrl(domain + VipRecordServiceImpl.NOTIFY_URL);
wxPayUnifiedOrderRequest.setOpenid(openid); wxPayUnifiedOrderRequest.setOpenid(openid);
String jsapi = "JSAPI"; String jsapi = "JSAPI";
...@@ -137,22 +141,22 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe ...@@ -137,22 +141,22 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe
@Override @Override
public ApiResult<WxPayMpOrderResult> openVip(VipRecordOpenParam vipRecordOpenParam) throws Exception { public ApiResult<WxPayMpOrderResult> openVip(VipOpenParam vipOpenParam) throws Exception {
JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal(); JwtToken jwtToken = (JwtToken) SecurityUtils.getSubject().getPrincipal();
AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId()); AppUserQueryVo appUserById = appUserService.getAppUserById(jwtToken.getUserId());
// 获取vip价格表 // 获取vip价格表
VipPriceQueryVo vipPriceById = vipPriceService.getVipPriceById(vipRecordOpenParam.getVipLevelId()); VipPriceQueryVo vipPriceById = vipPriceService.getVipPriceById(vipOpenParam.getVipLevelId());
if (vipPriceById == null) { if (vipPriceById == null) {
return ApiResult.fail(ApiCode.FAIL, null); return ApiResult.fail(ApiCode.FAIL, null);
} }
// 应付金额 // 应付金额
BigDecimal money = vipPriceById.getPrice().multiply(new BigDecimal(vipRecordOpenParam.getYears())); BigDecimal money = vipPriceById.getPrice().multiply(new BigDecimal(vipOpenParam.getYears()));
// 设置到期时间 // 设置到期时间
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, vipRecordOpenParam.getYears()); calendar.add(Calendar.YEAR, vipOpenParam.getYears());
Date expiredAt = calendar.getTime(); Date expiredAt = calendar.getTime();
// 商家订单号 // 商家订单号
...@@ -161,14 +165,14 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe ...@@ -161,14 +165,14 @@ public class VipRecordServiceImpl extends BaseServiceImpl<VipRecordMapper, VipRe
VipRecord vipRecord = new VipRecord(); VipRecord vipRecord = new VipRecord();
vipRecord.setMoney(money); vipRecord.setMoney(money);
vipRecord.setExpiredAt(expiredAt); vipRecord.setExpiredAt(expiredAt);
vipRecord.setYears(vipRecordOpenParam.getYears()); vipRecord.setYears(vipOpenParam.getYears());
vipRecord.setPayStatus(0); vipRecord.setPayStatus(0);
// // 判断是否为替他人 // // 判断是否为替他人
if (vipRecordOpenParam.getIsReplace()) { if (vipOpenParam.getIsReplace()) {
AppUser user = appUserService.getOne(new QueryWrapper<AppUser>().lambda() AppUser user = appUserService.getOne(new QueryWrapper<AppUser>().lambda()
.eq(AppUser::getPhone, vipRecordOpenParam.getUserPhone()) .eq(AppUser::getPhone, vipOpenParam.getUserPhone())
.eq(AppUser::getPhoneArea, vipRecordOpenParam.getPhoneArea())); .eq(AppUser::getPhoneArea, vipOpenParam.getPhoneArea()));
//判断接收方是否存在 //判断接收方是否存在
if (user == null) { if (user == null) {
return ApiResult.fail(ApiCode.FAIL, new WxPayMpOrderResult()); return ApiResult.fail(ApiCode.FAIL, new WxPayMpOrderResult());
......
...@@ -12,6 +12,8 @@ spring-boot-plus: ...@@ -12,6 +12,8 @@ spring-boot-plus:
request-log-format: false request-log-format: false
response-log-format: false response-log-format: false
domain: https://c7a30ed052d8.ngrok.io
wx: wx:
# token: sDsdaSDADad # token: sDsdaSDADad
# # 测试号的appid,测试号管理界面有 # # 测试号的appid,测试号管理界面有
......
...@@ -13,6 +13,8 @@ spring-boot-plus: ...@@ -13,6 +13,8 @@ spring-boot-plus:
log-print-type: NONE log-print-type: NONE
request-log-format: false request-log-format: false
response-log-format: false response-log-format: false
domain: https://sienapi.da300.com
spring: spring:
datasource: datasource:
......
...@@ -12,6 +12,8 @@ spring-boot-plus: ...@@ -12,6 +12,8 @@ spring-boot-plus:
log-print-type: LINE log-print-type: LINE
request-log-format: false request-log-format: false
response-log-format: false response-log-format: false
domain: https://sienapi.da300.com
spring: spring:
datasource: datasource:
......
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