Compare commits
4 Commits
a3241b83ff
...
9cd8da3803
Author | SHA1 | Date |
---|---|---|
|
9cd8da3803 | |
|
dc3a45b274 | |
|
5c3ea94803 | |
|
872cf65750 |
|
@ -24,6 +24,17 @@
|
|||
<version>0.4.7</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
|
||||
<!-- https://mvnrepository.com/artifact/com.alipay.sdk/alipay-sdk-java -->
|
||||
|
||||
<!-- <dependency>-->
|
||||
<!-- <groupId>com.alipay.sdk</groupId>-->
|
||||
<!-- <artifactId>alipay-sdk-java</artifactId>-->
|
||||
<!-- <version>4.40.30.ALL</version>-->
|
||||
<!-- </dependency>-->
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>com.alipay.sdk</groupId>
|
||||
<artifactId>alipay-easysdk</artifactId>
|
||||
|
|
|
@ -111,7 +111,7 @@ public class MemberController {
|
|||
return AjaxResult.warn("用户不存在");
|
||||
}
|
||||
|
||||
Member member = memberService.rechargePoints(userId, amount * 10);
|
||||
Member member = memberService.rechargePoints(userId, amount * 100);
|
||||
|
||||
// 返回充值积分
|
||||
if (!Optional.ofNullable(member).isPresent()) {
|
||||
|
|
|
@ -17,7 +17,6 @@ import com.mcwl.memberCenter.service.MemberLevelService;
|
|||
import com.mcwl.memberCenter.service.MemberService;
|
||||
import com.mcwl.pay.domain.OrderTrade;
|
||||
import com.mcwl.pay.domain.OrderTradeDto;
|
||||
import com.mcwl.resource.domain.MallProduct;
|
||||
import com.mcwl.resource.service.MallProductService;
|
||||
import com.mcwl.system.service.ISysUserService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -63,38 +62,38 @@ public class AliPayIntegration {
|
|||
* @return 二维码url
|
||||
* @throws Exception
|
||||
*/
|
||||
public String orderPay(OrderTradeDto orderTradeDto) throws Exception {
|
||||
Integer productId = orderTradeDto.getProductId();
|
||||
if (!Optional.ofNullable(productId).isPresent()) {
|
||||
throw new ServiceException("mallProductId不能为空");
|
||||
}
|
||||
|
||||
MallProduct mallProduct = mallProductService.getById(productId);
|
||||
if (!Optional.ofNullable(mallProduct).isPresent()) {
|
||||
throw new ServiceException("mallProduct不存在");
|
||||
}
|
||||
|
||||
// 设置orderTrade信息
|
||||
OrderTrade tradeEntity = new OrderTrade();
|
||||
BeanUtil.copyProperties(orderTradeDto, tradeEntity);
|
||||
tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
|
||||
tradeEntity.setUserId(SecurityUtils.getUserId());
|
||||
tradeEntity.setUserName(SecurityUtils.getUsername());
|
||||
tradeEntity.setProductName(mallProduct.getProductName());
|
||||
|
||||
//调用支付宝的接口
|
||||
AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
.preCreate(mallProduct.getProductName(),
|
||||
tradeEntity.getCode() + "_product",
|
||||
orderTradeDto.getPaymentAmount().toString());
|
||||
// 缓存到redis
|
||||
redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES);
|
||||
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999");
|
||||
//参照官方文档响应示例,解析返回结果
|
||||
String httpBodyStr = payResponse.getHttpBody();
|
||||
JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||
return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||
}
|
||||
// public String orderPay(OrderTradeDto orderTradeDto) throws Exception {
|
||||
// Integer productId = orderTradeDto.getProductId();
|
||||
// if (!Optional.ofNullable(productId).isPresent()) {
|
||||
// throw new ServiceException("mallProductId不能为空");
|
||||
// }
|
||||
//
|
||||
// MallProduct mallProduct = mallProductService.getById(productId);
|
||||
// if (!Optional.ofNullable(mallProduct).isPresent()) {
|
||||
// throw new ServiceException("mallProduct不存在");
|
||||
// }
|
||||
//
|
||||
// // 设置orderTrade信息
|
||||
// OrderTrade tradeEntity = new OrderTrade();
|
||||
// BeanUtil.copyProperties(orderTradeDto, tradeEntity);
|
||||
// tradeEntity.setCode(UUID.randomUUID().toString(true).substring(0, 30));
|
||||
// tradeEntity.setUserId(SecurityUtils.getUserId());
|
||||
// tradeEntity.setUserName(SecurityUtils.getUsername());
|
||||
// tradeEntity.setProductName(mallProduct.getProductName());
|
||||
//
|
||||
// //调用支付宝的接口
|
||||
// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace()
|
||||
// .preCreate(mallProduct.getProductName(),
|
||||
// tradeEntity.getCode() + "_product",
|
||||
// orderTradeDto.getPaymentAmount().toString());
|
||||
// // 缓存到redis
|
||||
// redisCache.setCacheObject(tradeEntity.getCode() + "_product", JSONUtil.toJsonStr(tradeEntity), 3, TimeUnit.MINUTES);
|
||||
//// AlipayTradePrecreateResponse payResponse = Factory.Payment.FaceToFace().preCreate("订单主题:Mac笔记本", "LS123qwe123", "19999");
|
||||
// //参照官方文档响应示例,解析返回结果
|
||||
// String httpBodyStr = payResponse.getHttpBody();
|
||||
// JSONObject jsonObject = JSONObject.parseObject(httpBodyStr);
|
||||
// return jsonObject.getJSONObject("alipay_trade_precreate_response").get("qr_code").toString();
|
||||
// }
|
||||
|
||||
|
||||
/**
|
||||
|
|
|
@ -118,9 +118,9 @@ public class OrderTradeController extends BaseController {
|
|||
|
||||
String type = orderTradeDto.getType();
|
||||
|
||||
if ("member".equals(type)) {
|
||||
if ("member".equalsIgnoreCase(type)) {
|
||||
qrUrl = aliPayIntegration.memberPay(orderTradeDto);
|
||||
} else if ("points".equals(type)) {
|
||||
} else if ("points".equalsIgnoreCase(type)) {
|
||||
qrUrl = aliPayIntegration.pointsPay(orderTradeDto.getPaymentAmount());
|
||||
}
|
||||
|
||||
|
|
|
@ -183,5 +183,5 @@ mall:
|
|||
appId: 9021000135682614
|
||||
privateKey: MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCQxmQGcaiKjOhayWi+zNTvpp8B5YT8jFFkjLzrD+W+T2Dwf2GfFR4p95zsCJxYeoLWdghMPA6/GMFrLbuVFpaEjuTm4icqA9N8n5d3W0j7gh+wMjZoqyJclAIeb09ut7rY6mWzilA9kWmZnUG7MOWIU70RVRYrfJectCFw/odM9lG4XIVe13X2h+1ecTQyQzLWmnvKFCfo7dQjE7fIYiWfud1ZGUneNs3u73pNWMB6ThGTTCbs0atcgM3fYOg3q7fTxIu9VcaUCJiJ/kNbL9sVEyOrSyx2f2o6w06zdEaOiQFsuDeS8QPYGMg7pf42wAfqCO6hqxQiQT5vp1hvB0o1AgMBAAECggEAIhaEYLwMSispXo8D2cES9iaOU/z91hUX6Qv2Q4anuqqoEZh8nN91Db6etTjFz1NxURvTklelxTsH97t56n26DRY0MWTYgd0Kw9Iz8MeOpKGb4nnAM97vpUq4QQBGfLRIC2ENdzu+7vA5JBFR88hsky/cWaNmJ/EbJauIIDneE7GigMR2HF7kfzdZzOBN4ZEh/ef5NKeCnEieRJJhWRgrgNXVZ44Tqi67AM7ey9pyUtBe7fgzxXtrWXBN9yKaVxxSXm3KJXFQqA6mcilFVZaxMNlAySc4MPTW8lq0ozOCOCunoeIphNz/OVIxGu3/voXFXlBfOKqOkYMVZxMY6OrvtQKBgQD0nIlXK4VW72VaGpz9kxQkRNzJV/yqaqet1GOSlPM2l0RCRFOVVdnvbQdHGPe6+HxHL1dh5MP8T/aHoP+4UXkkQCc8moS2FZxJvFH2QTSZBcSSdGL7GMpROqs38J+XlJzrhNcB20lrW6D7yMeQa4YEcXwdbD8Er/YaIqODBWYYewKBgQCXg+16RLDArciwwhf0TBWZPor2iYFDdwU5UPu7CKOhU1MLfQhG85gGpXHjB6G8cMUi/ezxh/FEl+sWOZegpkPwL5/BQS9tNYWIaC4kipPF/a5Up4DMYUHVAuuPwNqqXpvgU+rGjCns0wtPRnjrkghLkc3oTSID7o7pzUwIk2whDwKBgAys3+EIfExY82OL5X6uVGjcuKQmTw11oWK8krxRw5iclgjpCXu/ix+BAtOIU634mlgF9/02oYE9k4TLrvSaJDDgsifNyfq1e/fGLmkYT+VuCxWbulVQn4s+AwlPCrYMGWWK6KlL9638fYcOjGjLaZJpXwkXRtyzUYlhKh/r87JpAoGBAIavRp2mi/xrPvgpQQPv0k9L8llfOCHRnjoqC+thrZsNp8eRmJcBmMVnskofEZ2iHQuS71pw/n58EQTLo0ayJbhPjVJL8K3CovXzrfjbmqqoa5xi3bJQTiXdF6rMw1QpD6Uk05E1LVuQ6v/IZFr7kBYlAQWb8z3NhQq+bPU+nyLvAoGAGpBbSM8gPzdWQqkHoos0icu3cj0GhN3MU7+1Eb/rsXyh/lk5wtZTEnHjwhdUOUtwVNjvrv7CzA7unhOoaM6YcE/Zpd4zt8pjqH1Mhds7UHf4Xg+A+J4G6meYnhSwfBpOub02ncsqfBlXE0qhFv6AvcMewWndyLb8EYaUUXTYkG0=
|
||||
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApHkjwHnoUnZuqbas+ZputyWIfU2WKBFKd+wFwlCZytpQhVA16CGAMCGpgjxUPpqbmOtPy74y0wxmDHB9IaYOVsVmi2SAl1IqfxwUSIllbdvbjBvZFAIQlPa8U/zHJPgdGNHDt/Bwqp5uB0OkcGLB9PYyAXBEKiu6zdTsiZloUrPwgnBRJ0iNHYiWo/oOYD9KfopLA+D1nQjqq8m3ShZe46ecMo6ZCHtQI/HtgL/EGga5KY2zOUi0Wwviu8w79RjjzfdsDkzu5VnBdaSru4awDyiF9nAF+uPgA4ZOdLKkpoEANwuIorDW8tT69Gwh+mYx9sDJMxJf7XOekdPbymomiwIDAQAB
|
||||
notifyUrl: https://702bc39c.r27.cpolar.top/web/pay/notify
|
||||
notifyUrl: https://253d7236.r27.cpolar.top/web/pay/notify
|
||||
gatewayUrl: https://openapi-sandbox.dl.alipaydev.com/gateway.do
|
||||
|
|
|
@ -115,21 +115,6 @@ public class SysUser extends BaseEntity
|
|||
*/
|
||||
private Double freePoints;
|
||||
|
||||
public Long getInviterUserId() {
|
||||
return inviterUserId;
|
||||
}
|
||||
|
||||
public void setInviterUserId(Long inviterUserId) {
|
||||
this.inviterUserId = inviterUserId;
|
||||
}
|
||||
|
||||
public Double getFreePoints() {
|
||||
return freePoints;
|
||||
}
|
||||
|
||||
public void setFreePoints(Double freePoints) {
|
||||
this.freePoints = freePoints;
|
||||
}
|
||||
|
||||
public SysUser()
|
||||
{
|
||||
|
@ -363,6 +348,22 @@ public class SysUser extends BaseEntity
|
|||
this.brief = brief;
|
||||
}
|
||||
|
||||
public Long getInviterUserId() {
|
||||
return inviterUserId;
|
||||
}
|
||||
|
||||
public void setInviterUserId(Long inviterUserId) {
|
||||
this.inviterUserId = inviterUserId;
|
||||
}
|
||||
|
||||
public Double getFreePoints() {
|
||||
return freePoints;
|
||||
}
|
||||
|
||||
public void setFreePoints(Double freePoints) {
|
||||
this.freePoints = freePoints;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "SysUser{" +
|
||||
|
|
|
@ -7,20 +7,14 @@ import com.mcwl.common.core.domain.AjaxResult;
|
|||
import com.mcwl.common.core.domain.entity.SysUser;
|
||||
import com.mcwl.common.exception.ServiceException;
|
||||
import com.mcwl.common.utils.SecurityUtils;
|
||||
import com.mcwl.memberCenter.domain.MemberBenefit;
|
||||
import com.mcwl.memberCenter.domain.MemberLevel;
|
||||
import com.mcwl.memberCenter.domain.Member;
|
||||
import com.mcwl.memberCenter.domain.Promotion;
|
||||
import com.mcwl.memberCenter.domain.*;
|
||||
import com.mcwl.memberCenter.enums.MemberBenefitTypeEnum;
|
||||
import com.mcwl.memberCenter.enums.MemberEnum;
|
||||
import com.mcwl.memberCenter.enums.MemberPeriodicEnum;
|
||||
import com.mcwl.memberCenter.enums.PromotionEnum;
|
||||
import com.mcwl.memberCenter.mapper.MemberMapper;
|
||||
import com.mcwl.memberCenter.mapper.PromotionMapper;
|
||||
import com.mcwl.memberCenter.service.MemberBenefitService;
|
||||
import com.mcwl.memberCenter.service.MemberLevelService;
|
||||
import com.mcwl.memberCenter.service.MemberService;
|
||||
import com.mcwl.memberCenter.service.PromotionService;
|
||||
import com.mcwl.memberCenter.service.*;
|
||||
import com.mcwl.system.service.ISysUserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
@ -41,6 +35,8 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||
|
||||
private final PromotionMapper promotionMapper;
|
||||
|
||||
private final MemberConsumeService memberConsumeService;
|
||||
|
||||
@Override
|
||||
public Member createUserMember(Long userId, Long memberLevelId, String paymentMethod, Long promotionId) {
|
||||
if (userId == null) {
|
||||
|
@ -195,16 +191,19 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||
throw new ServiceException("积分不足");
|
||||
}
|
||||
|
||||
// 保存消费记录
|
||||
saveMemberConsume(consumePoints, userId, points);
|
||||
|
||||
// 先扣除会员的积分
|
||||
if (member != null) {
|
||||
double mp = member.getPoints() - consumePoints;
|
||||
if (mp >= 0) {
|
||||
member.setPoints(mp);
|
||||
consumePoints = 0.0;
|
||||
} else {
|
||||
member.setPoints(0D);
|
||||
consumePoints = consumePoints - memberPoints;
|
||||
}
|
||||
member.setPoints(mp);
|
||||
baseMapper.updateById(member);
|
||||
}
|
||||
// consumePoints有剩余再扣除用户的积分
|
||||
|
@ -215,6 +214,18 @@ public class MemberServiceImpl extends ServiceImpl<MemberMapper, Member> impleme
|
|||
|
||||
}
|
||||
|
||||
private void saveMemberConsume(Double consumePoints, Long userId, double points) {
|
||||
MemberConsume memberConsume = new MemberConsume();
|
||||
memberConsume.setUserId(userId);
|
||||
memberConsume.setConsumePoints(consumePoints);
|
||||
memberConsume.setRemainingPoints(points - consumePoints);
|
||||
memberConsume.setConsumeTime(new Date());
|
||||
memberConsume.setCreateBy(SecurityUtils.getUsername());
|
||||
memberConsume.setUpdateBy(SecurityUtils.getUsername());
|
||||
memberConsume.setUpdateTime(new Date());
|
||||
memberConsumeService.save(memberConsume);
|
||||
}
|
||||
|
||||
private List<Member> getUseUserMember(Long userId) {
|
||||
// startDate 小于等于当前时间、endDate 大于等于当前时间
|
||||
// subscriptionStatus 不为 "过期" 或 "待支付"
|
||||
|
|
|
@ -53,6 +53,12 @@
|
|||
<groupId>com.mcwl</groupId>
|
||||
<artifactId>mcwl-system</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.mcwl</groupId>
|
||||
<artifactId>mcwl-resource</artifactId>
|
||||
<version>3.8.8</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</project>
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
package com.mcwl.pay.domain.enums;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public enum OrderTypeEnum {
|
||||
|
||||
POINTS("points"),
|
||||
MEMBER("member");
|
||||
|
||||
private final String name;
|
||||
|
||||
}
|
|
@ -15,9 +15,9 @@ import com.mcwl.myInvitation.domain.Consume;
|
|||
import com.mcwl.myInvitation.service.CommissionService;
|
||||
import com.mcwl.myInvitation.service.ConsumeService;
|
||||
import com.mcwl.pay.domain.OrderTrade;
|
||||
import com.mcwl.pay.domain.enums.OrderTypeEnum;
|
||||
import com.mcwl.pay.mapper.OrderTradeMapper;
|
||||
import com.mcwl.pay.service.OrderTradeService;
|
||||
import com.mcwl.resource.domain.enums.OrderTypeEnum;
|
||||
import com.mcwl.system.service.ISysUserService;
|
||||
import com.mcwl.system.service.impl.SysUserServiceImpl;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -25,10 +25,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @Author:ChenYan
|
||||
|
@ -148,11 +145,15 @@ public class OrderTradeServiceImpl extends ServiceImpl<OrderTradeMapper, OrderTr
|
|||
user.setFreePoints(user.getFreePoints() + points);
|
||||
sysUserService.updateUser(user);
|
||||
|
||||
// 添加充值记录
|
||||
RechargeRecord rechargeRecord = new RechargeRecord();
|
||||
rechargeRecord.setUserId(userId);
|
||||
rechargeRecord.setCode(orderTrade.getCode());
|
||||
rechargeRecord.setAmount(Double.parseDouble(amount));
|
||||
rechargeRecord.setPoints(points);
|
||||
rechargeRecord.setCreateBy(user.getUserName());
|
||||
rechargeRecord.setUpdateBy(user.getUserName());
|
||||
rechargeRecord.setUpdateTime(new Date());
|
||||
rechargeRecordService.save(rechargeRecord);
|
||||
|
||||
|
||||
|
|
|
@ -9,7 +9,10 @@ package com.mcwl.resource.domain.enums;
|
|||
* @Date:2025/1/6 19:51
|
||||
*/
|
||||
public enum OrderTypeEnum {
|
||||
TIME("time"), NUM("num");
|
||||
TIME("time"),
|
||||
NUM("num"),
|
||||
POINTS("points"),
|
||||
MEMBER("member");
|
||||
|
||||
private final String name;
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectUserVo">
|
||||
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
|
||||
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.inviter_user_id, u.free_points,
|
||||
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
|
||||
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
|
||||
from sys_user u
|
||||
|
|
Loading…
Reference in New Issue