| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 |
- package com.txz.cif.dubbo.impl;
- import cn.hutool.core.bean.BeanUtil;
- import cn.hutool.core.collection.CollUtil;
- import cn.hutool.core.date.DateUtil;
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSONObject;
- import com.txz.cif.configurer.LocalUtil;
- import com.txz.cif.core.ServiceException;
- import com.txz.cif.dto.AccountDTO;
- import com.txz.cif.dto.Result;
- import com.txz.cif.dubbo.client.OperatingConfigDubboServiceClient;
- import com.txz.cif.enums.BizTypeEnum;
- import com.txz.cif.model.Account;
- import com.txz.cif.model.User;
- import com.txz.cif.param.*;
- import com.txz.cif.service.*;
- import com.txz.cif.web.para.RedEnvelopeParam;
- import com.txz.operating.dto.ConfigDTO;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.dubbo.config.annotation.DubboService;
- import javax.annotation.Resource;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.util.ArrayList;
- import java.util.List;
- @Slf4j
- @DubboService
- public class AccountDubboServiceImpl implements AccountDubboService {
-
- @Resource
- private FlowService flowService;
-
- @Resource
- private AccountService accountService;
-
- @Resource
- private UserService userService;
-
- @Resource
- private RedEnvelopeService redEnvelopeService;
-
- @Resource
- private OperatingConfigDubboServiceClient operatingConfigDubboServiceClient;
-
-
- // @Override
- // public Result freeze(FreezdParam param) {
- // return flowService.freeze(param);
- // }
- //
- // @Override
- // public Result unFreeze(Long freezdId) {
- // return flowService.unFreeze(freezdId);
- // }
-
- @Override
- public Result createAccount(Long userId) {
- User user = userService.findById(userId);
-
- Account qb = Account.builder().userId(userId).createTime(DateUtil.date())
- .aliases("202").freezeAmount(BigDecimal.ZERO).balance(BigDecimal.ZERO)
- .type(1).beforeDayBalance(BigDecimal.ZERO).beforeDayTime(DateUtil.date())
- .direction("C").bizType(1).subjectType(2).remark("个人钱包账户").name(user.getName())
- .beforeDayInitBalance(BigDecimal.ZERO).version("1.0.0").totalInamount(BigDecimal.ZERO)
- .totalOutAmount(BigDecimal.ZERO)
- .build();
- Account yl = Account.builder().userId(userId).createTime(DateUtil.date())
- .aliases("202").freezeAmount(BigDecimal.ZERO).balance(BigDecimal.ZERO)
- .type(1).beforeDayBalance(BigDecimal.ZERO).beforeDayTime(DateUtil.date())
- .direction("C").bizType(2).subjectType(2).remark("个人收益账户").name(user.getName())
- .beforeDayInitBalance(BigDecimal.ZERO).version("1.0.0").totalInamount(BigDecimal.ZERO)
- .totalOutAmount(BigDecimal.ZERO)
- .build();
- List<Account> add = new ArrayList<>();
- add.add(qb);
- add.add(yl);
- accountService.save(add);
- return Result.genSuccessResult();
- }
-
- @Override
- public Result getWalletAccount(Long userId) {
- Account account = accountService.getAccount(userId, 1);
- if (account == null) {
- return Result.genFailResult(LocalUtil.get("not.found"));
- }
- AccountDTO dto = BeanUtil.toBean(account, AccountDTO.class);
- return Result.genSuccessResult(dto);
- }
-
- @Override
- public Result openGroup(OpenParam param) {
- if (param == null){
- return Result.genFailResult(LocalUtil.get("object.is.empty"));
- }
- if (param.getUserId() == null){
- return Result.genFailResult(LocalUtil.get("userid.is.empty"));
- }
- if (param.getAmount() == null){
- return Result.genFailResult(LocalUtil.get("amount.is.empty"));
- }
- // 支付
- // BizTypeEnum 类型 1001充值 2001提现 3001开团支付 3002参团支付 4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
- Result result = flowService.pay(PayParam.builder().bizNo(param.getBizNo())
- .amount(param.getAmount())
- .userId(param.getUserId())
- .bizId(param.getBizId())
- .transTime(param.getTransTime())
- .bizType(BizTypeEnum.OPEN_GROUP_PAY.getKey())
- .build());
- return result;
- }
-
- @Override
- public Result joinGroup(JoinParam param) {
- if (param == null){
- return Result.genFailResult(LocalUtil.get("object.is.empty"));
- }
- if (param.getUserId() == null){
- return Result.genFailResult(LocalUtil.get("userid.is.empty"));
- }
- if (param.getAmount() == null){
- return Result.genFailResult(LocalUtil.get("amount.is.empty"));
- }
- // 支付
- // 类型 1001充值 2001提现 3001开团支付 3002参团支付 4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
- Result result = flowService.pay(PayParam.builder().bizNo(param.getBizNo())
- .amount(param.getAmount())
- .bizId(param.getBizId())
- .userId(param.getUserId())
- .transTime(param.getTransTime())
- .bizType(BizTypeEnum.JOIN_GROUP_PAY.getKey())
- .build());
- return result;
- }
-
- @Override
- public Result cancelGroup(CancelParam param) {
- // 类型 1001充值 2001提现 3001开团支付 3002参团支付 4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
- for (Long userId : param.getUserIds()) {
- Result result = flowService.refund(RefundParam.builder()
- .transTime(param.getTransTime())
- .bizType(BizTypeEnum.FAIL_GROUP_REFUND.getKey()).bizNo(param.getBizNo())
- .bizId(param.getBizId())
- .amount(param.getAmount())
- .userId(userId)
- .build());
- if (!StrUtil.equals("200", result.getCode())) {
- throw new ServiceException();
- }
- }
- return Result.genSuccessResult();
- }
-
- @Override
- public Result accomplishGroup(AccomplishParam param) {
- log.info("accomplishGroup param :"+ JSONObject.toJSONString(param));
- // 类型 1001充值 2001提现 3001开团支付 3002参团支付 4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
- for (OrderParam orderParam : param.getUserIds()) {
- Result result = flowService.refund(RefundParam.builder()
- .transTime(param.getTransTime())
- .bizType(BizTypeEnum.SUCCESS_GROUP_REFUND.getKey()).bizNo(param.getBizNo())
- .bizId(param.getBizId())
- .amount(param.getAmount())
- .userId(orderParam.getUserId())
- .build());
- if (!StrUtil.equals("200", result.getCode())) {
- throw new ServiceException();
- }
- }
- if (param.getOpenGroupUserId() != null) {
- log.info("param.getOpenGroupUserId() :"+ param.getOpenGroupUserId());
- // 计算开团红包金额
- com.txz.operating.result.Result<ConfigDTO> openRedEnvelopeRate = operatingConfigDubboServiceClient.getConfigByCode("open_red_envelope_rate");
- log.info("operatingConfigDubboServiceClient.getConfigByCode openRedEnvelopeRate:"+ JSONObject.toJSONString(openRedEnvelopeRate));
- String rate = openRedEnvelopeRate.getData().getValueInfo();
- BigDecimal amount = param.getAmount().multiply(new BigDecimal(rate)).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN);
- // 开团红包
- Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
- .amount(amount).bizType(BizTypeEnum.OPEN_GROUP_RED_ENVELOPE.getKey()).orderNo(param.getBizNo())
- .userIds(CollUtil.newArrayList(OrderParam.builder().userId(param.getOpenGroupUserId()).orderNo(param.getOpenOrderNo()).build()))
- .transTime(param.getTransTime())
- .build());
- }
- // 计算参团红包金额
- for (int i = param.getUserIds().size() -1; i >=0 ; i--) {
- OrderParam p = param.getUserIds().get(i);
- if (p.getUserId().compareTo(param.getOpenGroupUserId()) == 0){
- param.getUserIds().remove(i);
- }
- }
- if (param.getWinnerUserId().compareTo(param.getOpenGroupUserId()) != 0){
- param.getUserIds().add(OrderParam.builder().orderNo(param.getWinnerOrderNo()).userId(param.getWinnerUserId()).build());
- }
- com.txz.operating.result.Result<ConfigDTO> openRedEnvelopeRate = operatingConfigDubboServiceClient.getConfigByCode("join_red_envelope_rate");
- log.info("operatingConfigDubboServiceClient.getConfigByCode2 openRedEnvelopeRate:"+ JSONObject.toJSONString(openRedEnvelopeRate));
- String rate = openRedEnvelopeRate.getData().getValueInfo();
- BigDecimal amount = param.getAmount().multiply(new BigDecimal(rate)).divide(BigDecimal.valueOf(100), 2, RoundingMode.DOWN);
- // 参团红包
- if (CollUtil.isNotEmpty(param.getUserIds())){
- Result result1 = redEnvelopeService.addRedEnvelope(RedEnvelopeParam.builder()
- .amount(amount).bizType(BizTypeEnum.JOIN_GROUP_RED_ENVELOPE.getKey()).orderNo(param.getBizNo())
- .userIds(param.getUserIds())
- .transTime(param.getTransTime())
- .build());
- }
- log.info("accomplishGroup end param :"+ JSONObject.toJSONString(param));
- return Result.genSuccessResult();
- }
-
-
- /**
- * 类型 1001充值 2001提现 3001开团支付 3002参团支付 4001未成团退款 4002成团退款 5001开团红包收益 5002参团红包收益 5003签到红包收益 5004下级红包佣金 5005下下级红包佣金
- *
- * @param param
- *
- * @return
- */
- @Override
- public Result addRedEnvelope(SignRedEnvelopeParam param) {
- RedEnvelopeParam p = BeanUtil.toBean(param, RedEnvelopeParam.class);
- p.setUserIds(CollUtil.newArrayList(OrderParam.builder().userId(param.getUserId()).orderNo(param.getOrderNo()).build()));
- if (param.getBizType() == BizTypeEnum.SIGN_RED_ENVELOPE || param.getBizType() == BizTypeEnum.PROMOTION_COMMISSION) {
- p.setBizType(param.getBizType().getKey());
- } else {
- return Result.genFailResult(LocalUtil.get("unsupported.type"));
- }
- return redEnvelopeService.addRedEnvelope(p);
- }
-
-
- @Override
- public Result recharge(RechargeParam param) {
- if (param == null) {
- return Result.genFailResult(LocalUtil.get("parameter.is.empty"));
- }
- if (param.getUserId() == null) {
- return Result.genFailResult(LocalUtil.get("parameter.account.id.is.empty"));
- }
- if (param.getAmount() == null) {
- return Result.genFailResult(LocalUtil.get("parameter.amount.is.empty"));
- }
-
- param.setBizType(BizTypeEnum.RECHARGE.getKey());
- if (param.getTransTime() == null) {
- param.setTransTime(DateUtil.date());
- }
- Result result = flowService.recharge(param);
- return result;
- }
-
- @Override
- public Result withdraw(WithdrawParam param) {
- param.setBizType(BizTypeEnum.WITHDRAW.getKey());
- return flowService.withdraw(param);
- }
- }
|