From f6b8f3b4e6419e5675bf400e005b8ba115fb1dc1 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Sat, 25 Sep 2021 17:20:13 +0800 Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/xc-mall --- src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java | 22 ++++ src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java | 44 ++++++++ src/test/java/cc/mrbird/febs/AgentTest.java | 24 ++++ src/main/resources/application-prod.yml | 8 + src/main/resources/mapper/modules/MallMemberPaymentMapper.xml | 2 src/main/resources/application-test.yml | 8 + pom.xml | 17 +++ src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 22 ++++ src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java | 10 ++ src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java | 6 + src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java | 50 ++++++++++ src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 2 src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java | 10 ++ src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java | 10 ++ src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java | 47 +++++++++ src/main/resources/application-dev.yml | 8 + src/main/resources/mapper/modules/MallMoneyFlowMapper.xml | 4 17 files changed, 287 insertions(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index 455780a..9e4f7c5 100644 --- a/pom.xml +++ b/pom.xml @@ -267,6 +267,23 @@ <artifactId>mapstruct</artifactId> <version>${mapstruct.version}</version> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-amqp</artifactId> + </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-test</artifactId> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>org.junit.vintage</groupId> + <artifactId>junit-vintage-engine</artifactId> + </exclusion> + </exclusions> + </dependency> </dependencies> <build> diff --git a/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java new file mode 100644 index 0000000..96a523b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/configure/RabbitConfigure.java @@ -0,0 +1,50 @@ +package cc.mrbird.febs.common.configure; + +import cc.mrbird.febs.rabbit.constants.ExchangeConstants; +import cc.mrbird.febs.rabbit.constants.QueueConstants; +import cc.mrbird.febs.rabbit.constants.RouteKeyConstants; +import org.springframework.amqp.core.Binding; +import org.springframework.amqp.core.BindingBuilder; +import org.springframework.amqp.core.DirectExchange; +import org.springframework.amqp.core.Queue; +import org.springframework.amqp.rabbit.connection.ConnectionFactory; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.config.ConfigurableBeanFactory; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * @author wzy + * @date 2021-09-25 + **/ +@Configuration +public class RabbitConfigure { + + @Resource + private ConnectionFactory connectionFactory; + + @Bean + @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) + public RabbitTemplate rabbitTemplate() { + return new RabbitTemplate(connectionFactory); + } + + @Bean + public DirectExchange defaultExchange() { + return new DirectExchange(ExchangeConstants.EXCHANGE_DEFAULT); + } + + @Bean + public Queue defaultQueue() { + return new Queue(QueueConstants.QUEUE_DEFAULT); + } + + @Bean + public Binding defaultBind() { + return BindingBuilder.bind(defaultQueue()).to(defaultExchange()).with(RouteKeyConstants.ROUTE_KEY_DEFAULT); + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java index ef1e0cb..af38471 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java @@ -60,7 +60,7 @@ @ApiOperation(value = "修改用户信息") @PostMapping(value = "/modifyInfo") - public FebsResponse modifyInfo(ModifyMemberInfoDto modifyMemberInfoDto) { + public FebsResponse modifyInfo(@RequestBody ModifyMemberInfoDto modifyMemberInfoDto) { return memberService.modifyMemberInfo(modifyMemberInfoDto); } diff --git a/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java new file mode 100644 index 0000000..86b661e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/AgentInfo.java @@ -0,0 +1,44 @@ +package cc.mrbird.febs.mall.entity; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @author wzy + * @date 2021-09-25 + **/ +@Data +public class AgentInfo { + + /** + * 下单数量要求 1-直推 2-团队 + */ + private Integer orderType; + + /** + * 下单数量 + */ + private Integer orderCnt; + + /** + * 需要上一级的数量 + */ + private Integer lastCnt; + + /** + * 直推收益 + */ + private BigDecimal directIncome; + + /** + * 团队收益 + */ + private BigDecimal TeamIncome; + + /** + * 团队收益 1-指定金额 2-比例 + */ + private BigDecimal teamIncomeType; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 7e0522b..10d2594 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -211,6 +211,15 @@ mallMemberVo.setReferrerName(referMember.getName()); } + if (StrUtil.isNotBlank(mallMember.getTradePassword())) { + mallMemberVo.setHasTradePwd(1); + } + + MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(id); + if (payment != null) { + mallMemberVo.setHasPayment(1); + } + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); mallMemberVo.setBalance(wallet.getBalance()); return new FebsResponse().success().data(mallMemberVo); @@ -329,6 +338,10 @@ Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember loginMember = this.baseMapper.selectById(memberId); + if (StrUtil.isBlank(loginMember.getTradePassword())) { + throw new FebsException("未设置支付密码"); + } + if (!loginMember.getTradePassword().equals(SecureUtil.md5(transferDto.getTradePwd()))) { throw new FebsException("支付密码错误"); } @@ -345,6 +358,10 @@ public void withdrawal(WithdrawalDto withdrawalDto) { Long memberId = LoginUserUtil.getLoginUser().getId(); MallMember mallMember = this.baseMapper.selectById(memberId); + if (StrUtil.isBlank(mallMember.getTradePassword())) { + throw new FebsException("未设置支付密码"); + } + if (!mallMember.getTradePassword().equals(SecureUtil.md5(withdrawalDto.getTradePwd()))) { throw new FebsException("支付密码错误"); } @@ -353,6 +370,11 @@ throw new FebsException("最小提现金额为100"); } + MallMemberPayment payment = mallMemberPaymentMapper.selectByMemberId(memberId); + if (payment == null) { + throw new FebsException("未设置收款方式"); + } + walletService.reduceBalance(withdrawalDto.getAmount(), memberId); String orderNo = MallUtils.getOrderNum("W"); this.addMoneyFlow(memberId, withdrawalDto.getAmount().negate(), MoneyFlowTypeEnum.WITHDRAWAL.getValue(), orderNo, null, null, null, 1); diff --git a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java index 6751a9d..9fa0379 100644 --- a/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java +++ b/src/main/java/cc/mrbird/febs/mall/vo/MallMemberVo.java @@ -54,4 +54,10 @@ public static final int ACCOUNTSTATUS_Y = 1; public static final int ACCOUNTSTATUS_N = 2; + @ApiModelProperty(value = "是否设置收款方式", example = "1是2否") + private Integer hasPayment = 2; + + @ApiModelProperty(value = "是否设置交易密码", example = "1是2否") + private Integer hasTradePwd = 2; + } diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java new file mode 100644 index 0000000..aec9654 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/rabbit/constants/ExchangeConstants.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.rabbit.constants; + +/** + * @author wzy + * @date 2021-09-25 + **/ +public class ExchangeConstants { + + public static final String EXCHANGE_DEFAULT = "exchange_default"; +} diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java new file mode 100644 index 0000000..2656088 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/rabbit/constants/QueueConstants.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.rabbit.constants; + +/** + * @author wzy + * @date 2021-09-25 + **/ +public class QueueConstants { + + public static final String QUEUE_DEFAULT = "queue_default"; +} diff --git a/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java b/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java new file mode 100644 index 0000000..f9d7c1f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/rabbit/constants/RouteKeyConstants.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.rabbit.constants; + +/** + * @author wzy + * @date 2021-09-25 + **/ +public class RouteKeyConstants { + + public static final String ROUTE_KEY_DEFAULT = "route_key_default"; +} diff --git a/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java new file mode 100644 index 0000000..79f201f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/rabbit/consumer/AgentConsumer.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.rabbit.consumer; + +import cc.mrbird.febs.rabbit.constants.QueueConstants; +import com.rabbitmq.client.Channel; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.core.Message; +import org.springframework.amqp.rabbit.annotation.RabbitListener; +import org.springframework.stereotype.Component; + +/** + * @author wzy + * @date 2021-09-25 + **/ +@Slf4j +@Component +public class AgentConsumer { + + @RabbitListener(queues = QueueConstants.QUEUE_DEFAULT) + public void agentReturn(Message message, Channel channel) { + log.info("消费者:{}", new String(message.getBody())); + } +} diff --git a/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java new file mode 100644 index 0000000..8e4f150 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/rabbit/producter/AgentProducer.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.rabbit.producter; + +import cc.mrbird.febs.rabbit.constants.ExchangeConstants; +import cc.mrbird.febs.rabbit.constants.RouteKeyConstants; +import lombok.extern.slf4j.Slf4j; +import org.springframework.amqp.rabbit.connection.CorrelationData; +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.UUID; + +/** + * @author wzy + * @date 2021-09-25 + **/ +@Slf4j +@Component +public class AgentProducer implements RabbitTemplate.ConfirmCallback { + + /** + * 配置中配置的RabbitTemplate的是prototype类型,不能直接注入 + */ + private RabbitTemplate rabbitTemplate; + + /** + * 在构造方法上注入RabbitTemplate + * + * @param + */ + @Autowired + public AgentProducer(RabbitTemplate rabbitTemplate) { + this.rabbitTemplate = rabbitTemplate; + rabbitTemplate.setConfirmCallback(this); + } + + @Override + public void confirm(CorrelationData correlationData, boolean ack, String cause) { + + } + + public void sendOrderReturn(Long id) { + log.info("发送消息:{}", id); + CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); + rabbitTemplate.convertAndSend(ExchangeConstants.EXCHANGE_DEFAULT, RouteKeyConstants.ROUTE_KEY_DEFAULT, id, correlationData); + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index ae941c0..0afbd49 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -40,4 +40,10 @@ # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: 10000 # 连接超时时间(毫秒) - timeout: 5000 \ No newline at end of file + timeout: 5000 + rabbitmq: + host: 120.27.238.55 + port: 5672 + username: ct_rabbit + password: 123456 + publisher-confirm-type: correlated \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 04d0df9..1285e7e 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -46,4 +46,10 @@ # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: 10000 # 连接超时时间(毫秒) - timeout: 5000 \ No newline at end of file + timeout: 5000 + rabbitmq: + host: 120.27.238.55 + port: 5672 + username: ct_rabbit + password: 123456 + publisher-confirm-type: correlated \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml index 394582a..a5d65d6 100644 --- a/src/main/resources/application-test.yml +++ b/src/main/resources/application-test.yml @@ -40,4 +40,10 @@ # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: 10000 # 连接超时时间(毫秒) - timeout: 5000 \ No newline at end of file + timeout: 5000 + rabbitmq: + host: 120.27.238.55 + port: 5672 + username: ct_rabbit + password: 123456 + publisher-confirm-type: correlated \ No newline at end of file diff --git a/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml b/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml index bb80933..18e453f 100644 --- a/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml +++ b/src/main/resources/mapper/modules/MallMemberPaymentMapper.xml @@ -3,7 +3,7 @@ <mapper namespace="cc.mrbird.febs.mall.mapper.MallMemberPaymentMapper"> <select id="selectByMemberId" resultType="cc.mrbird.febs.mall.entity.MallMemberPayment"> - select * from mall_member_payment where member_id=#{id} + select * from mall_member_payment where member_id=#{memberId} </select> <select id="getMallMemberPaymentInfoByMemberId" resultType="cc.mrbird.febs.mall.vo.AdminMallMemberPaymentVo"> diff --git a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml index 69e9ebf..5aa1258 100644 --- a/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml +++ b/src/main/resources/mapper/modules/MallMoneyFlowMapper.xml @@ -14,10 +14,10 @@ from mall_money_flow a inner join mall_member b on a.member_id=b.id <where> - <if test="record.type == 2"> + <if test="record.type == 3"> and a.amount > 0 </if> - <if test="record.type == 3"> + <if test="record.type == 2"> and 0 > a.amount </if> <if test="record.memberId != null"> diff --git a/src/test/java/cc/mrbird/febs/AgentTest.java b/src/test/java/cc/mrbird/febs/AgentTest.java new file mode 100644 index 0000000..9b1f167 --- /dev/null +++ b/src/test/java/cc/mrbird/febs/AgentTest.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs; + +import cc.mrbird.febs.rabbit.producter.AgentProducer; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +/** + * @author wzy + * @date 2021-09-25 + **/ +@Slf4j +@SpringBootTest +public class AgentTest { + + @Autowired + private AgentProducer agentProducer; + + @Test + public void agentTest() { + agentProducer.sendOrderReturn(1L); + } +} -- Gitblit v1.9.1