|  | @@ -25,6 +25,8 @@ import com.zanxiang.game.back.serve.service.IGameTencentBackLogService;
 | 
	
		
			
				|  |  |  import com.zanxiang.game.back.serve.service.IGameTencentOrderService;
 | 
	
		
			
				|  |  |  import com.zanxiang.game.back.serve.service.IGameTencentUserService;
 | 
	
		
			
				|  |  |  import com.zanxiang.game.back.serve.utils.BackPolicyUtil;
 | 
	
		
			
				|  |  | +import com.zanxiang.module.util.JsonUtil;
 | 
	
		
			
				|  |  | +import com.zanxiang.module.util.NumberUtil;
 | 
	
		
			
				|  |  |  import com.zanxiang.module.util.bean.BeanUtil;
 | 
	
		
			
				|  |  |  import com.zanxiang.module.util.exception.BaseException;
 | 
	
		
			
				|  |  |  import com.zanxiang.module.util.pojo.ResultVO;
 | 
	
	
		
			
				|  | @@ -35,6 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  import org.springframework.transaction.annotation.Transactional;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import java.math.BigDecimal;
 | 
	
		
			
				|  |  |  import java.time.LocalDateTime;
 | 
	
		
			
				|  |  |  import java.util.HashMap;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
	
		
			
				|  | @@ -73,6 +76,7 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public boolean tencentOrderBack(TencentOrderDTO dto) {
 | 
	
		
			
				|  |  | +        log.error("回传腾讯订单开始,dto:{}", JsonUtil.toString(dto));
 | 
	
		
			
				|  |  |          //订单保存
 | 
	
		
			
				|  |  |          GameTencentOrder gameTencentOrder = GameTencentOrder.builder()
 | 
	
		
			
				|  |  |                  .adAccountId(dto.getAdAccountId())
 | 
	
	
		
			
				|  | @@ -135,16 +139,22 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
 | 
	
		
			
				|  |  |          } else {
 | 
	
		
			
				|  |  |              GameBackPolicy gameBackPolicy = gameBackPolicyService.getById(dto.getBackPolicyId());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            doBack = BackPolicyUtil.backOrder(gameBackPolicy, dto.getRechargeMoney(), backUnit -> Long.valueOf(
 | 
	
		
			
				|  |  | -                    gameTencentOrderService.list(new LambdaQueryWrapper<GameTencentOrder>()
 | 
	
		
			
				|  |  | +            doBack = BackPolicyUtil.backOrder(gameBackPolicy, dto.getRechargeMoney(),
 | 
	
		
			
				|  |  | +                    () -> gameTencentOrderService.count(new LambdaQueryWrapper<GameTencentOrder>()
 | 
	
		
			
				|  |  | +                            .eq(GameTencentOrder::getGameId, dto.getGameId())
 | 
	
		
			
				|  |  | +                            .eq(GameTencentOrder::getWechatAppId, dto.getWechatAppId())
 | 
	
		
			
				|  |  | +                            .eq(GameTencentOrder::getAdAccountId, dto.getAdAccountId())
 | 
	
		
			
				|  |  | +                            .eq(GameTencentOrder::getOrderStatus, 2)
 | 
	
		
			
				|  |  | +                            .eq(GameTencentOrder::getWechatOpenid, dto.getWechatOpenid())
 | 
	
		
			
				|  |  | +                            .last("limit 1")
 | 
	
		
			
				|  |  | +                    ) < 1, backUnit -> Long.valueOf(gameTencentOrderService.count(new LambdaQueryWrapper<GameTencentOrder>()
 | 
	
		
			
				|  |  |                              .eq(GameTencentOrder::getGameId, dto.getGameId())
 | 
	
		
			
				|  |  |                              .eq(GameTencentOrder::getWechatAppId, dto.getWechatAppId())
 | 
	
		
			
				|  |  |                              .eq(GameTencentOrder::getAdAccountId, dto.getAdAccountId())
 | 
	
		
			
				|  |  |                              .eq(GameTencentOrder::getOrderStatus, 2)
 | 
	
		
			
				|  |  |                              .last("limit " + backUnit)
 | 
	
		
			
				|  |  |                              .orderByDesc(GameTencentOrder::getCreateTime)
 | 
	
		
			
				|  |  | -                    ).stream().filter(order -> order.getIsBack().equals(BackStatusEnum.SUCCESS.getBackStatus())).count()
 | 
	
		
			
				|  |  | -            ).intValue());
 | 
	
		
			
				|  |  | +                    )).intValue());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          if (dto.getOrderStatus().equals(COMPLETE_ORDER) || doBack) {
 | 
	
		
			
				|  |  |              ResultVO<Boolean> result = userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
 | 
	
	
		
			
				|  | @@ -172,6 +182,7 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public boolean tencentUserBack(TencentUserDTO dto) {
 | 
	
		
			
				|  |  | +        log.error("回传腾讯用户开始,dto:{}", JsonUtil.toString(dto));
 | 
	
		
			
				|  |  |          GameTencentUser gameTencentUser = gameTencentUserService.getOne(new LambdaQueryWrapper<GameTencentUser>()
 | 
	
		
			
				|  |  |                  .eq(GameTencentUser::getWechatOpenid, dto.getWechatOpenid())
 | 
	
		
			
				|  |  |                  .eq(GameTencentUser::getGameId, dto.getGameId())
 | 
	
	
		
			
				|  | @@ -223,68 +234,102 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
 | 
	
		
			
				|  |  |                  .userActionSetId(dto.getUserActionSetId())
 | 
	
		
			
				|  |  |                  .actionParam(actionParam.toString())
 | 
	
		
			
				|  |  |                  .build();
 | 
	
		
			
				|  |  | -            ResultVO<Boolean> result = userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
 | 
	
		
			
				|  |  | -            if (result.getCode() == HttpStatus.HTTP_OK) {
 | 
	
		
			
				|  |  | -                gameTencentUser.setIsBack(BackStatusEnum.SUCCESS.getBackStatus());
 | 
	
		
			
				|  |  | -                gameTencentUser.setBackLog("回传成功");
 | 
	
		
			
				|  |  | -                gameTencentUserService.updateById(gameTencentUser);
 | 
	
		
			
				|  |  | +        ResultVO<Boolean> result = userActionSetRpc.reportByAppId(dataReportOfAppIdRpcDTO);
 | 
	
		
			
				|  |  | +        if (result.getCode() == HttpStatus.HTTP_OK) {
 | 
	
		
			
				|  |  | +            gameTencentUser.setIsBack(BackStatusEnum.SUCCESS.getBackStatus());
 | 
	
		
			
				|  |  | +            gameTencentUser.setBackLog("回传成功");
 | 
	
		
			
				|  |  | +            gameTencentUserService.updateById(gameTencentUser);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                gameTencentBackLog.setBackLog("回传成功");
 | 
	
		
			
				|  |  | -                gameTencentBackLogService.save(gameTencentBackLog);
 | 
	
		
			
				|  |  | -            } else {
 | 
	
		
			
				|  |  | -                log.error("回传腾讯用户失败,失败原因:{}", result.getMsg());
 | 
	
		
			
				|  |  | -                gameTencentUser.setBackLog(result.getMsg());
 | 
	
		
			
				|  |  | -                gameTencentUser.setIsBack(BackStatusEnum.FAILED.getBackStatus());
 | 
	
		
			
				|  |  | -                gameTencentUserService.updateById(gameTencentUser);
 | 
	
		
			
				|  |  | +            gameTencentBackLog.setBackLog("回传成功");
 | 
	
		
			
				|  |  | +            gameTencentBackLogService.save(gameTencentBackLog);
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            log.error("回传腾讯用户失败,失败原因:{}", result.getMsg());
 | 
	
		
			
				|  |  | +            gameTencentUser.setBackLog(result.getMsg());
 | 
	
		
			
				|  |  | +            gameTencentUser.setIsBack(BackStatusEnum.FAILED.getBackStatus());
 | 
	
		
			
				|  |  | +            gameTencentUserService.updateById(gameTencentUser);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -                gameTencentBackLog.setBackLog(result.getMsg());
 | 
	
		
			
				|  |  | -                gameTencentBackLogService.saveOrUpdate(gameTencentBackLog);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            gameTencentBackLog.setBackLog(result.getMsg());
 | 
	
		
			
				|  |  | +            gameTencentBackLogService.saveOrUpdate(gameTencentBackLog);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          return true;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public boolean createPolicy(GameBackPolicyDTO dto) {
 | 
	
		
			
				|  |  | -        GameBackPolicy gameBackPolicy = gameBackPolicyService.getOne(new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | +    public IPage<GameBackPolicyVO> policyList(GameBackPolicyListDTO dto) {
 | 
	
		
			
				|  |  | +        return gameBackPolicyService.page(dto.toPage(), new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | +                        .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
 | 
	
		
			
				|  |  | +                        .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
 | 
	
		
			
				|  |  | +                        .orderByDesc(GameBackPolicy::getCreateTime))
 | 
	
		
			
				|  |  | +                .convert(this::toVO);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<GameBackPolicyVO> allOfUser() {
 | 
	
		
			
				|  |  | +        return list(new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  |                  .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
 | 
	
		
			
				|  |  | -                .eq(GameBackPolicy::getBackPolicyName, dto.getBackPolicyName()));
 | 
	
		
			
				|  |  | -        if (null != gameBackPolicy) {
 | 
	
		
			
				|  |  | +                .orderByDesc(GameBackPolicy::getCreateTime)
 | 
	
		
			
				|  |  | +        ).stream().map(this::toVOSimple).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public boolean createPolicy(GameBackPolicyDTO dto) {
 | 
	
		
			
				|  |  | +        if (nameExist(null, SecurityUtil.getUserId(), dto.getBackPolicyName())) {
 | 
	
		
			
				|  |  |              throw new BaseException("回传策略名重复");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          GameBackPolicy backPolicy = GameBackPolicy.builder()
 | 
	
		
			
				|  |  |                  .backPolicyName(dto.getBackPolicyName())
 | 
	
		
			
				|  |  | -                .firstRechargeMoney(dto.getFirstRechargeMoney())
 | 
	
		
			
				|  |  | -                .firstRechargeBackPercentage(dto.getFirstRechargeBackPercentage())
 | 
	
		
			
				|  |  | -                .bigRechargeBackPercentage(dto.getBigRechargeBackPercentage())
 | 
	
		
			
				|  |  | -                .bigRechargeMoney(dto.getBigRechargeMoney())
 | 
	
		
			
				|  |  | -                .otherRechargeBackPercentage(dto.getOtherRechargeBackPercentage())
 | 
	
		
			
				|  |  | +                .firstMinMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .firstMinMoneyType(dto.getFirstMinMoneyType())
 | 
	
		
			
				|  |  | +                .firstMinMoneyRate(dto.getFirstMinMoneyRate())
 | 
	
		
			
				|  |  | +                .firstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .firstMaxMoneyType(dto.getFirstMaxMoneyType())
 | 
	
		
			
				|  |  | +                .firstMaxMoneyRate(dto.getFirstMaxMoneyRate())
 | 
	
		
			
				|  |  | +                .firstOtherMoneyType(dto.getFirstOtherMoneyType())
 | 
	
		
			
				|  |  | +                .firstOtherMoneyRate(dto.getFirstOtherMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeMinMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .rechargeMinMoneyType(dto.getFirstMinMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeMinMoneyRate(dto.getFirstMinMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoneyType(dto.getFirstMaxMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoneyRate(dto.getFirstMaxMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeOtherMoneyType(dto.getFirstOtherMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeOtherMoneyRate(dto.getFirstOtherMoneyRate())
 | 
	
		
			
				|  |  |                  .levelDown(dto.getLevelDown())
 | 
	
		
			
				|  |  |                  .createBy(SecurityUtil.getUserId())
 | 
	
		
			
				|  |  |                  .createTime(LocalDateTime.now())
 | 
	
		
			
				|  |  |                  .build();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          return gameBackPolicyService.save(backPolicy);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  | -    public boolean updatePolicy(GameBackPolicyDTO dto) {
 | 
	
		
			
				|  |  | -        long count = gameBackPolicyService.count(new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | -                .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
 | 
	
		
			
				|  |  | -                .eq(GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
 | 
	
		
			
				|  |  | -                .ne(GameBackPolicy::getId, dto.getId()));
 | 
	
		
			
				|  |  | -        if (count > 0) {
 | 
	
		
			
				|  |  | +    public boolean updatePolicy(Long policyId, GameBackPolicyDTO dto) {
 | 
	
		
			
				|  |  | +        if (nameExist(policyId, SecurityUtil.getUserId(), dto.getBackPolicyName())) {
 | 
	
		
			
				|  |  |              throw new BaseException("回传策略名重复");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        GameBackPolicy old = getById(policyId);
 | 
	
		
			
				|  |  |          GameBackPolicy backPolicy = GameBackPolicy.builder()
 | 
	
		
			
				|  |  | -                .id(dto.getId())
 | 
	
		
			
				|  |  | +                .id(policyId)
 | 
	
		
			
				|  |  |                  .backPolicyName(dto.getBackPolicyName())
 | 
	
		
			
				|  |  | -                .firstRechargeMoney(dto.getFirstRechargeMoney())
 | 
	
		
			
				|  |  | -                .firstRechargeBackPercentage(dto.getFirstRechargeBackPercentage())
 | 
	
		
			
				|  |  | -                .bigRechargeBackPercentage(dto.getBigRechargeBackPercentage())
 | 
	
		
			
				|  |  | -                .bigRechargeMoney(dto.getBigRechargeMoney())
 | 
	
		
			
				|  |  | -                .otherRechargeBackPercentage(dto.getOtherRechargeBackPercentage())
 | 
	
		
			
				|  |  | +                .firstMinMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .firstMinMoneyType(dto.getFirstMinMoneyType())
 | 
	
		
			
				|  |  | +                .firstMinMoneyRate(dto.getFirstMinMoneyRate())
 | 
	
		
			
				|  |  | +                .firstMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .firstMaxMoneyType(dto.getFirstMaxMoneyType())
 | 
	
		
			
				|  |  | +                .firstMaxMoneyRate(dto.getFirstMaxMoneyRate())
 | 
	
		
			
				|  |  | +                .firstOtherMoneyType(dto.getFirstOtherMoneyType())
 | 
	
		
			
				|  |  | +                .firstOtherMoneyRate(dto.getFirstOtherMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeMinMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .rechargeMinMoneyType(dto.getFirstMinMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeMinMoneyRate(dto.getFirstMinMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoney(NumberUtil.multiply100(dto.getFirstMaxMoney()).longValue())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoneyType(dto.getFirstMaxMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeMaxMoneyRate(dto.getFirstMaxMoneyRate())
 | 
	
		
			
				|  |  | +                .rechargeOtherMoneyType(dto.getFirstOtherMoneyType())
 | 
	
		
			
				|  |  | +                .rechargeOtherMoneyRate(dto.getFirstOtherMoneyRate())
 | 
	
		
			
				|  |  |                  .levelDown(dto.getLevelDown())
 | 
	
		
			
				|  |  | +                .createBy(old.getCreateBy())
 | 
	
		
			
				|  |  | +                .createTime(old.getCreateTime())
 | 
	
		
			
				|  |  |                  .updateBy(SecurityUtil.getUserId())
 | 
	
		
			
				|  |  |                  .updateTime(LocalDateTime.now())
 | 
	
		
			
				|  |  |                  .build();
 | 
	
	
		
			
				|  | @@ -297,28 +342,24 @@ public class GameBackPolicyServiceImpl extends ServiceImpl<GameBackPolicyMapper,
 | 
	
		
			
				|  |  |          return gameBackPolicyService.removeByIds(ids);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public IPage<GameBackPolicyVO> policyList(GameBackPolicyListDTO dto) {
 | 
	
		
			
				|  |  | -        return gameBackPolicyService.page(dto.toPage(), new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | -                        .like(StringUtils.isNotBlank(dto.getBackPolicyName()), GameBackPolicy::getBackPolicyName, dto.getBackPolicyName())
 | 
	
		
			
				|  |  | -                        .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
 | 
	
		
			
				|  |  | -                        .orderByDesc(GameBackPolicy::getCreateTime))
 | 
	
		
			
				|  |  | -                .convert(this::toVO);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    @Override
 | 
	
		
			
				|  |  | -    public List<GameBackPolicyVO> allOfUser() {
 | 
	
		
			
				|  |  | -        return list(new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | -                .eq(GameBackPolicy::getCreateBy, SecurityUtil.getUserId())
 | 
	
		
			
				|  |  | -                .orderByDesc(GameBackPolicy::getCreateTime)
 | 
	
		
			
				|  |  | -        ).stream().map(this::toVOSimple).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +    private boolean nameExist(Long policyId, Long userId, String policyName) {
 | 
	
		
			
				|  |  | +        return count(new LambdaQueryWrapper<GameBackPolicy>()
 | 
	
		
			
				|  |  | +                .ne(policyId != null, GameBackPolicy::getId, policyId)
 | 
	
		
			
				|  |  | +                .eq(GameBackPolicy::getBackPolicyName, policyName)
 | 
	
		
			
				|  |  | +                .eq(GameBackPolicy::getCreateBy, userId)
 | 
	
		
			
				|  |  | +        ) > 0;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private GameBackPolicyVO toVOSimple(GameBackPolicy gameBackPolicy) {
 | 
	
		
			
				|  |  |          if (gameBackPolicy == null) {
 | 
	
		
			
				|  |  |              return null;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | -        return BeanUtil.copy(gameBackPolicy, GameBackPolicyVO.class);
 | 
	
		
			
				|  |  | +        GameBackPolicyVO vo = BeanUtil.copy(gameBackPolicy, GameBackPolicyVO.class);
 | 
	
		
			
				|  |  | +        vo.setFirstMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMinMoney())));
 | 
	
		
			
				|  |  | +        vo.setFirstMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getFirstMaxMoney())));
 | 
	
		
			
				|  |  | +        vo.setRechargeMinMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMinMoney())));
 | 
	
		
			
				|  |  | +        vo.setRechargeMaxMoney(NumberUtil.divide100(new BigDecimal(gameBackPolicy.getRechargeMaxMoney())));
 | 
	
		
			
				|  |  | +        return vo;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      private GameBackPolicyVO toVO(GameBackPolicy gameBackPolicy) {
 |